function showQSlide(slideSelectorContainer, index){
	var imgs = $$("div.q-slide");
	for(var i = 0; i < imgs.length; i++){
		imgs[i].stopAndHide();
	}
	setQSlideSelectorOn(slideSelectorContainer, index);
	imgs[index].grow();
}
function setQSlideSelectorOn(slideSelectorContainer, index){
	for(var i = 0; i < slideSelectorContainer.childElements().length; i++){
		slideSelectorContainer.childElements()[i].setQOpacity(0.1);
	}
	slideSelectorContainer.childElements()[index].setQOpacity(1);
}
var qSlideShows = $H();
function startQSlideShow(selection, slideSelectorContainer, slideSelectorClass){
	if(qSlideShows.get(selection) == null){
		qSlideShows.set(selection, "started");
		var imgs = $$(selection);
		for(var i = 0; i < imgs.length; i++){
			imgs[i].store("fading", false);
			imgs[i].store("growing", false);
			imgs[i].store("effectTimeout", null);
			if(imgs[i].id == null || imgs[i].id == "")
				imgs[i].id = "random" + Math.floor(Math.random()*100); //IE fixing
			imgs[i].setQOpacity(0);
			var ss = new Element("DIV");
			ss.className = slideSelectorClass;
			ss.id = "select-slide-" + imgs[i].id;
			ss.observe("click", function(event){
				var elem = Event.element(event);
				var index = -1;
				for(var i = 0; i < slideSelectorContainer.childElements().length; i++){
					if(slideSelectorContainer.childElements()[i].id == elem.id)
						index = i;
				}
				showQSlide(slideSelectorContainer, index);
			});
			slideSelectorContainer.appendChild(ss);
			ss.setQOpacity(0.1);
			imgs[i].observe("quotero:grown", function(event){
				var img = Event.element(event);
				var index = -1;
				for(var j = 0; j < imgs.length; j++){
					if(imgs[j].id == img.id)
						index = j;
				}
				var lastIndex = index;
				setQSlideSelectorOn(slideSelectorContainer, index);
				if(index == imgs.length -1)
					index = 0
				else
					index++;
				var t = setTimeout("$$('" + selection + "')[" + lastIndex + "].fade(); $$('" + selection + "')[" + index + "].grow();", 3000);
				imgs[index].store("effectTimeout", t);
				img.store("effectTimeout", t);
			});
		}
		if(imgs.length > 0){
			imgs[0].grow();
			setQSlideSelectorOn(slideSelectorContainer, 0);
		}
	}
}
Element.addMethods({
	stopAndHide: function(element){
		clearTimeout(element.retrieve("effectTimeout"));
		element.setQOpacity(0);
		element.store("fading", false);
		element.store("growing", false);
	},
	
	fade: function(element){
		while(element.retrieve("growing")){
			element.store("effectTimeout", setTimeout("$('" + element.id + "').fade()", 25));
			return;
		}
		element.store("fading", true);
		if(element.id == null || element.id == "")
			element.id = "random" + Math.floor(Math.random()*100); //IE fixing
		var script = "var opacity = $('" + element.id + "').getOpacity();\
		opacity = (opacity == null || isNaN(opacity) ? 1 : opacity) - 0.05;\
		$('" + element.id + "').setQOpacity(opacity);\
		if(opacity > 0) $('" + element.id + "').store('effectTimeout', setTimeout(\"$('" + element.id + "').fade();\", 50));\
		else{ $('" + element.id + "').fire('quotero:faded'); $('" + element.id + "').store('fading', false);}";
		eval(script);
	},
	
	grow: function(element){
		while(element.retrieve("fading")){
			element.store("effectTimeout", setTimeout("$('" + element.id + "').grow()", 25));
			return;
		}
		element.store("growing", true);
		if(element.id == null || element.id == "")
			element.id = "random" + Math.floor(Math.random()*100); //IE fixing
		var script = "var opacity = $('" + element.id + "').getOpacity();\
		opacity = parseFloat(opacity == null || isNaN(opacity)? 1 : opacity) + 0.05;\
		$('" + element.id + "').setQOpacity(opacity);\
		if(opacity < 1) $('" + element.id + "').store('effectTimeout', setTimeout(\"$('" + element.id + "').grow();\", 50));\
		else{ $('" + element.id + "').fire('quotero:grown'); $('" + element.id + "').store('growing', false);}";
		eval(script);
	},
	
	setQOpacity: function(element, value){
		value == value > 1 ? 1 : value;
		value == value < 0 ? 0 : value;
		element.style.opacity = value;
		element.style.filter = "alpha(opacity="+ (value * 100) +")";
		element.style.display = "block";
		var desc = $(element.id).descendants();
		for(var i = 0; i < desc.length; i++){
			desc[i].style.opacity = value;
			desc[i].style.filter = "alpha(opacity="+ (value * 100) +")";
			desc[i].style.display = "block";
		}
	}
});
