/////////////////////////// Global Variables used in the script //////////////////////////////////////////
var fieldMap = new Object();
var flagFormSubmit = false;
var divErrorMessages = "";
var alertErrorMessage="";
var divFlag = false;
var elementValue='';
var currEle = '';
var errDisplayType = 'display'; /* set this to 'display' in case of vertically compressed form for on blur error */
/////////////////////////////////// Global Variables Declaration ends here ///////////////////////////////////////
/********************** Validation Of Form Elements Start ************************/

function g(id){
	return ( document.getElementById(id) ) ;
}

function validation(formObject)
{
	//alert('In Val');
	var noError = true;
	errorString = "";
	var mapedField = fieldMap[formObject.id];      //Get the mapField for the supplied form
	for(var i=0; i<formObject.elements.length; i++)
	{
		if(formObject.elements[i].id != undefined)
		{

			var fieldObj = formObject.elements[i];
			currEle = fieldObj ;
			elementValue=fieldObj.value;
			elementValue = elementValue.replace("<", "&lt;").replace(">", "&gt;");
			elementValue = elementValue.replace("eval\\((.*)\\)", "");
			elementValue = elementValue.replace("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\"");
			elementValue = elementValue.replace("script", "");
// 			//check does it has valid property then use validateFunction
			if( mapedField[fieldObj.id] != undefined && fieldObj.disabled==false && typeof(mapedField[fieldObj.id].validateFunction)=="object" && !checkValidationArray(mapedField[fieldObj.id].validateFunction,fieldObj,mapedField[fieldObj.id])) {
				noError=false;
			}
		}
	}
	if(!noError)
	{
		if(!divFlag)
			alert(alertErrorMessage);  // Display Javascript Messages.
	}
	if(flagFormSubmit){
		return noError;
	}
	else{
		return flagFormSubmit;
	}
}
/********************** Validation Of Form Elements End ************************/
/********************** function to hide  div *****************/
function hideDiv(element)
{
	('display' == errDisplayType)?g(element.div).style.display = "none":g(element.div).style.visibility = "hidden";

	if ( currEle.className.search('err') != -1 ) currEle.className = currEle.className.split('err')[0] ;

}
/********************** function to hide  div *****************/
/********************** function to display error message in div *****************/
function display(element)
{
	if(divErrorMessages)
	{
		if ( currEle.className.search('err') == -1 ) currEle.className += ' err' ;
		('display' == errDisplayType)?g(element.div).style.display = "block": g(element.div).style.visibility = "visible";

		//document.getElementById(element.div).style.visibility = "visible";
		g(element.div).innerHTML = divErrorMessages;
	}
}
/********************** function to display error message in div finished *****************/
/********************** function for deciding error display type...can be shown in alert/div **********************/
function displayError(element, errMsg)
{
	if(element.div != undefined && element.div != "")
	{

		if(errMsg != "")
		{
			//alert(element.div);
			divErrorMessages = errMsg;
			display(element);
			divFlag = true;
		}
		else
			hideDiv(element);
	}
	else
	{
		alertErrorMessage += errMsg + '\n';
		divFlag = false;
	}
}
/******************************** function of deciding error display type ends ************************************/
/******************* Check Array Of Validation Function Start***************/
function checkValidationArray(validateFunctionArray, element, fieldMapElement)
{

	for(var i=0; i<validateFunctionArray.length; i++)
	{

		if(validateFunctionArray[i].errMsg!=undefined)
		{
			//alert(validateFunctionArray[i].funName);
			if(!validateFunctionArray[i].funName(fieldMapElement, element,validateFunctionArray[i].errMsg))
			{
				return false;
			}
		}
		else
		{
			if(!validateFunctionArray[i].funName(fieldMapElement, element,''))
			{
				return false;
			}
		}
	}
	return true;
}
/******************* Check Array Of Validation Function End***************/
/******************* function for trimming string starts here ***********/
function trim(strValue)
{
	var j = strValue.length-1;
	var i = 0;
	while(strValue.charAt(i++) == ' ');
	while(strValue.charAt(j--) == ' ');
	return strValue.substr(--i, ++j-i+1);
}
/******************* function for trimming string starts here ***********/
function getError(defaultError,fieldMapElement,errMsg)
{
	if(errMsg=='')
	{
		if(fieldMapElement.label!= undefined)
		{
			errMsg=defaultError+" for "+fieldMapElement.label;
		}
		else
		{
			errMsg="Please define label property or error message in your javascript";
		}
	}
	return errMsg;
}
/******************* Select Options Validation Start ************/
function selectValidation(fieldMapElement, element,errMsg)
{

	if(elementValue == "0" || elementValue=='')
	{
		errMsg=getError("Please select atleast one value",fieldMapElement,errMsg);
		displayError(fieldMapElement, errMsg);
		return false;
	}
		displayError(fieldMapElement,'');
	return true;
}

function isBlank(fieldMapElement, element, errMsg)
{
	//alert('Is Blank fun');
	//alert(elementValue);
	if(element.disabled==false && elementValue == "")
	{
		errMsg=getError("Please enter value",fieldMapElement,errMsg);
		displayError(fieldMapElement,errMsg);
		return false;
	}
	displayError(fieldMapElement,'');
	return true;
}
/////////////////// function 2 check 4 atleast on option selected from group of radiobox or checkbox.
function atleastOneRadChk(fieldMapElement, element, errMsg)
{
	var noneFlag = true;

	if(fieldMapElement.others != undefined)
	{
		for(optionCount=0; optionCount<fieldMapElement.others.length; optionCount++)
		{
			if(g(fieldMapElement.others[optionCount]).checked!=false)
			{
				noneFlag = false;
				divFlag = true;
			}
		}
				if(noneFlag && (element.checked == false))
		{
			errMsg=getError("Please select option",fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
		else
		{
			displayError(fieldMapElement,'');
			divFlag = true;
			return true;
		}
	}
	else
	{
		errMsg="Please define other property for "+element.name+" in your javascript";
		displayError(fieldMapElement, errMsg);
		return false;
	}
	//alert('hi');
	displayError(fieldMapElement,'');
	return true;
}



//////////////// This function is used for entering/selecting atleast one value from the options given ///////////
function atleastOne(fieldMapElement, element, errMsg)
{
	var noneFlag = true;
	if(fieldMapElement.others != undefined)
	{
		for(optionCount = 0; optionCount<fieldMapElement.others.length; optionCount++)
		{
			if(g(fieldMapElement.others[optionCount]).value != "")
			{
				noneFlag = false;
				break;
			}
		}

		if(noneFlag && (elementValue == ""))
		{
			errMsg=getError("Please select option",fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
	}
	else
	{
		errMsg="Please define other property for "+element.name+" in your javascript";
		displayError(fieldMapElement, errMsg);
		return false;
	}
	displayError(fieldMapElement,'');
	return true;
}
/******************* Select Options Validation End *************/

function dateComparison(fieldMapElement, element, errMsg)
{
	var noneFlag = true;
	if(fieldMapElement.others != undefined)
	{
		var date1=fieldMapElement.others;
		date1='#'+date1;
		date1=$(date1).val();
		var date2 = trim(elementValue);
		date1 = date1.split('/');
		date2 = date2.split('/');
		var sDate = new Date(date1[2],date1[0]-1,date1[1]);
		var eDate = new Date(date2[2],date2[0]-1,date2[1]);

		if (sDate >= eDate)
		{
			errMsg=getError("Please enter valid dates",fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
	}
	displayError(fieldMapElement,'');
	return true;
}


function isNumeric(fieldMapElement, element, errMsg)
{
       var txtString = trim(elementValue);
       var charPos = txtString.search(/[^\d]/);
       if((txtString.length > 0) && (charPos >= 0))
       {
              errMsg=getError("Please enter only numbers",fieldMapElement,errMsg);
               displayError(fieldMapElement, errMsg);
               return false;
       }
	displayError(fieldMapElement,'')
       return true;
}

function perfectPass(fieldMapElement, element, errMsg)
{
	user=$('#txtUsrName').val();
	userPos=user.indexOf("@");
	user=user.substr(0,userPos);
	pwd=trim(elementValue);
	pwd=pwd.toLowerCase();

	if(pwd.search(/pin/)!=-1 || pwd.search(/storm/)!=-1 || pwd.search(/password/)!=-1)
	{
		errMsg=getError("Please enter valid password",fieldMapElement,errMsg);
               displayError(fieldMapElement, errMsg);
               return false;
	}
	else if(user !='')
	{
		if(pwd.search(user)!=-1)
		{
			errMsg=getError("Please enter valid password",fieldMapElement,errMsg);
               		displayError(fieldMapElement, errMsg);
               		return false;
		}
	}
	displayError(fieldMapElement,'')
       return true;
}

/******************* Email Address Validation Start***************/
function emailValidation(fieldMapElement, element, errMsg)
{
	if(elementValue!="")
	{
		var regex;
		var RFC = element.getAttribute("rfc");
		if(RFC){
		if(RFC.toUpperCase() == "yes" || RFC.toUpperCase() == "true"){

		// Pattern Suggested and provided by Fred Schenk <f.a.schenk [at] gmail [dot] com>
		regex = /^(([a-z0-9!#$%&*+-=?^_`{|}~][a-z0-9!#$%&*+-=?^_`{|}~.]*[a-z0-9!#$%&*+-=?^_`{|}~])|[a-z0-9!#$%&*+-?^_`{|}~]|("[^"]+"))[@]([-a-z0-9]+\.)+([a-z]{2}|com|net|edu|org|gov|mil|int|biz|pro|info|arpa|aero|coop|name|museum)$/
		}else{
		//regex = /^[A-Za-z]+(\.[\w]+)*@([\w\-]+\.)+([a-z]{2}|com|net|edu|org|gov|mil|int|biz|pro|info|arpa|aero|coop|name|museum)$/ ;
		regex = /^[A-Za-z]{1}[a-zA-Z0-9]*((\.|\_|-|\'){1}[a-zA-Z0-9]+)*@([a-zA-Z0-9]+([\-]{1}[a-zA-Z0-9]+)*[\.]{1})+[a-zA-Z]{2,4}$/;
		}
		}else{
		//regex = /^[A-Za-z]+(\.[\w]+)*@([\w\-]+\.)+([a-z]{2}|com|net|edu|org|gov|mil|int|biz|pro|info|arpa|aero|coop|name|museum)$/ ;
		regex = /^[0-9]*[A-Za-z]{1}[a-zA-Z0-9]*((\.|\_|-|\'){1}[a-zA-Z0-9]+)*@([a-zA-Z0-9]+([\-]{1}[a-zA-Z0-9]+)*[\.]{1})+[a-zA-Z]{2,4}$/;
		}


		if(!regex.test(elementValue))
		{

			errMsg=getError("Please enter valid value",fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;

		}
	}
	displayError(fieldMapElement,'');
	return true;
}
/******************* Email Address Validation End***************/



function minLength(fieldMapElement, element, errMsg)
{
	if(elementValue.length < fieldMapElement.min)
	{
		errMsg=getError("length should be atleast of "+fieldMapElement.min,fieldMapElement,errMsg);
		displayError(fieldMapElement, errMsg);
		return false;
	}
	displayError(fieldMapElement,'');
	return true;
}



function maxLength(fieldMapElement, element, errMsg)
{
	var txtString = trim(elementValue);
	if(txtString.length > fieldMapElement.max)
	{
		errMsg=getError("length should be atmost of "+fieldMapElement.min,fieldMapElement,errMsg);
		displayError(fieldMapElement, errMsg);
		return false;
	}
	displayError(fieldMapElement,'');
	return true;
}


function phoneValidation(fieldMapElement, element, errMsg)
{
	patternMatch=0;
	var txtString = trim(elementValue);
	if(txtString!='')
	{
		var country=fieldMapElement.country;
		var typeRegEx=availType(country);
		for(i in typeRegEx)
		{
		   // alert(typeRegEx[i]);
			if(typeRegEx[i].test(txtString))
				patternMatch=1;
		}
		if(patternMatch==0)
		{
			errMsg=getError("Please enter valid phone no.",fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
		//alert(patternMatch);
	}
	displayError(fieldMapElement,'');
	return true;

}
function availType(country)
{
	regex=new Array();
	switch(country)
	{
		case "in":
			regex[0]  = /^[0-9]{6,11}$/;
			// (+91)[022]111111
			regex[1]  = /^[\(][\+][0-9]{2}[\)][\[][0-9]{3,5}[\]][0-9]{6,10}$/;
			// +91022111111
			regex[2]  = /^[\+][0-9]{2}[0-9]{3,5}[0-9]{6,10}$/;
			// 91-111111
			regex[3]  = /^[0-9]{2}[\-][0-9]{6,10}$/;
			break;
		case "br": // Brazil
			$type[0] = /^([0-9]{2})?(\([0-9]{2})\)([0-9]{3}|[0-9]{4})-[0-9]{4}$/;
			break;

		case "fr": // France
			regex[0] = /^([0-9]{2})?(\([0-9]{2})\)([0-9]{3}|[0-9]{4})-[0-9]{4}$/;
			break;

		case "us": // US
			regex[0] = /^[\(][0-9]{3}[\)][0-9]{3}[\-][0-9]{4}$/;
			regex[1] = /^[0-9]{3}[\-][0-9]{3}[\-][0-9]{4}$/;
			break;

		case "sw": // Swedish
			regex[0] = /^(([+][0-9]{2}[ ][1-9][0-9]{0,2}[ ])|([0][0-9]{1,3}[-]))(([0-9]{2}([ ][0-9]{2}){2})|([0-9]{3}([ ][0-9]{3})*([ ][0-9]{2})+))$/;
			break;
		case "all": // whole world
		regex[0]=/^[+]?[0-9]{5,15}$/;
		break;
		default:
			regex[0]  = /^[0-9]{6,11}$/;
			// (+91)[022]111111
			regex[1]  = /^[\(][\+][0-9]{2}[\)][\[][0-9]{3,5}[\]][0-9]{6,10}$/;
			// +91022111111
			regex[2]  = /^[\+][0-9]{2}[0-9]{3,5}[0-9]{6,10}$/;
			// 91-111111
			regex[3]  = /^[0-9]{2}[\-][0-9]{6,10}$/;
			break;
	}
	return regex;
}
/***************** Confirm Password Validation ********************/
function confirmPassword(fieldMapElement, element, errMsg)
{
	if(elementValue != $('#txtPassword').val())
	{
		errMsg=getError("confirm password is not matched"+fieldMapElement.min,fieldMapElement,errMsg);
		displayError(fieldMapElement, errMsg);
		return false;
	}
	displayError(fieldMapElement,'');
	return true;
}
/************************* confirm Password Validation Ends Here ***********/



/****************** Range Validation Starts ******************/
function rangeValidation(fieldMapElement, element, errMsg)
{

	var regex = /^\d*(\.\d{1,2})?$/;

	if(!regex.test(elementValue))
	{
		//error="Please enter the " +errMsg+" without commas in 999999 format";
		displayError(element, errMsg);
		return false;
	}

	if(elementValue <fieldMapElement.min || elementValue >fieldMapElement.max)
	{
		errMsg=getError("length should be atleast of "+fieldMapElement.min+" and atmot of "+fieldMapElement.max,fieldMapElement,errMsg);
		displayError(fieldMapElement, errMsg);
		return false;
	}
	displayError(fieldMapElement,'');
	return true;

}
/*************** Range Validation Ends here ***************/



/*************** Zip Validation Start here ****************/
function zipValidation(fieldMapElement, element, errMsg)
{
	var theZip = trim(elementValue);
	if(theZip != "")
	{
		var regex;
		var country = element.getAttribute("country");
		if(country)
		{
			switch(country.toUpperCase())
			{
				case "BE":regex = /^[1-9]{1}[0-9]{3}$/;break;
				case "BR":regex = /^\d{5}-\d{3}$|^\d{8}$/;break;
				case "CA":regex = /^[a-zA-Z][0-9][a-zA-Z]\s?[0-9][a-zA-Z][0-9]$/;break;
				case "DU":regex = /^[0-9]{4}\s{0,1}[a-zA-Z]{2}$/;break;
				case "IN":regex = /^[\d]{6}$/;break;
				case "US":regex = /^[0-9]{5}\-[0-9]{4}$/;break;
				case "UK":regex = /^[A-Za-z]{1,2}[0-9A-Za-z]{1,2}[ ]?[0-9]{0,1}[A-Za-z]{2}$/;break;

				/* Add more country here */
				//	case "COUNTRY CODE":regex = /pattern/;break;

				default:regex = /^[\d]{5,6}$/;
			}
		}
		else
		{
			regex = /^[\d]{5,6}$/;
		}

		if(!regex.test(theZip))
		{
			errMsg=getError("Please enter valid value",fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
	}
	displayError(fieldMapElement,'');
	return true;
}
/******************* Zip/Pin Code Validation End***************/

function nameValidation(fieldMapElement, element, errMsg)
{
	var theName = trim(elementValue);
	if(theName.length > 0)
	{
		var regex = /^[a-zA-Z\s\.]+$/;
		if(!regex.test(theName))
		{
			errMsg=getError("Please enter value"+fieldMapElement.min+" and atmost of "+fieldMapElement.max,fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
	}
	displayError(fieldMapElement,'');
	return true;
}
function bloodGrp(fieldMapElement, element, errMsg)
{
	//`(errMsg+"dsk");
	var theName = trim(elementValue);
	if(theName.length > 0)
	{
		var regex = /^[A]?[B]?[O]?[\+\-]{1}$/;
		if(!regex.test(theName))
		{
			errMsg=getError("Please enter value"+fieldMapElement.min+" and atmost of "+fieldMapElement.max,fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
	}
	displayError(fieldMapElement,'');
	return true;
}
function alphaNum(fieldMapElement, element, errMsg)
{
	var theVal = trim(elementValue);
	if(theVal.length > 0)
	{
		var regex = /^[A-za-z0-9]+$/;
		if(!regex.test(theVal))
		{
			errMsg=getError("Please enter value"+fieldMapElement.min+" and atmost of "+fieldMapElement.max,fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
	}
	displayError(fieldMapElement,'');
	return true;
}
function floatNum(fieldMapElement, element, errMsg)
{
	//alert(errMsg+"dsk");
	var theVal = trim(elementValue);
	if(theVal.length > 0)
	{
		var regex = /^([1-9]{0,1})([0-9]{1})(\.[0-9])?$/;
		if(!regex.test(theVal))
		{
			errMsg=getError("Please enter value"+fieldMapElement.min+" and atmost of "+fieldMapElement.max,fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
	}
	displayError(fieldMapElement,'');
	return true;
}
function aggregate(fieldMapElement, element, errMsg)
{

	var theVal = trim(elementValue);
	if(theVal.length > 0)
	{
		var regex = /^[1-9][0-9]{1}([\.][0-9]{1,2})?$/;
		if(!regex.test(theVal))
		{
			errMsg=getError("Please enter value"+fieldMapElement.min+" and atmost of "+fieldMapElement.max,fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
	}
	displayError(fieldMapElement,'');
	return true;
}
function salary(fieldMapElement, element, errMsg)
{

	var theVal = trim(elementValue);
	if(theVal.length > 0)
	{
		var regex = /^[1-9]{1}[0-9]{3,6}$/;
		if(!regex.test(theVal))
		{
			errMsg=getError("Please enter value"+fieldMapElement.min+" and atmost of "+fieldMapElement.max,fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
	}
	displayError(fieldMapElement,'');
	return true;
}
function bankAccount(fieldMapElement, element, errMsg)
{
	//alert(errMsg+"dsk");
	var theVal = trim(elementValue);
	if(theVal.length > 0)
	{
		var regex = /^[0-9]{12}$/;
		if(!regex.test(theVal))
		{
			errMsg=getError("Please enter value"+fieldMapElement.min+" and atmost of "+fieldMapElement.max,fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
	}
	displayError(fieldMapElement,'');
	return true;
}
function panCard(fieldMapElement, element, errMsg)
{
	//alert(errMsg+"dsk");
	var theVal = trim(elementValue);
	if(theVal.length > 0)
	{
		var regex = /^[A-Z]{5}[0-9]{4}[A-Z]{1}$/;
		if(!regex.test(theVal))
		{
			errMsg=getError("Please enter value"+fieldMapElement.min+" and atmost of "+fieldMapElement.max,fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
	}
	displayError(fieldMapElement,'');
	return true;
}
function ssnValidation(fieldMapElement, element, errMsg)
{
	//alert(errMsg+"dsk");
	var theVal = trim(elementValue);
	if(theVal.length > 0)
	{
		var regex = /^[A-Z]{4}[0-9]{4}[A-Z]{1}$/;
		if(!regex.test(theVal))
		{
			errMsg=getError("Please enter value"+fieldMapElement.min+" and atmost of "+fieldMapElement.max,fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
	}
	displayError(fieldMapElement,'');
	return true;
}
/////////////////username validation

function userName(fieldMapElement, element, errMsg)
{
	//alert(errMsg+"dsk");
	var theUserName = trim(elementValue);
	if(theUserName.length > 0)
	{
		var regex = /^[A-za-z0-9\-\_\s\.]+$/;
		if(!regex.test(theUserName))
		{
			errMsg=getError("Please enter value"+fieldMapElement.min+" and atmost of "+fieldMapElement.max,fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
	}
	displayError(fieldMapElement,'');
	return true;
}


function address(fieldMapElement, element, errMsg)
{
	//alert(errMsg+"dsk");
	var theAdd = trim(elementValue);
	if(theAdd.length > 0)
	{
		var regex = /^[a-zA-Z0-9]+.*$/;
		if(!regex.test(theAdd))
		{
			errMsg=getError("Please enter valid "+fieldMapElement.max,fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
	}
	displayError(fieldMapElement,'');
	return true;
}
function interest(fieldMapElement, element, errMsg)
{
	//alert(errMsg+"dsk");
	var theAdd = trim(elementValue);
	if(theAdd.length > 0)
	{
		var regex = /^[a-zA-Z0-9]+.*$/;
		if(!regex.test(theAdd))
		{
			errMsg=getError("Please enter valid "+fieldMapElement.max,fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
	}
	displayError(fieldMapElement,'');
	return true;
}
/******************** Mobile Number Validation ****************/
function mobilenumberValidation(fieldMapElement,element,errMsg)
{

	var regex2 = /^[9][0-9]{9}$/;
	if(fieldMapElement.isNRI=='Y' && fieldMapElement.isNRI!=undefined)
	{
		regex2 = /^[\d]{1,10}$/;
	}

	if(!regex2.test(elementValue) && elementValue!='')
	{
		errMsg=getError("Please enter valid value",fieldMapElement,errMsg);
		displayError(fieldMapElement, errMsg);
		return false;
	}
	displayError(fieldMapElement,'');
	return true;
}
function age(fieldMapElement, element, errMsg)
{
	var theAdd = trim(elementValue);
	if(theAdd.length > 0)
	{
		var regex = /^[1-9]{1}[0-9]{1}$/;
		if(!regex.test(theAdd))
		{
			errMsg=getError("Please enter valid "+fieldMapElement.max,fieldMapElement,errMsg);
			displayError(fieldMapElement, errMsg);
			return false;
		}
	}
	displayError(fieldMapElement,'');
	return true;
}
/****************** Mobile Number Validation ends ************/




/******************* get key event keycode *******************/
function getKeyCode(e)
{
   if (window.event)
   	return window.event.keyCode;
   else
    	if (e)
      		return e.which;
    	else
      		return null;
}
/***************** get key event keycode ends ***********/
/****************** Key Restriction function Start here *************/
function keyRestrict(e, validchars)
{
	var key='', keychar='';
	key = getKeyCode(e);
   	if (key == null)
		return true;

	keychar = String.fromCharCode(key);
   	keychar = keychar.toLowerCase();
   	validchars = validchars.toLowerCase();

   	if (validchars.indexOf(keychar) != -1)
   		return true;

    	if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
    		return true;

    	return false;
}
/****************** Key Restriction function end here *************/