

/* ===== Body Onload Events ======= */
	var callOnloadArray;
	var onloadArray = new Array();
	
	//to add strings (normally function names) to the onload event. this should get called from following js files, instead of window.onload
	function addToLoader(functionName){
		onloadArray.push(functionName);	
	}
	
	callOnloadArray = function(){
		for (i = 0; i < onloadArray.length; i++) {
		eval(onloadArray[i]);
		}

	}
	
	//add to onload event
	window.onload=callOnloadArray;


/* ===== Form Onsubmit Events ======= */
	var callOnsubmitArray;
	var submitReturn;
	var onsubmitArray = new Array();
	
	//to add strings (normally function names) to the form onsubmit event. this should get called from following js files, instead of form.onsubmit
	function addToOnsubmit(functionName){
		onsubmitArray.push(functionName);
	}
	
	callOnsubmitArray = function(){
		submitReturn = "true";
		for (i = 0; i < onsubmitArray.length; i++) {
		eval(onsubmitArray[i]);
		}
		//alert("submitReturn: " + submitReturn);
		if (submitReturn == "false"){
		return false;
		}
	}
	
	function setupFormSubmit(){
		if (document.getElementById('form')){
			document.getElementById('form').onsubmit=callOnsubmitArray;
		}
	}
	addToLoader("setupFormSubmit()");

/* ===== General useful code ======= */

	// == allows us to getElementsByClassName like we would getElementsByTagName
	document.getElementsByClassName = function(className) {
	  var children = document.getElementsByTagName('*') || document.all;
	  var elements = new Array();
	  
	  for (var i = 0; i < children.length; i++) {
	    var child = children[i];
	    var classNames = child.className.split(' ');
	    for (var j = 0; j < classNames.length; j++) {
	      if (classNames[j] == className) {
	        elements.push(child);
	        break;
	      }
	    }
	  }
	  
	  return elements;
	}
	
	document.createNamedElement = function(type, name) {
   var element = null;
   // Try the IE way; this fails on standards-compliant browsers
   try {
      element = document.createElement('<'+type+' name="'+name+'">');
   } catch (e) {
   }
   if (!element || element.nodeName != type.toUpperCase()) {
      // Non-IE browser; use canonical method to create named element
      element = document.createElement(type);
      element.name = name;
   }
   return element;
	}

	document.hideAllSelects = function(){
		if (document.all&&document.getElementById){
			var allSelects = document.getElementsByTagName("select");
			for (var i = 0; i <  allSelects.length  ; i++)  {	
				allSelects[i].style.visibility = "hidden";
			}
		}
	}
	
	document.showAllSelects = function(){
		if (document.all&&document.getElementById){
			var allSelects = document.getElementsByTagName("select");
			for (var i = 0; i <  allSelects.length  ; i++)  {	
				allSelects[i].style.visibility = "visible";
			}
		}
	}
	
	if(!Array.indexOf){
	   Array.prototype.indexOf = function(obj, start){
	       for(var i=(start||0); i<this.length; i++){
	           if(this[i]==obj){
	               return i;
	           }
	       }
	   }
	}




