//this file will validate all the fields of every form
function validateEmail(email) 
{ 
//  email validation checking. 

   var splitted = email.match("^(.+)@(.+)$"); 
   if(splitted == null) return false; 
   if(splitted[1] != null ) 
   { 
     var regexp_user=/^\"?[\w-_\.]*\"?$/; 
     if(splitted[1].match(regexp_user) == null) return false; 
   } 
   if(splitted[2] != null) 
   { 
     var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/; 
     if(splitted[2].match(regexp_domain) == null) 
     { 
       var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/; 
       if(splitted[2].match(regexp_ip) == null) return false; 
     }// if 
     return true; 
   } 
return false; 
} 

/* function validateData 
*  Checks each field in a form 
*  Called from validateForm function 
*/ 
function validateData(strValidateStr,objValue,strError) 
{ 
   var epos = strValidateStr.search("="); 
   var  command  = ""; 
   var  cmdvalue = ""; 
   if(epos >= 0) 
   { 
    command  = strValidateStr.substring(0,epos); 
    cmdvalue = strValidateStr.substr(epos+1); 
   } 
   else 
   { 
    command = strValidateStr; 
   } 

   switch(command) 
   { 
       case "req": 
       case "required": 
        { 
          if(eval(objValue.value.length) == 0) 
          { 
             if(!strError || strError.length ==0) 
             { 
               strError = objValue.name + " : Required Field"; 
             }//if 
             alert(strError); 
             return false; 
          }//if 
          break;             
        }//case required 
       case "maxlength": 
       case "maxlen": 
         { 
            if(eval(objValue.value.length) >  eval(cmdvalue)) 
            { 
              if(!strError || strError.length ==0) 
              { 
                strError = objValue.name + " : "+cmdvalue+" characters maximum "; 
              }//if 
              alert(strError + "\n[Current length = " + objValue.value.length + " ]"); 
              return false; 
            }//if 
            break; 
         }//case maxlen 
       case "minlength": 
       case "minlen": 
          { 
            if(eval(objValue.value.length) <  eval(cmdvalue)) 
            { 
              if(!strError || strError.length ==0) 
              { 
                strError = objValue.name + " : " + cmdvalue + " characters minimum  "; 
              }//if               
              alert(strError + "\n[Current length = " + objValue.value.length + " ]"); 
              return false;                 
            }//if 
            break; 
           }//case minlen 
       case "alnum": 
       case "alphanumeric": 
          { 
             var charpos = objValue.value.search("[^A-Za-z0-9-.']"); 
             if(objValue.value.length > 0 &&  charpos >= 0) 
             { 
              if(!strError || strError.length ==0) 
               { 
                 strError = objValue.name+": Only alpha-numeric characters and  - . '  allowed "; 
               }//if 
               alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
               return false; 
             }//if 
             break; 
          }//case alphanumeric 
       case "num": 
       case "numeric": 
          { 
             var charpos = objValue.value.search("[^0-9]"); 
             if(objValue.value.length > 0 &&  charpos >= 0) 
             { 
               if(!strError || strError.length ==0) 
               { 
                 strError = objValue.name+": Only digits allowed "; 
               }//if               
               alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
               return false; 
             }//if 
             break;               
          }//numeric 
       case "alphabetic": 
       case "alpha": 
          { 
             var charpos = objValue.value.search("[^A-Za-z]"); 
             if(objValue.value.length > 0 &&  charpos >= 0) 
             { 
                 if(!strError || strError.length ==0) 
               { 
                 strError = objValue.name+": Only alphabetic characters allowed "; 
               }//if                             
               alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
               return false; 
             }//if 
             break; 
          }//alpha 

          

        case "password": 
       case "pass": 
          {  
			 
             var charpos = objValue.value.search("[^A-Za-z0-9#$_@\/&\-]"); 
			
		      
			  
			
             if(objValue.value.length > 0 &&  charpos >= 0) 
             { 
                 if(!strError || strError.length ==0) 
               {   
                 strError = objValue.name+ ": Only A-Za-z0-9#$_@-&/ Allowed "; 
               }//if                             
               alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
               return false; 
			   
             }//if 
             break; 
          }//password






          case "address": 
       case "addr": 
          { 
             var charpos = objValue.value.search("[^a-zA-Z0-9-@.,#+\/&]"); 
             if(objValue.value.length > 0 &&  charpos >= 0) 
             { 
                 if(!strError || strError.length ==0) 
               { 
                 strError = objValue.name+": Only a-z A-Z 0-9 - . , # @ + / &  allowed "; 
               }//if                             
               alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
               return false; 
             }//if 
             break; 
          }//address


             case "cardexpire": 
       
          { 
             var charpos = objValue.value.search("[^0-9-]"); 
             if(objValue.value.length > 0 &&  charpos >= 0) 
             { 
                 if(!strError || strError.length ==0) 
               { 
                 strError = objValue.name+": Only 0-9-  allowed "; 
               }//if                             
               alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
               return false; 
             }//if 
             break; 
          }//cardexpire


       case "email": 
         { 
              if(!validateEmail(objValue.value)) 
              { 
                if(!strError || strError.length ==0) 
                { 
                   strError = objValue.name+": Enter a valid Email address "; 
                }//if                                               
                alert(strError); 
                return false; 
              }//if 
          break; 
         }//case email 
 




         case "courseNo": 
        
          {     re =new RegExp("^([a-zA-Z]{4})([0-9]{4}$)");
		         var v=re.test(objValue.value);
				
				 if (!v)
				 {
					 alert(objValue.name+": The first four characters should be alphabetic characters and the last four characters should be digits. ");
					 return false;
				 }
				 break;
			  
            
          }//courseNo

        


            case "sectionNumber": 
        
          {     re = new RegExp("^([0])[1-5]{1}$");
		         var v=re.test(objValue.value);
				
				 if (!v)
				 {
					 alert(objValue.name+":Only 01, 02, 03, 04, or 05 is allowed ");
					 return false;
				 }
				 break;
			  
            
          }//sectionNumber

      


           // 
          case "term": 
        
          {    if(!(objValue.value.toUpperCase() == "Spring".toUpperCase() |
			  objValue.value.toUpperCase() == "Summer".toUpperCase() | 
			  objValue.value.toUpperCase() == "Fall".toUpperCase()))
			  {
				
					 alert(objValue.name+" Only Spring, Summer, or Fall is allowed ");
					 return false;
				
				
			  
              }
			   break;
          }//term




       case "lt": 
       case "lessthan": 
        { 
           if(isNaN(objValue.value)) 
           { 
             alert(objValue.name+": Should be a number "); 
             return false; 
           }//if 
           if(eval(objValue.value) >=  eval(cmdvalue)) 
           { 
             if(!strError || strError.length ==0) 
             { 
               strError = objValue.name + " : value should be less than "+ cmdvalue; 
             }//if               
             alert(strError); 
             return false;                 
            }//if             
           break; 
        }//case lessthan 
       case "gt": 
       case "greaterthan": 
        { 
           if(isNaN(objValue.value)) 
           { 
             alert(objValue.name+": Should be a number "); 
             return false; 
           }//if 
            if(eval(objValue.value) <=  eval(cmdvalue)) 
            { 
              if(!strError || strError.length ==0) 
              { 
                strError = objValue.name + " : value should be greater than "+ cmdvalue; 
              }//if               
              alert(strError); 
              return false;                 
            }//if             
           break; 
        }//case greaterthan 
       case "regexp": 
        { 
           if(!objValue.value.match(cmdvalue)) 
           { 
             if(!strError || strError.length ==0) 
             { 
               strError = objValue.name+": Invalid characters found "; 
             }//if                                                               
             alert(strError); 
             return false;                   
           }//if 
          break; 
        }//case regexp 
       case "dontselect": 
        { 
           if(objValue.selectedIndex == null) 
           { 
             alert("BUG: dontselect command for non-select Item"); 
             return false; 
           } 
           if(objValue.selectedIndex == eval(cmdvalue)) 
           { 
            if(!strError || strError.length ==0) 
             { 
             strError = objValue.name+": Please Select one option "; 
             }//if                                                               
             alert(strError); 
             return false;                                   
            } 
            break; 
        }//case dontselect 
   }//switch 
   return true; 
} 

/* 
* function validateForm 
* the function will
* returns false if the validation fails; true if success 
* */

function validateForm(objFrm,arrObjDesc) 
{ 
for(var itrobj=0; itrobj < arrObjDesc.length; itrobj++) 
{ 
  if(objFrm.elements.length <= itrobj) 
  { 
       alert("BUG: Obj descriptor for a non existent form element"); 
       return false; 
  }//if 
  for(var itrdesc=0; itrdesc < arrObjDesc[itrobj].length ;itrdesc++) 
  { 
     if(validateData(arrObjDesc[itrobj][itrdesc][0], 
                objFrm[itrobj],arrObjDesc[itrobj][itrdesc][1]) == false) 
      { 
        objFrm[itrobj].focus(); 
        return false; 
      }//if 
  }//for 
}//for 
} 