﻿function basket_checkAddresses(onlymusic)
{
    var inputOK = true;
    var errorMessage = errorMessageText

    /* Check for birthdate */
    var text = util_trim(document.getElementById("basket-birthdate").value);
    var nowDate = new Date();
    var validDate = util_validateDate(util_trim(text), 1900, nowDate.getYear() + 1900);
    if (text == "" || !validDate) {
        inputOK = false;
        var errorText = "<br/> - " + birthdateText;
        if (!validDate) {
            errorText += ": " + nonValidDateText;
        }
        errorMessage = errorMessage.replace(/%birthdate%/, errorText);
        document.getElementById("basket-birthdate").className = "error";
    }
    else {
        errorMessage = errorMessage.replace(/%birthdate%/, "");
        document.getElementById("basket-birthdate").className = "";
    }
    
    /* Check for email */
    text = util_trim(document.getElementById("basket-email").value);
    var validEmail = util_validateEmail(util_trim(text));
    if (text == "" || !validEmail) {
        inputOK = false;
        var errorText = "<br/> - " + emailText;
        if(!validEmail) {
            errorText += ": " + nonValidEmailText;
        }
        errorMessage = errorMessage.replace(/%email%/, errorText);
        document.getElementById("basket-email").className = "error";
    }
    else {
        errorMessage = errorMessage.replace(/%email%/, "");
        document.getElementById("basket-email").className = "";
    }
        
    /* Check for firstname */
    text = util_trim(document.getElementById("basket-da-firstname").value);
    if (text == "") {
        inputOK = false;
        errorMessage = errorMessage.replace(/%da_firstname%/, "<br/> - " + (!onlymusic ? "(" + deliveryAddressText + ") " : "") + firstnameText);
        document.getElementById("basket-da-firstname").className = "error";
    }
    else {
        errorMessage = errorMessage.replace(/%da_firstname%/, "");
        document.getElementById("basket-da-firstname").className = "";
    }

    /* Check for lastname */
    text = util_trim(document.getElementById("basket-da-lastname").value);
    if (text == "") {
        inputOK = false;
        errorMessage = errorMessage.replace(/%da_lastname%/, "<br/> - " + (!onlymusic ? "(" + deliveryAddressText + ") " : "") + lastnameText);
        document.getElementById("basket-da-lastname").className = "error";
    }
    else {
        errorMessage = errorMessage.replace(/%da_lastname%/, "");
        document.getElementById("basket-da-lastname").className = "";
    }

    if(!onlymusic) {
        /**
          * Check for delivery address */
          
        /* Check for address */
        text = util_trim(document.getElementById("basket-da-address").value);
        if (text == "") {
            inputOK = false;
            errorMessage = errorMessage.replace(/%da_address%/, "<br/> - (" + deliveryAddressText + ") " + addressText);
            document.getElementById("basket-da-address").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%da_address%/, "");
            document.getElementById("basket-da-address").className = "";
        }

        /* Check for ZIP */
        text = util_trim(document.getElementById("basket-da-zip").value);
        var validZIP = util_validateSwissZIP(text);
        if (text == "" || validZIP === false) {
            inputOK = false;
            var errorText = "<br/> - (" + deliveryAddressText + ") " + zipText;
            if (validZIP === false) {
                errorText += ": " + nonValidZIPText;
            }
            errorMessage = errorMessage.replace(/%da_zip%/, errorText);
            document.getElementById("basket-da-zip").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%da_zip%/, "");
            document.getElementById("basket-da-zip").className = "";
        }

        /* Check for city */
        text = util_trim(document.getElementById("basket-da-place").value);
        if (text == "") {
            inputOK = false;
            errorMessage = errorMessage.replace(/%da_place%/, "<br/> - (" + deliveryAddressText + ") " + placeText);
            document.getElementById("basket-da-place").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%da_place%/, "");
            document.getElementById("basket-da-place").className = "";
        }

        /* Check for phone */
        text = util_trim(document.getElementById("basket-da-phone").value);
        var validPhone = util_validateSwissPhonenumber(text, true, true, true, true, true);
        if (text == "" || !validPhone) {
            inputOK = false;
            var errorText = "<br/> - (" + deliveryAddressText + ") " + phoneText;
            if (validPhone === false) {
                errorText += ": " + nonValidPhoneNumberText;
            }
            errorMessage = errorMessage.replace(/%da_phone%/, errorText);
            document.getElementById("basket-da-phone").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%da_phone%/, "");
            document.getElementById("basket-da-phone").className = "";
        }

        /* Check for fax (if entered) */
        text = util_trim(document.getElementById("basket-da-fax").value);
        if (text != "") {
            validPhone = util_validateSwissPhonenumber(text, true, true, true, true, true);
            if (!validPhone) {
                inputOK = false;
                var errorText = "<br/> - (" + deliveryAddressText + ") " + faxText;
                if (validPhone === false) {
                    errorText += ": " + nonValidFaxNumberText;
                }
                errorMessage = errorMessage.replace(/%da_fax%/, errorText);
                document.getElementById("basket-da-fax").className = "error";
            }
            else {
                errorMessage = errorMessage.replace(/%da_fax%/, "");
                document.getElementById("basket-da-fax").className = "";
            }
        } else {
            errorMessage = errorMessage.replace(/%da_fax%/, "");
            document.getElementById("basket-da-fax").className = "";
        }

        /**
         * Check for billing address */
         
        var sameAsDelEl = document.getElementById("basket-ba-sameasdelivery");
        var checked = sameAsDelEl != null ? sameAsDelEl.checked : false;

        /* Check for firstname */
        text = util_trim(document.getElementById("basket-ba-firstname").value);
        if (!checked && text == "") {
            inputOK = false;
            errorMessage = errorMessage.replace(/%ba_firstname%/, "<br/> - (" + billingAddressText + ") " + firstnameText);
            document.getElementById("basket-ba-firstname").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%ba_firstname%/, "");
            document.getElementById("basket-ba-firstname").className = "";
        }

        /* Check for lastname */
        text = util_trim(document.getElementById("basket-ba-lastname").value);
        if (!checked && text == "") {
            inputOK = false;
            errorMessage = errorMessage.replace(/%ba_lastname%/, "<br/> - (" + billingAddressText + ") " + lastnameText);
            document.getElementById("basket-ba-lastname").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%ba_lastname%/, "");
            document.getElementById("basket-ba-lastname").className = "";
        }

        /* Check foraddress */
        text = util_trim(document.getElementById("basket-ba-address").value);
        if (!checked && text == "") {
            inputOK = false;
            errorMessage = errorMessage.replace(/%ba_address%/, "<br/> - (" + billingAddressText + ") " + addressText);
            document.getElementById("basket-ba-address").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%ba_address%/, "");
            document.getElementById("basket-ba-address").className = "";
        }

        /* Check for ZIP */
        text = util_trim(document.getElementById("basket-ba-zip").value);
        validZIP = util_validateSwissZIP(text);
        if (!checked && (text == "" || validZIP === false)) {
            inputOK = false;
            var errorText = "<br/> - (" + billingAddressText + ") " + zipText;
            if (validZIP === false) {
                errorText += ": " + nonValidZIPText;
            }
            errorMessage = errorMessage.replace(/%ba_zip%/, errorText);
            document.getElementById("basket-ba-zip").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%ba_zip%/, "");
            document.getElementById("basket-ba-zip").className = "";
        }

        /* Check for city */
        text = util_trim(document.getElementById("basket-ba-place").value);
        if (!checked && text == "") {
            inputOK = false;
            errorMessage = errorMessage.replace(/%ba_place%/, "<br/> - (" + billingAddressText + ") " + placeText);
            document.getElementById("basket-ba-place").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%ba_place%/, "");
            document.getElementById("basket-ba-place").className = "";
        }

        /* Check for phone */
        text = util_trim(document.getElementById("basket-ba-phone").value);
        validPhone = util_validateSwissPhonenumber(text, true, true, true, true, true);
        if (!checked && (text == "" || !validPhone)) {
            inputOK = false;
            var errorText = "<br/> - (" + billingAddressText + ") " + phoneText;
            if (validPhone === false) {
                errorText += ": " + nonValidPhoneNumberText;
            }
            errorMessage = errorMessage.replace(/%ba_phone%/, errorText);
            document.getElementById("basket-ba-phone").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%ba_phone%/, "");
            document.getElementById("basket-ba-phone").className = "";
        }

        /* Check for fax (if entered) */
        text = util_trim(document.getElementById("basket-ba-fax").value);
        if (!checked && text != "") {
            validPhone = util_validateSwissPhonenumber(text, true, true, true, true, true);
            if (!validPhone) {
                inputOK = false;
                var errorText = "<br/> - (" + billingAddressText + ") " + faxText;
                if (validPhone === false) {
                    errorText += ": " + nonValidFaxNumberText;
                }
                errorMessage = errorMessage.replace(/%ba_fax%/, errorText);
                document.getElementById("basket-ba-fax").className = "error";
            }
            else {
                errorMessage = errorMessage.replace(/%ba_fax%/, "");
                document.getElementById("basket-ba-fax").className = "";
            }
        } else {
            errorMessage = errorMessage.replace(/%ba_fax%/, "");
            document.getElementById("basket-ba-fax").className = "";
        }
    }
    else
    {
        errorMessage = errorMessage.replace(/%da_address%/, "");
        errorMessage = errorMessage.replace(/%da_zip%/, "");
        errorMessage = errorMessage.replace(/%da_place%/, "");
        errorMessage = errorMessage.replace(/%da_phone%/, "");
        errorMessage = errorMessage.replace(/%da_fax%/, "");
        errorMessage = errorMessage.replace(/%ba_firstname%/, "");
        errorMessage = errorMessage.replace(/%ba_lastname%/, "");
        errorMessage = errorMessage.replace(/%ba_address%/, "");
        errorMessage = errorMessage.replace(/%ba_zip%/, "");
        errorMessage = errorMessage.replace(/%ba_place%/, "");
        errorMessage = errorMessage.replace(/%ba_phone%/, "");
        errorMessage = errorMessage.replace(/%ba_fax%/, "");
    }

    if (!inputOK) {
        page_showAlert(errorTitleText, errorMessage, [{title: okText, action: null, hide: true}], 0, {});
    }
    else {
        if (!onlymusic) {
            document.getElementById("basket-ba-company").disabled = false;
            document.getElementById("basket-ba-title").disabled = false;
            document.getElementById("basket-ba-firstname").disabled = false;
            document.getElementById("basket-ba-lastname").disabled = false;
            document.getElementById("basket-ba-address").disabled = false;
            document.getElementById("basket-ba-zip").disabled = false;
            document.getElementById("basket-ba-place").disabled = false;
            document.getElementById("basket-ba-phone").disabled = false;
            document.getElementById("basket-ba-fax").disabled = false;
        }
        document.getElementById("basket-addresses").submit();
    }
}

function basket_transferAddressValue(srcEl, destEl)
{
    var sameAsDelEl = document.getElementById("basket-ba-sameasdelivery");
    var checked = sameAsDelEl != null ? sameAsDelEl.checked : false;
    if (checked) {
        destEl.disabled = false;
        if (srcEl.type == "select") {
            util_setSelectionValue(destEl, srcEl.value);
        } else {
            destEl.value = srcEl.value;
        }
        destEl.disabled = true;
    }
    return true;
}

function basket_sameAsDeliveryAddressChanged(isInitial)
{
    var sameAsDelEl = document.getElementById("basket-ba-sameasdelivery");
    var checked = sameAsDelEl != null ? sameAsDelEl.checked : false;

    if (checked) {
        /* Transfer delivery address to billing address */
        document.getElementById("basket-ba-company").value = document.getElementById("basket-da-company").value;
        document.getElementById("basket-ba-company").disabled = true;
        document.getElementById("basket-ba-company").className = "";
        util_setSelectionValue(document.getElementById("basket-ba-title"), document.getElementById("basket-da-title").value);
        document.getElementById("basket-ba-title").disabled = true;
        document.getElementById("basket-ba-firstname").value = document.getElementById("basket-da-firstname").value;
        document.getElementById("basket-ba-firstname").disabled = true;
        document.getElementById("basket-ba-firstname").className = "";
        document.getElementById("basket-ba-lastname").value = document.getElementById("basket-da-lastname").value;
        document.getElementById("basket-ba-lastname").disabled = true;
        document.getElementById("basket-ba-lastname").className = "";
        document.getElementById("basket-ba-address").value = document.getElementById("basket-da-address").value;
        document.getElementById("basket-ba-address").disabled = true;
        document.getElementById("basket-ba-address").className = "";
        document.getElementById("basket-ba-zip").value = document.getElementById("basket-da-zip").value;
        document.getElementById("basket-ba-zip").disabled = true;
        document.getElementById("basket-ba-zip").className = "";
        document.getElementById("basket-ba-place").value = document.getElementById("basket-da-place").value;
        document.getElementById("basket-ba-place").disabled = true;
        document.getElementById("basket-ba-place").className = "";
        document.getElementById("basket-ba-phone").value = document.getElementById("basket-da-phone").value;
        document.getElementById("basket-ba-phone").disabled = true;
        document.getElementById("basket-ba-phone").className = "";
        document.getElementById("basket-ba-fax").value = document.getElementById("basket-da-fax").value;
        document.getElementById("basket-ba-fax").disabled = true;
    }
    else {
        if (typeof (isInitial) == "undefined" || !isInitial) {
            /* Set billing address empty */
            document.getElementById("basket-ba-company").value = "";
            document.getElementById("basket-ba-company").disabled = false;
            util_setSelectionValue(document.getElementById("basket-ba-title"), "Mr");
            document.getElementById("basket-ba-title").disabled = false;
            document.getElementById("basket-ba-firstname").value = "";
            document.getElementById("basket-ba-firstname").disabled = false;
            document.getElementById("basket-ba-lastname").value = "";
            document.getElementById("basket-ba-lastname").disabled = false;
            document.getElementById("basket-ba-address").value = "";
            document.getElementById("basket-ba-address").disabled = false;
            document.getElementById("basket-ba-zip").value = "";
            document.getElementById("basket-ba-zip").disabled = false;
            document.getElementById("basket-ba-place").value = "";
            document.getElementById("basket-ba-place").disabled = false;
            document.getElementById("basket-ba-phone").value = "";
            document.getElementById("basket-ba-phone").disabled = false;
            document.getElementById("basket-ba-fax").value = "";
            document.getElementById("basket-ba-fax").disabled = false;
        }
    }
}

function basket_downloadMusic(musicitemId, fileitemId, productId, trackId) {
    page_showLoadingIndicator(fileserviceLoadingTitle, fileserviceLoadingText);
    ajax_call("ajax.aspx?a=downloadmusic&musicitemid=" + musicitemId + "&fileitemid=" + fileitemId +
              "&productid=" + productId + "&trackid=" + trackId, basket_downloadMusic_CB);
}

function basket_downloadMusic_CB(sResponse)
{
    var responseXML = util_parseXML(sResponse);
    var ok = false;

    if (responseXML != null) {
        var okElements = responseXML.getElementsByTagName("ok");
        if (okElements != null && okElements.length > 0) {
            ok = true;
            var okElement = okElements[0];
            var fileURL = util_getNamedItem(okElement.attributes, "fileurl");
            var fileName = util_getNamedItem(okElement.attributes, "filename");

            var isIe = util_isIE();
            var ieVersion = util_getIEVersion();
            if (isIe && ieVersion > 6) {
                var textHtml = '<a href="' + fileURL + '" onclick="page_hideAlert();">' + downloadSongFileText + '</a>';
                page_showAlert(downloadSongFileTitle, textHtml, null, 0, {}, "download_big_brown.png", null);
            }
            else {
                page_hideLoadingIndicator();
                location.href = fileURL;
            }
        }
    }

    if (!ok) {
        var messageText = "Error";
        if (responseXML != null) {
            var notOkElements = responseXML.getElementsByTagName("notok");
            if (notOkElements != null && notOkElements.length > 0) {
                var notOkElement = notOkElements[0];
                var messageText = eval(util_getNamedItem(notOkElement.attributes, "error"));

                var fileServiceError = util_getNamedItem(notOkElement.attributes, "fileserviceerror");
                if (fileServiceError != null) {
                    messageText = messageText.replace(/%fileservice_error%/, fileServiceError);
                }
            }
        }

        page_showAlert(errorTitleText, messageText, [{ title: okText, action: null, hide: true}], 0, {});
    }
}