$j(window).load(function(){
	var links     = $j('#spacesMenu a');
	var slides    = $j('#spaceSlides .slide');
	var spacesSlider = new SpacesSlider(links, slides);
});

/**************************************************************
// SpacesSlider // CLASS
// If you want this class to work properly, you need to have
// the same number of links and slides. And thy need to be in the same order.
**************************************************************/
function SpacesSlider(links, slides){ 

	var links  = links; 
	var slides = slides;
	var currentSlide = 0;
	var timer;
	var HIDE_CLASS = 'hide'; // css class to hide a slide
	var OVER_CLASS = 'jsOver'; // css class put on the link when activated
	var SLIDE_DURATION = 3 * 1000;
	
	if(links.length == slides.length){
		init();
	}
	
	/*-------------------------------------------------------------
	init // private 
	-------------------------------------------------------------*/
	function init(){
		for (var i=0; i<slides.length; i++) { 
			var slide = $j(slides[i]);
			if(!slide.hasClass(HIDE_CLASS)){
				currentSlide = i;
			}
		}
		for (var i=0; i<links.length; i++) { 
			var link = $j(links[i]);
			link.data('id', i);
			link.bind("mouseenter", function(e){
				var link = $j(this);
				overLink(link);
				return false;
			});
		}
		changeSlide(currentSlide);
	}
	
	/*-------------------------------------------------------------
	overLink // private 
	-------------------------------------------------------------*/	
	function overLink(link){
		var id = link.data('id');
		if(id == currentSlide)return; // if we are already on that slide, we don't do anything
		changeSlide(id, true);
	} 
	
	/*-------------------------------------------------------------
	changeSlide // private 
	-------------------------------------------------------------*/	
	function changeSlide(slideNum, over){
		if(slideNum == null){
			currentSlide = (currentSlide >= slides.length-1) ? 0 : currentSlide + 1; 	
		}else{
			currentSlide = slideNum;
		}
		
		resetAll();
		var slide = $j(slides[currentSlide]);
		slide.removeClass(HIDE_CLASS);
		slide.hide();
		slide.fadeIn(500);
		
		
		var link = $j(links[currentSlide]);
		link.addClass(OVER_CLASS);
		
		if(over !== true){
			timer = setTimeout(function(){
				changeSlide();
			}, SLIDE_DURATION);
		}
	}
	
	/*-------------------------------------------------------------
	resetAll // private 
	-------------------------------------------------------------*/	
	function resetAll(){
		
		// Clear timeout
		clearTimeout(timer);
		
		// Hide all slide
		for(var i=0; i<slides.length; i++) { 
			var slide = $j(slides[i]);
			if(!slide.hasClass(HIDE_CLASS))slide.addClass(HIDE_CLASS);
		}
		
		// Remove over state on all links
		for (var i=0; i<links.length; i++) { 
			var link = $j(links[i]);
			if(link.hasClass(OVER_CLASS))link.removeClass(OVER_CLASS);
		}
	} 	
}



