(function($, win, doc, undefined) {
	$(function() {

		var csstransforms = (function(doc, undefined) {
			var css3 = doc.createElement("CSS3").style,
				props = ['webkitTransform', '-webkit-transform', 			// webkit;
						 'mozTransform', 'MozTransform', '-moz-transform',	// mozilla;
						 'msTransform', '-ms-transform', 					// MSIE;
						 'oTransform', 'OTransform', '-o-transform', 		// Opera;
						 'transform', 										// CSS3;
						 "filter"], 										// trident (MSIE 8-);
				rtrn = false;
			for(var i in props) {
				if(css3[props[i]] !== undefined) {  // If a browser supports a certain property, it won't return undefined for it. A supported CSS property returns empty string when its not yet set.
					rtrn = true;
				}
			}
			css3 = props = null;
			return rtrn;
		})(document);

		if(csstransforms) {
			$("#clock").addClass("csstransforms");

			var timer = function() {
				var date = new Date(),
					s = date.getSeconds() * 6,
					m = date.getMinutes() * 6,
					h = date.getHours() * 30 + (m / 6 / 2),
					transform = function(elm, deg) {
						var deg = "rotate(" + deg + "deg)";
						elm.css({
							'-webkit-transform': deg,
							'-moz-transform': deg,
							'-ms-transform': deg,
							'-o-transform': deg,
							'transform': deg
						});
					};

				transform($("#sec"), s);
				transform($("#min"), m);
				transform($("#hour"), h);

				if(document.documentElement.filters) {  // MSIE only;
					function matrix(elm, deg) {
						var dis = Math.min(elm.parent().width(), elm.parent().height()),
							rad = deg * Math.PI * 2 / 360,
							cos = Math.cos(rad),
							sin = Math.sin(rad);

						elm.css({
							width: dis + "px",
							height: dis + "px",
							filter: "progid:DXImageTransform.Microsoft.Matrix(M11='1.0',sizingmethod='auto expand')"
						});

						var filter = elm.get(0).filters.item(0);	//	+-------+-------+
						filter.M11 = cos; 							//	|  M11  |  M12  |
						filter.M12 = -sin; 							//	+-------+-------+
						filter.M21 = sin; 							//	|  M21  |  M22  |
						filter.M22 = cos; 							//	+-------+-------+

						elm.css({
							left: -(parseFloat(elm.width()) / 2) + (dis / 2),
							top: -(parseFloat(elm.height()) / 2) + (dis / 2)
						});

						dis = rad = cos = sin = filter = null;
					}

					matrix($("#sec"), s);
					matrix($("#min"), m);
					matrix($("#hour"), h);
				}

			};

			timer();
			win.setInterval(function() { timer(); }, 1000);
		}

	});
})(jQuery, window, document);
