var controlform2;
function CheckPost(CP, controlform)
	{
	controlform2 = '';
	if (CP == 1 || CP == 3)
			{
			if (document.getElementById(controlform2 + "chkAgreeTerms")!=null )
				{
				var Terms = document.getElementById(controlform2 + "chkAgreeTerms").checked
				if(!Terms) 
					{
						alert("Please indicate you accept Terms and Conditions by checking the tickbox.");
						document.getElementById(controlform2 + "chkAgreeTerms").focus();
						return false;
					}
				}
			if (document.getElementById(controlform2 + "ContactEMail")!=null )
			    {
			    var vEMail = document.getElementById(controlform2 + "ContactEMail").value;
			    if (isEmail(vEMail) == false) 
				    {
					    alert("Please enter a valid email address.");
					    document.getElementById(controlform2 + "ContactEMail").focus();
					    return false;
				    }
				 }
			if (document.getElementById(controlform2 + "txtEMail")!=null )
			    {
			    var vEMail = document.getElementById(controlform2 + "txtEMail").value;
			    if (isEmail(vEMail) == false) 
				    {
					    alert("Please enter a valid email address.");
					    document.getElementById(controlform2 + "txtEMail").focus();
					    return false;
				    }
				 }
			if (document.getElementById(controlform2 + "YourEMail")!=null )
			    {
			    var vEMail = document.getElementById(controlform2 + "YourEMail").value;
			    if (isEmail(vEMail) == false) 
				    {
					    alert("Please enter a valid email address.");
					    document.getElementById(controlform2 + "YourEMail").focus();
					    return false;
				    }
				 }
			if (validateContact() == false)
			{
				return false;		
			}
			}
	if (CP == 1 || CP == 2){
		if (validateCard() == false)
			{
				return false;		
			}
		}
	} 
function validateContact()
{
    if (document.getElementById(controlform2 + "ContactStreet")!=null )
        {
        var Street = document.getElementById(controlform2 + "ContactStreet").value;
        if( Street.length == 0 ) {alert("Please enter your street"); document.getElementById(controlform2 + "ContactStreet").focus(); return false;}
        }
    if (document.getElementById(controlform2 + "ContactCity")!=null )
        {
        var City = document.getElementById(controlform2 + "ContactCity").value;
        if( City.length == 0 ) {alert("Please enter your city"); document.getElementById(controlform2 + "ContactCity").focus(); return false;}
        }
    if (document.getElementById(controlform2 + "ContactPhone")!=null )
        {
        var Phone = document.getElementById(controlform2 + "ContactPhone").value;
        if( Phone.length == 0 ) {alert("Please enter your phone number"); document.getElementById(controlform2 + "ContactPhone").focus(); return false;}
        }
    if (document.getElementById(controlform2 + "ContactCountryID")!=null )
        {
        var CountryID = document.getElementById(controlform2 + "ContactCountryID").value; 
        //dropdown
	    if( CountryID == -1 ) {alert("Please select your country"); document.getElementById(controlform2 + "ContactCountryID").focus(); return false;}
        }
    if (document.getElementById(controlform2 + "ApprovedCharge")!=null )
        {
        var ApprovedCharge = document.getElementById(controlform2 + "ApprovedCharge").value; 
        //dropdown
	    if( ApprovedCharge.length == 0 ) {alert("Please enter your approved charge to your card"); document.getElementById(controlform2 + "ApprovedCharge").focus(); return false;}
        }
}
function isEmail(string) 
{
	if (string.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1)
		return true;
	else
		return false;
}
function validateCard() {
	if (document.getElementById(controlform2 + "cardNumber")!=null )
		{
		var cardNumber = document.getElementById(controlform2 + "cardNumber").value;
		var cardType = document.getElementById(controlform2 + "cardType").value;
		var cardMonth = document.getElementById(controlform2 + "cardMonth").value;
		var cardYear = document.getElementById(controlform2 + "cardYear").value;
		var NameOnCard = document.getElementById(controlform2 + "NameOnCard").value;
		
		if( cardNumber.length == 0 ) {	//most of these checks are self explanitory
			alert("Please enter a valid card number.");
			document.getElementById(controlform2 + "cardNumber").focus();
			return false;				
		}
		for( var i = 0; i < cardNumber.length; ++i ) {		// make sure the number is all digits.. (by design)
			var c = cardNumber.charAt(i);
			if( c < '0' || c > '9' ) {
				alert("Please enter a valid card number.\n\n Use only digits. Do not use spaces or hyphens.");
				document.getElementById(controlform2 + "cardNumber").focus();
				return false;
			}
		}
			var length = cardNumber.length;			//perform card specific length and prefix tests


				switch( cardType ) {
					case '3':
						if( length != 15 ) {
                    		alert("Please enter a valid American Express Card number.\n\nAn American Express Card number contains 15 digits.");
                    		return false;
						}
						var prefix = parseInt( cardNumber.substring(0,2));
							if( prefix != 34 && prefix != 37 ) {
                        		alert("Please enter a valid American Express Card number.\n\nAn American Express Card number starts with either 34 or 37.");
                        		document.getElementById(controlform2 + "cardNumber").focus();
                        		return false;
							}
							break;
					case '5':
						if( length != 16 ) {
							alert("Please enter a valid Discover Card number.\n\nA Discover Card number contains 16 digits.");
							document.getElementById(controlform2 + "cardNumber").focus();
							return false;
						}
						var prefix = parseInt( cardNumber.substring(0,4));

							if( prefix != 6011 ) {
								alert("Please enter a valid Discover Card number.\n\nA Discover Card number starts with 6011.");
								document.getElementById(controlform2 + "cardNumber").focus();
								return false;
							}
							break;
					case '4':
						if( length != 14 ) {
							alert("Please enter a valid Diners Club / Carte Blanche Card number.\n\nThe Card number contains 14 digits.");
							document.getElementById(controlform2 + "cardNumber").focus();
							return false;
						}
						var prefix = parseInt( cardNumber.substring(0,2));

							if( prefix != 30 && prefix !=36 && prefix !=38 ) {
								alert("Please enter a valid Diners Club / Carte Blanche Card number.\n\nThe card starts with 30, 36 or 38.");
								document.getElementById(controlform2 + "cardNumber").focus();
								return false;
							}
							break;
					case '2':
						if( length != 16 ) {
							alert("Please enter a valid MasterCard number.\n\nA MasterCard number contains 16 digits.");
							document.getElementById(controlform2 + "cardNumber").focus();
							return false;
						}
						var prefix = parseInt( cardNumber.substring(0,2));

						if( prefix < 51 || prefix > 55) {
								alert("Please enter a valid MasterCard Card number.\n\nA MasterCard number starts with 51 to 55.");
								document.getElementById(controlform2 + "cardNumber").focus();
								return false;
							}
							break;
					 case '6':
						if( length != 15 && length != 16 ) {
							alert("Please enter a valid JCB number.\n\nA JCB number contains either 15 or 16 digits.");
							document.getElementById(controlform2 + "cardNumber").focus();
							return false;
						}
						var prefix = parseInt( cardNumber.substring(0,2));

						if( prefix != 3 && prefix != 1800 && prefix != 2131) {
								alert("Please enter a valid JCB Card number.\n\nA JCB number starts with 3, 1800 or 2131.");
								document.getElementById(controlform2 + "cardNumber").focus();
								return false;
							}
							break;
					case '1':
						if( length != 16 && length != 13 ) {
							alert("Please enter a valid Visa Card number.\n\nA Visa Card number contains either 13 or 16 digits.");
							document.getElementById(controlform2 + "cardNumber").focus();
							return false;
							}
						var prefix = parseInt( cardNumber.substring(0,1));
						if( prefix != 4 ) {
								alert("Please enter a valid Visa Card number.\n\nA Visa Card number starts with 4.");
								document.getElementById(controlform2 + "cardNumber").focus();
								return false;
								}
					 break;
						}
			if( !mod10( cardNumber ) ) { 		// run the check digit algorithm
				alert("Sorry! this is not a valid credit card number.");
				document.getElementById(controlform2 + "cardNumber").focus();
				return false;
				}
			if( expired( cardMonth, cardYear ) ) {							// check if entered date is already expired.
				alert("Sorry! The expiration date you have entered would make this card invalid.");
				return false;
				}
			if( NameOnCard.length == 0 ) {	
				alert("Please enter name on card.");
				document.getElementById(controlform2 + "NameOnCard").focus();
				return false;}
		return true; // at this point card has not been proven to be invalid
		}
        }
function mod10( cardNumber ) { // LUHN Formula for validation of credit card numbers.
	var ar = new Array( cardNumber.length );
	var i = 0,sum = 0;
    	for( i = 0; i < cardNumber.length; ++i ) {
    		ar[i] = parseInt(cardNumber.charAt(i));
    	}
    	for( i = ar.length -2; i >= 0; i-=2 ) { // you have to start from the right, and work back.
    		ar[i] *= 2;							 // every second digit starting with the right most (check digit)
    		if( ar[i] > 9 ) ar[i]-=9;			 // will be doubled, and summed with the skipped digits.
    	}										 // if the double digit is > 9, ADD those individual digits together 
        	for( i = 0; i < ar.length; ++i ) {
        		sum += ar[i];						 // if the sum is divisible by 10 mod10 succeeds
        	}
        	return (((sum%10)==0)?true:false);	 	
	    }

function expired(month, year) {
                  // modified: 2010/02/11, Nathan Dunn - fixed bug on certain dates due to UTC and local timezone differences
            var now = new Date();                                       // this function is designed to be Y2K compliant.
            var expiresIn = new Date(20+year,month-1,1,0,0,0);          // create an expired on date object with valid thru expiration date
            expiresIn.setUTCMonth(expiresIn.getUTCMonth()+1);           // adjust the month, to first day, hour, minute & second of expired month
            if( now.getTime() < expiresIn.getTime() ) return false;
            return true;                                                      // then we get the miliseconds, and do a long integer comparison
}