function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

function getElementsByClass(node,searchClass,tag) {
  var classElements = new Array();
  var els = node.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp("\b"+searchClass+"\b");
  for (i = 0, j = 0; i < elsLen; i++) {
    if ( pattern.test(els[i].className) ) {
      classElements[j] = els[i];
      j++;
    }
  }
return classElements;
}


/* returns dom element */
function $(id) {
return document.getElementById(id);
}

String.prototype.trim = function(x) {
  if (x=='left')
    return this.replace(/^\s*/,'');
  if (x=='right')
    return this.replace(/\s*$/,'');
  if (x=='normalize')
    return this.replace(/\s{2,}/g,' ').trim();

  return this.trim('left').trim('right');
}

/* hide every fieldset except */
function toggleFields(group_div_id, field_id) {
	// hide other fields
	var container = document.getElementById(group_div_id);
	var fields = container.getElementsByTagName('fieldset');
	for (var i=0; i < fields.length; i++) {
		if (fields[i].id != field_id) {
			fields[i].style.display = 'none';
		}
		else {
			fields[i].style.display = 'block';
		}
	}
}

/* toggle single element's display properties */
function toggleShowElem(elemID) {
    elem = document.getElementById(elemID);
    if (elem) {
        elem.style.display = (elem.style.display == 'block' ? 'none' : 'block');
    }
}

function hideElems(elems) {
    for (var i=0; i < elems.length; i++) {
        elems[i].style.display = 'none';
    }
}

function hideElem(elemID) {
    elem = document.getElementById(elemID)
    elem.style.display = 'none';
}

function showElem(elemID) {
    elem = document.getElementById(elemID)
    elem.style.display = 'block';
}

/* hide every fieldset under a block element */
function hideAllFields(group_div_id) {
    var fieldsets = document.getElementById(group_div_id).getElementsByTagName('fieldset');
    for (var i=0; i < fieldsets.length; i++) {
        fieldsets[i].style.display = 'none';
    }
}

function changeFieldDisplay(elem, showHideElem) {
    if (elem.value == 'new') {
        showElem(showHideElem);
    }
    else {
        hideElem(showHideElem);
    }
}

function hov(loc,cls){
	if(loc.className)
		loc.className=cls;}
