//Jquery delay plugin

$.fn.delay = function(time, callback){
    // Empty function:
    jQuery.fx.step.delay = function(){};
    // Return meaningless animation, (will be added to queue)
    return this.animate({delay:1}, time, callback);
}

function updateSugarCounter(i,startingNumber,perSecond){
	var perTenthOfASecond = Math.ceil(perSecond / 4);
	var currentNumber = (parseInt(startingNumber) + (parseInt(perTenthOfASecond) * i));
	var currentNumberBillions = currentNumber / 1000000000;
	
	var strCurrentNumber = String(currentNumberBillions);
	if(currentNumberBillions < 10){
		strCurrentNumber = String("0") + strCurrentNumber;
	}
	
	updateDigit(10,	strCurrentNumber);
	updateDigit(9,	strCurrentNumber);
	updateDigit(8,	strCurrentNumber);
	updateDigit(7,	strCurrentNumber);
	updateDigit(6,	strCurrentNumber);
	updateDigit(5,	strCurrentNumber);
	updateDigit(4,	strCurrentNumber);
	//Third digit is always a decimal place.
	updateDigit(2,	strCurrentNumber);
	updateDigit(1,	strCurrentNumber);
	//$('#count_text').html(strCurrentNumber);
	
}
function lockDigit(slider){
	slider.addClass('digitLock');
	//var value = slider.attr('rel');
	//$('.val' + value,slider).css('border','1px solid red');
}
function unlockDigit(slider){
	slider.removeClass('digitLock');
	//var value = slider.attr('rel');
	//$('span.val',slider).css('border','0');
}
function isLockedDigit(slider){
	if(slider.hasClass('digitLock')){
		return true;
	}else{
		return false;
	}
}
function updateDigit(digit,fullNum){
	//Work out what the value of this digit should be.
	var cellValue = parseInt(fullNum.substring((digit -1),digit));
	
	//Select the slider
	var slider = $('#pos_' + digit + '_slider');
	//If the rel matches what it should be, don't bother moving it, we'd only be wasting time manipulating the DOM.
	if(slider.attr('rel') == cellValue){
		return;
	}
	//If the digit is locked, don't bother.
	if(isLockedDigit(slider)){
		//console.debug("Slider Digit locked: " + digit);
		return;
	}
	//All is well to begin our operation, lock the digit
	//console.debug("Locking slider digit " + digit);
	lockDigit(slider);
	
	//Work out what the offset is in pixels.
	var offset = (cellValue * -33) - 10;
	
	var sliderTop = parseInt(slider.css('top').replace('/px/gi',''));
	
	if(sliderTop < offset){
		//console.debug('Exceeded 10, using over-run section. ');
		magicOffset = offset + ((10 * -33));
		
		slider.animate({top: (magicOffset + 'px')},'50',function(){
			var currentTop = slider.css('top').replace('/px/gi','');
			var resetPosition =parseInt(currentTop) - 10 - (10 * -33);
			if(cellValue == 0){
				resetPosition = "-10";
			}
			//console.debug("Reset to " + resetPosition + "px");
			
			slider.css('top', resetPosition + 'px');
			
			slider.attr('rel',cellValue);
			//console.debug("Unlocking slider: " + digit);
			unlockDigit(slider);
			
		});
	}else{
		slider.animate({top: (offset + 'px')},'50',function(){
			slider.attr('rel',cellValue);
			//console.debug("Unlocking slider: " + digit);
			unlockDigit(slider);
			
		});
	}
	
	//console.debug("Updating digit " + digit + ", value is '" + cellValue + "' of '" + fullNum + "'. Offset is " + offset + 'px');
}


$(document).ready(function(){
	var startingNumber = gigateaspoons_count;
	var perSecond = gigateaspoons_teaspoonspersecond;
		
	$(document).everyTime("250ms", "updateSugar", function(i) {	//Every n seconds do this:
		updateSugarCounter(i,startingNumber,perSecond)
	}, 0);	//Never ending timer
});