/**
  * onITmenu (drop-down menu)
  * onITmenu uses the Cross-Browser DHTML API CBE 4. For more informations about CBE look at http://cross-browser.com
  * Things that are posibble with this script:
  *  - Small drop-down menus with max-depth of 1. (no sub-sub-menus)
  *  - Sub-menus in HTML-Code, not generated.
  * @version  1.0.1 (restart.tc adaption)
  * @author   Thomas Seifried atomas@detonation.org
  * @license  GPL
  * @usage    All Items are divs or spans and position:absolute.
  *           ids of menupoint divs are freely chooseable
  *           ids of the submenu divs must be named like <menupointid>_drop. eg.: menu1_drop
  *           All menupoint ids (not submenu) that should have a drop-down menu have to be in the menuarray (see windowOnload)
 */
var menuarray = new Array(); // array of all menu-ids
var current1;
var current2; // current open drop-down menu (cbe object)
var currentmenu;
var currentmenu1;  //current menupoint (cbe object)
var sel;

function initDropper(){
    document.cbe.addEventListener('mouseMove',mouseMoveListener);
    for(i=0;i<menuarray.length;i++){
        if(!cbeGetElementById(menuarray[i]['name']))
            continue;
        mid=cbeGetElementById(menuarray[i]['name']).cbe;
        mid.addEventListener('mouseOver',mouseOverListener);
        mid.menulevel=1;
        for(j=0;j<menuarray[i]['submenu'].length;j++) {
            mid=cbeGetElementById(menuarray[i]['submenu'][j]).cbe;
            mid.addEventListener('mouseOver',mouseOverListener);
            mid.menulevel=2;
        }
    }
}

function mouseOverListener(e){
    if(!(e.currentTarget.cbe==currentmenu)){
        currentmenu=e.currentTarget.cbe;
        if(currentmenu.menulevel==1) {
            currentmenu1=currentmenu;
            if(current2)current2.hide();
            current2=0;
            if(current1)current1.hide();
            current1=cbeGetElementById(currentmenu.id+"_drop").cbe;
            current1.show();
            HideSelects(undefined, current1.pageX(), current1.pageY(), current1.width(), current1.height(), 0);
        } else {
            if(current2)current2.hide();
            current2=cbeGetElementById(currentmenu.id+'_drop').cbe;
            current2.show();
        }
    }
}

function mouseMoveListener(e){
    var x=e.pageX;
    var y=e.pageY;
    if(currentmenu) {
        if(current2) {
            if(!currentmenu.contains(x,y) && !current2.contains(x,y)) {
                current2.hide();
                current2=0;
                currentmenu=currentmenu1;
            }
        } else
            if(current1){
                if(!currentmenu.contains(x,y) &&  !current1.contains(x,y)){
                    HideSelects(undefined, 0, 0, 0, 0, 0);
                    current1.hide();
                    current1=0;
                    currentmenu=0;
                }
            }
    }
}

function HideSelects(pm,x,y,w,h,l){
    if(is.ie) {
        var selx,sely,selw,selh,i
        if(!sel) sel = document.getElementsByTagName("SELECT");

        for(i=0;i<sel.length;i++){
            selx=0; sely=0; var selp;
            if(sel[i].offsetParent){
                selp=sel[i];
                while(selp.offsetParent){
                    selp=selp.offsetParent;
                    selx+=selp.offsetLeft;
                    sely+=selp.offsetTop;
                }
            }
            selx+=sel[i].offsetLeft;
            sely+=sel[i].offsetTop;
            selw=sel[i].offsetWidth;
            selh=sel[i].offsetHeight;
            if(selx+selw>x && selx<x+w && sely+selh>y && sely<y+h){

                if(sel[i].style.visibility!="hidden"){
                    sel[i].level=l;
                    sel[i].style.visibility="hidden";
                    if(pm){
                        if(!pm.mout)
                            pm.mout="";
                        pm.mout+=this.name+".sel["+i+"].style.visibility='visible';"
                    }
                }
            }else
                if(l<=sel[i].level && !(pm&&l==0))
                    sel[i].style.visibility="visible"
        }
    }
}
