//************************************************************************
// rozbalovaci menu, vodorovne (csw)
// (c) 2001-2003 mf
// stazeno bez souhlasu z Cigler software - sorry a diky
// x objeveni menu je dano definici, y konstantni v 1. urovni, dle mysi pri vyvolani (dynamicnost!)
// sbaleni po vyjeti mysi vpravo za 'mezx' (podle zanoreni menu)
// kdo tento kod bez povoleni uzije, tomu hlava uhnije!
// rozsireno o osetreni DOM browseru

// tyto 3 hodnoty se nastavi v dokumentu, mozno pro kazdy zvlast
// var menuItems = n; // celkovy pocet menu; nastavi se v memnugeneratoru
// var menuLevels = n; // celkovy pocet urovni menu; nastavi se v memnugeneratoru
// nezhasinat = 0;	// menu ktere se nebude zhasinat

var isnc = document.layers?true:false;
var ismsie = document.all?true:false;
var isdom = document.getElementById?true:false;

// jen pro test
// alert("NMD " + isnc + " " + ismsie + " " + isdom);
// window.defaultStatus = ("NN/MSIE/DOM " + isnc + "/" + ismsie + "/" + isdom);


var x = 0;	// mouse x
var y = 0;	// mouse y
var mezX = 785;	// mez za kterou se schovaji menu
var mezYt = 10;	// mez PRED kterou se schovaji menu TADY BYLO PUVODNE 50 ZMENA KARLIK
var mezY = 320;	// mez za kterou se schovaji menu 
var mezOffset = 150;	// zacatek menu 1. urovne
var mezWidth = 150;	// sirka menu, pro jednoduchost stejna
var menuRef="//";
var styleSwitch = "//";
var mbon = '#008000';
var mbof = '#008000';

var menuItems = 0;	// max. cislo menu
var menuLevels = 0; // celkovy pocet urovni menu
var menuRefer = new Array();	// reference na jednotliva menu
var lastMenu = new Array();	// 0 jako rezerva

var timerID = null;
var timerRunning = false;

function stoptimer(){
	if(timerRunning) {
		clearInterval(timerID);
	}
	timerRunning = false;
}
function starttimer(){
	stoptimer();
	timerID = setInterval("checkmouse()",.5*1000); 
	timerRunning = true;
}
// TADY BYLO PUVODNE 5*1000 ZMENA KARLIK

function checkmouse(){
// hlidani souradnic pro skovani menu na vyjeti z dimenzi
// volano timerem, protoze porovnani v mouseEventu zdrzuje selektovani a posouvani
	if ((x > mezX) || (y > mezY) || (y < mezYt)) {
		hideMenuAll();
	}
}

function mouseMove(e) {
// chytani souradnic pro skovani menu na vyjeti z dimenzi
	if(ismsie){
		x=event.x||event.clientX; // popravde nevim presne proc hlidat oboji, ale zichr je zichr ;)
		y=event.y||event.clientY;
	} else {	// if(isnc || isdom){
		x=e.pageX;
		y=e.pageY;
	}
}

function chkClick(e) {
// skovani menu na click na plochu
	if(ismsie){
		if (window.event.srcElement.tagName != "A") {hideMenuAll();};
	} else if(isnc){
		if ("" + e.target == "") {hideMenuAll();};
	} else if(isdom){
		if ((e.target.tagName != "A") && (e.target.tagName != undefined)) {hideMenuAll();}; // rozsireno kvuli mozille 1.0 - 1.2.1 (linux, win i mac nepozna A)
	}
}

function showMenu2(num,level){
	for(var i=level; i <= menuLevels; i++){
		hideMenu(lastMenu[i]);
		lastMenu[i] = 0;
	}
	if ((num > 0) && (menuRefer[num] != null)) {
		lastMenu[level] = num;
		menuRefer[num].visibility="visible"; 
	}
}

function zarovnat(kolik,nakolik) {
	return Math.round(kolik/nakolik)*nakolik-nakolik;
}

function hideMenuNext2(level){
	if (level+1 > menuLevels) return;
	for(var i=level+1; i <= menuLevels; i++){
		hideMenu(lastMenu[i]);
		lastMenu[i] = 0;
	}
}

function hideMenu2(num){
	if ((num > 0) && (num != nezhasinat)){	// moznost nechat videt jedno menu vzdy
		if (menuRefer[num] != null) {
			menuRefer[num].visibility="hidden"; 
		}
	}
}

function hideMenuAll2(){
	for(var i=1; i <= menuItems; i++){
		hideMenu(i); 
	}
	for(i=1; i <= menuLevels; i++){
		lastMenu[i] = 0;
	}
}

// obarveni a odbarveni pozadi menu
function obarvi(highlightcolor){
	if (isnc) {return false};
	source=event.srcElement;
	if (source.tagName=="A") {
		source.parentElement.style.background=highlightcolor;
	} else if (source.tagName=="DIV" || source.tagName=="SPAN") {
		source.style.background=highlightcolor;
	}
}

function odbarvi(originalcolor){
	if (isnc) {return false};
	if (source.tagName=="A") {
		source.parentElement.style.background=originalcolor;
	} else if (source.tagName=="DIV") {
		source.style.background=originalcolor;
	}
}

// toto je nove, spravne; i pro leve menu!
function obarviX(co, barva){
	co.style.backgroundColor = barva;
}



// generator
// definicni pole
/*
	[cislo_menu,
		[left-offset,top-offset,sirka,mylevel],	// uroven tohoto menu, 0 je zakladni - ne roletka
		["url","link","alt",num,level]	// num a level je rozbalovane roletky menu
	]

nastaveni akce
	num	level	akce
	?	-1	zadna akce
	0	>= 0	hideMenuNext(level)
	> 0	>= 0	showMenu(num,level)

*/

function menuGenerator () {
// natazeni definice menu osetri startMenu()
	var mhtmlString = '<div style="visibility: hidden;"></div>\n';	// dummy menu pro NN, musi mit style, nemusi mit id
	for (var ama = 0; ama < allmenuArray.length; ama++) {	// projde jednotliva menu
		var menuArray = allmenuArray[ama];	// jedno menu
		var num = menuArray[0];	// cislo menu
		menuRefer[num] = num;	// oznaci pod jakym cislem je jake menu
		var xpos = menuArray[1][0];	// left offset
		var ypos = menuArray[1][1];	// top offset
		var sirka = menuArray[1][2];	// sirka menu
		var mylevel = menuArray[1][3];	// level menu
		if (menuItems < num) {menuItems = num;};	// max. cislo menu
		if (menuLevels < mylevel) {menuLevels = mylevel;};	// celkovy pocet urovni menu
		// grafika menu; vrsek a spodek slouzi jako vypinac menu, ale lepsi by bylo, kdyby to vedelo v jake je to urovni a vypnulo jen tu
		// kaslem na definovatelnou sirku, podmenu jinou barvou
/*
		if (mylevel >1) {var mybg = 'images/menu_tm_'} else {var mybg = 'images/menu_sv_'};
*/
		// zacatek menu
		mhtmlString += '<div id="' + menuName + num + '" class=topmenurolbox style="left: ' + xpos + ' ; top: ' + ypos + '; position: absolute; visibility: hidden; z-index: ' + (20+ama) + '">' + '\n';
		for(var ma = 2; ma < menuArray.length; ma++) {	// projde jednotlive polozky menu
			var itemArray = menuArray[ma];	// jedno menu
			// nastavi definici jedne polozky menu
			var murl = itemArray[0];
			if (murl == "-") {
				// separator
				mhtmlString += '<DIV id=topmenurol_sep><IMG SRC="/images/1x1.gif" WIDTH=149 HEIGHT=1 BORDER=0></DIV>' + '\n';
			} else {
				if (murl == "") {murl = "#"};
				var mlink = itemArray[1];
				var malt = itemArray[2];
				var mnum = itemArray[3];
				var mlevel = itemArray[4];
				// obarveni pozadi menu
				// var mmakce = 'obarvi(mbon);';
				// var mmakceout = ' onMouseout="odbarvi(mbof);"';
				var mmakce = 'obarviX(this, mbon);';
				var mmakceout = ' onMouseout="obarviX(this, mbof);"';
				var msipka = '';
				var msipkadiv = '';
				if (malt != "") {
					mmakce += "window.status='" + malt + "';return true;";
				}
				if (mlevel >= 0) {
					if (mnum == 0) {
						mmakce = 'hideMenuNext(' + mlevel + ');' + mmakce;
					} else {
						mmakce = 'showMenu(' + mnum + ',' + mlevel + ');' + mmakce;
						msipka = '<IMG SRC="/images/sipecka.gif" WIDTH=10 HEIGHT=10 BORDER=0 ALIGN="RIGHT">';
						msipkadiv = ' STYLE="width: 150px"';
					}
				}
				if (mmakce != "") {
					mmakce = ' onMouseOver="' + mmakce + '"';
				}
//				mhtmlString += '<DIV id=topmenurol_div' + msipkadiv + '><A HREF="' + murl + '" CLASS="menut"' + mmakce + mmakceout + '>' + msipka + mlink + '</A>' + '</DIV>' + '\n';
				mhtmlString += '<DIV id=topmenurol_div' + msipkadiv + mmakce + mmakceout + '><A HREF="' + murl + '" CLASS="menut">' + msipka + mlink + '</A>' + '</DIV>' + '\n';
			}
		}
		// konec menu
		mhtmlString += '<IMG SRC="/images/1x1.gif" WIDTH=150 HEIGHT=1 BORDER=0></div>' + '\n';
	}
	return mhtmlString;
}


function getmenuasObj(name) {	// zjisti dostupny objekt pro praci se stylem dokumentu
	if (isdom) {	// DOM
		return document.getElementById(name).style;
	} else if (ismsie) {	// MSIE
		return document.all[name].style;
	} else if (isnc) {	// NC
		return document.layers[name];
	} else {
		return null;
	}
}


function startMenu() {
// startovani menu
	var isDHTML = (document.getElementById || document.all || document.layers);
	if (isDHTML) {	// jen s DHTML ma to cele smysl
		// cekam na natazeni definice menu
		if (menuArrayLoaded) {	//
			// startovani generovani
			document.writeln(menuGenerator());
			lastMenu = new Array(menuLevels+1);	// 0 jako rezerva
			for (var num = 0; num < menuRefer.length; num++) {	// dotvori reference na jednotliva menu
				if ((typeof menuRefer[num] != "undefined") && (menuRefer[num] > 0)) {
					menuRefer[num] = getmenuasObj(menuName + num);	// objekt menu
				} else {
					menuRefer[num] = null;	// menu tohoto cisla neni!
				}
			}
			// menu jsou vygenerovana
			document.onmousemove = mouseMove;
			document.onmousedown = chkClick;
			if (isnc) { // NC capturuje jinak
				document.captureEvents(Event.MOUSEMOVE | Event.MOUSEDOWN);
			}
			// aktivace funkci menu
			showMenu = showMenu2;
			hideMenuNext = hideMenuNext2;
			hideMenu = hideMenu2;
			hideMenuAll = hideMenuAll2;
			starttimer();
			// menu jede!
		} else {
			setTimeout("startMenuGenerator()",5);	// za chvili zkusim znovu
		}
	}
}

startMenu();

