var Faq = {
	curr: null,
	init: function(wrappers, toggles) {
		this.wrappers = $$(wrappers);
		this.toggles = $$(toggles);		
		
		this.toggles.each(function(el, i) {
			el.addEvent("click", function() {
				this.show(i);
			}.bind(this));
		}, this);
		
		if (window.location.hash) {
			var start = window.location.hash;
			if (start.indexOf("#") != -1) start = start.replace("#", "");
			if (start <= this.toggles.length) this.show(start - 1);			
		}
		
	},
	
	show:function(index) {			
		if (this.curr !== null && this.curr !== index) {
			this.wrappers[this.curr].removeClass("active");			

		}
		var display = this.wrappers[index].hasClass("active");		
		this.wrappers[index][display ? "removeClass" : "addClass"]("active");
		
		this.curr = index;
	}
};

var SlideShow = new Class({
	Implements: [Events, Options],
	
	options: {
		
		slideSelector: ".slide",
		
		navClassName: "slideNav",
		navTagName: "div",
		navChildTagName: "img",
		navActiveClass: "active",
		
		tween: {
			duration: 500
		},
		
		autoRotate: true,
		rotateDuration: 8000,
		
		startSlide: 0,
		
		preloadImg: "images/x.gif",
		preloadClass: "slideLoading"
	},
	curr: null,
	
	initialize: function(element, opts) {
		
		this.element = document.id(element);
		this.setOptions(opts);
		
		this.slides = this.element.getElements(this.options.slideSelector);
		this.prepSlides();
		
		this.slideOut = new Fx.Tween(this.slides[this.startSlide], Object.merge({property: "opacity", link: "cancel"}, this.options.tween));
		this.slideIn = new Fx.Tween(new Element("div"), Object.merge({property: "opacity", link: "cancel"}, this.options.tween));
		
		this.curr = this.options.startSlide;
		
		window.addEvent("load", function() {
			this.startRotation();
		}.bind(this));
	
	},
	
	prepSlides: function() {
		this.nav = new Element(this.options.navTagName, {"class": this.options.navClassName});
		this.navChilds = [];
		
		var navChildTagName = this.options.navChildTagName;
		
		this.slides.each(function(slide, i) {
			var chk = i == this.options.startSlide;			
			
			slide.setStyles({
				left: 0,
				position: "absolute",
				top: 0,
				zIndex: this.slides.length - i
			});
			
			slide.set("opacity", (chk) ? 1 : 0);
			
			var navItem = new Element(navChildTagName, {"class": (chk) ? this.options.navActiveClass : "", src: "images/x.gif", events: {
				"click": function() {
					this.show(i);
				}.bind(this)
			}});
			this.nav.adopt(navItem);
			this.navChilds.push(navItem);
			
		}, this);
		
		this.nav.setStyle("zIndex", this.slides.length + 1);
		this.nav.inject(this.element);
		
	},
	
	startRotation: function() {
		if (this.options.autoRotate) {
			this.element.addEvents({
				"mouseenter": function() {
					clearTimeout(this.rotateTimeout);
				}.bind(this),
				
				"mouseleave": function() {
					clearTimeout(this.rotateTimeout);
					this.rotateTimeout = this.nextSlide.periodical(this.options.rotateDuration, this);
				}.bind(this)
			});
			
			this.rotateTimeout = this.nextSlide.periodical(this.options.rotateDuration, this);				
		}	
	},
	
	prevSlide: function() {
		var prev = (this.curr - 1 < 0) ? this.slides.length - 1 : this.curr - 1;
		this.show(prev);
	},
	
	nextSlide: function() {
		var next = (this.curr + 1 > this.slides.length - 1) ? 0 : this.curr + 1;
		this.show(next);
	},
	
	show: function(index) {
		if (index == this.curr) return this;

		this.slideOut.element = this.slides[this.curr];
		this.slideIn.element = this.slides[index];

		this.slideOut.start(0);
		this.slideIn.start(1);
		
		this.navChilds[this.curr].removeClass(this.options.navActiveClass);
		this.navChilds[index].addClass(this.options.navActiveClass);

		this.curr = index;
		
		this.fireEvent("show", [this.slides[index], index]);
		
		return this;
	},
	
	toElement: function() {
		return this.element;
	},
	
	attach: function() {
		this.prev.addEvent("click", function() {
			this.prevSlide();
		}.bind(this));
		this.next.addEvent("click", function() {
			this.nextSlide();
		}.bind(this));
		
		return this;
	},
	
	detach: function() {
		this.prev.removeEvents("click");
		this.next.removeEvents("click");
		
		return this;
	}
});





/* Quote Rotator */
/*
var SlideShow = new Class({
	Implements: [Events, Options],
	
	options: {
		
		slideSelector: "blockquote",
		
		navClassName: "quoteRotator",
		navTagName: "div",
		navChildTagName: "img",
		navActiveClass: "active",
		
		tween: {
			duration: 500
		},
		
		autoRotate: true,
		rotateDuration: 6000,
		
		startSlide: 0,
		
		preloadImg: "images/x.gif",
		preloadClass: "quoteLoading"
	},
	curr: null,
	
	initialize: function(element, opts) {
		
		this.element = document.id(element);
		this.setOptions(opts);
		
		this.slides = this.element.getElements(this.options.slideSelector);
		this.prepSlides();
		
		this.slideOut = new Fx.Tween(this.slides[this.startSlide], Object.merge({property: "opacity", link: "cancel"}, this.options.tween));
		this.slideIn = new Fx.Tween(new Element("div"), Object.merge({property: "opacity", link: "cancel"}, this.options.tween));
		
		this.curr = this.options.startSlide;
		
		window.addEvent("load", function() {
			this.startRotation();
		}.bind(this));
	
	},
	
	prepSlides: function() {
		this.nav = new Element(this.options.navTagName, {"class": this.options.navClassName});
		this.navChilds = [];
		
		var navChildTagName = this.options.navChildTagName;
		
		this.slides.each(function(slide, i) {
			var chk = i == this.options.startSlide;			
			
			slide.setStyles({
				left: 0,
				position: "absolute",
				top: 0,
				zIndex: this.slides.length - i
			});
			
			slide.set("opacity", (chk) ? 1 : 0);
			
			var navItem = new Element(navChildTagName, {"class": (chk) ? this.options.navActiveClass : "", src: "images/x.gif", events: {
				"click": function() {
					this.show(i);
				}.bind(this)
			}});
			this.nav.adopt(navItem);
			this.navChilds.push(navItem);
			
		}, this);
		
		this.nav.setStyle("zIndex", this.slides.length + 1);
		this.nav.inject(this.element);
		
	},
	
	startRotation: function() {
		if (this.options.autoRotate) {
			this.element.addEvents({
				"mouseenter": function() {
					clearTimeout(this.rotateTimeout);
				}.bind(this),
				
				"mouseleave": function() {
					clearTimeout(this.rotateTimeout);
					this.rotateTimeout = this.nextSlide.periodical(this.options.rotateDuration, this);
				}.bind(this)
			});
			
			this.rotateTimeout = this.nextSlide.periodical(this.options.rotateDuration, this);				
		}	
	},
	

	prevSlide: function() {
		var prev = (this.curr - 1 < 0) ? this.slides.length - 1 : this.curr - 1;
		this.show(prev);
	},
	
	nextSlide: function() {
		var next = (this.curr + 1 > this.slides.length - 1) ? 0 : this.curr + 1;
		this.show(next);
	},

	
	show: function(index) {
		if (index == this.curr) return this;

		this.slideOut.element = this.slides[this.curr];
		this.slideIn.element = this.slides[index];

		this.slideOut.start(0);
		this.slideIn.start(1);
		
		this.navChilds[this.curr].removeClass(this.options.navActiveClass);
		this.navChilds[index].addClass(this.options.navActiveClass);

		this.curr = index;
		
		this.fireEvent("show", [this.slides[index], index]);
		
		return this;
	},
	
	toElement: function() {
		return this.element;
	},
	

	attach: function() {
		this.prev.addEvent("click", function() {
			this.prevSlide();
		}.bind(this));
		this.next.addEvent("click", function() {
			this.nextSlide();
		}.bind(this));
		
		return this;
	},
	
	detach: function() {
		this.prev.removeEvents("click");
		this.next.removeEvents("click");
		
		return this;
	} 

});
	*/


