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");
        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 window.open('StockAlert.aspx?CategoryId=" + ItemCat[itemId] + "','notification','status=0,toolbar=0,width=780,resizable=1,scrollbars=1');";
                    lnkCategory.target = "_self";

                    /*
                    lnkCategory.href = "StockAlert.aspx";
                    lnkCategory.target = "_blank";
                    */
                }
            }
            else {
                var ImgSO = document.getElementById("ImgSO_" + rootId);
                if (ImgSO != null) {
                    imgCategory.src = ImgSO.value;
                }
                if (lnkCategory != null) {
                    lnkCategory.href = "Category.aspx?CategoryId=" + ItemCat[itemId];
                    lnkCategory.target = "_self";
                }

            }

            if (typeof pnlImages != 'undefined') {
                pnlImages.style.visibility = "hidden";
            }
            if (typeof lnkZoom != 'undefined') {
                lnkZoom.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.style.visibility = "visible";
            }
            if (typeof lnkZoom != 'undefined') {
                lnkZoom.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 pnlDifferentAddress = document.getElementById(prefix + "pnlDifferentAddress");
    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";
    pnlDifferentAddress.style.display = "block";
    hidFindAddressDisplay.value = "0";
    hidFullAddressDisplay.value = "1";

    if (pnlContactDetails != null) {
      pnlContactDetails.style.display = "block";
    }


    var chbDifferentAddress = document.getElementById(prefix + "chbDifferentAddress");
    var pnlDeliveryAddress = document.getElementById(prefix + "pnlDeliveryAddress");

    if (pnlDeliveryAddress != null) {
      if (!chbDifferentAddress.checked) {
        pnlDeliveryAddress.style.display = "none";
      }
      else {
        pnlDeliveryAddress.style.display = "block";
      }
    }

    return false;
}

function DisplayFindAddressPanel(sender,hideContactDetails) {
    var prefix = GetControlPrefix(sender.id);
    var pnlFindAddress = document.getElementById(prefix + "pnlFindAddress");

    var pnlFullAddress = document.getElementById(prefix + "pnlFullAddress");
    var pnlDifferentAddress = document.getElementById(prefix + "pnlDifferentAddress");
    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";
    pnlDifferentAddress.style.display = "none";
    hidFindAddressDisplay.value = "1";
    hidFullAddressDisplay.value = "0";

    var pnlDeliveryAddress = document.getElementById(prefix + "pnlDeliveryAddress");
    if (pnlDeliveryAddress != null) {
      pnlDeliveryAddress.style.display = "none";
    }

    var pnlContactDetails = document.getElementById(prefix + "pnlContactDetails");
    if ((hideContactDetails == true) && (pnlContactDetails != null)) {
      pnlContactDetails.style.display = "none";
    }

    return false;
}

function DisplayFullDeliveryAddressPanel(sender,enableContinueButton) {
    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);
    }
    
    return false;
  }

  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.disabled = !enable;
    txbDeliveryAddressLine1.disabled = !enable;
    txbDeliveryAddressLine2.disabled = !enable;
    txbDeliveryAddressLine3.disabled = !enable;
    txbDeliveryTown.disabled = !enable;
    txbDeliveryCounty.disabled = !enable;
    txbDeliveryPostCode.disabled = !enable;
    
  
  }


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";
    }
    
    return false;
}

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 maxQty = parseInt(document.getElementById(prefix+"hidMaxQty").value,10);

                var stock = parseInt(document.getElementById(prefix + "hidStock").value, 10);
                var name = document.getElementById(prefix + "lblName").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 <= 0) {
                        errors[errors.length] = "Quantity for item " + name + " must be bigger that zero";
                    }
                    else */
                    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 txbQuantity = document.getElementById(prefix + "txbQuantity");
    if (Trim(txbQuantity.value).length == 0) {
        alert("A quantity must be entered");
        error = true;
    }
    else if (!IsInteger(txbQuantity.value)) {
        alert("Quantity format is incorrect");
        error = true;
    }
    else {
        var quantity = parseInt(txbQuantity.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(postcode))
     {
      return false;
      
      }
        
    return true;
  }

  function IsValidBFPO(postcode) {
    if (!(/^BFPO\s*\d+$/i).test(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) {
    try {
        var prefix = GetControlPrefix(sender.id);
        var number = document.getElementById(prefix + numberId);
        var postcode = document.getElementById(prefix + postcodeId);
        var errors = new Array();


        if (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 += "<h1>Please review the information below relating to your order:</h1>";
        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 == "GB") && (!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 Contact number supplied isn't formatted correctly";
          }
        }
    }
    catch (er) {
        alert("Error on CheckBillingAddress:" + er.description);
    }

}
function CheckShippingAddress(sender,checkShippingAddress,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 drpDeliveryJobTitle = document.getElementById(prefix + "drpDeliveryJobTitle");
        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 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 Delivery Title must be selected";
        }

        if (Trim(txbDeliveryFirstName.value).length == 0) {
            errors[errors.length] = "The Delivery First Name field cannot be empty";
        }
        if (Trim(txbDeliveryLastName.value).length == 0) {
            errors[errors.length] = "The Delivery Last Name field cannot be empty";
        }

        if (drpDeliveryJobTitle != null)
        {
            var selectedIndex = drpDeliveryJobTitle.selectedIndex;
            var value = drpDeliveryJobTitle.options[selectedIndex].value;
            if ((selectedIndex < 1) || ((value.length > 0) && (value.substring(0,1) == "#")))
            {
              errors[errors.length] = "The Delivery Job Title must be selected";
            }
        }
        /*        
        if ((txbDeliveryOrganisation) && (Trim(txbDeliveryOrganisation.value).length == 0)) {
            errors[errors.length] = "The Delivery School Name field cannot be empty";
        }
        */
        if (checkShippingAddress) {
          if ((!isBFPO) && (Trim(txbDeliveryAddressLine1.value).length == 0)) {
            errors[errors.length] = "The Delivery Address Line 1 field cannot be empty";
          }
          if ((!isBFPO) && (Trim(txbDeliveryTown.value).length == 0)) {
            errors[errors.length] = "The Delivery Town field cannot be empty";
          }
          if (Trim(txbDeliveryPostCode.value).length == 0) {
            errors[errors.length] = "The Delivery Postcode field cannot be empty";
          }
          else if (!isValidPostcode) {
            errors[errors.length] = "The Delivery Postcode supplied isn't formatted correctly";
          }
        }

        if (txbDeliveryEmail != null) {
          if (Trim(txbDeliveryEmail.value).length == 0) {
            errors[errors.length] = "The Delivery Email field cannot be empty";
          }
          else if (!IsValidEmail(txbDeliveryEmail.value)) {
            errors[errors.length] = "The Delivery Email supplied isn't formatted correctly";
          }
        }

        /*
        if (Trim(txbDeliveryPhone.value).length == 0)
        {
        errors[errors.length] = "The Delivery Phone Number field cannot be empty";
        }
        else */
        if ((Trim(txbDeliveryPhone.value).length > 0) && (!IsValidTelephoneNumber(txbDeliveryPhone.value))) {
            errors[errors.length] = "The Delivery Contact number supplied isn't formatted correctly";
        }

    }
    catch (er) {
        alert("Error on CheckshippingAddress:" + er.description);
    }
}
function CheckAddress(sender) {
    try {
        var prefix = GetControlPrefix(sender.id);
        var chbDifferentAddress = document.getElementById(prefix + "chbDifferentAddress");
        var txbEmail = document.getElementById(prefix + "txbEmail");
        var errors = new Array();

        CheckBillingAddress(sender, errors);
        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";
        }
        if (chbDifferentAddress.checked) {

            CheckShippingAddress(sender,true, errors);
        }
        else {
            /*
            if (selectedBillingCountry != "GB")
            {
            errors[errors.length] = "We can only deliver to the UK. Please enter a different address for delivery.";
            chbDifferentAddress.checked = true;
            var pnlDeliveryAddress = document.getElementById(prefix+"pnlDeliveryAddress");
            pnlDeliveryAddress.style.display = "block";
            }
            */

        }
        DisplayErrors(prefix + "pnlError", errors);


        return (errors.length == 0);
    }
    catch (er) {
        alert("Error on CheckAddress:" + er.description);
    }

}

function CheckAddressShipping(sender, checkShippingAddress,validateBillingOnlyIfFieldsPopulated) {
    try {
        var prefix = GetControlPrefix(sender.id);
        var chbDifferentAddress = document.getElementById(prefix + "chbDifferentAddress");
        var errors = new Array();

        CheckShippingAddress(sender,checkShippingAddress, errors);

        if (chbDifferentAddress.checked) {

            CheckBillingAddress(sender, errors,validateBillingOnlyIfFieldsPopulated);
        }
        else {
            /*
            if (selectedBillingCountry != "GB")
            {
            errors[errors.length] = "We can only deliver to the UK. Please enter a different address for delivery.";
            chbDifferentAddress.checked = true;
            var pnlDeliveryAddress = document.getElementById(prefix+"pnlDeliveryAddress");
            pnlDeliveryAddress.style.display = "block";
            }
            */

        }
        DisplayErrors(prefix + "pnlError", errors);


        return (errors.length == 0);
    }
    catch (er) {
        alert("Error on CheckAddressShipping:" + er.description);
    }

}

function TermsAccepted(sender) {
    try {
        var prefix = GetControlPrefix(sender.id);
        var chbAcceptTerms = document.getElementById(prefix + "chbAcceptTerms");
        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) {
            //window.open("http://www.sainsburys.co.uk/shoppingandservices/storelocator/searchresults.htm?query=" + postCode);
              window.open("http://www.sainsburys.co.uk/sol/storelocator/storelocator_landing.jsp?bmForm=stores_main_search&search_string_field=" + 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 DisplayRoundPoundDialog(roundPound, totalValue, hidRoundPoundId) {
    try {
        var hidRoundPound = document.getElementById(hidRoundPoundId);
        var result = confirm("Would you like to add an extra \u00a3" + roundPound + " to round up your order to \u00a3" + totalValue + "?");
        if (result) {
            hidRoundPound.value = "1";
        }
        else {
            hidRoundPound.value = "0";
        }
        var btnCheckOutId = GetControlPrefix(hidRoundPoundId) + "btnCheckOut";
        var btnCheckOutName = btnCheckOutId.replace(/_/g, "$");
        //var btnCheckOut = document.getElementById(prefix + "btnCheckOut");
        //ctl00$ContentPlaceHolder1$btnCheckOut
        __doPostBack(btnCheckOutName, '')
    }
    catch (er) {
        alert("Error on DisplayRoundPoundDialog: " + 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 rbNoDonation = document.getElementById(prefix + "rbNoDonation");
        var pnlGiftAid = document.getElementById(prefix + "pnlGiftAid");

        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");
        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);
    }
  }