function getStyleValue (element, cssProperty) {
	return window.getComputedStyle? window.getComputedStyle(element, null)[cssProperty]
                 : element.currentStyle? element.currentStyle[cssProperty] : "";
}

var navpos = document.getElementById("navpos");
var debug = document.createTextNode(""); navpos.appendChild(debug);
var navbg = document.getElementById("navbg");
var logobg = document.getElementById("logobg");
var logopos = document.getElementById("logopos");
var titlepos = document.getElementById("titlepos");
var mainpos = document.getElementsByName("hauptseite")[0] || navpos.nextSibling; // Keine Kommentare vor der Hauptseite, bitte!

function relayout () {
    var x,y,w,h,tw,th;
    if (window.pageXOffset!=undefined) // all except Explorer
    {
        x = window.pageXOffset;
        y = window.pageYOffset;
        w = window.innerWidth;
        h = window.innerHeight;
    }
    else if (document.documentElement!=undefined && document.documentElement.scrollLeft!=undefined)
        // Explorer 6+ Strict
    {
        x = document.documentElement.scrollLeft;
        y = document.documentElement.scrollTop;
        w = document.documentElement.clientWidth;
        h = document.documentElement.clientHeight;
    }
    else if (document.body!=undefined) // all other Explorers
    {
        x = document.body.scrollLeft;
        y = document.body.scrollTop;
        w = document.body.clientWidth;
        h = document.body.clientHeight;
    }

    tw = mainpos.offsetWidth+navbg.offsetWidth;
    th = mainpos.offsetHeight;

    if (getStyleValue(titlepos,"position")=="absolute") {
        // Alte Browser wie IE6 und davor.
        // Adjust titlebar
        var n = navpos.offsetWidth;
        var t = mainpos.offsetWidth;
        var nw = Math.max(t,w+x-t-2);
        //debug.data = "w:"+w+", x:"+x+", t:"+t+", n:"+n+", tw:"+tw+", nw:"+nw;
        titlepos.style.width = nw +"px";
        // Adjust navbar
        var t = titlepos.offsetHeight;
        var n = navpos.offsetHeight
        var nh = Math.max(n,h+y-t-2,th-t);
        //debug.data = "h:"+h+", y:"+y+", t:"+t+", n:"+n+", th:"+th+", nh:"+nh;
        navbg.style.height = nh +"px";
    } else { // position:fixed, neuere Browser (siehe CSS-Weiche)
        // Scroll horizontal
        navpos.style.left = -x+"px";
        navbg.style.left = -x+"px";
        logopos.style.left = -x+"px";
        if (logobg) logobg.style.left = -x+"px";
        titlepos.style.left = (logopos.offsetWidth-x)+"px";

        // Check for large navpos small mainpos
        if (navpos.offsetHeight+logopos.offsetHeight>th) {
            //alert(mainpos);
            mainpos.style.height = (navpos.offsetHeight+logopos.offsetHeight)+"px";
            th = mainpos.offsetHeight;
        }

        // Scroll vertical
        if (navpos.offsetHeight+6>h-logopos.offsetHeight && th>h) {
            var sp = y/(th-h); // Between 0 and 1
            var px = logopos.offsetHeight-sp*(logopos.offsetHeight+navpos.offsetHeight+6-h);
            navpos.style.top = px+"px";
        }
    }
}

window.onscroll = relayout;
window.onresize = relayout;
relayout();
relayout();

