﻿function profile_checkPersonalData(checkFullAddress)
{
    var inputOK = true;
    var errorMessage = errorMessageText

    /* Check for birthdate */
    var text = util_trim(document.getElementById("profile-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("profile-birthdate").className = "error";
    }
    else {
        errorMessage = errorMessage.replace(/%birthdate%/, "");
        document.getElementById("profile-birthdate").className = "";
    }

    /* Check for email */
    text = util_trim(document.getElementById("profile-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("profile-email").className = "error";
    }
    else {
        errorMessage = errorMessage.replace(/%email%/, "");
        document.getElementById("profile-email").className = "";
    }

    /* Check for firstname */
    text = util_trim(document.getElementById("profile-da-firstname").value);
    if (text == "") {
        inputOK = false;
        errorMessage = errorMessage.replace(/%da_firstname%/, "<br/> - " + (checkFullAddress ? "(" + deliveryAddressText + ") " : "") + firstnameText);
        document.getElementById("profile-da-firstname").className = "error";
    }
    else {
        errorMessage = errorMessage.replace(/%da_firstname%/, "");
        document.getElementById("profile-da-firstname").className = "";
    }

    /* Check for lastname */
    text = util_trim(document.getElementById("profile-da-lastname").value);
    if (text == "") {
        inputOK = false;
        errorMessage = errorMessage.replace(/%da_lastname%/, "<br/> - " + (checkFullAddress ? "(" + deliveryAddressText + ") " : "") + lastnameText);
        document.getElementById("profile-da-lastname").className = "error";
    }
    else {
        errorMessage = errorMessage.replace(/%da_lastname%/, "");
        document.getElementById("profile-da-lastname").className = "";
    }

    if (checkFullAddress) {
        /**
         * Check for delivery address */
         
        /* Check for address */
        text = util_trim(document.getElementById("profile-da-firstname").value);
        if (text == "") {
            inputOK = false;
            errorMessage = errorMessage.replace(/%da_firstname%/, "<br/> - (" + deliveryAddressText + ") " + firstnameText);
            document.getElementById("profile-da-firstname").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%da_firstname%/, "");
            document.getElementById("profile-da-firstname").className = "";
        }

        /* Check for lastname */
        text = util_trim(document.getElementById("profile-da-lastname").value);
        if (text == "") {
            inputOK = false;
            errorMessage = errorMessage.replace(/%da_lastname%/, "<br/> - (" + deliveryAddressText + ") " + lastnameText);
            document.getElementById("profile-da-lastname").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%da_lastname%/, "");
            document.getElementById("profile-da-lastname").className = "";
        }

        /* Check for address */
        text = util_trim(document.getElementById("profile-da-address").value);
        if (text == "") {
            inputOK = false;
            errorMessage = errorMessage.replace(/%da_address%/, "<br/> - (" + deliveryAddressText + ") " + addressText);
            document.getElementById("profile-da-address").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%da_address%/, "");
            document.getElementById("profile-da-address").className = "";
        }

        /* Check for ZIP */
        text = util_trim(document.getElementById("profile-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("profile-da-zip").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%da_zip%/, "");
            document.getElementById("profile-da-zip").className = "";
        }

        /* Check for place */
        text = util_trim(document.getElementById("profile-da-place").value);
        if (text == "") {
            inputOK = false;
            errorMessage = errorMessage.replace(/%da_place%/, "<br/> - (" + deliveryAddressText + ") " + placeText);
            document.getElementById("profile-da-place").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%da_place%/, "");
            document.getElementById("profile-da-place").className = "";
        }

        /* Check for phone */
        text = util_trim(document.getElementById("profile-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("profile-da-phone").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%da_phone%/, "");
            document.getElementById("profile-da-phone").className = "";
        }

        /* Check for fax (if entered) */
        text = util_trim(document.getElementById("profile-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("profile-da-fax").className = "error";
            }
            else {
                errorMessage = errorMessage.replace(/%da_fax%/, "");
                document.getElementById("profile-da-fax").className = "";
            }
        } else {
            errorMessage = errorMessage.replace(/%da_fax%/, "");
            document.getElementById("profile-da-fax").className = "";
        }

        /**
          * Check for billing address */
          
        var sameAsDelEl = document.getElementById("profile-ba-sameasdelivery");
        var checked = sameAsDelEl != null ? sameAsDelEl.checked : false;

        /* Check for firstname */
        text = util_trim(document.getElementById("profile-ba-firstname").value);
        if (!checked && text == "") {
            inputOK = false;
            errorMessage = errorMessage.replace(/%ba_firstname%/, "<br/> - (" + billingAddressText + ") " + firstnameText);
            document.getElementById("profile-ba-firstname").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%ba_firstname%/, "");
            document.getElementById("profile-ba-firstname").className = "";
        }

        /* Check for lastname */
        text = util_trim(document.getElementById("profile-ba-lastname").value);
        if (!checked && text == "") {
            inputOK = false;
            errorMessage = errorMessage.replace(/%ba_lastname%/, "<br/> - (" + billingAddressText + ") " + lastnameText);
            document.getElementById("profile-ba-lastname").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%ba_lastname%/, "");
            document.getElementById("profile-ba-lastname").className = "";
        }

        /* Check for address */
        text = util_trim(document.getElementById("profile-ba-address").value);
        if (!checked && text == "") {
            inputOK = false;
            errorMessage = errorMessage.replace(/%ba_address%/, "<br/> - (" + billingAddressText + ") " + addressText);
            document.getElementById("profile-ba-address").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%ba_address%/, "");
            document.getElementById("profile-ba-address").className = "";
        }

        /* Check for ZIP */
        text = util_trim(document.getElementById("profile-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("profile-ba-zip").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%ba_zip%/, "");
            document.getElementById("profile-ba-zip").className = "";
        }

        /* Check for place */
        text = util_trim(document.getElementById("profile-ba-place").value);
        if (!checked && text == "") {
            inputOK = false;
            errorMessage = errorMessage.replace(/%ba_place%/, "<br/> - (" + billingAddressText + ") " + placeText);
            document.getElementById("profile-ba-place").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%ba_place%/, "");
            document.getElementById("profile-ba-place").className = "";
        }

        /* Check for phone */
        text = util_trim(document.getElementById("profile-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("profile-ba-phone").className = "error";
        }
        else {
            errorMessage = errorMessage.replace(/%ba_phone%/, "");
            document.getElementById("profile-ba-phone").className = "";
        }

        /* Check for fax (if entered) */
        text = util_trim(document.getElementById("profile-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("profile-ba-fax").className = "error";
            }
            else {
                errorMessage = errorMessage.replace(/%ba_fax%/, "");
                document.getElementById("profile-ba-fax").className = "";
            }
        } else {
            errorMessage = errorMessage.replace(/%ba_fax%/, "");
            document.getElementById("profile-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 (checkFullAddress) {
            document.getElementById("profile-ba-company").disabled = false;
            document.getElementById("profile-ba-title").disabled = false;
            document.getElementById("profile-ba-firstname").disabled = false;
            document.getElementById("profile-ba-lastname").disabled = false;
            document.getElementById("profile-ba-address").disabled = false;
            document.getElementById("profile-ba-zip").disabled = false;
            document.getElementById("profile-ba-place").disabled = false;
            document.getElementById("profile-ba-phone").disabled = false;
            document.getElementById("profile-ba-fax").disabled = false;
        }
        document.getElementById("profile-personaldata").submit();
    }
}

function profile_checkZIP(zipInputId, placeInputId) {
    var zipInputEl = document.getElementById(zipInputId);
    var placeInputEl = document.getElementById(placeInputId);

    var cityName = util_validateSwissZIP(zipInputEl.value);
    if (cityName !== false && placeInputId != null) {
        placeInputEl.value = cityName;
    } else {
        placeInputEl.value = "";
    }
}

function profile_transferAddressValue(srcEl, destEl) {
    var sameAsDelEl = document.getElementById("profile-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 profile_sameAsDeliveryAddressChanged(isInitial) {
    var sameAsDelEl = document.getElementById("profile-ba-sameasdelivery");
    var checked = sameAsDelEl != null ? sameAsDelEl.checked : false;

    if (checked) {
        /* Transfer delivery address to billing address */
        document.getElementById("profile-ba-company").value = document.getElementById("profile-da-company").value;
        document.getElementById("profile-ba-company").disabled = true;
        document.getElementById("profile-ba-company").className = "";
        util_setSelectionValue(document.getElementById("profile-ba-title"), document.getElementById("profile-da-title").value);
        document.getElementById("profile-ba-title").disabled = true;
        document.getElementById("profile-ba-firstname").value = document.getElementById("profile-da-firstname").value;
        document.getElementById("profile-ba-firstname").disabled = true;
        document.getElementById("profile-ba-firstname").className = "";
        document.getElementById("profile-ba-lastname").value = document.getElementById("profile-da-lastname").value;
        document.getElementById("profile-ba-lastname").disabled = true;
        document.getElementById("profile-ba-lastname").className = "";
        document.getElementById("profile-ba-address").value = document.getElementById("profile-da-address").value;
        document.getElementById("profile-ba-address").disabled = true;
        document.getElementById("profile-ba-address").className = "";
        document.getElementById("profile-ba-zip").value = document.getElementById("profile-da-zip").value;
        document.getElementById("profile-ba-zip").disabled = true;
        document.getElementById("profile-ba-zip").className = "";
        document.getElementById("profile-ba-place").value = document.getElementById("profile-da-place").value;
        document.getElementById("profile-ba-place").disabled = true;
        document.getElementById("profile-ba-place").className = "";
        document.getElementById("profile-ba-phone").value = document.getElementById("profile-da-phone").value;
        document.getElementById("profile-ba-phone").disabled = true;
        document.getElementById("profile-ba-phone").className = "";
        document.getElementById("profile-ba-fax").value = document.getElementById("profile-da-fax").value;
        document.getElementById("profile-ba-fax").disabled = true;
    }
    else {
        if (typeof (isInitial) == "undefined" || !isInitial) {
            /* Set billing address empty */
            document.getElementById("profile-ba-company").value = "";
            document.getElementById("profile-ba-company").disabled = false;
            util_setSelectionValue(document.getElementById("profile-ba-title"), "Mr");
            document.getElementById("profile-ba-title").disabled = false;
            document.getElementById("profile-ba-firstname").value = "";
            document.getElementById("profile-ba-firstname").disabled = false;
            document.getElementById("profile-ba-lastname").value = "";
            document.getElementById("profile-ba-lastname").disabled = false;
            document.getElementById("profile-ba-address").value = "";
            document.getElementById("profile-ba-address").disabled = false;
            document.getElementById("profile-ba-zip").value = "";
            document.getElementById("profile-ba-zip").disabled = false;
            document.getElementById("profile-ba-place").value = "";
            document.getElementById("profile-ba-place").disabled = false;
            document.getElementById("profile-ba-phone").value = "";
            document.getElementById("profile-ba-phone").disabled = false;
            document.getElementById("profile-ba-fax").value = "";
            document.getElementById("profile-ba-fax").disabled = false;
        }
    }
}

function profile_checkPasswordChange()
{
    var oldPasswordValue = util_trim(document.getElementById("profile-passwordchange-oldpassword").value);
    var newPasswordValue = util_trim(document.getElementById("profile-passwordchange-newpassword").value);
    var newPasswordConfirmValue = util_trim(document.getElementById("profile-passwordchange-newpasswordconfirm").value);

    var isOK = true;
    var messageTitle = "";
    var messageText = "";

    if (oldPasswordValue == "") {
        messageTitle = errorTitle;
        messageText = oldPasswordMissingText;
        isOK = false;
    }
    else if (newPasswordValue == "") {
        messageTitle = errorTitle;
        messageText = newPasswordMissingText;
        isOK = false;
    }
    else if (newPasswordConfirmValue == "") {
        messageTitle = errorTitle;
        messageText = newPasswordConfirmMissingText;
        isOK = false;
    }
    else if (newPasswordValue != newPasswordConfirmValue) {
        messageTitle = errorTitle;
        messageText = newPasswordConfirmNotMatchingText;
        isOK = false;
    }

    if (!isOK) {
        page_showAlert(messageTitle, messageText, [{ title: okText, action: null, hide: true}], 0, {});
    } else {
        ajax_call("ajax.aspx?a=passwordchange&oldpassword=" + oldPasswordValue +
                  "&newpassword=" + newPasswordValue, profile_checkPasswordChange_CB);
    }
}

function profile_checkPasswordChange_CB(sResponse)
{
    var responseXML = util_parseXML(sResponse);
    if (responseXML != null && responseXML.getElementsByTagName("ok").length > 0) {
        page_showAlert(newPasswordSavedTitle, newPasswordSavedText, [{ title: okText, action: null, hide: true}], 0, {});
        
        document.getElementById("profile-passwordchange-oldpassword").value = "";
        document.getElementById("profile-passwordchange-newpassword").value = "";
        document.getElementById("profile-passwordchange-newpasswordconfirm").value = "";
        if (document.getElementById('profile-passwordchange-password-strength') != null) {
            util_passwordStrength("", document.getElementById('profile-passwordchange-password-strength'));
        }
    }
    else {
        var notOkElement = responseXML.getElementsByTagName("notok")[0];
        var messageText = eval(util_getNamedItem(notOkElement.attributes, "error"));
        page_showAlert(errorTitle, messageText, [{ title: okText, action: null, hide: true}], 0, {});
    }
}

function profile_downloadCompetitionMusic(competitionId, competitionWinId, customerId, fileitemId, productId, trackId) {
    page_showLoadingIndicator(fileserviceLoadingTitle, fileserviceLoadingText);
    ajax_call("ajax.aspx?a=downloadmusic&competitionid=" + competitionId + "&competitionwinid=" + competitionWinId + 
              "&customerid=" + customerId + "&fileitemid=" + fileitemId +
              "&productid=" + productId + "&trackid=" + trackId, profile_downloadCompetitionMusic_CB);
}

function profile_downloadCompetitionMusic_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, {});
    }
}

var profile_checkPersonalDataSmsWin_isOK = false;
function profile_checkPersonalDataSmsWin() {
    if (profile_checkPersonalDataSmsWin_isOK) {
        return true;
    }
    
    var inputOK = true;
    var errorMessage = errorMessageText

    /* Check for birthdate */
    var text = util_trim(document.getElementById("profile-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("profile-birthdate").className = "error";
    }
    else {
        errorMessage = errorMessage.replace(/%birthdate%/, "");
        document.getElementById("profile-birthdate").className = "";
    }

    /* Check for email */
    text = util_trim(document.getElementById("profile-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("profile-email").className = "error";
    }
    else {
        errorMessage = errorMessage.replace(/%email%/, "");
        document.getElementById("profile-email").className = "";
    }

    /* Check for firstname */
    text = util_trim(document.getElementById("profile-da-firstname").value);
    if (text == "") {
        inputOK = false;
        errorMessage = errorMessage.replace(/%da_firstname%/, "<br/> - " + firstnameText);
        document.getElementById("profile-da-firstname").className = "error";
    }
    else {
        errorMessage = errorMessage.replace(/%da_firstname%/, "");
        document.getElementById("profile-da-firstname").className = "";
    }

    /* Check for lastname */
    text = util_trim(document.getElementById("profile-da-lastname").value);
    if (text == "") {
        inputOK = false;
        errorMessage = errorMessage.replace(/%da_lastname%/, "<br/> - " + lastnameText);
        document.getElementById("profile-da-lastname").className = "error";
    }
    else {
        errorMessage = errorMessage.replace(/%da_lastname%/, "");
        document.getElementById("profile-da-lastname").className = "";
    }

    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, {});
        return false;
    }
    else {
        profile_checkPersonalDataSmsWin_isOK = true;
        ajax_call("ajax.aspx?a=savepersonaldatasmswin" +
                  "&birthdate=" + encodeURIComponent(document.getElementById("profile-birthdate").value) +
                  "&email=" + encodeURIComponent(document.getElementById("profile-email").value) +
                  "&title=" + encodeURIComponent(document.getElementById("profile-da-title").value) +
                  "&firstname=" + encodeURIComponent(document.getElementById("profile-da-firstname").value) +
                  "&lastname=" + encodeURIComponent(document.getElementById("profile-da-lastname").value));
        return true;
    }
}