/*
 * jQuery Mood Slide 1.1.0
 * By Manuel Boy (http://www.polargold.de)
 * Copyright (c) 2010 polargold
*/
(function($){
	
	$.fn.moodslide = function(options) {

		// options
		var settings = jQuery.extend({
			duration: 2000,
			autoplay: true,
			delay: 5000
		}, options);
  
		return this.each(function() {
			
			var autoplay = settings.autoplay;

			// init
			var container = jQuery(this);
			var itemContainer = jQuery('[data-role=item-container]', this);
			var itemWrapper = jQuery('[data-role=item-wrapper]', this);
			var currentIndex = 0;
			var numberOfSlides = jQuery('[data-role=item]', container).length;
		
			// ui
			var pagination = jQuery('[data-role=pagination]', container);
			var navigation = jQuery('[data-role=navigation]', container);
			itemWrapper.css('width', (numberOfSlides * jQuery('[data-role=item]:first', container).width()));
		
			// enable sliding
			jQuery(container).bind('slideTo', function(event, index) {
				currentIndex = index;
				// mark pagination item as active
				jQuery('[data-role=pagination-page]', pagination).removeClass('active');
				jQuery('[data-role=pagination-page]:eq('+index+')', pagination).addClass('active');
				var scrollOptions = {
					axis: 'x',
					onAfter: function() {
						if(autoplay) {
							setTimeout(function() {
								if(autoplay) {
									var newIndex = (currentIndex < (numberOfSlides - 1)) ? currentIndex + 1 : 0;
									jQuery(container).trigger('slideTo', newIndex);
								}
							}, settings.delay);
						}
					}
				};
				jQuery(itemContainer).scrollTo('[data-role=item]:eq('+index+')', settings.duration, scrollOptions);
			});
		
			// build pagination
			for(var i = 0; i < numberOfSlides; i++) {
				var content = '<li data-role="pagination-page" data-index="'+i+'"><a href="#">'+( i + 1 )+'</a></li>';
				jQuery('ul', pagination).append(content);
			}
		
			// handle navigation events
			jQuery('[data-role=navigation-prev]', navigation).bind('click', function(e) {
				autoplay = false;
				var newIndex = (currentIndex >= 1) ? currentIndex - 1 : (numberOfSlides - 1);
				jQuery(container).trigger('slideTo', newIndex);
				e.preventDefault();
			});
			jQuery('[data-role=navigation-next]', navigation).bind('click', function(e) {
				autoplay = false;
				var newIndex = (currentIndex < (numberOfSlides - 1)) ? currentIndex + 1 : 0;
				jQuery(container).trigger('slideTo', newIndex);
				e.preventDefault();
			});
			jQuery('[data-role=pagination-page] a', pagination).bind('click', function(e) {
				autoplay = false;
				var newIndex = jQuery(this).parent().attr('data-index');
				jQuery(container).trigger('slideTo', newIndex);
				e.preventDefault();
			});
			
			// initial call
			jQuery(container).trigger('slideTo', currentIndex);
			
		});
	};
	
})(jQuery);
