// $Id: voucher.js 1103 2008-05-09 10:06:09Z dmf $
// Functions to support client-side pre-validation of voucher codes
// Final validation is always done server-side so reverse-engineering 
// a code that passes these tests won't help anyone trying to guess a code

// Variables to be populated in the HTML: 
// valStrings array needs error message(s) to be defined

// formats numeric voucher codes for easy reading
//document.captureEvents(Event.KEYPRESS);
function reformatVC (formElement) {
	var initialDigits = formElement.value.substr(0,4).replace(/\D/g, '');
	if (initialDigits.length == 4) {
		var digits = formElement.value.replace(/\D/g, '');
		if (digits.length > 12) {
			var formatted = digits.substr(0,4) + "-" + digits.substr(4,4) + "-" + digits.substr(8,4) + "-" + digits.substr(12,4);
		} else if (digits.length > 8) {
			var formatted = digits.substr(0,4) + "-" + digits.substr(4,4) + "-" + digits.substr(8,4);
		} else if (digits.length > 4) {
			var formatted = digits.substr(0,4) + "-" + digits.substr(4,4);
		}
		if (digits.length > 4) {
			formElement.value = formatted;
		}
	}
	return true;
}

// formats numeric voucher codes for easy reading
function validateVC (formElement) {
	var initialDigits = formElement.value.substr(0,4).replace(/\D/g, '');
	if (initialDigits.length == 4) {
		var digits = formElement.value.replace(/\D/g, '');
		var digitLength = digits.length;
		var sum = 0;
		for (var i = 1; i <= digitLength; i++) {
			if (i % 2) {
				sum += 1 * digits.substr(digitLength - i, 1);
			} else {
				var product = 2 * digits.substr(digitLength - i, 1);
				if (product > 9) {
					sum += (product - 9);
				} else {
					sum += product;
				}
			}
		}
//		alert (sum);
		if (sum % 10) {
			alert (invalidMsg);
			return false;
		} else {
			return true;
		}
	} else {
		return true;
	}
}



