﻿// JScript File
//For validation of form fields

var gNS = (document.layers)? true:false
var gIE = (document.all)? true:false
var gCurrElement;

//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.isTimeShort = /^([0-1][0-9]|[2][0-3]):([0-5][0-9])$/;
// matches 5:04 or 12:34 

//PatternsDict.isDate = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
  // 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.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

var CharCheck = new Object();
CharCheck.Numbers = /^[0-9]*$/;
CharCheck.NumbersDigits = /^[0-9.]*$/;
CharCheck.English = /^[\sa-zA-Z]*$/;
CharCheck.EnglishNumbers = /^[\sa-zA-Z0-9]*$/;
CharCheck.EnglishName = /^[\sa-zA-Z.\'\"\-]*$/;
CharCheck.EnglishAddress = /^[\sa-zA-Z0-9.\'\#\"\-]*$/;
CharCheck.PhoneNumbers = /^[\s0-9\(\)\.\-]*$/;
CharCheck.isEmail =  /^[a-zA-Z0-9\@\.\-\_\/\:]*$/;
CharCheck.Time = /^[0-9:]*$/;
CharCheck.Date = /^[0-9\/]*$/;
CharCheck.Hebrew = /^[\s0-9\u05D0-\u05EA]*$/;

function CheckInput1(CurrMode)
{
	if(CharCheck[CurrMode].test(String.fromCharCode(window.event.keyCode)))  
	{
	    return true;
	}    
	else
	{
    	return false; 
    }	
}  

///============== Ofer - validate fields input 
var valid = new Object();
valid.isDigit =  /^[0-9\.]*$/;
valid.isChars =  /^[\@\`\!#$%^&\*\?]*$/;
valid.isDigitChars =  /^[a-zA-Z0-9]*$/;
valid.isPhone =  /^[+]?[0-9.\-\/]*$/;
 
valid.isCharDigits =  /^[\@\`\!\#\$\%\^\&\*\?\;\_\~]*$/;
valid.isCharDigits1 =  /^[\`\^\&\;\_\~]*$/;
valid.isEmail =  /^[a-zA-Z0-9\@\.\-\_]*$/;
valid.isDate =  /^[0-9\/]*$/;
valid.isTime =  /^[0-9:]*$/;
valid.isCar =  /^[0-9-]*$/;
valid.isIP =  /^[0-9\.]*$/;
valid.isCc =  /^[\@\`\!\#\$\%\^\&\*\?\~]*$/;
valid.isSubject =  /^[\@\`\#$%^&\*]*$/;

function CheckInput(vCheck)
{
  switch(vCheck)  
  {
   case 0:
      if(!valid.isDigit.test(String.fromCharCode(window.event.keyCode)))
        return false;
        break;
   case 1:
      if(valid.isChars.test(String.fromCharCode(window.event.keyCode)))
        return false;
        break;
   case 2:
      if(!valid.isPhone.test(String.fromCharCode(window.event.keyCode)))
        return false;
        break;
   case 3:
      if(valid.isCharDigits.test(String.fromCharCode(window.event.keyCode)))
        return false;
        break;
   case 4:
      if(!valid.isDigitChars.test(String.fromCharCode(window.event.keyCode)))
        return false;
        break;
   case 5:
      if(!valid.isEmail.test(String.fromCharCode(window.event.keyCode)))
        return false;
        break;
   case 6:
      if(!valid.isDate.test(String.fromCharCode(window.event.keyCode)))
        return false;
        break;
   case 7:
      if(!valid.isTime.test(String.fromCharCode(window.event.keyCode)))
        return false;
        break;
   case 8:
      if(!valid.isCar.test(String.fromCharCode(window.event.keyCode)))
        return false;
        break;
   case 9:
      if(!valid.isIP.test(String.fromCharCode(window.event.keyCode)))
        return false;
        break;
   case 10:
      if(valid.isCc.test(String.fromCharCode(window.event.keyCode)))
        return false;
        break;
   case 11:
      if(!valid.isDigitChars.test(String.fromCharCode(window.event.keyCode)) && window.event.keyCode != 32)
        return false;
        break;
   case 12:
      if(valid.isCharDigits1.test(String.fromCharCode(window.event.keyCode)))
        return false;
        break;
   case 13:
      if(valid.isSubject.test(String.fromCharCode(window.event.keyCode)))
        return false;
        break;
  }      
  return true;           
}
//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++
		}
	}
}

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");
}