/**
	Created by Tibor Bedő
	Date: 11.09.2005.
	Copyright: All rights reserved.

	Description:
	Menu
*/

var isMSIE = (navigator.appName == "Microsoft Internet Explorer");
var isOPERA = (navigator.appName == "Opera");

var tib_globals = Array();
var tib_index = 0;

var global_var = null;

var notHide = false;

/**
	@param	name		A menu neve.
	@param	pospic		Annak a kepnek a neve amihez kepest a menut igazitani kell.
	@param	width		A menu szelessege.
	@param	rx			A menu eltolasa a pozicionalashoz kepest.
	@param	ry			A menu eltolasa a pozicionalashoz kepest.
	@param	menuitems	Tartalom.
	@param	parent		Szulo menu elem referenciaja.
	@param	index		Hányadik almenu.
	@param	showtime	Mennyi ido utan rejtse el a menut.
*/
function Menu_class(settings) {

	this.addEvent = addEvent;
	this.getParentsNum = Menu_getParentsNum;
	this.Show = Show;
	this.Hide = Hide;
	this.Hide2 = Hide2;
	this.HideNow = Hide_;
	this.createMenu = Menu_createMenu;
	this.getParam = Menu_getParam;
	this.defParam = Menu_defParam;
	this.hideSubmenus = Menu_hideSubmenus;

	this.settings = new Array();
	this.defParam = Menu_defParam;
	this.defParam("name",tib_index++);
	this.defParam("pospic","");
	this.defParam("width",200);
	this.defParam("rx",0);
	this.defParam("ry",0);
	this.defParam("menuitems",{});
	this.defParam("parent",null);
	this.defParam("index",0);
	this.defParam("showtime",500);
	this.defParam("color","");
	this.defParam("bgcolor","");
	this.defParam("itemColor","");
	this.defParam("background","");
	this.defParam("backgroundPosition","");
	this.defParam("backgroundRepeat","");
	this.defParam("shadowColor","#9d9da1");
	this.defParam("lightColor","#FFFFFF");
	this.defParam("selectedItemColor","");
	this.defParam("onMouseOverAction","");
	this.defParam("onMouseOutAction","");
	this.defParam("targetId","");
	this.defParam("td_class","");
	this.defParam("a_class","");
	this.defParam("jshtml",false);

	for(key in settings)
		this.defParam(key,settings[key]);

	//if (this.getParam("targetId")=="") {
		//alert("A targetId-t meg kell adni!");
	//}

	this.isCreated = false;
	this.menuObj = true;
	tib_globals[this.getParam("name")] = this;

	this.menu_num = 0;

	if (this.getParam("parent") == null) {
		if (typeof(moduleLoader_class)!='undefined') this.createMenu();
		else this.addEvent(window,"load",this.createMenu);
	}
}

function Menu_createMenu() {

	var menu_ref = null;

	for (elm in tib_globals) {
		if ( (typeof(tib_globals[elm])!="undefined") && (tib_globals[elm]) && (typeof(tib_globals[elm].menuObj)!="undefined") && (tib_globals[elm].isCreated==false) ) {
			var menu_ref = tib_globals[elm];
			menu_ref.isCreated = true;
			menu_ref.op = 0;
			
			menu_ref.parent = menu_ref.getParam("parent");
			menu_ref.index = menu_ref.getParam("index");
			menu_ref.nev = menu_ref.getParam("name");

			menu_ref.PosPic = menu_ref.getParam("pospic");

			menu_ref.eltolasx = menu_ref.getParam("rx");
			menu_ref.eltolasy = menu_ref.getParam("ry");

			menu_ref.w = menu_ref.getParam("width");

			if (isOPERA)
			{
				setBgColor = "bgcolor=\""+menu_ref.getParam("bgcolor")+"\"";
			} else setBgColor = "";

			menu_ref.tartalom = "";
			menu_ref.submenu = new Array();
			var menupontok = menu_ref.getParam("menuitems");
			for(menupont in menupontok) {
				var menupont = menupont;
				if (menupont=="") continue;
				if (typeof(menupontok[menupont])=="string") {
					link_array = menupontok[menupont].split("|");
					var link = link_array[0];
					var target = link_array[1];
					var onClickCode = "";
					if (target=='javascript') onClickCode = "onClick=\""+link+"\"";
					else onClickCode = "onClick=\"if ('"+target+"'!='undefined') {w = window.frames['"+target+"']} else {w = window;} w.location='"+link+"'; \"";
					if (menu_ref.getParam("jshtml"))
					{
						link = "javascript:JSHtml.link(\\'"+link+"\\');";
					}
					if (menu_ref.parent) {
						menu_ref.tartalom += "<tr bgColor='"+menu_ref.getParam("itemColor")+"' style='cursor: pointer;' onClick=\"if (!notHide) {tib_globals['"+menu_ref.nev+"'].hide_all=true; tib_globals['"+menu_ref.nev+"'].HideNow();}\" onMouseOver=\"if (typeof(tib_globals['"+menu_ref.nev+"'])!='undefined') {tib_globals['"+menu_ref.parent.nev+"'].submenu["+menu_ref.index+"].Show(); tib_globals['"+menu_ref.parent.nev+"'].submenu["+menu_ref.index+"].hideSubmenus();} bgColor='"+menu_ref.getParam("selectedItemColor")+"'\" onMouseOut=\"if (typeof(tib_globals['"+menu_ref.nev+"'])!='undefined') {tib_globals['"+menu_ref.parent.nev+"'].submenu["+menu_ref.index+"].Hide();} bgColor='"+menu_ref.getParam("itemColor")+"'\"><td class='"+menu_ref.getParam("td_class")+"' width='10' valign='top' style='height: 18px; color: "+menu_ref.getParam("color")+"; text-decoration: none;'></td><td "+onClickCode+" class='"+menu_ref.getParam("td_class")+"'><a class='"+menu_ref.getParam("a_class")+"' onMouseOver=\"tib_globals['"+menu_ref.nev+"'].Show();\" style='color: "+menu_ref.getParam("color")+"; text-decoration: none;'>"+menupont+"</a></td></tr>";
					} else {
						menu_ref.tartalom += "<tr bgColor='"+menu_ref.getParam("itemColor")+"' style='cursor: pointer;' onClick=\"if (!notHide) {tib_globals['"+menu_ref.nev+"'].hide_all=true; tib_globals['"+menu_ref.nev+"'].HideNow();}\" onMouseOver=\"if (typeof(tib_globals['"+menu_ref.nev+"'])!='undefined') {tib_globals['"+menu_ref.nev+"'].Show(); tib_globals['"+menu_ref.nev+"'].hideSubmenus();} bgColor='"+menu_ref.getParam("selectedItemColor")+"'\" onMouseOut=\"if (typeof(tib_globals['"+menu_ref.nev+"'])!='undefined') {tib_globals['"+menu_ref.nev+"'].Hide();} bgColor='"+menu_ref.getParam("itemColor")+"'\"><td class='"+menu_ref.getParam("td_class")+"' width='10' valign='top' style='height: 18px; color: "+menu_ref.getParam("color")+"; text-decoration: none;'></td><td class='"+menu_ref.getParam("td_class")+"' "+onClickCode+"><a class='"+menu_ref.getParam("a_class")+"' onMouseOver=\"tib_globals['"+menu_ref.nev+"'].Show();\" "+((menu_ref.getParam("color")!="")?"style='color: "+menu_ref.getParam("color")+"; text-decoration: none;'":"")+">"+menupont+"</a></td></tr>";
					}
				} else if (typeof(menupontok[menupont])=="object") {
					menu_ref.menu_num++;
					menu_ref.submenu[menu_ref.menu_num] = new Menu_class({
						pospic : "pic_"+menu_ref.nev+"_"+menu_ref.menu_num+"_pos",
						width : menu_ref.getParam("width"),
						rx : menu_ref.getParam("rx")+menu_ref.getParam("width")-20,
						ry : menu_ref.getParam("ry")-15,
						color : menu_ref.getParam("color"),
						bgcolor : menu_ref.getParam("bgcolor"),
						shadowColor : menu_ref.getParam("shadowColor"),
						lightColor : menu_ref.getParam("lightColor"),
						selectedItemColor : menu_ref.getParam("selectedItemColor"),
						menuitems : menupontok[menupont],
						parent : menu_ref,
						index : menu_ref.menu_num,
						showtime : menu_ref.getParam("showtime"),
						targetId : "submenu_"+menu_ref.nev+"_"+menu_ref.menu_num,
						onMouseOverAction : "document.getElementById('submenu_"+menu_ref.nev+"_"+menu_ref.menu_num+"').bgColor='"+menu_ref.getParam("selectedItemColor")+"'",
						onMouseOutAction : "document.getElementById('submenu_"+menu_ref.nev+"_"+menu_ref.menu_num+"').bgColor='"+menu_ref.getParam("bgcolor")+"'"
					});
					menu_ref.tartalom += "<tr style='cursor: pointer;' id='submenu_"+menu_ref.nev+"_"+menu_ref.menu_num+"' name='submenu_"+menu_ref.nev+"_"+menu_ref.menu_num+"'><td class='"+menu_ref.getParam("td_class")+"' width='10' valign='top' style='height: 18px; color: "+menu_ref.getParam("color")+"; text-decoration: none;'><img border='0' width='0' height='0' style=\"position: relative;\" name=\"pic_"+menu_ref.nev+"_"+menu_ref.menu_num+"_pos\" id=\"pic_"+menu_ref.nev+"_"+menu_ref.menu_num+"_pos\"></td><td class='"+menu_ref.getParam("td_class")+"'><a class='"+menu_ref.getParam("a_class")+"' style='color: "+menu_ref.getParam("color")+"; text-decoration: none;'><b>"+menupont+" ...</b></a></td></tr>";
				}
			}

			menu_ref.tartalom = "<table width='100%' cellpadding=0 cellspacing="+menu_ref.getParam("padding")+" >"+menu_ref.tartalom+"</table>";

			menu_ref.x = 0;
			menu_ref.y = 0;

			menu_ref.getParentsNum(menu_ref);
			var zindex = 200+menu_ref.parentsNum*10;
			menu_div = document.createElement("div");
			menu_div.innerHTML = "<div onMouseOut=\"tib_globals['"+menu_ref.nev+"'].Hide();\" id=\""+menu_ref.nev+"\" name=\""+menu_ref.nev+"\" style=\"visibility: hidden; background-color: "+menu_ref.getParam("bgcolor")+"; color: #FFFFFF;position: absolute; width: "+menu_ref.getParam("width")+"px; top: "+menu_ref.y+"px; left: "+menu_ref.x+"px;z-index: "+zindex+";border-style:solid; border-width: 1px; border-left-color: "+menu_ref.getParam("lightColor")+"; border-top-color: "+menu_ref.getParam("lightColor")+"; border-bottom-color: "+menu_ref.getParam("shadowColor")+"; border-right-color: "+menu_ref.getParam("shadowColor")+"; font-weight: bold;filter:alpha(opacity=95);-moz-opacity: 0.95; padding: 3px; "+((menu_ref.getParam("background"))?"background-image:url("+menu_ref.getParam("background")+");":"")+" background-position: "+menu_ref.getParam("backgroundPosition")+"; background-repeat: "+menu_ref.getParam("backgroundRepeat")+";\">"+menu_ref.tartalom+"</div>";
			if (menu_ref.getParam("shadow"))
				menu_div.innerHTML += "<div id=\""+menu_ref.nev+"_arnyek\" name=\""+menu_ref.nev+"_arnyek\" style=\"visibility: hidden; background-color: #000000; color: #000000;position: absolute; width: "+menu_ref.getParam("width")+"px; top: "+menu_ref.y+"px; left: "+menu_ref.x+"px;z-index: "+(zindex-1)+";border-style:solid; border-width: 1px; border-color: #000000; font-weight: bold;filter:alpha(opacity=10);-moz-opacity: 0.1;opacity: 0.1;padding: 3px;\">"+menu_ref.tartalom+"</div>";
			else
				menu_div.innerHTML += "<div id=\""+menu_ref.nev+"_arnyek\" name=\""+menu_ref.nev+"_arnyek\"></div>";
			document.body.appendChild(menu_div);

			menu_ref.h = (document.getElementById(menu_ref.nev)).clientHeight;

			menu_ref.Menu = new getObj(menu_ref.nev);
			menu_ref.Arnyek = new getObj(menu_ref.nev+"_arnyek");

			for (i in menu_ref.submenu) {
				menu_ref.submenu[i].createMenu();
			}
			
			eval("global_var = function() {tib_globals["+menu_ref.nev+"].Show();}");
			if (menu_ref.getParam("targetId")) 
				menu_ref.addEvent(document.getElementById(menu_ref.getParam("targetId")), "mouseover", global_var);
			if (menu_ref.getParam("parent")==null)
				eval("global_var = function() {tib_globals["+menu_ref.nev+"].Hide();}");
			else 
				eval("global_var = function() {tib_globals["+menu_ref.nev+"].Hide2();}");
			if (menu_ref.getParam("targetId")) menu_ref.addEvent(document.getElementById(menu_ref.getParam("targetId")), "mouseout", global_var);

		}
	}
	
}

function ShowOpacityAnim(name) {
	var menu_ref = tib_globals[name];
	var md = menu_ref.Menu;
	if (menu_ref.Anim) {
		clearTimeout(menu_ref.Anim);
		menu_ref.Anim = false;
	}
	menu_ref.op = menu_ref.op + 10;
	if (menu_ref.op>90) {
		menu_ref.op = 95;
		md.style.filter = "alpha(opacity="+(menu_ref.op)+")";
		md.style.mozOpacity = menu_ref.op/100+'';
		md.style.opacity = menu_ref.op/100+'';
	} else {
		md.style.filter = "alpha(opacity="+(menu_ref.op)+")";
		md.style.mozOpacity = menu_ref.op/100+'';
		md.style.opacity = menu_ref.op/100+'';
		menu_ref.Anim = setTimeout("ShowOpacityAnim("+name+")",10);
	}
}

function HideOpacityAnim(name) {
	var menu_ref = tib_globals[name];
	var md = menu_ref.Menu;
	if (menu_ref.Anim) {
		clearTimeout(menu_ref.Anim);
		menu_ref.Anim = false;
	}
	menu_ref.op = menu_ref.op - 10;
	if (menu_ref.op<0) {
		menu_ref.op = 0;
		md.style.filter = "alpha(opacity="+(menu_ref.op)+")";
		md.style.mozOpacity = menu_ref.op/100+'';
		md.style.opacity = menu_ref.op/100+'';
		menu_ref.Menu.style.visibility="hidden";
		menu_ref.Arnyek.style.visibility="hidden";
	} else {
		md.style.filter = "alpha(opacity="+(menu_ref.op)+")";
		md.style.mozOpacity = menu_ref.op/100+'';
		md.style.opacity = menu_ref.op/100+'';
		menu_ref.Anim = setTimeout("HideOpacityAnim("+name+")",10);
	}
}

function Show() {

	eval(this.getParam("onMouseOverAction"));

	if (this.parent) {
		this.parent.Show();
		if (this.PosPic!="") {
			this.x = this.parent.x+document.getElementById(this.PosPic).offsetLeft;
			this.y = this.parent.y+document.getElementById(this.PosPic).offsetTop;
		}
		for (i in this.parent.submenu) {
			if (this.parent.submenu[i]!=this)
				this.parent.submenu[i].HideNow();
		}
	} else {
		for (elem in this.submenu) {
			this.submenu[elem].hide_all = false;
		}
		if (this.PosPic!="") {
			this.x = document.getElementById(this.PosPic).offsetLeft;
			this.y = document.getElementById(this.PosPic).offsetTop;
		}
	}
	this.Menu.style.visibility="visible";
	this.Arnyek.style.visibility="visible";
	this.Menu.style.left = this.x+this.eltolasx+"px";
	this.Menu.style.top = this.y+this.eltolasy+"px";
	this.Arnyek.style.left = this.x+this.eltolasx+5+"px";
	this.Arnyek.style.top = this.y+this.eltolasy+5+"px";

	if (this.timeout!="nincs")
		clearTimeout(this.timeout);
	this.timeout = "nincs";
	if (this.getParam("anim")) {
		eval("Show"+this.getParam("anim")+"("+this.nev+")",0);
	}
}

function Hide_() {
	if ( (this.parent) && (this.hide_all) ) {
		this.parent.hide_all = true;
		this.parent.HideNow();
	}
	eval(this.getParam("onMouseOutAction"));
	//this.op = 0;
	/*if (this.Anim) {
		clearTimeout(this.Anim);
		this.Anim = false;
	}*/
	if (this.getParam("anim")) {
		eval("Hide"+this.getParam("anim")+"("+this.nev+")",0);
	} else {
		this.Menu.style.visibility="hidden";
		this.Arnyek.style.visibility="hidden";
	}
}

function Hide() {
	this.hide_all = true;
	if (this.timeout=="nincs") {
		if (this.parent) {
			this.timeout = setTimeout("tib_globals['"+this.parent.nev+"'].submenu["+this.index+"].HideNow()",this.getParam("showtime"));
		} else {
			this.timeout = setTimeout("tib_globals['"+this.nev+"'].HideNow()",this.getParam("showtime"));
		}
	}
}

function Menu_hideSubmenus() {
	this.hide_all = false;
	for (i in this.submenu) {
		this.submenu[i].hide_all = false;
		this.submenu[i].HideNow();
	}
}

function Hide2() {
	this.hide_all = false;
	if (this.timeout=="nincs") {
		if (this.parent) {
			this.timeout = setTimeout("tib_globals['"+this.parent.nev+"'].submenu["+this.index+"].HideNow()",200);
		} else {
			this.timeout = setTimeout("tib_globals['"+this.nev+"'].HideNow()",200);
		}
	}
}

function addEvent(obj, name, handler) {
	if ( (isMSIE) || (isOPERA) ) {
		obj.attachEvent("on" + name, handler);
	} else {
		obj.addEventListener(name, handler, false);
	}
}















//--------------------------------- new code

/**
	A parameter tomb alapertelmezett ertekeit ezzel lehet megadni.

	@param	key		A parameter neve.
	@param	value	A parameter erteke.
*/
function Menu_defParam(key,value) {
	this.settings[key]=value;
}

/**
	A parameter lekerdezese,

	@param	key		A parameter neve.
*/
function Menu_getParam(key) {
	return this.settings[key];
}

/**
	Megnezi, hogy hany szuloje van az adott menunek

	@param		Az adott menu referenciajat kell megadni.
	@return		A szulok szamaval akar visszaterni.
*/
function Menu_getParentsNum(menu) {
	if (typeof(this.parentsNum)=="undefined") this.parentsNum = 0;
	if (menu.parent!=null) {
		this.parentsNum++;
		this.getParentsNum(menu.parent);
	}
}

loaded=true;
