slideMenu = {

	stepUp : 4,
	stepDown : 3,
	tick : 2,
	delayUp : 10,
	delayDown : 200,

	unitHeight : 19, /* vyska radky v seznamu vcetne okraje a ramecku */
	baseHeight : 19, /* spodni vnitrni okraj menu */
	menuClass : 'slideMenu', /* trida elementu menu */
	menuHolderClass : 'slideMenuContainer', /* trida elementu obsahujiciho menu a spoustejiciho udalosti */

	stop : function(i) {
		if (slideMenu.delay[i]) {
			window.clearTimeout(slideMenu.delay[i]);
			slideMenu.delay[i] = false;
		}
		if (slideMenu.tmr[i]) {
			window.clearInterval(slideMenu.tmr[i]);
			slideMenu.tmr[i] = false;
		}
	},

	move : function(i, step) {
		var h = parseInt(slideMenu.currentHeight[i])
		var d = parseInt(step);

		if (d > 0 && h + d > slideMenu.maxHeight[i]) {
			slideMenu.stop(i);
			h = slideMenu.maxHeight[i];
			slideMenu.status[i] = 'up';
		}
		else if (d < 0 && h < - d) {
			slideMenu.stop(i);
			h = 0;
			slideMenu.status[i] = 'down';
		}
		else h = h + d;
		if (h == 0) slideMenu.elm[i].style.display = 'none';
		else {
			if (slideMenu.elm[i].style.display != 'block') slideMenu.elm[i].style.display = 'block';
			slideMenu.elm[i].style.height = (slideMenu.currentHeight[i] = h) + 'px';
		}
	},

	upExec : function(i) {
		slideMenu.stop(i);
		slideMenu.tmr[i] = window.setInterval('slideMenu.move(' + i + ', ' + slideMenu.stepUp + ');', slideMenu.tick);
		slideMenu.status[i] = 'execUp';
	},

	downExec : function(i) {
		slideMenu.stop(i);
		slideMenu.tmr[i] = window.setInterval('slideMenu.move(' + i + ', -' + slideMenu.stepDown + ');', slideMenu.tick);
		slideMenu.status[i] = 'execDown';
	},

	up : function(e) {
		e = evt.fix(e);
		var tgt = e.target;
		while (!cls.has(tgt, slideMenu.menuHolderClass)) {
			if (tgt.parentNode) tgt = tgt.parentNode;
			else return false;
		}
		slideMenu.stop(tgt.slideMenuIndex);
		slideMenu.delay[tgt.slideMenuIndex] = window.setTimeout('slideMenu.upExec(' + tgt.slideMenuIndex + ');', slideMenu.delayUp);
		slideMenu.status[tgt.slideMenuIndex] = 'prepUp';
	},

	down : function(e) {
		e = evt.fix(e);
		var tgt = e.target;
		while (!cls.has(tgt, slideMenu.menuHolderClass)) {
			if (tgt.parentNode) tgt = tgt.parentNode;
			else return false;
		}
		slideMenu.stop(tgt.slideMenuIndex);
		slideMenu.delay[tgt.slideMenuIndex] = window.setTimeout('slideMenu.downExec(' + tgt.slideMenuIndex + ');', slideMenu.delayDown);
		slideMenu.status[tgt.slideMenuIndex] = 'prepDown';
	},
	
	init : function()
	{
		if (window.opera && (!window.opera.version || parseFloat(window.opera.version()) < 8)) return;

		slideMenu.tmr = new Array();
		slideMenu.delay = new Array();
		slideMenu.elm = new Array();
		slideMenu.status = new Array();
		slideMenu.currentHeight = new Array();
		slideMenu.maxHeight = new Array();

		var holders = document.getElementsByTagName('div');
		for (var i = 0; i < holders.length; i++) if (cls.has(holders[i], slideMenu.menuHolderClass)) {

			holders[i].slideMenuIndex = i;

			var menus = holders[i].getElementsByTagName('div');
			for (var j = 0; j < menus.length; j++) {
				if (cls.has(menus[j], slideMenu.menuClass)) {
					slideMenu.elm[i] = menus[j];
					break;
				}
			}
			slideMenu.currentHeight[i] = slideMenu.maxHeight[i] = slideMenu.elm[i].getElementsByTagName('li').length * slideMenu.unitHeight + slideMenu.baseHeight;
			slideMenu.tmr[i] = null;

			evt.add(holders[i], 'mouseover', slideMenu.up);
			evt.add(holders[i], 'mouseout', slideMenu.down);

			slideMenu.status[i] = 'up';
			slideMenu.downExec(i);
		}
	}
}

evt.add(window, 'load', slideMenu.init);
