/**
 * JavaScript librairy
 * To enable cross-browser functionality
 * Author : Cyril MICHAUD
 * Date : 08/05/2003
 */

var browser = 0;

var NETSCAPE = 1;
var IE = 2;
var KONQUEROR = 3;
var OPERA = 4;

/**
 * Identify the browser
 * Return :
 *    - NETSCAPE : for Netscape Navigator and compatibles (ex: Mozilla)
 *    - IE : for Internet Explorer and compatibles (ex: Opera)
 *    - KONQUEROR : for Konqueror browser
 */
function getBrowser() {
    if(browser == 0) {
        var bwr = navigator.appName;
        if(bwr == "Netscape") {
            browser = NETSCAPE;
        }
        else if (bwr == "Microsoft Internet Explorer") {
            browser = IE;
        }
        else if (bwr == "Konqueror") {
            browser = KONQUEROR;
        }
        else if (bwr == "Opera") {
            browser = OPERA;
        }
        else {
            //unknown browser... we suppose it is a JavaScript compliant (not JScript) like Netscape or Mozilla
            browser = NETSCAPE;
        }
    }
    return browser;
}

function getLayer(layerName, myDocument) {
    var browser = getBrowser();
    if(myDocument == null) myDocument = window.document;

    var object;
    var style;
    switch (browser) {
    case NETSCAPE :
        object = myDocument.getElementById(layerName);
        break;
    case KONQUEROR :
    case IE :
    case OPERA :
        object = eval("myDocument.all."+layerName);
        break;
    }
    return object;
}

function showLayer(layerName, myDocument)
{
    var browser = getBrowser();
    if(myDocument == null) myDocument = window.document;

    var object;
    var style;
    switch (browser) {
    case NETSCAPE :
        object = myDocument.getElementById(layerName);
        style = object.style;
        break;
    case KONQUEROR :
    case OPERA :
    case IE :
        object = eval("myDocument.all."+layerName);
        style = object.style;
        break;
    }
    if(style.display != '') {
        style.display = '';
    }
}

function hideLayer(layerName, myDocument)
{
    var browser = getBrowser();
    if(myDocument == null) myDocument = window.document;

    var object;
    var style;
    switch (browser) {
    case NETSCAPE :
        object = myDocument.getElementById(layerName);
        style = object.style;
        break;
    case KONQUEROR :
    case OPERA :
    case IE :
        object = eval("myDocument.all."+layerName);
        style = object.style;
        break;
    }
    if(style.display != 'none') {
        style.display = 'none';
    }
}

function getLayerDisplayed(layerName, myDocument)
{
    var browser = getBrowser();
    if(myDocument == null) myDocument = window.document;

    var object;
    var style;
    switch (browser) {
    case NETSCAPE :
        object = myDocument.getElementById(layerName);
        style = object.style;
        break;
    case KONQUEROR :
    case OPERA :
    case IE :
        object = eval("myDocument.all."+layerName);
        style = object.style;
        break;
    }
    return style.display == '';
}

function getFormObject(inputName, formName, myDocument, enforce)
{
    var browser = getBrowser();
    if(myDocument == null || myDocument == '') myDocument = window.document;
    var object;
    switch(browser) {
    case NETSCAPE :
        if(formName == null || formName == '') {
            object = myDocument.getElementById(inputName);
        }
        else {
            object = eval("myDocument." + formName + "." + inputName);
        }
        if(!object)
            return null;
        break;
    case KONQUEROR :
    case OPERA :
    case IE :
        if(formName == null || formName == '') {
            formName = "all";
        }
        object = eval("myDocument." + formName + "['" + inputName + "']");
        if(!object)
            return null;
        
        if((object.id == null || object.id == "") && formName == 'all' && !enforce)
            window.alert("Warning : your Javascript will only work on Internet Explorer browsers.\nYou have to provide a value for the 'formName' argument.");
        
        break;
    }

    return object;
}

function getInputValue(inputName, formName, myDocument, enforce)
{
    var object = getFormObject(inputName, formName, myDocument, enforce);
    
    if(object.length != null) {
        var nb = object.length;
        if(object.type == "select-one") {
            var i;
            for(i=0; i<nb; i++) {
                if(object.options[i].selected)
                    return object.options[i].value;
            }
            return null;
        }
        else if(object.type == "select-multiple") {
            var res = new Array();
            var i, j=0;
            for(i=0; i<nb; i++) {
                if(object[i].selected) {
                    res[j++] = object[i].value;
                }
            }
            return res;
        }
        else if(object[0].type == "radio") {
            var i;
            for(i=0; i<nb; i++) {
                if(object[i].checked)
                    return object[i].value;
            }
            return null;
        }
    }
    else if(object.type == "checkbox") {
        return object.checked;
    }
    else if(object.type == "radio") {
        if(object.checked)
            return object.value;
        else
            return null;
    }
    else {
        return object.value;
    }
}

function setInputValue(inputName, value, formName, myDocument, enforce)
{
    var object = getFormObject(inputName, formName, myDocument, enforce);
    
    if(object.length != null) {
        var nb = object.length;
        if(object.type == "select-one") {
            var i;
            for(i=0; i<nb; i++) {
                if(object[i].value == value) {
                    object.options[i].selected = true;
                }
            }
        }
        else if(object.type == "select-multiple") {
            var i, j;
            for(i=0; i<nb; i++) {
                object[i].selected = false;
                for (j=0; j<value.length; j++) {
                    if(object[i].value == value[j])
                        object[i].selected = true;
                }
            }
        }
        else if(object[0].type == "radio") {
            var i;
            for(i=0; i<nb; i++) {
                object[i].checked = false;
                if(object[i].value == value)
                    object[i].checked = true;
            }
        }

    }
    else if(object.type == "checkbox") {
        if (!value || value == 'false') {
            object.checked = false;
        }
        else {
            object.checked = true;
        }
    }
    else if(object.type == "radio") {
        object.checked = value;
    }
    else {
        object.value = value;
    }
}


