var FlipBook = new Class({

	Implements: [Options, Events],

	options: {
			auto: true,  // autmoatically forward through slides
			delay: 5000,  // time between slides if auto
			loadImg: 'images/loader.gif', // loading animation
			duration: 'short',
			transition: Fx.Transitions.Sine.easeIn
		},

	initialize: function(showdiv, thumbs, headline, options){
		this.setOptions(options);
		this.showDiv = $(showdiv);
		this.showDiv.setStyle('cursor','pointer');
		this.title = $(headline);
		var links = $(thumbs).getElements('a');
		this.slideurls = new Array();
		this.headlines = new Array();
		this.slides = this.showDiv.getElements('img');
		this.thumbs = $(thumbs).getElements('img');
		
		links.each(function(el, idx, ar){
			this.slideurls.push(el.getProperty('href'));
			this.headlines.push(el.getElement('img').getProperty('alt'));
			el.addEvent('click',function(e){e.preventDefault();});
		}, this);
		
		this.slides.each(function(el, idx, ar){
			el.setStyles({position:'relative', opacity: 0 });
		});

		if (this.options.auto){
			this.roTimer = this.rotate.bind(this).periodical(this.options.delay);
		}
		var obj = this;
		links.each(function(el,idx){
			el.addEvent('click',function(ev){
				$clear(obj.roTimer); 
				obj.setCurrent(idx); 
				ev.stopPropagation();
				obj.roTimer = obj.rotate.bind(obj).periodical(obj.options.delay);
				});
		},this);
		this.setCurrent(0);
	},

	setCurrent: function(num){
		this.current = num;
		this.title.set('text',this.headlines[num]);
		var obj = this;
		this.showDiv.removeEvents();
		this.showDiv.addEvent('click',function(e){window.location = obj.slideurls[num]});
		var lis = this.showDiv.getElements('li');
		lis[lis.length-1].getElement('a').set('href',obj.slideurls[num]);
		var activeImg = this.slides[num].clone();
		activeImg.setStyles({position:'absolute', opacity: 0}).inject(this.showDiv.getFirst(), 'before');
		var myFx = new Fx.Morph(activeImg,{duration: this.options.duration, transition: this.options.transition});


		myFx.start({opacity:1}).chain(
			function(){
				obj.showDiv.setStyle('background-image','url('+obj.slides[num].get('src')+')');
				activeImg.destroy();
				});

	},

	rotate: function(){
		
		if (this.current < this.slideurls.length-1){
			this.setCurrent(this.current+1);
		}else{
			this.setCurrent(0);
		}
		
	}
});
