
/**
 * 
 * 
 * @param form form_obj
 */
function validateCreditCardForm(form_obj)
{
	var requiredField = Array("cc_name", "cc_num", "cc_exp");
	var requiredText = Array("Name of Credit Card Holder", "Credit Card Number", "Credit Card Expiration Date");
	var msg = "";
	
	var count = requiredField.length;
	for (var i = 0; i < count; i++)
	{
		if (form_obj.elements[requiredField[i]].value.length == 0)
		{
			msg = msg + " - " + requiredText[i] + "\n";	
		}
	}
	
	if (msg.length)
	{
		alert("Please fill in the following required fields: \n" + msg);
		form_obj.elements["button"].disabled = false;
		return false;
	}
	
	if (checkLuhn(form_obj.elements["cc_num"].value) == false)
	{
		alert("Please enter a valid credit card number!");
		form_obj.elements["button"].disabled = false;
		return false;
	}	
	
	return true;
}

/**
 * Check if the credit card number is a valid number 
 * 
 * @param integer num
 * @return boolean
 */
function checkLuhn(num)
{
	var sum = 0;
	var strlen = num.length;
	var parity = strlen % 2;
	for (var i = 0; i < strlen; i++)
	{
		var digit = parseInt((num + "").charAt(i));
		
		if (isNaN(digit))
		{
			continue;
		}
		
		if (i % 2 == parity)
		{
			digit = digit * 2;
		}
		
		if (digit > 9)
		{
			digit = digit - 9;
		}
		
		sum = sum + digit;
	}
	
	return (sum % 10) == 0 && sum > 0;
}
	

