var defaultMenuYPos	= 170;

//----------------------------------------------------------------------------
// Object menu
//----------------------------------------------------------------------------
function cMenu(name){
	this.name			= name;
	this.items			= new Array();
	this.childMenus		= new Array();
	this.buildMenus		= new String("_"); 
	this.itemCount		= 0;
	this.isTop			= true;
	
	this.appendItem 	= fnAppendItem;

	this.buildMainMenu  = fnBuildMainMenu;
	this.buildTopMenu	= fnBuildTopMenu;
	this.buildSideMenu	= fnBuildSideMenu;
	this.buildMenu		= fnBuildMenu;
	
	return this
}
//------------------------------------------
//------------------------------------------
function fnBuildMainMenu(){
	if(this.isTop){
		document.write(this.buildTopMenu());
	}else{
		var myW = (browser.isIE) ? "100%" : "93%"
		document.write(this.buildSideMenu(myW));
	}
	for(var i=0; i<this.childMenus.length; i++){
		document.write(this.childMenus[i]);
	}
	if(!this.isTop){
		var aMenu = document.getElementById("menu_" + this.name);	
		if (browser.isIE){
    		aMenu.style.lineHeight = "2.5ex";
		    spanList = aMenu.getElementsByTagName("SPAN");
    		for (i = 0; i < spanList.length; i++)
	    	  if (hasClassName(spanList[i], "menuItemArrow")){
    	    	spanList[i].style.fontFamily = "Webdings";
	        	spanList[i].firstChild.nodeValue = "4";
		      }
	  		}
		aMenu.style.visibility = "visible";
	}
} 
//------------------------------------------
//------------------------------------------
function fnBuildTopMenu(){
	var tMenu = new String();
	for(var i=0; i<this.itemCount; i++){
		if(this.items[i].treelevel == 1){
			var thisClass = (this.items[i].isActiveButton==0) ? "menuButton" : "menuButton";
			var mHref = (this.items[i].redirurl!="") ? this.items[i].redirurl : ("#" + this.items[i].id_section);
			tMenu += ((browser.isIE)&&(browser.version < 5.5))?"&nbsp;&nbsp;&nbsp;":"";
			if((i!=this.itemCount-1) && (this.items[i+1].treelevel>this.items[i].treelevel)){
				tMenu += "<a id=\"" + this.items[i].id_section + "\" class=\"" + thisClass + "\" href=\"" + mHref + "\" onmouseover=\"buttonClick(event, 'menu_" + this.items[i].id_section + "');buttonMouseover(event, 'menu_" + this.items[i].id_section + "');\">" + this.items[i].name +  "</a>"; //this.items[i].name
			}else{
				tMenu += "&nbsp;&nbsp;<a class=\"" + thisClass + "\" href=\"" + mHref + "\">" +this.items[i].name + "</a>"
			};
		}else{
			this.buildMenu(this.items[i].id_section_parent, this.items[i].treelevel, i);
		}
	}
	return "<div class=\"menuBar\">" + tMenu + "</div>\n";
}
//------------------------------------------
//------------------------------------------
function fnBuildSideMenu(mWidth){
	var tMenu = new String();
	for(var i=0; i<this.itemCount; i++){
		if(this.items[i].treelevel == 1){
			var mHref = (this.items[i].redirurl!="") ? this.items[i].redirurl : ("#" + this.items[i].id_section);
			if((i<this.itemCount-3) && (this.items[i+1].treelevel>this.items[i].treelevel)){
				tMenu += "<a style=\"position:relative;width:100%\" class=\"menuItem\" href=\"" + "\" onmouseover=\"menuItemMouseover(event, 'menu_" + this.items[i].id_section + "');\"><span class=\"menuItemText\">" + this.items[i].name + "</span><span class=\"menuItemArrow\">&#9654;</span></a>\n"
			}else{
				tMenu += "<a style=\"position:relative;width:100%\" class=\"menuItem\" href=\""+ mHref + mHref + "\">" +this.items[i].name + "</a>";
			};
		}else{
			this.buildMenu(this.items[i].id_section_parent, this.items[i].treelevel, i);
		}
	}
	return "<div align='left' style=\"position:relative;width:" + mWidth + "\" id=\"menu_" + this.name + "\" class=\"menu\" onmouseover=\"menuMouseover(event)\">" + tMenu + "</div>\n";
}
//------------------------------------------
//------------------------------------------
function fnBuildMenu(id_parent, treelevel, startPos){
	var custMenu = new String();
	if(this.buildMenus.indexOf("_"+id_parent+"_")==-1){
		for(var j=startPos; j<this.itemCount; j++){
			if(this.items[j].treelevel==treelevel && this.items[j].id_section_parent==id_parent){
				var mHref = (this.items[j].redirurl!="") ? this.items[j].redirurl : ("#" + this.items[j].id_section);
				if(this.items[j].redirurl!="#"){
					if(((j+1)<this.itemCount) && (this.items[j+1].treelevel>this.items[j].treelevel)){ //has submenu
						custMenu += "<a class=\"menuItem\" href=\"" + mHref + "\" onmouseover=\"menuItemMouseover(event, 'menu_" + this.items[j].id_section + "');\"><span class=\"menuItemText\">" + this.items[j].name + "</span><span class=\"menuItemArrow\">&#9654;</span></a>"
					}else{
						custMenu += "<a class=\"menuItem\" href=\"" + mHref + "\">" +this.items[j].name + "</a>";
					};
				}else{
					custMenu += "<a class=\"separator\" href=\"" + mHref + "\">" + this.items[j].name + "</a>";
				};
			}else{
				//exit for
				if(this.items[j].treelevel<treelevel){ //find same parent level
					this.childMenus[this.childMenus.length] = "<div align='left' style=\"position:absolute;\" id=\"menu_" + id_parent + "\" class=\"menu\" onmouseover=\"menuMouseover(event)\"><nobr>" + custMenu + "</nobr></div>\n";
					this.buildMenus += id_parent+"_";
					return
				}
			}
			if(j==this.itemCount-1){ //find same parent level
				this.childMenus[this.childMenus.length] = "<div align='left' style=\"position:absolute;\" id=\"menu_" + id_parent + "\" class=\"menu\" onmouseover=\"menuMouseover(event)\"><nobr>" + custMenu + "</nobr></div>\n";
				this.buildMenus += id_parent+"_";
				return
			}
		}
	}
}


//------------------------------------------
//------------------------------------------
function fnAppendItem(oItem){
	this.items[this.itemCount] = oItem;
	this.itemCount++;
}


//----------------------------------------------------------------------------
// Object menu item
//----------------------------------------------------------------------------
function cMenuItem(id_section, id_section_parent, treelevel, name, redirurl, isActiveButton){
	this.id_section			= id_section;
	this.id_section_parent  = id_section_parent;
	this.treelevel			= treelevel;
	this.id_section			= id_section;
	this.name				= name;
	this.redirurl			= redirurl;
	this.isActiveButton		= isActiveButton;

	return this
}

//----------------------------------------------------------------------------
// Code to determine the browser and version.
//----------------------------------------------------------------------------
function Browser() {
  var ua, s, i;

  this.isIE    = false; 
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}

var browser = new Browser();

//----------------------------------------------------------------------------
// Udalosti mysi
//----------------------------------------------------------------------------

var activeButton = null;

if (browser.isIE)
  document.onmousedown = pageMousedown;
else
  document.addEventListener("mousedown", pageMousedown, true);


if (browser.isIE)
  document.onmousemove = pageMousemove;
else
  document.addEventListener("mousemove", pageMousemove, true);


//------------------------------------------
//stisk tlaca
//------------------------------------------  
function pageMousedown(event) {
  var el;
  if (activeButton == null)
    return;
  
  if (browser.isIE)
    el = window.event.srcElement;
  else
    el = (event.target.tagName ? event.target : event.target.parentNode);

  if (el == activeButton)
    return;

  if (getContainerWith(el, "DIV", "menu") == null) {
    resetButton(activeButton);
    activeButton = null;
  }
}


//------------------------------------------
//Mys se hejbe mimo menu (respektive definovanou oblas x1 a y1 ju)
//------------------------------------------  

function pageMousemove(event) {

  var el;

  if (browser.isIE)
    el = window.event;
  else
    el = (event.target.tagName ? event.target : event.target.parentNode);

 if (el == activeButton)
  return;


var y1,x1;
   y1 = el.y;
   x1 = el.x;

if (y1>330 || x1>500 ){
  
 if (getContainerWith(el, "DIV", "menu") == null) {
 timer= setTimeout("resetButton(activeButton);", 200);
 timer1= setTimeout("activeButton = null;", 200);
   }

  }
}



//------------------------------------------
//Pokud je vidět submenu a klikne se myší nebo se najede na hlavní menu - zhasne submenu
//------------------------------------------
function resetButton(button) {
  removeClassName(button, "menuButtonActive");
 
  if (button == null || button.menu == null)
    return;
 
   closeSubMenu(button.menu);
   button.menu.style.visibility = "hidden";
}

//----------------------------------------------------------------------------
// opuštění submenu - nemam zapnuto  nekdef na radfku 97 nebo kde hazelo to chybu s kontejnerem
//----------------------------------------------------------------------------
function menuMouseout(event) {
//  var menu;
//  if (browser.isIE)
//    menu = getContainerWith(window.event.srcElement, "DIV", "menu");
//  else
//    menu = event.currentTarget;
//  if (menu.activeItem != null)
//      closeSubMenu(menu);
// confirm('sem pryc');
}

//------------------------------------------
//Nájezd na hlavní menu s podmenu
//------------------------------------------
function buttonClick(event, menuId) {
  var button;

  if (browser.isIE)
    button = window.event.srcElement;
  else
    button = event.currentTarget;

  button.blur();
  if (button.menu == null) {
    button.menu = document.getElementById(menuId);
    if (button.menu.isInitialized == null)
      menuInit(button.menu);
  }

  if (activeButton != null)
    resetButton(activeButton);

  if (button != activeButton) {
    depressButton(button);
    activeButton = button;
  }
  else
    activeButton = null;

  return false;
}
//------------------------------------------
// Vytvoření submenu (nájezd na horní tlačítko s menu)
//------------------------------------------
function buttonMouseover(event, menuId) {
  var button;

  if (browser.isIE)
    button = window.event.srcElement;
  else
    button = event.currentTarget;

  if (activeButton != null && activeButton != button)
    buttonClick(event, menuId);
}
//------------------------------------------
// to samý zas to skočí při nájezdu na hlavní menu s podpoložkou
//------------------------------------------
function depressButton(button) {
  var x, y;
  button.className += " menuButtonActive";
  x = getPageOffsetLeft(button);
  y = defaultMenuYPos;//getPageOffsetTop(button) + button.offsetHeight;
  button.menu.style.top  = y + "px";
  var mOffset = x + button.menu.offsetWidth;
  var maxX = document.body.offsetWidth + document.body.scrollLeft;
  if(mOffset > maxX){
  	button.menu.style.left = (x + button.offsetWidth - button.menu.offsetWidth) + "px";
  }else{
  	button.menu.style.left = x + "px";
  }
  button.menu.style.visibility = "visible";

}


//----------------------------------------------------------------------------
// Nájezd na položku podmenu (které nemá submenu) 
//----------------------------------------------------------------------------
function menuMouseover(event) {
  var menu;
  if (browser.isIE)
    menu = getContainerWith(window.event.srcElement, "DIV", "menu");
  else
    menu = event.currentTarget;

  if (menu.activeItem != null)
    closeSubMenu(menu);
}



//------------------------------------------
//Nájezd na položku podmenu které má submenu
//------------------------------------------
function menuItemMouseover(event, menuId) {
  var item, menu, x, y;
  if (browser.isIE)
    item = getContainerWith(window.event.srcElement, "A", "menuItem");
  else
    item = event.currentTarget;
  menu = getContainerWith(item, "DIV", "menu");
  if (menu.activeItem != null)
    closeSubMenu(menu);
  menu.activeItem = item;

  item.className += " menuItemHighlight";

  if (item.subMenu == null) {
    item.subMenu = document.getElementById(menuId);
    if (item.subMenu.isInitialized == null)
      menuInit(item.subMenu);
  }

  x = getPageOffsetLeft(item) + item.offsetWidth;
  y = getPageOffsetTop(item);

  var maxX, maxY;
  if (browser.isNS) {
    maxX = window.scrollX + window.innerWidth;
    maxY = window.scrollY + window.innerHeight;
  }
  if (browser.isIE) {
    maxX = (document.documentElement.scrollLeft   != 0 ? document.documentElement.scrollLeft   : document.body.scrollLeft)
         + (document.documentElement.clientWidth  != 0 ? document.documentElement.clientWidth  : document.body.clientWidth);
    maxY = (document.documentElement.scrollTop    != 0 ? document.documentElement.scrollTop    : document.body.scrollTop)
         + (document.documentElement.clientHeight != 0 ? document.documentElement.clientHeight : document.body.clientHeight);
  }
  maxX -= item.subMenu.offsetWidth;
  maxY -= item.subMenu.offsetHeight;

  if (x > maxX)
    x = Math.max(0, x - item.offsetWidth - item.subMenu.offsetWidth
      + (menu.offsetWidth - item.offsetWidth));
  y = Math.max(0, Math.min(y, maxY));


  item.subMenu.style.left = x + "px";
  item.subMenu.style.top  = y + "px";
  item.subMenu.style.visibility = "visible";

  if (browser.isIE)
    window.event.cancelBubble = true;
  else
    event.stopPropagation();

}
//------------------------------------------
// Zhasnutí submenu s podmenu
//------------------------------------------
function closeSubMenu(menu) {
  if (menu == null || menu.activeItem == null)
    return;

  if (menu.activeItem.subMenu != null) {
    closeSubMenu(menu.activeItem.subMenu);
   
    menu.activeItem.subMenu.style.visibility = "hidden";
    menu.activeItem.subMenu = null;
  }
  removeClassName(menu.activeItem, "menuItemHighlight");
  menu.activeItem = null;
}

//----------------------------------------------------------------------------
// Jen první inicializace menu
//----------------------------------------------------------------------------
function menuInit(menu) {
  var itemList, spanList;
  var textEl, arrowEl;
  var itemWidth;
  var w, dw;
  var i, j;

  if (browser.isIE) {
    menu.style.lineHeight = "2.5ex";
    spanList = menu.getElementsByTagName("SPAN");
    for (i = 0; i < spanList.length; i++)
      if (hasClassName(spanList[i], "menuItemArrow")) {
        spanList[i].style.fontFamily = "Webdings";
        spanList[i].firstChild.nodeValue = "4";
      }
  }

  itemList = menu.getElementsByTagName("A");
  if (itemList.length > 0)
    itemWidth = itemList[0].offsetWidth;
  else
    return;

  for (i = 0; i < itemList.length; i++) {
    spanList = itemList[i].getElementsByTagName("SPAN");
    textEl  = null;
    arrowEl = null;
    for (j = 0; j < spanList.length; j++) {
      if (hasClassName(spanList[j], "menuItemText"))
        textEl = spanList[j];
      if (hasClassName(spanList[j], "menuItemArrow"))
        arrowEl = spanList[j];
    }
    if (textEl != null && arrowEl != null)
      textEl.style.paddingRight = (itemWidth 
        - (textEl.offsetWidth + arrowEl.offsetWidth)) + "px";
  }

  if (browser.isIE) {
    w = itemList[0].offsetWidth;
    itemList[0].style.width = w + "px";
    dw = itemList[0].offsetWidth - w;
    w -= dw;
    itemList[0].style.width = w + "px";
  }

  menu.isInitialized = true;
}

//----------------------------------------------------------------------------
// Pokud je zobrazené menu a dfojde ke kliknutí mimo
//----------------------------------------------------------------------------
function getContainerWith(node, tagName, className) {
  while (node != null) {
    if (node.tagName != null && node.tagName == tagName &&
        hasClassName(node, className))
      return node;
    node = node.parentNode;
  }

  return node;
}
//------------------------------------------
//------------------------------------------
function hasClassName(el, name) {
  var i, list;
  list = el.className.split(" ");
  for (i = 0; i < list.length; i++)
    if (list[i] == name)
      return true;

  return false;

}
//------------------------------------------
//------------------------------------------
function removeClassName(el, name) {
  var i, curList, newList;

  if (el == null || el.className == null)
    return;

 newList = new Array();
  var myList = "";
  curList = el.className.split(" ");
  for (i = 0; i < curList.length; i++)
    if (curList[i] != name)
      myList += curList[i];
  el.className = myList;
 
}
//------------------------------------------
//------------------------------------------
function getPageOffsetLeft(el) {
  var x = el.offsetLeft;
  if (el.offsetParent != null)
    x += getPageOffsetLeft(el.offsetParent);

  return x;
}
//------------------------------------------
//------------------------------------------
function getPageOffsetTop(el) {
  var y = el.offsetTop;
  if (el.offsetParent != null)
    y += getPageOffsetTop(el.offsetParent);

  return y;
}
//------------------------------------------
//------------------------------------------
function getParentContainer(el){
  var eName = (!el.id) ? "" : el.id;
  if (eName.indexOf("MENU_LEFT")!=-1){
  		return el
  }else{
		if(el.tagName == "BODY"){
			return null
		}else{
			return getParentContainer(el.offsetParent);
		}  
  }
}










