/* Gallery */
Event.observe(window,'load',function(){
	var galleries = $$('div.gallery');
	galleries.each(function(gallery){
		var product_gallery = new ProductGallery(gallery);
		var dvar = gallery.getAttribute('id');
		if(dvar){
			eval('window.'+dvar+' = product_gallery;');
		}
	});
});
var ProductGallery = Class.create();
ProductGallery.prototype = {
	initialize:function(gallery){
		gallery = $(gallery);
		var images = gallery.getElementsBySelector('div.picture');
		this.lenght = images.size();
		this.current = 0;
		images.each(function(image,key){
			if(key != 0){
				image.style.display = 'none';
			}
			image.style.visibility = 'visible';
		});
		var me = this;
		var prev = gallery.getElementsBySelector('a.prev')[0];
		var next = gallery.getElementsBySelector('a.next')[0];
		Event.observe(next,'click',this.next.bindAsEventListener(this));
		Event.observe(prev,'click',this.previous.bindAsEventListener(this));
		this.effect = false;
		this.images = images;
		this.element = gallery;
		this.palyer = this.play();
	},
	switcher:function(n){
		var current = this.images[this.current];
		var idx = (this.current + this.lenght + n) % this.lenght;
		var next = this.images[idx];
		var me = this;
		if(this.player != 0){
			me.effect = new Effect.Fade(current,{
				afterFinish:function(){
					me.effect = new Effect.Appear(next,{afterFinish:function(){me.effect = false;}});
				}
			});
		}else{
			if(this.effect){
				this.effect.cancel();
			}
			current.style.display = 'none';
			next.style.display = 'block';
			this.player = this.play();
		}
		this.current = idx;
	},
	play:function(){
		if(this.lenght > 1){
			var me = this;
			return setInterval(function(){me.switcher(1);},5000);
		}
		return false;
	},
	next:function(){
		clearInterval(this.player);
		this.player = 0;
		this.switcher(1);
		return false;
	},
	previous:function(){
		clearInterval(this.player);
		this.player = 0;
		this.switcher(-1);
		return false;
	}
};
