var Login = new function() {
    this.ajax = null;
    this.form = null;
    this.button = null;
    this.enabled = true;
    this.dots = '';
    this.progressInterval = null;
    this.url = '/js_servercall.php';

    this.init = function() {
        var self = Login;
        self.form = document.getElementById('loginForm');
        if (!self.form) {
            return false;
        }
        document.onkeyup = Login.keyup;
        self.ajax = new Ajax();
        self.loginProgress = document.getElementById('m_login_progress');
        self.loginMsg = document.getElementById('m_login_msg_body');
        self.progress = document.getElementById('m_login_progress');
        self.button = self.form.loginSubmit;
        //self.form.loginUsername.focus();
        self.toggleEnabled(false);
        self.form.onsubmit = function() {self.submitData(); return false;}
    };

    this.keyup = function(e) {
        var self = Login;
        if (!e) {
            e = window.event;
        }
        if (e.keyCode != 13) {
            self.evalFormFieldState();
        }
    };

    this.toggleEnabled = function(able) {
        var self = Login;
        if (able) {
            self.button.onClick = self.submitData;
            self.button.disabled = false;
            self.enabled = true;
        } else {
            /*
            self.button.onClick = null;
            self.button.disabled = true;
            self.enabled = false;
            */
        }
    };

    this.submitData = function() {
        Element.toggle('m_login_progress');

        var self = Login;
        var postData = formData2QueryString(self.form);
        self.ajax.doPost(self.url, postData, self.handleLoginResp, 'xml');
        self.setMsg('');
        self.toggleEnabled(false);
    };

    this.trimString = function(str) {
        sInString = str.replace( /^\s+/g, "" );// strip leading
        return sInString.replace( /\s+$/g, "" );// strip trailing
    };

    this.handleLoginResp = function(response) {
        var self = window.Login;

        if (response.getElementsByTagName('valid')[0].firstChild) {
            var responseType = self.trimString(response.getElementsByTagName('valid')[0].firstChild.data);
        }
        if (response.getElementsByTagName('message')[0].firstChild) {
            var responseMsg = response.getElementsByTagName('message')[0].firstChild.data;
        }
        if (response.getElementsByTagName('redirect')[0].firstChild) {
            var redirectUrl = response.getElementsByTagName('redirect')[0].firstChild.data;
        }
        if (responseType == 1) { // valid login
            //self.setMsg(responseMsg);
            if (redirectUrl) {
                location = redirectUrl;
            } else {
                location = '/';
            }
        } else { // invalid login
            self.showErrorPrompt(responseMsg);
        }
    };

    this.setMsg  = function(msg) {
        var self = Login;
        var loginMsg = self.loginMsg;
        if (loginMsg.firstChild) {
            loginMsg.removeChild(loginMsg.firstChild);
        }
        loginMsg.appendChild(document.createTextNode(msg));
    };

    this.showErrorPrompt = function(str) {
        var self = Login;
        self.setMsg(str);
        motigo_login_error('m_login_msg');
		$('m_forgot_passwd').className='m_error';
        self.form.loginPassword.value = '';
        Element.toggle('m_login_progress');
    }

    this.evalFormFieldState = function() {
        var self = Login;
        if (self.form.loginUsername.value.length > 0 && self.form.loginPassword.value.length > 0) {
            self.toggleEnabled(true);
        } else {
            self.toggleEnabled(false);
        }
    };

    this.cleanup = function() {
        var self = Login;
        self.form = null;
        self.button = null;
        self.url = null;
    };
};

window.onload = Login.init;
window.onunload = Login.cleanup;
