/*

  -------------------------------------------------------------------------

	                Validation Script in JavaScript

                                Version 2.0

	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



	In return, you are requested to add a link to JavaScript-Coder.com, 

	making it easy for others to find this script.

	You can get the code for the link from: 

	http://www.javascript-coder.com/gen/link-to-us.phtml 



	If you want to get your site listed in the members' page, 

	send an email to: support@javascript-coder.com 



    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,fillValue)

{

  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,fillValue);

}

function ValidationDesc(inputitem,desc,error,fillValue)

{

  this.desc=desc;

	this.error=error;

	this.itemobj = inputitem;

	this.fillValue = fillValue;

	this.validate=vdesc_validate;

}

function vdesc_validate()

{

 if(!V2validateData(this.desc,this.itemobj,this.error,this.fillValue))

 {

    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,fillValue)

{

  this.vSet[this.vSet.length]= 

	  new ValidationDesc(this.itemobj,desc,error,fillValue);

}

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 

    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,fillValue) 

{ 

	var  makevar = "x"+objValue.name;

	var normvar = objValue.name;

	var errordiv = 'validate-box';

    var epos = strValidateStr.search("="); 

    var  command  = ""; 

    var  cmdvalue = ""; 

    var big = fillValue;

    if(epos >= 0) 

    { 

     command  = strValidateStr.substring(0,epos); 

     cmdvalue = strValidateStr.substr(epos+1); 

    } 

    else 

    { 

     command = strValidateStr; 

    } 

    switch(command) 

    { 

        case "req": 

        case "required": 

         { 

         	

         	//if(objValue.value==fillValue){}

         	

           if(eval(objValue.value.length) == 0 || objValue.value==fillValue) 

           { 

           	 

           	  dooby = document.getElementById(errordiv).style.display = 'block';

           	  dooby = document.getElementById(normvar).style.border='2px solid #87b325';

              if(!strError || strError.length ==0) 

              { 

                //strError = objValue.name + " : Required Field"; 

                //document.getElementById(objValue.name).style.display = 'inline';               

         		//makevar = "x"+objValue.name;

                //dooby = document.getElementById(makevar).style.display = 'inline';

                //hiddenspan = document.getElementById(objValue);

                //hiddenspan.style.display = 'block';

                //var msg = document.getElementById(objValue.name);

                //msg.style.display = 'inline';

                dooby = document.getElementById(errordiv).innerHTML = 'Form Field Required';

              }else{

         		//makevar = "x"+objValue.name;

                //dooby = document.getElementById(makevar).style.display = 'inline';

              	//dooby = document.getElementById(makevar).innerHTML = strError;

              	dooby = document.getElementById(errordiv).innerHTML = strError;

              }//if 

              //alert("-"+objValue.name+"-"+dooby); 

              

              return false; 

           }else{ 

           	dooby = document.getElementById(errordiv).style.display = 'none'; 

           	dooby = document.getElementById(normvar).style.border='1px solid #3f4a5c';	

           } 

           break;             

         }//case required 

        case "maxlength": 

        case "maxlen": 

          { 

             if(eval(objValue.value.length) >  eval(cmdvalue)) 

             { 

              //--- mine

           	  dooby = document.getElementById(makevar).style.display = 'inline';

              if(!strError || strError.length ==0){ }else{ 	dooby = document.getElementById(makevar).innerHTML = strError;  }

              //-- end mine

              return false; 

             }else{ dooby = document.getElementById(makevar).style.display = 'none'; }  

             break; 

          }//case maxlen 

        case "minlength": 

        case "minlen": 

           { 

             if(eval(objValue.value.length) <  eval(cmdvalue)) 

             { 

					//--- mine

					  dooby = document.getElementById(makevar).style.display = 'inline';

					  if(!strError || strError.length ==0){ }else{ 	dooby = document.getElementById(makevar).innerHTML = strError;  }

					  //-- end mine

					  return false; 

					 }else{ dooby = document.getElementById(makevar).style.display = 'none'; }  

					 break; 

            }//case minlen 

        case "alnum": 

        case "alphanumeric": 

           { 

              var charpos = objValue.value.search("[^A-Za-z0-9]"); 

              if(objValue.value.length > 0 &&  charpos >= 0) 

              { 

              //--- mine

           	  dooby = document.getElementById(makevar).style.display = 'inline';

              if(!strError || strError.length ==0){ }else{ 	dooby = document.getElementById(makevar).innerHTML = strError;  }

              //-- end mine

              return false; 

             }else{ dooby = document.getElementById(makevar).style.display = 'none'; }  

             break; 

           }//case alphanumeric 

        case "num": 

        case "numeric": 

           { 

              var charpos = objValue.value.search("[^0-9\.]"); 

              if(objValue.value.length > 0 &&  charpos >= 0) 

              { 

            	//--- mine

           	  		dooby = document.getElementById(errordiv).style.display = 'block';

           	 		dooby = document.getElementById(normvar).style.border='2px solid #87b325';

              		if(!strError || strError.length ==0){ dooby = document.getElementById(errordiv).innerHTML = 'Numeric Value Required'; }else{ 	

              			dooby = document.getElementById(errordiv).innerHTML = strError;  }

              	//-- end mine

              	

              	return false; 

             	

             	}else{ 

             		dooby = document.getElementById(errordiv).style.display = 'none'; 

           			dooby = document.getElementById(normvar).style.border='1px solid #CECECE';

           		}   

               break; 

           	}//numeric 

        case "alphabetic": 

        case "alpha": 

           { 

              var charpos = objValue.value.search("[^A-Za-z]"); 

              if(objValue.value.length > 0 &&  charpos >= 0) 

              { 

                //--- mine

           	  	dooby = document.getElementById(makevar).style.display = 'inline';

              		if(!strError || strError.length ==0){ }else{ 	dooby = document.getElementById(makevar).innerHTML = strError;  }

              	//-- end mine

              	

              	return false; 

             	

             	}else{ dooby = document.getElementById(makevar).style.display = 'none'; }  

               break; 

           }//alpha 

		case "alnumhyphen":

			{

              var charpos = objValue.value.search("[^A-Za-z0-9\-_]"); 

              if(objValue.value.length > 0 &&  charpos >= 0) 

              { 

                //--- mine

           	  	dooby = document.getElementById(makevar).style.display = 'inline';

              		if(!strError || strError.length ==0){ }else{ 	dooby = document.getElementById(makevar).innerHTML = strError;  }

              	//-- end mine

              	

              	return false; 

             	

             	}else{ dooby = document.getElementById(makevar).style.display = 'none'; }  

               break; 

			}

        case "email": 

          { 

               if(!validateEmailv2(objValue.value)) 

               { 

            	//--- mine

           	  	dooby = document.getElementById(makevar).style.display = 'inline';

              		if(!strError || strError.length ==0){ }else{ 	dooby = document.getElementById(makevar).innerHTML = strError;  }

              	//-- end mine

              	

              	return false; 

             	

             	}else{ dooby = document.getElementById(makevar).style.display = 'none'; }  

               break; 

               }//case email 

        case "lt": 

        case "lessthan": 

         { 

            if(isNaN(objValue.value)) 

            { 

              //alert(objValue.name+": Should be a number "); 

              makevar = "x"+objValue.name;

              dooby = document.getElementById(makevar).style.display = 'inline';

              return false; 

            }//if 

            if(eval(objValue.value) >=  eval(cmdvalue)) 

            { 

            	//--- mine

           	  	dooby = document.getElementById(makevar).style.display = 'inline';

              		if(!strError || strError.length ==0){ }else{ 	dooby = document.getElementById(makevar).innerHTML = strError;  }

              	//-- end mine

              	

              	return false; 

             	

             	}else{ dooby = document.getElementById(makevar).style.display = 'none'; }  

               break; 

               }//case lessthan 

        case "gt": 

        case "greaterthan": 

         { 

            if(isNaN(objValue.value)) 

            { 

              //alert(objValue.name+": Should be a number "); 

              makevar = "x"+objValue.name;

                dooby = document.getElementById(makevar).style.display = 'inline';

              return false; 

            }//if 

             if(eval(objValue.value) <=  eval(cmdvalue)) 

             { 

            	//--- mine

           	  	dooby = document.getElementById(makevar).style.display = 'inline';

              		if(!strError || strError.length ==0){ }else{ 	dooby = document.getElementById(makevar).innerHTML = strError;  }

              	//-- end mine

              	

              	return false; 

             	

             	}else{ dooby = document.getElementById(makevar).style.display = 'none'; }  

               break; 

               }//case greaterthan 

        case "regexp": 

         { 

            if(!objValue.value.match(cmdvalue)) 

            { 

              	//--- mine

           	  	dooby = document.getElementById(makevar).style.display = 'inline';

              		if(!strError || strError.length ==0){ }else{ 	dooby = document.getElementById(makevar).innerHTML = strError;  }

              	//-- end mine

              	

              	return false; 

             	

             	}else{ dooby = document.getElementById(makevar).style.display = 'none'; }  

               break; 

         }//case regexp 

        case "dontselect": 

         { 

            if(objValue.selectedIndex == null) 

            { 

			  alert("BUG: dontselect command for non-select Item"); 

              return false; 

            } 

            if(objValue.selectedIndex == eval(cmdvalue)) 

            { 

                //--- mine

           	  	dooby = document.getElementById(makevar).style.display = 'inline';

              		if(!strError || strError.length ==0){ }else{ 	dooby = document.getElementById(makevar).innerHTML = strError;  }

              	//-- end mine

              	

              	return false; 

             	

             	}else{ dooby = document.getElementById(makevar).style.display = 'none'; }  

               break; 

         }//case dontselect 

    }//switch 

    return true; 

}

/*

	Copyright 2003 JavaScript-coder.com. All rights reserved.

*/