/**
 * TODO: bug må fikses nor stopAfterAction: true.
 */
(function ($) {
	$.fn.argoFeatured = function (options) {
		var defaults = {
			auto 				: true,
			allowAction 		: true,
			action 				: 'click',
			stopAfterAction 	: true,
			pauseLength 		: 3000,
			fadeSpeed 			: 1000
		}
		
		var options = $.extend (defaults, options);
		
		return this.each (function () {
			var obj 		= $(this);
			var element 	= "#" + obj.attr ('id');
			var intervallId = null;
			var denne;
			var forrige;
			var neste;
			
			// Init featured
			$(element + " div").css("position", "relative");
			$(element + " div >div").css("position", "absolute");
			$(element + " ul >li:first").addClass('valgt');
			$(element + " div >div:not(:first)").hide();
			
			// If user action
			if (options.allowAction) {
				$(element + " ul >li").bind (options.action, function () {
					// Stop after user activation?
					if (options.stopAfterAction) {
						clearInterval(intervallId);
					}
					
					// Remove class 'valgt' on all li
					$(element + " ul >li").removeClass("valgt"); 
					
					// Add class 'valgt' on user chosen li
					$(this).addClass("valgt");
					
					// Hide all images exept chosen
					$(element + " div >div:not(:hidden)").stop(true, true).fadeOut (options.fadeSpeed);
					$(element + " div >div:eq(" + $(this).index() + ")").stop(true, true).fadeIn(options.fadeSpeed);
					
					// Continue to run in intervals if not stopped
					if (!options.stopAfterAction) {
						intervallId = _intervallet (element, $(this), intervallId, options);
					}
				});
			}
			
			// Run in intervals if auto is true
			if (options.auto) {
				denne = $(element + " ul >li:first");
				intervallId = _intervallet (element, denne, intervallId, options);
			}
		});
	}
})(jQuery);


/**
 * Run the intervals
 * @params denne
 * @params aktivtBilde
 * @params intervallId
 * @params options
 * @return void
 */
function _intervallet (element, denne, intervallId, options) {
    nesteSlide = function (denne) {
    	if (denne.next().length) {
    		neste = denne.next();
    	} else {
    		neste = $(element + " ul >li:first");
    	}
    	return neste;
    }
    
    //clearInterval(intervallId);
    
    intervallId = setInterval(function() {
    	$(element + " ul >li").removeClass("valgt");
    	forrige = denne;
    	denne = nesteSlide (denne);

    	denne.addClass('valgt');
    	
		// Hide all images exept chosen
		$(element + " div >div:not(:hidden)").fadeOut (options.fadeSpeed);
		$(element + " div >div:eq(" + denne.index() + ")").fadeIn (options.fadeSpeed);
    }, options.pauseLength);
    
    return intervallId;
}
