/*




  -------------------------------------------------------------------------




	                    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: Could not 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 "numeric": 




           { 




              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 spaces and alphabetic characters allowed "; 




                }//if                             




                alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 




                return false; 




              }//if 




              break; 




           }//alpha 




		case "numhyphen":




			{




              var charpos = objValue.value.search("[^0-9\-_ -]"); 




              if(objValue.value.length > 0 &&  charpos >= 0) 




              { 




                  if(!strError || strError.length ==0) 




                { 




                  strError = objValue.name+": 0-9,and also --"; 




                }//if                             




                alert(strError + "\n [Error character position " + eval(charpos+1)+"]"); 




                return false; 




              }//if 			




			break;




			}




		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+": No commas allowed; characters allowed are A-Z,a-z,0-9,and also -_ .;':?!()-"; 

                }//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; 




}











function radio_button_checker()



{



// set var radio_choice to false



var radio_choice = false;







// Loop from zero to the one minus the number of radio button selections



for (counter = 0; counter < personaldataform.gender.length; counter++)



{



// If a radio button has been selected it will return true



// (If not it will return false)



if (personaldataform.gender[counter].checked)



radio_choice = true; 



}







if (!radio_choice)



{



// If there were no selections made display an alert box 



alert("Please select a Gender.")



return (false);



}







//Arriving before the comp



var radio_choice = false;



for (counter = 0; counter < personaldataform.beforethecomp.length; counter++)



{



if (personaldataform.beforethecomp[counter].checked)



radio_choice = true; 



}







if (!radio_choice)



{



alert("Please select Yes or No if you wish or not to contact other pilots arriving before the event.")



return (false);



}







//Homologation



var radio_choice = false;



for (counter = 0; counter < personaldataform.homologation.length; counter++)



{



if (personaldataform.homologation[counter].checked)



radio_choice = true; 



}







if (!radio_choice)



{



alert("Please select an Homologation.")



return (false);



}











return (true);



}
