String.prototype.trim = function() {
a = this.replace(/^\s+/, '');
return a.replace(/\s+$/, '');
};

function checkValidation(formobj, arrFieldNames) {

	var s =""; 
	var result = true;  
	var name ="";
	var dispname ="";  
	var command ="";
	var sErr = "";
	
	for(var itr=0;itr < arrFieldNames.length; itr++)
	{ 
		s= arrFieldNames[itr];
		name = s.substr(0,s.search(","));
		dispname =s.substring(s.search(",")+1,s.search(";"));
		command =s.substring(s.search(";")+1,s.search(":"));
		sErr = s.substr(s.search(":")+1);
	
		if(validate(formobj.elements[name],dispname,command,sErr)==false) {
			if ( formobj.elements[name].type != "hidden" ) {
				formobj.elements[name].focus();
			}
			result=false;
			break;
		} 
	}
	return result;
}


function validate(objValue,dispname,strValidateStr, 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 = dispname + " : is a required field"; 
              }//if 
              alert(strError); 
              return false; 
           }//if  
           break;             
         }//case required 
         
        case "max": 
        case "maxlength": 
        case "maxlen": 
          { 
             if(eval(objValue.value.length) >  eval(cmdvalue)) 
             { 
               if(!strError || strError.length ==0) 
               { 
                 strError = dispname + " : "+cmdvalue+" characters maximum "; 
               }//if 
               alert(strError); 
               return false; 
             }//if 
             break; 
          }//case maxlen 
          
        case "min": 
        case "minlength": 
        case "minlen": 
           { 
             if(eval(objValue.value.length) <  eval(cmdvalue)) 
             { 
               if(!strError || strError.length ==0) 
               { 
                 strError = dispname + " : " + cmdvalue + " characters minimum  "; 
               }//if               
               alert(strError); 
               return false;                 
             }//if 
             break; 
            }//case minlen 
            
            case "minvalue": 
           { 
             if(eval(objValue.value) <  eval(cmdvalue)) 
             { 
               if(!strError || strError.length ==0) 
               { 
                 strError = dispname + " : " + cmdvalue + " amount minimum  "; 
               }//if               
               alert(strError); 
               return false;                 
             }//if 
             break; 
            }//case minlen 
            
          case "maxvalue": 
           { 
           	//alert("in the max condition");
             if(eval(objValue.value) > eval(cmdvalue)) 
             { 
               if(!strError || strError.length ==0) 
               { 
                 strError = dispname + " : " + cmdvalue + " amount maximum  "; 
               }//if               
               alert(strError); 
               return false;                 
             }//if 
             break; 
            }//case minlen 
              
         case "wtcompulsaryminlen":
         case "len":
           { 
             
             if(eval(objValue.value.length) <  eval(cmdvalue) && eval(objValue.value.length)>0) 
             { 
             
               
               if(!strError || strError.length ==0) 
               { 
                 strError = dispname + " : " + cmdvalue + " characters minimum  "; 
               }//if               
               alert(strError); 
               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 = dispname+": Only alpha-numeric characters are allowed in this field "; 
                }//if 
               // alert(strError + "\n [Error on character position " + eval(charpos+1)+"]"); 
                alert(strError); 
                return false; 
              }//if 
              break; 
           }//case alphanumeric 
        case "alnumspace": 
        case "alphanumericspace": 
           { 
              var charpos = objValue.value.search("[^A-Z a-z0-9]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
               if(!strError || strError.length ==0) 
                { 
                  strError = dispname+": Only alpha-numeric characters are allowed in this field "; 
                }//if 
               // alert(strError + "\n [Error on character position " + eval(charpos+1)+"]"); 
                
                alert(strError); 
                return false; 
              }//if 
              break; 
           }//case alphanumericspace 
        case "num": 
        case "numeric": 
           { 
              var charpos = objValue.value.search("[^0-9]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                if(!strError || strError.length ==0) 
                { 
                  strError = dispname+": Only digits are allowed in this field "; 
                }//if               
               // alert(strError + "\n [Error on character position " + eval(charpos+1)+"]"); 
                alert(strError); 
                return false; 
              }//if 
              break;               
           }//numeric 
           case "numhypen": 
           { 
              var charpos = objValue.value.search("[^0-9-]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                if(!strError || strError.length ==0) 
                { 
                  strError = dispname+": Only digits and hypen are allowed in this field "; 
                }//if               
               // alert(strError + "\n [Error on character position " + eval(charpos+1)+"]"); 
                alert(strError); 
                return false; 
              }//if 
              break;               
           }//numeric & hypen yogesh for phone no
       case "flt": 
        case "float": 
           { 
              var charpos = objValue.value.search("[^0-9.]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                if(!strError || strError.length ==0) 
                { 
                  strError = dispname+": Only digits allowed "; 
                }//if               
                //alert(strError + "\n [Error character position " + eval(charpos+1)+"]");
                alert(strError); 
                return false; 
              }//if 
              break;               
           }//float 
         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 = dispname+": Only alphabetic characters are allowed in this field "; 
                }//if                             
                //alert(strError + "\n [Error on character position " + eval(charpos+1)+"]");
                alert(strError); 
                return false; 
              }//if 
              break; 
           }//alpha 
         case "alphaspace": 
           { 
              var charpos = objValue.value.search("[^A-Z a-z]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                  if(!strError || strError.length ==0) 
                { 
                  strError = dispname+": Only alphabetic characters are allowed in this field "; 
                }//if                             
                //alert(strError + "\n [Error on character position " + eval(charpos+1)+"]");
                alert(strError); 
                return false; 
              }//if 
              break; 
           }//alphaspace
           case "alphaspaceanddot": 
           { 
              var charpos = objValue.value.search("[^A-Z a-z.]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                  if(!strError || strError.length ==0) 
                { 
                  strError = dispname+": Only alphabetic characters are allowed in this field "; 
                }//if                             
                //alert(strError + "\n [Error on character position " + eval(charpos+1)+"]");
                alert(strError); 
                return false; 
              }//if 
              break; 
           }//alphaspace 
        case "alphahyphen": 
           { 
              var charpos = objValue.value.search("[^A-Z a-z\-_]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                  if(!strError || strError.length ==0) 
                { 
                  strError = dispname+": Only alphabetic characters are allowed in this field "; 
                }//if                             
                //alert(strError + "\n [Error on character position " + eval(charpos+1)+"]");
                alert(strError); 
                return false; 
              }//if 
              break; 
           }//alphahyphen 
	case "commonspecial":
			{
 //              var charpos = objValue.value.search("[^A-Z a-z0-9\-_.&,/|=:|;']"); 
             var charpos = objValue.value.search("[^A-Z a-z0-9\-_.&,/|=:|;']"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                  if(!strError || strError.length ==0) 
                { 
                  strError = dispname+": characters allowed in this field are A-Z,a-z,0-9,-.&,/\|=:|; and '";
                }//if                             
                //alert(strError + "\n [Error on character position " + eval(charpos+1)+"]"); 
                alert(strError);
                return false; 
              }//if 			
	     break;
	  }
	case "qualification":
	 {
           
              var charpos = objValue.value.search("[^A-Z a-z.]"); 
           
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                  if(!strError || strError.length ==0) 
                { 
                  strError = dispname+": characters allowed are A-Z,a-z, <> and .";
                }//if                             
                alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
                return false; 
              }//if 			
	     break;
 }
	case "alnumhyphen":
			{
              var charpos = objValue.value.search("[^A-Z a-z0-9\-_.]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                  if(!strError || strError.length ==0) 
                { 
                  strError = dispname+": characters allowed in this field are A-Z,a-z,0-9,-,. and _"; 
                }//if                             
                alert(strError + "\n [Error on character position " + eval(charpos+1)+"]"); 
                //alert(strError);
                return false; 
              }//if 			
			break;
			}
			
case "alnumunderscore":
			{
              var charpos = objValue.value.search("[^A-Za-z0-9\_]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                  if(!strError || strError.length ==0) 
                { 
                  strError = dispname+": characters allowed in this field are A-Z,a-z,0-9 and _"; 
                }//if                             
                //alert(strError + "\n [Error on character position " + eval(charpos+1)+"]"); 
                alert(strError);
                return false; 
              }//if 			
			break;
			}			
			
    case "phone":
			{
              var charpos = objValue.value.search("[^0-9 \-+]"); 
              if(objValue.value.length > 0 &&  charpos >= 0) 
              { 
                  if(!strError || strError.length ==0) 
                { 
                  strError = dispname+": characters allowed in this field are 0-9,- and +"; 
                }//if                             
                //alert(strError + "\n [Error on character position " + eval(charpos+1)+"]"); 
                alert(strError);
               // alert(dispname+": Enter a valid phone number ");
                return false; 
              }//if 			
			break;
			}
    
        case "email": 
          { 
               if(!validateEmailv2(objValue.value)) 
               { 
                 if(!strError || strError.length ==0) 
                 { 
                    strError = dispname+": Enter a valid Email address "; 
                 }//if                                               
                 alert(strError); 
                 return false; 
               }//if 
           break; 
          }//case email 
        case "date": 
          { 
               if(!chkdate(objValue.value)) 
               { 
                 if(!strError || strError.length ==0) 
                 { 
                    strError = dispname+": Enter a valid Date "; 
                 }//if                                               
                 alert(strError); 
                 return false; 
               }//if 
           break; 
          }//case date 

        case "lt": 
        case "lessthan": 
         { 
            if(isNaN(objValue.value)) 
            { 
              alert(dispname+": Should be a number "); 
              return false; 
            }//if 
            if(eval(objValue.value) >=  eval(cmdvalue)) 
            { 
              if(!strError || strError.length ==0) 
              { 
                strError = dispname + " : value should be less than "+ cmdvalue; 
              }//if               
              alert(strError); 
              return false;                 
             }//if             
            break; 
         }//case lessthan 
        case "lteq": 
         { 
            if(isNaN(objValue.value)) 
            { 
              alert(dispname+": Should be a number "); 
              return false; 
            }//if 
            if(eval(objValue.value) >  eval(cmdvalue)) 
            { 
              if(!strError || strError.length ==0) 
              { 
                strError = dispname + " : value should be less than or equal to "+ cmdvalue; 
              }//if               
              alert(strError); 
              return false;                 
             }//if             
            break; 
         }//case lteq 
        case "gt": 
        case "greaterthan": 
         { 
            if(isNaN(objValue.value)) 
            { 
              alert(dispname+": Should be a number "); 
              return false; 
            }//if 
             if(eval(objValue.value) <=  eval(cmdvalue)) 
             { 
               if(!strError || strError.length ==0) 
               { 
                 strError = dispname + " : 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 = dispname+": 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 = dispname+": Please Select one option "; 
              }//if                                                               
              alert(strError); 
              return false;                                   
             } 
             break; 
         }//case dontselect 
    }//switch 
    return true; 
}


//---------------------------------EMail Check ------------------------------------ 

/*  checks the validity of an email address entered 
*   returns true or false 
*   
*/ 

function validateEmailv2(email)
{
// a very simple email validation checking. 
// you can add more complex email checking if it helps 
    if ( email == "" ) return true;	
    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 checkFromAndToDate(fromDate,toDate)
{
	var Datediff = 0 ;
	if((fromDate.length) > 0 && (toDate.length) > 0)
	{
		var from_day = fromDate.substring(0,fromDate.search("-"));
		var fromdaymonth = fromDate.substring(fromDate.search("-")+1);
		var from_month = fromdaymonth.substring(0,fromdaymonth.search("-"));
		var from_Year = fromdaymonth.substring(fromdaymonth.search("-")+1);
		var fromDateNew = new Date(from_Year,(from_month-1),from_day);
			
		var to_day = toDate.substring(0,toDate.search("-"));
		var todaymonth = toDate.substring(toDate.search("-")+1);
		var to_month = todaymonth.substring(0,todaymonth.search("-"));
		var to_Year = todaymonth.substring(todaymonth.search("-")+1);
		var toDateNew = new Date(to_Year,(to_month-1),to_day);
			
		Datediff = (toDateNew.getTime() - fromDateNew.getTime())/(1000*60*60*24);
	}
	return Datediff;
}

function chkdate(sdate) {
	var mydateArr=sdate.split("/");
	if (mydateArr.length != 3)
		return false;
  	var myDayStr = mydateArr[0];
	var myMonthStr = mydateArr[1];
	var myYearStr = mydateArr[2];
	
	var myMonth = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); var myDateStr = myDayStr + ' ' + myMonth[myMonthStr] + ' ' + myYearStr;

	var myDate = new Date();
	myDate.setFullYear( myYearStr, myMonthStr, myDayStr );

	if ( myDate.getMonth() != myMonthStr ) {
		return false;
	} else {
		return true;
	}
	
}

//commom function for date mandatory
function datevalidmandatory(dayField,monthField,yearField,message) 
{ 
	if ((dayField == "-1" && monthField == "-1" && yearField == "-1") || (dayField == "0" && monthField == "0" && yearField == "0"))
	{
	  if (message!="")
	  {
		alert(message);
	  }
		return false; 
	}

	if ((dayField != "-1" && monthField == "-1" && yearField == "-1") || (dayField != "0" && monthField == "0" && yearField == "0"))
	{
	  if (message!="")
	  {
		alert(message);
	  }
		return false; 
	}
	if ((dayField != "-1" && monthField != "-1" && yearField == "-1") || (dayField != "0" && monthField != "0" && yearField == "0"))
	{
	  if (message!="")
	  {
		alert(message);
	  }
		return false; 
	}
	if ((dayField != "-1" && monthField == "-1" && yearField != "-1") || (dayField != "0" && monthField == "0" && yearField != "0"))
	{
	  if (message!="")
	  {
		alert(message);
	  }
		return false; 
	}
	if ((dayField == "-1" && monthField != "-1" && yearField == "-1") || (dayField == "0" && monthField != "0" && yearField == "0"))
	{
	  if (message!="")
	  {
		alert(message);
	  }
		return false; 
	}
	if ((dayField == "-1" && monthField != "-1" && yearField != "-1") || (dayField == "0" && monthField != "0" && yearField != "0"))
	{
	  if (message!="")
	  {
		alert(message);
	  }
		return false; 
	}
	if ((dayField == "-1" && monthField == "-1" && yearField != "-1") || (dayField == "0" && monthField == "0" && yearField != "0"))
	{
	  if (message!="")
	  {
		alert(message);
	  }
		return false; 
	}

	day = dayField; 
    month = monthField; 
    monthVal = monthField;
    year = yearField;

	if ((month == "4" || month == "6" || month == "9" || month == "11") && ( day > 30)) 
    { 
	  if (message!="")
	  {
		alert(message);
	  }
		return false; 
    } 

    if (month == "2" && day > 29) 
    { 
	  if (message!="")
	  {
		alert(message);
	  }
        return false; 
    } 

    // check for Leap Year NOW.... 
    // Any year that is divisible by 4 but not divisible by 100 except when the year is divisible by 400. 
    // Thus 1600 and 2000, although century marks, have a Leap Day. 
    if (( month == "2") &&  ( year%4 ==0 && (year%100 != 0 || year%400 == 0)))   // that is a leap year 
    { 
        if (day > 29) 
        { 
		  if (message!="")
		  {
			alert(message);
		  }
            return false; 
        } 
    } 
    else if (month == "2" && day > 28) 
    { 
	  if (message!="")
	  {
		alert(message);
	  }
        return false; 
    } 
    return true; 
}



