// Bonasource menu

var isDOM=(document.getElementById)?true:false;
var isOpera=isOpera5=window.opera && isDOM;
var isOpera6=isOpera && window.print;
var isOpera7=isOpera && navigator.userAgent.indexOf("Opera 7") > 0 || navigator.userAgent.indexOf("Opera/7") >= 0;
var isMSIE=isIE=isIEM=document.all && document.all.item && !isOpera;
var isIE4=isIE && !isDOM;
var isNC=navigator.appName=="Netscape";
var isNC4=isNC && !isDOM;
var isNC6=isMozilla=isNC && isDOM;
var frame = "menuLevel";
var validIFrameTM = false;
var waitIFrameTM = false;
var hideTM = false;
var stopHideTM = false;
var posLeftCorrection = 0;
var posTopCorrection = 0;

function BonasourceMenuItemHightlight(obj, level, state, sw, num)
{
  if(!isDOM) return;
  var styleNormal = "Level_" + level + "_" + state;
  var styleOver = styleNormal + "_Over";
  
  obj.normalClassName = styleNormal;
  obj.overClassName = styleOver;
  
  if(sw)
  {
    obj.className = styleOver;
  }
  else
  {
    if(!obj.isOpenedChild)
    {
      obj.className = styleNormal;
    }
  }
  if(isMozilla && num)
  {
    document.getElementById(frame + level).overItem = obj;
    document.getElementById(frame + level).overItemClassName = styleNormal;
  }
}

function BSGo(obj) {
	if(!isDOM) return;
	var objA = obj.getElementsByTagName("A");
	window.location = objA[0].href;
}

function getXY(obj) {
	var parTemp;
	obj.X = 0;
	obj.Y = 0;
	if(obj.offsetParent) {
		parTemp = obj;
		while(parTemp.offsetParent) {
			parTemp = parTemp.offsetParent;
			obj.X += parTemp.offsetLeft;
			obj.Y += parTemp.offsetTop;
		}
	}
	obj.X += obj.offsetLeft;
	obj.Y += obj.offsetTop;
}

function ValidateIFrames(maxLevel) {
  var i, objIFrame;
  
  if(validIFrameTM)
  {
    clearTimeout(validIFrameTM);
  }
  
  for(i = 2; i <= maxLevel; i++)
  {
    objIFrame = document.getElementById(frame + i);
    //if(objIFrame && frames[frame + i] && frames[frame + i].document && frames[frame + i].document.body && frames[frame + i].document.body.innerHTML && frames[frame + i].document.body.innerHTML.replace(/\s+/, '') != '')
    if(objIFrame && frames[frame + i] && frames[frame + i].document && frames[frame + i].document.body )
    {
      objIFrame.isLoaded = true;
    }    else
    {
      validIFrameTM = setTimeout('ValidateIFrames(' + maxLevel + ');', 250);
      break;
    }
  }
}

function BonasourceMenuDropDownView(num, obj, level, hasChildren, maxLevel)
{
  var i, j;
  var id, parentIframe, iframe, div, tbl;
  var posLeft, posTop, dbWidth, dbHeight, dbScrollLeft, dbScrollTop;
  var divs;
  if(!isDOM) return;

  BonasourceMenuDropDownHideDo(level, maxLevel, ((num) ? false : true));
  
  if(hasChildren)
  {
    if(num)
    {
      parentIframe = document.getElementById(frame + level);
      getXY(parentIframe);
    }
    
    if(typeof(obj) == 'string')
    {
      obj = document.getElementById(obj);
    }
    id = frame + (level + 1);
    iframe = document.getElementById(id);
    
    if(!iframe)
      return;

    if(iframe.isLoaded)
    {
    
      obj.className = obj.overClassName;
    
      getXY(obj);
      
      div = frames[id].document.getElementById('ChildOf_' + obj.id.split(/_/)[1]);
      if(div)
      {
        div.style.display = "";
        
        tbl = div.getElementsByTagName('TABLE')[0];
        div.style.width = tbl.offsetWidth;
        div.style.height = tbl.offsetHeight;
        iframe.style.width = div.offsetWidth;
        iframe.style.height = div.offsetHeight;
        
        dbWidth = (document.body.clientWidth) ? document.body.clientWidth : document.body.offsetWidth;
		    dbHeight = (document.body.clientHeight) ? document.body.clientHeight : document.body.offsetHeight;
		    dbScrollLeft = document.body.scrollLeft;
		    dbScrollTop = document.body.scrollTop;
  		  
		    posLeft = (obj.X + ((num) ? parentIframe.X : 0)) + obj.offsetWidth;
		    if(posLeft + iframe.offsetWidth > dbScrollLeft + dbWidth)
		    {
			    posLeft = (obj.X + ((num) ? parentIframe.X : 0)) - iframe.offsetWidth + level;
			    if(posLeft < dbScrollLeft)
			    {
			      posLeft = (obj.X + ((num) ? parentIframe.X : 0)) + Math.round(obj.offsetWidth / 2);
			    }
		    }

		    posTop = obj.Y + ((num) ? parentIframe.Y : 0);
		    if(posTop + iframe.offsetHeight > dbScrollTop + dbHeight)
		    {
			    posTop = (dbScrollTop + dbHeight) - iframe.offsetHeight;
			    if(posTop < dbScrollTop)
			    {
			      posTop = dbScrollTop;
			    }
		    }

        iframe.style.left = (posLeft + posLeftCorrection) + 'px';
        iframe.style.top = (posTop + posTopCorrection) + 'px';

        iframe.style.visibility = "visible";
        
        //if(isMozilla)
        //{
          document.body.onmouseover = new Function('BonasourceMenuDropDownHide(1, ' + maxLevel + ', true)');
        //}
        iframe.parentItem = obj;
        obj.isOpenedChild = true;
      }
      else
      {
        waitIFrameTM = setTimeout('BonasourceMenuDropDownView(' + num + ', "' + obj.id + '", ' + level + ', ' + hasChildren + ', ' + maxLevel + ');', 250);
      }
    }
    else
    {
      waitIFrameTM = setTimeout('BonasourceMenuDropDownView(' + num + ', "' + obj.id + '", ' + level + ', ' + hasChildren + ', ' + maxLevel + ');', 250);
    }
  }
}

function BonasourceMenuDropDownHide(level, maxLevel, isHideAll)
{
  if(hideTM)
  {
    clearTimeout(hideTM);
  }
  hideTM = setTimeout('BonasourceMenuDropDownHideDo('+ level +', '+ maxLevel +', ' + isHideAll + ')', 500);
}

function BonasourceMenuDropDownHideDo(level, maxLevel, isHideAll)
{
  var i, j;
  var iframe, divs;
  if(!isDOM) return;

  if(hideTM)
  {
    clearTimeout(hideTM);
  }
  if(waitIFrameTM)
  {
    clearTimeout(waitIFrameTM);
  }
  
  if(isHideAll) // && isMozilla)
  {
    document.body.onmouseover = null;
  }

  for(i = maxLevel; i > 1; i--)
  {
    if(document.getElementById(frame + i).isLoaded && (i > level || isHideAll))
    {
      iframe = document.getElementById(frame + i);
      divs = frames[frame + i].document.body.getElementsByTagName('DIV');
      
      document.getElementById(frame + i).style.visibility = "hidden";
      
      if(iframe.parentItem)
      {
        if(iframe.parentItem.normalClassName)
        {
          iframe.parentItem.className = iframe.parentItem.normalClassName;
        }
        if(iframe.parentItem.isOpenedChild)
        {
          iframe.parentItem.isOpenedChild = false;
        }
      }
      if(isMozilla && iframe.overItem && iframe.overItemClassName)
      {
        iframe.overItem.className = iframe.overItemClassName;
      }
      
      for (j = 0; j < divs.length; j++)
      {
        divs[j].style.display = 'none';
      }
    }
  }
}

function BonasourceMenuDropDownHideStop()
{
  if(stopHideTM)
  {
    clearTimeout(stopHideTM);
  }
  stopHideTM = setTimeout('BonasourceMenuDropDownHideStopDo()', 11);
}

function BonasourceMenuDropDownHideStopDo()
{
  if(hideTM)
  {
    clearTimeout(hideTM);
  }
}