Subversion Repositories ALCASAR

Rev

Rev 1702 | Rev 2370 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log

chilliController.interval = 20;
chilliController.host = "alcasar";
chilliController.port = 3990;
chilliController.onUpdate = updateUI ;
chilliController.onError  = handleError ;
chilliClock.onTick = function () { }

var isloggedout = false;

if (!window.queryObj) {
    window.queryObj = new Object();
    window.location.search.replace(new RegExp("([^?=&]+)(=([^&]*))?","g"), function($0,$1,$2,$3) { queryObj[$1] = $3; });
}

chilliController.queryObj = window.queryObj;

function ie_getElementsByTagName(str) {
  if (str=="*") return document.all;
  else return document.all.tags(str);
}

if (document.all) 
  document.getElementsByTagName = ie_getElementsByTagName;

function hidePage(page) { 
    var e = document.getElementById(page);
    if (e != null) e.style.display='none';
}

function showPage(page) { 
    var e = document.getElementById(page);
    if (e != null) e.style.display='inline';
}

function setElementValue(elem, val, forceHTML) {
    var e = document.getElementById(elem);
    if (e != null) {
        var node = e;
        if (!forceHTML && node.firstChild) {
            node = node.firstChild;
            node.nodeValue = val;
        } else {
            node.innerHTML = val;
        }
    }
}

chilliClock.onChange = function ( newval ) {
    setElementValue("sessionTime", chilliController.formatTime(newval));
}
    
function updateUI (cmd ) {
    log ( "Update UI is called. chilliController.clientState = " + chilliController.clientState ) ; 
    
    clearTimeout ( delayTimer );

    if ( chilliController.redir ) {
        if (chilliController.redir.originalURL != null &&
            chilliController.redir.originalURL != '') {
            setElementValue('originalURL', '<a target="_blank" href="'+chilliController.redir.originalURL+
                            '">'+chilliController.redir.originalURL+'</a>', true);
        }
        if (chilliController.redir.redirectionURL != null &&
            chilliController.redir.redirectionURL != '') {
            setElementValue('redirectionURL', chilliController.redir.redirectionURL);
        }
    }

    if ( chilliController.message ) {
        setElementValue('logonMessage', chilliController.message);
        chilliController.message = null;
        chilliController.refresh();
    }

    if ( chilliController.location ) {
        setElementValue('locationName', chilliController.location.name);
        chilliController.location = null;
    }

    if ( chilliController.clientState == 0 ) {
        showLoggedOutPage();
                setTimeout('chilliController.refresh()', 1000*chilliController.interval);//WBR for status page only
    }

    if ( chilliController.clientState == 1 ) {
        if ( chilliController.statusURL ) {
                        chilliController.statusWindow = window.open(chilliController.statusURL, "");
                } else {
                        showStatusPage();
        }
    }

    if (chilliController.redir.redirectionURL) {
        //chilliController.nextWindow = window.open(chilliController.redir.redirectionURL,'nextURL');
        window.location.href = chilliController.redir.redirectionURL;
        chilliController.redir.redirectionURL = null;
    }
    
    if ( chilliController.clientState == 2 ) showWaitPage();
}

function handleError( code ) {
    clearTimeout(delayTimer);
    //showErrorPage(code);
}

/* User interface pages update */
function showLoggedOutPage() {
        isloggedout = true;
    showPage("loggedOutPage");
    hidePage("statusPage");
    hidePage("waitPage");
    hidePage("errorPage");
    window.setTimeout("closePopup()",1000);
}

function showStatusPage() {
        isloggedout = false;
    hidePage("loggedOutPage");
    showPage("statusPage");
    hidePage("waitPage");
    hidePage("errorPage");
    
    //For no compliant browser with these javascript functions : onbeforeunload and unload, to disconnect users whose close status.php window. Now, we check if user is still connected while he is joinning 'still_connected.php'
    var xhttp = new XMLHttpRequest();
    xhttp.open('GET','still_connected.php',true);
    xhttp.send();

    // Update message
    if ( chilliController.message ) { 
        setElementValue("statusMessage", chilliController.message);
    }
    
    // Update session
    setElementValue("sessionId",
                    chilliController.session.sessionId ?
                    chilliController.session.sessionId :
                    "Not available");
                        
        setElementValue("userName",
                    chilliController.session.userName ?
                    chilliController.session.userName :
                    "Not available");
                        
    setElementValue("startTime",
                    chilliController.session.startTime ?
                    chilliController.session.startTime.toLocaleString() :
                    "Not available");
    
    setElementValue("sessionTimeout",
                    chilliController.formatTime(chilliController.session.sessionTimeout, 'unlimited'));

    setElementValue("idleTimeout",
                    chilliController.formatTime(chilliController.session.idleTimeout, 'unlimited'));

    setElementValue("maxInputOctets",
                    chilliController.formatBytes(chilliController.session.maxInputOctets));
    setElementValue("maxOutputOctets",
                    chilliController.formatBytes(chilliController.session.maxOutputOctets));
    setElementValue("maxTotalOctets",
                    chilliController.formatBytes(chilliController.session.maxTotalOctets));

    // Update accounting
    setElementValue("sessionTime",
                    chilliController.formatTime(chilliController.accounting.sessionTime));
    
    setElementValue("idleTime",
                    chilliController.formatTime(chilliController.accounting.idleTime));
    
    setElementValue("inputOctets" , chilliController.formatBytes(chilliController.accounting.inputOctets));
    setElementValue("outputOctets", chilliController.formatBytes(chilliController.accounting.outputOctets));
    
    chilliClock.resync (chilliController.accounting.sessionTime);
}

function showWaitPage(delay) {
    /* Wait for delay  */
    clearTimeout(delayTimer);   
    if (typeof(delay) == 'number' && (delay > 10)) {
        delayTimer= setTimeout('showWaitPage(0)' , delay);
        return;
    }
    
    /* show the waitPage */
    hidePage("loggedOutPage");
    hidePage("statusPage");
    showPage("waitPage");
    hidePage("errorPage");
}

function showErrorPage( str )  {
    setTimeout('chilliController.refresh()', 15000);
    
    hidePage("loggedOutPage");
    hidePage("statusPage");
    hidePage("waitPage");
    showPage("errorPage");
    setElementValue("errorMessage", str);
}

function closePopup(){
        this.focus();
        self.opener=this;
        self.close();
}
function alcasarLogoff(){
        if (isloggedout == false){
                chilliClock.stop();
                chilliController.logoff();
        }
        showWaitPage(1000);
        isloggedout = true;
}
function logout() {
        alcasarLogoff();
        window.setTimeout("closePopup()",1000);
}
function logoutWithConfirmation(msg) {
        if (confirm(msg)) {
                logout();
        }
return false;
}
        
var chillijsWindowOnLoad = window.onload;
var delayTimer; // global reference to delayTimer

window.onload = function() {
    if (chillijsWindowOnLoad) 
        chillijsWindowOnLoad();

    var head = document.getElementsByTagName("head")[0];
    if (head == null) head = document.body;

    showWaitPage(); 
    setTimeout('chilliController.refresh()', 1500);
}

// The event window.onbeforeunload doesn't work with some browsers like 'opera' or 'Safari'.
// In the next version of alcasar, 30' without the status window do an automatic logout.
/*
var alcasarOnbeforeUnload = window.onbeforeunload;

window.onbeforeunload = function(){
        if (alcasarOnbeforeUnload)
                alcasarOnbeforeUnload();
        alcasarLogoff();
}
*/

// The event window.onbeforeunload doesn't work with some browsers like 'opera' or 'Safari'.
window.onbeforeunload = function(){
        alcasarLogoff();
        //on annule la fonction alcasarLogoff pour ne pas avoir une deuxième requette sur onunload
        alcasarLogoff = function(){}
}
// Opera doesn't fire the unload event when you navigate Back and Forward or close the window. It does when you click on a link.
window.onunload = function(){
        //la fonction quelque chose uniquement si onbeforeunload n'est pas executée
        alcasarLogoff();
}