/*


  -------------------------------------------------------------------------


	                    JavaScript Form Validator 


                                Version 2.0.2


	Copyright 2003 JavaScript-coder.com. All rights reserved.


	You use this script in your Web pages, provided these opening credit


    lines are kept intact.


	The Form validation script is distributed free from JavaScript-Coder.com





	You may please add a link to JavaScript-Coder.com, 


	making it easy for others to find this script.


	Checkout the Give a link and Get a link page:


	http://www.javascript-coder.com/links/how-to-link.php





    You may not reprint or redistribute this code without permission from 


    JavaScript-Coder.com.


	


	JavaScript Coder


	It precisely codes what you imagine!


	Grab your copy here:


		http://www.javascript-coder.com/


    -------------------------------------------------------------------------  


*/


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.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 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": 


         { 


           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 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 "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 


    }//switch 


    return true; 


}


/*


	Copyright 2003 JavaScript-coder.com. All rights reserved.


*/