(function($){
	var gVars = {};
	$.fn.tzineClock = function(opts){
		var container = this.eq(0);
		if(!container)
		{
			try{
				console.log("Invalid selector!");
			} catch(e){}
			
			return false;
		}
		if(!opts) opts = {}; 
		var defaults = {
		};
		$.each(defaults,function(k,v){
			opts[k] = opts[k] || defaults[k];
		})
		setUp.call(container);
		return this;
	}
	
	function setUp()
	{
		var colors = ['orange','blue','green'];
		var tmp;
		for(var i=0;i<3;i++)
		{
			tmp = $('<div>').attr('class',colors[i]+' clock').html(
				'<div class="display"></div>'+
				'<div class="front left"></div>'+
				'<div class="rotate left">'+
					'<div class="bg left"></div>'+
				'</div>'+
				'<div class="rotate right">'+
					'<div class="bg right"></div>'+
				'</div>'
			);
			$(this).append(tmp);
			tmp.rotateLeft = tmp.find('.rotate.left');
			tmp.rotateRight = tmp.find('.rotate.right');
			tmp.display = tmp.find('.display');
			gVars[colors[i]] = tmp;
		}
		setInterval(function(){
			var currentTime = new Date();
			var h = currentTime.getHours();
			var m = currentTime.getMinutes();
			var s = currentTime.getSeconds();
			animation(gVars.green, s, 60);
			animation(gVars.blue, m, 60);
			animation(gVars.orange, h, 24);
		},1000);
	}
	function animation(clock, current, total)
	{
		var angle = (360/total)*(current+1);
		var element;
		if(current==0)
		{
			clock.rotateRight.hide();
			rotateElement(clock.rotateLeft,0);
		}
		if(angle<=180)
		{
			element = clock.rotateLeft;
		}
		else
		{
			clock.rotateRight.show();
			clock.rotateLeft.show();
			rotateElement(clock.rotateLeft,180);
			element = clock.rotateRight;
			angle = angle-180;
		}
		rotateElement(element,angle);
		clock.display.html(current<10?'0'+current:current);
	}
	function rotateElement(element,angle)
	{
		var rotate = 'rotate('+angle+'deg)';
		if(element.css('MozTransform')!=undefined)
			element.css('MozTransform',rotate);
		else if(element.css('WebkitTransform')!=undefined)
			element.css('WebkitTransform',rotate);
		else if(element.css("filter")!=undefined)
		{
			var cos = Math.cos(Math.PI * 2 / 360 * angle);
			var sin = Math.sin(Math.PI * 2 / 360 * angle);
			
			element.css("filter","progid:DXImageTransform.Microsoft.Matrix(M11="+cos+",M12=-"+sin+",M21="+sin+",M22="+cos+",SizingMethod='auto expand',FilterType='nearest neighbor')");
	
			element.css("left",-Math.floor((element.width()-200)/2));
			element.css("top",-Math.floor((element.height()-200)/2));
		}
	}
})(jQuery)
