	//Validation.js
	//
	//For validation of form fields
	
	var NS = (document.layers)? true:false
	var IE = (document.all)? true:false
	var gNS = (document.layers)? true:false
	var gIE = (document.all)? true:false
	var gCurrElement;
	
	var L_Empty = 'יש להזין ערך בשדה זה';
    var L_Invalid ='הזנת ערך שגויי בשדה זה';
	
	//Patterns
	var PatternsDict = new Object();
   
	PatternsDict.isZip = /^(\d{5}(-\d{4})?)?$/;
	  // matches zip codes
	
	PatternsDict.isCrdCard = /^\d{8,16}$/;
	  // matches credit card number
	
	PatternsDict.isCommaDelimited = /^[1-9][0-9]?$|^([1-9][0-9]?\,?)*$/;
	  // matches comma dilimited numbers
	   
	PatternsDict.isCurrency = /^\d{1,3}(,\d{3})*\.\d{2}$/;
	  // matches $17.23 or 14,281,545.45 or ...
	
	PatternsDict.isFloat = /^\d*\.\d*$|^\d*$/;
	  // matches 17.23 or 14281.4555 or ...
	   
	PatternsDict.isTime = /^[0-1]?[0-9]:[0-5]?[0-9]$|^[2][0-3]:[0-5]?[0-9]$/;
	  // matches 5:04 or 12:34 

	PatternsDict.isDate = '';
	  // matches 12/31/1998 or 31/12/1998 or empty is allowed
	  
	PatternsDict.isAlpha = /^([A-Za-z\' \t])*$/;
	  // matches chuck Noris  or empty is allowed
	  
	PatternsDict.isWord = /^([A-Za-z0-9_ \t\-])*$/;
	  // matches doto2_So
	  
	PatternsDict.isEmail = /^(((\w)+[-.!])?(\w[!]?)+@((\w)+[-.])+(\w{1,3}))?$|^(((\w)+[-.!])?(\w[!]?)+@((\w)+[-.])+((\w{2})+[-.])+(\w{2}))?$/;
							  
	  // matches k1234!@ting.tong.com or t@k.king.com or t-ding@dong.com
	  
	PatternsDict.isDigit = /^\d*$/;
	  //equivalent to  [0-9]* matches 12312123 or empty is allowed
	
	PatternsDict.isTrueNumber = /^[1-9]$|^[1-9][0-9]$|^[1-9][0-9][0-9]$/;
	  //value >0  <= 255
	
	PatternsDict.isPhone = /^([0-9_ \t\-])*$/;
	  // matches 03-9433399 or 054-889900 or 039433399
	  
	PatternsDict.isTinyInt = new Array("^\[0-9]?$","^[0-9]?[0-9]?$","^[0-2]?[0-5]?[0-5]?$");
	  // value <= 255

	PatternsDict.isSmallInt =new Array("^\[0-9]?$","^[0-9]?[0-9]?$","^[0-9]?[0-9]?[0-9]?$","^[0-9]?[0-9]?[0-9]?[0-9]?$","^[0-3]?[0-2]?[0-7]?[0-6]?[0-7]?$");
	  // value <= 32767
	  
	//this function selects an option that begins with
	//a letter pressed on the keyboard
	function ComboQuickNav(combo){
		if (gIE)
		{
			key=window.event.keyCode
			i=0
			found=false
			while (i<combo.options.length && !found)
			{
				if (key==combo.options[i].text.charCodeAt(0))
				{
					combo.options[i].selected=true
					found=true
				}
				i++
			}
		}
	}
  // Validate the form fields by the validator attribute
  function validateForm(theForm)
  { 
     // return true if all is well
	 var elArr = theForm.elements;   // get all elements of the form into array
	 for(var i = 0; i < elArr.length; i++)
	  with(elArr[i])
	  {                // for each element of the form...
	    gCurrElement = elArr[i];
	    if(elArr[i].required=="true")
	    {
			if (tagName.toUpperCase()=="SELECT")
			{
				if (value=="0")
				{
						focus();
						alert(L_Empty);
						style.filter="progid:DXImageTransform.Microsoft.Glow(color='red', Strength='3')";
						window.setTimeout("resetControl()",1500);
						return false;
				}	
			}
	        if(Trim(value)=='')
	        {
	            try
				{ 
					elArr[i].focus();
					alert(L_Empty);
					elArr[i].style.filter="progid:DXImageTransform.Microsoft.Glow(color='red', Strength='3')";
					window.setTimeout("resetControl()",1500);
					if (elArr[i].tagName.toUpperCase()!="SELECT")
					{
						elArr[i].select();
					}
				    return false;
				}
				catch(e)
				{
				 return true;
				}
			}
		}
	    if(Trim(value)!='')
	    { 
			var v = elArr[i].validator;   // get validator, if any
			if(!v) continue;              // no validator property, skip
			else
			{
			     if(PatternsDict[v].length > 0)
			     {
			        for(var j=0; j < PatternsDict[v].length; j++)
			        {
			           var TempPatternsDict = new RegExp(PatternsDict[v][j]);
			           var gotIt = TempPatternsDict.exec(Trim(value));
			           if(gotIt) break;
			        }
			        if(!gotIt)
			        {
			              alert(L_Invalid);
			              elArr[i].focus();
			              elArr[i].style.filter="progid:DXImageTransform.Microsoft.Glow(color='red', Strength='3')";
					      window.setTimeout("resetControl()",1500);
			              if (elArr[i].tagName.toUpperCase()!="SELECT")
							{
							elArr[i].select();
							}
			              return false;
			        }
			     }
			     else
			     {
					if (v==='isDate')
					{
  					 if (isNaN(Date.parse(Trim(value))))
  					 {
  					  alert(L_Invalid);
					  elArr[i].focus();
					  elArr[i].style.filter="progid:DXImageTransform.Microsoft.Glow(color='red', Strength='3')";
					  window.setTimeout("resetControl()",1500);
				      elArr[i].select();
					  return false;
  					 }
					}
					else
					{
						var thePat = PatternsDict[v];   // select the validating regular expr
						var gotIt = thePat.exec(Trim(value)); // run it on value of elArr[i]
						if(!gotIt)
						{
						   alert(L_Invalid);
						   elArr[i].focus();
						   elArr[i].style.filter="progid:DXImageTransform.Microsoft.Glow(color='red', Strength='3')";
					       window.setTimeout("resetControl()",1500);
						   elArr[i].select();
						   return false;
						}
					}	
			     }
			}
		}	
	  }
	  return true;
	}
  //The Trim function ensures that pattern matching occurs on the 
  //appropriate portion of the string the user entered 
  //by removing leading and trailing white spaces from the string. 
  function Trim(oldString)
    {
	   // is oldString made up completely of whitespace?
	   var emptyPattern = /^(\s*)$/;
	   if(emptyPattern.test(oldString))
	      // if so, return null string
	      return '';
	   else
	      // else, return non-whitespace characters from middle of oldString
	      return oldString.replace(/^\s*(.*\S+)\s*$/,"$1");
	}
	//Resets the marked unvalidate control style.
	function resetControl(sID)
	{
		gCurrElement.style.filter='none';
	}
	//Dispays the validation message with all the validation behaviour.
	//
	//Accepts:
	//	e_field - The field to set focus on after the message box.
	//	sMessage - The message text.
	function validationMessage(e_field, sMessage)
	{
		alert(sMessage);
		if (e_field)
		{
			gCurrElement = e_field;
			e_field.focus();
			e_field.style.filter="progid:DXImageTransform.Microsoft.Glow(color='red', Strength='3')";
			window.setTimeout("resetControl()",1500);
			e_field.select();
		}
	}
	
	//---------------------------------Old
	var bad_element=null //stores an element with invalid value.
	//if the form's submit button is pressed and bad_element is not null,
	//bad_element is colored red and the form is not submitted.
	
	function checkCard(myCard) 
	{
		var myTop=myCard.length
		
		if (myTop>=8) 
		{
			var myMod
			var mySum=0
			var myDivider=11
			if (myCard.length==8 || myCard.length==9)
				for (j=0; j<(myTop) ; j++)
					mySum=mySum+(j+1)*eval(myCard.substring(myTop-j-1,myTop-j))
			else if (myCard.length==15)
			{
				return true
			}
			else 
			{
				myDivider=5
				var myWeight=1
				for (j=0; j<(myTop) ; j++)
				{
					if (myWeight==1) {myWeight=2} else {myWeight=1}
						myAddition=eval(myWeight*myCard.substring(j,j+1))
					if (myAddition>9 && myAddition<20)
						myAddition=myAddition-9
					mySum=mySum+myAddition
			    }
		    }
		    myMod=mySum % myDivider
			if (myMod==0)
				return true
		}
		return false
	}

	function checkInput(CurrMode)
	{
		//Anat - the script here doesn't work well with netscape
		if (gIE){
	/*
		window.event.keyCode>47 && window.event.keyCode<58 - Numbers
		window.event.keyCode==46 - "."
		window.event.keyCode==44 - ","
		window.event.keyCode==47 - "/"
		window.event.keyCode==32 - " "
		window.event.keyCode==64 - "@"
		window.event.keyCode==95 - "_"
		window.event.keyCode==45 - "-"

		((window.event.keyCode>64 && window.event.keyCode<91) 
			|| (window.event.keyCode>95 && window.event.keyCode<123) - Enlish (Upper + Lower)
	*/
	
		if (CurrMode=='PositiveNumber')
		{
			if (window.event.keyCode>47 && window.event.keyCode<58){
				return true;
			}
			else
			{
				if (gIE){
				window.event.srcElement.style.background="#EFD000"
				if (document.all[window.event.srcElement.name + "_message"])
					document.all[window.event.srcElement.name + "_message"].innerHTML="הקשת תו לא חוקי"
				}
				else
				{
					alert("הקשת תו לא חוקי")
				}
				return false;
			}			
			
		}

		if (CurrMode=='Email')
		{
			if ((window.event.keyCode>=64 && window.event.keyCode<91) || (window.event.keyCode>=95 && window.event.keyCode<123)  || (window.event.keyCode==46) || (window.event.keyCode>47 && window.event.keyCode<58) || (window.event.keyCode==45)){
				return true;
			}
			else
			{
				if (gIE){
				window.event.srcElement.style.background="#EFD000"
				if (document.all[window.event.srcElement.name + "_message"])
					document.all[window.event.srcElement.name + "_message"].innerHTML="הקשת תו לא חוקי"
				}
				else
				{
					alert("הקשת תו לא חוקי")
				}
				return false;
			}			
			
		}

		if (CurrMode=='Numbers')
		{
			if ((window.event.keyCode>47 && window.event.keyCode<58) || window.event.keyCode==45)
			{
				return true;
			}
			else
			{
				if (gIE){
				window.event.srcElement.style.background="#EFD000"
				if (document.all[window.event.srcElement.name + "_message"])
					document.all[window.event.srcElement.name + "_message"].innerHTML="הקשת תו לא חוקי"
				}
				else
				{
					alert("הקשת תו לא חוקי")
				}
				return false;
			}			
			
		}
		if (CurrMode=='NumbersDigits')
		{
			if ((window.event.keyCode>47 && window.event.keyCode<58) || window.event.keyCode==46 || window.event.keyCode==45)
			{				
				return true;
			}
			else
			{
				if (gIE){
				window.event.srcElement.style.background="#EFD000"
				if (document.all[window.event.srcElement.name + "_message"])
					document.all[window.event.srcElement.name + "_message"].innerHTML="הקשת תו לא חוקי"
				}
				else
				{
					alert("הקשת תו לא חוקי")
				}
				return false;
			}			
			
		}
		if (CurrMode=='DateNow')
		{
			if ((window.event.keyCode>47 && window.event.keyCode<58) || window.event.keyCode==47)
			{				
				return true;
			}
			else
			{
				if (gIE){
				window.event.srcElement.style.background="#EFD000"
				if (document.all[window.event.srcElement.name + "_message"])
					document.all[window.event.srcElement.name + "_message"].innerHTML="הקשת תו לא חוקי"
				}
				else
				{
					alert("הקשת תו לא חוקי")
				}
				return false;
			}			
			
		}
		else if(CurrMode=='English')
		{
			if ((window.event.keyCode>64 && window.event.keyCode<91) || (window.event.keyCode>95 && window.event.keyCode<123)  || window.event.keyCode==46  || window.event.keyCode==44 || window.event.keyCode==32)		
			{
				return true;
			}
			else
			{
				if (gIE){
				window.event.srcElement.style.background="#EFD000"
				if (document.all[window.event.srcElement.name + "_message"])
					document.all[window.event.srcElement.name + "_message"].innerHTML="הקשת תו לא חוקי"
				}
				else
				{
					alert("הקשת תו לא חוקי")
				}
				return false;
			}	
		}
		else if(CurrMode=='Hebrew')
		{
			if ((window.event.keyCode>1487 && window.event.keyCode<1515) || window.event.keyCode==46 || window.event.keyCode==44 || window.event.keyCode==32)
			{
				return true;
			}
			else
			{
				if (gIE){
				window.event.srcElement.style.background="#EFD000"
				if (document.all[window.event.srcElement.name + "_message"])
					document.all[window.event.srcElement.name + "_message"].innerHTML="הקשת תו לא חוקי"
				}
				else
				{
					alert("הקשת תו לא חוקי")
				}
				return false;
			}	
		}
		else
		{
			return true;
		}		
	}
	}
	
	function checkValue(CurrMode,must)
	{

		//Anat - the script here doesn't work well with netscape
	/*
	if must is "1" and element's length is 0 as return is false
	*/
	var returnValue=false
	if (gIE){
	var elemValue=window.event.srcElement.value
	var elemSelected=window.event.srcElement.selectedIndex
		//checking if the entire field value is valid (looking at the big picture)
		//checkInput already checked every character seperately
		if (elemValue.length>0)
		{
			if (CurrMode=='Email'){
				if (elemValue.indexOf("@")>=1 && elemValue.indexOf("@")!=elemValue.length-1)
					returnValue = true
			}
			else
			if (CurrMode=='PositiveNumber'){
				if (elemValue>0)
					returnValue = true
			}
			else
			if (CurrMode=='PhoneNumber'){
				if (elemValue.indexOf("-")!=0 && elemValue.indexOf("-")!=elemValue.length-1)
					returnValue = true			
			}
			else
			if (CurrMode=='CreditCard')
			{
				if (checkCard(elemValue))
					returnValue = true			
			}
			else
			if (CurrMode=='SelectBox'){
				if (elemSelected != 0)
					returnValue = true			
			}

			else
				returnValue=true;
		}	

		if (must==0 && elemValue.length==0)
		{
			//this is not an obligatory field, & it was not filled
			returnValue=true;
		}
		if (returnValue)	
		{
		messagediv=document.all[window.event.srcElement.name + "_message"]
		if (messagediv)
			messagediv.style.display = "none"
		if (window.event.srcElement.style.background=="#EFD000")
			window.event.srcElement.style.background=""
		if (window.event.srcElement.style.background=="#EFD000")
			window.event.srcElement.style.background=""
		if (window.event.srcElement==bad_element){
			bad_element=null
			window.event.srcElement.style.background="";
			if (messagediv)
				messagediv.style.display = "none"
			}
		//even if before there were unvalid fields,
		//all is forgiven now.
		}
		else
		{
		bad_element = window.event.srcElement
		bad_element.style.background="#EFD000";
		messagediv=document.all[bad_element.name + "_message"]
		if (messagediv){
			messagediv.style.display = "block"
			if (elemValue.length!=0){
				messagediv.innerHTML = "התוכן שהקשת אינו מתאים להגדרת השדה"
				}
			else
				messagediv.innerHTML = "זהו שדה חובה"		
			}
		}
	}

	}
   
