/*
jQuery iModslider
copyright RemonVersteeg
version 1.1.0.0
*/
(function($) {
	$.fn.iModSlider = function(options) {
		var tabs	= $(options.tabs) || false;
		var output	= $(this);

		new jQuery.iModSlider(tabs, output, options);

		return this;	
	};

	$.iModSlider = function(tabs, output, options) {
		
		var options				= options || {}; 
		var mouse_event 		= options.mouse_event || 'click';
		var total_items			= output.length;
		var visible_item		= options.start_item || 0;
		var scroll_item 		= options.scroll_item || false;
		var next 				= $(options.navigationL) || false;
		var prev				= $(options.navigationR) || false;
		var async 				= options.async || false;
		var pause_on_hover 		= options.pause_on_hover;
		var transition_interval = options.transition_interval || 5000;
		var slide_interval		= options.slide_interval || 200;
		var auto_slide			= options.auto_slide;
		
		if(async){
			transition_interval	= transition_interval * rand(8,12);
		}

		//slide function
		function slide(nr) {
			
			if(total_items <= 1)
				return false;
			
			if (typeof nr == "undefined") {
				nr = visible_item + 1;
				nr = nr >= total_items ? 0 : nr;
			} 
			
			if(tabs != false){
				tabs.removeClass('current').filter(":eq(" + nr + ")").addClass('current');
			}

			output.stop(true, true).filter(":visible").fadeOut(slide_interval);
			output.filter(":eq(" + nr + ")").fadeIn(slide_interval,function() {
				visible_item = nr;	
			});
		}
		
		//scroll function
		function _scroll(li){
			var post = li.children("div.post"),
			pWidth = post.width();
			if (pWidth > parseInt(balloon.css('width'))){
				var leftEnd = li.find('div.end');
				if(leftEnd.length === 0){
					leftEnd = $$('<div class="end left" />').appendTo(li);
				} 
				var offsX = parseInt(leftEnd.width());
				post.animate({left: offsX - pWidth - 55}, 23000, 'linear', function(){post.css('left', offsX);});
			}
		}
		
		//if is asynchrone
		function rand(l,u){
			return Math.floor((Math.random() * (u-l+1))+l) * 0.1 ;
		}


		output.hide().eq( visible_item ).show();
		
		//if there are any tabs
		if(tabs != false){
			tabs.eq( visible_item ).addClass('current');
			
			if(mouse_event == 'click'){
				tabs.click(function() {
					if ($(this).hasClass('current')) {
						return false;	
					}
	
					slide( tabs.index( this) );
				});
			} else {
				tabs.hover(function() {
					if ($(this).hasClass('current')) {
						return false;	
					}
	
					slide( tabs.index( this) );
				});
	
			}
		}
		
		//check if there is navigation
		if(next != false && prev != false){
			
			next.click(function(){
				var next_slide = visible_item + 1;
				if(next_slide >= total_items){
					next_slide = 0;
				}
				slide(next_slide);	
			});
			
			prev.click(function(){
				var prev_slide = visible_item - 1;
				if(prev_slide < 0){
					prev_slide = total_items - 1;
				}
				slide(prev_slide);	
			});
		}

		//do the slide
		if(auto_slide != false){
			
			if (transition_interval > 0) {
				var timer = setInterval(function () {
					slide();
				}, transition_interval);
	
				if (pause_on_hover) {
					output.mouseenter(function() {
						clearInterval( timer );
	
					}).mouseleave(function() {
						clearInterval( timer );
						timer = setInterval(function () {
							slide();
						}, transition_interval);
					});
				}
			}
		}
		
	};
})(jQuery);
