var disappeardelay=250  //menu disappear speed onMouseout (in miliseconds)
var ie5=document.all
var ns6=document.getElementById&&!document.all

function iecompattest(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function returnObjById( id )
{
    if (document.getElementById)
        var returnVar = document.getElementById(id);
    else if (document.all)
        var returnVar = document.all[id];
    else if (document.layers)
        var returnVar = document.layers[id];
    return returnVar;
}

function getElementByClassName(oElm, strTagName, strClassName){
        return getElementsByClassName(oElm, strClassName)[0];
}

function getElementsByClassName(oElm, classname){
        var inc=0
        // var alltags=document.all? document.all : document.getElementsByTagName("*")
        var alltags=oElm.all? oElm.all : oElm.getElementsByTagName("*")
        customcollection = new Array();
        for (i=0; i<alltags.length; i++){
                if (alltags[i].className==classname)
                customcollection[inc++]=alltags[i]
        }
        return customcollection;
}

function getRelativeOffsets(node) {
        x = 0;
        y = 0;
        rx = node.offsetLeft;
        ry = node.offsetTop;
        rset = false;
        while (node != null && rset == false) {
                // alert(node.id+" top: "+node.offsetTop+" "+node.style.position+" offsetparent: "+node.offsetParent);
                if (node.offsetLeft) x += node.offsetLeft;
                if (node.offsetTop) y += node.offsetTop;
                if (node.style && node.style.position == 'relative' && !rset ) {rset = true;}
                if (rset == false) { rx = x; ry = y; }
                node = node.offsetParent;
        }
        return new Array(rx,ry);
}

function getAbsoluteOffsets(node) {
        x = 0;
        y = 0;
        while (node != null) {
                if (node.offsetLeft) x += node.offsetLeft;
                if (node.offsetTop) y += node.offsetTop;
                node = node.offsetParent;
        }
        return new Array(x,y);
}

function dropdownmenu(obj, e, dropmenuID, myTag, dobjID) {
	if (typeof dropmenuobj!="undefined") //hide previous menu
	dropmenuobj.style.visibility="hidden";
	dropmenuobj = document.getElementById(dropmenuID);
	currentobj = document.getElementById(dobjID);
	// currentobj.style.backgroundColor = "#0000c0";
	dropmenuobj.onmouseover=overmenu;
	dropmenuobj.onmouseout=delayhidemenu;
	obj.onmouseout=delayhidemenu;
	cursorovermenu = true;
	coords = getRelativeOffsets(obj);
	rx = coords[0];
	ry = coords[1];

	var windowWidth=ie5 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
	var topedge=ie5 && !window.opera? iecompattest().scrollTop : window.pageYOffset
	var windowHeight=ie5 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18

//	windowWidth = window.innerWidth + window.pageXOffset; // Works w/FF not IE
//	windowHeight = window.innerHeight + window.pageYOffset; // Works w/FF not IE
//	alert(window.innerHeight+" x:"+x+" y:"+y);
//	alert(dropmenuobj.clientWidth);
	if (y + obj.offsetHeight + dropmenuobj.clientHeight <= windowHeight || dropmenuobj.clientHeight > windowHeight) {
		dropmenuobj.style.top = ry + obj.offsetHeight;
	} else {
		dropmenuobj.style.top = ry - dropmenuobj.clientHeight;
	}

	if (x + obj.offsetWidth + dropmenuobj.clientWidth < windowWidth || dropmenuobj.clientWidth > windowWidth) {
		dropmenuobj.style.left = rx;
	} else {
		dropmenuobj.style.left = rx + obj.offsetWidth - dropmenuobj.clientWidth;
	}

	dropmenuobj.style.visibility = 'visible';
}
function overmenu(){
	//delayhide = null;
	//echo (delayhide);
	cursorovermenu = true;
	// delayhide=setTimeout("dropmenuobj.style.visibility='hidden'",disappeardelay)
}

function delayhidemenu(){
	// alert ('moi');
	cursorovermenu = false;
	if (cursorovermenu == false) delayhide=setTimeout("if (cursorovermenu == false) dropmenuobj.style.visibility='hidden'",disappeardelay)
}

