//******************************************** schnippsel
var node_indent="";
function nodeInfo(mynode)
{
  var i;
  var j = mynode.childNodes.length;
  var msg= "ACK"+ node_indent + mynode
        + " typ="    + mynode.nodeType 
	+"  childs=" + j +"\n";
  
  if ( j>0 ) {
    var node_indent_save=node_indent;
    node_indent+="  ";
    for (i=0; i<j; i++ ) msg+=nodeInfo(mynode.childNodes[i]);
    node_indent=node_indent_save;
  }
  return msg;
}


// -----------------------------------------------------------------------------

Array.prototype.mnuCreated = false;

ci_DOM = (document.getElementById) ? true : false;
ci_NS4 = (document.layers) ? true : false;
ci_IE  = (document.all) ? true : false ;
ci_NS6 = (navigator.vendor == ("Netscape6") || navigator.product == ("Gecko"));

var mnustyle = "xmnu";

var ams_created = false;
var mnuOpen = [];



function _winPos (element) {
  if (element.offsetParent) {
    var coords ={x : 0, y: 0, w:element.offsetWidth, h: element.offsetHeight };
    while (element) {
      coords.x += element.offsetLeft;
      coords.y += element.offsetTop;
      element = element.offsetParent;
    }
    return coords;
  }
  else { /*alert ("uke 001");*/ return null; }
}




// ********************************************************************* open_menu
function open_menu (mnu, x,y)
{
    var m = mnuOpen.length;

    mnu.style.left = x;
    mnu.style.top = y;

    mnuOpen.length=m+1;
    mnuOpen[m] = mnu;
    mnu.style.zIndex= mnuOpen.length;
    mnu.style.visibility = "visible";

    window.focus();
}

// ******************************************************************** start_menu
function start_menu (mnuname,mnuArea,clicked)
{
  if ( !ams_created ) ams_Start();

  var  mnu = document.getElementById(mnuname);
  //alert("allgar ("+mnuOpen.length+")");
  if ( !mnu ) {alert("nonex "+mnu); return;} //menu existiert nicht
  if ( mnuOpen.length>0 && mnuOpen[0]==mnu && clicked) {
    end_menu();
    //alert("ich wars");
    return false;
  }
  end_menu();
  var c = _winPos(mnuArea);
  open_menu(mnu,c.x,c.y + c.h -0);
  return false;
}


function eh_mouseout_menubtn(e)
{
}

/*
Aufruf, wenn der das Menü verlassen wird.
*/
// ********************************************************************* menuOut
function menuOut(ev)
{
  var m = mnuOpen.length-1;
  if ( m<0 ) return; // keine menüs offen, passiert durch "Window lost focus" 
                     // bei ausgeklapptem Menü (z.Bsp. Alt-Tab ...)

  var x,y,n,c;

  if ( ci_NS6 ) {
    x = ev.pageX; y = ev.pageY;
  } else {
    x=window.event.clientX ; y=window.event.clientY;
  }

  for (n=m; n>=0; n-- ) {
    c = _winPos(mnuOpen[n]);
    if ( ci_NS6 ) {
      if ( x >=c.x && y >=c.y && x<c.w+c.x && y < c.h+c.y )break;
    } else {
      if ( (x-2) >=c.x && (y-2) >=c.y && x<c.w+c.x && y < c.h+c.y )break;
    }

    //wir sind nicht innerhalb dieses Menüs - also desektieren
    if ( mnuOpen[n].amsSelected ) {
      with (mnuOpen[n].amsSelected)
        className = className.slice(0,className.length-2);
      mnuOpen[n].amsSelected = null;
      if ( n < mnuOpen.length-1 ) close_menu();
      break;
    }
  }
}// menuOut(ev)



// ***************************************************************** close_menu
function close_menu()
{
  var i = mnuOpen.length-1;
  if ( i >= 0 )
  {
    if ( mnuOpen[i] && mnuOpen[i].amsSelected ) {
      with ( mnuOpen[i].amsSelected )
        className = className.slice(0,className.length-2);
      mnuOpen[i].amsSelected = null;
    }
    mnuOpen[i].style.visibility = "hidden";
    mnuOpen.length=i;
  }
}
// ****************************************************************** end_menu
function end_menu() { while ( mnuOpen.length ) close_menu(); }



// ********************************************************************* _mover
function _mover() {

  if ( ! mnuOpen.length ) return; //???

  var mnu = this.parentNode;		// mein Menue

  var mrm = mnuOpen[mnuOpen.length-1];	// zuletzt geöffnetes Menue



  var mnuItem = eval(mnu.id+"["+this.id+"]");


  do {
    if ( mnu.amsSelected ) {
      if ( mnu.amsSelected != this ) { //anderer Eintrag noch selektiert
        if ( mnu != mnuOpen[mnuOpen.length-1] ) close_menu();
        with (mnu.amsSelected) className = className.slice(0,className.length-2);
      } else break; //bin schon selektiert ...
    }

    mnu.amsSelected=this;
    this.className += "Mo";

    if ( mnuItem.length <= 2 ) break; //untermenü vorhanden ?

    var c = _winPos(this);
    if ( mnu == mnuOpen[mnuOpen.length-1] ) {
        open_menu(document.getElementById(mnuItem[2]),c.x+c.w-5, c.y + 1);
    }
  } while (false);

}


// ******************************************************************* _mclick
function _mclick()
{
    var mnuItem = eval(this.parentNode.id+"["+this.id+"]");
    self.location = mnuItem[1];
}

// ********************************************************************* _mdown
function _mdown(e)
{
  window.onblur="";
  return true;
}

//create element
function _ce(element, css)
{
    var e = document.createElement(element);
    e.className=css;
    return e;
}

function ams_CreateMenu(mnuName)
{
  var mnu=eval(mnuName);
  var i,mCell, mHref, mSmLeft, mSmRight, mTT;

  if ( mnu.mnuCreated ) return;
//alert("makke "+mnuName);

  var mnuSpan = _ce("div","mnu");

  mnuSpan.amsMenu  = true;
  mnuSpan.amsSelected = null;

  mnuSpan.id=mnuName;
  mnuSpan.style.visibility = 'hidden';
  mnuSpan.onmouseout  = menuOut;

  for ( i=0; i<mnu.length; i++ )
  {
    var currItem   = mnu[i];
    var hasSubmenu = currItem.length > 2;

    mCell = _ce('div',mnustyle+ (hasSubmenu ? "HasSub" : ""));
    mHref = _ce('a',mnustyle);

    mnuSpan.appendChild(mCell);
    mCell.id = i;
    mCell.onmouseover = _mover;
    mCell.onclick     = _mclick;
    mCell.onmousedown = _mdown;

    if ( hasSubmenu ) {
        ams_CreateMenu(currItem[2]);
    }
    mCell.appendChild(mHref);
    mHref.innerHTML= '<div style="padding:2px 10px 2px 5px;">'+
	currItem[0] + '</div>';

    currItem[1] = relroot + currItem[1];
    mHref.href = currItem[1];
  }
  document.body.appendChild(mnuSpan);
  mnu.mnuCreated=mnuSpan;
}


function csMOver(ev)
{
    this.id = this.amsParam[0]+"MO";
//    this.className = this.amsParam[0]+"MO";
    //alert ( "und nu?:" + this.amsParam[0]);
}

function csMOut(ev)
{
    this.id = null;
    //alert ( "und nu?:" + this.amsParam[0]);
}

function csMClick(ev)
{
//alert("agah !");
    self.location = this.amsParam[1];
}




function ev_lnkmenu_click()
{
  return start_menu(this.id.slice(3,99),this.childNodes[0],true);
}

function ev_lnkmenu_mover()
{
  if ( mnuOpen.length > 0 )
    start_menu(this.id.slice(3,99),this.childNodes[0],false);
}

function ev_lnkmenu_mout()
{
  if ( mnuOpen.length > 0 ) window.onblur=end_menu;

}

function ev_lnkmenu_mdown()
{
  if ( mnuOpen.length > 0 ) {
      window.onblur="";
      return true;
  }
}



function ams_Start()
{
  var i,j;

  if ( ams_created ) return;
  if((typeof(document.body) == "undefined") || (document.body == null)) return;
  for (i=0; i<ams_mnu.length; i++) ams_CreateMenu (ams_mnu[i]);

  ams_created = true;
 
  for (i = document.getElementsByName("AMSMNU").length-1; i>=0 ; i--) {
    var myhref  = document.getElementsByName("AMSMNU")[i];

    myhref.onclick     =ev_lnkmenu_click;
    myhref.onmouseover =ev_lnkmenu_mover;
    myhref.onmouseout  =ev_lnkmenu_mout;
    myhref.onmousedown =ev_lnkmenu_mdown;

  }


  var cs01Count = document.getElementsByName("cs1").length;

  for(i=0; i< cs01Count; i++ ) {
    var myhref = document.getElementsByName("cs1")[i];
    var mydiv  = myhref.parentNode;
    //alert(" #"+(1+i)+" von "+cs01Count+" ["+mydiv+"]\n und willo "+ myhref.href);

    mydiv.amsParam = new Array(mydiv.className,myhref);
    mydiv.onmouseover=csMOver;
    mydiv.onmouseout=csMOut;
    mydiv.onclick=csMClick;
  }
}


