// 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)
					{
						item.addEvent("mouseover", function(){ this.moveBg(item); }.bind(this));
						item.addEvent("mouseout", function(){ this.timer = setTimeout("agMenu.moveBg(agMenu.current)", 2000); }.bind(this));
						item.addEvent("click", function(event){ this.clickItem(event, item); }.bind(this));
					}.bind(this)
				);

				this.back = new Element("li").addClass("hilite").adopt(new Element("div").addClass("left")).injectInside(this.menu);
				this.back.fx = this.back.effects(this.options);

				this.univers = new Element("li").addClass("univers").adopt(new Element("div").addClass("left")).injectInside(this.menu);
				this.univers.fx = this.back.effects(this.options);

				if (this.current)
				{
					this.setCurrent(this.current);
				}
			},

		setCurrent:
			function(el, effect)
			{
				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);
			},

		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 = "";

// loader
window.addEvent("domready",
	function()
	{
		agMenu = new SlideList(
			$E("ul", "fancymenu"),
			{
				transition: Fx.Transitions.backOut, duration: 750
			}
		);
	}
);

