function getOffsetTop (el) {
    var ot = el.offsetTop;
    while((el = el.offsetParent) != null)
	ot += el.offsetTop;
    return ot;
}


var pos = 0;
var theTop = 0;
var old = theTop;
var sw = 0;
var sh = 0;
var mh = 0;
var ignore = false;
var menu = null;
var noScrollMenu = false;
var useFastMenu = true;




function maybeHideSelects() {
    if( !ignore && document.forms['edit'] ) {
	var x = document.getElementsByTagName("SELECT");

	var i;
	for( i = 0; i != x.length; i ++ ) {
	    var ot = getOffsetTop(x[i]);
	    if((ot - 20) <= pos && (mh < sh)) {
		x[i].style.visibility = "hidden";
	    } else {
		x[i].style.visibility = "";
	    }
	}

    }
}

function getMenuTop(b) {
    mh = menu.offsetHeight;
    if (document.documentElement && document.documentElement.scrollTop) {
	    pos = document.documentElement.scrollTop;
	    sh  = document.documentElement.offsetHeight;
    }
    else if (document.body) {
	pos = document.body.scrollTop;
	sh  = document.body.offsetHeight;
    }
    if( b ) {
	if( (mh + 40) < sh ) {
	    return pos;
	} else {
	    return 0;
	}
    }
    return pos;
}

var interval = null;
function movemenu()
{
    if( noScrollMenu ) {
        return;
    }

    if(document.all && !interval) {
	interval = window.setInterval("maybeHideSelects()", 150);
    }
    menu = document.getElementById('menu');
    mh = menu.offsetHeight;
    /* use expression optimization in IE, or even better.. */
    /* fixed positioning in NS                             */
    /* If menus have not been created, use delay method    */
    /* If the screen height is not tall enough to hold the */
    /* left menu, it is set to scroll.                     */
    var el = document.getElementById("HM_Menu2");
    if( useFastMenu ) {
	if( document.all ) {
	    if( el ) {
		el.style.setExpression("top","getMenuTop(false) + 'px'");
		menu.style.setExpression("top","getMenuTop(true) + 'px'");
		return;
	    }
	} else {
	    if(el) {
		sh = window.innerHeight;
		if( mh < sh ) {
		    menu.style.top = "24px";
		    menu.style.position = "fixed";
		}
		el.style.position = "fixed";
		return;
	    }
	}
    }




    if (window.innerHeight) {
	    pos = window.pageYOffset;
	    sh = window.innerHeight;
	    sw = window.innerWidth;
    }
    else if (document.documentElement && document.documentElement.scrollTop) {
	pos = document.documentElement.scrollTop;
	sh  = document.documentElement.offsetHeight;
	sw  = document.documentElement.offsetWidth;
    }
    else if (document.body) {
	pos = document.body.scrollTop;
	sh  = document.body.offsetHeight;
	sw  = document.body.offsetWidth;
    }
    if (pos < theTop) pos = theTop;
    if (pos != old) {
	try {
	    if((mh + 40) < sh ) {
		menu.style.top = pos;
		document.getElementById("HM_Menu2").style.top = pos + "px";
	    } else {
		menu.style.top = 0;
		document.getElementById("HM_Menu2").style.top = "0px";
	    }
	} catch(err) {/* The menu does not get created yet, this is kind of ugly.  */ }
    }
    old = pos;
    setTimeout("movemenu()", 50);
}
