﻿var forgetPasswordControl = function() {
    var $mainPanel, $contentPanel, $updatePanel, $updateMsgPanel;
    var $form, $usernameText, $emailText, $cancelButton, $closeButton;
    var supportEmailName;

    function showPopup() {
        $form.get(0).reset();
        $form.validate().resetForm();

        $.blockUI({ message: $($mainPanel), css: { width: '450px'} });
    };

    function closePopup(callback) {
        $.unblockUI({
            onUnblock: callback
        });
        return false;
    };

    function saveData() {
        $contentPanel.hide();
        $updatePanel.show();

        $updateMsgPanel.html('Sending request...');
        var data = {
            username: $usernameText.val(),
            email: $emailText.val()
        };

        $.ajax({
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
            url: resolveUrl('~/Services/UserService.asmx/ForgetPassword'),
            data: $.toJSON(data),
            dataType: 'json',
            success: function(o) {
                if (o) {
                    var s = [];
                    s.push('<div>Your new password has been sent to your registered email.</div>');
                    s.push('<div>For other problems please contact: ' + supportEmailName + '</div>');
                    $updateMsgPanel.html(s.join(''));
                } else {
                    $updateMsgPanel.html('<div>Username and E-Mail don\'t match. Please try again</div>');
                }
                $closeButton.show();
            },
            error: function(r, s) { }
        });
    };

    function setValidation() {
        $form.validate({
            rules: {
                'control_forgetPassword_usernameText': 'required',
                'control_forgetPassword_emailText': {
                    'required': true,
                    'email': true
                }
            },
            messages: {
                'control_forgetPassword_usernameText': '*',
                'control_forgetPassword_emailText': {
                    'required': '*',
                    'email': 'Invalid email'
                }
            },
            submitHandler: saveData
        });
    };

    return {
        init: function(supportEmail) {
            $mainPanel = $('#control_forgetPassword_mainPanel');
            $contentPanel = $('#control_forgetPassword_contentPanel');
            $updatePanel = $('#control_forgetPassword_updatePanel');
            $updateMsgPanel = $('#control_forgetPassword_updateMsgPanel');
            $form = $('#control_forgetPassword_form');
            $usernameText = $('#control_forgetPassword_usernameText');
            $emailText = $('#control_forgetPassword_emailText');
            $cancelButton = $('#control_forgetPassword_cancelButton');
            $closeButton = $('#control_forgetPassword_closeButton');

            setValidation();

            supportEmailName = supportEmail;

            $closeButton.bind('click', function(e) {
                closePopup(function() {
                    $contentPanel.show();
                    $updatePanel.hide();
                });
            });

            $cancelButton.bind('click', function(e) {
                closePopup();
            });
        },
        showPopup: showPopup
    };
} ();
