// JavaScript Document

//checks to make sure an email field has correct syntax
function echeck(str) {   
    var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; //dara 02November2007
    if (filter.test(str)) return true;   
    else return false;					
}

//dara 30August2007
function ltrim(sString) {
    while (sString.substring(0,1) == ' ')
        sString = sString.substring(1, sString.length);
    return sString;
}

//dara 30August2007     
function rtrim(sString) {
    while (sString.substring(sString.length-1, sString.length) == ' ')
        sString = sString.substring(0,sString.length-1);
    return sString;
}

//dara 30August2007     
function trim(sString) {
    while (sString.substring(0,1) == ' ')
        sString = sString.substring(1, sString.length);
    while (sString.substring(sString.length-1, sString.length) == ' ')
        sString = sString.substring(0,sString.length-1);
    return sString;
}

function validate(frmName){
//frmName is the name of the form
frmLength = frmName.length;
var isEmpty = "\n";
var message = "\n";
var ok = true;
           
for (i=0; i<frmLength;i++){
  if (frmName[i].alt) {
		var text = frmName[i].alt;
		var desc = text.split(",");
    switch (desc[0]){
            case "zip": //dara 20090308  
                var zip;
                zip = trim(frmName[i].value);
                if(zip == "" && desc[1]== "required") {     
                    isEmpty += "* "+frmName[i].name+" is Required!\n";
                    frmName[i].className = "errFld";    
                    ok = false;
                } else if (zip.length != 5 && zip != ""){
                    message += "* Invalid Zip\n";
                    frmName[i].value="";
                    frmName[i].className = "errFld";
                    ok = false;
                } else frmName[i].className = "";
            break;
      case "ziplist": 
            //marlon 04/10/09 
            //this option validates a list of zip codes 
            var zips; 
            zips = trim(frmName[i].value);
            if(zips == "") {     
                isEmpty += "* "+frmName[i].name+" is Required!\n";
                frmName[i].className = "errFld";    
                ok = false;
            } else{
                var zipArray = zips.split(',');
                var j;
                var validList = 1;
                var msgZip = "";
                
                for(j=0;j<zipArray.length;j++){
                  if (zipArray[j].length != 5 && zipArray[j] != ""){
                    //if(msgZip == "")
                    msgZip += "* Invalid Zip " + zipArray[j] + "\n";
                    //else
                    //  msgZip += ", " + zipArray[j];
                    frmName[i].className = "errFld";
                    ok = false;
                    validList = 0;
                  }
                }
                if(validList==1)
                  frmName[i].className = "";
                else
                  message += msgZip; 
            }             
            break;                  
			case "email":
		 	    if(trim(frmName[i].value) == "" && desc[1]== "required") {       
			        isEmpty += "* "+frmName[i].name.toUpperCase()+" is Required!\n";
			        frmName[i].className = "errFld";	
			        ok = false;
			    } else if (frmName[i].value != "" && echeck(frmName[i].value)==false){
				    message += "* Invalid E-mail\n";
					frmName[i].value="";
					frmName[i].className = "errFld";
					ok = false;
			    } else frmName[i].className = "";
			break;
            case "confirm_email":  //dara 20090303
                if (trim(frmName[i].value) != trim(frmName[i-1].value) && trim(frmName[i-1].value) != "") {  
                    message += "* Emails do not match\n";
                    frmName[i].className = "errFld";    
                    ok = false;            
                } else frmName[i].className = "";
            break;
			case "alpha":
		  		 var regexpAlphabetic = /^[a-zA-Z]+$/; // Add ' and - ?
					 if(trim(frmName[i].value) == "" && desc[1]== "required") {      
			        isEmpty += "* "+frmName[i].name.toUpperCase()+" is Required!\n";
			        frmName[i].className = "errFld";	
			        ok = false;
			     } else if (!regexpAlphabetic.test(frmName[i].value)) {
			 		   message += "* "+frmName[i].name.toUpperCase()+" must contain only Alphabetic values!\n";
					 frmName[i].value="";
					 frmName[i].className = "errFld";
					 ok = false;					 
				 } else frmName[i].className = "";
			break;
			case "alphanum":
				 var illegalChars = /[\;\@\$\%\^\&\*\)\(]/;
				 if (illegalChars.test(frmName[i].value)) {
			 	   message += "* "+frmName[i].name.toUpperCase()+" must contain only Alphabetic & Numeric values!\n";
					 frmName[i].value="";
					 frmName[i].className = "errFld";	
					 ok = false;				 
				 } else if(trim(frmName[i].value) == "" && desc[1]== "required") {   
			        isEmpty += "* "+frmName[i].name.toUpperCase()+" is Required!\n";
			        frmName[i].className = "errFld";	
			        ok = false;
			     } else frmName[i].className = "";
			break;
			case "num":
			     //remove periods and commas
			     var num = frmName[i].value;
			     var rgExp = /[\,]/;
			     num = num.replace(rgExp, "");
					 if(isNaN(num)) {
					   message += "* "+frmName[i].name.toUpperCase()+" must contain only Numeric values!\n";
						 frmName[i].value="";
						 frmName[i].className = "errFld";
						 ok = false;
					 } else if(trim(frmName[i].value) == "" && desc[1]== "required") {     
			        isEmpty += "* "+frmName[i].name.toUpperCase()+" is Required!\n";
			        frmName[i].className = "errFld";	
			        ok = false;
			     } else if(trim(frmName[i].value) != "" && desc[1]== "max" && num>9999999.99) {
              //marlon 4/10/09     
              message += "* "+frmName[i].name.toUpperCase()+" must not exceed 9999999.99!\n";
              frmName[i].className = "errFld";  
              ok = false;
           } else frmName[i].className = "";
			break;
			case "datetype":
			     dates = frmName[i].value.split("-");
			     if(trim(frmName[i].value) == "" && desc[1]== "required") {   
			        isEmpty += "* "+frmName[i].name.toUpperCase()+" is Required!\n";
			        frmName[i].className = "errFld";	
			        ok = false;
					 } else if(frmName[i].value != "" && (isNaN(dates[0]) || isNaN(dates[1]) ||isNaN(dates[2]))) {
					   message += "* "+frmName[i].name.toUpperCase()+" must follow correct date format (YYYY-MM-DD)!\n";
						 frmName[i].value="";
						 frmName[i].className = "errFld";
						 ok = false; 
			     } else frmName[i].className = "";
			break;
			case "time":
			     time = frmName[i].value.split(":");
			     if(trim(frmName[i].value) == "" && desc[1]== "required") {      
			        isEmpty += "* "+frmName[i].name.toUpperCase()+" is Required!\n";
			        frmName[i].className = "errFld";	
			        ok = false;
					 } else if(frmName[i].value != "" && (isNaN(time[0]) || isNaN(time[1]))) {
					   message += "* "+frmName[i].name.toUpperCase()+" must follow correct time format (HH:SS)!\n";
						 frmName[i].value="";
						 frmName[i].className = "errFld";
						 ok = false; 
			     } else frmName[i].className = "";
			break;
			case "checkbox":
			     if(!frmName[i].checked && desc[1]== "required") {
			        isEmpty += "* Acknowledging "+frmName[i].name.toUpperCase()+" is Required!\n";
			        frmName[i].className = "errBox";	
			        ok = false;
					 } else frmName[i].className = "";
			break;
			case "password":
					 var illegalChars = /[\;\%\^\*\)\(\ \[\]]/;
					 if (illegalChars.test(frmName[i].value)) {
			 		   message += "* "+frmName[i].name.toUpperCase()+" may not contain the following [;%^*()] or a space!\n";
						 frmName[i].value="";
						 frmName[i].className = "errFld";	
						 ok = false;				 
					 } else if(trim(frmName[i].value) == "" && desc[1]== "required") {    
			        isEmpty += "* "+frmName[i].name.toUpperCase()+" is Required!\n";
			        frmName[i].className = "errFld";	
			        ok = false;
			     } else frmName[i].className = "";
			break;
    }//end swith statement
	 } else if (frmName[i].title) {
      var text = frmName[i].title;
		  var desc = text.split(",");
		  switch (desc[0]){
			  case "select":
			     if (frmName[i].selectedIndex > 0 && desc[1] == "required") {
              frmName[i].className = "";
           } else if (desc[1] != "required") {
              frmName[i].className = "";
           } else {
              frmName[i].className = "errFld";
              isEmpty += "* Please select a "+frmName[i].name.toUpperCase()+"!\n";
              ok = false;
           }			 
			  break;
			  case "textarea":
			      /*
                  var illegalChars = /[\;]/;
					 if (illegalChars.test(frmName[i].value)) {
			 		   message += "* "+frmName[i].name.toUpperCase()+" may not contain any semicolons!\n";
						 //frmName[i].value="";
						 frmName[i].className = "errFld";	
						 ok = false;				 
					 } else*/ if(trim(frmName[i].value) == "" && desc[1]== "required") {    //dara 30August2007 trim
			        isEmpty += "* "+frmName[i].name.toUpperCase()+" is Required!\n";
			        frmName[i].className = "errFld";	
			        ok = false;
			     } /*else frmName[i].className = "";			 */
			  break;
			}
   }    
  }//end for loop
  
  if (ok) return true;
  else {
			 alert (isEmpty+"\n"+message);
			 return false;	
	}
}//end function

function hideButton(tid1,tid2) {
  document.getElementById(tid1).style.display = "none";
  document.getElementById(tid2).style.display = "";
}
//display loading
function loading() {
  document.getElementById('loading').style.display = "";
}

//dara 26September2007 reset/clear a form
function clearForm(thisForm) {
	with (document.forms[thisForm]) {
		var n = 0;
        while (elements[n]) {
            if (elements[n].type == "checkbox") {
                elements[n].checked = false;
            }
            else if ((elements[n].type != "button") && (elements[n].type != "submit") && (elements[n].type != "image") && (elements[n].type != "hidden") && (elements[n].alt != "datetype")) {
			    elements[n].value = "";
            }
            n++; 
		}
	}
}

var lookup_zip;

function close_win(){
  if(lookup_zip!=null)
    lookup_zip.close();
}

