/*
 * This code was imported from the original TerraSim web site. I don't
 * know who the creator was, but it appears to be a subset of some
 * widely available "common" javascript function libraries, such as
 * the one found here: http://www.dustindiaz.com/top-ten-javascript/
 * ----
 * Modified by wah::10dec2007
 */

function addEvent( obj, type, fn ) {
  if (obj.addEventListener) {
    obj.addEventListener( type, fn, false );
    EventCache.add(obj, type, fn);
  } else if (obj.attachEvent) {
    obj["e"+type+fn] = fn;
    obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
    obj.attachEvent( "on"+type, obj[type+fn] );
    EventCache.add(obj, type, fn);
  } else {
    obj["on"+type] = obj["e"+type+fn];
  }
}

function switchMenu(obj) {
  var el = document.getElementById(obj);
  el.style.display = (el.style.display != 'block') ? 'block' : 'none';
}

function $() {
  var elements = new Array();
  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);
    if (arguments.length == 1)
      return element;
    elements.push(element);
  }
  return elements;
}

function getElementsByClass(searchClass,node,tag) {
  var classElements = new Array();
  if ( node == null )
    node = document;
  if ( tag == null )
    tag = '*';
  var els = node.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
  for (i = 0, j = 0; i < elsLen; i++) {
    if ( pattern.test(els[i].className) ) {
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}

function getElementsByIdPrefix(inPrefix,inRoot) {
  var elem_array = new Array;
  if (inRoot == null)
    inRoot = document;
  if(typeof inRoot.firstChild!= 'undefined') {
    var elem = inRoot.firstChild;
    while (elem!= null){
      if(typeof elem.firstChild!= 'undefined'){
	elem_array = elem_array.concat(getElementsByIdPrefix(inPrefix,elem));
      }
      if(typeof elem.id!= 'undefined'){
	var reg = new RegExp ( '^'+inPrefix+'.*' );
	if(elem.id.match(reg)){
	  elem_array.push(elem);
	}
      }
      elem = elem.nextSibling;
    }
  }
  return elem_array;
}


function collapseAll(objs) {
  var i;
  for (i=0;i<objs.length;i++ ) {
    objs[i].style.display = 'none';
  }
}
