YAHOO.namespace('YAHOO.preloaded');
YAHOO.preloaded.slider = function() {
	var autoPlay = true;
	var current = 0;
	var jumpTo = 0;
	var totalFeatures = features.length;
	var animating = false;
	
	function createNav() {
		// create the fader nav
		var navHTML = '';
		var navigation = document.createElement('div');
		navigation.id = 'sliderNav';
		navigation.className = 'pagination';
		navHTML += '<span class="prev"><a href="#previous">previous</a></span><span class="next"><a href="#">next</a></span>';
		navHTML += '<span class="curr navlink">1</span>'
		for (var i = 1; i < totalFeatures; i++) {
			navHTML += '<span class="navlink"><a href="#feature">';
			navHTML += i+1;
			navHTML += '</a></span>';
		}
		navigation.innerHTML = navHTML;
		navigation = document.getElementById('slider').appendChild(navigation);
		
		var navLinks = navigation.getElementsByTagName('a');
		YAHOO.util.Event.on(navLinks, 'click', clickHandler, this, true);
	}
	
	function clickHandler(e) {
		YAHOO.util.Event.preventDefault(e);
		
		clearTimeout(YAHOO.preloaded.slider.timeout);
		
		if (animating == false) {
			
			animating = true;
		
			// What was clicked
			var clicked = YAHOO.util.Event.getTarget(e);

			if (clicked.parentNode.className == 'prev') {
				jumpTo = current;
				if (jumpTo == 0) {
					jumpTo = totalFeatures;
				}
			} else if (clicked.parentNode.className == 'next') {
				jumpTo = current + 2;
				if (jumpTo > totalFeatures) {
					jumpTo = 1;
				}
			} else {
				jumpTo = clicked.innerHTML;
			}
		
			// Stop the autoplay
			if (autoPlay == true) {
				autoPlay = false;
				goSlide(jumpTo);
			} else {
				goSlide(jumpTo);
			}
		
		}
		
	}
	
	function goSlide(jumpTo) {

		if (autoPlay == false) {
			current = jumpTo - 2;
		}
		
		// Update navigation links
		var navigation = document.getElementById('sliderNav');
		var navLinks = YAHOO.util.Dom.getElementsByClassName('navlink', 'span', navigation);
		var currLink = YAHOO.util.Dom.getElementsByClassName('curr', 'span', navigation)[0];
		
		var pagenum = parseInt(current);
		if (pagenum == 0) {
			pagenum = navLinks.length;
		}
		
		currLink.innerHTML = '<a href="#feature">'+currLink.innerHTML+'</a>';
	
		var next = current+1;
		if (next == totalFeatures) {
			next = 0;
		}
		
		YAHOO.util.Dom.removeClass(navLinks, 'curr');
		YAHOO.util.Dom.addClass(navLinks[next], 'curr');
		navLinks[next].innerHTML = current + 2;
		
		var navLinks = navigation.getElementsByTagName('a');
		YAHOO.util.Event.on(currLink.getElementsByTagName('a')[0], 'click', clickHandler, this, true);

		// Get the shown elements
		var sliders = [];
		sliders[0] = document.getElementById('mainimage');
		sliders[1] = document.getElementById('maincontent');
		
		// Create the next image
		var nextImage = document.createElement('div');
		nextImage.id = 'nextimage';
		nextImage.innerHTML = '<img src="/site_media/'+features[next].image+'">';
		
		// Create the next content
		var nextContent = document.createElement('div');
		nextContent.id = 'nextcontent';
		YAHOO.util.Dom.addClass(nextContent, 'inner-content');

		var url = '<a href="'+features[next].url+'">Read More</a>';		
		var content_type = features[next].content_type;

		if (content_type == 'blog post') {
			content_type = 'NEWS';
		} else if  (content_type == 'web link') {
			url = '<a href="'+features[next].url+'" target="_blank">Visit Site</a>';
		}
		
		nextContent.innerHTML = '<div class="info"><strong>Feature</strong> '+content_type+'</div><h2>'+features[next].title+'</h2><div id="feature-post"><p>'+features[next].content+'</p>'+url+'</div>';
		nextContent.style.width = '420px';
		
		// Add the next elements to the page	
		sliders[2] = sliders[0].parentNode.appendChild(nextImage);
		sliders[3] = sliders[1].parentNode.appendChild(nextContent);

		sliders[1].style.zIndex = 50;
		sliders[3].style.zIndex = 100;
		
		sliders[3].style.height = '320px';
		sliders[3].style.backgroundColor = 'white';
				
		current = current+1;

		// Setup our animation
		var imgAttributes = {
			points: { by: [-490, 0] }
		};
		
		var cntAttributes = {
			points: { by: [-420, 0] }
		};
		
		var imgAnim = new YAHOO.util.Motion(sliders[0], imgAttributes, 1, YAHOO.util.Easing.easeOutStrong);
		var imbAnim = new YAHOO.util.Motion(sliders[2], imgAttributes, 1, YAHOO.util.Easing.easeOutStrong);
		var cntAnim = new YAHOO.util.Motion(sliders[1], cntAttributes, 1, YAHOO.util.Easing.easeOutStrong);
		var cnbAnim = new YAHOO.util.Motion(sliders[3], cntAttributes, 1, YAHOO.util.Easing.easeOutStrong);
		
		// Clean up functions
		imbAnim.onComplete.subscribe(function(){
			
			animating = false;
			
			// Get all elements
			var sliders = [];
			sliders[0] = document.getElementById('mainimage');
			sliders[1] = document.getElementById('maincontent');
			sliders[2] = document.getElementById('nextimage');
			sliders[3] = document.getElementById('nextcontent');
			
			// Make them main
			sliders[2].id = 'mainimage';
			sliders[3].id = 'maincontent';
			sliders[2].style.left = '0px';
			sliders[3].style.left = '0px';

			// Remove those out of view
			sliders[0].parentNode.removeChild(sliders[0]);
			sliders[1].parentNode.removeChild(sliders[1]);
			
			// Reposition them in our thoughts
			sliders[0] = sliders[2];
			sliders[1] = sliders[3];
			
			// Reiterate for IE bug
			sliders[0].id = 'mainimage';
			sliders[1].id = 'maincontent';
			sliders[0].style.left = '0px';
			sliders[1].style.left = '0px';
			
			// Check we should still be playing
			if (autoPlay) {
				// Move to the next feature
				if (current == totalFeatures-1) {
					current = -1;
				}
				// Get ready to do it again
				YAHOO.preloaded.slider.timeout = setTimeout(goSlide, 5000);
			} else {
				clearTimeout(YAHOO.preloaded.slider.timeout);
				animating = false;
			}
			
		});
		
		// Run the animation
		animating = true;
		cntAnim.animate();
		cnbAnim.animate();
		imgAnim.animate();
		imbAnim.animate();
		
	}
	
	var pub = {
		init : function(){
			if (features.length > 1) {
				createNav();
				YAHOO.preloaded.slider.timeout = setTimeout(goSlide, 5000);
				var imageloader = document.getElementById('imageloader');
				imageloaderHTML = ''
				for (var i = 0; i < features.length; i++) {
					imageloaderHTML = imageloaderHTML + '<img src="/site_media/'+features[i].image+'">';
				}
				imageloader.innerHTML = imageloaderHTML;
				console.log(imageloaderHTML);
			}
		}
	}
	return pub;
}();
if (features) {
	YAHOO.util.Event.onAvailable('slider', YAHOO.preloaded.slider.init, this);
}