var MenuAnim = {
	move: 18,
	duration: 0.01,
	timers: new Array(),
	init: function () {
		$$('.menuAnimation').each(function(element)
			{
				element.observe('mouseover', MenuAnim.moveUp.bind(null, element.identify()));
				element.observe('mouseout', MenuAnim.moveDown.bind(null, element.identify()));
			}
		);
	},
	
	moveUp: function(id) 
	{
		if(!MenuAnim.timers[id])
		{
			MenuAnim.timers[id] = {'upAnimation': null, 'downAnimation': null};
		}
	
		if(MenuAnim.timers[id].downAnimation != null)
		{
			MenuAnim.timers[id].downAnimation.stop();
			MenuAnim.timers[id].downAnimation = null;
		}
		
		MenuAnim.timers[id].upAnimation = new PeriodicalExecuter(MenuAnim.moveUpAnimation.bind(MenuAnim, id), MenuAnim.duration);
	},
	
	moveDown: function(id) 
	{
		if(!MenuAnim.timers[id])
		{
			MenuAnim.timers[id] = {'upAnimation': null, 'downAnimation': null};
		}
	
		if(MenuAnim.timers[id].upAnimation != null)
		{
			MenuAnim.timers[id].upAnimation.stop();
			MenuAnim.timers[id].upAnimation = null;
		}
		
		MenuAnim.timers[id].downAnimation = new PeriodicalExecuter(MenuAnim.moveDownAnimation.bind(MenuAnim, id), MenuAnim.duration);
	},
	
	moveUpAnimation: function(id)
	{
		var bgPosition = $(id).getStyle('background-position');
		
		/* IE nepozna background-position */
		if(!bgPosition)
		{
			bgPosition = "0px 0px";
			if($(id).hasClassName('contact'))
			{
				bgPosition = "27px 0px";
			}
		}
		
		var match = bgPosition.match(/(\d+)px (-?\d+)px/i);
		var leftPosition = match[1];
		var topPosition = match[2];
		if(-topPosition == MenuAnim.move)
		{
			MenuAnim.timers[id].upAnimation.stop();
			MenuAnim.timers[id].upAnimation = null;
			return;
		}

		var newPosition = parseInt(leftPosition) + "px " + (parseInt(topPosition) - 1) + "px";
		$(id).setStyle({backgroundPosition: newPosition});
	},
	
	moveDownAnimation: function(id)
	{
		var bgPosition = $(id).getStyle('background-position');
		var match = bgPosition.match(/(\d+)px (-?\d+)px/i);
		var leftPosition = match[1];
		var topPosition = match[2];
		if(topPosition == 0)
		{
			MenuAnim.timers[id].downAnimation.stop();
			MenuAnim.timers[id].downAnimation = null;
			return;
		}

		var newPosition = parseInt(leftPosition) + "px " + (parseInt(topPosition) + 1) + "px";
		$(id).setStyle({backgroundPosition: newPosition});
	}
	
};

Event.observe(window, 'load', 
	function() { MenuAnim.init(); }
);