// JavaScript Document
//checks to make sure an email field has correct syntax
function echeck(str) {

	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
	   //alert("Invalid E-mail")
	   return false
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   //alert("Invalid E-mail")
	   return false
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    //alert("Invalid E-mail")
	    return false
	}

	 if (str.indexOf(at,(lat+1))!=-1){
	    //alert("Invalid E-mail")
	    return false
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    //alert("Invalid E-mail")
	    return false
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	    //alert("Invalid E-mail")
	    return false
	 }
	
	 if (str.indexOf(" ")!=-1){
	    //alert("Invalid E-mail")
	    return false
	 }

	 return true					
}

function validate(frmName){
//frmName is the name of the form
frmLength = frmName.length;
var isEmpty = "<br>";
var message = "<br>";
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 "email":
		 			if(frmName[i].value == "" && desc[1]== "required") {
			        isEmpty += "* "+frmName[i].name.toUpperCase()+" is Required!<br>";
			        frmName[i].className = "errFld";	
			        ok = false;
			     } else if (frmName[i].value != "" && echeck(frmName[i].value)==false){
						message += "* Invalid E-mail<br>";
						//frmName[i].value="";
						frmName[i].className = "errFld";
						ok = false;
			     } else frmName[i].className = "";
			break;
			case "alpha":
		  		 var regexpAlphabetic = /^[a-zA-Z]+$/; // Add ' and - ?
					 if(frmName[i].value == "" && desc[1]== "required") {
			        isEmpty += "* "+frmName[i].name.toUpperCase()+" is Required!<br>";
			        frmName[i].className = "errFld";	
			        ok = false;
			     } else if (!regexpAlphabetic.test(frmName[i].value)) {
			 		   message += "* "+frmName[i].name.toUpperCase()+" must contain only Alphabetic values!<br>";
						 //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!<br>";
						 //frmName[i].value="";
						 frmName[i].className = "errFld";	
						 ok = false;				 
					 } else if(frmName[i].value == "" && desc[1]== "required") {
			        isEmpty += "* "+frmName[i].name.toUpperCase()+" is Required!<br>";
			        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!<br>";
						 //frmName[i].value="";
						 frmName[i].className = "errFld";
						 ok = false;
					 } else if(frmName[i].value == "" && desc[1]== "required") {
			        isEmpty += "* "+frmName[i].name.toUpperCase()+" is Required!<br>";
			        frmName[i].className = "errFld";	
			        ok = false;
			     } else frmName[i].className = "";
			break;
			case "date":
			     dates = frmName[i].value.split("-");
			     if(frmName[i].value == "" && desc[1]== "required") {
			        isEmpty += "* "+frmName[i].name.toUpperCase()+" is Required!<br>";
			        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)!<br>";
						 //frmName[i].value="";
						 frmName[i].className = "errFld";
						 ok = false; 
			     } else frmName[i].className = "";
			break;
			case "time":
			     time = frmName[i].value.split(":");
			     if(frmName[i].value == "" && desc[1]== "required") {
			        isEmpty += "* "+frmName[i].name.toUpperCase()+" is Required!<br>";
			        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)!<br>";
						 //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!<br>";
			        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!<br>";
						 //frmName[i].value="";
						 frmName[i].className = "errFld";	
						 ok = false;				 
					 } else if(frmName[i].value == "" && desc[1]== "required") {
			        isEmpty += "* "+frmName[i].name.toUpperCase()+" is Required!<br>";
			        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()+"!<br>";
              ok = false;
           }			 
			  break;
			  case "textarea":
			      var illegalChars = /[\;]/;
					 if (illegalChars.test(frmName[i].value)) {
			 		   message += "* "+frmName[i].name.toUpperCase()+" may not contain any semicolons!<br>";
						 //frmName[i].value="";
						 frmName[i].className = "errFld";	
						 ok = false;				 
					 } else if(frmName[i].value == "" && desc[1]== "required") {
			        isEmpty += "* "+frmName[i].name.toUpperCase()+" is Required!<br>";
			        frmName[i].className = "errFld";	
			        ok = false;
			     } else frmName[i].className = "";			 
			  break;
			}
   }    
  }//end for loop
  
  if (ok) return true;
  else {
			 //alert (isEmpty+"\n"+message);
			 var area = document.getElementById('errorArea');
			 
       area.innerHTML = '<b>Please fix the following ERRORS.</b><br><br>'+isEmpty+'<br>'+message;
       scroll(0,0);
			 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 = "";
}
