/*
*  (c) spirito GmbH, Duisburg 2002-2003
*  All rights reserved
*
*  http://www.spirito.de
*  This is part of the DADO Application Server Software
*
*  $Revision: 3436 $
*  $Author: ohse $
*  $Date: 2009-11-03 18:41:00 +0100 (Di, 03 Nov 2009) $
*
*/

var linkset=new Array()

var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
var op7=document.all&&navigator.userAgent.indexOf("Opera")!=-1
var ns6=document.getElementById&&!document.all
var ns4=document.layers

function my_hasClass(ele,cls) {
	return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

function dadoShowMenu(e, which, uponly)
{
    if (typeof uponly=='undefined') 
        var uponly=false
    if ((!document.all&&!document.getElementById&&!document.layers) || ns4)
        return true

    clearhidemenu()
    hidemenu()

    menuobj=ie4? eval("document.all."+which) : (op7||ns6)? document.getElementById(which) : ns4? eval("document." + which) : ""
  
  	// Es wird nachgeschaut ob es ein DIV mit der ID "popmenu" gibt und das dann an Stelle
	// des normalen DIV verwendet. Das macht dann sinn, wenn sich die Menüs innerhalb
	// eines relativen DIV's befinden, denn sonst verspringt das Menü übel... (Juli 2006, Dirk)

	var helper = document.getElementById('popmenu')
	if(helper) {
		helper.innerHTML = menuobj.innerHTML
		helper.onmouseover= function(event)
		{
			clearhidemenu(); 
			dadoHighlightMenu(event,'on','popmenu');
		}
		helper.onmouseout = function(event) {
			dadoHighlightMenu(event,'off','popmenu'); 
			dynamichide(event)
		}
		menuobj = helper
	}

	menuobj.thestyle=(ie4||ns6||op7)? menuobj.style : menuobj

    /*
    if (ie4||ns6)
        menuobj.innerHTML=which
    else{
        menuobj.document.write('<layer name=gui bgColor=#E6E6E6 width=165 onmouseover="clearhidemenu()" onmouseout="hidemenu()">'+which+'</layer>')
        menuobj.document.close()
    }
    */

    menuobj.contentwidth=(ie4||ns6||op7)? menuobj.offsetWidth : menuobj.document.gui.document.width
    menuobj.contentheight=(ie4||ns6||op7)? menuobj.offsetHeight : menuobj.document.gui.document.height
    eventX=ie4? event.clientX : ns6? e.clientX : e.x
    eventY=ie4? event.clientY : ns6? e.clientY : e.y

    //Find out how close the mouse is to the corner of the window
    var rightedge=ie4? document.body.clientWidth-eventX : window.innerWidth-eventX
    var bottomedge=ie4? document.body.clientHeight-eventY : window.innerHeight-eventY

    if (my_hasClass(menuobj,'getrecords')) {
	menuobj.thestyle.bottom="38px";
	menuobj.thestyle.marginLeft="0px";
    } else {
	    //if the horizontal distance isn't enough to accomodate the width of the context menu
	    if (rightedge<menuobj.contentwidth)
		//move the horizontal position of the menu to the left by it's width
		menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX-menuobj.contentwidth : ns6? window.pageXOffset+eventX-menuobj.contentwidth : eventX-menuobj.contentwidth
	    else
		//position the horizontal position of the menu where the mouse was clicked
		menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX : ns6? window.pageXOffset+eventX : eventX

	    //same concept with the vertical position
	    if ((bottomedge<menuobj.contentheight) || (uponly)){
		menuobj.thestyle.top=ie4? document.body.scrollTop+eventY-menuobj.contentheight : ns6? window.pageYOffset+eventY-menuobj.contentheight : eventY-menuobj.contentheight;
		if (menuobj.thestyle.top.charAt(0)=='-') menuobj.thestyle.top="0px"
		}
	    else
		menuobj.thestyle.top=ie4? document.body.scrollTop+event.clientY : ns6? window.pageYOffset+eventY : eventY
    }

    menuobj.thestyle.visibility="visible"
    return false
}

function contains_ns6(a, b) 
{
    //Determines if 1 element in contained in another- by Brainjar.com
    while (b.parentNode)
        if ((b = b.parentNode) == a)
            return true;
    return false;
}

var blockhide = false

function setblockhide(v)
{
	blockhide = v
}

function dadoMenuConfirm(s)
  {  
    setblockhide(true)
  	var x = confirm(s)
    setblockhide(false)
	delayhidemenu()
	return x
} 
  
function hidemenu()
{
    if (window.menuobj)
        menuobj.thestyle.visibility=(ie4||ns6||op7)? "hidden" : "hide"
}

function dynamichide(e)
{
	if(!blockhide)
	 {
		if ((ie4||op7)&&!menuobj.contains(e.toElement))
			delayhidemenu()
		else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
			delayhidemenu()
	}
}

function delayhidemenu()
{
    if (ie4||ns6||ns4||op7)
        delayhide=setTimeout("hidemenu()",500)
}

function clearhidemenu()
{
    if (window.delayhide)
        clearTimeout(delayhide)
}

function dadoHighlightMenu(e,state,which)
{
    if (document.all)
        source_el=event.srcElement
    else if (document.getElementById)
        source_el=e.target
    if (source_el.className=="menuitems"){
        source_el.id=(state=="on")? "mouseoverstyle" : ""
    }
    else{
        while(source_el.id!=which){
            source_el=document.getElementById? source_el.parentNode : source_el.parentElement
            if (source_el.className=="menuitems"){
                source_el.id=(state=="on")? "mouseoverstyle" : ""
            }
        }
    }
}

