// Don't change these parameters
var _kmpTopMenuDelay        = 500; /////
var _kmpTopMenuElement  = new Array ();
var _kmpTopMenuUsedWidth    = 0;
var _kmpTopMenuNumOfMenus   = 0;
var _kmpTopMenuCreated      = false;
/// ----------------------------

// check browser version
isNC    = (document.layers) ? 1 : 0;
isOPERA = (navigator.userAgent.indexOf('Opera') >= 0)? true : false;
isIE    = (document.all && !isOPERA)? true : false;
isDOM   = (document.getElementById && !isIE && !isOPERA)? true : false;

var topID  = -1;

// constructor of menu elements
function _kmpTopMenuConstructor (id, content)
{
	this.ID            = id;
	this.mID           = content [0]*1;
        this.parentID      = -1;
	this.width         = content [1]*1;
	this.firstLevel    = content [2]*1;
	this.timerID       = -1;
	this.isOn          = false;
	this.item          = new Array ();
	this.currItemID    = -1;
	
	items = content [3];
        this.item=items; 

	layerBody = '<table width=' + this.width + ' cellpadding=0 cellspacing=0 border=0>';
	
	for (j = 0; j <= items.length-4; j = j + 4)
	{
		controlBlock = ' onMouseOver = "_kmpTopMenuEnterItem (' + items[j+3] + ');" onMouseOut = "_kmpTopMenuExitItem (' + items[j+3] + ');" ';
		if(items[j]=='') {
			layerBody += '<tr><td height=1 width=' + this.width + ' bgcolor=' + borderColor + '><img src="clearpixel.gif" width=' + this.width + ' height=1></td>';
		} else {
			layerBody += '<tr><td id=_kmpTopMenuItem' + items[j+3] + ' height=' + itemHeight + ' width=' + this.width + ' bgcolor=' + backColor + '><a class=TopMenuSubLevelLink href='+ items [j + 1] +' ' + controlBlock + ' target='+ items[j+2] +'>' + items [j] + '</a></td>';
		}
		layerBody = layerBody +  '</tr>\n';
	}

	if (!isNC)
		layerHeader = '<div class="topMenuSubMenu" id=Menu' + this.ID +
				   	   ' onMouseOver="_kmpTopMenuEnterMenu (' + this.ID + ');" onMouseOut = "_kmpTopMenuExitMenu (' + this.ID + ');"' +
		    	       ' style="background: ; width: ' + this.width + '; visibility: hidden; position: absolute; left: ' + this.x +
		        	   '; top: ' + this.y + ';">';
	else
		layerHeader = '<layer class="topMenuSubMenu" id=Menu' + this.ID +
					   ' onMouseOver="_kmpTopMenuEnterMenu (' + this.ID + ');" onMouseOut = "_kmpTopMenuExitMenu (' + this.ID + ');"' +
					   ' visibility=hide left=' + this.x +
					   ' top =' + this.y + '>';

	layerHeader += '<table width=' + this.width + ' cellpadding=0 cellspacing=0 border=0>' +
				    '<td bgcolor=' + borderColor + '>';

	layerFooter = '</table></td></table>';

	if (!isNC)
		layerFooter = layerFooter + '</div>';
	else
		layerFooter = layerFooter + '</layer>';

	document.writeln (layerHeader + layerBody + layerFooter);

	return this;
}

function DoStuff()
{
	for (var j = 0; j < _kmpTopMenuNumOfMenus; j++) {
	  if (_kmpTopMenuElement[j].firstLevel==0){
	    for (var i = 0; i < _kmpTopMenuNumOfMenus; i++){
	      for (var l = 0; l <= _kmpTopMenuElement[i].item.length-4; l = l + 4){
  	        if (_kmpTopMenuElement[i].item[l+3]==_kmpTopMenuElement[j].mID){
  	          _kmpTopMenuElement[j].parentID=_kmpTopMenuElement[i].ID;
  	          }
  	        }
              }
	    }
	  }
  _kmpTopMenuCreated=true;	
}

function _kmpFindIDFromMenuID(mID)
{
  var ret=0;
  for (var i = 0; i < _kmpTopMenuElement.length; i++) {
    if(_kmpTopMenuElement[i].mID==mID) ret=_kmpTopMenuElement[i].ID
    }
  return ret
}

function _kmpTopMenuEnterTopItem (mID)
{
if(!_kmpTopMenuCreated) DoStuff();
        var ID=_kmpFindIDFromMenuID(mID);
	if (topID != ID && topID != -1)
		_kmpTopMenuHideTree (topID);
	_kmpTopMenuReleaseTree (ID);
	topID = ID;
        if(_kmpTopMenuVertical) {
          xp=_kmpFindPosX(document.getElementById('_kmpTopMenuItem'+mID))+_kmpTopMenuWidth-xOverlap;
	  yp=_kmpFindPosY(document.getElementById('_kmpTopMenuItem'+mID))+yOverlap;
          }  else {
	  xp=_kmpFindPosX(document.getElementById('_kmpTopMenuItem'+mID))-1;
	  if(isIE) {
	    yp=_kmpFindPosY(document.getElementById('_kmpTopMenuItem'+mID))+document.getElementById('_kmpTopMenuItem'+mID).clientHeight;
            } else {
	    yp=_kmpFindPosY(document.getElementById('_kmpTopMenuItem'+mID))+document.getElementById('_kmpTopMenuItem'+mID).innerHeight;
            }
	  }
	_kmpTopMenuShow (ID,mID,xp,yp);
}

function _kmpTopMenuExitTopItem (mID)
{
        var ID=_kmpFindIDFromMenuID(mID);
	_kmpTopMenuElement[ID].timerID = setTimeout ('_kmpTopMenuHide (' + ID + ')', _kmpTopMenuDelay);
}

function _kmpTopMenuEnterItem (mID)
{
        var ID=_kmpFindIDFromMenuID(mID);
        if (ID==0) return -1
        pID=_kmpTopMenuElement [ID].parentID
	var currItemID = _kmpTopMenuElement [ID].currItemID;

	if (currItemID != ID & currItemID > -1)	
		_kmpTopMenuHide (currItemID);

	clearTimeout (_kmpTopMenuElement [pID].timerID);
	_kmpTopMenuElement [pID].timerID = -1;
	for(var j = 0; j < _kmpTopMenuNumOfMenus; j++) {
	  if(_kmpTopMenuElement[j].parentID==_kmpTopMenuElement[ID].parentID) {
	    _kmpTopMenuHide(j);
	    }
	  }
	xp=_kmpFindPosX(document.getElementById('_kmpTopMenuItem'+mID))+_kmpTopMenuElement [pID].width-xOverlap;
	yp=_kmpFindPosY(document.getElementById('_kmpTopMenuItem'+mID))+yOverlap;
	mxID=_kmpTopMenuElement[ID].mID;
	_kmpTopMenuShow (ID,mxID,xp,yp);
	return 0;
}
function _kmpTopMenuExitItem (mID)
{
        var ID=_kmpFindIDFromMenuID(mID);
        if (ID==0) return -1
	_kmpTopMenuElement [ID].timerID = setTimeout ('_kmpTopMenuHide (' + ID + ')', _kmpTopMenuDelay);
	return 0;
}

function _kmpTopMenuEnterMenu (ID)
{
	var parentID = _kmpTopMenuElement [ID].parentID;
	if (parentID == -1)
	{
		clearTimeout (_kmpTopMenuElement [ID].timerID);
		_kmpTopMenuElement [ID].timerID = -1;
	}
	else
		_kmpTopMenuReleaseTree (ID);
}
function _kmpTopMenuExitMenu (ID)
{
	_kmpTopMenuTimeoutTree (ID);
}
function _kmpTopMenuHideTree (ID)
{
	_kmpTopMenuHide (ID);
	for (var j = 0; j < _kmpTopMenuNumOfMenus; j++)
	{
		if (_kmpTopMenuElement [j].parentID == ID &&
			_kmpTopMenuElement [j].isOn)
		{
			_kmpTopMenuHideTree (j);
			return 0;
		}
	}
}
function _kmpTopMenuReleaseTree (ID)
{
	clearTimeout (_kmpTopMenuElement [ID].timerID);
	_kmpTopMenuElement [ID].timerID = -1;

	if (_kmpTopMenuElement [ID].parentID!=-1)
		_kmpTopMenuReleaseTree (_kmpTopMenuElement [ID].parentID);
}
function _kmpTopMenuTimeoutTree (ID)
{
	_kmpTopMenuElement [ID].timerID = setTimeout ('_kmpTopMenuHide (' + ID + ')', _kmpTopMenuDelay);
	var parentID = _kmpTopMenuElement [ID].parentID;
	if (parentID > -1)
		_kmpTopMenuTimeoutTree (parentID);
}

function _kmpTopMenuShow (ID,mID,xp,yp)
{

        document.getElementById('Menu' + ID).style.left=xp;
        document.getElementById('Menu' + ID).style.top=yp;
	if (isDOM) { 
		document.getElementById('Menu' + ID).style.visibility = "visible";
   	    document.getElementById('Menu' + ID).style.zIndex=10000;
   	    }
   	else if (isIE  || isOPERA) {
		document.all['Menu' + ID].style.visibility = "visible";
   	    document.all['Menu' + ID].style.zIndex=10000;
   	    }
   	else if (isNC) {
		document.layers['Menu' + ID].visibility = "show";		
	    document.layers['Menu' + ID].zIndex=10000;
	    }
	clearTimeout (_kmpTopMenuElement [ID].timerID);
	_kmpTopMenuElement [ID].timerID = -1;

	_kmpTopMenuElement [ID].isOn = true;
	if (_kmpTopMenuElement [ID].firstLevel=0)
		_kmpTopMenuElement [_kmpTopMenuElement [ID].parentID].currItemID = ID;
}

function _kmpTopMenuHide (ID)
{
	if (isDOM) 
		document.getElementById('Menu' + ID).style.visibility = "hidden";
    	else if (isIE || isOPERA) 
		document.all['Menu' + ID].style.visibility = "hidden";
      	else if (isNC) 
		document.layers[ID].visibility = "hide";

	_kmpTopMenuElement [ID].isOn = false;
	if (_kmpTopMenuElement [ID].firstLevel=0)
		_kmpTopMenuElement [_kmpTopMenuElement [ID].parentID].currItemID = -1;
}

function createMenuTree ()
{
	for (var i = 0; i < _kmpTopMenuMenuContent.length; i++)
	{
		_kmpTopMenuElement [i] = new _kmpTopMenuConstructor (i, _kmpTopMenuMenuContent [i]);
		_kmpTopMenuNumOfMenus++;
	}
}

function _kmpFindPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function _kmpFindPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}



createMenuTree ();



