/*
 * Copyright (c) 2008, Aleajecta
 * All rights reserved.
 * 
 * The Service and any necessary software used in connection with the 
 * Service ("Software") contain proprietary and confidential information 
 * that is protected by applicable intellectual property and other laws.
 * You agree not to modify, rent, lease, loan, sell, distribute or create
 * derivative works based on the Service or the Software, in whole or in part.
 */
/**
 * @author Greenseed
 */
function User(){ this._construct() }(function()
{
    User.eleLoginName = null;
    User.eleLoginPass = null;
    User.eleLoginPassConfirm = null;
    User.eleLoginButton = null;
    User.eleLoginWrapper = null;
    User.eleLoginInputWrapper = null;
    User.eleLoginWaiting = null;

    User.username = "";
    User.password = "";
    User.exist = 0;
    User.level = "";
    User.namecolor = "";

	User.load = function()
	{
		JsRequest.onreadystatechange = function()
		{
			//alert(reqClass.readyState);
			if (JsRequest.readyState == 4) 
			{
				if (!JsRequest.responseJS) 
					alert(JsRequest.responseText);
				else 
				{
                    User.username = JsRequest.responseJS.username;
					User.id = Number(JsRequest.responseJS.userid);
                    User.level = Number(JsRequest.responseJS.userlevel);
                    
                    if(User.level > 0)
                    {
                        User.eleLoginButton.style.display = "none";
                        User.eleLoginInputWrapper.style.display = "none";
                        User.eleLoginWaiting.style.display = "block";
                        User.eleLoginWaiting.innerHTML = "Welcome Back, "+User.username;
                        Chat.eleChatInput.focus();
                    }
                    else
                    {
                        User.eleLoginButton.style.display = "block";
                        User.eleLoginInputWrapper.style.display = "none";
                        User.eleLoginWaiting.style.display = "none";
                        User.eleLoginWaiting.innerHTML = "Please Wait Accessing Data...";
                    }
				}
				delete this.onreadystatechange;
			}
		};
		JsRequest.open('GET', 'index.php', false);
		JsRequest.send('JsRequest&getSessionInfo');
		eval(JsRequest.getXMLRequest().responseText);
	};
    User.loginClick = function()
    {
        User.eleLoginButton.style.display = "none";
        User.eleLoginInputWrapper.style.display = "block";
        User.eleLoginName.focus();
    };
    User.onBlur = function(owner)
    {
       switch(owner.id)
        {
            case "loginName":
            {
                User.username = owner.value;
                User.isExist(User.username);
            }break;
            case "loginPass":
            {
                User.password = owner.value; 
            }break;
        } 
    };
    User.keyUp = function(event,owner)
    {
        var event = window.event ? window.event : event;
        switch(event.keyCode | event.charCode)
        {
            case 10:
            case 13:
            {
                switch(owner.id)
                {
                    case "loginName":
                    {
                        User.username = owner.value;
                        User.isExist(User.username);
                        if (User.username && User.password && User.exist) 
                            User.login(User.username, User.password);
                        else
                            User.eleLoginPass.focus();
                    }break;
                    case "loginPass":
                    {
                        User.username = User.eleLoginName.value;
                        User.isExist(User.username);
                        User.password = owner.value;
                        if (User.username && User.password && User.exist)
                            User.login(User.username, User.password);
                        else
                        {
                            User.eleLoginInputWrapper.style.display = "none";
                            User.eleLoginPassWrapper.style.display = "block";
                            User.eleLoginPassConfirm.focus();
                        }
                          
                    }break;
                    case "loginPassConfirm":
                    {
                        var password = owner.value;
                        if (password == User.password)
                            User.register();
                        else if (password) 
                        {
                            alert("Bad Password Confirmation!")
                            User.eleLoginPassWrapper.style.display = "none";
                            User.eleLoginInputWrapper.style.display = "block";
                            User.eleLoginPass.value = "";
                            User.eleLoginPassConfirm.value = "";
                        }
                    }break;
                }
            }break;
        }  
    };
    User.login = function(username,password)
    {
        User.eleLoginWaiting.style.display = "block";
        User.eleLoginInputWrapper.style.display = "none";

        JsRequest.onreadystatechange = function()
        {
        	//alert(reqClass.readyState);
        	if (JsRequest.readyState == 4) 
        	{
                if(JsRequest.responseText) 
                {
                    alert(JsRequest.responseText);
                    User.eleLoginWaiting.style.display = "none";
                    User.eleLoginInputWrapper.style.display = "block";
                    
                }
                else if (!JsRequest.responseJS['code']) 
                {
                    alert(JsRequest.responseJS['message']);
                    User.eleLoginWaiting.style.display = "none";
                    User.eleLoginButton.style.display = "block";
                    
                }
                else 
                {
                    User.eleLoginWaiting.style.display = "block";
                    User.eleLoginWaiting.innerHTML = JsRequest.responseJS['message'];
                }
        		delete this.onreadystatechange;
        	}
        };
        JsRequest.open('GET', 'index.php', false);
        JsRequest.send('login&username='+escape(username)+'&password='+escape(password));
        eval(JsRequest.getXMLRequest().responseText);
        User.load();
    };
    User.isExist = function(value)
    {
        JsRequest.onreadystatechange = function()
        {
            if (JsRequest.readyState == 4) 
        	{
                User.exist = false;
                if (!JsRequest.responseJS) 
                {
                    alert(JsRequest.responseText);
                }
                else if (JsRequest.responseJS['code']) 
                {
                    User.exist = true;
                }
                
        		delete this.onreadystatechange;
        	}
        };
        JsRequest.open('GET', 'index.php', false);
        JsRequest.send('userexist='+value);
        eval(JsRequest.getXMLRequest().responseText);
    };
    User.register = function()
    {
        User.eleLoginWaiting.style.display = "block";
        User.eleLoginPassConfirm.style.display = "none";

        JsRequest.onreadystatechange = function()
        {
        	if (JsRequest.readyState == 4) 
        	{
                if (!JsRequest.responseJS) 
                {
                    alert(JsRequest.responseText);
                    User.eleLoginWaiting.style.display = "none";
                    User.eleLoginButton.style.display = "block";
                }
                else if (!JsRequest.responseJS['code']) 
                {
                    alert(JsRequest.responseJS['message']);
                    User.eleLoginButton.style.display = "block";
                }
                else 
                {
                    User.eleLoginWaiting.style.display = "none";
                    User.login(User.username,User.password);
                }
                
        		delete this.onreadystatechange;
        	}
        };
        JsRequest.open('GET', 'index.php', false);
        JsRequest.send('register&username='+escape(User.username)+'&password='+escape(User.password));
        eval(JsRequest.getXMLRequest().responseText);
    };
    User.init = function()
    {
        User.eleLoginName = GetElementById('loginName');
        User.eleLoginPass = GetElementById('loginPass');
        User.eleLoginPassConfirm = GetElementById('loginPassConfirm');
        User.eleLoginPassWrapper = GetElementById('loginPassWrapper');
        User.eleLoginButton = GetElementById('loginButton');
        User.eleLoginWrapper = GetElementById('loginWrapper');
        User.eleLoginInputWrapper = GetElementById('loginInputWrapper');
        User.eleLoginWaiting = GetElementById('loginWaiting');
        
        User.load();
        User.username = User.eleLoginName.value;
    }
})();

userInit.push
(
    function()
    {
        User.init();
    }
);
