//
// $Id: $

function SelectCountry(CountryXid, nodisable) {
	var obj_state = document.getElementById("StateSelect");
	var obj_country = document.getElementById("CountrySelect");
	if (obj_state && obj_country) {
		if (CountryXid == -1) {
			obj_state.value = -1;
			obj_country.selectedIndex = 0;
			if (!nodisable) {
				obj_state.disabled = true;
				obj_country.disabled = false;
			}
		}
		else {
			obj_country.value = CountryXid;
			UpdateContent("StateDiv", "/state_select.php?CountryId=" + CountryXid);
			if (!nodisable) {
				obj_state.disabled = false;
				obj_country.disabled = true;
			}
		}
	}
}

function GiftSelect(status) {
	if (status) {
		document.AddressForm["Edit[GIFT]"].checked = !document.AddressForm["Edit[GIFT]"].checked;
	}
	var add_gift = document.AddressForm["Edit[GIFT]"].checked;
	var gift_note = document.getElementById("gift_note");
	var billing = document.getElementById("billing");
	var newsletter = document.getElementById("newsletter");
	var tribe = document.getElementById("tribe");
	var first = document.getElementById("first");
	var privacy = document.getElementById("privacy");
	if (add_gift) {
		gift_note.style.display = '';
		billing.style.display = 'none';
		if (newsletter) {
			document.AddressForm["Edit[NEWSLETTER]"].checked = false;
			newsletter.style.display = 'none';
		}
		if (tribe) {
			document.AddressForm["Edit[TRIBE]"].checked = false;
			tribe.style.display = 'none';
		}
		if (privacy) {
			privacy.style.display = 'none';
		}
		first.innerHTML = "<span style=\"color:#EC0000\">* Gift Recipient's</span> First Name";
	}
	else {
		gift_note.style.display = 'none';
		billing.style.display = '';
		if (newsletter) {
			newsletter.style.display = '';
		}
		if (tribe) {
			tribe.style.display = '';
		}
		if (privacy) {
			privacy.style.display = '';
		}
		first.innerHTML = "* First Name";
	}
}

function CVVToggle() {
	var gift_note = document.getElementById("cvv_help");
	if (cvv_help) {
		if (cvv_help.style.display == 'none') {
			cvv_help.style.display = '';
		}
		else {
			cvv_help.style.display = 'none';
		}
	}
}

function isValidCreditCard(type, ccnum) {
	switch (type) {
		case "Visa" :
			// Visa: length 16, prefix 4, dashes optional.
			var re = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/;
			break;
		case "MasterCard" :
			// Mastercard: length 16, prefix 51-55, dashes optional.
			var re = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
			break;
		case "Discover" :
			// Discover: length 16, prefix 6011, dashes optional.
			var re = /^6011-?\d{4}-?\d{4}-?\d{4}$/;
			break;
		case "Amex" :
			// American Express: length 15, prefix 34 or 37.
			var re = /^3[4,7]\d{13}$/;
			break;
		case  "Diners" :
			// Diners: length 14, prefix 30, 36, or 38.
			var re = /^3[0,6,8]\d{12}$/;
			break;
		default :
			return false;
	}
	if (!re.test(ccnum)) {
		return false;
	}
	// Remove all dashes for the checksum checks to eliminate negative numbers
	ccnum = ccnum.split("-").join("");
	// Checksum ("Mod 10")
	// Add even digits in even length strings or odd digits in odd length strings.
	var checksum = 0;
	for (var i=(2-(ccnum.length % 2)); i<=ccnum.length; i+=2) {
		checksum += parseInt(ccnum.charAt(i-1));
	}
	// Analyze odd digits in even length strings or even digits in odd length strings.
	for (var i=(ccnum.length % 2) + 1; i<ccnum.length; i+=2) {
		var digit = parseInt(ccnum.charAt(i-1)) * 2;
		if (digit < 10) {
			checksum += digit;
		}
		else {
			checksum += (digit-9);
		}
	}
	if ((checksum % 10) == 0) {
		return true; 
	}
	else {
		return false;
	}
}

function Mandatory(form, field, message) {
	switch (form) {
		case "AddressForm" :
			var mandatory = document.AddressForm[field];
			break;
		case "CardForm" :
			var mandatory = document.CardForm[field];
			break;
	}
	if (mandatory) {
		if (mandatory.value == "") {
			alert(message);
			mandatory.focus();
			return false;
		}
		else {
			return true;
		}
	}
	else {
		alert("Field not found: '" + field + "'");
	}
}

function SendData(NextMode) {
	if (document.AddressForm["Edit[PRICEID]"]) {
		var PriceSelected = false;
		var PriceId = document.AddressForm["Edit[PRICEID]"];
		for (i=0; i<PriceId.length; i++) {
			if (PriceId[i].checked) {
				PriceSelected = true;
				break;
			}
		}
		if (!PriceSelected) {
			alert('Please select a product before submitting');
			return;
		}
	}
	if (!Mandatory("AddressForm", "Edit[FIRSTNAME]", "Please enter a 'First Name'")) return;
	if (!Mandatory("AddressForm", "Edit[LASTNAME]", "Please enter a 'Last Name'")) return;
	if (!Mandatory("AddressForm", "Edit[ADDRESS]", "Please enter an 'Address'")) return;
	if (!Mandatory("AddressForm", "Edit[CITY]", "Please enter a 'City'")) return;
	if (!Mandatory("AddressForm", "Edit[ZIP]", "Please enter a 'Zip/Postal Code'")) return;

	var obj_state = document.getElementById("StateSelect");
	var obj_country = document.getElementById("CountrySelect");
	if (obj_state && obj_country) {
		for (var c in CountryState) {
			if (obj_country.options[obj_country.selectedIndex].value == CountryState[c] && obj_state.options[obj_state.selectedIndex].value == -1) {
				alert('Please select a state');
				return;
			}
		}
	}
	var Newsletter = document.AddressForm["Edit[NEWSLETTER]"];
	if (Newsletter && Newsletter.checked) {
		if (!Mandatory("AddressForm", "Edit[EMAIL]", "Please enter an 'Email address'")) return;
	}
	var Tribe = document.AddressForm["Edit[TRIBE]"];
	if (Tribe && Tribe.checked) {
		if (!Mandatory("AddressForm", "Edit[EMAIL]", "Please enter an 'Email address'")) return;
	}
	if (obj_state) {
		obj_state.disabled = false;
	}
	if (obj_country) {
		obj_country.disabled = false;
	}
	document.AddressForm.NextMode.value = NextMode;
	document.AddressForm.submit();
}

var Submitted = false;
function SendCC() {
	if (Submitted) {
		alert('You can only submit the credit card information once. Please wait for the response.');
		return;
	}
	if (!Mandatory("CardForm", "Edit[FIRSTNAME]", "Please enter a 'First Name'")) return;
	if (!Mandatory("CardForm", "Edit[LASTNAME]", "Please enter a 'Last Name'")) return;
	if (!Mandatory("CardForm", "Edit[CREDITCARDNUMBER]", "Please enter a 'Credit Card Number'")) return;
	if (!Mandatory("CardForm", "Edit[CVV2NUMBER]", "Please enter a 'CVV' number")) return;
	var index = document.CardForm["Edit[CREDITCARDTYPE]"].selectedIndex;
	var cc_type = document.CardForm["Edit[CREDITCARDTYPE]"].options[index];
	var cc_num = document.CardForm["Edit[CREDITCARDNUMBER]"];
	if (!isValidCreditCard(cc_type.value, cc_num.value)) {
		alert('Please enter a valid combination of credit card type and credit card number');
		cc_num.focus();
		return;
	}
	Submitted = true;
	document.CardForm.submit();
}

function DownloadCancel() {
	var obj = document.getElementById('Download');
	if (obj) {
		obj.style.display = 'none';
	}
}

function DownloadSubmit() {
	if (document.download_form.email.value != "" &&CheckEmail(document.download_form.email.value)) {
		document.download_form.submit();
		DownloadCancel();
	}
	else {
		alert("Please enter a valid email address");
	}
}

function DownloadFile(file_name) {
	var obj = document.getElementById('Download');
	if (obj) {
		UpdateContent('Download', '/email_form.php?fn=' + encodeURIComponent(file_name));
		var size = getSize();
		var scroll = getScroll();
		obj.style.display = 'block';
		obj.style.left = scroll[0] + (size[0] - obj.clientWidth) / 2 + 'px';
		obj.style.top = scroll[1] + (size[1] - obj.clientHeight) / 2 + 'px';
	}
}
