﻿/// <reference path="~/JS/jquery-1.3.2.js" />
/// <reference path="~/JS/jquery.blockUI.js" />

var tidyUp = function() {
    $('#oldPassword')
            .val('');

    $('#newPassword')
            .val('');

    $('#confirmPassword')
            .val('');

    $('#validationSummary')
            .css('display', 'none');

    $('#errorMessages')
            .html('');
};

var closeModal = function() {
    $.unblockUI({ onUnblock: tidyUp });
    return false;
}

function genericErrorHandler(blockUIMessage, validationBlockSelector, errorElementSelector) {
    return function(error) {
        if (typeof (error.d) != 'undefined')
            error = error.d;

        $.blockUI({ message: blockUIMessage });

        $(validationBlockSelector)
                .css('display', 'block')
                .css('width', 'auto');

        if (typeof (error.Message) == 'undefined')
            $(errorElementSelector).html('An unknown error has occured.');
        else
            $(errorElementSelector).html(error.Message);
    }
}

function changePassword() {
    try {
        var request = new LMIG.Services.PasswordUpdateRequest();

        var errorHandler = genericErrorHandler($('#modalChangePassword'), '#validationSummary', '#errorMessages');

        var successHandler = function(result) {
            if (typeof (result.d) != 'undefined')
                result = result.d;

            if (result.Success !== true)
                return errorHandler(result);

            $.blockUI({ message: $('#modalSuccess') });

            $('#modalSuccessAcknowledge')
                    .click(closeModal);
        }

        request.OldPassword = $('#oldPassword').val();
        request.NewPassword = $('#newPassword').val();
        request.ConfirmPassword = $('#confirmPassword').val();

        $.blockUI({ message: $('#modalUpdating') });

        LMIG.Services.UserManagementService.ChangePassword(request, successHandler, errorHandler);
    }
    catch (e) {

    }

    return false;
}

function resetPassword(username) {
    var request = new LMIG.Services.PasswordResetRequest();

    var errorHandler = genericErrorHandler($('#forgotPasswordDialog'), '#resetMessageContainer', '#passwordResetMessage');

    var successHandler = function(result) {
        if (typeof (result.d) != 'undefined')
            result = result.d;

        if (result.Success !== true)
            return errorHandler(result);

        $('#passwordSentMessage')
                .html(result.Message);

        $.blockUI({ message: $('#resetPasswordEmailSent') });

        $('#passwordSentButton')
                .click(closeModal);
    }

    request.Username = $('#usernameToReset').val();

    $.blockUI({ message: $('#modalUpdating') });

    LMIG.Services.UserManagementService
            .ResetPassword(request, successHandler, errorHandler);

    return false;
}

function changePasswordFunction() {
    $.blockUI({ message: $('#modalChangePassword') });

    $('input[id$="_ChangePasswordPushButton"]')
            .click(changePassword);

    $('#modalCancelButton')
            .click(closeModal);
}

$(function() {

    $('#changePasswordLink').click(changePasswordFunction);

    $('a[id$="_forgotPasswordLink"]').click(function() {
        var usernameHint = $('input[id$="_loginView_userName"]').val();

        if (usernameHint != 'User Name') {
            $('#usernameToReset').val(usernameHint);
        }

        $.blockUI({ message: $('#forgotPasswordDialog') });

        $('#sendReminderEmail').click(function() {
            return resetPassword($('#usernameToReset').val());
        });

        $('#cancelRestPassword')
                    .click(closeModal);
    });
});
