if ( window.attachEvent ) {
    window["event_load"+initialize] = initialize;
    window["load"+initialize] = function() { window["event_load"+initialize]( window.event ) };
    window.attachEvent( "onload", window["load"+initialize] );
}else{
    window.addEventListener( "load", initialize, false );	
}

var el_array = new Array();

function initialize(){
	
	var container = document.getElementById('main_body');
	if(container){
		removeClassName(container,'no_guidelines');
		var instructs = getElementsByClassName(document,"*","guidelines");
		if((container.offsetWidth <= 450) || (instructs == '')){
			addClassName(container,'no_guidelines',true);
		}
	}
	
	
	elements = getElementsByClassName(document, "*", "element");
	for(i = 0; i < elements.length; i++) {
		if(elements[i].type == 'checkbox' || elements[i].type == 'radio' || elements[i].type == 'file') {
			elements[i].onclick = function(){safari_reset(); addClassName(this.parentNode.parentNode, "highlighted", true)};
			elements[i].onfocus = function(){safari_reset(); addClassName(this.parentNode.parentNode, "highlighted", true)};
			el_array.splice(el_array.length,0,elements[i]);
		}
		else {
			elements[i].onfocus = function(){safari_reset();addClassName(this.parentNode.parentNode, "highlighted", true)};
			elements[i].onblur = function(){removeClassName(this.parentNode.parentNode, "highlighted")};
		}
	}
	
	var detect = navigator.userAgent.toLowerCase();
	var container = document.getElementsByTagName('body');
	if(detect.indexOf('safari') + 1){
		addClassName(container[0], 'safari', true);
	}
	if(detect.indexOf('firefox') + 1){
		addClassName(container[0], 'firefox', true);
	}
}

function safari_reset() {
	for(var i = 0; i < el_array.length; i++) {
		removeClassName(el_array[i].parentNode.parentNode, 'highlighted');
	}
}


function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];		
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}	
	}
	return (arrReturnElements)
}


function removeClassName(objElement, strClass){
   if ( objElement.className ){
      var arrList = objElement.className.split(' ');
      var strClassUpper = strClass.toUpperCase();
      for ( var i = 0; i < arrList.length; i++ ){
         if ( arrList[i].toUpperCase() == strClassUpper ){
            arrList.splice(i, 1);
            i--;
         }
      }
      objElement.className = arrList.join(' ');
   }
}


function addClassName(objElement, strClass, blnMayAlreadyExist){
   if ( objElement.className ){
      var arrList = objElement.className.split(' ');
      if ( blnMayAlreadyExist ){
         var strClassUpper = strClass.toUpperCase();
         for ( var i = 0; i < arrList.length; i++ ){
            if ( arrList[i].toUpperCase() == strClassUpper ){
               arrList.splice(i, 1);
               i--;
             }
           }
      }
      arrList[arrList.length] = strClass;
      objElement.className = arrList.join(' ');
   }
   else{  
      objElement.className = strClass;
      }
}