
function $n(element)
{
  if (arguments.length > 1) {
    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
      elements.push($n(arguments[i]));
    return elements;
  }
  if (typeof element == 'string') {
    var el = document.getElementById(element);
    if( el ) 
      return el;
  }
  else
    return element;
 
  var regExp = new RegExp('_' + element + '$');
  var formsLength = document.forms.length;
  for( var i=0; i<formsLength; i++ ) {
    var form = document.forms[i];
    var elementsLength = form.elements.length;
    for( var j=0; j<elementsLength; j++ ) {
      element = form.elements[j];
      if( element.id && element.id.match(regExp) ) 
        return element;
    }
  }

  //try links
  var inputs = document.getElementsByTagName('link');
     for (var i = 0; i < inputs.length; i++) {
     var element = inputs[i];
     if( element.id && element.id.match(regExp) ) 
     return element;
  }
    
  //try inputs
  var inputs = document.getElementsByTagName('input');
     for (var i = 0; i < inputs.length; i++) {
     var element = inputs[i];
     if( element.id && element.id.match(regExp) ) 
     return element;
  }
      
  //try images
  var imagesLength = document.images.length;
  for( var i=0; i<imagesLength; i++ ) {
    element = document.images[i];
    if( element.id && element.id.match(regExp) ) 
    return element;
  }
  
  //try divs
  var divs = document.getElementsByTagName('div');
     for (var i = 0; i < divs.length; i++) {
     var element = divs[i];
     if( element.id && element.id.match(regExp) ) 
     return element;
  }

  //try paragraphs
  var ps = document.getElementsByTagName('p');
     for (var i = 0; i < ps.length; i++) {
     var element = ps[i];
     if( element.id && element.id.match(regExp) ) 
     return element;
  }

  //try spans
  var spans = document.getElementsByTagName('span');
     for (var i = 0; i < spans.length; i++) {
     var element = spans[i];
     if( element.id && element.id.match(regExp) ) 
     return element;
  }

  //try anchors
  var anchors = document.getElementsByTagName('a');
     for (var i = 0; i < anchors.length; i++) {
     var element = anchors[i];
     if( element.id && element.id.match(regExp) ) 
     return element;
  }

  //try tables
  var tables = document.getElementsByTagName('table');
     for (var i = 0; i < tables.length; i++) {
     var element = tables[i];
     if( element.id && element.id.match(regExp) ) 
     return element;
  }
     
  return null;
}

function $parent(element)
{
  if (arguments.length > 1) {
    for (var i = 0, elements = [], length = arguments.length; i < length; i++)
      elements.push($n(arguments[i]));
    return elements;
  }
  if (typeof element == 'string') {
    var el = parent.document.getElementById(element);
    if( el ) 
      return el;
  }
  else
    return element;
 
  var regExp = new RegExp('_' + element + '$');
  var formsLength = parent.document.forms.length;
  for( var i=0; i<formsLength; i++ ) {
    var form = parent.document.forms[i];
    var elementsLength = form.elements.length;
    for( var j=0; j<elementsLength; j++ ) {
      element = form.elements[j];
      if( element.id && element.id.match(regExp) ) 
        return element;
    }
  }
  
  //try images
  var imagesLength = parent.document.images.length;
  for( var i=0; i<imagesLength; i++ ) {
    element = parent.document.images[i];
    if( element.id && element.id.match(regExp) ) 
    return element;
  }
  
  //try divs
  var divs = parent.document.getElementsByTagName('div');
     for (var i = 0; i < divs.length; i++) {
     var element = divs[i];
     if( element.id && element.id.match(regExp) ) 
     return element;
  }
  
  //try spans
  var spans = parent.document.getElementsByTagName('span');
     for (var i = 0; i < spans.length; i++) {
     var element = spans[i];
     if( element.id && element.id.match(regExp) ) 
     return element;
  }

  //try anchors
  var anchors = parent.document.getElementsByTagName('a');
     for (var i = 0; i < anchors.length; i++) {
     var element = anchors[i];
     if( element.id && element.id.match(regExp) ) 
     return element;
  }
  
  //try tables
  var tables = parent.document.getElementsByTagName('table');
     for (var i = 0; i < tables.length; i++) {
     var element = tables[i];
     if( element.id && element.id.match(regExp) ) 
     return element;
  }
  
  return null;
}

