/*



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



	                    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;



	}

	

	if (ValidBirthDay()== false)

		return false;



	

	



	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 validDate(fld,my_msg) {

	var testMo, testDay, testYr, inpMo, inpDay, inpYr, msg;

	var inp = fld;

	var	 status = "";

	msg="";

	inpDay = parseInt(inp.substring(0, inp.indexOf("/")), 10);

    inpMo = parseInt(inp.substring((inp.indexOf("/") + 1), inp.lastIndexOf("/")), 10);

    inpYr = parseInt(inp.substring((inp.lastIndexOf("/") + 1), inp.length), 10);

	

	var testDate = new Date(inpMo + "/" + inpDay + "/" + inpYr );

	testMo = testDate.getMonth() + 1;

    testDay = testDate.getDate();

    testYr = testDate.getFullYear();

	

	// make sure parseInt() succeeded on input components

    if (isNaN(inpMo) || isNaN(inpDay) || isNaN(inpYr)) {

        msg = my_msg + " 1 ";

    }

    // make sure conversion to date object succeeded

    

	if (isNaN(testMo) || isNaN(testDay) || isNaN(testYr)) {

        msg = my_msg + " 2 ";

    }

    // make sure values match

   

	if (testMo != inpMo || testDay != inpDay || testYr != inpYr) {

        msg = my_msg + " 3 ";

		//alert("not equal");

    }

	

	//alert(inpMo + "/" + inpDay + "/" + inpYr);

	//alert(testMo + "/" + testDay + "/" + testYr);

	if (msg!="") {

        // there's a message, so something failed

        //alert(msg)

        // work around IE timing problem with alert by

        // invoking a focus/select function through setTimeout();

        // must pass along reference of fld (as string)

        

        return false

    } else {

        // everything's OK; if browser supports new date method,

        // show  date string in status bar

        return true

    }

	

	

}



// separate function to accommodate IE timing problem

function doSelection(fld) {

    fld.focus()

    fld.select()

}





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+"  "; 



               }//if 



               alert(strError); 



               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 ; 



               }//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 = objValue.name; 



                }//if 



                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; 



                }//if               



                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; 



                }//if                             



                alert(strError); 



                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; 



                }//if                             



                alert(strError); 



                return false; 



              }//if 			



			break;



			}

			

		case "date_val":

			{

				 if(!validDate(objValue.value,"test")) 



               { 



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



                 { 



                    strError = objValue.name; 



                 }//if                                               



                 alert(strError); 



                 return false; 

			   }



              break; 

			}



        case "email": 



          { 



               if(!validateEmailv2(objValue.value)) 



               { 



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



                 { 



                    strError = objValue.name; 



                 }//if                                               



                 alert(strError); 



                 return false; 



               }//if 



           break; 



          }//case email 



        case "lt": 



        case "lessthan": 



         { 



            if(isNaN(objValue.value)) 



            { 



              alert(objValue.name); 



              return false; 



            }//if 



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



            { 



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



              { 



                strError = objValue.name + cmdvalue; 



              }//if               



              alert(strError); 



              return false;                 



             }//if             



            break; 



         }//case lessthan 



        case "gt": 



        case "greaterthan": 



         { 



            if(isNaN(objValue.value)) 



            { 



              alert(objValue.name); 



              return false; 



            }//if 



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



             { 



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



               { 



                 strError = objValue.name + 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; 



	              }//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; 



              }//if                                                               



              alert(strError); 



              return false;                                   



             } 



             break; 



         }//case dontselect 

		 

	}//switch 



    return true; 



}







function ValidBirthDay(){

var testMo, testDay, testYr, birthdayValueMo, birthdayValueDay, birthdayValueYr, IpDateValueMo, IpDateValueDay, IpDateValueYr, msg;

		var birthdayValue = document.getElementById("birthday").value;

		birthdayValueDay = parseInt(birthdayValue.substring(0, birthdayValue.indexOf("/")), 10);

		birthdayValueMo = parseInt(birthdayValue.substring((birthdayValue.indexOf("/") + 1), birthdayValue.lastIndexOf("/")), 10);

		birthdayValueYr = parseInt(birthdayValue.substring((birthdayValue.lastIndexOf("/") + 1), birthdayValue.length), 10);

		var IpDateValue = document.getElementById("social_id_date").value;

		IpDateValueDay = parseInt(IpDateValue.substring(0, IpDateValue.indexOf("/")), 10);

		IpDateValueMo = parseInt(IpDateValue.substring((IpDateValue.indexOf("/") + 1), IpDateValue.lastIndexOf("/")), 10);

		IpDateValueYr = parseInt(IpDateValue.substring((IpDateValue.lastIndexOf("/") + 1), IpDateValue.length), 10);



		//alert (birthdayValue + " " + IpDateValue)
	
		if (IpDateValueYr<birthdayValueYr)

			{

			alert ("عفوا يجب ان يكون تاريخ الميلاد اقل من تاريخ اصدار الهوية");

			return false;

			}

		else if (IpDateValueYr>birthdayValueYr)

			{

			return true;	

			}

		else

			{

			if (IpDateValueMo<birthdayValueMo)

				{

				alert ("عفوا يجب ان يكون تاريخ الميلاد اقل من تاريخ اصدار الهوية");	

				return false;

				}

			else if (IpDateValueMo>birthdayValueMo)

				{

				return true;

				}

			else

				{

				if (IpDateValueDay<=birthdayValueDay)

					{

					alert ("عفوا يجب ان يكون تاريخ الميلاد اقل من تاريخ اصدار الهوية");

					return false;

					}

				else

					{

					return true;					

					}

				}

			}

			

}























/*



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



*/