var ErrArray=new Array();
	var boolFormAlreadySubmitted=false;
	var errWin

	function DateRoundToXMins(dateObj,intX)
	{
		var outDate = new Date(dateObj.getTime());
		var vMins = outDate.getMinutes();
		vMins = Math.round(vMins/intX) * intX;
		outDate.setMinutes(vMins);
		outDate.setSeconds(0);
		outDate.setMilliseconds(0);
		return outDate;
	}

	function trimnumber(varStr) {
		varStr = varStr.replace("$"," ");
		varStr = trim(varStr);
		while(varStr.indexOf(",") >=0) {
			var loc = varStr.indexOf(",");
			varStr = varStr.substr(0,loc) +varStr.substr(loc+1,varStr.length);
		}
		return varStr;
	
	}

	function trimOnlySpaces(varStr)
	{
		var RtnStr = varStr;
		if (RtnStr==null) RtnStr = "";
		RtnStr = RtnStr.replace(/^[ ]+/gm,"");
		RtnStr = RtnStr.replace(/[ ]+$/gm,"");
		return RtnStr;
	}

	function trim(varStr) {
		if (varStr.length==0) 
			return "";
		//these were added to remove all quotes and sinqle quote that might appear
		while (varStr.indexOf('"') >= 0 ) varStr = varStr.replace('"',' ');
		while (varStr.indexOf("'") >= 0 ) varStr = varStr.replace("'"," ");
		if (varStr.substr(0,1)!=" " && varStr.substr(varStr.length-1,1)!=" ")
			return varStr;
		else if (varStr.substr(0,1)==" ")
			return trim(varStr.substr(1, varStr.length-1));
		else if (varStr.substr(varStr.length-1,1)==" ")
			return trim(varStr.substr(0, varStr.length-1));
	}

	function trimWITHOUTREPLACINGQUOTES(varStr) {
		if (varStr.length==0) 
			return "";
		//these were added to remove all quotes and sinqle quote that might appear
		while (varStr.indexOf('"') >= 0 ) varStr = varStr.replace('"',' ');
		//while (varStr.indexOf("'") >= 0 ) varStr = varStr.replace("'"," ");
		if (varStr.substr(0,1)!=" " && varStr.substr(varStr.length-1,1)!=" ")
			return varStr;
		else if (varStr.substr(0,1)==" ")
			return trim(varStr.substr(1, varStr.length-1));
		else if (varStr.substr(varStr.length-1,1)==" ")
			return trim(varStr.substr(0, varStr.length-1));
	}

	function validateFormPasswords(varPass, varConfirmPass) {
		if (!validatePassword(varPass.value)) 
			ErrArray[ErrArray.length]="Please enter a valid password.(alphanumeric)";
		if (!validatePassword(varConfirmPass.value)) 
			ErrArray[ErrArray.length]="Please enter a valid password in confirm password field. (alphanumeric)";
		if (varPass.value!=varConfirmPass.value)
			ErrArray[ErrArray.length]="Password and confirm password fields are not the same.";
	}

	function validateLogin(loginstr) {
		return validatePassword(loginstr);
	}

	function validatePassword(passwordStr) {
		var valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_0123456789";
		var temp;

		if (passwordStr.length<1 || passwordStr.length>25) return false;
		for (var i=0; i<passwordStr.length; i++) {
			temp = passwordStr.substring(i, i+1);
			if (valid.indexOf(temp) == -1) return false;
		}		
		return true;
	}


	function validatePhone2(areaCode, prefix, suffix, extension, displayname) //use this one to check presence first!!
	{
	var fish
		if (areaCode.length<1 && prefix.length<1 && suffix.length<1)
		{
			fish++;
		}
		else 
		{
			validatePhone(areaCode,prefix,suffix,extension,displayname);
		}	
	}	
			
	function validatePhone(areaCode, prefix, suffix, extension, displayname) {		
				if (!validatePhonePartial(areaCode, 3))
			ErrArray[ErrArray.length]="Please enter a valid US phone number in the " + displayname + " field. The area code you entered in the " + displayname + " field is invalid."; 
		else if (areaCode.charAt(0)=="0" || areaCode.charAt(0)=="1")
			ErrArray[ErrArray.length]="Please enter a valid US phone number in the " + displayname + " field."; 
		else if (!validatePhonePartial(prefix, 3) || !validatePhonePartial(suffix, 4))
			ErrArray[ErrArray.length]="Please enter a valid US phone number in the " + displayname + " field. The phone number you entered in the " + displayname + " field is invalid."; 
		else if (!validatePhonePartial(extension, 0))
			ErrArray[ErrArray.length]="Please enter a valid US phone number in the " + displayname + " field. The phone extension you entered in the " + displayname + " field is invalid."; 
			
	}
	
	function validatePhone3(phone , displayname) //use this one to check presence first!!
	{
	var fish
		if (phone.length<1)
		{
			fish++;
		}
		else 
		{
			if(validateInteger(phone)==false){
			ErrArray[ErrArray.length]="Please enter a valid phone number in the " + displayname + " field. The number entered in the " + displayname + " field is invalid."; 
		}}
	}	
			
	
	function validatePhonePartial(str, RequiredLength) {
		if (str.length<RequiredLength) return false;
		return validateInteger(str);
	}

	
	function trimCurrency(str) {
		if (str.substr(0,1)=="$")
			return trim(str.substr(1, str.length-1));
		else return trim(str);
	}
	
	
	function validateGreaterThan(str1,variablename1,str2,variablename2) {
		if (str1*1>str2*1) 
		ErrArray[ErrArray.length]="Please make sure the "+variablename1+" field is less than the "+variablename2+" field";
	}
	
	
	function validateCurrency2(str,variablename) {   //use this one to create an error message
		if (!validateCurrency(str) || str.length <1)
	ErrArray[ErrArray.length]="Please enter a valid amount in the "+variablename+" field";
	}
	
	
	function validateCurrency(str) {
		if (str.substr(0,1)=="$")
			str=str.substr(1, str.length-2);

		while (str.indexOf(",") >=0) {
			var i=str.indexOf(",");
			str=str.substring(0,i)+str.substring(i+1,str.length);
		}
		
		return validateNumber(str);
	}

	function validateNumber(str) {
		if(str == "******") return true;
		
		var index;

		index=str.indexOf(".");
		if (str.length<1) return false;
		for (var j=0; j <str.length; j++) if ("`~!@#$%^&*()_-+=[]{}|\\\"';:/?><,qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM".indexOf(str.substr(j, 1)) >=0) return false;
		if (index!=-1) {
			
			if (index!=0 && index!=str.length-1) { // both integer and fraction present
				return validateInteger(str.substring(0, index-1)) && validateInteger(str.substring(index+1, str.length-1));
			} else if (index!=0) { //only fraction part present
				return validateInteger(str.substring(0, index-1));
			} else if (index!=str.length-1) { //only integer part present
				return validateInteger(str.substring(index+1, str.length-1));
			} else { //just a dot 
				return false;
			}
		} else {
			return validateInteger(str);
		}
	}

	function validateNumber2(string , fieldname) {
		if(string == "******") return true;
		if (string != null) if (string.length > 0 ) {
			if (!validateNumber(string) ) {
				ErrArray[ErrArray.length]="Please enter a valid number in the "+fieldname+" field";
			}	
		}
	}
	function validateUDFPercentage(string , fieldname) {
		if(string == "******") return true;
		if (string != null) if (string.length > 0 ) {
			if (!validateNumber(string) || parseFloat(string)>100 || parseFloat(string)<0 ) {
				ErrArray[ErrArray.length]="Please enter a valid number in the "+fieldname+" field";
			}	
		}
	}
	function validateUDFCurrency(string , fieldname) {
		if(string == "******") return true;
		if (string != null) if (string.length > 0 ) {
		    index=string.indexOf(".");
			var substr ="";
			if(index!=-1) substr = string.substring(index+1,string.length-1);
			if (!validateNumber(string) || substr.length>1) {
				ErrArray[ErrArray.length]="Please enter a valid number in the "+fieldname+" field";
			}	
		}
	}
	function validateUDFTextArea(string, fieldname) {
	  if(string =="******") return true;
	  if(string != null) if(string.length>=4000 ) {
	      ErrArray[ErrArray.length]="Input exceeds 4000 charaters in the "+fieldname+" field";    
     	 }
	 }
function IsNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         }
      }
   return IsNumber;
   
   }

   
function validateReportUDFPercentage(obj, msg) {
		var numStr = obj.value;
		if ( IsNumeric(numStr)==false || parseFloat(numStr)>100 || parseFloat(numStr)<0)
   { 
      alert(msg+" is not a valid number"); 
      obj.focus(); 
      return false; 
   } 
    
   return true;
}
function validateReportUDFCurrency(obj, msg) {
		var numStr = obj.value;
		if (numStr != null) if (numStr.length > 0 ) {
		    index=numStr.indexOf(".");
			var substr ="";
			if(index!=-1) substr = numStr.substring(index+1,numStr.length-1);
			if (IsNumeric(numStr)==false  || substr.length>1) {
				alert(msg+" is not a valid number"); 
				obj.focus(); 
				return false; 
			}	
		}
		return true;
	}
	function validateNumeric(str, str2) {
		var valid = "0123456789";
		var p;

		for (p=0; p<str.length; p++) {
		  	 if (valid.indexOf(str.substr(p, 1)) == -1) { ErrArray[ErrArray.length]="please enter a number in the " +str2+ " field"; 
		  	 break; }
		}
	}

	function validateInteger(str) {
		var valid = "0123456789";
		var p;

		for (p=0; p<str.length; p++) {
		  	 if (valid.indexOf(str.substr(p, 1)) == -1) 
				return false;
				//ErrArray[ErrArray.length]="Only decimal numbers are allowed in currency."; 
		}
		return true;
	}

	
	function validateState(str)  {
		if(str == "******") return true;
		if (str.selectedIndex<2)
			ErrArray[ErrArray.length]="Please select a State"; 
	}			
	
	function validateZipCode2(varField) { //job screen zipcode 
		if(varField == "******") return true;
		
		if (varField.value.length <1)
		{
            return true; //allow no value
        }
		else
		{
			if(validUSZip(varField))
			{
				return true; //valid us zip
			}
			else 
			{
				if(validCanadaZip(varField))
				{ 
					return true; //valid canada  
				}
				else 
				{
					ErrArray[ErrArray.length]="Please enter a valid Zip/Postal Code in the " + varField.name + " Field."; 
				}
			}                
        }	
    }	
	
	function validateIndiaZipCode(varField) { //job screen india zipcode 
		if(varField == "******") return true;
		
		if (varField.value.length <1)
		{
            return true; //allow no value
        }
		else
		{
			if(validIndiaZip(varField))
			{
				return true; //valid india zip
			}
			else 
			{
				ErrArray[ErrArray.length]="Please enter a valid Pin Code in the Pin Code Field."; 
			}                
        }	
    }
    
    function validateUKZipCode(varField) { //job screen uk zipcode 
		if(varField == "******") return true;
		
		if (varField.value.length <1) return true; //allow no value
    else {
			if(validUKZip(varField)) return true; //valid india zip
			else ErrArray[ErrArray.length]="Please enter a valid Post Code in the Post Code Field."; 
		}	
	}
    
    
 	var regexUK = /^\b([A-Za-z][A-Za-z]?\d(\d|[A-Za-z])?\W*\d[A-Za-z][A-Za-z])\b$/;
 	function validUKZip(obj)
 	{
 	  if(obj.value == "******") return true;
      obj.value=trim(obj.value);
      if(obj.value.match(regexUK) == null) return false;
 	  else return true;
	}

    function validateZipCode3(varField,nameoffield) { //applet zipcode
		if(varField == "******") return true;
		
		if (varField.value.length <1){
             //allow no value
        }else {
                if(validUSZip(varField)){
                        //valid us zip
                } else {
                    if(validCanadaZip(varField)){ 
	   		            //valid canada  
                    } else {
                         ErrArray[ErrArray.length]="Please enter a valid Zip/Postal Code in the " + nameoffield + " Field."; 
                    }
                }                
        }	
    }	
	
	function validateZipCode(varField) {
	    if(varField == "******") return true;
	
		if (varField.value.length <1){
             ErrArray[ErrArray.length]="Please enter a valid Zip Code in the " + varField.name + " Field."; 
        }else {
                if(validUSZip(varField)){
                        //valid us zip
                } else {
                    if(validCanadaZip(varField)){ 
	   		            //valid canada  
                    } else {
                         ErrArray[ErrArray.length]="Please enter a valid Zip/Postal Code in the " + varField.name + " Field."; 
                    }
                }         
        }	
    }			

    function validCanadaZip(obj) {
	  if(obj.value == "******") return true;
	  
      obj.value=trim(obj.value);
    	if (obj.value.search(/^[A-Za-z]\d[A-Za-z](\s)\d[A-Za-z]\d$/) != -1){
        return true;    
      } else if (obj.value.search(/^[A-Za-z]\d[A-Za-z](\W*)\d[A-Za-z]\d$/) != -1) {
        obj.value=obj.value.substring(0,3)+" "+obj.value.substring(obj.value.length-3,obj.value.length);
        return true;
      } else return false;
	}	

    function validUSZip(obj) {
	  if(obj.value == "******") return true;
	  
      obj.value=trim(obj.value);
      if (obj.value.search(/^\d\d\d\d\d$/) != -1){
        return true;
      } else if (obj.value.search(/^(\d\d\d\d\d)(\s*\W\s*)(\d\d\d\d)$/) != -1) {
        obj.value=obj.value.substring(0,5)+"-"+obj.value.substring(obj.value.length-4,obj.value.length); 
        return true;
      } else if (obj.value.search(/^(\d\d\d\d\d)\s*-$/) != -1) {
        obj.value=obj.value.substring(0,5);
        return true;
      } else {
      	return false;
      }
	}
	
    var regexIndia = /^\d\d\d\d\d\d$/;
	function validIndiaZip(obj)
	{
	  if(obj.value == "******") return true;
      obj.value=trim(obj.value);
      if(obj.value.match(regexIndia) == null)
          return false;
	  else return true;
	}
	
	//end Simon 5/31/00 add a comprehensive email validation by using rfc822 standard:

	function validateExists(string, fieldname) { // checks to see if the variable has length >1
		if (string.length<1) ErrArray[ErrArray.length]="Please enter the " + fieldname;
	}

	function isEmail(string) {
//    		if (string.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
			if (string.search(/^\w+((\-|\.)*\w+)*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
        		return true;    
    		else
        		return false;
	}
	function isProper(string) {
		if(string == "******") return true;
		if (string==null || (string!=null && string.length==0))   return false;
 		var iChars = "*|,\":<>[]{}`\';()&$#%"; 
                 for (var i = 0; i < string.length; i++) {
 			if (iChars.indexOf(string.charAt(i)) != -1)
 		            return false;
		 }
		 return true;
	} 
	function isAlphaNumeric(string, fieldname) {
		if(string == "******") return true;
		if (!isProper(string)) {
			rrArray[ErrArray.length]="Please enter only alphanumeric characters in the " + fieldname + " field.";
		} 
	}

	/*
	function isProper(string) {
    		if (string.search(/^\w+( \w+)?$/) != -1)
        		return true;
    		else
        		return false;
	}*/

	function validateEmail(address) {
	        if(address == "******") return true;
			if ( (isEmail(address.value) == false) || (isProper(address.value) == false) ) {
        		ErrArray[ErrArray.length]="Please enter a valid email address.";
    		}
    		/*if (isProper(address.value) == false) {
        		ErrArray[ErrArray.length]="Please enter a valid username for email address.";
			}*/
	}

	function validateEmailString(address) {
		if(address == "******") return true;
		if ( (isEmail(address) == false) || (isProper(address) == false) ) {
        		ErrArray[ErrArray.length]="Please enter a valid email address.";
			return false;
    		}
		return true;
	}


	//end of rfc822 email validation Simon 5/31/00
 	 
	function validateChar(varField, RequiredLength) {
		var valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
		var p;
		var flag=false;

		if (varField.value.length<RequiredLength) 
			ErrArray[ErrArray.length]="Please enter a valid value in the " + varField.name + " field."; 
			flag=true;
		for (p=0; p<varField.value.length; p++)
			if (valid.indexOf(varField.value.substr(p, 1)) == -1){ 
				ErrArray[ErrArray.length]="Please enter a valid value in the " + varField.name + " field."; 
				break;}
	}

	function validateTime(timeStr) {
		if(timeStr == "******") return true;
		var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;
		var matchArray = timeStr.match(timePat);

		if (matchArray == null) return false;

		hour = matchArray[1];
		minute = matchArray[2];
		second = matchArray[4];
		ampm = matchArray[6];

		if (second=="") { second = null; }
		if (ampm=="") { ampm = null }

		if (hour < 0  || hour > 23) return false;
		if (minute<0 || minute > 59) return false;
		if (second != null && (second < 0 || second > 59)) return false
		return true;
	}
	

	
	function validateDate(dateStr){  
	    if(dateStr == "******") return true;
		
		//var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;
		var datePat = /^(\d{1,2})(\/)(\d{1,2})\2(\d{2}|\d{4})$/;
		var matchArray = dateStr.match(datePat); // is the format ok?
		if (matchArray == null) return false; 

		month = matchArray[1]; // parse date into variables
		day = matchArray[3];
		year = matchArray[4];
		if (year <1000 ) return false;  //this one added for 2k compliant dates only.
		if (month < 1 || month > 12) return false;
		if (day < 1 || day > 31) return false;
		if ((month==4 || month==6 || month==9 || month==11) && day==31) return false;
		if (month == 2) { 
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (day>29 || (day==29 && !isleap)) return false;
		}
		return true;
	} 
	
	
	function validateDateGreaterThan(dateStr1,variablename1,dateStr2,variablename2)  //use this one to create an error message
	{
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;
	var matchArray1 = dateStr1.match(datePat); // is the format ok?
	//var month1 = matchArray1[1]; // parse date into variables
	//var day1 = matchArray1[3];
	//var year1 = matchArray1[4];
	var matchArray2 = dateStr2.match(datePat); // is the format ok?
	//var month2 = matchArray2[1]; // parse date into variables
	//var day2 = matchArray2[3];
	//var year2 = matchArray2[4];
		
	/*if (matchArray1[3]>matchArray2[3] && matchArray1[4]>=matchArray2[4] && matchArray1[1]>=matchArray2[1]  || matchArray1[1]>matchArray2[1] && matchArray1[4]>=matchArray2[4] || matchArray1[4]>matchArray2[4])
		{
		ErrArray[ErrArray.length]="Please make sure the "+variablename1+" is before the "+variablename2;
		}*/
	
	}
	
	function validateDate2(dateStr,variablename)
	{
	    if(dateStr == "******") return true;
		if (!validateDate(dateStr))  ErrArray[ErrArray.length]="Please make sure the "+variablename+" is in MM/DD/YYYY format";
	}
	
	function validateDateTime(dateStr,variablename) {
	  if(dateStr == "******") return true;
	  var arr = dateStr.split(" ");
	  if ((arr[1] == undefined) || !validateDate(arr[0]) || !validateTime(arr[1]))  ErrArray[ErrArray.length]="Please make sure the "+variablename+" is in MM/DD/YYYY HH:mm format";
	  
    }
	
	function validateDate3(dateStr,variablename)
	{ 
		if(dateStr == "******") return true;
		if (!validateDate(dateStr))  ErrArray[ErrArray.length]="Please make sure the "+variablename+" year is a valid.";
	}

	function openErrWin1()	{
		if (navigator.appName=="Netscape")  {
			theHeight=ErrArray.length*45+150;
			attrStr="Height="+theHeight+",Width=450,scrollbars=1,resizable=0,dependent=1,titlebar=0";
		} else {
			theHeight=ErrArray.length*40+150;
			attrStr="Height="+theHeight+",Width=400,scrollbars=1,resizable=0,dependent=1,titlebar=0";
		}

		//if (errWin!=null) errWin.close();
		errWin=window.open("","errorWin",attrStr);
		errWin.document.write("<HTML>");
		errWin.document.write("<title>");
		errWin.document.write("Error");
		errWin.document.write("</title>");
		errWin.document.write("<body bgcolor=#FFFFCC>");
		errWin.document.write("<Table width=\"100%\"><TR><TD colspan=2 align=center><Font size=+1><B>The following errors have occured</B></Font></TD></TR>");
		errWin.document.write("<TD colspan=2 align=center><HR width=\"100%\"></TD></TR>");
		for (k=0;k<=ErrArray.length-1;k++)
			{errWin.document.write("<TR><TD width=\"1%\" valign=top><Font Color=red><B>Error:</B></Font></TD><TD><Font Color=red>" + ErrArray[k]+ "</Font></TD></TR>");}
		errWin.document.write("<TD colspan=2 align=center><HR width=\"100%\"></TD></TR>");
		errWin.document.write("</TABLE><form>");
		errWin.document.write('<Center><input type=button value="Close" onclick="top.close()"></Center>');
		errWin.document.write("</form>");
		errWin.document.write("</body>");
		errWin.document.write("</HTML>");

		ErrArray=new Array();
	}


function openErrWin()	{
		var st=""
		for (k=0;k<=ErrArray.length-1;k++){		
		ErrArray[k]=ErrArray[k]
		st=st+ErrArray[k] + "\n" ;
		}
		alert(st);
		for (k=0;k<=ErrArray.length-1;k++)		
			delete ErrArray[k];
		ErrArray=new Array();
}

var shifted=0;
//takes 4 parameters [ event, b4 box ('this' if nothing b4), this , nextone ]
function advancePhoneBox(evt, b4one, thisone, nextone) {
/* DISABLED ...complaints from users
		thisone.focus();
		//alert(evt.keyCode);
		var currentValue = thisone.value;
		var previousValue = b4one.value;
		//if (shifted ==1 && evt.keyCode ==9) { b4one.focus(); shifted=0; }
		if (evt.keyCode ==46 || evt.keyCode ==9)  {  return; }
		//else if (evt.keyCode == 16) shifted =1;
		else if (evt.keyCode == 8) {  if (currentValue.length==0) { b4one.focus(); }  }
		else if (evt.keyCode <45 || evt.keyCode > 57) { event.returnValue = false; return; } //only numbers please
		else if (currentValue.length <3) thisone.focus(); 
		else if (currentValue.length >=3) nextone.focus(); //skip ahead if we have all of them
*/ 
}

/*function checkIfImpersonalPerfect(text) {
     //text.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
     var pattern1 = "/(\s+[iI]{1}\s+)|(\W[iI]{1}\s+)/";
	     
     var nortop=0; //no of references to person
     var loc=-2;
     while (var loc!=-1) {  
		var leftover=text;
      	if (loc >=0) leftover=leftover.subString(loc, leftover.length);
     		loc= leftover.search(pattern1);
		if (loc >=0) nortop++;
     }
     alert(nortop);

}*/