﻿var CommonPage =
{

msgTimer: null,
msgTimerDir: null,

killMsgTimer: function()
{
    if ($cp.msgTimer)
    {
        try
        {
            clearInterval($cp.msgTimer);
            $cp.msgTimer = null;
            $cp.msgTimerDir = null;
        }
        catch(e)
        {
        }
    }
},

initMsgTimer: function(dy)
{
    $cp.killMsgTimer();
    if (!dy) return;
    dy = dy > 0 ? 1 : -1;
    
    var ms = 1;
    
    $cp.msgTimerDir = dy;
    $cp.msgTimer = setInterval($cp.progressMsg, ms);
},

progressMsg: function()
{
    var dir = $cp.msgTimerDir;
    if (!dir) return;    
    var el = DomTool.getElem("TBC_wndMsg");
    
    var dx = 1;
    var h = 24;
    
    var top = el.style.top;
    if (!top) top = "0px";
    top = parseInt(top);
    
    if (dir > 0)
    {
        if (top >= 0)
        {
            el.style.top = "0px";
            $cp.killMsgTimer();
            return;
        }
        
        top+=dx;
        el.style.top = top + "px";
    }
    else
    {
        if (top <= -h)
        {
            el.style.top = (-h) + "px";
            $cp.killMsgTimer();
            return;
        }
        
        top-=dx;
        el.style.top = top + "px";
    }
},

// 'msg' - message to display
// 'sev' [severity] - "ERR", "INF" (error, warning or info, respectively)
showMsg: function(msg, sev)
{
    var d = DomTool.getElem("TBC_wndMsg");
    d.className = "TBC_wndMsg_" + sev;
    
    var d2 = DomTool.getElem("TBC_wndMsgText");
    d2.innerHTML = msg;

    $cp.initMsgTimer(-1);
},

showCap: function()
{
    $cp.initMsgTimer(+1);
},

initAjax: function()
{
    AjaxAction.beforeExec = $cp.showCap;
    AjaxAction.preprocessResponse = $cp.preprocessAjaxResponse;
},
   
preprocessAjaxResponse: function(doc)
{
    try
    {
        var info = AjaxAction.getResponseInfo(doc);
        if (!info.ok)
        {
            $cp.showMsg(info.message, "ERR");
            return false;
        }
        
        $cp.showCap();
        return true;
    }
    catch(e)
    {
        $cp.showMsg("Неизвестная ошибка", "ERR");
        return false;
    }
},

initTrace: function(){},

getLoginAjaxAction: function()
{  
    if (!AjaxAction.actions["login"])
    {
        $cp.initAjax();
        AjaxAction.registerEx("login", "POST", null, $cp.onAjaxLogin);
    }
    
    return AjaxAction.actions["login"];
},

onHdrLoginFocus: function()
{
    var l = g_TBC_login;
    if (l.value == $cp.emptyLogin) l.value = "";
    l.style.color = "#000";
},

onHdrLoginBlur: function()
{
    var l = g_TBC_login;
    if (l.value == "")
    {
        l.style.color = "#aaa";
        l.value = $cp.emptyLogin;
    }
},

onHdrLoginKeyDown: function(e)
{   
    var k = EvTool.getKey(e);
    if (k == 13) EvTool.focusLater(g_TBC_password, true);
},

onHdrPasswordFocus: function()
{
    var p = g_TBC_password;
    p.style.color = "#000";
    
    if (p.value == $cp.emptyPassword) p.value = "";
},

onHdrPasswordKeyDown: function(e)
{
    var k = EvTool.getKey(e);
    if (k == 13) $cp.doLogin();
},

emptyLogin: "Логин или e-mail",

emptyPassword: "эмпти",

placeToRedirectOnLogin: null,

doLogin: function()
{
    var l = g_TBC_login;
    var p = g_TBC_password;
    var b = g_TBC_doLogin;
    var r = $cp.placeToRedirectOnLogin;
    
    JsonTool.each_expr([l, p, b], "instance.disabled = true");

    var ajx = $cp.getLoginAjaxAction();
    var xmlObj = AjaxAction.createRequestXmlObj();
    xmlObj.dataElem.setAttribute("Login", l.value);
    xmlObj.dataElem.setAttribute("Password", p.value);
    
    if (r)
    {
        xmlObj.dataElem.setAttribute("PlaceToRedirectOnLogin", r);
    }
    
    ajx.exec(null, xmlObj.doc);
},

onAjaxLogin: function(doc, ok, dataElem, ex)
{
    var l = g_TBC_login;
    var p = g_TBC_password;
    var b = g_TBC_doLogin;
    
    if (ex)
    {
        switch(ex.id)
        {
        case "REGISTRATION_NOT_CONFIRMED":
            UrlTool.goCommonPage("registrationconfirmation");
            return;
            
        case "USER_AUTHENTICATION_FAILURE":
            UrlTool.goCommonPage("login", "retry");
            return;
            
        default:
            alert("Ошибка: " +  ex.message);
            
            p.value = "";        
            break;
        }
    
        JsonTool.each_expr([l, p, b], "instance.disabled = false");
        p.focus();
    }
    else
    {
        var urlToRedirect = dataElem.getAttribute("UrlToRedirect");
        
        if (urlToRedirect)
        {
            location.href = urlToRedirect;
        }
        else
        {
            location.href = Global.getUserUrl();
        }
    }
},

onLoaded: function()
{
    DomTool.assignGlobalProps();
    $cp.initTrace();
    $cp.initAjax();
    
    var l = window.g_TBC_login;
    var p = window.g_TBC_password;
    var b = window.g_TBC_doLogin;
    
    if (l && p && b)
    {
        l.value = $cp.emptyLogin;
        p.value = $cp.emptyPassword;
        
        JsonTool.each_expr([l, p, b], "instance.disabled = false");
    }
},


_dummy: 0
   
};

var $cp = CommonPage;

var $_dF = function(){};

window._trace = $_dF;
window._tracef = $_dF;
window._tracen = $_dF;
window._traceo = $_dF;
window._assert = $_dF;

