ns4 = false;
ie4 = false;
dom = false;

doInit = false;

border = 5;
folderLayerHeight = new Array();
contentLayerHeight = new Array();
topLayerHeight = 0;
bottomLayerHeight = 0;

// scrolls to the top of the page
function top() {
    window.scrollTo(0, 0);
}

// waits a bit and initiates the Menue
function initAfterResize() {
    if (doInit) return;
    doInit = true;
    window.setTimeout("initNavi(); doInit = false", 100);
}

// inits the folder menue on the right
function initNavi() {

    // check browser type
    if (document.getElementById) dom = true;
    else if (document.all) ie4 = true;
    else if (document.layers) ns4 = true;

    // get the height of all the layers
    var i = 0;
    while (getLayer("folderLayer" + i)) {
        folderLayerHeight[i] = getLayerHeight("folderLayer" + i);
        if (getLayer("contentLayer" + i)) {
            contentLayerHeight[i] = getLayerHeight("contentLayer" + i);
        }
        else {
            contentLayerHeight[i] = 0;
        }
        i++;
    }
    topLayerHeight = getLayerHeight("topLayer");
    bottomLayerHeight = getLayerHeight("bottomLayer");
    
    // position the layers
    var yPos = border;

    setLayerYPosition("topLayer", yPos);
    yPos += topLayerHeight + border;
    setLayerVisibility("topLayer", true);
    
    for (i = 0; i < folderLayerHeight.length; i++) {
        setLayerYPosition("folderLayer" + i, yPos);
        yPos += folderLayerHeight[i] + border;
        setLayerVisibility("folderLayer" + i, true);
    
        if (getLayer("contentLayer" + i)) {
            setLayerYPosition("contentLayer" + i, yPos);
            yPos += contentLayerHeight[i] + 2 * border;
            setLayerVisibility("contentLayer" + i, true);
        }
    }
    
    setLayerYPosition("bottomLayer", yPos);
    yPos += topLayerHeight + border;
    setLayerVisibility("bottomLayer", true);

    // close all folders and open the active one    
    closeall();
    if (activefolder >= 0) openclose(activefolder);
}

// opens/closes a folder
function openclose(nr) {
    var factor = 0;
    if (isLayerVisible("contentLayer" + nr)) {
        setLayerVisibility("contentLayer" + nr, false);
        factor = -1;
    }
    else {
        setLayerVisibility("contentLayer" + nr, true);
        factor = 1;
    }
    for (var i = nr + 1; i < folderLayerHeight.length; i++) {
        setLayerYPosition("folderLayer" + i, getLayerYPosition("folderLayer" + i) + factor * (contentLayerHeight[nr] + 2 * border));
        if (getLayer("contentLayer" + i)) {
            setLayerYPosition("contentLayer" + i, getLayerYPosition("contentLayer" + i) + factor * (contentLayerHeight[nr] + 2 * border));
        }
    }
    setLayerYPosition("bottomLayer", getLayerYPosition("bottomLayer") + factor * (contentLayerHeight[nr] + 2 * border));
}

// closes all folders
function closeall() {
    for (var j = 0; j < folderLayerHeight.length; j++) {
        if (getLayer("contentLayer" + j)) {
            if (isLayerVisible("contentLayer" + j)) {
                openclose(j);
            }
        }
    }
}

//
// cross browser help functions
//

function getLayer(name) {
    if (ns4) {
        return document.layers[name]
    }
    else if (ie4) {
        return document.all[name];
    }
    else if (dom) {
        return document.getElementById(name);
    }
    else return false;  
}

function getLayerHeight(name) {
    var val = "";
    if (ns4) {
        val = document.layers[name].document.height;
    }
    else if (ie4) {
        val = document.all[name].scrollHeight;
    }
    else if (dom) {
        val = document.getElementById(name).style.height;
        if (val == "") val = document.getElementById(name).offsetHeight;
    }
    return parseInt(val);
}

function getLayerYPosition(name) {
    var val = "";
    if (ns4) {
        val = document.layers[name].top;
    }
    else if (ie4) {
        val = document.all[name].style.top;
        if (val == "") val = document.all[name].style.offsetTop;
    }
    else if (dom) {
        val = parseInt(document.getElementById(name).style.top);
    }
    return parseInt(val);
}

function isLayerVisible(name) {
    if (ns4) {
        return document.layers[name].visibility == "show";
    }
    else if (ie4) {
        return document.all[name].style.visibility == "visible";
    }
    else if (dom) {
        return document.getElementById(name).style.visibility == "visible";
    }
}

function setLayerVisibility(name, visible) {
    if (ns4) {
        document.layers[name].visibility = visible ? "show" : "hide";
    }
    else if (ie4) {
        document.all[name].style.visibility = visible ? "visible" : "hidden";
    }
    else if (dom) {
        document.getElementById(name).style.visibility = visible ? "visible" : "hidden";
    }
}

function setLayerYPosition(name, pos) {
    if (ns4) {
        document.layers[name].top = pos;
    }
    else if (ie4) {
        document.all[name].style.top = pos;
    }
    else if (dom) {
        document.getElementById(name).style.top = pos;
    }
}

