// YUI Slideshow v0.4 by Josh

(function(){

function initSlides(){

	/* CONFIG */
	
	// Configure each slideshow:
	//
	// NOTE: Slideshow configuration options:
	//
	//       Option:     Type:     Description:                    Required / Default:
	//       -------     -----     ------------                    -------------------
	//       id          string    ID of slide image.              Required / (no default)
	//       slides      array     Array of slides.                Required / (no default)
	//       fade        number    Fade speed in seconds.          Optional / 0.5
	//       autoplay    boolean   Enable autoplay?                Optional / true
	//       speed       number    Autoplay speed in milliseconds. Optional / 5000
	//       user        boolean   Enable user control?            Optional / false
	//       back        string    ID of back button.              Optional / (no default)
	//       next        string    ID of next button.              Optional / (no default)
	//       pause       string    ID of pause button.             Optional / (no default)
	//       play        string    ID of play button.              Optional / (no default)
	//
	// NOTE: Individual slide configuration options:
	//
	//       Option:     Type:     Description:                    Required / Default:
	//       -------     -----     ------------                    -------------------
	//       src         string    SRC of the slide.               Required / (no default)
	//       alt         string    ALT text of the slide.          Optional / ""
	//       href        string    HREF of the slide.              Optional / "#"
	//       exp         string    Expiration date of slide.       Optional / (no default)
	//
	//       NOTE: Format for expiration dates:
	//             exp: "2009.12.15" // Slide expires on December 15th, 2009
		
	// Example 1: "speed" set to 3 seconds. All user controls enabled. "href" and "alt" set for each slide.
	var oExample1 = new slideshow({
		id: "exampleImage2",
		speed: 3000,
		user: "true",
		back: "backButton",
		next: "nextButton",
		pause: "pauseButton",
		play: "playButton",
		slides: [
			{src: "images/ad2.jpg", href: "/comingsoon.html", alt: "Shutterstock Images"},
			{src: "images/ad1.jpg", href: "/comingsoon.html", alt: "Google News"}
		]
	});
	
	// Initialize the slideshows:
	oExample1.init();
	
	/* END CONFIG */

}

function slideshow(config){
	this.id = config["id"];
	this.slides = config["slides"];
	this.fade = (typeof(config["fade"]) != "undefined") ? config["fade"] : 0.5;
	this.autoplay = (typeof(config["autoplay"]) != "undefined") ? config["autoplay"] : true;
	this.speed = (typeof(config["speed"]) != "undefined") ? config["speed"] : 5000;
	this.user = (typeof(config["user"]) != "undefined") ? config["user"] : false;
	this.back = (typeof(config["back"]) != "undefined") ? config["back"] : false;
	this.next = (typeof(config["next"]) != "undefined") ? config["next"] : false;
	this.pause = (typeof(config["pause"]) != "undefined") ? config["pause"] : false;
	this.play = (typeof(config["play"]) != "undefined") ? config["play"] : false;
	var oObj = this;
	this.init = function(){
		oObj.oSlideInterval = false;
		oObj.fadeIn = function(){
			var oFadeIn = new YAHOO.util.Anim(oObj.oSlideImage, {
					opacity: { to: 1 }
				}, oObj.fade, YAHOO.util.Easing.easeNone);
			oFadeIn.animate();
		}
		oObj.slideChange = function(){
			oObj.oSlideImage.src = oObj.oSlides[oObj.oCurrentSlide]["src"];
			if(typeof(oObj.oSlideLink) != "undefined"){
				if(typeof(oObj.oSlides[oObj.oCurrentSlide]["href"]) != "undefined"){
					oObj.oSlideLink.href = oObj.oSlides[oObj.oCurrentSlide]["href"];
				} else {
					oObj.oSlideLink.href = "#";
				}
			}
			if(typeof(oObj.oSlides[oObj.oCurrentSlide]["alt"]) != "undefined"){
				oObj.oSlideImage.alt = oObj.oSlides[oObj.oCurrentSlide]["alt"];
			} else {
				oObj.oSlideImage.alt = "";
			}
		}
		oObj.nextSlide = function(){
			if(oObj.oCurrentSlide < oObj.oTotalSlides){
				oObj.oCurrentSlide++;
			} else {
				oObj.oCurrentSlide = 0;
			}
			var oFadeOut = new YAHOO.util.Anim(oObj.oSlideImage, {
					opacity: { to: 0 }
				}, oObj.fade, YAHOO.util.Easing.easeNone);
			oFadeOut.animate();
			oFadeOut.onComplete.subscribe(oObj.slideChange);
		}
		oObj.prevSlide = function(){
			if(oObj.oCurrentSlide > 0){
				oObj.oCurrentSlide--;
			} else {
				oObj.oCurrentSlide = oObj.oTotalSlides;
			}
			var oFadeOut = new YAHOO.util.Anim(oObj.oSlideImage, {
					opacity: { to: 0 }
				}, oObj.fade, YAHOO.util.Easing.easeNone);
			oFadeOut.animate();
			oFadeOut.onComplete.subscribe(oObj.slideChange);
		}
		oObj.oCurrentSlide = -1;
		oObj.oSlides = new Array();
		for(var i=0; i<oObj.slides.length; i++){
			var oPush = true;
			if(typeof(oObj.slides[i]["exp"]) != "undefined"){
				var oCurrentDate = new Date();
				var oUserDate = oObj.slides[i]["exp"].split(".");
				var oSlideDate = new Date();
				oSlideDate.setFullYear(parseInt(oUserDate[0]),(parseInt(oUserDate[1]) - 1),parseInt(oUserDate[2]));
				if(oCurrentDate > oSlideDate){
					oPush = false;
				}
			}
			if(oPush == true){
				oObj.oSlides.push(oObj.slides[i]);
			}
		}
		oObj.oTotalSlides = oObj.oSlides.length - 1;
		oObj.oSlideImage = document.getElementById(oObj.id);
		if(oObj.oSlideImage.parentNode.nodeName.toUpperCase() == "A"){
			oObj.oSlideLink = oObj.oSlideImage.parentNode;
		}
		YAHOO.util.Event.addListener(oObj.oSlideImage, "load", oObj.fadeIn);
		if(oObj.autoplay == true){
			oObj.oSlideInterval = setInterval(oObj.nextSlide, oObj.speed);
		}
		if(oObj.user == true){
			if(oObj.back != false){
				var oBack = document.getElementById(oObj.back);
				YAHOO.util.Event.addListener(oBack, "click", function(e){
						YAHOO.util.Event.preventDefault(e);
						YAHOO.util.Event.stopPropagation(e);
						var oTarget = YAHOO.util.Event.getTarget(e);
						clearInterval(oObj.oSlideInterval);
						YAHOO.util.Dom.setStyle(oPause, "display", "none");
						YAHOO.util.Dom.setStyle(oPlay, "display", "block");
						oObj.prevSlide();
					});
			}
			if(oObj.next != false){
				var oNext = document.getElementById(oObj.next);
				YAHOO.util.Event.addListener(oNext, "click", function(e){
						YAHOO.util.Event.preventDefault(e);
						YAHOO.util.Event.stopPropagation(e);
						var oTarget = YAHOO.util.Event.getTarget(e);
						clearInterval(oObj.oSlideInterval);
						YAHOO.util.Dom.setStyle(oPause, "display", "none");
						YAHOO.util.Dom.setStyle(oPlay, "display", "block");
						oObj.nextSlide();
					});
			}
			if(oObj.pause != false){
				var oPause = document.getElementById(oObj.pause);
				YAHOO.util.Event.addListener(oPause, "click", function(e){
						YAHOO.util.Event.preventDefault(e);
						YAHOO.util.Event.stopPropagation(e);
						var oTarget = YAHOO.util.Event.getTarget(e);
						clearInterval(oObj.oSlideInterval);
						YAHOO.util.Dom.setStyle(oPause, "display", "none");
						YAHOO.util.Dom.setStyle(oPlay, "display", "block");
					});
			}
			if(oObj.play != false){
				var oPlay = document.getElementById(oObj.play);
				YAHOO.util.Event.addListener(oPlay, "click", function(e){
						YAHOO.util.Event.preventDefault(e);
						YAHOO.util.Event.stopPropagation(e);
						oObj.nextSlide();
						oObj.oSlideInterval = setInterval(oObj.nextSlide, oObj.speed);
						YAHOO.util.Dom.setStyle(oPlay, "display", "none");
						YAHOO.util.Dom.setStyle(oPause, "display", "block");
					});
			}
		}
	}
}

YAHOO.util.Event.onDOMReady(initSlides);

})();