/*

  -------------------------------------------------------------------------

                                JavaScript Form Validator 

     this file is used to do client side validations

    -------------------------------------------------------------------------  

*/
function Validator(frmname)

{

  this.formobj=document.forms[frmname];

            if(!this.formobj)

            {

                        alert("BUG: couldnot get Form object "+frmname);

                        return;

            }

            if(this.formobj.onsubmit)

            {

                        this.formobj.old_onsubmit           = this.formobj.onsubmit;

                        this.formobj.onsubmit                 =          null;

            }

            else

            {

             this.formobj.old_onsubmit = null;

            }

            this.formobj.onsubmit                             =          form_submit_handler;

            this.addValidation                                =          add_validation;

            this.confirmPassword                             =          confirm_password;

            this.setAddnlValidationFunction 				 =          set_addnl_vfunction;

            this.clearAllValidations            			   =          clear_all_validations;

}

function set_addnl_vfunction(functionname)

{

            this.formobj.addnlvalidation = functionname;

}

function clear_all_validations()

{

            for(var itr=0;itr < this.formobj.elements.length;itr++)

            {

                        this.formobj.elements[itr].validationset = null;

            }

}

function form_submit_handler()

{

            for(var itr=0;itr < this.elements.length;itr++)

            {

                        if(this.elements[itr].validationset && !this.elements[itr].validationset.validate())

                        {

                          return false;

                        }

            }

            if(this.addnlvalidation)

            {

              str =" var ret = "+this.addnlvalidation+"()";

              eval(str);

    if(!ret) return ret;

            }

            return true;

}

function confirm_password(itemname1,itemname2)

{

            /*alert("raj");

            if(!this.formobj)

            {

                        alert("BUG: the form object is not set properly");

                        return;

            }//if

            var itemobj1 = this.formobj[itemname1];

            var itemobj2 = this.formobj[itemname2];   

            if(!itemobj1)

            {

                        alert("BUG: Couldnot get the input object named: "+itemname1);

                        return;

            }

            if(!itemobj2)

            {

                        alert("BUG: Couldnot get the input object named: "+itemname2);

                        return;

            }

            if(itemObj1.value!=itemObj2.value)

            {

                        alert("Please confirm password");

            }*/

            

}

function add_validation(itemname,descriptor,errstr)

{

            if(!this.formobj)

            {

                        alert("BUG: the form object is not set properly");

                        return;

            }//if

            var itemobj = this.formobj[itemname];

            if(!itemobj)

            {

                        alert("BUG: Couldnot get the input object named: "+itemname);

                        return;

            }

            if(!itemobj.validationset)

            {

              itemobj.validationset = new ValidationSet(itemobj);

            }

  itemobj.validationset.add(descriptor,errstr);

}

function ValidationDesc(inputitem,desc,error)

{

            this.desc                       =          desc;

            this.error                       =          error;

            this.itemobj       =          inputitem;

            this.validate       =          vdesc_validate;

}

function vdesc_validate()

{

 if(!V2validateData(this.desc,this.itemobj,this.error))

 {

    this.itemobj.focus();

            return false;

 }

 return true;

}

function ValidationSet(inputitem)

{

    this.vSet                    =          new Array();

            this.add             =          add_validationdesc;

            this.validate       =          vset_validate;

            this.itemobj       =          inputitem;

}

function add_validationdesc(desc,error)

{

            this.vSet[this.vSet.length]           =          new ValidationDesc(this.itemobj,desc,error);

}

function vset_validate()

{

            for(var itr=0;itr<this.vSet.length;itr++)

            {

               if(!this.vSet[itr].validate())

                         {

                           return false;

                         }

             }

             return true;

}

function validateEmailv2(email)

{

            // a very simple email validation checking. 

            // you can add more complex email checking if it helps 

    if(email.length <= 0)

            {

              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 V2validateData(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": 

         { 
				
				while (objValue.value.substring(0,1) == ' ')
				{
					objValue.value = objValue.value.substring(1, objValue.value.length);
				}
				/*var iChars = "!@#$%^&*()+=[]\\;/{}|\":<>?";
				for (var i = 0; i < objValue.value.length; i++) {
						if (iChars.indexOf(objValue.value.charAt(i) ) != -1) {
						alert (objValue.name.toUpperCase() + " can't have special characters other than spaces or underscores.");
						//document.getElementById(tab).focus();
						return false;
						}
					  }	*/
           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 + " ]"); 

                                       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 = objValue.name+": Only alpha-numeric characters allowed "; 

                }//if 

                //alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 

                                                alert(strError); 

                                                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)+"]"); 

             	alert(strError); 

                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 "alphabeticspace":  

           { 

              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); 

                //alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 

                return false; 

              }//if 

              break; 

           }//alpha


                        case "alnumhyphen":

                                    {

              var charpos = objValue.value.search("[^A-Za-z0-9\-_]"); 

              if(objValue.value.length > 0 &&  charpos >= 0) 

              { 

                  if(!strError || strError.length ==0) 

                { 

                  strError = objValue.name+": characters allowed are A-Z,a-z,0-9,- and _"; 

                }//if                             

                alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 

                return false; 

              }//if                              

                                    break;

                                    }

        case "email": 

          { 

               if(!validateEmailv2(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 "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.length > 0)

                                    {

                        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 

	 //added nidhi pasricha 
	 case "Fax_Phone": 

           { 

              var charpos = objValue.value.search("[^/#0-9.-]"); 

              if(objValue.value.length > 0 &&  charpos >= 0) 

              { 

                  if(!strError || strError.length ==0) 

                { 

                 strError = objValue.name+": Only nummeric and seperators are allowed "; 

                }//if                             

              //  alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 
				alert(strError);
                return false; 

              }//if 

              break; 

           }//alpha 
		   
    }//switch 

    return true; 

}

/*

            Copyright 2003 JavaScript-coder.com. All rights reserved.

*/
