var slider = new Class({
	Implements: [Events,Options],
	
	options: {
		interval: 5000,
		speed: 3000
	},
	
	initialize: function(list,options){
		this.setOptions(options);
		this.list = list;
		this.busy = false;
		this.running = false;
		this.elements = this.list.getElements("li");
		$("slider").setStyle("width",980-$("slider").getPosition($("menu")).x-1); // -1 ivm Firefox Mac
		if(this.elements.length>0){
			this.setMouseEvents();
			this.schedule();
		}
	},
	
	schedule: function(){		
		this.elSched = this.run.periodical(this.options.interval,this);
		this.running = true;
	},
	
	setMouseEvents: function(){
		var menuSelected = $("menu").getElement("a.selected");
		var subMenuSelected = null;
		if(menuSelected!=null){
			if(menuSelected.get("id")!=null){
				if($("submenu_"+menuSelected.get("id").split("_")[1])!=null){
					var subMenuSelected = $("submenu_"+menuSelected.get("id").split("_")[1]);
				}	
			}
		}	
		var subSelected = $("submenuContainer").getElement("a.selected");
		$$("#menu span").each(function(span){
			span.addEvents({
				"mouseenter":function(e){
					e.stop();
					if(this.busy == false){
						if(menuSelected!=null)
							menuSelected.removeClass("selected");
					}
				},
				"mouseleave":function(e){
					e.stop();
					if(menuSelected!=null)
						menuSelected.addClass("selected");					
				}
			});
		});
		$$("#menu a").each(function(menu){
			if ((menu.get("id")!="home") && (menu.get("id") != null)) {
				var submenu = $("submenu_"+menu.get("id").split("_")[1]);						
				menu.addEvents({
					"mouseenter":function(e){
						e.stop();								
						if(this.busy == false){
							$$("#menu a.selected").removeClass("selected");	
							menu.addClass("hover");
							showSubmenu(submenu,menu);						
							this.pause();
						}
					}.bind(this),
					"mouseleave":function(e){
						e.stop();
						hideSubmenu(submenu);
						menu.removeClass("hover");
						this.resume();
						if(menuSelected!=null)
							menuSelected.addClass("selected");										
					}.bind(this)
				});
			}
		}.bind(this));	
		$$(".submenu a").each(function(submenu){
			var menu = $("menu_"+submenu.getParent("ul").get("id").split("_")[1]);										
			submenu.addEvents({
				"mouseenter":function(e){
					e.stop();					
					menu.addClass("hover");
					submenu.addClass("hover");						
					if(menuSelected!=null)
						menuSelected.removeClass("selected");
					showSubmenu(submenu.getParent("ul"),menu);	
					this.pause();
				}.bind(this),
				"mouseleave":function(e){
					e.stop();
					menu.removeClass("hover");	
					submenu.removeClass("hover");		
					hideSubmenu(submenu.getParent("ul"));
					this.resume();
					if(menuSelected!=null)
						menuSelected.addClass("selected");					
				}.bind(this)
			});
		}.bind(this));
		$$(".submenu span").each(function(span){
			var menu = $("menu_"+span.getParent("ul").get("id").split("_")[1]);										
			span.addEvents({
				"mouseenter":function(e){
					e.stop();
					menu.addClass("hover");
					if(menuSelected!=null)
						menuSelected.removeClass("selected");
					showSubmenu(span.getParent("ul"),menu);
					this.pause();
				}.bind(this),
				"mouseleave":function(e){
					e.stop();
					menu.removeClass("hover");	
					hideSubmenu(span.getParent("ul"));
					this.resume();
					if(menuSelected!=null)
						menuSelected.addClass("selected");					
				}.bind(this)
			});
		}.bind(this));
	},
	
	pause: function(){		
		$clear(this.elSched);
		this.running=false;
	},
	
	resume: function(){		
		if(this.running==false)
			this.schedule();		
	},
	
	run: function(){
		var a = this.list.getElement("li");		
		var width = a.getCoordinates().width;
		
		new Fx.Tween(a,{			
			duration:this.options.speed,
			onStart:function(){
				this.busy = true;
			}.bind(this),
			onComplete:function(){
				a.dispose().inject(this.list).setStyle("margin-left",0);
				this.busy = false;
			}.bind(this)
		}).start("margin-left",-(width+12));				
		
	}
});
