(function($){
	var interval = null,
		config = {
			startNumber	: 00,
			endNumber	: 38,
			speed		: 100, /* indien lager dan 100 animatie interval ook aanpassing in code */
			startdelay	: 1000,
			numberheight: 52,
			numberSpace	: [0, -312, -624, -936, -1248, -1560, -1872, -2184, -2496, -2808]
		},
		$this,
		currentnumber,
		$leftelement,
		$rightelement;

	$.fn.tsCounter = function ( options ) {

		$.extend(config, options);
		
		$this = $(this);
				
		//set start getal
		currentnumber = config.startNumber;
		
		//start met delay. 0 = gelijk starten
		window.setTimeout( startCountup, config.startdelay );
		
		return $this;
	};
	
	var startCountup = function()
	{
		$leftelement = $this.find("#leftnumber");
		$rightelement = $this.find("#rightnumber");
		
		//start met met ingestelde speed
		interval = window.setInterval( countup, config.speed );
	}

	var countup = function() {
	
		if( currentnumber < config.endNumber)
		{
			currentnumber++;
			
			//rightnumber
			var rightNumber = currentnumber % 10; 
			//updateNumber( $this.find("#rightnumber"), rightNumber); 
			updateNumberAnimated( $rightelement, rightNumber, 1, 18, 1);
			
			//left number
			var leftNumber = (currentnumber - rightNumber) / 10;
			if( rightNumber == 0 && currentnumber > 0 || currentnumber == config.startNumber + 1 && leftNumber > 0 )
			{
				updateNumberAnimated( $leftelement, leftNumber, 0, 50, 0);
			}

		}
		else
		{
			window.clearInterval( interval );
		}

	};

	
	function updateNumber( $elem, number ){
		$elem.css({ 'background-position' : '0px ' + config.numberSpace[number] + 'px' });
	}
	
	function updateNumberAnimated( $elem, number, step, speed, slack ){
		if( step < 6  )
		{
			step++;
			
			// startpunt
			var start = config.numberSpace[ ( number == 0 ) ? 9 : number - 1 ];
			
			// step
			start -= ( (step - slack) * config.numberheight );
			
			
			// bugfix
			//if( number == 9 && step > 2 ) start += 1;
			
			$elem.css({ 'background-position' : '0px ' + start + 'px' });
			window.setTimeout( function(){updateNumberAnimated($elem, number, step, speed, slack); $elem = null; number = null; step = null; speed = null; slack = null; }, speed );
		}
		else
		{
			$elem.css({ 'background-position' : '0px ' + config.numberSpace[number] + 'px' });
		}
			
	}
	


})(jQuery);



