// YUI Slideshow v0.4.01 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
		
	var oCreations = new slideshow({
		id: "latestcreationsSlide",
		user: true,
		autoplay: true,
		back: "backButton",
		next: "nextButton",
		pause: "pauseButton",
		play: "playButton",
		slides: [
			
			{src: "http://www.autofusion.com/images/creations/sterlingmccall.jpg", href: "http://www.sterlingmccallnissan.com/", alt: "Sterling McCall Nissan"},
			{src: "http://www.autofusion.com/images/creations/bmwnewport.jpg", href: "http://www.bmwofnewport.com/", alt: "BMW of Newport"},
			{src: "http://www.autofusion.com/images/creations/hollywoodtoyota.jpg", href: "http://www.hollywoodtoyota.com/", alt: "Hollywood Toyota"},
			{src: "http://www.autofusion.com/images/creations/colley-ford.jpg", href: "http://www.colley-ford.com/", alt: "Colley Ford"}
		]
	});
	
	// Initialize the slideshows:
	oCreations.init();
	
	/* END CONFIG */

}

function slideshow(config){
	this.id = config["id"];
	if(!this.timers){
		this.timers = {};
	}
	this.timers[this.id] = null;
	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.timers[oObj.id] = 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.timers[oObj.id]);
						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.timers[oObj.id]);
						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.timers[oObj.id]);
						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.timers[oObj.id] = setInterval(oObj.nextSlide, oObj.speed);
						YAHOO.util.Dom.setStyle(oPlay, "display", "none");
						YAHOO.util.Dom.setStyle(oPause, "display", "block");
					});
			}
		}
	}
}

YAHOO.util.Event.onDOMReady(initSlides);

})();
	
// global short cuts
var YUI = {
	Y:	 YAHOO,
	D:	 YAHOO.util.Dom,
	E:	 YAHOO.util.Event,
	A:	 YAHOO.util.Anim,
	C:	 YAHOO.util.Connect,
	Dd:	 YAHOO.util.DD,
	El:	 YAHOO.util.Element,
	W:	 YAHOO.widget,
	Cfg: YAHOO.util.Config,
	Ce:  YAHOO.util.CustomEvent,
	Ea:  YAHOO.util.Easing,
	Ux:  {} // custom components
}; // end YUI

YUI.Ux.listener = function(){
	/* ---------------------------------------------------
	Sets up any existing component subscriptions as well as create any new custom events

	Paramters:
		class: @Function Required - The component you are adding events too
		listeners: @Object Required - Object which keys are the events. You can add new events in this manner. Parameters for each key in listeners are:
			callback: @Function Optional - Callback function to execute when the event is fired
			config: @Object Optional - Object passed along during the event fire
			fire: @Boolean Optional - Flag to tell the event to fire (or not) immediatly after subscribing
	----------------------------------------------------*/
	return {
		init: function(cmp, listeners){
			var callback, config, fire;
			for (var evt in listeners){
				callback = listeners[evt].callback || null;
				config = listeners[evt].config || null;
				fire = listeners[evt].fire || null;
				if (!cmp.hasEvent(evt)) cmp.createEvent(evt, config);
				if (callback) cmp.subscribe(evt, listeners[evt].callback);
				if (fire) cmp.fireEvent(evt, config);
			}
		} // end init
	}; // end interface
}(); // end YUI.Ux.listener

YUI.Ux.LavaLamp = function(el, config){
	/* ---------------------------------------------------
	Private Properties
	----------------------------------------------------*/
	var that = this;
	var defaults = {
		"setup": {
			callback: (function(){
				lamp = this.element.getElementsByTagName("ul")[0];
				YUI.D.addClass(lamp, "lavaLamp");
				back = document.createElement("li");
				left = document.createElement("span");
				YUI.D.addClass(back, "back");
				YUI.D.addClass(left, "left");
				back.appendChild(left);
				lamp.appendChild(back);
				current = YUI.D.getElementsByClassName("current", "li", lamp)[0] || YUI.D.getChildren(lamp)[0];
				for (var idx = 0; idx < this.getItems().length; idx++){
					this.getItems()[idx].subscribe("mouseover", menuItemOver);
					this.getItems()[idx].subscribe("mouseout", menuItemOut);
					this.getItems()[idx].subscribe("click", function(type, args){
						setCurrent(this.element);	
					});
				}
				setCurrent(current);
			}),
			fire: true
		}
	}; // end defaults
	var back, left, current;
	/* ---------------------------------------------------
	Private Methods
	----------------------------------------------------*/
	function menuItemOver(type, args){
		var backAnim = new YUI.A(back, {width: {to: this.element.offsetWidth}, left: {to: this.element.offsetLeft}}, that.animSpeed, that.animFx);
		backAnim.animate();
		backAnim.onComplete.subscribe(function(fn, obj, scope){
			setCurrent(scope);
		}, this.element);
	}; // end menuItemOver
	function menuItemOut(type, args){
		var backAnim = new YUI.A(back, {width: {to: config.currentPage.offsetWidth}, left: {to: config.currentPage.offsetLeft}}, that.animSpeed, that.animFx);
		backAnim.animate();
	}; // end menuItemOut
	function setCurrent(el){
		YUI.D.setStyle(back, "width", el.offsetWidth + "px");
		YUI.D.setStyle(back, "left", el.offsetLeft + "px");
		current = el;
	}; // end setCurrent
	/* ---------------------------------------------------
	Public Properties
	----------------------------------------------------*/
	this.listeners = config.listeners || {};
	/* ---------------------------------------------------
	Public Methods
	----------------------------------------------------*/
	/* ---------------------------------------------------
	Constructor Code
	----------------------------------------------------*/
	config.clicktohide = config.clicktohide || false;
	config.keepopen = config.keepopen || true;
	config.position = config.position || "static";
	
	YUI.Y.lang.augmentObject(this, config);
	YUI.Ux.LavaLamp.superclass.constructor.call(this, el, config);
	YUI.Y.lang.augmentObject(this.listeners, defaults);
	YUI.Ux.listener.init(this, this.listeners);
	var initAnim = new YUI.A(back, {width: {to: config.currentPage.offsetWidth}, left: {to: config.currentPage.offsetLeft}}, that.animSpeed, that.animFx);
	initAnim.animate();
}; // end YUI.Ux.PhotoViewer
YUI.Y.lang.extend(YUI.Ux.LavaLamp, YUI.W.Menu); // class extension



	YUI.E.onDOMReady((function(){
		var floatingline = new YUI.Ux.LavaLamp("navigation", {
			animFx: YUI.Ea.easeOut,
			animSpeed: 0.4,
			currentPage: YUI.D.getElementsByClassName("current-page", "li")[0]
		});
	}));
	
	
	
	
	// YUI :hover v0.1 by Josh

(function(){

/* CONFIG */

// List of classes:

var oClasses = [
		"afsubmit"
	];

/* END CONFIG */

function YUIHover(){
	for(var i=0; i<oClasses.length; i++){
		(function(){
			var oElements = YAHOO.util.Dom.getElementsByClassName(oClasses[i]);
			for(var j=0; j<oElements.length; j++){
				var oHoverClass = oClasses[i] + "_hover";
				var oActiveClass = oClasses[i] + "_active";
				oElements[j].onmouseover = function(){
					YAHOO.util.Dom.addClass(this, oHoverClass);
				}
				oElements[j].onmouseout = function(){
					YAHOO.util.Dom.removeClass(this, oHoverClass);
				}
				oElements[j].onmousedown = function(){
					YAHOO.util.Dom.addClass(this, oActiveClass);
				}
				oElements[j].onmouseup = function(){
					YAHOO.util.Dom.removeClass(this, oActiveClass);
				}
			}
		})();
	}
}

YAHOO.util.Event.onDOMReady(YUIHover);

})();
	
	
