/**
 * Flip Counter
 *
 * Author: Carmelo Capinpin <mello.capinpin@gmail.com>
 */
(function($) {
	$.fn.flipcounter = function(options) {
		var settings = $.extend({
			height: 82,
			date : new Date("October 22, 2011"),
			delay : 1000
		}, options);
		
		this.each(function(index) {
			var instance = $(this);
			var ul = $('<ul class="flipcounter">');
			var li = new Array();
			var current = new Array(8);
			
			instance.init = function() {
				instance.append(ul);
				for (var i = 0; i < 8; i++) {
					ul.append(li[i] = $('<li>'));
					li[i].append($('<div class="counter">'));
					li[i].append($('<div class="overlay">'));
				};
				
				setInterval(function() {
          milliseconds = settings.date.getTime()-(new Date()).getTime();
          if (milliseconds < 0) return;
          seconds = Math.floor(milliseconds/1000);
					minutes = Math.floor(seconds/60);
					hours   = Math.floor(minutes/60);
					days    = Math.floor(hours/24);
					
					timer = (1000000000+(days*1000000)+((hours%24)*10000)+((minutes%60)*100)+(seconds%60)).toString().substring(2).split('');

					for (var i = 0; i < timer.length; i++) {
						if (current[i] != timer[i]) {
							instance.counter(i,timer[i]);
						}
					}
					current = timer;
				}, settings.delay);
			};
			
			instance.counter = function(x, time) {
				li[x].find('.overlay').show(0, function() {
					$(this).css({
						'top':'14px',
						'background-position':'center top'
					});
				}).delay(200).fadeIn(0, function() {
					li[x].find('.counter').animate({
						top: ($(this).position().top == (settings.height * 9))? 0 : (-settings.height * time)+'px'
					},0);
					$(this).css({
						'top':'41px',
						'background-position':'center bottom'
					});
				}).delay(100).fadeOut(100);
			};
			
			instance.init();
		});
	};
})(jQuery);
