counterID = 0;
MenuHeight = new Array();
aktiv = new Array();
aktheight = new Array();

is_MenuDown = 0;


var Menu_nice = function(){
	
	Event.observe(window, 'load', function(){Menu_nice.init();})
	return{
		aktmenu:0,
		aktmenuNum:0,
		maxheight:0,
		CDTime:50,
		// aktiv: new Array(),
		// aktheight:0,
		step: 40,
		lastMenuNum: 0,
		// MenuHeight:0,
		
		
		show: function(s){
			// alert(s.id);
			// menu = s.nextSibling;
			this.aktmenuNum = parseInt(s.id.substring(1));
			this.aktmenu = $("d" + this.aktmenuNum);
			
			// eltuntetem ami fent van ezen kivul
			// this.counter_Up_All();
			
			for(i=0;i<counterID;i++){
				if(i == this.aktmenuNum && aktiv[this.aktmenuNum])
					clearTimeout(aktiv[this.aktmenuNum]);
				else if(i != this.aktmenuNum)
					aktiv[i] = setTimeout("Set_Hide_Height('" + i + "')", Menu_nice.CDTime);
			}
			
			
			// if(aktiv[this.aktmenuNum])clearTimeout(aktiv[this.aktmenuNum]);
			// alert(MenuHeight[num]);
			this.maxheight = MenuHeight[this.aktmenuNum];
			aktheight[this.aktmenuNum] = this.aktmenu.getHeight();
			// this.lastMenuNum = this.aktmenuNum;

			// this.SlideDown();
			// this.aktmenu.style.height = aktheight[this.aktmenuNum] + 'px';
			// alert(aktheight[this.aktmenuNum]);
			this.aktmenu.style.visibility = 'visible';
			this.counter_Down();
		},
		
		hide: function(s){
			aktheight[this.aktmenuNum] = this.aktmenu.getHeight();
			// this.counter_Up();
		},
				
		counter_Up: function(){
			aktheight[this.aktmenuNum] -= this.step;
			if(aktheight[this.aktmenuNum] < this.step)aktheight[this.aktmenuNum] = 0;
			this.aktmenu.style.height = aktheight[this.aktmenuNum] + 'px';
			if(aktheight[this.aktmenuNum] > 0){
				aktiv[this.aktmenuNum] = setTimeout(this.counter_Up.bind(this), this.CDTime);
				// aktiv[aktmenuNum] = setTimeout("this.counter_Up.bind('" + aktmenu + "', " + aktmenuNum + ")", this.CDTime);
			}
			else{
				clearTimeout(aktiv[this.aktmenuNum]);
				this.aktmenu.style.visibility = 'hidden';
			}
		},
		
		counter_Up_All: function(){
			$$('ul#menu > li > div').each(function(s){	// -> all ul#menu elements with child li
				menu = s.previousSibling;
				thismenuNum = parseInt(menu.id.substring(1))-1;
				// alert(thismenuNum + ' - ' + Menu_nice.aktmenuNum + ' - ' + aktheight[thismenuNum]);
				// alert(is_MenuDown);
				if(thismenuNum != Menu_nice.aktmenuNum && aktheight[thismenuNum] > 0){
					// aktheight[thismenuNum] -= Menu_nice.step;
					// s.style.height = aktheight[thismenuNum] + 'px';
					// is_MenuDown = 1;
					
					aktiv[thismenuNum] = setTimeout("Set_Hide_Height('" + thismenuNum + "')", Menu_nice.CDTime);
				}				
			});
			
			// if(is_MenuDown == 1){
				// is_MenuDown = 0;
				// aktiv[99] = setTimeout(Menu_nice.counter_Up_All.bind(this), Menu_nice.CDTime);
			// }
		},
		
		counter_Down: function(){
			// alert(this.aktmenu.style.height);
			aktheight[this.aktmenuNum] += this.step;
			this.aktmenu.style.height = aktheight[this.aktmenuNum] + 'px';
			if(aktheight[this.aktmenuNum] < this.maxheight)
				aktiv[this.aktmenuNum] = setTimeout(this.counter_Down.bind(this), this.CDTime);
			else clearTimeout(aktiv[this.aktmenuNum]);			
		},
		
		init: function(){
			$$('ul#menu > li > div').each(function(s){	// -> all ul#menu elements with child li
				s.style.visibility = 'hidden';
				// alert(counterID);
				MenuHeight[counterID] = s.getHeight();
				s.style.height = 0 + 'px';
				counterID++;
				// Event.observe(s, 'mouseover', function(){Hide_All(s); });				
				// Event.observe(s, 'mouseover', function(){Menu.show(s); });				
				// Event.observe(s, 'mouseout', function(){ Menu.hideTimeing(s); });				
			});
			$$('ul#menu > li > a').each(function(s){	// -> all ul#menu elements with child li
				// alert(s.title);
				Event.observe(s, 'mouseover', function(){Menu_nice.show(s); });				
				Event.observe(s, 'mouseout', function(){ Menu_nice.hide(s); });				
			});
			// $$('ul#menu > li').each(function(s){	// -> all ul#menu elements with child li
				// alert(s.title);
			// Event.observe('menu', 'mouseover', function(){ Menu_nice.hide(s); });				
			// });
		}
	}
}();

function Set_Hide_Height(thismenuNum){
	
	aktheight[thismenuNum] -= Menu_nice.step;
	// aktheight[thismenuNum] -= 50;
	if(aktheight[thismenuNum] < Menu_nice.step) aktheight[thismenuNum] = 0;
	$("d" + thismenuNum).style.height = aktheight[thismenuNum] + 'px';
	// alert($("d" + thismenuNum).style.height + ' - ' + thismenuNum + " - " + Menu_nice.step + " - " + s);
	if(aktiv[thismenuNum] && thismenuNum != Menu_nice.aktmenuNum && aktheight[thismenuNum] > 0)
		aktiv[thismenuNum] = setTimeout("Set_Hide_Height('" + thismenuNum + "')", Menu_nice.CDTime);
	else if(aktiv[thismenuNum])clearTimeout(aktiv[thismenuNum]);
	// alert(thismenuNum + ' - ' + aktheight[thismenuNum]);
}
function Hide_All(node, event){
	// alert($(node.id).style.height + ' - left: ' + $(node.id).style.left );
	// alert(' - x: ' + Event.pointerX(event) + ' - y: ' + Event.pointerY(event));
	// if(Position.within(node.id, Event.pointerX(event), Event.pointerY(event))){
	var body_dimensions = $('body').getDimensions();  
	BodyWidth = body_dimensions.width;  
	
	border = 10;
	comulativeLeft = 0;
	AllLeft = 0;
	AllTop = 24;
	absLeft = 55+parseInt((BodyWidth-970)/2);
	aktNumber = parseInt(node.id.substring(1));
	go = true;
	for(i=0;i<counterID;i++){
		AllLeft = parseInt($("menu" + i).getWidth());
		// alert(i + " - " + aktNumber);
		if(i == aktNumber){
			mouseX = Event.pointerX(event);
			mouseY = Event.pointerY(event);
			Top = AllTop+border;
			Bottom = Top+MenuHeight[aktNumber]-2*border;
			Left = parseInt(comulativeLeft+absLeft)+border;
			Right = Left+parseInt($("d" + i).getWidth())-2*border;
			
			// alert("top: " + Top + " - Bottom: " + Bottom + " - Left: " + Left + " - Right: " + Right + " - mouseX: " + mouseX + " - mouseY: " + mouseY);
			if(mouseX > Right || Left > mouseX || mouseY > Bottom || Top > mouseY){
				go = true;
				if(aktiv[i])clearTimeout(aktiv[i]);
				// alert(go);
			}
			else{
				go = false;
				if(aktiv[i])clearTimeout(aktiv[i]);
				Set_Show_This(i);
			}
		}
		comulativeLeft += AllLeft+20;	// van 20px jobb margo
		if(go) aktiv[i] = setTimeout("Set_Hide_Height_All('" + i + "')", Menu_nice.CDTime);
	}
	// }
}
function Set_Hide_Height_All(thismenuNum){
	
	aktheight[thismenuNum] -= Menu_nice.step;
	// aktheight[thismenuNum] -= 50;
	if(aktheight[thismenuNum] < Menu_nice.step) aktheight[thismenuNum] = 0;
	$("d" + thismenuNum).style.height = aktheight[thismenuNum] + 'px';
	// alert($("d" + thismenuNum).style.height + ' - ' + thismenuNum + " - " + Menu_nice.step + " - " + s);
	if(aktiv[thismenuNum] && aktheight[thismenuNum] > 0)
		aktiv[thismenuNum] = setTimeout("Set_Hide_Height_All('" + thismenuNum + "')", Menu_nice.CDTime);
	// alert(thismenuNum + ' - ' + aktheight[thismenuNum]);
}
function Set_Show_This(thismenuNum){
	
	if(aktiv[thismenuNum] && aktheight[thismenuNum] < MenuHeight[thismenuNum]){
		aktheight[thismenuNum] += Menu_nice.step;
		$("d" + thismenuNum).style.height = aktheight[thismenuNum] + 'px';
		aktiv[thismenuNum] = setTimeout("Set_Show_This('" + thismenuNum + "')", Menu_nice.CDTime);
	}
	else if(aktiv[thismenuNum])clearTimeout(aktiv[thismenuNum]);
	// alert(thismenuNum + ' - ' + aktheight[thismenuNum]);
}






// nem haszanlom
function counter_Up_All(aktmenu, aktmenuNum, step, CDTime){
	aktheight[aktmenuNum] -= step;
	aktmenu.style.height = aktheight[aktmenuNum] + 'px';
	if(aktheight[aktmenuNum] > 0){
		// alert("counter_Up_All('" + aktmenu + "', " + aktmenuNum + ", " + step + ", " + CDTime + ")");
		// aktiv[this.aktmenuNum] = setTimeout(this.counter_Up.bind(this), this.CDTime);
		aktiv[aktmenuNum] = setTimeout("counter_Up_All('" + aktmenu + "', " + aktmenuNum + ", " + step + ", " + CDTime + ")", CDTime);
		// alert(aktheight[aktmenuNum]);
	}
	else{
		clearTimeout(aktiv[aktmenuNum]);
		aktmenu.style.visibility = 'hidden';
	}
}


// Event.observe(window, 'load', function(){new Menu_nice();})

// var Menu = function () {
	// Event.observe(window, 'load', function(){Menu.init();})
	// return {
		// time: false,
		// over: false,
		// show:function(s){
			// if(this.time && this.over != s){
				// this.hide(this.over);
				// clearTimeout(this.time);
			// } else if (this.over == s){
				// clearTimeout(this.time);
			// }
			// s.down('a').addClassName('over');
			// try{
				// s.down('ul').style.display = 'block';
			// }catch(e){return false;}
		// },
		// hide:function(s){
			// s.down('a').removeClassName('over');
			// try{
				// s.down('ul').hide();
			// }catch(e){return false;}			
		// },
		// hideTimeing:function(s){
			// this.over = s;
			// this.time = Object.later(this,500,'hide',s);
		// },
		// init:function(){
			// $$('ul#mainMenu > li').each(function(s){	// -> all ul#mainMenu elements with child li
				// Event.observe(s, 'mouseover', function(){Menu.show(s); });				
				// Event.observe(s, 'mouseout', function(){ Menu.hideTimeing(s); });				
			// });
		// }
	// };
// }();