/*Made by tbb - www.novicell.dk - version 1*/
(function($) {
	var methods = {

		init: function() {
			return this.each(function() {
				settings.rotator=$(this);
 					settings.count = $(this).find('li').size();
 					$(this).find('ul').addClass('imgRotation');
         	var tempHolder = $('<ul></ul>');
					var tempHolderNavigation = $('<ul class="ulli navRotation"></ul>');
					$(this).find('li').each(function(index, value){
						$(this).attr('data-no','itemNo'+index);
						$(tempHolder).prepend($(this));
						var myStyle=""
						itemNo = index+1;
						var strSelectedClass="";
						if(index==0)
							strSelectedClass=' class="selected"';
						$(tempHolderNavigation).append('<li data-no="itemMarkerNo'+index+'"'+strSelectedClass+'>'+itemNo+'</li>');
					});

					$(this).prepend($(tempHolderNavigation));
					$(this).find('ul.imgRotation').html($(tempHolder).html());
					if(settings.onClick == false)
					{
						$(this).find('ul.navRotation').mouseenter(function(){
								settings.lastNavigationEvent="mouseenter";
								methods.stopRotation();
								settings.isMouseOver=true;
						}).mouseleave(function(){
								if( settings.lastNavigationEvent!="mouseleave")//because IE keeps firing event
								{
									settings.autoCurrent = settings.autoNext;
									settings.autoNext = settings.autoCurrent+1;
									if(settings.autoNext>= settings.count)
										settings.autoNext=0;
									settings.hoverCurrent = 0;//ligegyldig
									settings.lastNavigationEvent="mouseleave"
									settings.isMouseOver=false;
									methods.playRotation();
								}
						});
						$(this).find('.navRotation li').mouseenter(function(){methods.rotationActivationByMouse($(this));});
					}
					else
					{
						if(settings.onClickContinueFromHere == false)
						{
							$(this).find('.navRotation li').click(function(){methods.rotationActivationByMouse($(this));});
						}
						else
						{
							$(this).find('.navRotation li').click(function(){methods.rotationActivationByMouse($(this));});
						}
					}
					settings.timer = setTimeout(function () { methods.playRotation() }, settings.timeInSeconds * 1000);
					$(this).find('ul.imgRotation').css('visibility','visible');
				});
    },
    rotationActivationByMouse: function(obj) {

				if(settings.onClick == true && settings.onClickContinueFromHere == true){

					settings.hoverCurrent=methods.findRotationId($(obj));

					var itemNo = settings.hoverCurrent//-1
					var itemFound=0;
					settings.rotator.find('ul.imgRotation li').each(function(){
						if(itemFound==1)
						{
							$(this).parent().prepend($(this));
						}
						if($(this).attr('data-no') == 'itemNo'+itemNo)
							itemFound=1;
					});
					settings.hoverCurrent=methods.findRotationId($(obj));

					methods.rotationFindNewItems()

					settings.rotator.find('ul.navRotation li').removeClass('selected');
					settings.rotator.find('ul.navRotation li[data-no=itemMarkerNo'+settings.hoverCurrent+']').addClass('selected');

					methods.stopRotation();
					settings.timer = setTimeout(function () { methods.playRotation() }, settings.timeInSeconds * 1000);
				}
				else
					{
					methods.stopRotation();
				settings.hoverCurrent=methods.findRotationId($(obj));
				settings.autoNext=settings.autoCurrent
				methods.rotationFades("enter",settings.hoverCurrent)
				}
    },
    playRotation: function() {
				methods.rotationOrder(settings.autoNext,settings.autoCurrent)
				methods.rotationFades("play", settings.autoNext)
    },
    rotationOrder: function() {
				currentItem = settings.autoCurrent;//private var
				if(settings.isMouseOver)
				{
					currentItem = settings.hoverCurrent
				}
				settings.rotator.find('ul.imgRotation').append(settings.rotator.find('ul.imgRotation li[data-no=itemNo'+settings.autoNext+']'));
				settings.rotator.find('ul.imgRotation').append(settings.rotator.find('ul.imgRotation li[data-no=itemNo'+currentItem+']'));
				settings.rotator.find('ul.imgRotation li[data-no=itemNo'+settings.autoNext+']').css('display','block');
				settings.rotator.find('ul.imgRotation li[data-no=itemNo'+currentItem+']').css('display','block');
    },
    rotationFades: function(argType, argId) {

        if (argType == "play")
		    {
		        settings.rotator.find('ul.imgRotation li:last-child').fadeOut(settings.fadeDuration, function () {
		            $(this).parent().prepend($(this));
		            $(this).parent().find("li:first-child").show();
		            settings.timer = setTimeout(function () { methods.playRotation() }, settings.timeInSeconds * 1000);
		            methods.rotationFindNewItems();


		        });
						var delayNavigation = 0.2*1000;

						settings.rotator.animate({
					    left: '+=0'
					  }, delayNavigation, function() {
					    settings.rotator.find('ul.navRotation li').removeClass('selected');
							settings.rotator.find('ul.navRotation li[data-no=itemMarkerNo'+argId+']').addClass('selected');
					  });
			}
			else
			{
				settings.rotator.find('ul.imgRotation').append(settings.rotator.find('ul.imgRotation li[data-no=itemNo'+settings.hoverCurrent+']'));
				settings.rotator.find('ul.imgRotation li:last-child').css('display','block');
				settings.rotator.find('ul.navRotation li').removeClass('selected');
				settings.rotator.find('ul.navRotation li[data-no=itemMarkerNo'+argId+']').addClass('selected');
			}

    },
    stopRotation: function() {
				clearTimeout(settings.timer);
				settings.rotator.find('ul.navRotation li img').stop(true, true);
				settings.rotator.find('ul.imgRotation li').stop(true,true);
    },
    findRotationId: function(obj) {
        var str = $(obj).attr('data-no');
				str = str.replace('itemNo','');
				str = str.replace('itemMarkerNo','');
				int=str*1
				return  int;
    },
    rotationFindNewItems: function() {
        if(!settings.isMouseOver)
				{
					settings.autoCurrent = 	methods.findRotationId(settings.rotator.find('ul.imgRotation li:last-child'))
					settings.autoNext=settings.autoCurrent+1;
					if(settings.autoNext >= settings.count)
						settings.autoNext=0;
				}
    }
	};

var settings={};
var defaultOptions = {};
   $.fn.fadeRotationWithNav = function(options , method ) {

   	settings = {
      timeInSeconds : 5,
			fadeDuration:1000,
			onClick:false,
			onClickContinueFromHere:false
   }

   if ( options ) {$.extend( settings, options );}
   settings.count=0;
   settings.isMouseOver=false;
   settings.lastNavigationEvent='';
   settings.autoCurrent=0;
   settings.autoNext=1;
   settings.hoverCurrent=0;
   settings.timer='';
   settings.rotator='';

    if ( methods[method] ) {
      return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
    } else if ( typeof method === 'object' || ! method ) {
      return methods.init.apply( this, arguments );
    } else {
      $.error( 'Method ' +  method + ' does not exist on jQuery.tooltip' );
    }

  };

})(jQuery);
