/*
 * transform: A light jQuery cssHooks for 2d transform
 *
 * limitations:
 * - requires jQuery 1.4.3+
 * - Should you use the *translate* property, then your elements need to be absolutely positionned in a relatively positionned wrapper **or it will fail in IE678**.
 * - incompatible with "matrix(...)" transforms
 * - transformOrigin is not accessible
 *
 * latest version and complete README available on Github:
 * https://github.com/louisremi/jquery.transform.js
 *
 * Copyright 2011 @louis_remi
 * Licensed under the MIT license.
 *
 * This saved you an hour of work?
 * Send me music http://www.amazon.co.uk/wishlist/HNTU0468LQON
 *
 */
(function(a){function m(a){return~a.indexOf("deg")?parseInt(a,10)*(Math.PI*2/360):~a.indexOf("grad")?parseInt(a,10)*(Math.PI/200):parseFloat(a)}function l(b){b=b.split(")");var c=[0,0],d=0,e=[1,1],f=[0,0],g=b.length-1,h=a.trim,i,j;while(g--){i=b[g].split("(");j=i[1];switch(h(i[0])){case"translateX":c[0]+=parseInt(j,10);break;case"translateY":c[1]+=parseInt(j,10);break;case"translate":j=j.split(",");c[0]+=parseInt(j[0],10);c[1]+=parseInt(j[1]||0,10);break;case"rotate":d+=m(j);break;case"scaleX":e[0]*=j;case"scaleY":e[1]*=j;case"scale":j=j.split(",");e[0]*=j[0];e[1]*=j.length>1?j[1]:j[0];break;case"skewX":f[0]+=m(j);break;case"skewY":f[1]+=m(j);break;case"skew":j=j.split(",");f[0]+=m(j[0]);f[1]+=m(j[1]||"0");break}}return{translate:c,rotate:d,scale:e,skew:f}}var b=document.createElement("div"),c=b.style,d="transform",e="Transform",f=["O"+e,"ms"+e,"Webkit"+e,"Moz"+e,d],g=f.length,h,i,j,k=/Matrix([^)]*)/;while(g--){if(f[g]in c){a.support[d]=h=f[g];continue}}if(!h){a.support.matrixFilter=i=c.filter===""}b=c=null;a.cssNumber[d]=true;a.cssHooks[d]=j={get:function(b){var c=a.data(b,"transform")||{translate:[0,0],rotate:0,scale:[1,1],skew:[0,0]};c.toString=function(){return"translate("+this.translate[0]+"px,"+this.translate[1]+"px) rotate("+this.rotate+"rad) scale("+this.scale+") skew("+this.skew[0]+"rad,"+this.skew[1]+"rad)"};return c},set:function(b,c,d){if(typeof c==="string"){c=l(c)}var e=c.translate,f=c.rotate,g=c.scale,j=c.skew,m=b.style,n,o;a.data(b,"transform",c);if(!j[0]&&!j[1]){j=0}if(h){m[h]="translate("+e[0]+"px,"+e[1]+"px) rotate("+f+"rad) scale("+g+")"+(j?" skew("+j[0]+"rad,"+j[1]+"rad)":"")}else if(i){if(!d){m.zoom=1}var p=Math.cos(f),q=Math.sin(f),r=p*g[0],s=-q*g[1],t=q*g[0],u=p*g[1],v,w,x,y;if(j){v=Math.tan(j[0]);w=Math.tan(j[1]);r+=s*w;s+=r*v;t+=u*w;u+=t*v}x=["Matrix("+"M11="+r,"M12="+s,"M21="+t,"M22="+u,"SizingMethod='auto expand'"].join();o=(n=b.currentStyle)&&n.filter||m.filter||"";m.filter=k.test(o)?o.replace(k,x):o+" progid:DXImageTransform.Microsoft."+x+")";if(y=a.transform.centerOrigin){m[y=="margin"?"marginLeft":"left"]=-(b.offsetWidth/2)+b.clientWidth/2+"px";m[y=="margin"?"marginTop":"top"]=-(b.offsetHeight/2)+b.clientHeight/2+"px"}m.left=e[0]+"px";m.top=e[1]+"px"}}};a.fx.step.transform=function(a){var b=a.elem,c=a.start,d=a.end,e=a.pos,f={},g;if(!c||typeof d==="string"){if(!c){c=j.get(b)}if(i){b.style.zoom=1}a.end=d=l(d)}f.translate=[c.translate[0]+(d.translate[0]-c.translate[0])*e+.5|0,c.translate[1]+(d.translate[1]-c.translate[1])*e+.5|0];f.rotate=c.rotate+(d.rotate-c.rotate)*e;f.scale=[c.scale[0]+(d.scale[0]-c.scale[0])*e,c.scale[1]+(d.scale[1]-c.scale[1])*e];f.skew=[c.skew[0]+(d.skew[0]-c.skew[0])*e,c.skew[1]+(d.skew[1]-c.skew[1])*e];j.set(b,f,true)};a.transform={centerOrigin:"margin",radToDeg:function(a){return a*180/Math.PI}}})(jQuery)
