﻿// JScript File
<!--
	// This file contains the data validation JavaScript functions
	// It is included in the HTML pages with forms that need these
	// data validation routines.


// DEFINE VARIABLES

// whitespace characters
var whitespace = " \t\n\r";



/****************************************************************/

// PURPOSE:  Check to see if the string passed in is a valid time.
//	A valid time is defined as a string which is postfixed with either
//  "PM" or "AM".  Next it checks to see if there is a colon in the
//  string.  If there is, it makes sure that at least one digit preceeds
//  it and two proceed it.

	function IsTime(strTime)
	{
		var strTestTime = new String(strTime);
		strTestTime.toUpperCase();

		var bolTime = false;

		if (strTestTime.indexOf("PM",1) != -1 || strTestTime.indexOf("AM",1))
			bolTime = true;

		if (bolTime && strTestTime.indexOf(":",0) == 0)
			bolTime = false;

		var nColonPlace = strTestTime.indexOf(":",1);
		if (bolTime && ((parseInt(nColonPlace) + 5) < (strTestTime.length - 1) || (parseInt(nColonPlace) + 4) > (strTestTime.length - 1)))
			bolTime = false;


		return bolTime;
	}

/****************************************************************/
function trim(stringToTrim) 
{
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function replaceAll (s, fromStr, toStr)
{
	var new_s = s;
	for (i = 0; i < 100 && new_s.indexOf (fromStr) != -1; i++)
	{
		new_s = new_s.replace (fromStr, toStr);
	}
	return new_s;
}

/****************************************************************/

/* PURPOSE:  Since we are using the single tick mark as the
	string delimiter to construct our SQL queries, a string with
	a tick mark in it will cause a SQL error.  Therefore we replace
	all "'" with "''", which eliminates the possibility of a SQL error.
*/

function sqlSafe (s)
{
	var new_s = s;
	new_s = replaceAll (new_s, "'", "|");
	new_s = replaceAll (new_s, "|", "''");
	new_s = replaceAll (new_s, "\"", "|");
	new_s = replaceAll (new_s, "|", "''");
	return new_s;
}

/****************************************************************/

function makeSafe (i)
{
	i.value = sqlSafe (i.value);
}

/****************************************************************/

// Check whether string s is empty.

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

String.prototype.trim = function() 
{
  return( this.replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,'$1') ); 
}
/****************************************************************/

// Returns true if string s is empty or 
// whitespace characters only.

function isWhitespace (s)

{   var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.
   /*var objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
   if(objRegExp.test(s)) {
	   alert("inRegEXP");
   }
*/
    for (i = 0; i < s.length; i++)
    {   
	// Check that current character isn't whitespace.
	var c = s.charAt(i);

	if (whitespace.indexOf(c) == -1) return false;
	/*if ((c = ' ') && (c = '\n') && (c = '\t'))
	{
		alert("in");
	}*/
	if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
    }

    // All characters are whitespace.
    return true;
}
function isWhitespaceCon(s)

{  
	var m="";
    for (i = 0; i < s.length; i++)
    {  
		var c = s.charAt(i);
		if ((c != ' '))
		{
			m=m+c
		}
	}
	return m;
}
/****************************************************************/

// isEmail (STRING s [, BOOLEAN emptyOK])
// 
// Email address must be of form a@b.c ... in other words:
// * there must be at least one character before the @
// * there must be at least one character before and after the .
// * the characters @ and . are both required
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.

function isEmail (s)
{   if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);
   
    // is s whitespace?
    if (isWhitespace(s)) return false;
    
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}

/****************************************************************/

// Checks to see if a required field is email.  If it is, a warning
// message is displayed...

function ForceEmail(objField, FieldName)
{
	var strField = new String(objField.value);
	//alert(isEmail(strField));
	if (!isEmail(strField)) {
		//alert("You need to enter correct Email information for " + FieldName);
		alert("Please enter correct Email information for " + FieldName);
		objField.focus();
		objField.select();
		return false;
	}

	return true;
}
		
/****************************************************************/

/****************************************************************/

// Checks to see if a required combo box is selected.  If it is, a warning
// message is displayed...

function ForceSelect(objField, FieldName)
{
	var strField = new String(objField.selectedIndex);
	//alert(isEmail(strField));
	if (strField==0) {
		//alert("You need to Select Value for " + FieldName);
		alert("Please Select Value for " + FieldName);
		objField.focus();
		//objField.select();
		return false;
	}

	return true;
}
		

/****************************************************************/

// Checks to see if a required field is blank.  If it is, a warning
// message is displayed...

function ForceEntry(objField, FieldName)
{
	//alert(objField.value);
	var strField = new String(objField.value);
	if (isWhitespace(strField)) {
		//alert("You need to enter information for " + FieldName);
		alert("Please enter value for " + FieldName);
		objField.focus();
		//objField.select();
		return false;
	}

	return true;
}

function ForceEntryWithMessage(objField, FieldName,ErrMsg)
{
	var strField = new String(objField.value);
	if (isWhitespace(strField)) {
		alert(ErrMsg);
		objField.focus();
		return false;
	}

	return true;
}
/****************************************************************/

// Returns true if the string passed in is a valid number
//  (no alpha characters), else it displays an error message

function ForceNumber(objField, FieldName)
{
	var strField = new String(objField.value);
	
	if (isWhitespace(strField)) return true;

	var i = 0;

	for (i = 0; i < strField.length; i++)
		if (strField.charAt(i) < '0' || strField.charAt(i) > '9') {
			alert(FieldName + " must be a valid numeric entry.  Please do not use commas or dollar signs or any non-numeric symbols.");
			objField.focus();
			return false;
		}

	return true;
}

/****************************************************************/

// Returns true if the string passed in is a valid money
//  (no alpha characters except a decimal place), 
//   else it displays an error message

function ForceMoney(objField, FieldName)
{
	var strField = new String(objField.value);
	
	if (isWhitespace(strField)) return true;

	var i = 0;

	for (i = 0; i < strField.length; i++)
		if ((strField.charAt(i) < '0' || strField.charAt(i) > '9') && (strField.charAt(i) != '.')) {
			alert(FieldName + " must be a valid numeric entry.  Please do not use commas or dollar signs or any non-numeric symbols.");
			objField.focus();
			return false;
		}

	return true;
}


/****************************************************************/

// Right trims the string...  Useful for SQL datatypes of CHAR

function RTrim(strTrim)
{
	var str = new String(strTrim);
	var i = 0;
	var c = "";
	var endpos = 0

	for (i = str.length; i >= 0 && endpos == 0; i = i - 1) {
		c = str.charAt(i);
		if (whitespace.indexOf(c) == -1)
			endpos = i;
	}

	return str.substring(0,endpos+1);
}

/****************************************************************/

/* PURPOSE:  Returns true if the string is a valid date number.
	A method is passed in (1 = month, 2 = day).  If the string is
	nonnumeric, false is passed back.  If the day in the date string
	is greater than 31, false is returned.  If the month is greater
	than 12, an error is returned.
*/

function isDateNumber(strNum,method)
{
	var str = new String(strNum);
	var i = 0;

	if (isNaN(parseInt(str)) || parseInt(str) < 0) return false;

	if (method == 2)
		if (parseInt(str) > 31)
			return false;
	if (method == 1)
		if (parseInt(str) > 12)
			return false;

	for (i = 0; i < str.length; i++)
		if (str.charAt(i) < '0' || str.charAt(i) > '9')
			return false;


	return true;
}

/****************************************************************/

// Displays an alert box with the passed in string...

function PromptErrorMsg(Field,strError)
{
	alert("You have entered an invalid date for " + strError + ".  \n \nPlease make sure your date format is in MM/DD/YY format.\n");
	Field.focus();
}

/****************************************************************/

/* PURPOSE: Checks to see if the string is a valid date.  A valid
	date is defined as any of the following:

		MM/DD/YY, MM/DD/YYYY, M/D/YY, M/D/YYYY,
		MM-DD-YY, MM-DD-YYYY, M-D-YY, M-D-YYYY
		intDateOptional=0 if u need to check date for white space also or else 1 
*/

function ForceDate(strDate,strField,intDateOptional)
{
	var str = new String(strDate.value);

	if (isWhitespace(str) && intDateOptional==1) {
		return true;
		// if the field is empty, just return true...
	}

	var i = 0, count = str.length, j = 0;
	while ((str.charAt(i) != "/" && str.charAt(i) != "-") && i < count)
		i++;

	if (i == count || i > 2) {
		PromptErrorMsg(strDate,strField);
		return false;
	}

	var addOne = false;
	if (i == 2) addOne = true;

	if (!isDateNumber(str.substring(0,i),1)) {
		PromptErrorMsg(strDate,strField);
		return false;
	}

	j = i+1;
	i = 0;

	while ((str.charAt(i+j) != "/" && str.charAt(j+i) != "-") && i+j < count)
		i++;

	if (i+j == count || i > 2) {
		PromptErrorMsg(strDate,strField);
		return false;
	}

	if (!isDateNumber(str.substring(j,i+j),2)) {
		PromptErrorMsg(strDate,strField);
		return false;
	}

	j = i+3;
	i = 0;

	if (addOne) j++;

	while (i+j < count)
		i++;


	if (i != 2 && i != 4) {
		PromptErrorMsg(strDate,strField);
		return false;
	}

	if (!isDateNumber(str.substring(j,i+j),3)) {
		PromptErrorMsg(strDate,strField);
		return false;
	}

	return true;
}

/****************************************************************/

// This function determines if the string passed in is a valid
// US zip code.  It accepts either ##### or #####-####.  If the
// string is valid, it returns true, else false.

function isZipcode(strZip)
{
	var s = new String(strZip);

	if (s.length != 5 && s.length != 10)
		// inappropriate length
		return false;


	for (var i=0; i < s.length; i++)
		if ((s.charAt(i) < '0' || s.charAt(s) > '9') && s.charAt(i) != '-')
			return false;

	return true;
}

/****************************************************************/

//Function to Force the ZipCode
function ForceZip(objField, FieldName)
{
	
	var strField = new String(objField.value);
	//alert(strField);
	if (!isZipcode(strField)) {
		//alert("You need to Correct ZipCode for " + FieldName);
		alert("Please Correct ZipCode for " + FieldName);
		objField.focus();
		objField.select();
		return false;
	}
	return true;
}


// This function ensures that a field is less than or equal to the
// Length passed in.  You must call this function with the element
// name in your form (for example: "ForceLength(document.forms[0].txtElement)"
// as opposed to "ForceLength(document.forms[0].txtElement.value)"
// If the field's value is too large, an error message is displayed
// and false is returned, else true is returned.

function ForceLength(objField, nLength, strWarning)
{
	var strField = new String(objField.value);

	if (strField.length > nLength) {
		alert(strWarning);
		return false;
	} else
		return true;
}

/***************************************
****************Function to validate phone number US
**************************************************************************/
function isValidUSPhone(strfield)
{
var s = new String(strfield);
phoneNumber = /^\(?\d{3}\)?\s|-\d{3}-\d{4}$/;
var gotIt = phoneNumber.exec(s); 
return gotIt;
}
//Function to Force the ZipCode
function ForceUSPhone(objField, FieldName)
{
	
//	var strField = new String(objField.value);
var strField = '5263718353'
	//alert(strField);
	if (!isValidUSPhone(strField)) {
		//alert("You need to Correct US Phone Number for " + FieldName);
		alert("Please Correct US Phone Number for " + FieldName);
		objField.focus();
		objField.select();
		return false;
	}
	return true;
}

function recalculateage(objField)
{
<!-- Fecha de cumpleaños!-->
//birthTime = new Date("July 12, 1977 16:15:00 GMT-0500");

birthTime = new Date(eval(objField).value);

if(birthTime!="NaN")
{
	todaysTime = new Date();
	todaysYear = todaysTime.getYear();
	if (todaysYear < 2000) todaysYear += 1900;
	todaysMonth = todaysTime.getMonth();
	todaysDate = todaysTime.getDate();
	todaysHour = todaysTime.getHours();
	todaysMinute = todaysTime.getMinutes();
	todaysSecond = todaysTime.getSeconds();
	birthYear = birthTime.getYear();
	if (birthYear < 2000) birthYear += 1900;
	birthMonth = birthTime.getMonth();
	birthDate = birthTime.getDate();
	birthHour = birthTime.getHours();
	birthMinute = birthTime.getMinutes();
	birthSecond = birthTime.getSeconds();
	
	var monarr = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	
	if (((todaysYear % 4 == 0) && (todaysYear % 100 != 0)) || (todaysYear % 400 == 0)) monarr[1] = "29";
	
	countMonth = monarr[todaysTime.getMonth()];
	
	<!-- Hacer Las Cuentas
	if (todaysMinute > birthMinute) {
	diffMinute = todaysMinute - birthMinute;
	calcHour = 0;
	}
	else {
	diffMinute = todaysMinute + 60 - birthMinute;
	calcHour = -1;
	}
	if (todaysHour > birthHour) {
	diffHour = todaysHour - birthHour + calcHour;
	calcDate = 0;
	}
	else {
	diffHour = todaysHour + 24 - birthHour + calcHour;
	calcDate = -1;
	}
	if (todaysDate > birthDate) {
	diffDate = todaysDate - birthDate + calcDate;
	calcMonth = 0;
	}
	else {
	diffDate = todaysDate + countMonth - birthDate + calcDate;
	calcMonth = -1;
	}
	if (todaysMonth > birthMonth) {
	diffMonth = todaysMonth - birthMonth + calcMonth;
	calcYear = 0;
	}
	else {
	diffMonth = todaysMonth + 12 - birthMonth + calcMonth;
	calcYear = -1;
	}
	diffYear = todaysYear - birthYear + calcYear;
	
	if (diffMinute == 60) { diffMinute = 0; diffHour ++; }
	if (diffHour == 24) { diffHour = 0; diffDate ++; }
	if (diffDate == countMonth) { diffDate = 0; diffMonth ++; }
	if (diffMonth == 12) { diffMonth = 0; diffYear ++; }
	
	age = diffYear;
	//+ ' Years, ' + diffMonth 
	//+ ' Months, ' 
	return age;
	/*+ diffDate + ' Days, ' + diffHour + ' Hours, ' 
	+ diffMinute + ' Minutes, ' + todaysSecond + ' Seconds Old';
	
	document.write('<center>');
	document.write('Current Time: ' + todaysTime + '<br>');
	document.write('Birthday: ' + birthTime + '<br>');
	document.write('Age: ' + age + '<br>');
	document.write('</center>');*/
	// End -->
}
else
{
	var nage="";
	return nage;
}
}




function fnGetAge(objField) { 
 
var dateString=eval(objField).value;
if (dateString=="")
{
	return 0;
}

//alert(dateString);
var dateArr=dateString.split("/");
//var dob = new Date(dateString.substring(6,10),dateString.substring(3,5)-1,dateString.substring(0,2),0,0,0);
var dob = new Date(dateArr[2],dateArr[0],dateArr[1],0,0,0);


var now = new Date();
var today = new Date(now.getYear(),now.getMonth(),now.getDate(),0,0,0);

var dobmonth=dateArr[0];
var todaymonth=now.getMonth();

//var date1 = new Date(97, 8, 17, 11, 45, 2);
//var date2 = new Date(97, 12, 31, 18, 0, 0);

var milliseconds1 = dob.getTime();
var milliseconds2 = today.getTime();

var difference = milliseconds2 - milliseconds1;

/*document.write('difference in milliseconds = ' + difference + '<BR>');
document.write('difference in seconds = ' + difference/1000 + '<BR>');
document.write('difference in minutes = ' + difference/1000/60 + '<BR>');
document.write('difference in hours = ' + difference/1000/60/60 + '<BR>');
document.write('difference in days = ' + difference/1000/60/60/24 + '<BR>');*/
var one_year=1000*60*60*24*30*12;

if(todaymonth>=dobmonth)
one_year=Math.floor(difference/one_year);
else
one_year=parseInt(difference/one_year-1);
//one_year=Math.ceil(difference/one_year);
//alert(one_year);
/*
var daysDifference = Math.floor(difference/1000/60/60/24);
difference = difference - daysDifference*1000*60*60*24

var hoursDifference = Math.floor(difference/1000/60/60);
difference = difference - hoursDifference*1000*60*60
var minutesDifference = Math.floor(difference/1000/60);
difference = difference - minutesDifference*1000*60
var secondsDifference = Math.floor(difference/1000);
*/
//document.write('difference = ' + daysDifference + ' day/s ' + hoursDifference + ' hour/s ' + minutesDifference + ' minute/s ' + secondsDifference + ' second/s ');
//alert(one_year);
return one_year; // form should never submit, returns false 
} 
/*
***************************Function for the Credit Card Checking*****************
**********************************************************************************
*/

//how to use
/*call 
CheckCardNumber(document.forms[0].CardNumber,document.forms[0].CardType,document.forms[0].ExpYear,document.forms[0].ExpMon)"
Here 
arg1- Cardnumber from form field
arg2-CardType(DropDown)
arg3-Year (textfield)
arg4- month (dropdown)
*/
<!-- 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(frmCCNo,frmCCType,sYear,sMonth) {
var tmpyear;
//alert(sYear);
//alert(sMonth);
if (frmCCNo.value.length == 0) {
alert("Please enter a Card Number.");
frmCCNo.focus();
return;
}
if (sYear.length == 0) {
alert("Please enter the Expiration Year.");
frmYear.focus();
return;
}
if (sYear > 2004)
tmpyear = "19" + sYear;
else if (sYear< 2021)
tmpyear = "20" + sYear;
else {
alert("The Expiration Year is not valid.");
return;
}
//tmpmonth = frmMonth.options[frmMonth.selectedIndex].value;
tmpmonth = sMonth;
// 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;
}
card = frmCCType.options[frmCCType.selectedIndex].value;
if (card.indexOf()<0)
{
	if (card=="AMEX" || card=="AmEx" || card=="amex" || card=="Amex")
	card="AmEx";
	card = card + "Card";
	//alert(card);
}
//card = "VisaCard"
var retval = eval(card + ".checkCardNumber(\"" + frmCCNo.value + "\", " + tmpyear + ", " + tmpmonth + ");");
//alert(retval);
cardname = "";
if (retval)
return true;
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(frmCCNo.value, tmpyear, tmpmonth)) {
cardname = Cards[n].getCardType();
break;
   }
}
if (cardname.length > 0) {
alert("This looks like a " + cardname + " number, not a " + card + " number.");
return false;
}
else {
alert("This card number is not valid.");
return false;
      }
   }
}
/*************************************************************************\
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;
}
//  End -->
/*
***************************End Of Function for the Credit Card Checking*****************
**********************************************************************************
*/
function fnTotalChars(iLen,iMax)
{
	if (iLen>iMax)
	return false;
return;
}
function fnDateDiff(arg1,arg2)
{
	var dateArr1 = arg1.split("/");
	var dateArr2 = arg2.split("/");
	var dob  = new Date(dateArr1[2],dateArr1[0]-1,dateArr1[1],0,0,0);
	var dob1 = new Date(dateArr2[2],dateArr2[0]-1,dateArr2[1],0,0,0);
	var milliseconds1 = dob.getTime();
	var milliseconds2 = dob1.getTime();
	var difference = milliseconds1 - milliseconds2;
    difference = difference/1000/60/60/24;
	return difference;
}

function fnDateBetween(dFrom,dBet,dEnd)
{
		if (dFrom<=dBet && dBet<=dEnd)
		return 1;
		else
		return 0;
}
function DateAdd(startDate, numDays, numMonths, numYears)
{
	var returnDate = new Date(startDate.getTime());
	var yearsToAdd = numYears;
	
	var month = returnDate.getMonth()	+ numMonths;
	if (month > 11)
	{
		yearsToAdd = Math.floor((month+1)/12);
		month -= 12*yearsToAdd;
		yearsToAdd += numYears;
	}
	returnDate.setMonth(month);
	returnDate.setFullYear(returnDate.getFullYear()	+ yearsToAdd);
	
	returnDate.setTime(returnDate.getTime()+60000*60*24*numDays);
	
	return returnDate;

}

// -->
function validateControl()
		{
			var index = 0;
			var flag = true;
			for(index = 0 ; index < arguments.length ; index ++ )
				{	
					var Control = document.getElementById(arguments[index]);
					var ControlType = Control.type;
					var ControlName = Control.name;
					var ControlValue = Control.value;

					switch(ControlType)
						{
							case "text": 
									if(ControlValue == 0)
												{
												    var strMessage =  ControlName.substring(29);
												 
													if(strMessage.indexOf("_") != -1)
														{
															strMessage = strMessage.replace("_"," ");
															strMessage = strMessage.replace("¤"," ");
														}	
												
													alert("Please Enter " + strMessage);
													Control.value="";
													Control.focus();
													flag = false;
													return false;
												}	
							case "password": 
										if(ControlValue == 0 && Control.disabled==false)
												{
												    var strMessage =  ControlName.substring(3);
													if(strMessage.indexOf("_") != -1)
														{
															strMessage = strMessage.replace("_"," ");
														}	
													alert("Please Enter " + strMessage);
													Control.value=""
													Control.focus();
													flag = false;
													return false;
												}	
											break;
							case "select-one":
											if( (ControlValue == "" ) || (ControlValue == "Nil" ) || (ControlValue == "default" ) || (ControlValue == "Default" ) )
												{
													alert("Please Select " + ControlName.substring(3).replace("_"," "));
													Control.focus();
													flag = false;
													return false;
												}	
						}
				}

				return flag;				
		}
function validateMasterControl()
		{
			var index = 0;
			var flag = true;
			for(index = 0 ; index < arguments.length ; index ++ )
				{	
					var Control = document.getElementById(arguments[index]);
					var ControlType = Control.type;
					var ControlName = Control.name;
					var ControlValue = Control.value;

					switch(ControlType)
						{
							case "text": 
									if(ControlValue == 0)
												{
												    var strMessage =  ControlName.substring(9);
												 
													if(strMessage.indexOf("_") != -1)
														{
															strMessage = strMessage.replace("_"," ");
															strMessage = strMessage.replace("¤"," ");
														}	
												
													alert("Please Enter " + strMessage);
													Control.value="";
													Control.focus();
													flag = false;
													return false;
												}	
							case "password": 
										if(ControlValue == 0 && Control.disabled==false)
												{
												    var strMessage =  ControlName.substring(3);
													if(strMessage.indexOf("_") != -1)
														{
															strMessage = strMessage.replace("_"," ");
														}	
													alert("Please Enter " + strMessage);
													Control.value=""
													Control.focus();
													flag = false;
													return false;
												}	
											break;
							case "select-one":
											if( (ControlValue == "" ) || (ControlValue == "Nil" ) || (ControlValue == "default" ) || (ControlValue == "Default" ) )
												{
													alert("Please Select " + ControlName.substring(3).replace("_"," "));
													Control.focus();
													flag = false;
													return false;
												}	
						}
				}

				return flag;				
		}
function validateControlByName()
		{
		
			var index = 0;
			var flag = true;
			var optflag,optselflag;
			
			for(index = 0 ; index < arguments.length ; index ++ )
				{
					optflag = false; 
					optselflag = false;	
					var ControlArray = document.getElementsByName(arguments[index]);
					var index2=0;
					for(index2=0; index2 < ControlArray.length ; index2++)
						{
							var Control = document.getElementsByName(arguments[index]).item(index2);
							var ControlType = Control.type;
							var ControlName = Control.name;
							//alert(ControlName);
							var ControlValue = Control.value;
							if(Control.disabled==false)
								{
								switch(ControlType)
									{
									case "text": 
										if(ControlValue == 0 && Control.disabled==false)
												{
												    var strMessage =  ControlName.substring(3);
													if(strMessage.indexOf("_") != -1)
														{
															strMessage = strMessage.replace("_"," ");
														}	
													alert("Please Enter " + strMessage);
													Control.value=""
													Control.focus();
													flag = false;
													return false;
												}	
											break;	
										
									case "select-one":
									
											if( (ControlValue == "" ) || (ControlValue == "Nil" ) || (ControlValue == "default" ) || (ControlValue == "Default" ) )
												{
													alert("Please Select " + ControlName.substring(3));
													Control.focus();
													flag = false;
													return false;
												}
											break;	
									case "checkbox":
											optflag=true;
											if(Control.checked==true)
												{
													optselflag = true;
												}
											break;	
									case "radio":
											optflag=true;
											if(Control.checked==true)
												{
													optselflag = true;
												}
									}
								}	
						}
						
				if(optflag==true&&optselflag!=true)
					{
					    flag = false;
						alert("Please Select " + ControlName.substring(29));
						ControlArray[0].focus();
						return false;
					}	
				
				}
				return flag;
		}
		function validateMasterControlByName()
		{
		
			var index = 0;
			var flag = true;
			var optflag,optselflag;
			
			for(index = 0 ; index < arguments.length ; index ++ )
				{
					optflag = false; 
					optselflag = false;	
					var ControlArray = document.getElementsByName(arguments[index]);
					var index2=0;
					for(index2=0; index2 < ControlArray.length ; index2++)
						{
							var Control = document.getElementsByName(arguments[index]).item(index2);
							var ControlType = Control.type;
							var ControlName = Control.name;
							//alert(ControlName);
							var ControlValue = Control.value;
							if(Control.disabled==false)
								{
								switch(ControlType)
									{
									case "text": 
										if(ControlValue == 0 && Control.disabled==false)
												{
												    var strMessage =  ControlName.substring(3);
													if(strMessage.indexOf("_") != -1)
														{
															strMessage = strMessage.replace("_"," ");
														}	
													alert("Please Enter " + strMessage);
													Control.value=""
													Control.focus();
													flag = false;
													return false;
												}	
											break;	
										
									case "select-one":
											if( (ControlValue == "" ) || (ControlValue == "Nil" ) || (ControlValue == "default" ) || (ControlValue == "Default" ) )
												{
													alert("Please Select " + ControlName.substring(3));
													Control.focus();
													flag = false;
													return false;
												}
											break;	
									case "checkbox":
											optflag=true;
											if(Control.checked==true)
												{
													optselflag = true;
												}
											break;	
									case "radio":
											optflag=true;
											if(Control.checked==true)
												{
													optselflag = true;
												}
									}
								}	
						}
						
				if(optflag==true&&optselflag!=true)
					{
					    flag = false;
						alert("Please Select " + ControlName.substring(9));
						ControlArray[0].focus();
						return false;
					}	
				
				}
				return flag;
		}
		
		function validateEmail(objName)
{
	var sobjValue;
	var iobjLength;
	sobjValue=objName.value;
	iobjLength=sobjValue.length;
	iFposition=sobjValue.indexOf("@");
	iSposition=sobjValue.indexOf(".");
	iTmp=sobjValue.lastIndexOf(".");	
	iPosition=sobjValue.indexOf(",");
	iPos=sobjValue.indexOf(";");
	if (iobjLength!=0)
	{
		if ((iFposition == -1)||(iSposition == -1))
		{
			alert("Please enter the E-Mail address in the proper format")
			eval(objName.focus());
			return false;
		}
		else if(sobjValue.charAt(0) == "@" || sobjValue.charAt(0)==".")
		{
			alert("Please enter the E-Mail address in the proper format")
			eval(objName.focus());
			return false;				
		}
		else if(sobjValue.charAt(iobjLength) == "@" || sobjValue.charAt(iobjLength)==".")
		{
			alert("Please enter the E-Mail address in the proper format");
			eval(objName.focus());
			return false;				
		}	
		else if((sobjValue.indexOf("@",(iFposition+1)))!=-1)
		{	
			alert("Please enter the E-Mail address in the proper format")
			eval(objName.focus());
			return false;
		}
		else if ((iobjLength-(iTmp+1)<2)||(iobjLength-(iTmp+1)>3))
		{
			alert("Please enter the E-Mail address in the proper format")
			eval(objName.focus());
			return false;
		}
		else if ((iPosition!=-1) || (iPos!=-1))
		{
			alert("Please enter the E-Mail address in the proper format")
			eval(objName.focus());
			return false;
		}
		else
		{
			return true;
		}		
	}		
}


	function allowNumber(ev)
		{
			
			//alert("test");
    e = ev || window.event;
   //alert(e.shiftKey);
   // key = e.keyCode ? e.keyCode : e.which;
    
			if(!(e.shiftKey))
				{
				if((!((e.keyCode>=37)&&(e.keyCode<=40))) && (!(e.keyCode>=8 && e.keyCode<=9)) && (!(e.keyCode>=46&&e.keyCode<=58)) && (!(e.keyCode>=96&&e.keyCode<=105)))
					{
						//e.returnValue = false;
						return false;
					}
				}
			else if(e.keyCode>=46&&e.keyCode<=59) 
				{	//e.returnValue = false;
				return false;	}
				
				else
				{
						return true;
				}
		}
	
function checkDecimalNumber(txtField,errMsg)
	{		
		
		rgExp=/[^.0-9]/g
		if(!checkExpr(txtField.value,rgExp))
		{
		 	alert(errMsg);
		 	txtField.focus(); 	 
		 	return false;
		}
		else
		{
			return true;
		}
	}
	function checkExpr(str,rgExp)
{
	var tmpStr
	tmpStr=str.replace(rgExp,"")
	if(str.length > tmpStr.length)
	 return false
	else
	 return true;
}

function decOnly(i) {
	var t = i.value;
	if(t.length>0) {
		t = t.replace(/[^\d\.]+/g, ''); 
	}
	var s = t.split('.');
	if(s.length>1) {
		s[1] = s[0] + '.' + s[1];	
		s.shift(s);
	}
	i.value = s.join('');
}


function textOnly(ev)
   {
 //alert("test");
    e = ev || window.event;
   // alert(e);
    key = e.keyCode ? e.keyCode : e.which;
   // alert(key);
      if (key > 64 && key< 91)    
          {
            return true;
           //  event.returnValue = true;
          }
       else if ((key == 20) || (key== 8) || (key== 14) || (key == 32) || (key == 9) || (key == 46) || (key == 37) ||(key == 39))
          {
             return true;
          }
          
       else
          {return false;
             //event.returnValue = false;
          }  
    
  /*if (event.keyCode > 64 && event.keyCode < 91)    
          {
             event.returnValue = true;
          }
       else if ((event.keyCode == 20) || (event.keyCode == 8) || (event.keyCode == 14) || (event.keyCode == 32) || (event.keyCode == 9) || (event.keyCode == 46) || (event.keyCode == 37) ||(event.keyCode == 39))
          {
             return true;
          }
          
       else
          {
             event.returnValue = false;
          } 
          
          window.status = e.keyCode;
          if (e.keyCode> 64 && e.keyCode < 91)    
          {
             e.returnValue = true;
          }
       else if ((e.keyCode == 20) || (e.keyCode == 8) || (e.keyCode == 14) || (e.keyCode == 32) || (e.keyCode == 9) || (e.keyCode == 46) || (e.keyCode == 37) ||(e.keyCode == 39))
          {
             return true;
          }
          
       else
          {
             e.returnValue = false;
          } 
    */
   }
   
  

/*============================================================================*/

/*

This routine checks the credit card number. The following checks are made:

1. A number has been provided
2. The number is a right length for the card
3. The number has an appropriate prefix for the card
4. The number has a valid modulus 10 number check digit if required

If the validation fails an error is reported.

The structure of credit card formats was gleaned from a variety of sources on 
the web.

Parameters:
            cardnumber           number on the card
            cardname             name of card as defined in the card list below

Author:     John Gardner
Date:       1st November 2003
Updated:    26th Feb. 2005      Additional cards added by request

*/

/*
   If a credit card number is invalid, an error reason is loaded into the 
   global ccErrorNo variable. This can be be used to index into the global error  
   string array to report the reason to the user if required:
   
   e.g. if (!checkCreditCard (number, name) alert (ccErrors(ccErrorNo);
*/

var ccErrorNo = 0;
var ccErrors = new Array ()

ccErrors [0] = "Unknown card type";
ccErrors [1] = "No card number provided";
ccErrors [2] = "Credit card number is in invalid format";
ccErrors [3] = "Credit card number is invalid";
ccErrors [4] = "Credit card number has an inappropriate number of digits";

function checkCreditCard (cardnumber, cardname) {

     
  // Array to hold the permitted card characteristics
  var cards = new Array();

  // Define the cards we support. You may add addtional card types.
  
  //  Name:      As in the selection box of the form - must be same as user's
  //  Length:    List of possible valid lengths of the card number for the card
  //  prefixes:  List of possible prefixes for the card
  //  checkdigit Boolean to say whether there is a check digit
  
  cards [0] = {name: "Visa", 
               length: "13,16", 
               prefixes: "4",
               checkdigit: true};
  cards [1] = {name: "MasterCard", 
               length: "16", 
               prefixes: "51,52,53,54,55",
               checkdigit: true};
  cards [2] = {name: "DinersClub", 
               length: "14,", 
               prefixes: "300,301,302,303,304,305,36,38",
               checkdigit: true};
  cards [3] = {name: "CarteBlanche", 
               length: "14", 
               prefixes: "300,301,302,303,304,305,36,38",
               checkdigit: true};
  cards [4] = {name: "AmEx", 
               length: "15", 
               prefixes: "34,37",
               checkdigit: true};
  cards [5] = {name: "Discover", 
               length: "16", 
               prefixes: "6011",
               checkdigit: true};
  cards [6] = {name: "JCB", 
               length: "15,16", 
               prefixes: "3,1800,2131",
               checkdigit: true};
  cards [7] = {name: "Enroute", 
               length: "15", 
               prefixes: "2014,2149",
               checkdigit: true};
  
               
  // Establish card type
  var cardType = -1;
  for (var i=0; i<cards.length; i++) {

    // See if it is this card (ignoring the case of the string)
    if (cardname.toLowerCase () == cards[i].name.toLowerCase()) {
      cardType = i;
      break;
    }
  }
  
  // If card type not found, report an error
  if (cardType == -1) {
     ccErrorNo = 0;
     return false; 
  }
   
  // Ensure that the user has provided a credit card number
  if (cardnumber.length == 0)  {
     ccErrorNo = 1;
     return false; 
  }
  
  // Check that the number is numeric, although we do permit a space to occur  
  // every four digits. 
  var cardNo = cardnumber
  var cardexp = /^([0-9]{4})\s?([0-9]{4})\s?([0-9]{4})\s?([0-9]{1,4})$/;
  if (!cardexp.exec(cardNo))  {
     ccErrorNo = 2;
     return false; 
  }
    
  // Now remove any spaces from the credit card number
  cardexp.exec(cardNo);
  cardNo = RegExp.$1 + RegExp.$2 + RegExp.$3 + RegExp.$4;
       
  // Now check the modulus 10 check digit - if required
  if (cards[cardType].checkdigit) {
    var checksum = 0;                                  // running checksum total
    var mychar = "";                                   // next char to process
    var j = 1;                                         // takes value of 1 or 2
  
    // Process each digit one by one starting at the right
    var calc;
    for (i = cardNo.length - 1; i >= 0; i--) {
    
      // Extract the next digit and multiply by 1 or 2 on alternative digits.
      calc = Number(cardNo.charAt(i)) * j;
    
      // If the result is in two digits add 1 to the checksum total
      if (calc > 9) {
        checksum = checksum + 1;
        calc = calc - 10;
      }
    
      // Add the units element to the checksum total
      checksum = checksum + calc;
    
      // Switch the value of j
      if (j ==1) {j = 2} else {j = 1};
    } 
  
    // All done - if checksum is divisible by 10, it is a valid modulus 10.
    // If not, report an error.
    if (checksum % 10 != 0)  {
     ccErrorNo = 3;
     return false; 
    }
  }  

  // The following are the card-specific checks we undertake.
  var LengthValid = false;
  var PrefixValid = false; 
  var undefined; 

  // We use these for holding the valid lengths and prefixes of a card type
  var prefix = new Array ();
  var lengths = new Array ();
    
  // Load an array with the valid prefixes for this card
  prefix = cards[cardType].prefixes.split(",");
      
  // Now see if any of them match what we have in the card number
  for (i=0; i<prefix.length; i++) {
    var exp = new RegExp ("^" + prefix[i]);
    if (exp.test (cardNo)) PrefixValid = true;
  }
      
  // If it isn't a valid prefix there's no point at looking at the length
  if (!PrefixValid) {
     ccErrorNo = 3;
     return false; 
  }
    
  // See if the length is valid for this card
  lengths = cards[cardType].length.split(",");
  for (j=0; j<lengths.length; j++) {
    if (cardNo.length == lengths[j]) LengthValid = true;
  }
  
  // See if all is OK by seeing if the length was valid. We only check the 
  // length if all else was hunky dory.
  if (!LengthValid) {
     ccErrorNo = 4;
     return false; 
  };   
  
  // The credit card is in the required format.
  return true;
}

 var http_request = false;
var ss;
 function makeRequest(ctype,val) {

        var url;
        //var MailId=document.getElementById("txtMail").value;
        url="useAjax.asp?CType="+ctype +"&MailId="+val;
        http_request = false; 

        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // See note below about this line
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
    	//alert(ss);
	http_request.open('GET', url, true);
        http_request.send();
		
	//alert(http_request.status);
        if (http_request.readyState == 4) 
	{
            if (http_request.status == 200)
		return http_request.responseText;
	    else 
                return 'There was a problem with the request.';
	}
    }

    function alertContents() {

        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
				//ss = http_request.responseText;
                //alert(http_request.responseText);
				//return false;
			if (http_request.responseText == 'no')
			{
				return http_request.responseText
//				return false;
			}
            } else {
                alert('There was a problem with the request.');
            }
        }

    }
function checkKeyPressForDecimal(control, oEvent) 
{
	
	var value = control.value;
	var keyCode;
	
	if(window.event) {
		// for IE, e.keyCode or window.event.keyCode can be used
		keyCode = oEvent.keyCode; 
	}
	else if(oEvent.which)
	{	// for Netscape and Mozilla
		keyCode = oEvent.which;
	}
	
	var decimalSeparator = control.getAttribute("decimalSeparator");
	var sepCode = decimalSeparator.charCodeAt(0);	

	//Decimal point is not allowed as first char
	if ((value.length == 0) && (keyCode == sepCode))	{
		oEvent.returnValue = false;
		return false;
	}
	//If a decimal point exists
	if ((value.indexOf(decimalSeparator) != -1) && (keyCode == sepCode)) {
		oEvent.returnValue = false;
		return false;
	}
	if(value.length>7)
	{
		if((keyCode < 48 || keyCode > 57))
		{
			oEvent.returnValue = false;
			return false;
		}
	}
	if ((keyCode < 48 || keyCode > 57) && (keyCode != 8) && (keyCode != 0) && keyCode != sepCode) {
		oEvent.returnValue = false;
		return false;
	}
}


function validateDecimal(control) {
	
	var value = formatDecimal(control);
	if (value!="") {
		control.value = value;
		return true;
	}
	return false;
}


    var http_request = false;
    function makeRequestNew() {
        http_request = false; 
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // See note below about this line
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
        var MailId = document.getElementById("txtEmail").value;
		url="useAjax.asp?CType=MAIL&MailId="+MailId;
        http_request.onreadystatechange = alertContentsNew;
        http_request.open('GET', url, true);
        http_request.send(null);
    } 

    function alertContentsNew() {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                //alert(http_request.responseText);
				if(http_request.responseText=="Exist")
				{
				  alert('EMailID already registered...');
				  document.getElementById("txtEmail").focus();
				}
            } else {
                alert('There was a problem with the request.');
            }
        }

    }
  
  
  
  
  
  function phoneFilter(form, format) {

	var input = form.value;

	if(input.length > 0) { //do not perform if empty input

		var numbers = ""; //store all the numbers here

		//process to remove non-numbers and spaces
		for(var i = 0; i < input.length; i++) {
			var charr = input.charAt(i);
			if(!(isNaN(charr) || charr == " ")) numbers += charr;
		}

		//remove country code, if any
		if(numbers.substring(0, 2) == "47") numbers = numbers.substring(2, numbers.length);

		var output = ""; //assign numbers here

		//assign numbers to chosen format
		var n = 0, i = 0;
		while(i < format.length && n < numbers.length) {
			var charr = format.charAt(i);
			if(charr == "#") {
				output += numbers.charAt(n++)
			} else {
				output += charr;
			}
			i++;
		}

		//give alert if length is less than 10.
		//if(numbers.length < 10) {
		//	alert("The phone number must be of length 10");
		//	form.select();
		//}

		form.value = output; //output to form
	}
}
var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len, e) {
var keyCode = (isNN) ? e.which : e.keyCode; 
var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
if(input.value.length >= len && !containsElement(filter,keyCode)) {
input.value = input.value.slice(0, len);
input.form[(getIndex(input)+1) % input.form.length].focus();
}
function containsElement(arr, ele) {
var found = false, index = 0;
while(!found && index < arr.length)
if(arr[index] == ele)
found = true;
else
index++;
return found;
}
function getIndex(input) {
var index = -1, i = 0, found = false;
while (i < input.form.length && index == -1)
if (input.form[i] == input)index = i;
else i++;
return index;
}
return true;
}
