function IEFix() {
	if ($.browser.msie && ($.browser.version == "6.0" || $.browser.version == "7.0")) {
		$('#areas span.bottom').css('bottom', '1px');
		$('#areas span.bottom').css('bottom', '0px');
		$('#footer-inner').css('margin', '1 auto');
		$('#footer-inner').css('margin', '0 auto');
		$('.find_my_address').addClass('find_my_address');
	}
}

function GetItemIdByVariations(rootId) {
	try {
		var variations = new Array();
		var hids = document.getElementsByTagName("input");
		for (var i = 0; i < hids.length; i++) {
			if (hids[i].id.indexOf("hidVar_" + rootId + "_") >= 0) {
				variations[parseInt(hids[i].id.substring(hids[i].id.lastIndexOf("_") + 1), 10)] = hids[i].value;
			}
		}

		var drps = document.getElementsByTagName("select");
		for (var i = 0; i < drps.length; i++) {
			if (drps[i].id.indexOf("drpVar_" + rootId + "_") >= 0) {
				variations[parseInt(drps[i].id.substring(drps[i].id.lastIndexOf("_") + 1), 10)] = drps[i].options[drps[i].selectedIndex].value;
			}
		}

		var sortArray = new Array();
		for (var aux in variations) {
			sortArray[sortArray.length] = aux;
		}

		sortArray.sort();
		var key = "";
		for (var i = 0; i < sortArray.length; i++) {
			key += sortArray[i] + ":" + variations[sortArray[i]] + ";";
		}
		return VarMap[rootId + ";" + key];
	}
	catch (er) {
		alert("Error on GetItemIdByVariations:" + er.description);
	}
}

function ProductVariationChanged(rootId) {
	try {
		var itemId = GetItemIdByVariations(rootId);
		var prefix = "";
		var drps = document.getElementsByTagName("select");
		for (var i = 0; i < drps.length; i++) {
			if (drps[i].id.indexOf("drpVar_" + rootId + "_") >= 0) {
				prefix = drps[i].id.substring(0, drps[i].id.indexOf("drpVar_" + rootId));
				break;
			}
		}

		var stock = Stock[itemId];
		var imgCategory = document.getElementById(prefix + "imgCategory");
		var btnBuy = document.getElementById(prefix + "btnBuy");
		var lnkCategory = document.getElementById(prefix + "lnkCategory");
		var pnlImages = document.getElementById(prefix + "pnlImages");
		//var lnkZoom = document.getElementById(prefix + "lnkZoom");
		var divZoom = document.getElementById("zoom");
		$(lnkCategory).removeClass('coming-soon');
		if ((typeof stock == 'undefined') || (stock <= 0)) {
			btnBuy.disabled = true;
			btnBuy.style.visibility = "hidden";

			var comingSoon = CSoon[itemId];
			if (comingSoon == "1") {
				var ImgCS = document.getElementById("ImgCS_" + rootId);
				if (ImgCS != null) {
					imgCategory.src = ImgCS.value;
				}

				if (lnkCategory != null) {
					lnkCategory.href = "javascript:void $('#overlay').overlay({mask: {color:'#000000',opacity:0.5},closeOnClick:false,load:true});";
					lnkCategory.target = "_self";
					$(lnkCategory).addClass('coming-soon');
					/*
					lnkCategory.href = "StockAlert.aspx";
					lnkCategory.target = "_blank";
					*/
				}
			}
			else {
				var ImgSO = document.getElementById("ImgSO_" + rootId);
				if (ImgSO != null) {
					imgCategory.src = ImgSO.value;
				}
				if (lnkCategory != null) {
					var ImgSOLink = document.getElementById("ImgSOLink_" + rootId);
					if (ImgSOLink != null) {
						lnkCategory.href = ImgSOLink.value;
						lnkCategory.target = "_self";
					} else {
						lnkCategory.href = "Category.aspx?CategoryId=" + ItemCat[itemId];
						lnkCategory.target = "_self";
					}
				}

			}

			if (typeof pnlImages != 'undefined') {
				$(pnlImages).hide();
			}
			if (typeof divZoom != 'undefined') {
				divZoom.style.visibility = "hidden";
			}


		}
		else {
			btnBuy.disabled = false;
			btnBuy.style.visibility = "visible";
			var Img = document.getElementById("Img_" + rootId);
			if (Img != null) {
				imgCategory.src = Img.value;
			}
			if (typeof lnkNoStock != 'undefined') {
				lnkNoStock.style.display = "none";
			}
			if (typeof pnlImages != 'undefined') {
				$(pnlImages).show();
			}
			if (typeof divZoom != 'undefined') {
				divZoom.style.visibility = "visible";
			}
			if (lnkCategory != null) {
				lnkCategory.href = "#";
				lnkCategory.target = "_self";
			}

		}
		try {
			DisableZoom("1");
		}
		catch (er) {
		}
	}
	catch (er) { }
}

function GetControlPrefix(id) {
	var result = "";
	if (id.lastIndexOf("_") > 0) {
		result = id.substring(0, id.lastIndexOf("_")) + "_";
	}
	return result;
}

function DisplayPanel(display, panelId) {
	var panel = document.getElementById(panelId);
	if (display) {
		panel.style.display = "block";
	}
	else {
		panel.style.display = "none";
	}
}

function DisplayFullAddressPanel(sender, enableContinueButton) {
	var prefix = GetControlPrefix(sender.id);
	var pnlFindAddress = document.getElementById(prefix + "pnlFindAddress");
	var pnlFullAddress = document.getElementById(prefix + "pnlFullAddress");
	var hidFindAddressDisplay = document.getElementById(prefix + "hidFindAddressDisplay");
	var hidFullAddressDisplay = document.getElementById(prefix + "hidFullAddressDisplay");
	var btnContinue = document.getElementById(prefix + "btnContinue");

	var pnlContactDetails = document.getElementById(prefix + "pnlContactDetails");

	pnlFindAddress.style.display = "none";
	pnlFullAddress.style.display = "block";
	btnContinue.style.display = enableContinueButton ? "block" : "none";
	hidFindAddressDisplay.value = "0";
	hidFullAddressDisplay.value = "1";

	if (pnlContactDetails != null) {
		pnlContactDetails.style.display = "block";
	}

	var hidBillingAddressUrn = document.getElementById(prefix + "hidBillingAddressUrn");
	if (hidBillingAddressUrn != null) {
		hidBillingAddressUrn.value = "";
	}

	GotoFullBillingAddress();
	IEFix();
	return false;
}

function DisplayFindAddressPanel(sender, hideContactDetails) {
	var prefix = GetControlPrefix(sender.id);
	var pnlFindAddress = document.getElementById(prefix + "pnlFindAddress");

	var pnlFullAddress = document.getElementById(prefix + "pnlFullAddress");
	var btnContinue = document.getElementById(prefix + "btnContinue");

	var hidFindAddressDisplay = document.getElementById(prefix + "hidFindAddressDisplay");
	var hidFullAddressDisplay = document.getElementById(prefix + "hidFullAddressDisplay");

	pnlFindAddress.style.display = "block";
	pnlFullAddress.style.display = "none";
	btnContinue.style.display = "none";
	hidFindAddressDisplay.value = "1";
	hidFullAddressDisplay.value = "0";

	var pnlContactDetails = document.getElementById(prefix + "pnlContactDetails");
	if ((hideContactDetails == true) && (pnlContactDetails != null)) {
		pnlContactDetails.style.display = "none";
	}

	GotoFindBillingAddress();
	IEFix();
	return false;
}

function DisplayFullDeliveryAddressPanel(sender, enableContinueButton, gotoInput) {
	var prefix = GetControlPrefix(sender.id);
	var pnlFindDeliveryAddress = document.getElementById(prefix + "pnlFindDeliveryAddress");
	var pnlFullDeliveryAddress = document.getElementById(prefix + "pnlFullDeliveryAddress");
	var hidFindDeliveryAddressDisplay = document.getElementById(prefix + "hidFindDeliveryAddressDisplay");
	var hidFullDeliveryAddressDisplay = document.getElementById(prefix + "hidFullDeliveryAddressDisplay");
	var btnContinue = document.getElementById(prefix + "btnContinue");

	var pnlDeliveryContactDetails = document.getElementById(prefix + "pnlDeliveryContactDetails");

	pnlFindDeliveryAddress.style.display = "none";
	pnlFullDeliveryAddress.style.display = "block";
	hidFindDeliveryAddressDisplay.value = "0";
	hidFullDeliveryAddressDisplay.value = "1";

	if (pnlDeliveryContactDetails != null) {
		pnlDeliveryContactDetails.style.display = "block";
	}

	btnContinue.style.display = enableContinueButton ? "block" : "none"

	var hidSchoolId = document.getElementById(prefix + "hidSchoolId");
	if (hidSchoolId != null) {
		hidSchoolId.value = "";
		EnableDeliveryMainFields(prefix, true);
	}

	var hidDeliveryAddressUrn = document.getElementById(prefix + "hidDeliveryAddressUrn");
	if (hidDeliveryAddressUrn != null) {
		hidDeliveryAddressUrn.value = "";
	}

	if (gotoInput) {
		GotoFullDeliveryAddress(true);
	}
	IEFix();
	return false;
}

function GotoFullDeliveryAddress(setInputFocus) {
	var new_position = $('.delivery_address').offset();
	window.scrollTo(new_position.left, new_position.top);
	if (setInputFocus) {
		//$('.delivery-organisation').focus();
	}
}

function GotoFindDeliveryAddress() {
	var new_position = $('.delivery_address').offset();
	window.scrollTo(new_position.left, new_position.top);
	if ($('input#edit-school').length) {
		//$('input#edit-school').focus();
	} else {
		//$('.find_delivery_address').focus();
	}
}

function GotoFullBillingAddress(setInputFocus) {
	var new_position = $('.billing_address').offset();
	window.scrollTo(new_position.left, new_position.top);
	if (setInputFocus) {
		//$('.billing_firstname').focus();
	}
}

function GotoFindBillingAddress() {
	var new_position = $('.billing_address').offset();
	window.scrollTo(new_position.left, new_position.top);
	//$('.find_billing_address').focus();
}

function EnableDeliveryMainFields(prefix, enable) {
	var txbDeliveryOrganisation = document.getElementById(prefix + "txbDeliveryOrganisation");
	var txbDeliveryAddressLine1 = document.getElementById(prefix + "txbDeliveryAddressLine1");
	var txbDeliveryAddressLine2 = document.getElementById(prefix + "txbDeliveryAddressLine2");
	var txbDeliveryAddressLine3 = document.getElementById(prefix + "txbDeliveryAddressLine3");
	var txbDeliveryTown = document.getElementById(prefix + "txbDeliveryTown");
	var txbDeliveryCounty = document.getElementById(prefix + "txbDeliveryCounty");
	var txbDeliveryPostCode = document.getElementById(prefix + "txbDeliveryPostCode");

	txbDeliveryOrganisation.readOnly = !enable;
	txbDeliveryOrganisation.style.backgroundColor = enable ? '' : '#EBEBE4';
	txbDeliveryAddressLine1.readOnly = !enable;
	txbDeliveryAddressLine1.style.backgroundColor = enable ? '' : '#EBEBE4';
	txbDeliveryAddressLine2.readOnly = !enable;
	txbDeliveryAddressLine2.style.backgroundColor = enable ? '' : '#EBEBE4';
	txbDeliveryAddressLine3.readOnly = !enable;
	txbDeliveryAddressLine3.style.backgroundColor = enable ? '' : '#EBEBE4';
	txbDeliveryTown.readOnly = !enable;
	txbDeliveryTown.style.backgroundColor = enable ? '' : '#EBEBE4';
	txbDeliveryCounty.readOnly = !enable;
	txbDeliveryCounty.style.backgroundColor = enable ? '' : '#EBEBE4';
	txbDeliveryPostCode.readOnly = !enable;
	txbDeliveryPostCode.style.backgroundColor = enable ? '' : '#EBEBE4';

}


function DisplayFindDeliveryAddressPanel(sender, hideContactDetails) {
	var prefix = GetControlPrefix(sender.id);
	var pnlFindDeliveryAddress = document.getElementById(prefix + "pnlFindDeliveryAddress");
	var pnlFullDeliveryAddress = document.getElementById(prefix + "pnlFullDeliveryAddress");
	var hidFindDeliveryAddressDisplay = document.getElementById(prefix + "hidFindDeliveryAddressDisplay");
	var hidFullDeliveryAddressDisplay = document.getElementById(prefix + "hidFullDeliveryAddressDisplay");

	pnlFindDeliveryAddress.style.display = "block";
	pnlFullDeliveryAddress.style.display = "none";
	hidFindDeliveryAddressDisplay.value = "1";
	hidFullDeliveryAddressDisplay.value = "0";


	var pnlDeliveryContactDetails = document.getElementById(prefix + "pnlDeliveryContactDetails");
	if ((hideContactDetails == true) && (pnlDeliveryContactDetails != null)) {
		pnlDeliveryContactDetails.style.display = "none";
	}

	GotoFindDeliveryAddress();
	IEFix();
	return false;
}

function EnableSameAddress(sender) {
	var prefix = GetControlPrefix(sender.id);
	var chbSameAddress = document.getElementById(prefix + "chbSameAddress");
	var enabled = true;
	if (chbSameAddress.checked) {
		enabled = false;
	}
	//SetControlEnabled("btnFindAddress", prefix, enabled);
	SetControlEnabled("txbPostCodeSearch", prefix, enabled);
	SetDropDownEnabled(".drpTitle", enabled);
	SetControlEnabled("txbFirstName", prefix, enabled);
	SetControlEnabled("txbLastName", prefix, enabled);
	SetControlEnabled("txbOrganisation", prefix, enabled);
	SetControlEnabled("txbAddressLine1", prefix, enabled);
	SetControlEnabled("txbAddressLine2", prefix, enabled);
	SetControlEnabled("txbAddressLine3", prefix, enabled);
	SetControlEnabled("txbTown", prefix, enabled);
	SetControlEnabled("txbCounty", prefix, enabled);
	SetDropDownEnabled(".drpCountry", enabled);
	SetControlEnabled("txbPostCode", prefix, enabled);
	SetControlEnabled("txbEmail", prefix, enabled);
	SetControlEnabled("txbPhone", prefix, enabled);
}

function SetDropDownEnabled(className, value) {
	$(className).selectBox(value ? 'enable' : 'disable');
}

function SetControlEnabled(name, prefix, value) {
	var control = document.getElementById(prefix + name);
	if (control) {
		control.disabled = !value;
	}
}

function CheckDonation(sender) {
	try {
		var errors = new Array();

		var prefix = GetControlPrefix(sender.id);
		var rbNoDonation = document.getElementById(prefix + "rbNoDonation");
		var rbFixedDonation = document.getElementById(prefix + "rbFixedDonation");
		var rbCustomDonation = document.getElementById(prefix + "rbCustomDonation");
		var txbDonationAmount = document.getElementById(prefix + "txbDonationAmount");
		var chbGiftAid = document.getElementById(prefix + "chbGiftAid");
		if (rbFixedDonation.checked) {
		}
		else if (rbCustomDonation.checked) {
			if (Trim(txbDonationAmount.value).length == 0) {
				errors[errors.length] = "Donation amount must be entered when \"Add your own amount\" is selected";
			}
			else {
				if (isNaN(txbDonationAmount.value)) {
					errors[errors.length] = "Donation amount format is incorrect. Please use a number";
				}
				else if (parseFloat(txbDonationAmount.value) <= 0) {
					errors[errors.length] = "Donation amount must be bigger than zero";
				}
			}
		}
		else {
			/*
			if (chbGiftAid.checked) {
			errors[errors.length] = "A donation must be made in order to select \"Gift aid\"";
			}*/
		}
		DisplayErrors(prefix + "pnlError", errors);

		return errors.length == 0

	}
	catch (er) {
		alert("Error on CheckDonation:" + er.description);
	}
}

function CheckQuantities(sender) {
	try {
		var elements = document.getElementsByTagName("input");
		var errors = new Array();
		for (var i = 0; i < elements.length; i++) {
			if (elements[i].id.indexOf("hidItemId") >= 0) {
				var prefix = GetControlPrefix(elements[i].id);
				var itemId = elements[i].value;
				var stock = parseInt(document.getElementById(prefix + "hidStock").value, 10);
				var lbl = document.getElementById(prefix + "lblName");
				if (lbl == null) {
					lbl = document.getElementById(prefix + "lnkCategory");
				}
				var name = lbl.innerHTML;
				var txbQuantity = document.getElementById(prefix + "txbQuantity");
				if (Trim(txbQuantity.value).length == 0) {
					errors[errors.length] = "Quantity for item " + name + " must be entered";
				}
				else if (!IsInteger(txbQuantity.value)) {
					errors[errors.length] = "Quantity for item " + name + " format is incorrect";
				}
				else {
					var quantity = parseInt(txbQuantity.value, 10);
					if (quantity > stock) {
						errors[errors.length] = "Not enough stock for item " + name;
					}
				}
			}
		}

		DisplayErrors(GetControlPrefix(sender.id) + "pnlError", errors);

		return errors.length == 0
	}
	catch (er) {
		alert("Error on CheckQuantities:" + er.description);
	}

	return false;
}

function CheckQuantityTextBox(sender, rootId) {
	var error = false;
	var prefix = GetControlPrefix(sender.id);
	var drpQuantity = document.getElementById(prefix + "txbQuantity");
	if (drpQuantity == null) {
		return true;
	}
	if (Trim(drpQuantity.value).length == 0) {
		alert("A quantity must be entered");
		error = true;
	}
	else if (!IsInteger(drpQuantity.value)) {
		alert("Quantity format is incorrect");
		error = true;
	}
	else {
		var quantity = parseInt(drpQuantity.value, 10);
		if (quantity <= 0) {
			alert("Quantity must be bigger that zero");
			error = true;
		}
		else {

			if (rootId != null) {
				var itemId = GetItemIdByVariations(rootId);
				if (quantity > Stock[itemId]) {
					alert("There's not enough quantity of this item");
					error = true;
				}
				/*  if (quantity > MaxQty[itemId])
				{
				alert("Maximum quantity for this item is "+MaxQty[itemId]);
				error = true;
				}
				*/
			}


		}

	}
	return !error;

}
function Trim(value) {
	return value.replace(/^\s+|\s+$/g, '');
}
function IsInteger(value) {
	var error = false;

	if ((value.indexOf(".") >= 0) || (value.indexOf(",") >= 0)) {
		error = true;
	}
	else if (isNaN(value)) {
		error = true;
	}
	return !error;
}
function IsValidPostcode(postcode) {
	if (!/^[A-Za-z]{1,2}(\d{1,2}|\d{1}[A-Za-z]{1})[ ]?\d[A-Za-z]{2}$/.test(Trim(postcode))) {
		return false;
	}
	return true;
}

function IsValidBFPO(postcode) {
	if (!(/^BFPO\s*\d+$/i).test(Trim(postcode))) {
		return false;
	}
	return true;
}

function IsValidTelephoneNumber(tel) {
	if (!/^(\([\+ ]?\d+\)|[\+ ]?\d+)\s?\d{4}[- ]?\d+$/.test(tel))
		return false;
	return true;
}
function IsValidEmail(email) {
	var exclude = /[^@\-\.\w\_]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
	var check = /@[\w\-]+\./;
	var checkend = /\.[a-zA-Z]{2,3}$/;
	if (((email.search(exclude) != -1) || (email.search(check)) == -1) || (email.search(checkend) == -1)) {
		return false;
	} else {
		return true;
	}
}

function CheckLookup(sender, numberId, postcodeId, type, checkSameAs) {
	try {
		if (checkSameAs && ($("p.same_as input").is(':checked'))) {
			return false;
		}
		var prefix = GetControlPrefix(sender.id);
		var number = numberId ? document.getElementById(prefix + numberId) : null;
		var postcode = document.getElementById(prefix + postcodeId);
		var errors = new Array();

		if (number && Trim(number.value).length == 0) {
			errors[errors.length] = "The " + type + " House Number field cannot be empty";
		}
		if (Trim(postcode.value).length == 0) {
			errors[errors.length] = "The " + type + " Postcode field cannot be empty";
		}
		else if (!IsValidPostcode(postcode.value)) {
			errors[errors.length] = "The " + type + " Postcode supplied isn't formatted correctly";
		}

		DisplayErrors(prefix + "pnlError", errors);

		return errors.length == 0;
	}
	catch (er) {
		alert("Error on CheckLookup:" + er.description);
	}
}
function DisplayErrors(pnlErrorId, errors) {
	var pnlError = document.getElementById(pnlErrorId);
	if (errors.length > 0) {

		var errorMessage = "";
		errorMessage += "<p id='error-title'>Please review the information below relating to your order:</p>";
		errorMessage += "<ul>";
		for (var i = 0; i < errors.length; i++) {
			errorMessage += "<li>" + errors[i] + "</li>";
		}
		errorMessage += "</ul>";
		pnlError.innerHTML = errorMessage;
		pnlError.style.display = "block";
		window.scrollBy(0, -100000);
	}
	else {
		pnlError.style.display = "none";
	}
}

function CheckBillingAddress(sender, errors, validateOnlyIfFieldsPopulated) {
	try {
		var prefix = GetControlPrefix(sender.id);

		var drpTitle = document.getElementById(prefix + "drpTitle");
		var txbFirstName = document.getElementById(prefix + "txbFirstName");
		var txbLastName = document.getElementById(prefix + "txbLastName");
		var drpJobTitle = document.getElementById(prefix + "drpJobTitle");
		var txbOrganisation = document.getElementById(prefix + "txbOrganisation");
		var txbAddressLine1 = document.getElementById(prefix + "txbAddressLine1");
		var txbAddressLine2 = document.getElementById(prefix + "txbAddressLine2");
		var txbAddressLine3 = document.getElementById(prefix + "txbAddressLine3");
		var txbTown = document.getElementById(prefix + "txbTown");
		var txbCounty = document.getElementById(prefix + "txbCounty");
		var txbPostCode = document.getElementById(prefix + "txbPostCode");
		var txbPhone = document.getElementById(prefix + "txbPhone");
		var drpCountry = document.getElementById(prefix + "drpCountry");
		var selectedBillingCountry = drpCountry.options[drpCountry.selectedIndex].value;


		var performValidation = true;

		if (validateOnlyIfFieldsPopulated == true) {
			performValidation = (drpTitle.selectedIndex > 0) ||
          (Trim(txbFirstName.value).length > 0) ||
          (Trim(txbLastName.value).length > 0) ||
          ((drpJobTitle != null) && (drpJobTitle.selectedIndex > 0)) ||
          (Trim(txbOrganisation.value).length > 0) ||
          (Trim(txbAddressLine1.value).length > 0) ||
          (Trim(txbAddressLine2.value).length > 0) ||
          (Trim(txbAddressLine3.value).length > 0) ||
          (Trim(txbTown.value).length > 0) ||
          (Trim(txbCounty.value).length > 0) ||
          (Trim(txbPostCode.value).length > 0) ||
          (Trim(txbPhone.value).length > 0);
		}

		if (performValidation) {

			var isValidPostcode = IsValidPostcode(txbPostCode.value);
			var isBFPO = false;
			if (!isValidPostcode) {
				isValidPostcode = IsValidBFPO(txbPostCode.value);
				isBFPO = isValidPostcode;
			}

			if (drpTitle.options[drpTitle.selectedIndex].value.length == 0) {
				errors[errors.length] = "The Billing Title must be selected";
			}
			if (Trim(txbFirstName.value).length == 0) {
				errors[errors.length] = "The Billing First Name field cannot be empty";
			}
			if (Trim(txbLastName.value).length == 0) {
				errors[errors.length] = "The Billing Last Name field cannot be empty";
			}

			if (drpJobTitle != null) {
				var selectedIndex = drpJobTitle.selectedIndex;
				var value = drpJobTitle.options[selectedIndex].value;
				if ((selectedIndex < 1) || ((value.length > 0) && (value.substring(0, 1) == "#"))) {
					errors[errors.length] = "The Billing Job Title must be selected";
				}
			}

			if ((!isBFPO) && (Trim(txbAddressLine1.value).length == 0)) {
				errors[errors.length] = "The Billing Address field cannot be empty";
			}
			if ((!isBFPO) && (Trim(txbTown.value).length == 0)) {
				errors[errors.length] = "The Billing Town field cannot be empty";
			}
			if (Trim(txbPostCode.value).length == 0) {
				errors[errors.length] = "The Billing Postcode field cannot be empty";
			}
			else if ((selectedBillingCountry == "UK") && (!isValidPostcode)) {
				errors[errors.length] = "The Billing Postcode supplied isn't formatted correctly";
			}

			/*
			if (Trim(txbPhone.value).length == 0)
			{
			errors[errors.length] = "The Billing Phone number field cannot be empty";
			}
			else */
			if ((Trim(txbPhone.value).length > 0) && (!IsValidTelephoneNumber(txbPhone.value))) {
				errors[errors.length] = "The Billing Telephone number supplied isn't formatted correctly";
			}
		}
	}
	catch (er) {
		alert("Error on CheckBillingAddress:" + er.description);
	}

}

function SetJobTitle(value, txbJobTitleId) {
	var drpDeliveryJobTitle = document.getElementById('drpDeliveryJobTitle');
	if (drpDeliveryJobTitle == null) {
		return;
	}
	drpDeliveryJobTitle.value = value;
	if (drpDeliveryJobTitle.value) {
	} else {
		drpDeliveryJobTitle.value = "Early Years other";
		document.getElementById(txbJobTitleId).value = value;
	}
}

function CheckShippingAddress(sender, checkShippingAddress, areaid, errors) {
	try {
		var prefix = GetControlPrefix(sender.id);
		var drpDeliveryTitle = document.getElementById(prefix + "drpDeliveryTitle");
		var txbDeliveryFirstName = document.getElementById(prefix + "txbDeliveryFirstName");
		var txbDeliveryLastName = document.getElementById(prefix + "txbDeliveryLastName");
		var drpEstablishment = document.getElementById(prefix + "drpEstablishment");
		var txbDeliveryOrganisation = document.getElementById(prefix + "txbDeliveryOrganisation");
		var txbDeliveryAddressLine1 = document.getElementById(prefix + "txbDeliveryAddressLine1");
		var txbDeliveryTown = document.getElementById(prefix + "txbDeliveryTown");
		var txbDeliveryPostCode = document.getElementById(prefix + "txbDeliveryPostCode");
		var txbDeliveryPhone = document.getElementById(prefix + "txbDeliveryPhone");
		var txbDeliveryEmail = document.getElementById(prefix + "txbDeliveryEmail");
		var txbDeliveryEmailConfirmation = document.getElementById(prefix + "txbDeliveryEmailConfirmation");
		var txbDeliveryJobTitle = document.getElementById(prefix + "txbDeliveryJobTitle");

		var isValidPostcode = IsValidPostcode(txbDeliveryPostCode.value);
		var isBFPO = false;
		if (!isValidPostcode) {
			isValidPostcode = IsValidBFPO(txbDeliveryPostCode.value);
			isBFPO = isValidPostcode;
		}

		if (drpDeliveryTitle.options[drpDeliveryTitle.selectedIndex].value.length == 0) {
			errors[errors.length] = "The Title must be selected";
		}

		if (Trim(txbDeliveryFirstName.value).length == 0) {
			errors[errors.length] = "The First Name field cannot be empty";
		}
		if (Trim(txbDeliveryLastName.value).length == 0) {
			errors[errors.length] = "The Last Name field cannot be empty";
		}

		if (drpEstablishment != null) {
			if (drpEstablishment.value.length == 0) {
				errors[errors.length] = "The Establishment must be selected";
			} else {
				var establishment = drpEstablishment.value;
				var val = '';
				switch (establishment) {
					case "Early Years":
						val = $('.jobtitle-select-early-years').val();
						break;
					case "Primary":
						val = $('.jobtitle-select-primary').val();
						break;
					case "Secondary":
						val = $('.jobtitle-select-secondary').val();
						break;
				}
				if ((val.length == 0) || ((val == "other") && (Trim(txbDeliveryJobTitle.value).length == 0))) {
					errors[errors.length] = "The Job Title must be selected";
				}
			}
		}

		if (checkShippingAddress) {
			if ((!isBFPO) && (Trim(txbDeliveryOrganisation.value).length == 0)) {
				if (areaid == 3) {
					errors[errors.length] = "The School field cannot be empty";
				}
			}
			var errorPrefix = (areaid == 3 ? "School " : "");
			if ((!isBFPO) && (Trim(txbDeliveryAddressLine1.value).length == 0)) {
				errors[errors.length] = "The " + errorPrefix + "Address Line 1 field cannot be empty";
			}
			if ((!isBFPO) && (Trim(txbDeliveryTown.value).length == 0)) {
				errors[errors.length] = "The " + errorPrefix + "Town field cannot be empty";
			}
			if (Trim(txbDeliveryPostCode.value).length == 0) {
				errors[errors.length] = "The " + errorPrefix + "Postcode field cannot be empty";
			}
			else if (!isValidPostcode) {
				errors[errors.length] = "The " + errorPrefix + "Postcode supplied isn't formatted correctly";
			}
		}

		if (txbDeliveryEmail != null) {
			if (Trim(txbDeliveryEmail.value).length == 0) {
				errors[errors.length] = "The Email field cannot be empty";
			}
			else if (!IsValidEmail(txbDeliveryEmail.value)) {
				errors[errors.length] = "The Email supplied isn't formatted correctly";
			}
			else if ((txbDeliveryEmailConfirmation != null) && (txbDeliveryEmail.value != txbDeliveryEmailConfirmation.value)) {
				errors[errors.length] = "The email fields don't match";
			}
		}

		if (txbDeliveryPhone != null) {
			if ((Trim(txbDeliveryPhone.value).length > 0) && (!IsValidTelephoneNumber(txbDeliveryPhone.value))) {
				errors[errors.length] = "The Telephone number supplied isn't formatted correctly";
			}
		}

	}
	catch (er) {
		alert("Error on CheckshippingAddress:" + er.description);
	}
}
function CheckAddress(sender, areaid) {
	try {
		var prefix = GetControlPrefix(sender.id);
		var chbSameAddress = document.getElementById(prefix + "chbSameAddress");
		var errors = new Array();
		CheckShippingAddress(sender, true, areaid, errors);
		if (chbSameAddress == null || chbSameAddress.checked) {
		} else {
			CheckBillingAddress(sender, errors);
			var txbEmail = document.getElementById(prefix + "txbEmail");
			if (Trim(txbEmail.value).length == 0) {
				errors[errors.length] = "The Billing Email field cannot be empty";
			} else if (!IsValidEmail(txbEmail.value)) {
				errors[errors.length] = "The Billing Email supplied isn't formatted correctly";
			}
		}
		var txbNumberOfChildren = document.getElementById(prefix + "txbNumberOfChildren");
		if (txbNumberOfChildren != null) {
			if (Trim(txbNumberOfChildren.value).length > 0) {
				if (!IsInteger(txbNumberOfChildren.value)) {
					errors[errors.length] = "The Number of Pupils supplied isn't formatted correctly. Please enter a numerical value from 0 to 3000";
				} else {
					var quantity = parseInt(txbNumberOfChildren.value, 10);
					if (quantity > 3000 || quantity < 0) {
						errors[errors.length] = "The Number of Pupils supplied isn't formatted correctly. Please enter a numerical value from 0 to 3000";
					}
				}
			}
		}
		DisplayErrors(prefix + "pnlError", errors);
		if (errors.length == 0 && (areaid == 2 || areaid == 1)) {
			return ConfirmationPageValidate(sender);
		}
		return (errors.length == 0);
	}
	catch (er) {
		alert("Error on CheckAddress:" + er.description);
	}

}

function ConfirmationPageValidate(sender) {
	return TermsAccepted(sender) && SignupEmailChecked(sender);
}

function SignupEmailChecked(sender) {
	try {
		if (!($('.signup-email-yes input').is(':checked') || $('.signup-email-no input').is(':checked') ||
			$('.signup-email-null input').is(':checked'))) {
			alert("Please confirm your email preferences");
			return false;
		}
		return true;
	}
	catch (er) {
		alert("Error on SignupEmailChecked:" + er.description);
	}
}

function TermsAccepted(sender) {
	try {
		var prefix = GetControlPrefix(sender.id);
		var chbAcceptTerms = document.getElementById(prefix + "chbAcceptTerms");
		if (chbAcceptTerms == null) {
			return true;
		}
		if (!chbAcceptTerms.checked) {
			alert("Please confirm that you accept the terms and conditions");
		}
		return chbAcceptTerms.checked;
	}
	catch (er) {
		alert("Error on TermsAccepted:" + er.description);
	}

}

function StoreFind(sender) {
	try {
		var prefix = GetControlPrefix(sender.id);
		var txbPostCode = document.getElementById(prefix + "txbPostCode");
		if (txbPostCode.value.length == 0) {
			alert("You need to introduce the Post Code");
		}
		else {
			var postCode = txbPostCode.value;
			var match = /^([A-Za-z]{1,2})(\d{1,2}|\d{1}[A-Za-z]{1})[ ]?(\d[A-Za-z]{2})$/i.exec(postCode);

			if ((match != null) && (match.length == 4)) {
				postCode = match[1] + match[2] + " " + match[3];
			}

			if (document.getElementById("sainsburys").checked) {
				_gaq.push(['_trackEvent', 'Buttons', 'Sainsburys', 'SR12 Shop']);
				window.open("http://www.sainsburys.co.uk/sol/storelocator/storelocator_landing.jsp?bmForm=stores_main_search&search_string_field=" + postCode);
			} else if (document.getElementById("sportsdirect").checked) {
				_gaq.push(['_trackEvent', 'Buttons', 'Sports Direct', 'SR12 Shop']);
				window.open("http://www.sportsdirect.com/Storelocator.aspx?id=sportsdirect&code=" + postCode);
			} else if (document.getElementById("tkmaxx").checked) {
				//window.open("http://www.tkmaxx.com/storefinder.aspx?type=postcode&value=" + postCode);
				//window.open("TKMaxx.aspx?type=postcode&value=" + postCode);
				window.open("http://www.tkmaxx.com/page/storelocator");
			} else if (document.getElementById("oxfam").checked) {
				window.open("http://www.oxfam.org.uk/shops/content/shopfinder.php?postcode=" + postCode.replace(/\s/g, "+"));
			}
		}
	}
	catch (er) {
		alert("Error on StoreFind:" + er.description);
	}
}

function ForceUppercase(sender) {
	try {
		if (sender.value.length > 0) {
			//var last = sender.value.substring(sender.valueOf.length - 1);
			sender.value = sender.value.toUpperCase();
		}
	}
	catch (er) {
		alert("Error on ForceUppercase");
	}
}


function DonationChange(sender) {
	try {
		var prefix = GetControlPrefix(sender.id);
		var pnlGiftAid = document.getElementById(prefix + "pnlGiftAid");
		if (pnlGiftAid != null) {
			var rbNoDonation = document.getElementById(prefix + "rbNoDonation");
			if (rbNoDonation.checked) {
				pnlGiftAid.style.display = "none";
			}
			else {
				pnlGiftAid.style.display = "block";
			}
		}
	}
	catch (er) {
		alert("Error on DonationChange:" + er.description);
	}
}
function RoundPoundChange(sender) {
	try {
		var prefix = GetControlPrefix(sender.id);
		var pnlRoundPoundGiftAid = document.getElementById(prefix + "pnlRoundPoundGiftAid");
		if (pnlRoundPoundGiftAid != null) {
			var chbRoundPound = document.getElementById(prefix + "chbRoundPound");
			if (chbRoundPound.checked) {
				pnlRoundPoundGiftAid.style.display = "block";
			}
			else {
				pnlRoundPoundGiftAid.style.display = "none";
			}
		}
	}
	catch (er) {
		alert("Error on RoundPoundChange:" + er.description);
	}
}

function CheckJobTitle(sender) {
	var value = sender.options[sender.selectedIndex].value;
	if ((value.length > 0) && (value.substring(0, 1) == "#")) {
		//sender.selectedIndex = 0;
		//sender.size = 10;
	}
	//alert(value);
	return false;
}

function SelectCustomDonation(sender) {
	try {

		if (sender.value.length > 0) {
			var prefix = GetControlPrefix(sender.id);
			var rbCustomDonation = document.getElementById(prefix + "rbCustomDonation");
			rbCustomDonation.checked = true;
		}
	}
	catch (er) {
		alert("Error on SelectCustomDonation:" + er.description);
	}
}

function SetUniqueRadioButton(nameregex, current) {
	re = new RegExp(nameregex);
	for (i = 0; i < document.forms[0].elements.length; i++) {
		elm = document.forms[0].elements[i]
		if (elm.type == 'radio') {
			if (re.test(elm.name)) {
				elm.checked = false;
			}
		}
	}
	current.checked = true;
}

function DeliveryJobTitleUpdate() {
	var establishment = $('.establishment-select').val();
	var val = null;
	switch (establishment) {
		case "Early Years":
			val = $('.jobtitle-select-early-years').val();
			break;
		case "Primary":
			val = $('.jobtitle-select-primary').val();
			break;
		case "Secondary":
			val = $('.jobtitle-select-secondary').val();
			break;
	}
	if (val == "other") {
		$('#job_title_other').show();
	} else {
		$('#job_title_other').hide();
	}
}

function ParseAutocompleteResponse(data) {
	var parsed = [];
	$(data).find("string").each(function () {
		var arr = $(this).text().split("\n");
		for (var i = 0; i < arr.length; i++) {
			var value = arr[i];
			if (value) {
				var valArr = value.split("|");
				var displayValue = valArr[0] + ", " + valArr[4] + ", " + valArr[5];
				parsed[parsed.length] = {
					data: [displayValue],
					value: value,
					result: [displayValue]
				};
			}
		}
	});
	DisplayFullDeliveryAddressPanel(jQuery(".delivery-address-manually")[0], true, false);
	if (parsed.length == 0) {
		jQuery('#kit-no-matches').show();
	} else {
		jQuery('#kit-no-matches').hide();
	}
	return parsed;
}

function BeforeSelectAutocomplete(event, data, formatted) {
	try {
		var valArr = formatted.split("|");
		jQuery('.delivery-organisation').val(valArr[0]);
		jQuery('.delivery-address1').val(valArr[1]);
		jQuery('.delivery-address2').val(valArr[2]);
		jQuery('.delivery-address3').val(valArr[3]);
		jQuery('.delivery-town').val(valArr[4]);
		jQuery('.delivery-postcode').val(valArr[5]);
		jQuery('input[type=hidden][name$="hidSchoolId"]').val(valArr[6]);
		jQuery('input[type=hidden][name$="hidOrganisationType"]').val(valArr[7]);
		EnableDeliveryMainAddressFields(false);
		GotoFullDeliveryAddress(false);
	} catch (e) {
		alert('Error on BeforeSelectAutocomplete: ' + e.description);
	}

}

function EnableDeliveryMainAddressFields(enabled) {
	try {
		var prefix = GetControlPrefix(jQuery(".delivery-address-manually")[0].id);
		EnableDeliveryMainFields(prefix, enabled);
	} catch (e) {
		alert('Error on EnableDeliveryMainAddressFields: ' + e.description);
	}
}


