

jQuery.fn.timCycle = function(options) {
	var settings = jQuery.extend({
	 element: $(this),
	 position: 'center',
	 interval: false
   }, options);
	
	settings.totalwidth = 0;
	settings.element.find("div.main ul li").each(function(){
		settings.totalwidth += $(this).width();
	})
	
	function checkPosition(type, dolinks){
		if(type == 'first'){
			newpos = parseInt(settings.element.find("div.main ul").css('left'));
			while(newpos < 0){
				el = settings.element.find("div.main ul li:first");
				newpos = parseInt(settings.element.find("div.main ul").css('left')) - -el.width();
				newpos1 = parseInt(settings.element.find("div.main ul").css('left')) - -el.width();
				newpos2 = settings.element.find("div.main ul").attr('rel') - -el.width();
				if(newpos < 0){
					settings.element.find("div.main ul").stop();
					settings.element.find("div.main ul").css('left',newpos1+'px');
					settings.element.find("div.main ul").attr('rel',newpos2);
					el.appendTo("#specialScroller div.main ul");
					settings.element.find("div.main ul").stop().animate({left:settings.element.find("div.main ul").attr('rel')+'px'},500,false,function(){clearInterval(settings.interval);checkPosition('first',true);})
				}
			}
		}else{
			teller = 0;
			newpos = parseInt(settings.element.find("div.main ul").css('left')) + settings.totalwidth;
			while(newpos > settings.element.find('div.main').width()){
				teller++;
				el = settings.element.find("div.main ul li:last");
				newpos = (parseInt(settings.element.find("div.main ul").css('left')) + settings.totalwidth) - el.width();
				newpos1 = parseInt(settings.element.find("div.main ul").css('left')) - el.width();
				newpos2 = settings.element.find("div.main ul").attr('rel') - el.width();
				if(newpos > settings.element.find('div.main').width()){
					settings.element.find("div.main ul").stop();
					settings.element.find("div.main ul").css('left',newpos1+'px');
					settings.element.find("div.main ul").attr('rel',newpos2);
					el.prependTo("#specialScroller div.main ul");
					settings.element.find("div.main ul").stop().animate({left:settings.element.find("div.main ul").attr('rel')+'px'},500,false,function(){clearInterval(settings.interval);checkPosition('last',true);})
				}
				if(teller > 5000){
					alert('overload' + newpos)
					break;	
				}
			}	
		}
		if(dolinks){
			if(settings.element.find("div.mirror ul").length > 0){
			settings.element.find("div.mirror ul").empty();
			settings.element.find("div.mirror ul").css('width',settings.element.find("div.main ul").width()+'px');
			settings.element.find("div.mirror ul").css('height',settings.element.find("div.main ul").height()+'px');
			settings.element.find("div.mirror ul").css('left',settings.element.find("div.main ul").css('left'));
			settings.element.find("div.main ul li").each(function(i){
				 $(this).attr('rel','listitemnr'+i);
				settings.element.find("div.mirror ul").append('<a href="'+$(this).find("a").attr('href')+'" rel="listitemnr'+i+'" id="newmirror" class="mirroritem" style="height:'+$(this).height()+'px;width:'+$(this).width()+'px"></a>')
				$("#newmirror").hover(function(){
						$(this).parent().parent().parent().find("*[rel="+$(this).attr('rel')+"]").addClass('hover');
					},
					function(){ 
						$(this).parent().parent().parent().find("*[rel="+$(this).attr('rel')+"]").removeClass('hover');
					}
				);
				$("#newmirror").attr('id','');
			});
			}
		}
	}			
	// SCROLLER OP 0 PX ZETTEN
	
	el = settings.element.find("div.main ul li:not(.clone):first").addClass('activeElement');
	
	if(settings.position == 'center'){
		startposition = ((settings.element.find('div.main').width() - settings.element.find("div.main ul li:not(.clone):first").width())/2);
		while(startposition > 0){
			el = settings.element.find("div.main ul li:not(.clone):last");
			startposition -= el.width();
			el.prependTo("#specialScroller div.main ul");
		}
	}else{
		startposition = 0;
	}
	settings.element.find("div.main ul").css('left', startposition + 'px');
	settings.element.find("div.main ul").attr('rel', startposition);
	
	checkPosition('first',true);
	
	// VOLGENDE KNOP
	settings.element.find(".specialVolgende").click(function(event){ 
		var clickedel = settings.element.find(".activeElement");
		if(clickedel.next().length > 0){
			clearInterval(settings.interval);
			checkPosition('first');
			settings.interval = setInterval(function(){checkPosition('first')},50);	
			clickedel.removeClass("activeElement").next().addClass("activeElement");
			if(settings.position == 'center')	shiftDistance = (clickedel.width()/2) + (clickedel.next().width()/2);
			else								shiftDistance = clickedel.width();
			settings.element.find("div.main ul").attr('rel',settings.element.find("div.main ul").attr('rel') - shiftDistance);	
			settings.element.find("div.main ul").stop().animate({left:settings.element.find("div.main ul").attr('rel')+'px'},500,false,function(){clearInterval(settings.interval);checkPosition('first',true);})	
		}
	 });	

	settings.element.find(".specialVorige").click(function(event){ 
		var clickedel = settings.element.find(".activeElement");
		if(clickedel.prev().length > 0){
			clearInterval(settings.interval);
			checkPosition('last');
			settings.interval = setInterval(function(){checkPosition('last')},50);														   
			clickedel.removeClass("activeElement").prev().addClass("activeElement");
			if(settings.position == 'center')	shiftDistance = (clickedel.width()/2) + (clickedel.prev().width()/2);
			else								shiftDistance = clickedel.width();
			settings.element.find("div.main ul").attr('rel',settings.element.find("div.main ul").attr('rel') - -shiftDistance);
			settings.element.find("div.main ul").stop().animate({left:settings.element.find("div.main ul").attr('rel')+'px'},500,false,function(){clearInterval(settings.interval);checkPosition('last',true);})
		}
		
	});	
	
}
