
/**************************************************************

	Script		: Showcase
	Version		: 1.0 (beta)
	Author		: Michael Coleman
	Desc		: Runs the showcase

**************************************************************/

var Showcase = new Class({

	getOptions: function(){
		return {
			container: null,
			overlay: {
				bgcolor: '#000',
				opacity: 0.6,
				fade: false,
				caption: ""

			},
			zIndex: 1,
			data: {},
			startSlide: 0,
			captions: true,
			delay: 4000,
			loop: true,
			autorun:  true,
			currentItem: 0
		};
	},

	initialize: function(options){
		this.isRunning = false;
		this.setOptions(this.getOptions(), options);

		this.options.container = $(this.options.container);
		//check for img element if not create it
		if(this.options.container.getElement('img')){
			this.image = this.options.container.getElement('img').set({
				"styles":{
					width: this.options.container.getStyle('width'),
					height:this.options.container.getStyle('height')
				},
				"properties":{
					'id':'showCaseImg'
				}
			});
		}
		else{
			this.image = new Element('img').setProperty('id', 'showCaseImg').setStyles({
				width: this.options.container.getStyle('width'),
				height:this.options.container.getStyle('height')
			}).injectInside(this.options.container);
		}
		this.overlay = new Overlay({
			container: this.options.container,
			captions:this.options.captions,
			opacity:this.options.overlay.opacity,
			caption:this.options.overlay.caption
		});
		if(this.options.autorun)
			this.start();

	},


	start: function(){
		if(this.options.overlay){
			if(this.options.overlay.fade)
				this.overlay.fadeIn();
			else
				this.overlay.show();
		}
		this.isRunning = true;
		this.timer = this.display.periodical(this.options.delay,this);
	},

	stop: function(){
		if(this.options.overlay){
			if(this.options.overlay.fade)
				this.overlay.fadeOut();
			else
				this.overlay.hide();
		}
		$clear(this.timer);
		this.isRunning = false;
	},

	display:function(){
		if(this.options.currentItem == this.options.data.length){
			if(this.options.loop){
				this.options.currentItem = 0;
			}
			else{
				this.stop();
				return;
			}
		}
		this.image.setProperty('src',this.options.data[this.options.currentItem]['image']);
		if(this.options.captions){
			this.overlay.setCaption(this.options.data[this.options.currentItem]['caption']);
		}
		this.options.currentItem++;
	}


});
Showcase.implement(new Options);

/*************************************************************/
