﻿/// <reference name="MicrosoftAjax.js"/>
Type.registerNamespace("TraderMagazine");
TraderMagazine.UserManager = function() {
    TraderMagazine.UserManager.initializeBase(this);
}
TraderMagazine.UserManager.prototype = {
    initialize: function() {
        TraderMagazine.UserManager.callBaseMethod(this, 'initialize');
        TradersMag.WebService.PageService.CreateLoginPage(this.insertLoginPage, GLOBALS.callError);
    },
    /// <summary>
    /// init function
    /// </summary>
    init: function() {
        TradersMag.WebService.PageService.CreateLoginPage(this.insertLoginPage, GLOBALS.callError);
    },
    /// <summary>
    /// functions from status menu- create login page
    /// </summary>
    insertLoginPage: function(html) {

        $get("Content").innerHTML = html;
        PAGE.initLogin();
    },
    /// <summary>
    /// init function
    /// </summary>
    initLogin: function() {
        $addHandler($get("LoginBtn"), "click", PAGE.doLogin);
        if ($get("PasswordForgottenBtn"))
            $addHandler($get("PasswordForgottenBtn"), "click", PAGE.passwordForgotten);
        $addHandler($get("LoginUsername"), "keypress", PAGE.checkLoginKeyInput);
        $addHandler($get("LoginPassword"), "keypress", PAGE.checkLoginKeyInput);
    },
    /// <summary>
    /// check the key input
    /// </summary>
    checkLoginKeyInput: function(e) {
        if (e.charCode == 13) {
            PAGE.doLogin();
        }
    },
    /// <summary>
    /// init function
    /// </summary>
    doLogin: function() {
        var uname = $get("LoginUsername").value;
        var pword = $get("LoginPassword").value;
        ERROR.hideError("UserNameError");
        ERROR.hideError("PasswordError");
        var success = true;
        if (!ERROR.checkField(uname, "UserNameError", "credential", 5, Text.errors.e3)) success = false;
        // if (!ERROR.checkField(pword, "PasswordError", "credential", 5, Text.errors.e4)) success = false;
        if (success) {
            Sys.Services.AuthenticationService.login(
                uname,
                pword,
                false,
                null,
                null,
                PAGE.loginComplete,
                PAGE.loginError,
                uname);
        }
    },
    /// <summary>
    /// confirm if user is ok or show error
    /// </summary>
    onUserIsOk: function(result) {
        if (Number(result) == -2) {
            $get("ErrLabelLogin").innerHTML = Text.errors.e24;
        }
        if (Number(result) == -1) {
            $get("ErrLabelLogin").innerHTML = Text.errors.e23;
        }
        if (Number(result) == 1) {
            var uname = $get("LoginUsername").value;
            var pword = $get("LoginPassword").value;
            var md5 = MD5(pword);
            PageService.createSecurityToken(uname, md5, result, PAGE.onCreateSecurityTokenSuccess, GLOBALS.webServiceError);
        }
    },
    /// <summary>
    /// confirm if user is ok or show error
    /// </summary>
    onCreateSecurityTokenSuccess: function(result) {
        this.TK = result;
        Sys.Services.AuthenticationService.login(
                $get("LoginUsername").value,
                $get("LoginPassword").value,
                false,
                null,
                null,
                PAGE.loginComplete,
                PAGE.loginError,
                $get("LoginUsername").value);
    },
    /// <summary>
    /// init function
    /// </summary>
    loginComplete: function(result, user_name) {
        if (result) {
            location.href = "https://traders-mag.com/#h=MenuHome";
           
        } else {
            ERROR.showError("PasswordError", Text.errors.e6);
        }
    },
    /// <summary>
    /// init function
    /// </summary>
    loginError: function(result, context) {
        $get("LogTable_1_2").innerHTML = "Could not " + context + " (" + result.get_message() + ").";
    },
    /// <summary>
    /// final client side validation of user input
    /// call webservice 
    /// </summary>
    registerUser: function() {
        PAGE.registerInput = new Object();
        PAGE.clearErrors();
        PAGE.readInput();
        if (PAGE.checkRegisterInput()) {
            TradersMag.WebService.PageService.CreateUser(PAGE.registerInput, PAGE.userCreated, PAGE.registerError);
        }
    },
    /// <summary>
    /// register attempt
    /// </summary>
    readInput: function() {
        this.registerInput.firstName = $get("RegFirstName").value;
        this.registerInput.lastName = $get("RegLastName").value;
        this.registerInput.userName = $get("RegUserName").value;
        this.registerInput.password_1 = $get("RegPassword_1").value;
        this.registerInput.password_2 = $get("RegPassword_2").value;
        this.registerInput.email_1 = $get("RegRegEmail_1").value;
        this.registerInput.email_2 = $get("RegRegEmail_2").value;
    },
    /// <summary>
    /// init function
    /// </summary>
    clearErrors: function() {
        ERROR.hideError("RegFirstNameError");
        ERROR.hideError("RegLastNameError");
        ERROR.hideError("RegUserNameError");
        ERROR.hideError("RegPassword_1Error");
        ERROR.hideError("RegPassword_2Error");
        ERROR.hideError("RegRegEmail_1Error");
        ERROR.hideError("RegRegEmail_2Error");
    },
    /// <summary>
    /// init function
    /// </summary>
    checkRegisterInput: function() {
        var success = true;
        if (!ERROR.checkField(this.registerInput.firstName, "RegFirstNameError", "name", 2, Text.errors.e1)) success = false;
        if (!ERROR.checkField(this.registerInput.lastName, "RegLastNameError", "name", 2, Text.errors.e2)) success = false;
        if (!ERROR.checkField(this.registerInput.userName, "RegUserNameError", "credential", 5, Text.errors.e3)) success = false;
        if (!ERROR.checkField(this.registerInput.password_1, "RegPassword_1Error", "credential", 5, Text.errors.e4)) success = false;
        if (this.registerInput.password_1 != this.registerInput.password_2) {
            ERROR.showError("RegPassword_2Error", Text.errors.e5);
            success = false;
        }
        if (!ERROR.checkEMail(this.registerInput.email_1)) {
            ERROR.showError("RegRegEmail_1Error", Text.errors.e7);
            success = false;
        }
        if (this.registerInput.email_1 != this.registerInput.email_2) {
            ERROR.showError("RegRegEmail_2Error", Text.errors.e13);
            success = false;
        }
        return success;
    },
    /// <summary>
    /// init function
    /// </summary>
    userCreated: function(result) {
        if (result == "true") {
            var c = "<div style='font-size:12px;margin:10px;'>" + Text.login_area.register_confirm + "</div>";
            c += "<div style='font-size:12px;margin-left:10px;margin-bottom:300px;'>" + Text.login_area.register_confirm_2 + "</div>";
            $get("RegisterHolder_1_0").innerHTML = c;
        } else {
            ERROR.showError("RegRegEmail_2Error", result);
        }
        delete PAGE.registerInput;
    },
    /// <summary>
    /// init function
    /// </summary>
    registerError: function(result) {
        Sys.Debug.trace("registerError");
    },

    /// <summary>
    /// password forgotten mehtod
    /// </summary>
    passwordForgotten: function(result) {


        $get("LoginTable_6_1").style.padding = "5px";
        $get("LoginTable_6_1").innerHTML = Text.login_area.password_forgotten_help + "<br><br>";
        $get("LoginTable_6_1").innerHTML += Text.login_area.email_label + "<br>";
        $get("LoginTable_6_1").innerHTML += "<input name='Email' class='input_login' id='Email' type='text' /><br>";
        $get("LoginTable_6_1").appendChild(COMP.createErrorField("EmailError"));
        $get("LoginTable_6_1").innerHTML += "<br>";
        var btn = COMP.createButton("Red", Text.login_area.password_forgotten_btn, "SendPasswordBtn");
        $get("LoginTable_6_1").appendChild(btn);

        $get("SendPasswordBtn").onclick = function() {
            var email = $get("Email").value;
            if (!ERROR.checkEMail(email)) {
                ERROR.showError("EmailError", Text.errors.e7);
            } else {
                TradersMag.WebService.PageService.ResetPassword(email, PAGE.resetPasswordResult, PAGE.registerError);
            }
        }

    },
    resetPasswordResult: function(result) {
        if (result) {
            $get("LoginTable_6_1").innerHTML = Text.login_area.password_sended;
        } else {
            $get("LoginTable_6_1").innerHTML = Text.errors.e16;
        }
    },

    dispose: function() {
        //Add custom dispose actions here
        if ($get("LoginBtn")) $clearHandlers("LoginBtn");
        if ($get("PasswordForgottenBtn")) $clearHandlers("PasswordForgottenBtn");
        if ($get("LoginUsername")) $clearHandlers("LoginUsername");
        if ($get("LoginPassword")) $clearHandlers("LoginPassword");

        TraderMagazine.UserManager.callBaseMethod(this, 'dispose');
    }
}
TraderMagazine.UserManager.registerClass('TraderMagazine.UserManager', Sys.Component);
if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
