var Cards = new makeArray(8);
	Cards[0] = new CardType ("MasterCard", "51,52,53,54,55", "16");
	Cards[1] = new CardType ("VisaCard", "4", "13,16");
	Cards[2] = new CardType ("AmExCard", "34,37", "15");
	Cards[3] = new CardType ("DinersClubCard", "30, 36, 38", "14");
	Cards[4] = new CardType ("DiscoverCard", "6011", "16");
	Cards[5] = new CardType ("enRouteCard", "2014, 2149", "15");
	Cards[6] = new CardType ("JCBCard", "3088, 3096, 3112, 3158, 3337, 3528", "16");
var MasterCard = Cards[0]
var VisaCard = Cards[1];
var AmExCard = Cards[2];
var DinersClubCard = Cards[3];
var DiscoverCard = Cards[4];
var enRouteCard = Cards[5];
var JCBCard = Cards[6];
var LuhnCheckSum = Cards[7] = new CardType();

function CheckCardNumber(form){
	var tmpyear;
	if (form.Name.value.length == 0) {
		alert("Please enter your First and Last Name.");
		form.Name.focus();
		return false;
	}
	if (form.Address.value.length == 0) {
		alert("Please enter your Address.");
		form.Address.focus();
		return false;
	}
	if (form.City.value.length == 0) {
		alert("Please enter City.");
		form.City.focus();
		return false;
	}
	if (form.State.value.length == 0) {
		alert("Please enter State.");
		form.State.focus();
		return false;
	}
	if (form.Zip.value.length == 0) {
		alert("Please enter Zip.");
		form.Zip.focus();
		return false;
	}
	if (form.Country.value.length == 0) {
		alert("Please enter Country.");
		form.Country.focus();
		return false;
	}
	if (form.Area_Code.value.length == 0) {
		alert("Please enter Area Code.");
		form.Area_Code.focus();
		return false;
	}
	if (form.Phone_Number.value.length == 0) {
		alert("Please enter Phone Number.");
		form.Phone_Number.focus();
		return false;
	}
	if (form.email.value.length == 0) {
		alert("Please enter E-Mail.");
		form.email.focus();
		return false;
	}
    if (form.email.value !== form.email2.value){
        alert('The E-Mail Addresses do not match.'); 
		form.email.focus();
        return false; 
    } 
	if (form.Team_Name.value.length == 0) {
		alert("Please enter Team Name.");
		form.Team_Name.focus();
		return false;
	}
	if (form.Password.value.length == 0) {
		alert("Please enter Password.");
		form.Password.focus();
		return false;
	}	
	
	if (form.cus_card_type.value.length == 0) {
		alert("Please select a Name of Card.");
		form.cus_card_type.focus();
		return false;
	}
	if (form.cus_card_num.value.length == 0) {
		alert("Please enter a Card Number.");
		form.cus_card_num.focus();
		return false;
	}
	if (form.cus_card_cvv.value.length == 0) {
		alert("Please enter a CVV.");
		form.cus_card_cvv.focus();
		return false;
	}
	if (form.cus_card_ex_month.value.length == 0) {
		alert("Please enter the Expiration Month.");
		form.cus_card_ex_month.focus();
		return false;
	}
	if (form.cus_card_ex_year.value.length == 0) {
		alert("Please enter the Expiration Year.");
		form.cus_card_ex_year.focus();
		return false;
	}
if (form.cus_card_ex_year.value > 0 && form.cus_card_ex_year.value < 21) tmpyear = "20" + form.cus_card_ex_year.value;
		else {
			alert("The Expiration Year is not valid.");
			return false;
			}
tmpmonth = form.cus_card_ex_month.options[form.cus_card_ex_month.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 alredy expired.")
	return false;
}

card = form.cus_card_type.options[form.cus_card_type.selectedIndex].value;
var retval = eval(card + ".checkCardNumber(\"" + form.cus_card_num.value + "\", " + tmpyear + ", " + tmpmonth + ");");
cardname = "";

if (retval) ;
	else{
		for (var n = 0; n < Cards.size; n++) {
			if (Cards[n].checkCardNumber(form.cus_card_num.value, tmpyear, tmpmonth)) {
				cardname = Cards[n].getCardType();
				break;
				return false;
			}
		}
		if (cardname.length > 0) alert("This looks like a " + cardname + " number, not a " + card + " number.");
			else alert("This card number is not valid.");
			return false;
		}
	}
	
/****************************************************************************************************************\
Object CardType ([String cardtype, String rules, String len, int year, int month])
					ValidCreditCard.htm
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;
	this.setCardType = setCardType;
	this.setLen = setLen;
	this.setRules = setRules;
	this.setExpiryDate = setExpiryDate;
	this.setCardType(tmpcardtype);
	this.setLen(tmplen);
	this.setRules(tmprules);
	
	if (argc > 4) this.setExpiryDate(argv[3], argx[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;
	}
	
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;
	}
	
function getCardType() {return this.cardtype;}

function getExpiryDate() {return this.month + "/" + this.year;}

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;
	}
	
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;
	}
	
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;
	}
	
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;
	}
	
function makeArray(size) {
	this.size = size;
	return this;
	}	

function setCardNumber(cardnumber) {
	this.cardnumber = cardnumber;
	return this;
	}
	
function setCardType(cardtype) {
	this.cardtype = cardtype;
	return this;
	}
	
function setExpiryDate(year, month){
	this.year = year;
	this.month = month;
	return this;
	}
	
function setLen(len) {
	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;
	}
	
function setRules(rules) {
	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;
	}

function openWin(theURL,winName,features) {
  window.open(theURL,winName,features);
}

// email validation 

function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   alert("Invalid E-mail")
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Invalid E-mail")
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Invalid E-mail")
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Invalid E-mail")
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Invalid E-mail")
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Invalid E-mail")
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Invalid E-mail")
		    return false
		 }

 		 return true					
	}

function ValidateForm(){
	var emailID=document.Join_ML.mail_email
	
	if ((emailID.value==null)||(emailID.value=="")){
		alert("Please Enter your Email")
		emailID.focus()
		return false
	}
	if (echeck(emailID.value)==false){
		emailID.value=""
		emailID.focus()
		return false
	}
	return true
 }
 //end email validation

//check input field for minimum number of chars
function minimum(obj,min){
 if (obj.value.length<min){
     alert('The minimum length for ' +obj.id + ' is ' +min);
     document.getElementById(obj.id).focus();
     }
}


//random_number generator for ads
var a = Math.floor(Math.random() * 9999999999 + 1)
var random_number = a; 