/////////////////////////////////////////////////////////////////////////////////////////
// ISF Menu Class v 1.2 (c) 2008 PulaSoft s.r.o.
// LAP
// For SEO

// Objekt polozky menu
function FxMenuItem(itemname)
{
	// Vlastnosti
	this.MenuName = itemname;
	this.MenuText = "";
	this.MenuTarget = "";
	this.MenuIcon = "";
	this.ParentItem = null;
	this.MenuObject = null;
	this.SubItems = new Array();
	this.ItemClassNormal = "menuitemnormal_" + itemname;
	this.ItemClassHover = "menuitemselected_" + itemname;
	this.ItemClassNormalText = "menuitemnormaltext_" + itemname;
	this.ItemClassHoverText = "menuitemselectedtext_" + itemname;
	this.MenuIconNormal = "menuiconnormal_" + itemname;
	this.MenuIconHover = "menuiconselected_" + itemname;
	this.SubmenuFrameClass = "submenuframe_" + itemname;
	this.SubmenuIcon = "submenuicon_" + itemname;
	this.MenuSeparator = "menuseparator_" + itemname;
	this.MenuTitle = "menutitle_" + itemname;
	
	// Stavove informace
	this.Displayed = false;
	this.HasChilds = false;
	this.CloseInitated = false;
	
	// Metody
	this.AddItem = function(NewMenuItem) {this.HasChilds = true; this.SubItems[NewMenuItem.MenuName] = NewMenuItem;this.MenuObject.AllItems[NewMenuItem.MenuName] = NewMenuItem;NewMenuItem.MenuObject = this.MenuObject; NewMenuItem.ParentItem = this;};
}

// Objekt menu
function FxMenu(instancename)
{
	this.InstanceName = instancename;
	this.MainItems = new Array();
	this.AllItems = new Array();
	this.MenuType = "horizontal";
	this.CloseInterval = 200;
	
	this.AddItem = function(NewMenuItem) {this.MainItems[NewMenuItem.MenuName] = NewMenuItem; this.AllItems[NewMenuItem.MenuName] = NewMenuItem;NewMenuItem.MenuObject = this;NewMenuItem.ParentItem = null;};
	this.DrawItemSubmenu = function(ParentMenuItem) {
	    var resultHTML = "";

	    // Vygenerovani podmenu
	    for (var ItemIndex in ParentMenuItem.SubItems) {
	        var MenuItem = ParentMenuItem.SubItems[ItemIndex];
	        if (MenuItem.MenuText == "~~~sep~~~") /// zde je potreba dodelat podminku z .cs
	        {
	            resultHTML += "<span class=\"" + MenuItem.MenuSeparator + "\"></span>";
	        }
	        else if (MenuItem.MenuTarget == "%2f%257e%257e%257etit%257e%257e%257e.aspx") {
	            resultHTML += "<div class=\"" + MenuItem.MenuTitle + "\">";
	            resultHTML += "<nobr>" + MenuItem.MenuText + "</nobr>";
	            resultHTML += "</div>";
	        }
	        else
	        {
	            if (MenuItem.MenuTarget == "")
	                MenuItem.MenuTarget = "#";
	            resultHTML += "<a style=\"text-decoration: none;\" href=\"" + MenuItem.MenuTarget + "\">";
	            resultHTML += "<div style=\"display: block;\" id=\"menuitem_" + MenuItem.MenuName + "\" class=\"" + MenuItem.ItemClassNormal + "\"  onmouseover=\"javascript: " + this.InstanceName + ".EnterItem('" + MenuItem.MenuName + "');" + this.InstanceName + ".OpenSubmenu('" + MenuItem.MenuName + "');\" onmouseout=\"javascript: " + this.InstanceName + ".LeaveItem('" + MenuItem.MenuName + "');" + this.InstanceName + ".CloseSubmenu('" + MenuItem.MenuName + "')\"";
	            if ((MenuItem.MenuTarget != "") && (MenuItem.MenuTarget != "web.aspx?page="))
	                resultHTML += " onclick=\"location.href=('" + MenuItem.MenuTarget + "');\" ";
	            resultHTML += ">";
	            resultHTML += "<table style=\"CURSOR: pointer;\" width=\"100%\" height=\"100%\" border=\"0\" cellSpacing=\"0\" cellPadding=\"0\"><tr>";

	            if ((MenuItem.MenuIcon != "") && (MenuItem.MenuIcon != "undefined") && (MenuItem.MenuIcon != "<img src='undefined'>")) {	// Ikona menu
	                resultHTML += "<td class=\"" + MenuItem.MenuIconNormal + "\">" + MenuItem.MenuIcon + "</td>";
	            }
	            if (MenuItem.MenuText != "") {
	                resultHTML += "<td id=\"menuitemtext_" + MenuItem.MenuName + "\" class=\"" + MenuItem.ItemClassNormalText + "\" onmouseover=\"javascript: className=\'" + MenuItem.ItemClassHoverText + "\'\" onmouseout=\"javascript: className=\'" + MenuItem.ItemClassNormalText + "\'\"><nobr>" + MenuItem.MenuText + "</nobr></td>";
	            }

	            // Zobrazovaci znacka podmenu
	            if (MenuItem.HasChilds) {
	                resultHTML += "<td class=\"" + MenuItem.SubmenuIcon + "\">&nbsp;</td>";
	            }
	            // Zobrazovaci znacka podmenu


	            resultHTML += "</tr></table>";
	            resultHTML += "</div>";
	            resultHTML += "</a>";
	        }
	    }
	    return resultHTML;
	}
	this.Draw = function(TargetElement) {
	    var htmlOutput = "";
	    var mainmenutag = "";

	    if (this.MenuType == "horizontal") mainmenutag = "td";
	    else mainmenutag = "div";
	    if (this.MenuType == "horizontal")
	        htmlOutput += "<table border=\"0\" cellSpacing=\"0\" cellPadding=\"0\"><tr>";
	    // Vygenerovani hlavniho menu (root)
	    for (var ItemIndex in this.MainItems) {
	        var MenuItem = this.MainItems[ItemIndex];

	        if (MenuItem.MenuText == "~~~sep~~~") /// zde je potreba dodelat podminku z .cs
	        {
	            htmlOutput += "<" + mainmenutag + " class=\"" + MenuItem.MenuSeparator + "\"></" + mainmenutag + ">";
	        }
	        else if (MenuItem.MenuTarget == "/%7e%7e%7etit%7e%7e%7e.aspx") {
	            htmlOutput += "<" + mainmenutag + " class=\"" + MenuItem.MenuTitle + "\">";
	            htmlOutput += "<nobr>" + MenuItem.MenuText + "</nobr>";
	            htmlOutput += "</" + mainmenutag + ">";
	        }
	        else {
	            if (MenuItem.MenuTarget == "")
	                MenuItem.MenuTarget = "#";
	            htmlOutput += "<a style=\"text-decoration: none;\" href=\"" + MenuItem.MenuTarget + "\">";
	            htmlOutput += "<" + mainmenutag + " style=\"clear: none;\" id=\"menuitem_" + MenuItem.MenuName + "\" class=\"" + MenuItem.ItemClassNormal + "\" onmouseover=\"javascript: " + this.InstanceName + ".EnterItem('" + MenuItem.MenuName + "');" + this.InstanceName + ".OpenSubmenu('" + MenuItem.MenuName + "');\" onmouseout=\"javascript: " + this.InstanceName + ".LeaveItem('" + MenuItem.MenuName + "');" + this.InstanceName + ".CloseSubmenu('" + MenuItem.MenuName + "');\"";
	            if ((MenuItem.MenuTarget != "") && (MenuItem.MenuTarget != "web.aspx?page="))
	                htmlOutput += " onclick=\"location.href=('" + MenuItem.MenuTarget + "');\" ";
	            htmlOutput += ">";

	            htmlOutput += "<table style=\"CURSOR: pointer\""
	            if (this.MenuType != "horizontal") { htmlOutput += " width=\"100%\"" }
	            htmlOutput += " height=\"100%\" border=\"0\" cellSpacing=\"0\" cellPadding=\"0\"><tr>";

	            if ((MenuItem.MenuIcon != "") && (MenuItem.MenuIcon != "undefined") && (MenuItem.MenuIcon != "<img src='undefined'>")) {	// Ikona menu
	                htmlOutput += "<td class=\"" + MenuItem.MenuIconNormal + "\">" + MenuItem.MenuIcon + "</td>";
	            }

	            if (MenuItem.MenuText != "") {
	                htmlOutput += "<td "

	                if (this.MenuType != "horizontal") { htmlOutput += "width=\"100%\"" }

	                htmlOutput += " id=\"menuitemroottext_" + MenuItem.MenuName + "\" class=\"" + MenuItem.ItemClassNormalText + "\"  onmouseover=\"javascript: className=\'" + MenuItem.ItemClassHoverText + "\'\" onmouseout=\"javascript: className=\'" + MenuItem.ItemClassNormalText + "\'\">";
	                // originalni verze
	                htmlOutput += "<nobr>" + MenuItem.MenuText + "</nobr>";
	                // originalni verze
	                // verze s vytvarenim primeho tagu, pro lepsi index
	                // htmlOutput += "<nobr><a style=\"text-decoration: none;\" href=\""+ MenuItem.MenuTarget +"\" target=\"_self\"> " + MenuItem.MenuText + "</a></nobr>";
	                // verze s vytvarenim primeho tagu, pro lepsi index
	                htmlOutput += "</td>";
	            }

	            if (MenuItem.HasChilds) {	// Zobrazovaci znacka podmenu
	                htmlOutput += "<td class=\"" + MenuItem.SubmenuIcon + "\"></td>";
	            }

	            htmlOutput += "</tr></table>";

	            htmlOutput += "</" + mainmenutag + ">";
	            htmlOutput += "</a>";
	        }
	    }
	    if (this.MenuType == "horizontal")
	        htmlOutput += "</tr></table>";
	    // Vygenerovani vsech podmenu
	    for (var ItemIndex in this.AllItems) {
	        var MenuItem = this.AllItems[ItemIndex];

	        if (MenuItem.HasChilds) {	// Tato polozka hlavniho menu ma podmenu
	            htmlOutput += "<div id=\"submenu_" + MenuItem.MenuName + "\" class=\"" + MenuItem.SubmenuFrameClass + "\" style=\"display: none;\" onmouseover=\"javascript: " + this.InstanceName + ".CancelCloseSubmenu('" + MenuItem.MenuName + "')\" onmouseout=\"javascript: " + this.InstanceName + ".CloseSubmenu('" + MenuItem.MenuName + "')\">";
	            htmlOutput += this.DrawItemSubmenu(MenuItem);
	            htmlOutput += "</div>";
	        }
	    }

	    TargetElement.innerHTML = htmlOutput;
	};
	
	this.EnterItem = function(submenuname) {
		var CallerFrame = eval("document.getElementById('menuitem_" + submenuname + "')");
		var MenuItem = this.AllItems[submenuname];
		CallerFrame.className = MenuItem.ItemClassHover;
	}
	
	this.LeaveItem = function(submenuname) {
		var CallerFrame = eval("document.getElementById('menuitem_" + submenuname + "')");
		var MenuItem = this.AllItems[submenuname];
		
		CallerFrame.className = MenuItem.ItemClassNormal;
	}
	
	this.OpenSubmenu = function(submenuname) {
		// Zobrazime dane submenu
		var MenuFrame = eval("document.getElementById('submenu_" + submenuname + "')");
		var CallerFrame = eval("document.getElementById('menuitem_" + submenuname + "')");
		var MenuItem = this.AllItems[submenuname];
		
		if(!MenuFrame)
			return; // toto menu nema podmenu
			
		// Zjistime presnou pozici menu v dokumentu a dopocitame pozici pro podmenu
		var PosLeft = CallerFrame.offsetLeft;
		var PosTop = CallerFrame.offsetTop;
		var Elm = CallerFrame.offsetParent;
		while(Elm.tagName != "BODY")
		{
			PosLeft = PosLeft + Elm.offsetLeft;
			PosTop = PosTop + Elm.offsetTop;
			Elm = Elm.offsetParent;
		}
	
		MenuFrame.style.position = "absolute";
		MenuFrame.style.visibility = "hidden";
		MenuFrame.style.display = "block";
		
		if(MenuItem.ParentItem)
		{	// Jedna se o podmenu podmenu
			if((PosLeft + CallerFrame.offsetWidth + MenuFrame.offsetWidth + 10) < Elm.clientWidth)
			{
				MenuFrame.style.left = PosLeft + CallerFrame.offsetWidth;
			} else {
				MenuFrame.style.left = PosLeft - MenuFrame.offsetWidth;
			}
			MenuFrame.style.top = PosTop + (CallerFrame.offsetHeight / 4);
		} else {
			// Jedna se o podmenu hlavniho menu
			if(this.MenuType == "horizontal")
			{
				MenuFrame.style.left = PosLeft;
				MenuFrame.style.top = PosTop + CallerFrame.offsetHeight;			
			} else {
				if((PosLeft + CallerFrame.offsetWidth + MenuFrame.offsetWidth + 10) < Elm.clientWidth)
				{
					MenuFrame.style.left = PosLeft + CallerFrame.offsetWidth;
				} else {
					MenuFrame.style.left = PosLeft - MenuFrame.offsetWidth;
				}
				MenuFrame.style.top = PosTop;			
			}
			
		}

		if(MenuFrame.filters && (MenuFrame.filters.length > 0))
			MenuFrame.filters.item(1).Apply();

		MenuFrame.style.visibility = "visible";
			
		if(MenuFrame.filters && (MenuFrame.filters.length > 0))
			MenuFrame.filters.item(1).Play();
		
		// Oznaceni otevreni a zruseni zavreni u tohoto a vsech nadmenu
		while(MenuItem)
		{
			MenuItem.CloseInitiated = false;
			MenuItem.Displayed = true;
			
			MenuItem = MenuItem.ParentItem;
		}		
	}
	
	this.CloseSubmenu = function(submenuname){
		var MenuItem = this.AllItems[submenuname];

		// Oznaceni polozek pro vymazani
		while(MenuItem)
		{
			MenuItem.CloseInitiated = true;
			window.setTimeout(this.InstanceName + ".DoCloseSubmenu('" + MenuItem.MenuName + "');", this.CloseInterval);
			
			MenuItem = MenuItem.ParentItem;
		}		
	}
	
	this.DoCloseSubmenu = function(submenuname) {
		var MenuItem = this.AllItems[submenuname];
		
		if(MenuItem.CloseInitiated)
		{
			MenuItem.CloseInitiated = false;
			MenuItem.Displayed = false;
			
			var MenuFrame = eval("document.getElementById('submenu_" + submenuname + "')");
			
			if(MenuFrame)
				MenuFrame.style.display = "none";
		}
	}
	
	this.CancelCloseSubmenu = function(submenuname) {
		var MenuItem = this.AllItems[submenuname];

		while(MenuItem)
		{
			MenuItem.CloseInitiated = false;
			MenuItem = MenuItem.ParentItem;
		}		
	}
}
