var agt = navigator.userAgent.toLowerCase();
var is_gecko = (agt.indexOf('gecko') != -1);

// overly simplistic test for IE
var isIE = (document.all ? true : false);
//var isDOM = (document.getElementById ? true : false);
var ns=(document.layers)?true:false

var mousex, mousey, myLast, shown=0
var left, right, up, down
var tryHide

//code for drops
function showdrop(thelayer){
		tryHide = false;
		if(shown==0) {
			myLast = thelayer
			showit(thelayer)
			shown = 1
			}
		else {
			hideThis(myLast)
			myLast = thelayer
			showit(thelayer)
			}
        }

// fixPosition() attaches the element named divname
// to an image named divname+'Pos'
//
function fixPosition(divname) {
 divstyle = getDivStyle(divname)
 positionerImgName = divname + 'Pos'
 // hint: try setting isPlacedUnder to false
 isPlacedUnder = true
 if (isPlacedUnder) {
  setPosition(divstyle,positionerImgName,true)
 } else {
  setPosition(divstyle,positionerImgName)
 }
}

// get the true offset of anything on NS4, IE4/5 & NS6, even if it's in a table
function getAbsX(elt) { return (elt.x) ? elt.x : getAbsPos(elt,"Left"); }
function getAbsY(elt) { return (elt.y) ? elt.y : getAbsPos(elt,"Top"); }
function getAbsPos(elt,which) {
 iPos = 0;
 //alert(elt + which)
 while (elt != null) {
  iPos += elt["offset" + which];
  elt = elt.offsetParent;
 }
 return iPos;
}

function getDivStyle(divname) {
 var style;
 //alert(divname + " " + document.layers[divname])
 if (is_gecko) { style = document.getElementById(divname).style; }
 else { style = isIE ? document.all[divname].style
                     : document.layers[divname]; } // NS4
 return style;
}

// annoying detail: IE and NS6 store elt.top and elt.left as strings.
function moveBy(elt,deltaX,deltaY) {
 elt.left = parseInt(elt.left) + deltaX;
 elt.top = parseInt(elt.top) + deltaY;
}

function setPosition(elt,positionername,isPlacedUnder) {
 var positioner;
 if (isIE) {
  positioner = document.all[positionername];
 } else {
  if (is_gecko) {
    positioner = document.getElementById(positionername);
  } else {
	// not IE, not DOM (probably NS4)
	// if the positioner is inside a netscape4 layer this will *not* find it.
	// I should write a finder function which will recurse through all layers
	// until it finds the named image...
    positioner = document.images[positionername];
  }
 }
 elt.left = getAbsX(positioner);
 elt.top = getAbsY(positioner) + (isPlacedUnder ? positioner.height : 0);
}

function showit(thelayer){
	
	visObj = create(thelayer)
	if(!ns){ visObj.visibility="visible" }
	else { visObj.visibility = "show" }

	if(is_gecko) {
		up = getAbsY(document.getElementById(thelayer))
		down = up + document.getElementById(thelayer).scrollHeight
		left = getAbsX(document.getElementById(thelayer))
		right = left + document.getElementById(thelayer).scrollWidth
		}
	else if (ns) {
		up = eval('document.'+thelayer+'.top')
		down = up + eval('document.'+thelayer+'.clip.height')
		left = eval('document.'+thelayer+'.left')
		right = left + eval('document.'+thelayer+'.clip.width')
		}
	else {
		up = eval(thelayer+'.style.pixelTop')
		down = up + eval(thelayer+'.scrollHeight')
		left = eval(thelayer+'.style.pixelLeft')
		right = left + eval(thelayer+'.scrollWidth')
		}
	}
        
function create(obj) {
        if (isIE) {
        myObject = eval("document.all." + obj + ".style")
        } else if (is_gecko) {
        myObject = eval("document.getElementById('" + obj + "').style")
        } else {
        myObject = document.layers[obj]
        }
        return myObject
}

function hideStall(){
		tryHide = true
		//alert("zzz")
        setTimeout('hideall()',500)
        }

function hideall() {
	if(!checkmousepos() && tryHide) {
		hideThis(myLast)
		shown=0
		}
//	else {setTimeout('hideall()',500); tryHide=false}
	}

function hideThis(thelayer){
    visObj = create(thelayer)
	if(!ns){ visObj.visibility="hidden" }
	else { visObj.visibility = "hide" }
	}

//deal with cursor over layer
document.onmousemove = getmousepos
if (ns) document.captureEvents(Event.MOUSEMOVE)

function checkmousepos() {
	if(shown==1) {
		//document.formName.left.value = left
		//document.formName.right.value = right
		//document.formName.up.value = up
		//document.formName.down.value = down
		if(mousex < left || mousex > right || mousey > down || mousey < up ) {
			//alert("!")
			return false;
			}
		else {setTimeout('hideall()',500); return true;}
	}
	return false;
}

function getmousepos(e){
   if(ns||is_gecko){ mousex = e.pageX; mousey = e.pageY }
   else { mousex = event.clientX; mousey = event.clientY }
   //document.formName.mousex.value = mousex
   //document.formName.mousey.value = mousey
   }
