
	var submitted=false;
	var alertMsg = "";
function isValid(htmlform){
	var valid=true;
	var elems = htmlform.elements;
	for(var i=0; i<elems.length; i++){
		for(var j=0; j<xx_req_fields.length;j++)
			if(elems[i].name==xx_req_fields[j] && elems[i].value==''){
				valid=false;
				elem=elems[i];
				elem.style.borderColor="#FF8181";
				elem.style.borderStyle="solid";
				elem.style.borderWidth="1px";
			}
	}
	if(!valid) alert("Required field(s) missing");
	return valid;
}
	function safeSubmit(sform,paramAlertMsg){
		if(!isObject(sform))return false;
		if(isdefined("doPreValidation") && doPreValidation && !isValid(sform)) return false;
		if(isValid(sform)){
			if(submitted) alert(alertMsg);
			else {
				submitted=true;
				alertMsg = paramAlertMsg;
				return true;
			}
		}	
		return false;
	}
	function isObject(obj){
		if(typeof obj != "object") return false;	
		else return true;
	}
	function toggle_on_select(selectElement,optionValue,hiddenElem,displayType){
		if (typeof selectElement == 'undefined' || typeof document.getElementById(hiddenElem) == 'undefined' ) return;
		var inverse = (optionValue.charAt(0)=="!");
		var inverse_val = optionValue.substring(1);

		for(var j=0; j<selectElement.options.length ; j++){
		
			if(selectElement.options[j].selected==true && ! inverse){
			
				if(selectElement.options[j].value==optionValue)
				try{	
					document.getElementById(hiddenElem).style.display = displayType;
				}catch(err){
					//alert(selectElement.options[j].value);
					//alert(document.getElementById(hiddenElem).style.display);
					//alert(displayType);
					//alert(err.description);
					break;
				}
				else if(selectElement.options[j].value!=optionValue)
					document.getElementById(hiddenElem).style.display="none";
				
			} else 	if(selectElement.options[j].selected==true && inverse){

				if(selectElement.options[j].value!=inverse_val)
					document.getElementById(hiddenElem).style.display=displayType;
				else if(selectElement.options[j].value==inverse_val)
					document.getElementById(hiddenElem).style.display="none";

			} 
		
		}
		
	}


function isdefined( variable){
    return (typeof(window[variable]) == "undefined")?  false: true;
}

function popUp(URL,width,height) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1,width="+width+",height="+height+",left = 340,top = 237');");
}
function arrayIndexOf(sarray,str){
	if(!isArray(sarray)||sarray.length ==0) return -1;
	for(var i=0; i<sarray.length; i++){
		if(sarray[i]==str) return i
	}
	return -1;
}

function isArray(obj) {
   if (obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else
      return true;
}

function errorFields(elements,formName){
	if(!isArray(elements)||elements.length ==0||formName==""||!isObject(document.forms[formName])) return;

	var formFields = document.forms[formName].elements;
	
	for(var i=0; i<formFields.length; i++){
		var index = arrayIndexOf(elements,formFields[i].name);
		if(index>=0){
			var elem = formFields[i];
			elem.style.borderColor="#FF8181";
			elem.style.borderStyle="solid";
			elem.style.borderWidth="1px";
		}
	}
	/*
	for(var i=0; i<fields.length; i++){
		var elements = document.getElementsByName(fields[i]);
		var elem = elements[0];
		for(var j=0; j<elements.length; j++){
			var elem = elements[j];
				//if(elem.type=="select-one"||elem.type=="text"||elem.type=="text"||elem.type=="select-multiple");
			elem.style.borderColor="#FF8181";
			elem.style.borderStyle="solid";
			elem.style.borderWidth="1px";
		}
	}
	*/
}

function alternateColor(tblname,leaveFromTop,leaveFromBottom,color)
{
	if(document.getElementById(tblname)!=null){
		for(var i=leaveFromTop; i<document.getElementById(tblname).rows.length-leaveFromBottom;i++){
			for(var j=0; j<document.getElementById(tblname).rows[i].cells.length; j++){
				var cell = document.getElementById(tblname).rows[i].cells[j];
				var style = cell.style;
				if(i%2==0)
					style.backgroundColor = color;
				else
					style.backgroundColor = "#ffffff";
			}
		}
	} 
}
		
function isArray(obj) {
	//returns true is it is an array
	if (obj.constructor.toString().indexOf("Array") == -1)
		return false;
	else
		return true;
}
function formPopulate(varArray, formName){
	if(typeof document.forms[formName] != "object") return;
	
	if(!isArray(varArray)) return;

	var elems = document.forms[formName].elements;
	var elementType = "";
	
	for (var i=0; i<elems.length; i++){ // in elems){
		var arrayelem = false;
		elementType=elems[i].type;
		if((elems[i].name).indexOf("[]")>=0){ // considered to be an array
			var phpName = (elems[i].name).substring(0,(elems[i].name).length-2);
			
			if(elementType=="checkbox"){
			if (typeof varArray[phpName]!="undefined" && isArray(varArray[phpName])){ // the multiple select or check boxes may only have one user option making the variable non-array
			
						for(var j=0;j<varArray[phpName].length;j++){
						if(varArray[phpName][j]==elems[i].value)
							elems[i].checked=true;
					}
				} else { // if user selected only one, we don't need to traverse it (removed 'j' index)
					if(varArray[phpName]==elems[i].value)
						elems[i].checked=true;
				}
			} else if(elementType=="select-multiple"){
				
				if (typeof varArray[phpName]!="undefined"){
					if(isArray(varArray[phpName])){ // the multiple select or check boxes may only have one user option making the variable non-array
						// FOR: traversing through each elements posted by user
						for(var j=0;j<varArray[phpName].length;j++){
							// traversing through the OPTION elements to SELECT
							for(var k=0; k<elems[i].options.length; k++){
								if(elems[i].options[k].value==varArray[phpName][j])
									elems[i].options[k].selected=true;
							}
						}
					}
				}
			}
		} else if (elementType!='hidden'||elems[i].name!="action"){ // we don't want the hidden action element to be populated.
			//if alert ("Changing "+elems[i].value+" to "+varArray[elems[i].name]);
			// TEXT , TEXTAREA, HIDDEN, PASSWORD
			if(elementType=='text'||elementType=='textarea'||elementType=='hidden'||elementType=='password'){ // checking of type TEXT, TextArea, Hidden, and Password
				if(varArray[elems[i].name]) // we only try to populate if we've found any value for it
					elems[i].value=varArray[elems[i].name];
			}
					
			// RADIO, CHECKBOX(single)
			if(elementType=='radio'||elementType=='checkbox'){ // deal radio buttons separately since we don't set value, instead we CHECK
				if(elems[i].value==varArray[elems[i].name])
					elems[i].checked=true;
			}
				
			// SELECT - ONE
			if(elementType=='select-one'){  // deal radio buttons separately since we don't set value, instead we SELECT
				for(var j=0; j<elems[i].options.length; j++){
					if(elems[i].options[j].value==varArray[elems[i].name])
						elems[i].options[j].selected=true;
				}
			}
		}
	}
	return;
	
}
		var ajax_divName="";
		var ajax_requestInProgress=false;
		var ajax_receiveReq = ajax_getXmlHttpRequestObject();

		function ajax_executeURL(execUrl, divName){
			if(ajax_requestInProgress) {
				//alert("Please allow the system to complete your previous action");
				return;
			}
			ajax_divName=divName;
			if (ajax_receiveReq.readyState == 4 || ajax_receiveReq.readyState == 0) {
				ajax_receiveReq.open("GET", execUrl);
				ajax_receiveReq.onreadystatechange = ajax_handleResult;
				ajax_receiveReq.send(null);
				ajax_requestInProgress=true;
			}
		}

		function ajax_handleResult() {
			if (ajax_receiveReq.readyState == 4) {
				document.getElementById(ajax_divName).innerHTML = ajax_receiveReq.responseText;	
				ajax_requestInProgress=false;
			}
		}		
		
		function ajax_getXmlHttpRequestObject() {
			if (window.XMLHttpRequest) {
				return new XMLHttpRequest(); //Not IE
			} else if(window.ActiveXObject) {		
				return new ActiveXObject("Microsoft.XMLHTTP"); //IE
			} else {		//Display your error message here. 
							//and inform the user they might want to upgrade		
							//their browser.		
				alert("Your browser doesn't support the XmlHttpRequest object.  Better upgrade to Firefox.");	
			}
		}
