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

	// options
	settings = jQuery.extend({
		duration: 1000,
		dataprovider: null,
		autoplay: true,
		delay: 5000
	}, options);
  
	this.each(function() {
		var container = jQuery(this);
		// show loader
		jQuery(container).addClass('loading');
		// set autoplay flag to true
		var autoplayPossible = true;
		// fetch data
		var dataprovider = jQuery('' + settings.dataprovider, this).hide();
		// build markup
		jQuery(container).prepend('<div class="moodslide-container loading"><div class="moodslide-container-inner"></div></div>');
		var holder = jQuery('.moodslide-container', container);
		jQuery('.moodslide-container-inner', container).append('<div class="moodslide-navigation"><ul></ul></div>');
		var clicker = jQuery('.moodslide-navigation ul', container);
		// build slider navigation
		jQuery('li', dataprovider).each(function(index, value) {
			var slide = jQuery(this);
			jQuery(clicker).append('<li><a href="" data-index="'+index+'"><span>#'+(index + 1)+'</span></a></li>');
		});
		jQuery('a', clicker).bind('click', function(evt) {
			var index = jQuery(this).attr('data-index');
			autoplayPossible = false;
			jQuery(container).trigger('moodslideTo', index);
			return false;
		});
		// get number of slides available
		var numberOfSlides = jQuery('li', dataprovider).length;
		// handle transition
		jQuery(container).bind('moodslideTo', function(event, index) {
			// fetch data
			var slide = jQuery('li:eq(' + index + ')', dataprovider);
			var bg = jQuery(slide).attr('data-background');
			// mark clicker as active
			jQuery('li', clicker).removeClass('active');
			jQuery('li:eq(' + index + ')', clicker).addClass('active');
			// do animation
			jQuery(container).addClass('loading');
			jQuery(holder).fadeOut(settings.duration, function() {
				// remove content
				jQuery('.moodslide-content', holder).remove();
				// preload image
				var img = new Image();
				jQuery(img).load(function () {    
					jQuery(this).hide();
					jQuery(container).removeClass('loading');
					jQuery(holder).css('background-image', 'url('+bg+')').fadeIn(settings.duration, function() {
						// auto-fade if necessary
						if(autoplayPossible && settings.autoplay === true && numberOfSlides > 1) {
							var newIndex = (index == (numberOfSlides - 1)) ? 0 : index + 1;
							setTimeout(function() {
								if (autoplayPossible) {
									jQuery(container).trigger('moodslideTo', newIndex);
								}
							}, settings.delay);
						}
					});
					jQuery('.moodslide-container-inner', holder).append('<div class="moodslide-content">'+jQuery(slide).html()+'</div>');
				}).error(function () {
					// error loading image
				}).attr('src', bg);
			});
		});
		// start slideshow
		jQuery(container).trigger('moodslideTo', 0);
	});
}
