﻿/// <reference name="MicrosoftAjax.js"/>
Type.registerNamespace("TraderMagazine");
TraderMagazine.Register = function() {
    TraderMagazine.Register.initializeBase(this);
}
TraderMagazine.Register.prototype = {
    initialize: function() {
    TraderMagazine.Register.callBaseMethod(this, 'initialize');
    this.init();
    },
    /// <summary>
    /// init function
    /// </summary>
    init: function() {
        TradersMag.WebService.PageService.CreateRegisterPage(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() {
        if ($get("RegisterBtn"))
            $addHandler($get("RegisterBtn"), "click", PAGE.registerUser);
    },
    /// <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);
        }
        /*
        if (!ERROR.checkField(uname, "UserNameError", "credential", 5, Text.errors.e21)) success = false;
        if (!ERROR.checkField(pword, "PasswordError", "credential", 5, Text.errors.e22)) success = false;
        if (!ERROR.checkLogin(uname)) {
        $get("UserNameError").innerHTML = Text.errors.e21;
        success = false;
        } else {
        if (!ERROR.checkLogin(pword)) {
        $get("PasswordError").innerHTML = Text.errors.e22;
        success = false;
        }
        }
        PageService.CheckUserIfIsDisabled(uname, PAGE.onUserIsOk, GLOBALS.webServiceError);
        */
    },
    /// <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) {
            $get("LoginTable_1_1").innerHTML = "";
            var DIV = document.createElement("DIV");
            DIV.style.margin = "10px";
            DIV.style.fontSize = "12px";
            DIV.innerHTML = "Logged in as " + user_name;
            $get("LoginTable_1_1").appendChild(DIV);
            $get("HeadLogin").innerHTML = "Logout";
            $get("HeadLogin").onclick = function() { MENU.logout(); }
        } 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()) {
            COMP.createLoader($get("RegisterHolder_1_0"), 400);
            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);
            ERROR.showError("RegisterHolder_1_0", result);
        }
        delete PAGE.registerInput;
    },
    /// <summary>
    /// init function
    /// </summary>
    registerError: function(result) {
        Sys.Debug.trace("registerError");
    },
    dispose: function() {
        //Add custom dispose actions here
        if ($get("LoginBtn")) $clearHandlers("LoginBtn");
        TraderMagazine.Register.callBaseMethod(this, 'dispose');
    }
}
TraderMagazine.Register.registerClass('TraderMagazine.Register', Sys.Component);
if (typeof (Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
