var overelement;
var lvltimers=new Array();
var hidetime=1500;
var fixedlevels=1;
var levelgap=new Array();
var levelvalign=new Array();
var isOpera=(navigator.userAgent.indexOf("Opera")!=-1);
var isIE=(document.all && !isOpera);

if (isIE) {
  levelgap[0]=0;
  levelgap[1]=3;
  levelgap[2]=3;
  levelgap[3]=3;
  levelgap[4]=3;
} else {
  levelgap[0]=0;
  levelgap[1]=5;
  levelgap[2]=5;
  levelgap[3]=-2;
  levelgap[4]=2;
}

levelvalign[0]=0;
levelvalign[1]=0;
levelvalign[2]=-9;
levelvalign[3]=-9;
levelvalign[4]=-9;


if (isIE) {
  levelvalign[0]=0;
  levelvalign[1]=0;
  levelvalign[2]=-9;
  levelvalign[3]=-2;
  levelvalign[4]=-2;
}




function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n);
  if(!x && document.getElementsByName && document.getElementsByName(n).length>0) x=document.getElementsByName(n)[0]; return x;
}

function InitLevels(il_prfx) {
  if (!il_prfx) il_prfx='';
  var trobjs;
  var pnobjs;
  var trid=1;
  trobjs=MM_findObj("lvlms_"+il_prfx+trid);
  while (trobjs) {
    if (trobjs) {
      //trobjs.style.position="relative";
      pnobjs=MM_findObj("pnl_lvlms_"+il_prfx+trid);
      if (pnobjs) pnobjs.display="none";
      trobjs.onmouseover=function() { ShowLevel(this) } ;
      trobjs.onmouseout=function() { overelement=''; } ;
      InitLevels(il_prfx+trid+'_');
      trid++;
      trobjs=MM_findObj("lvlms_"+il_prfx+trid);
    }
  } 
}

function ShowLevel(obj) {
  var objname=obj.id;
  var nrs=objname.split('_');
  var sl_thislevel=nrs.length-1;
  var thislevelvalign=levelvalign[sl_thislevel];
  var frompanelname="pnl";
  for (xxlc=0; xxlc<sl_thislevel; xxlc++) frompanelname+="_"+nrs[xxlc];
  if (sl_thislevel<=fixedlevels) thislevelvalign=0;
  var trobj;
  var ptrobj=MM_findObj(frompanelname);
  var sl_width=obj.offsetWidth;
  if (ptrobj) sl_width=ptrobj.offsetWidth;
  overelement=objname;
  trobj=MM_findObj("pnl_"+objname);
  if (trobj) {
    trobj.style.display='';
    trobj.style.borderStyle='solid';
    trobj.style.zIndex=sl_thislevel;

    if (sl_thislevel>fixedlevels) {
      if (obj.className && !obj.className.indexOf(' lvl_ms_over')>=0) {
        obj.className=obj.className+' lvl_ms_over';
      }
      trobj.style.position="absolute";
      
      if (isIE) {
        trobj.style.top=trobj.clientTop+thislevelvalign;
        trobj.style.left="+"+(sl_width+levelgap[sl_thislevel])+"px";
      } 
      else {
          if (!trobj.style.width) trobj.style.width=trobj.offsetWidth+'px';
          if (!trobj.style.top) trobj.style.top=CalcolaABSTop(obj,trobj.offsetParent)+thislevelvalign;
          if (!trobj.style.left) trobj.style.left=(CalcolaABSLeft(obj,trobj.offsetParent)+sl_width+levelgap[sl_thislevel]).toString()+"px";
      }
    }

  }
  clearTimeout(lvltimers[objname]);
  lvltimers[objname]=setTimeout("HideLevel('"+objname+"');",hidetime);
}

function CalcolaABSLeft(fromobj,toobj) {
  if (!fromobj || fromobj==toobj) return 0;
  var calft=fromobj.offsetLeft;
  calft+=CalcolaABSLeft(fromobj.offsetParent,toobj);
  return calft;
}

function CalcolaABSTop(fromobj,toobj) {
  if (!fromobj || fromobj==toobj) return 0;
  var caltp=fromobj.offsetTop;
  caltp+=CalcolaABSTop(fromobj.offsetParent,toobj);
  return caltp;
}

function HideLevel(objname) {
  var nrs=objname.split('_');
  if (ChkLvls(nrs,objname)) {
    clearTimeout(lvltimers[objname]);
    lvltimers[objname]=setTimeout("HideLevel('"+objname+"');",hidetime);
    return;
  }
    var ooobj=MM_findObj(objname);
    if (ooobj && ooobj.className) {
      ooobj.className=ooobj.className.replace(/\slvl_ms_over/g,'');
    }

  var trobj=MM_findObj('pnl_'+objname);
  if (trobj) {
    trobj.style.display='none';
    trobj.style.borderStyle='none';
  }
  clearTimeout(lvltimers[objname]);
}

function ChkLvls(nnis,objname) {
  return (overelement.length>=objname.length && overelement.indexOf(objname)>=0);
}

function DebugWrite(s,showTime) {
  var dt=new Date();
  var pnl=MM_findObj("pannello");
  pnl.innerHTML=pnl.innerHTML + '<br>';
  if (showTime) pnl.innerHTML = pnl.innerHTML + dt.toLocaleTimeString()+' ';
  pnl.innerHTML=pnl.innerHTML + s;
}
