var loginListeners = new Array();
var logoutListeners = new Array();
var ajaxLoginDisabled = true;
var logined = false;

function isLogined() {
    return logined;
}

function addLoginListener(listener) {
    loginListeners[loginListeners.length] = listener;
}

function addLogoutListener(listener) {
    logoutListeners[logoutListeners.length] = listener;
}

function addFlashLoginListener(flashName) {
    eval('addLoginListener(function() {flashLoginListener("' + flashName + '");});');
}

function addFlashLogoutListener(flashName) {
    eval('addLogoutListener(function() {flashLogoutListener("' + flashName + '");});');
}

function fireLoginEvent() {
    for(var i = 0; i < loginListeners.length; i++) {
        try {
            loginListeners[i]();
        } catch(err) {
        }
    }
}

function fireLogoutEvent() {
    for(var i = 0; i < logoutListeners.length; i++) {
        try {
            logoutListeners[i]();
        } catch(err) {
        }
    }
}

function flashLoginListener(flashName) {
    var flashMovie = getFlashMovie(flashName);
    flashMovie.refresh();
}

function flashLogoutListener(flashName) {
    var flashMovie = getFlashMovie(flashName);
    flashMovie.refresh();
}

function getFlashMovie(flashName)
{
    if (window.document[flashName]) {
        return window.document[flashName];
    }

    if (navigator.appName.indexOf("Microsoft Internet")==-1 && document.embeds && document.embeds[flashName]) {
            return document.embeds[flashName];
    }

    return document.getElementById(flashName);
}

function enableAjaxLogin() {
    ajaxLoginDisabled = false;
}

function disableAjaxLogin() {
    ajaxLoginDisabled = true;
}

function doLogin() {
    if(ajaxLoginDisabled) {
        return true;
    }

    var frm = document.forms['login'];
    var username = frm.j_username.value;
    var password = frm.j_password.value;

    var xmlHttpObject = getXmlHttpObject();
    if (xmlHttpObject == null) {
        return true;
    }

    var params = 'j_username=' + username + '&j_password=' + password;

    xmlHttpObject.open("POST", "/tjk/ajax-login", true);

    xmlHttpObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xmlHttpObject.setRequestHeader("Content-length", params.length);
    xmlHttpObject.setRequestHeader("Connection", "close");

    xmlHttpObject.onreadystatechange = function() {
        if (xmlHttpObject.readyState == 4 && xmlHttpObject.status == 200) {
            var container = document.getElementById('login-container');

            var newContainer = container.cloneNode(false);
            newContainer.innerHTML = xmlHttpObject.responseText;
            container.parentNode.replaceChild(newContainer, container);

            var ts = document.getElementById("themeStyle").value;

            var count = document.getElementsByTagName("link").length;
            for (var i = 0; i < count; i++) {
                var lnk = document.getElementsByTagName("link")[i];
                if (lnk.getAttribute("rel").indexOf("style") != -1 && lnk.getAttribute("href").indexOf("/tjk/styles/themes") == 0) {
                    lnk.setAttribute("href", ts);
                }
            }
               //----------------menu
             var menuObj=menus[1];
             menuObj.load();
            //----------------------end of menu
            logined = document.getElementById("loginStatus").value;
            if(logined) {
                fireLoginEvent();
            }
        }
    };

    xmlHttpObject.send(params);

    return false;
}

function doLogout() {
    if(ajaxLoginDisabled) {
        return true;
    }

    var xmlHttpObject = getXmlHttpObject();
    if (xmlHttpObject == null) {
        return true;
    }

    xmlHttpObject.open("GET", "/tjk/ajax-logout", true);
    xmlHttpObject.onreadystatechange = function() {
        if (xmlHttpObject.readyState == 4 && xmlHttpObject.status == 200) {
            var container = document.getElementById('login-container');

            var newContainer = container.cloneNode(false);
            newContainer.innerHTML = xmlHttpObject.responseText;
            container.parentNode.replaceChild(newContainer, container);

            var count = document.getElementsByTagName("link").length;
            for (var i = 0; i < count; i++) {
                var lnk = document.getElementsByTagName("link")[i];
                if (lnk.getAttribute("rel").indexOf("style") != -1 && lnk.getAttribute("href").indexOf("/tjk/styles/themes") == 0) {
                    lnk.setAttribute("href", "/tjk/styles/themes/default.css");
                }
            }

            logined = false;
            fireLogoutEvent();
        }
    };

    xmlHttpObject.send(null);

    return false;
}

function getXmlHttpObject() {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    }

    if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
    }

    return null;
}