/*
 * jQuery Showcase v0.1 - http://www.itflows.nl/
 *
 * Initiates a simple showcase with autoslide.
 *
 * Copyright (c) 2009 Youri van der Lans
 * Licensed under the MIT License:
 *   http://www.opensource.org/licenses/mit-license.php
 */
(function($){
	$.fn.showcase = function() {
		
		var defaults = {
			left: 0,
			cur: 0,
			imageWidth: 400,
			slideSpeed: 500,
			autoslide: 6000
		};
		var options = $.extend(defaults, options);
		
		var obj = $(this);
		var img = $(this).find('#images');
		var pag = $(this).find('#pagination');
		options.total = img.find('img').length;
		
		return this.each(function(){
			obj.left = function(event){
				options.cur = options.cur - 1;
				obj.move(event);
			};
			
			obj.right = function(event){
				options.cur = options.cur + 1;
				obj.move(event);
			};
			
			obj.scrollTo = function(event){
				index = obj.find('#pagination div').index(this);
				
				options.cur = index;
				obj.move(event);
			};
			
			obj.move = function(event){
				obj.getNewPos();
				if ( event.type == "click" ){
					//clearTimeout(obj.timeout);
					clearInterval (obj.timeout);
					obj.timeout = 0;
				}
				img.stop();
				img.animate({
						left: options.left
					},
					{
						duration: options.slideSpeed,
						easing: 'easeInCubic',
						complete: obj.moveCallback()
					}
				);
			};
			
			obj.moveCallback = function(){
				//Set index number when clicked
				obj.setIndex();
				
				//jQuery timeout, set title when animation is done
				obj.find('#title').animate({
					opacity:100
				},
				{
					duration: options.slideSpeed,
					complete: function(){
						obj.setTitle();
					}
				});
				
				if ( obj.timeout == 0 )
				{
					// Autoslide
					obj.timeout = setInterval(function(){obj.right(true)}, options.autoslide);
				}
				
				//window.clearTimeout(obj.timeout);
				//obj.timeout = setTimeout(function(){obj.setAutoSlide()}, options.autoslide);
			};
			
			obj.getNewPos = function(){
				if ( options.cur == -1 ){
					options.left = ( options.cur * options.imageWidth ) - options.imageWidth;
					options.cur = options.total - 1;
				} else {
					options.left = 0 - ( options.cur * options.imageWidth );
				}
				
				if ( options.cur == options.total ){
					options.left = 0;
					options.cur = 0;
				} else {
					options.left = 0 - ( options.cur * options.imageWidth );
				}
			};
			
			obj.setIndex = function(){
				$('#pagination div').removeClass('active');
				$('#pagination div:eq('+options.cur+')').addClass('active');
			};
			
			obj.setTitle = function(){
				var title = obj.find('#images img:eq('+options.cur+')').attr('alt');
				obj.find('#title').empty().append(title);
			};
			
			obj.setPagination = function(){
				for ( i=0; i<options.total; i++ ){
					pag.append('<div>'+(i+1)+'</div>');
				}
				
				pag.find(':first').addClass('active');
				pag.find('div').bind('click', obj.scrollTo);
			};
			
			obj.setAutoSlide = function(){
				window.clearTimeout(obj.timeout);
				
				obj.right(true);
				
				obj.timeout = setTimeout(function(){obj.setAutoSlide()}, options.autoslide);
			};
			
			//Set image div width
			width = options.total * options.imageWidth;
			img.css('width', width);
			
			//Click events
			obj.find('#buttonLeft').bind('click', obj.left);
			obj.find('#buttonRight').bind('click', obj.right);
			
			obj.setTitle();
			obj.setPagination();
			
			// Autoslide
			//obj.timeout = setTimeout(function(){obj.right(true)}, options.autoslide);
			obj.timeout = setInterval(function(){obj.right(true)}, options.autoslide);
		});
		
	};
})(jQuery);