/*
 * SlideShow
 */
var SlideShow = {
	slideShows: {},
	slideDelay: 4,
	fadeDur: 2,
	easing: "easeinoutquad",
	create: function(slideBase, width, height) {
		SlideShow.slideShows[slideBase] = SlideShow.slideShows[slideBase]||{};
		var thisShow = SlideShow.slideShows[slideBase];
		thisShow.showSlide = SlideShow.showSlide;
		thisShow.pause = SlideShow.pause;
		thisShow.resume = SlideShow.resume;
		thisShow.setControlView = SlideShow.setControlView;
		thisShow.container = document.getElementById(slideBase);
		thisShow.controlContainer = document.getElementById(slideBase+"Controller");
		thisShow.slides = [];
		thisShow.controls = [];
		for (var n=0; n<thisShow.container.getElementsByTagName("li").length; n++) {
			thisShow.slides[n] = thisShow.container.getElementsByTagName("li")[n].getElementsByTagName("div")[0];
			thisShow.controls[n] = thisShow.controlContainer.getElementsByTagName("a")[n];
		}
		SlideShow.setStyle(thisShow, width, height);
		for (var i=0, len=thisShow.slides.length; i<len; i++) {
			thisShow.slides[i].onmouseover = function(){thisShow.pause();};
			thisShow.slides[i].onmouseout = function(){thisShow.resume();};
			var control = thisShow.controls[i];
			control.onclick = function(val){return function() {thisShow.showSlide(val,0.4);return false;}}(i);
		}
		thisShow.currentSlide = 0;
		thisShow.frameTimer = setTimeout(function(){thisShow.showSlide(1)},SlideShow.slideDelay*1000);
	},
	showSlide: function(targetSlide,overRideSpeed) {
		if (targetSlide == this.currentSlide) return false;
		clearTimeout(this.frameTimer);
		clearTimeout(this.tweenOutTimer);
		this.frameTimer = setTimeout(function(){_this.showSlide(targetSlide)},SlideShow.slideDelay*1000);
		var _this = this;
		_this.targetHide = this.currentSlide;
		if (targetSlide>this.currentSlide) {
			if (SlideShow.containsFlash(this.slides[targetSlide])) this.slides[targetSlide].style.height = 344+"px";
			this.slides[targetSlide].style.display = "block";
			this.tweenIn = Tween.create(this.slides[targetSlide].style, "opacity", '', 0, 1, (overRideSpeed||SlideShow.fadeDur), 60, SlideShow.easing, 0, 60, 500);
			this.tweenOut = Tween.create(this.slides[this.currentSlide].style, "opacity", '', 1, 0, (overRideSpeed||SlideShow.fadeDur), 60, SlideShow.easing, (overRideSpeed||SlideShow.fadeDur)+0.2, 60, 500);
			this.tweenOutTimer = setTimeout(function(){if (SlideShow.containsFlash(_this.slides[_this.targetHide])) _this.slides[_this.targetHide].style.height = 0+"px"; else _this.slides[_this.targetHide].style.display = "none";},(overRideSpeed||SlideShow.fadeDur)*1000);
		} else {
			if (SlideShow.containsFlash(this.slides[targetSlide])) this.slides[targetSlide].style.height = 344+"px";
			else this.slides[targetSlide].style.display = "block";
			this.tweenIn = Tween.create(this.slides[targetSlide].style, "opacity", '', 1, 1, (overRideSpeed||SlideShow.fadeDur), 60, SlideShow.easing, 0, 60, 500);
			this.tweenOut = Tween.create(this.slides[this.currentSlide].style, "opacity", '', 1, 0, (overRideSpeed||SlideShow.fadeDur), 60, SlideShow.easing, 0, 60, 500);
			this.tweenOutTimer = setTimeout(function(){if (SlideShow.containsFlash(_this.slides[_this.targetHide])) _this.slides[_this.targetHide].style.height = 0+"px"; else _this.slides[_this.targetHide].style.display = "none";},(overRideSpeed||SlideShow.fadeDur)*1000);
		}
		this.controls[targetSlide].className = "active";
		this.controls[this.currentSlide].className = "";
		this.currentSlide = targetSlide;
		targetSlide = (this.currentSlide+1 == this.slides.length)?0:targetSlide+1;
		this.setControlView(targetSlide);
	},
	setControlView: function(targetSlide) {
		
	},
	containsFlash: function(targetNode) {
		var divs = targetNode.getElementsByTagName('div');
		for (var i=0; i<divs.length; i++) {
			if (divs[i].className.indexOf("flashContainer") != -1) return true;
		}
		return false;
	},
	setStyle: function(sShow, width, height) {
		sShow.container.style.listStyle = "none";
		sShow.container.style.position = "relative";
		sShow.container.style.margin = 0+"px";
		sShow.container.style.padding = 0+"px";
		sShow.container.style.width = width+"px";
		sShow.container.style.height = height+"px";
		sShow.container.style.display = "block";
		for (var i=0; i<sShow.slides.length; i++) {
			sShow.slides[i].style.width = width+"px";
			sShow.slides[i].style.height = height+"px";
			sShow.slides[i].style.margin = 0+"px";
			sShow.slides[i].style.padding = 0+"px";
			sShow.slides[i].style.left = 0+"px";
		}
		for (var i=1; i<sShow.slides.length; i++) {
			if (sShow.slides[i].style.opacity != undefined) sShow.slides[i].style.opacity=0;
			else sShow.slides[i].style.filter = "alpha(opacity = 0)";
			sShow.slides[i].parentNode.style.position = "absolute";
			sShow.slides[i].style.position = "absolute";
			sShow.slides[i].parentNode.style.top = 0+"px";
			sShow.slides[i].style.top = 0+"px";
			sShow.slides[i].style.display = "none";
		}
		sShow.controls[0].className = "active";
	},
	pause: function() {
		clearTimeout(this.frameTimer);
	},
	resume: function() {
		var _this = this;
		var targetSlide = (this.currentSlide+1 == this.slides.length)?0:this.currentSlide+1;
		this.frameTimer = setTimeout(function(){_this.showSlide(targetSlide)},SlideShow.slideDelay/2*1000);
	}
}

