function ValidateThis(objcardnumber, objcardtype, objcardexpmonth, objcardexpyear)
{
		if(!ValidateCard(objcardnumber,objcardtype))
		{
			return false;
		}
		if(!cardval(objcardnumber))
		{
			return false;
		}
		if(!expired(objcardexpmonth,objcardexpyear))
		{
			return false;
		}

	return true;
}

function ValidateCard(strobjCardNumber,strobjCardType)
{
	
	strCardNumber = strobjCardNumber.value;
	strCardType = strobjCardType.value;
	
	if(strCardNumber.length == 0 ) 
	{
		alert("Please enter a valid card number.");
		strobjCardNumber.select();
		return false;                                
	}
	var ok;
	for( var i = 0; i < strCardNumber.length; ++i ) 
	{
		var c = strCardNumber.charAt(i);
		if( c < '0' || c > '9') 
		{
			if(c!='*')
			{ 
				alert("Please enter a valid card number. Use only digits. Do not use spaces or hyphens.");				
				strobjCardNumber.select();
				return false;				
			}
			
		}else if(c=='*') 
			{				
				return true;
			}

 	}
	
	
	var length = strCardNumber.length;
	switch( strCardType ) 
	{
		case 'American Express':
			if( length != 15 ) 
			{
				alert("Please enter a valid american express card number.");
				strobjCardNumber.select();
				return false;
			}
			var prefix = parseInt( strCardNumber.substring(0,2));
			if( prefix != 34 && prefix != 37 ) 
			{
				alert("Please enter a valid american express card number.");
				strobjCardNumber.select();
				return false;
			}
			break;
		case 'Discover':
			if( length != 16 ) 
			{
				alert("Please enter a valid discover card number.");
				strobjCardNumber.select();
				return false;
			}
			var prefix = parseInt(strCardNumber.substring(0,4));
			if( prefix != 6011 ) 
			{
				alert("Please enter a valid discover card number.");
				strobjCardNumber.select();
				return false;
			}
			break;
		case 'MasterCard':
			if( length != 16 ) 
			{
				alert("Please enter a valid master card number.");
				strobjCardNumber.select();
				return false;
			}
			var prefix = parseInt(strCardNumber.substring(0,2));
			if( prefix < 51 || prefix > 55) 
			{
				alert("Please enter a valid master card number.");
				strobjCardNumber.select();
				return false;
			}
			break;
		case 'Visa':
			if( length != 16 && length != 13 ) 
			{
				alert("Please enter a valid visa card number.");
				strobjCardNumber.select();
				return false;
			}
			var prefix = parseInt(strCardNumber.substring(0,1));
			if( prefix != 4 ) 
			{
				alert("Please enter a valid visa card number.");
				strobjCardNumber.select();
				return false;
			}
			break;
	}
	
	return true;
}

/*function mod10( cardobjNumber )
{
	cardNumber = cardobjNumber.value;
	var ar = new Array( cardNumber.length );
	var i = 0,sum = 0;
	for( i = 0; i < cardNumber.length; ++i )
	{
		ar[i] = parseInt(cardNumber.charAt);
	}
	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(strobjMonth,strobjYear) 
{
	strMonth = strobjMonth.value;
	strYear = strobjYear.value;
	if(serverYear==strYear)
	{
		if(serverMonth > strMonth)
		{
			alert("Expiry month can not be less than current month.");
			strobjMonth.focus();
			return false;
		}
	}
	return true;
}

function cardval(objs) {
	s = objs.value;
// remove non-numerics
var v = "0123456789";
var w = "";
for (i=0; i < s.length; i++) {
x = s.charAt(i);
if (v.indexOf(x,0) != -1)
w += x;
}
// validate number
j = w.length / 2;
if (j < 6.5 || j > 8 || j == 7)
	{
return false;
	}
k = Math.floor(j);
m = Math.ceil(j) - k;
c = 0;
for (i=0; i<k; i++) {
a = w.charAt(i*2+m) * 2;
c += a > 9 ? Math.floor(a/10 + a%10) : a;
}
for (i=0; i<k+m; i++) 
	{
	c += w.charAt(i*2+1-m) * 1;
	}

if(c%10 != 0)
	{
			alert('Please enter a valid card number');
			objs.select();
			return false;
	}
	return true;
}


//////////////////////////////////////////////////////////////////////////////////////////////////

