//FUNCTION TO CHECK FOR THE MANDATORY FIELD
 function mandatory(Object,NameOfField)
 {
  if(Object.value.length<=0)
  {
    alert(NameOfField+" SHOULD NOT BE IGNORED");
    Object.focus();
    return false;
  }
 }
//FUNCTION TO RAISE ERROR BASED ON RAISEERRORFLAG
 function errormsg(Object,exprsn,RaiseErrorFlag,str,NameOfField,MandateFlag)
 {
   if(RaiseErrorFlag==1)
   {
     alert(str);
     Object.focus();
     return false;
   }
    else
    autocorrect(Object,exprsn,NameOfField,MandateFlag);
 }
//FUNCTION TO AUTOCORRECT
  function autocorrect(Object,exprsn,NameOfField,MandateFlag)
  {
    Object.value=Object.value.replace(exprsn,"");
    if(MandateFlag==1)
    mandatory(Object,NameOfField); 
  }
//FUNCTION TO REMOVE MULTIPLE SPACES
  function checkmulspaces(z)
  {
    re=/\s\s+/g;
    if(re.test(z.value))
    {
      z.value=z.value.replace(re," ");
      lre=/^\s+/g;
      if(lre.test(z.value))
      {
        z.value=z.value.replace(lre,"");
        rre=/\s+$/g;
        if(rre.test(z.value))
        z.value=z.value.replace(rre,"");
      }
    }
  }
//FUNCTION TO VALIDATE CheckTextWithSpChar
  function CheckTextWithSpChar(Object,NameOfField,RaiseErrorFlag,MandateFlag)
  {
    exp1=/\'|\"|\&|\<|\>|\||\#|\`|\*/gi; 
    if(MandateFlag==1)
    mandatory(Object,NameOfField);
    if(Object.value.length!=0)
    { 
      var str=new String("‘&’,<,>,|,#,`,*,are not allowed");
      if(exp1.test(Object.value))
      errormsg(Object,exp1,RaiseErrorFlag,str,NameOfField,MandateFlag);
    }  
  }
//FUNCTION TO VALIDATE CheckTextWithNoSpChar
  function CheckTextWithNoSpChar(Object,NameOfField,RaiseErrorFlag,MandateFlag)
  {
   //alert("hai from sirish function");
   checkmulspaces(Object);
   exp1=/[^a-z|\.|\s]/gi; 
   if(MandateFlag==1)
   mandatory(Object,NameOfField);
   if(Object.value.length!=0)
    {
     var str=new String("special characters except '.' not allowed");
     if(exp1.test(Object.value))
     {
     errormsg(Object,exp1,RaiseErrorFlag,str,NameOfField,MandateFlag);
     }
     else
	return true;
    }
   
  }
//FUNCTION TO VALIDATE ZIPCODE
  function CheckZipCode(Object,NameOfField,RaiseErrorFlag,MandateFlag)
  {   
     exp1=/[^a-z|0-9]/gi;
     exp2=/\s+/g;
     if(exp2.test(Object.value))
     Object.value=Object.value.replace(exp2,""); 
     if(MandateFlag==1)
     mandatory(Object,NameOfField);
     if(Object.value.length!=0) 
     {
       var str=new String("NO SPECIAL CHARACTERS ALLOWED");
       if(exp1.test(Object.value))
       errormsg(Object,exp1,RaiseErrorFlag,str,NameOfField,MandateFlag);
     }  
 }        
//FUNCTION TO VALIDATE DATE
 function dateevaluate(z)
 {
   var expr= /\-|\/|\//;
   var str=z.value;
   var a=str.split(expr);
   var narr=[31,28,31,30,31,30,31,31,30,31,30,31];
   var d=new Date();
   for(i=a.length;i>0;i--)
   {
     if(i==3)
     {
       if(a[i-1]<1900)
       {
         alert("wrong year");
          return;
       }
     }
     if(i==2) 
     {
       if(a[i-1]>12 | a[i-1]<1)
       {
         alert(" Month wrong");    
         return;
       }
     }
     if(i==1)
     {
       if(a[2]%4!=0)
       {
         if(a[i-1]>narr[a[1]-1]  |  a[i-1]<1)
         {
           alert(" Days wrong"); 
           return;
         }
       }
       else
       {
         if(a[i-1]>=eval(narr[a[1]-1]+1)  |  a[i-1]<1)
         {
           alert(" Days wrong"); 
           return;
         }
       }
     }             
   } return true;
 }     
//FUNCTION TO CHECKDATE
  function CheckDate(Object,NameOfField,RaiseErrorFlag,MandateFlag,DateType)
  {
    if(MandateFlag==1)
    mandatory(Object,NameOfField);
    exp=/^\d{2}\/\d{2}\/\d{4}$/;
    exp2=/\s+/g;
    if(exp2.test(Object.value))
    Object.value=Object.value.replace(exp2,"");
    if(validdate(Object,NameOfField,exp))
    {
      if(!dateevaluate(Object))
      {
      alert("NOT A VALID DATE");
      }
      else
      {
       var a =new Date();
       var s=a.getMonth()+1+"/"+a.getDate()+"/"+a.getYear();
       var sysdate=new Date(s);
       var str=Object.value;
       var day=str.substring(0,2);
       var month=str.substring(3,5); 
       var year=str.substring(6,10);                 
       var all=month+"/"+day+"/"+year;
       var entereddate=new Date(all);
       switch(DateType)
       {
        case 1 :
               if(!(entereddate<sysdate))
               alert("ENTERED DATE SHOULD NOT BE GREATER THAN OR EQUAL TO SYSTEMDATE");
               break;
        case 2 :
               if(!(entereddate<=sysdate))
               alert("ENTERED DATE SHOULD NOT BE GREATER THAN SYSTEMDATE");
               break;
        case 3 :
               if(!(eval(entereddate-sysdate)==0))
               alert("ENTERED DATE SHOULD BE EQUAL TO SYSTEMDATE");
               break;
        case 4 :
               if(!(entereddate>=sysdate))
               alert("ENTERED DATE SHOULD NOT BE LESS THAN SYSTEMDATE");
               break;
        case 5 :
               if(!(entereddate>sysdate))
               alert("ENTERED DATE SHOULD NOT BE LESS THAN OR EQUAL TO SYSTEMDATE");
               break;
        default:break;
       }         
    }
   }
   else
    alert('enter date in form dd/mm/yyyy');
 }
//FUNCTION TO CHECK FOR VALID DATE FORMAT 
  function validdate(Object,NameOfField,exprsn)
  {
   if(exprsn.test(Object.value))
   return true;
   else
   return false;
 }
//FUNCTION TO VALIDATE TEXTAREA
  function CheckTextArea(Object,NameOfField,RaiseErrorFlag,MandateFlag,N)
  {   
    exp1=/\'|\"|\&|\<|\>|\||\#|\`|\*|\/n/g; 
    if(MandateFlag==1)
    mandatory(Object,NameOfField);
   if(Object.value.length!=0) 
   {
     if(Object.value.length>N)
     {
       if(RaiseErrorFlag==1)
       {
        alert("ENTRY SHOULD NOT EXCEED "+N+"CHARACTERS");
       }
       else
         Object.value=Object.value.substr(0,N);
     }
     var str=new String("‘&’,<,>,|,#,`,*,are not allowed");
     if(exp1.test(Object.value))
     errormsg(Object,exp1,RaiseErrorFlag,str,NameOfField,MandateFlag);
   }  
 }
//FUNCTION TO VALIDATE SELECTBOX
 function CheckSelectBox(Object,NameOfField)
 {  
   
   if(Object.selectedIndex==0)
   alert("DEFAULT SHOULD NOT BE SELECTED");
 }
//FUNCTION TO VALIDATE INTNUMBER
 function CheckIntNumber(Object,NameOfField,RaiseErrorFlag,MandateFlag,FromValue,ToValue)
 {
  
  exp1=/[^0-9]/g; 
  exp2=/\s+/g;
  if(exp2.test(Object.value))
  Object.value=Object.value.replace(exp2,"");
  if(MandateFlag==1)
  mandatory(Object,NameOfField);
  if(Object.value.length!=0) 
  {
   var str=new String("ENTRY OTHER THAN DIGITS NOT ALLOWED");
   if(exp1.test(Object.value))
   errormsg(Object,exp1,RaiseErrorFlag,str,NameOfField,MandateFlag);   
   else if(Object.value<FromValue | Object.value>ToValue)
   {
    if(RaiseErrorFlag==1)
    alert("ENTRY SHOULD BE IN THE RANGE "+FromValue+" TO "+ToValue);
   }
   return true;
  }  
 }
//FUNCTION TO VALIDATE INT
 function CheckInt(Object,NameOfField,RaiseErrorFlag,MandateFlag)
 {
  
  exp1=/[^0-9]/g; 
  exp2=/\s+/g;
  if(exp2.test(Object.value))
  Object.value=Object.value.replace(exp2,"");
  if(MandateFlag==1)
  mandatory(Object,NameOfField);
  if(Object.value.length!=0) 
  {
   var str=new String("ENTRY OTHER THAN DIGITS NOT ALLOWED");
   if(exp1.test(Object.value))
   {
     errormsg(Object,exp1,RaiseErrorFlag,str,NameOfField,MandateFlag);   
   }
   /*else if(Object.value<FromValue | Object.value>ToValue)
   {
    if(RaiseErrorFlag==1)
    alert("ENTRY SHOULD BE IN THE RANGE "+FromValue+" TO "+ToValue);
   } */
   else
     return true;
  }  
 }
//FUNCTION TO VALIDATE EMAILID
 function CheckEmail(Object,NameOfField,RaiseErrorFlag,MandateFlag)
 {   
  exp1=/^[a-z]\w*\.*@\w*\.[\w\.]*[a-z]$/gi;
  exp2=/\&|\*|\^|\#|\$|\(|\)|\+|\-|\'|\"|\!|\%/gi;
  exp3=/\s+/g;
  if(exp2.test(Object.value))
  Object.value=Object.value.replace(exp3,""); 
  if(MandateFlag==1)
  mandatory(Object,NameOfField);
  if(Object.value.length!=0) 
  {
    var str=new String("ENTER VALID EMAIL ID");
    if(!exp1.test(Object.value))
    {
    errormsg(Object,exp2,RaiseErrorFlag,str,NameOfField,MandateFlag);
    }
    else
       return true;
  }  
 }
//FUNCTION TO VALIDATE DECIMALNUMBER
  function CheckDecNumber(Object,NameOfField,RaiseErrorFlag,MandateFlag,FromValue,ToValue)
  {   
    exp1=/^\d+\.\d{2}$/gi; 
    exp2=/\s+/g;
    exp3=/[^\d+\.]/gi;
    if(exp2.test(Object.value))
    Object.value=Object.value.replace(exp2,"");
    if(MandateFlag==1)
    mandatory(Object,NameOfField);
    if(Object.value.length!=0) 
    {
     var str=new String("ENTER VALID DECIMALNUMBER WITH ONLY TW0 DIGITS AFTER DECIMAL POINT");           
     if(!exp1.test(Object.value))
     errormsg(Object,exp3,RaiseErrorFlag,str,NameOfField,MandateFlag);
     else if(Object.value>ToValue || Object.value<FromValue)
     {
       if(RaiseErrorFlag==1)
       alert("ENTRY SHOULD BE IN THE RANGE "+FromValue+" TO "+ToValue);
     }
     return true;
    } 
    
 }
//FUNCTION TO VALIDATE TELEFAX
 function CheckTelFax(Object,NameOfField,RaiseErrorFlag,MandateFlag)
 {
   if(MandateFlag==1)	
   mandatory(Object,NameOfField);
   str=Object.value;
   if(Object.value.length!=0) 
  {
   var str1=new String("ENTER A VALID TELEFAX");
   exp=/[^0-9|()+-]/gi;
   if(exp.test(Object.value))
   {
    errormsg(Object,exp,RaiseErrorFlag,str1,NameOfField,MandateFlag);
   }
   else
	return true;
 }
   /*else if (((str.match(/\+/g)) && (str.match(/\+/g).length>1)) 
          || ((str.match(/\-/g)) && (str.match(/\-/g).length>1)) 
	  || ((str.match(/\(/g)) && (str.match(/\(/g).length>1)) 
          || ((str.match(/\)/g)) && (str.match(/\)/g).length>1)))
   {
    if(RaiseErrorFlag==1)
    alert("NOT A VALID TELEFAX");
   }*/
 }