// JavaScript Document
var SlideList =
	new Class(
	{
		initialize:
			function(menu, options)
			{
				this.setOptions(this.getOptions(), options);
				
				this.menu = $(menu);
				this.current = this.menu.getElement("li.current");
				
				this.menu.getElements("li").each(
					function(item)
					{	
						var children = item.getChildren();
						if (children[0].getProperty('id') != 'menu-international_link')
						{
							item.addEvent("mouseover", function(){ this.moveBg(item); }.bind(this));
							item.addEvent("mouseout", function(){ this.timer = setTimeout("agMenu.moveBg(agMenu.current)", 0); }.bind(this));
							item.addEvent("click", function(event){ this.clickItem(event, item); }.bind(this));
						}
						else
						{
							item.addEvent("mouseover", function(){ this.moveBg(item); }.bind(this));
							item.addEvent("click", function(event){ this.showList(item); }.bind(this));
						}
					}.bind(this)
				);

				this.back = this.menu.getElement("li.hilite");
				this.back.fx = this.back.effects(this.options);

				this.univers = this.menu.getElement("li.univers");
				this.univers.fx = this.back.effects(this.options);

				if (this.current)
				{
					this.setCurrent(this.current);
				}
				
			},

		setCurrent:
			function(el, effect)
			{
				//console.log(el.offsetLeft + " " + el.offsetWidth);
				this.back.setStyles({ left : (el.offsetLeft)+'px', width : (el.offsetWidth) + "px" });
				(effect) ? this.back.effect("opacity").set(0).start(1) : this.back.setOpacity(1);

				this.univers.setStyles({ left: (el.offsetLeft)+'px', width : (el.offsetWidth) + "px" });
				(effect) ? this.univers.effect("opacity").set(0).start(1) : this.univers.setOpacity(1);

				this.current = el;
			},

		getOptions:
			function()
			{ return {transition: Fx.Transitions.sineInOut,duration: 500, wait: false,onClick: Class.empty}; },

		clickItem:
			function(event, item)
			{
				if (!this.current)
				{
					this.setCurrent(item, true);
				}

				this.current = item;
				this.options.onClick(new Event(event), item);
			},

		showList:
			function(to)
			{
				var divheight	 = $('sousmenu').getStyle("height");
				var global_width = $('global').getStyle("width").toInt();
				var win 		 = {'x': window.getWidth(), 'y': window.getHeight()};
				var scroll 		 = {'x': window.getScrollLeft(), 'y': window.getScrollTop()};
				//var pos 		 = to.getCoordinates();
				var posleft		 = to.getLeft();
				var postop		 = to.getTop();
				//var toppos 		 = (pos.top);
				var width 		 = to.getStyle("width").toInt();
				var height 		 = to.getStyle("height").toInt();
				var divlenght 	 = (height * 4.1);
				
				if (win.x > global_width)
				{
					var variance = win.x - global_width;
					//var leftpos = pos.left - (variance / 2);
					var leftpos = posleft - (variance / 2);
				}
				else 
				{
					//var leftpos = pos.left;
					var leftpos = posleft;
				}
				
				var div = $('sousmenu').setStyles({
					position: 'absolute',
					display:'block',
					'left': leftpos + 'px',
					'top': (height + 5) + 'px',
					overflow: 'hidden'
				});
				
				new Fx.Style(div, 'height', {duration: 0} ).start(divlenght);
			},
		
		moveBg:
			function(to)
			{
				if (!this.current)
				{
					return;
				}

				if (this.timer)
				{
					clearTimeout(this.timer);
				}

				this.back.fx.custom({ left : [this.back.offsetLeft, to.offsetLeft], width : [this.back.offsetWidth, to.offsetWidth] });
				// this.timer = setTimeout("agMenu.moveBg(agMenu.current)", 2000);

				if (this.fxMenu) {
					this.fxMenu.stop();
				}

				if (this.fxMenu && this.fxMenu.element != $E('a', this.current) && this.fxMenu.element != $E('a', to))
				{
					this.fxMenu.element.setStyle('color', '#000000');
				}

				this.fxMenu = new Fx.Style($E('a', to), 'color').start('#FFFFFF');
			}
	});

SlideList.implement(new Options);

// globals
agMenu = "";

// tools
function closeList()
{	
	var sm = $('sousmenu');
	if (sm && sm.getStyle("display") == "block" && sm.getStyle("height").toInt() > 0)
	{
		new Fx.Style(sm, 'height', {duration: 1} ).start(0);
	}
};

document.addEvent("click",
	function()
	{
		closeList();
	}
);

// loader
window.addEvent("domready",
	function()
	{
		agMenu = new SlideList(
			$E("ul", "fancymenu"),
			{
				transition: Fx.Transitions.backOut, duration: 750
			}
		);
	}
);
