﻿

$(document).ready(function() {

    $(".ddlCountry").change(function(event) {
        GetRegionList(); 
    });

    $(".cancelRegistration").click(function() {
        window.location = CancelUrl;
    });

    $("#savePassword").click(function() {
        DisplayMsgWindow(WaitSavingMessage, WaitSavingMessage);
    });

    $("#saveRegistration").click(function() {
        SaveRegistration_Click();
    });

    $("#checkUsername").click(function() {
        CheckUsername_Click();
    });

    $("#btnResetPassword").click(function() {
        ResetPassword_Click();
    });

    $("#updateEmail").click(function() {
        UpdateEmail_Click();
    });

    $(".closeFormButton").click(function() {
        CloseModalFormWindow($("#changeEmailForm"));
    });

    $("#saveEmailButton").click(function() {
        SaveEmail_Click();
    });

});
//End Document Ready

//==================================================================== HANDLERS ===========================================================
// Handles the save registration button click
function SaveRegistration_Click() {

    if (!ValidateFields('#registration :input.requiredField')) {
        return false;
    }

    if ($("#termOfService").length > 0) {
        if (!$("#termOfService").attr("checked")) {
            DisplayConfirmationWindow(TermOfServiceMessage);
            return false;
        }
    }

    DisplayMsgWindow(WaitSavingMessage, WaitSavingMessage);

    CheckUsername($(".txtEmail").val(), 'validateEmailBeforeSaving');
}

function CheckUsername_Click() {

    if (!ValidateFields('input.requiredField.txtEmail')) {
        return false;
    }

    DisplayMsgWindow(WaitValidatingMessage, WaitValidatingMessage);

    CheckUsername($(".txtEmail").val(), 'validateEmail');

}

function ResetPassword_Click() {

    if (confirm(ResetPasswordConfirmation)) {
        DisplayMsgWindow(WaitResettingPassword, WaitResettingPassword);
        $("#resetPasswordForm").submit();
        return true;
    }

    return false;
}

function UpdateEmail_Click() {

    $("#responseMessage").html('');

    var email = $(".txtEmail").text();
    $(".txtChangeEmail1").val(email);
    $(".txtChangeEmail2").val(email);
    DisplayModalFormWindow($("#changeEmailForm"), 'auto', '450px', UpdateEmail);
    return false;

}

function SaveEmail_Click() {

    // first, we check if the required fields are filled
    if (!ValidateFields('#changeEmailForm :input.postField.requiredField')) {
        return false;
    }

    // then, we check if the emails match.
    var email1 = $(".txtChangeEmail1").val();
    var email2 = $(".txtChangeEmail2").val();

    if (email1 != email2) {
        $("#responseMessage").html(EmailCheckNoMatch);
        return false;
    }

    DisplayMsgWindow(WaitSavingMessage, WaitSavingMessage);

    CheckUsername(email1, 'validateEmailChange');

}
// =========================================================== FILLS THE REGION LIST =====================================================

function GetRegionList(event) 
{

    var country = $(".ddlCountry option:selected").attr("value");
    
    if (country == '') {
        $(".ddlRegion").empty();
        return false;
    }
    
    var regionUrl = GetRegionURL + "country=" + country;

    DisplayMsgWindow(PleaseWait, PleaseWait);

    // then send the query to the controller
    $.getJSON(regionUrl, RegionCallback, "json");
}

//Asynch Method Called after Activating a Prepaid Card.
function RegionCallback(data, textStatus) {
    try {
        CloseMsgWindow();

        if (textStatus != "success") {

            DisplayConfirmationWindow(ResultLabel + ": " + textStatus);

            return false;
        }

        if (data.ResultCode != 0) 
        {
            CheckSession(data);

            DisplayConfirmationWindow(ResultLabel + ": " + data.ResultCode + " => " + data.ResultObject);

            return false;
        }

        $(".ddlRegion").empty().append(data.ServiceResultObject);

        return true;
    }
    catch (err) {
        alert(err);
    }
}

// ----------------- Username validation
function CheckUsername(username, mode) {
    // alert(postData.toSource());
    var queryString = "username=" + encodeURIComponent(username);

    if (mode == 'validateEmail') {
        // then send the query to the controller
        $.getJSON(CheckUserNameURL + queryString, CheckAvailablityCallback, "json");
    } else if (mode == 'validateBeforeNext') {
        $.getJSON(CheckUserNameURL + queryString, CheckBeforeNextCallback, "json");
    } else if (mode == 'validateEmailChange') {
        $.getJSON(CheckUserNameURL + queryString, ChangeEmailCallback, "json");
    } else if (mode == 'validateEmailBeforeSaving') {
        $.getJSON(CheckUserNameURL + queryString, CheckEmailBeforeSavingCallback, "json");
    }
}

// ---------------- Validates the username on click on check availability.
function CheckAvailablityCallback(data, textStatus) {

    CloseMsgWindow();

    if (textStatus != "success") {
        return false;
    }

    if (data.ServiceResultObject == null) {

        $('#validationMessage').text($(".txtEmail").val() + ' ' + EmailAvailable);

        return true;
    } else {
    $('#validationMessage').text($(".txtEmail").val() + ' ' + EmailAlreadyInUse);
    }

    return false;

}

// Check if the email is already in use before going to the next page
function CheckBeforeNextCallback(data, textStatus) 
{
    CloseMsgWindow();

    if (textStatus != "success") {
        return false;
    }
    
    if (data.ServiceResultObject == null) {

        $('#validationMessage').text($(".txtEmail").val() + ' ' + EmailAvailable);

        $("#registrationPage1").slideToggle('slow');
        $("#registrationPage2").slideToggle('slow');
        return true;
    } else {
        $('#validationMessage').text($(".txtEmail").val() + ' ' + EmailAlreadyInUse);
    }

    return false;

}

// ------------------- Validates the email for the save.
function ChangeEmailCallback(data, textStatus) {

    if (textStatus != "success") {
        $("#responseMessage").html(data.ResultObject);
        return false;
    }
    else 
    {
        if (data.ServiceResultObject != null) {
            
            CloseMsgWindow();
            $("#responseMessage").html($(".txtChangeEmail1").val() + ' ' + EmailAlreadyInUse);
            return false;
        }
        else {
            //the email is not in use, we can save it
            var queryString = "accountIdString=" + encodeURIComponent($("#accountIDString").val());
            queryString += "&newUsername=" + encodeURIComponent($(".txtChangeEmail1").val());
            queryString += "&postDate=" + new Date().getTime();

            $.getJSON(ChangeEmailURL + queryString, ValidateChangeEmail, "json");
        }
    }

    CloseModalFormWindow($('#changeEmailForm'));
}

// ------------------- Check the email before saving for the demo registration
function CheckEmailBeforeSavingCallback(data, textStatus) {
    if (textStatus != "success") {
        $("#responseMessage").html(data.ResultObject);
        return false;
    }
    else {
        if (data.ServiceResultObject != null) {

            CloseMsgWindow();
            $("#validationMessage").html($(".txtEmail").val() + ' ' + EmailAlreadyInUse);
            return false;
        }
        else {
            //the email is not in use, we can save it
            $("#registerForm").submit();
        }
    }

    CloseModalFormWindow($('#changeEmailForm'));

}

function ValidateChangeEmail(data, textStatus) {
    //alert("Call Back " + textStatus);

    if (textStatus != "success") {

        CloseMsgWindow();

        DisplayConfirmationWindow(ResultLabel + ": " + textStatus);

        return false;
    }

    if (data.ResultCode != "0") {

        CheckSession(data);

        CloseMsgWindow();

        DisplayConfirmationWindow(ResultLabel + ": " + data.ResultCode + " => " + data.ResultObject);

        return false;
    }

    // get the returned object (EntitySettings)
    var resultObject = data.ServiceResultObject;

    DisplayConfirmationWindow(data.ResultObject);

    // we update the email in the textbox
    $(".txtEmail").text($(".txtChangeEmail1").val());

    // we change the hidden variable if it's a label instead of a textbox
    if ($(".lblEmail").length > 0) {
        $(".lblEmail").val($(".txtChangeEmail1").val());
    }

    CloseMsgWindow();

    return true;

}


// ============================================================== FOR TERMS OF USE AND PRIVACY POLICY ===================================
$(document).ready(function() {
    // Popup window
    $("#popupTermsOfUse").click(function() {
    if (PopupTermsOfUseURL != null) {
            openWindowWithScrollBar(PopupTermsOfUseURL);
        }
        return false;
    });

    $("#popupPrivacyPolicy").click(function() {
    if (PopupPrivacyPolicyURL != null) {
            openWindowWithScrollBar(PopupPrivacyPolicyURL);
        }
        return false;
    });

});


