function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

/* usage on html page
addLoadEvent(nameOfSomeFunctionToRunOnPageLoad);
addLoadEvent(function() {
  // more code to run on page load 
}); */

// hasClass, addClass and removeClass written by Chris Sullins

function hasClass( element, className )
{
	if( !element.className )
	{
		return false;
	}
	else
	{
		var reg = new RegExp( "\\b" + className + "\\b", "gi" );
		return reg.test(element.className);
	}
}

function addClass( element, className )
{
	if( !hasClass(element, className) )
	{
		element.className += " " + className;
	}
}

function removeClass( element, className )
{
	if( element.className )
	{
		var reg = new RegExp( "\\b" + className + "\\b", "gi" );
		element.className = element.className.replace( reg, "" );
	}
}

// addEvent and removeEvent, designed by Aaron Moore
function addEvent(element, listener, handler)
{
	//if the system is not set up, set it up, and
	// store any outside script's event registration in the first handler slot
	if(typeof element[listener] != 'function' || 
	typeof element[listener + '_num'] == 'undefined'){
		element[listener + '_num'] = 0;
		if(typeof element[listener] == 'function'){
			element[listener + 0] = element[listener];
			element[listener + '_num']++;
		}
		element[listener] = function(e){
			var r = true;
			e = (e) ? e : window.event;
			for(var i = 0; i < element[listener + '_num']; i++)
				if(element[listener + i](e) === false) r = false;
			return r;
		}
	}
	//if handler is not already stored, assign it
	for(var i = 0; i < element[listener + '_num']; i++)
		if(element[listener + i] == handler) return;
	element[listener + element[listener + '_num']] = handler;
	element[listener + '_num']++;
}
function removeEvent(element, listener, handler)
{
	//if the system is not set up, or there are no handlers to remove, exit
	if(typeof element[listener] != 'function' || 
	typeof element[listener + '_num'] == 'undefined' ||
	element[listener + '_num'] == 0) return;
	//loop through handlers,
	//  if target handler is reached, begin overwriting each
	//  handler with the handler in front of it until one before the last
	var found = false;
	for(var i = 0; i < element[listener + '_num']; i++){
		if(!found)
			found = element[listener + i] == handler;
		if(found && (i+1) < element[listener + '_num'])
			element[listener + i] = element[listener + (i+1)];
	}
	//if handler was found, decrement the handler count
	if(found)
		element[listener + '_num']--;
}
function classifyElement(tagname,item,itemclass,binverse) {
  binverse = binverse | false;
  var FormElements = document.getElementsByTagName(tagname);
  for(i=0;i<FormElements.length;i++) {
    if (FormElements[i].name == item) {
      if (binverse) {
        removeClass(FormElements[i], itemclass);
      } else {
        addClass(FormElements[i], itemclass);
        setTimeout(("classifyElement('"+tagname+"','"+item+"','"+itemclass+"',true);"),1000)
      }
    }
  }
}
function toggleSubmit() {
  var INPUTs = document.getElementsByTagName('INPUT');
  for(var i=0,node;node=INPUTs[i],i<INPUTs.length;i++) {
    if (node.value == "Processing..." && node.disabled) {
	node.value = "submit";
	node.disabled = false;
    } else if (node.value == "submit") {
	node.value = "Processing...";
	node.disabled = true;
    }
  }
}


