/*
 * jQuery 2d Transform
 * http://wiki.github.com/heygrady/transform/
 *
 * Copyright 2010, Grady Kuhnline
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 */
(function(f,g,i,b){
    var c=180/Math.PI;
    var j=200/Math.PI;
    var e=Math.PI/180;
    var d=2/1.8;
    var h=0.9;
    var a=Math.PI/200;
    f.extend({
        angle:{
            runit:/(deg|g?rad)/,
            radianToDegree:function(k){
                return k*c
                },
            radianToGrad:function(k){
                return k*j
                },
            degreeToRadian:function(k){
                return k*e
                },
            degreeToGrad:function(k){
                return k*d
                },
            gradToDegree:function(k){
                return k*h
                },
            gradToRadian:function(k){
                return k*a
                }
            }
    })
})(jQuery,this,this.document);
(function(f,e,b,g){
    var c=/progid:DXImageTransform\.Microsoft\.Matrix\(.*?\)/;
    f.extend({
        transform:function(h){
            h.transform=this;
            this.$elem=f(h);
            this.transformProperty=this.getTransformProperty();
            this.applyingMatrix=false;
            this.matrix=null;
            this.height=null;
            this.width=null;
            this.outerHeight=null;
            this.outerWidth=null;
            this.boxSizingValue=null;
            this.boxSizingProperty=null;
            this.attr=null
            }
        });
f.extend(f.transform,{
    funcs:["matrix","origin","reflect","reflectX","reflectXY","reflectY","rotate","scale","scaleX","scaleY","skew","skewX","skewY","translate","translateX","translateY"],
    rfunc:{
        angle:/^rotate|skew[X|Y]?$/,
        length:/^origin|translate[X|Y]?$/,
        scale:/^scale[X|Y]?$/,
        reflect:/^reflect(XY|X|Y)?$/
    }
});
f.fn.transform=function(h,i){
    return this.each(function(){
        var j=this.transform||new f.transform(this);
        if(h){
            j.exec(h,i)
            }
        })
};

f.transform.prototype={
    exec:function(h,i){
        var j=this.transformProperty;
        i=f.extend(true,{
            forceMatrix:false,
            preserve:false
        },i);
        this.attr=null;
        if(i.preserve){
            h=f.extend(true,this.getAttrs(true,true),h)
            }else{
            h=f.extend(true,{},h)
            }
            this.setAttrs(h);
        if(j&&!i.forceMatrix){
            return this.execFuncs(h)
            }else{
            if(f.browser.msie||(j&&i.forceMatrix)){
                return this.execMatrix(h)
                }
            }
        return false
    },
execFuncs:function(i){
    var h=[];
    var k=this.transformProperty;
    for(var j in i){
        if(j=="origin"){
            this[j].apply(this,f.isArray(i[j])?i[j]:[i[j]])
            }else{
            if(f.inArray(j,f.transform.funcs)!=-1){
                h.push(this.createTransformFunc(j,i[j]))
                }
            }
    }
    this.$elem.css(k,h.join(" "));
return true
},
execMatrix:function(l){
    var r,j=this.transformProperty,h;
    var p=function(C,m){
        h[C]=parseFloat(m)
        };

    for(var i in l){
        if(f.matrix[i]||i=="matrix"){
            h=f.isArray(l[i])?l[i]:[l[i]];
            f.each(h,p);
            var q;
            if(i=="matrix"){
                q=new f.matrix.M2x2(h[0],h[1],h[2],h[3]);
                if(h[4]){
                    this.setAttr("translateX",h[4])
                    }
                    if(h[5]){
                    this.setAttr("translateY",h[5])
                    }
                }else{
            q=f.matrix[i].apply(this,h)
            }
            if(!r){
            r=q
            }else{
            r=r.x(q)
            }
        }else{
        if(i=="origin"){
            h=f.isArray(l[i])?l[i]:[l[i]];
            this[i].apply(this,h)
            }
        }
    }
var n=this.getAttr("translate")||0,B=this.getAttr("translateX")||0,A=this.getAttr("translateY")||0;
if(!f.isArray(n)){
    n=[n,0]
    }
    if(!r){
    r=new f.matrix.M2x2(1,0,0,1)
    }
    var y=parseFloat(parseFloat(r.e(1,1)).toFixed(8)),w=parseFloat(parseFloat(r.e(2,1)).toFixed(8)),v=parseFloat(parseFloat(r.e(1,2)).toFixed(8)),u=parseFloat(parseFloat(r.e(2,2)).toFixed(8)),z=0,x=0;
if(n[0]||n[1]||B||A){
    var o=r.x(new f.matrix.V2(parseFloat(n[0])+parseFloat(B),parseFloat(n[1])+parseFloat(A)));
    z=parseFloat(parseFloat(o.e(1)).toFixed(8));
    x=parseFloat(parseFloat(o.e(2)).toFixed(8))
    }
    if(j&&j.substr(0,4)=="-moz"){
    this.$elem.css(j,"matrix("+y+", "+w+", "+v+", "+u+", "+z+"px, "+x+"px)")
    }else{
    if(j){
        this.$elem.css(j,"matrix("+y+", "+w+", "+v+", "+u+", "+z+", "+x+")")
        }else{
        if(jQuery.browser.msie){
            var s=this.$elem[0].style;
            var t="progid:DXImageTransform.Microsoft.Matrix(M11="+y+", M12="+v+", M21="+w+", M22="+u+", sizingMethod='auto expand')";
            var k=s.filter||jQuery.curCSS(this.$elem[0],"filter")||"";
            s.filter=c.test(k)?k.replace(c,t):k?k+" "+t:t;
            this.applyingMatrix=true;
            this.matrix=r;
            this.fixPosition(r,z,x);
            this.applyingMatrix=false;
            this.matrix=null
            }
        }
}
return true
},
origin:function(i,l){
    var k=this.transformProperty,h=this.safeOuterHeight(),j=this.safeOuterWidth();
    switch(i){
        case"left":
            i="0";
            break;
        case"right":
            i=j;
            break;
        case"center":
            i=j*0.5;
            break
            }
            switch(l){
        case"top":
            l="0";
            break;
        case"bottom":
            l=h;
            break;
        case"center":case g:
            l=h*0.5;
            break
            }
            i=/%/.test(i)?j*parseFloat(i)/100:parseFloat(i);
    if(typeof(l)!=="undefined"){
        l=/%/.test(l)?h*parseFloat(l)/100:parseFloat(l)
        }
        if(k){
        if(!l&&l!==0){
            this.$elem.css(k+"-origin",i+"px")
            }else{
            this.$elem.css(k+"-origin",i+"px "+l+"px")
            }
        }
    if(!l&&l!==0){
    this.setAttr("origin",i)
    }else{
    this.setAttr("origin",[i,l])
    }
    return true
},
getTransformProperty:function(){
    if(this.transformProperty){
        return this.transformProperty
        }
        var h=b.body;
    var i={
        transform:"transform",
        MozTransform:"-moz-transform",
        WebkitTransform:"-webkit-transform",
        OTransform:"-o-transform"
    };

    for(var j in i){
        if(typeof h.style[j]!="undefined"){
            this.transformProperty=i[j];
            return i[j]
            }
        }
    return null
},
createTransformFunc:function(k,l){
    if(f.transform.rfunc.reflect.test(k)){
        var j=l?f.matrix[k]():f.matrix.empty(),i=j.e(1,1),h=j.e(2,1),n=j.e(1,2),m=j.e(2,2);
        return"matrix("+i+", "+h+", "+n+", "+m+", 0, 0)"
        }
        l=d(k,l);
    if(!f.isArray(l)){
        return k+"("+l+")"
        }else{
        if(k=="matrix"){
            return"matrix("+l[0]+", "+l[1]+", "+l[2]+", "+l[3]+", "+(l[4]||0)+", "+(l[5]||0)+")"
            }else{
            return k+"("+l[0]+", "+l[1]+")"
            }
        }
},
fixPosition:function(q,n,m,s,h){
    var l=new f.matrix.calc(q,this.safeOuterHeight(),this.safeOuterWidth()),r=this.getAttr("origin");
    var k=l.originOffset({
        x:parseFloat(r[0]),
        y:parseFloat(r[1])
        });
    var i=l.sides();
    var j=this.$elem.css("position");
    if(j=="static"){
        j="relative"
        }
        var p={
        top:0,
        left:0
    };

    var o={
        position:j,
        top:(k.top+m+i.top+p.top)+"px",
        left:(k.left+n+i.left+p.left)+"px",
        zoom:1
    };

    this.$elem.css(o)
    }
};

var a=/^([\+\-]=)?([\d+.\-]+)(.*)$/;
function d(j,o){
    var q=!f.isArray(o)?[o]:o,h=f.transform.rfunc.angle,p=f.transform.rfunc.length;
    for(var l=0,m=q.length;l<m;l++){
        var k=a.exec(q[l]),n="";
        if(h.test(j)){
            n="deg";
            if(k[3]&&!f.angle.runit.test(k[3])){
                k[3]=null
                }
            }else{
        if(p.test(j)){
            n="px"
            }
        }
    if(!k){
        q[l]=0+n
        }else{
        if(!k[3]){
            q[l]+=n
            }
        }
}
return m==1?q[0]:q
}
})(jQuery,this,this.document);
(function(d,c,a,f){
    d.extend(d.transform.prototype,{
        safeOuterHeight:function(){
            return this.safeOuterLength("height")
            },
        safeOuterWidth:function(){
            return this.safeOuterLength("width")
            },
        safeOuterLength:function(l){
            var o="outer"+(l=="width"?"Width":"Height");
            if(d.browser.msie){
                l=l=="width"?"width":"height";
                if(this.applyingMatrix&&!this[o]&&this.matrix){
                    var k=new d.matrix.calc(this.matrix,1,1),m=k.size(),g=this.$elem[o]()/m[l];
                    this[o]=g;
                    return g
                    }else{
                    if(this.applyingMatrix&&this[o]){
                        return this[o]
                        }
                    }
                var n={
                height:["top","bottom"],
                width:["left","right"]
                };

            var h=this.$elem[0],j=parseFloat(d.curCSS(h,l,true)),p=this.boxSizingProperty,i=this.boxSizingValue;
            if(!this.boxSizingProperty){
                p=this.boxSizingProperty=e()||"box-sizing";
                i=this.boxSizingValue=this.$elem.css(p)||"content-box"
                }
                if(this[o]&&this[l]==j){
                return this[o]
                }else{
                this[l]=j
                }
                if(p&&(i=="padding-box"||i=="content-box")){
                j+=parseFloat(d.curCSS(h,"padding-"+n[l][0],true))||0+parseFloat(d.curCSS(h,"padding-"+n[l][1],true))||0
                }
                if(p&&i=="content-box"){
                j+=parseFloat(d.curCSS(h,"border-"+n[l][0]+"-width",true))||0+parseFloat(d.curCSS(h,"border-"+n[l][1]+"-width",true))||0
                }
                this[o]=j;
            return j
            }
            return this.$elem[o]()
        }
    });
var b=null;
function e(){
    if(b){
        return b
        }
        var h={
        boxSizing:"box-sizing",
        MozBoxSizing:"-moz-box-sizing",
        WebkitBoxSizing:"-webkit-box-sizing",
        OBoxSizing:"-o-box-sizing"
    },g=a.body;
    for(var i in h){
        if(typeof g.style[i]!="undefined"){
            b=h[i];
            return b
            }
        }
    return null
}
})(jQuery,this,this.document);
(function(c,d,g,b){
    var h=/(origin|matrix|reflect(X|XY|Y)?|rotate|scale[XY]?|skew[XY]?|translate[XY]?)\((.*?)\)/g,f=/^origin|matrix|reflect(XY|[XY])?|rotate|scale[XY]?|skew[XY]?|translate[XY]?$/,e="data-transform",i=/\s/,a=/,\s/;
    c.extend(c.transform.prototype,{
        setAttrs:function(j){
            var k="",m;
            for(var l in j){
                if(f.test(l)){
                    m=j[l];
                    if(c.isArray(m)){
                        m=m.join(", ")
                        }
                        k+=" "+l+"("+m+")"
                    }
                }
            this.attr=c.trim(k);
        this.$elem.attr(e,this.attr)
        },
    setAttr:function(p,q){
        if(!f.test(p)){
            return
        }
        if(c.isArray(q)){
            q=q.join(", ")
            }
            q=c.trim(q);
        var n=this.attr||this.$elem.attr(e);
        if(!n){
            this.attr=q;
            this.$elem.attr(e,this.attr)
            }else{
            if(n.indexOf(p)>-1){
                this.attr=n+" "+q;
                this.$elem.attr(e,this.attr)
                }
            }
        var m=[],j,r;
    h.exec("");
        while((j=h.exec(n))!==null){
        m.push(j[0])
        }
        for(var o=0,k=m.length;o<k;o++){
        h.exec("");
        r=h.exec(m[o]);
        if(p==r[1]){
            m[o]=q;
            break
        }
    }
    this.attr=m.join(" ");
    this.$elem.attr(e,this.attr)
    },
getAttrs:function(){
    var o=this.attr||this.$elem.attr(e);
    if(!o){
        return{}
    }
    var m=[],n={},j,r,q;
h.exec("");
    while((j=h.exec(o))!==null){
    m.push(j[0])
    }
    for(var p=0,k=m.length;p<k;p++){
    h.exec("");
    r=h.exec(m[p]);
    if(r&&f.test(r[1])){
        q=r[3].split(a);
        n[r[1]]=q.length==1?q[0]:q
        }
    }
return n
},
getAttr:function(k){
    if(!f.test(k)){
        return null
        }
        var j=this.attr||this.$elem.attr(e);
    var s=c.transform.rfunc.scale;
    if(k!="origin"&&k!="matrix"&&(!j||j.indexOf(k)===-1)){
        return s.test(k)?1:null
        }
        var r=[],t,n,p=null;
    h.exec("");
    while((t=h.exec(j))!==null){
        r.push(t[0])
        }
        for(var o=0,m=r.length;o<m;o++){
        h.exec("");
        n=h.exec(r[o]);
        if(k==n[1]){
            p=n[3].split(a);
            return p.length==1?p[0]:p
            }
        }
    if(k=="origin"){
    var q=/%/;
    p=this.transformProperty?this.$elem.css(this.transformProperty+"-origin"):[this.safeOuterWidth()*0.5,this.safeOuterHeight()*0.5];
    p=c.isArray(p)?p:p.split(i);
    if(q.test(p[0])){
        if(q.test(p[0])){
            p[0]=this.safeOuterWidth()*(parseFloat(p[0])/100)
            }
            if(q.test(p[1])){
            p[1]=this.safeOuterHeight()*(parseFloat(p[1])/100)
            }
        }
}else{
    if(k=="matrix"){
        p=[1,0,0,1,0,0]
        }else{
        if(s.test(k)){
            p=1
            }
        }
}
return c.isArray(p)&&p.length==1?p[0]:p
}
})
})(jQuery,this,this.document);
(function(c,b,a,d){
    c.extend({
        matrix:{}
    });
c.extend(c.matrix,{
    calc:function(e,f,g){
        this.matrix=e;
        this.outerHeight=f;
        this.outerWidth=g
        },
    V2:function(e,f){
        this.elements=[e,f]
        },
    M2x2:function(f,e,h,g){
        this.elements=[f,e,h,g]
        },
    empty:function(){
        return new c.matrix.M2x2(1,0,0,1)
        },
    reflect:function(){
        return new c.matrix.M2x2(-1,0,0,-1)
        },
    reflectX:function(){
        return new c.matrix.M2x2(1,0,0,-1)
        },
    reflectXY:function(){
        return new c.matrix.M2x2(0,1,1,0)
        },
    reflectY:function(){
        return new c.matrix.M2x2(-1,0,0,1)
        },
    rotate:function(i){
        var f=c.angle.degreeToRadian(i),h=Math.cos(f),j=Math.sin(f);
        var g=h,e=j,l=-j,k=h;
        return new c.matrix.M2x2(g,l,e,k)
        },
    scale:function(f,e){
        f=f||f===0?f:1;
        e=e||e===0?e:f;
        return new c.matrix.M2x2(f,0,0,e)
        },
    scaleX:function(e){
        return c.matrix.scale(e,1)
        },
    scaleY:function(e){
        return c.matrix.scale(1,e)
        },
    skew:function(h,f){
        h=h||0;
        f=f||0;
        var i=c.angle.degreeToRadian(h),g=c.angle.degreeToRadian(f),e=Math.tan(i),j=Math.tan(g);
        return new c.matrix.M2x2(1,e,j,1)
        },
    skewX:function(e){
        return c.matrix.skew(e)
        },
    skewY:function(e){
        return c.matrix.skew(0,e)
        }
    });
c.matrix.calc.prototype={
    coord:function(e,h){
        var g=this.matrix,f=g.x(new c.matrix.V2(e,h));
        return{
            x:f.e(1),
            y:f.e(2)
            }
        },
corners:function(){
    var f=this.outerHeight,e=this.outerWidth;
    return{
        tl:this.coord(0,0),
        bl:this.coord(0,f),
        tr:this.coord(e,0),
        br:this.coord(e,f)
        }
    },
sides:function(){
    var f=this.corners();
    var g={
        top:0,
        bottom:0,
        left:0,
        right:0
    },e,i;
    for(var h in f){
        e=f[h].x;
        i=f[h].y;
        if(i<g.top){
            g.top=i
            }
            if(i>g.bottom){
            g.bottom=i
            }
            if(e<g.left){
            g.left=e
            }
            if(e>g.right){
            g.right=e
            }
        }
    return g
},
size:function(){
    var e=this.sides();
    return{
        height:Math.abs(e.bottom-e.top),
        width:Math.abs(e.right-e.left)
        }
    },
originOffset:function(h,g){
    h=h?h:{
        x:this.outerWidth*0.5,
        y:this.outerHeight*0.5
        };

    g=g?g:{
        x:0,
        y:0
    };

    var e=this.coord(h.x,h.y);
    var f=this.coord(g.x,g.y);
    return{
        top:(f.y-g.y)-(e.y-h.y),
        left:(f.x-g.x)-(e.x-h.x)
        }
    }
};

c.matrix.M2x2.prototype={
    x:function(g){
        var f=this.elements,e=g.elements;
        if(e.length==2){
            return new c.matrix.V2(f[0]*e[0]+f[1]*e[1],f[2]*e[0]+f[3]*e[1])
            }else{
            if(e.length==4){
                return new c.matrix.M2x2(f[0]*e[0]+f[1]*e[2],f[0]*e[1]+f[1]*e[3],f[2]*e[0]+f[3]*e[2],f[2]*e[1]+f[3]*e[3])
                }
            }
        return false
    },
e:function(g,e){
    var f=0;
    if(g==1&&e==2){
        f=1
        }else{
        if(g==2&&e==1){
            f=2
            }else{
            if(g==2&&e==2){
                f=3
                }
            }
    }
return this.elements[f]
}
};

c.matrix.V2.prototype={
    e:function(e){
        return this.elements[e-1]
        }
    }
})(jQuery,this,this.document);
(function(e,d,b,f){
    var a=/^([+\-]=)?([\d+.\-]+)(.*)$/;
    var c=/^(.*?)\s+([+\-]=)?([\d+.\-]+)(.*)$/;
    var h=e.fn.animate;
    e.fn.animate=function(m,j,l,k){
        if(m&&!jQuery.isEmptyObject(m)){
            var i=this;
            jQuery.each(m,function(n,o){
                if(e.inArray(n,e.transform.funcs)!=-1){
                    if(e.transform.rfunc.reflect.test(n)){
                        var p=o?e.matrix[n]():e.matrix.empty(),t=p.elements;
                        o=[t[0],t[1],t[2],t[3]]
                        }
                        var r=a.exec(o);
                    if((r&&r[3])||e.isArray(o)){
                        var q,u,v=[];
                        if(e.isArray(o)){
                            e.each(o,function(w){
                                r=a.exec(this);
                                q=parseFloat(r[2]);
                                u=r[3]||"px";
                                v.push({
                                    end:(r[1]?r[1]:"")+q,
                                    unit:u
                                })
                                })
                            }else{
                            q=parseFloat(r[2]);
                            u=r[3]||"px";
                            v.push({
                                end:(r[1]?r[1]:"")+q,
                                unit:u
                            });
                            var s=0;
                            while(r=c.exec(u)){
                                v[s].unit=r[1];
                                v.push({
                                    end:(r[2]?r[2]:"")+parseFloat(r[3]),
                                    unit:r[4]
                                    });
                                u=r[4];
                                s++
                            }
                        }
                        i.data("data-animate-"+n,v);
                    m[n]=v[0].end
                    }
                }
            })
}
return h.apply(this,arguments)
    };

var g=e.fx.prototype.cur;
e.fx.prototype.cur=function(k){
    if(e.inArray(this.prop,e.transform.funcs)!=-1){
        this.transform=this.transform||this.elem.transform||new e.transform(this.elem);
        var i=e.transform.rfunc;
        var j=this.transform.getAttr(this.prop),l=a.exec(e.isArray(j)?j[0]:j);
        if(j===null||l===null){
            j=i.scale.test(this.prop)||i.reflect.test(this.prop)?1:0;
            l=[null,null,j]
            }
            return parseFloat(l[2])
        }
        return g.apply(this,arguments)
    };

e.fx.multivalueInit=function(l){
    var j=e(l.elem),i=l.transform.getAttr(l.prop),k=j.data("data-animate-"+l.prop);
    if(k){
        j.removeData("data-animate-"+l.prop)
        }
        if(e.transform.rfunc.reflect.test(l.prop)){
        i=l.transform.getAttr("matrix")
        }
        l.values=[];
    if(e.isArray(i)&&!e.isArray(k)){
        k=[{
            end:parseFloat(l.end),
            unit:l.unit
            },{
            end:e.transform.rfunc.scale.test(l.prop)?1:0,
            unit:l.unit
            }]
        }
        if(k){
        var o,n=e.transform.rfunc.scale,m;
        e.each(k,function(p,q){
            if(e.isArray(i)){
                o=i[p]
                }else{
                if(p>0){
                    o=n.test(l.prop)?i:null
                    }else{
                    o=i
                    }
                }
            if(!o&&o!==0){
            o=n.test(l.prop)?1:0
            }
            o=parseFloat(o);
            m=a.exec(q.end);
            if(m&&m[1]){
            q.end=((m[1]==="-="?-1:1)*parseFloat(m[2]))+o
            }
            l.values.push({
            start:parseFloat(o),
            end:parseFloat(q.end),
            unit:q.unit
            })
        })
    }else{
    l.values.push({
        start:parseFloat(l.start),
        end:parseFloat(l.end),
        unit:l.unit
        })
    }
};

e.fx.multivalueStep={
    _default:function(i){
        e.each(i.values,function(j,k){
            i.values[j].now=k.start+((k.end-k.start)*i.pos)
            })
        }
    };

e.each(e.transform.funcs,function(j,k){
    e.fx.step[k]=function(n){
        if(!n.transformInit){
            n.transform=n.transform||n.elem.transform||new e.transform(n.elem);
            e.fx.multivalueInit(n);
            if(n.values.length>1){
                n.multiple=true
                }
                var m=e.transform.rfunc;
            if(m.angle.test(n.prop)){
                n.unit="deg"
                }else{
                if(m.scale.test(n.prop)){
                    n.unit=""
                    }else{
                    if(m.reflect.test(n.prop)){
                        n.unit=""
                        }else{
                        if(n.prop=="matrix"){
                            n.unit=""
                            }
                        }
                }
        }
    e.each(n.values,function(p){
    n.values[p].unit=n.unit
    });
n.transformInit=true
}
if(n.multiple){
    (e.fx.multivalueStep[n.prop]||e.fx.multivalueStep._default)(n)
    }else{
    n.values[0].now=n.now
    }
    var l=[];
e.each(n.values,function(p,q){
    if(q.unit=="deg"){
        while(q.now>=360){
            q.now-=360
            }while(q.now<=-360){
            q.now+=360
            }
        }
    l.push(parseFloat(parseFloat(q.now).toFixed(8))+q.unit)
    });
var i={},o=e.transform.rfunc.reflect.test(n.prop)?"matrix":n.prop;
i[o]=n.multiple?l:l[0];
n.transform.exec(i,{
    preserve:true
})
}
})
})(jQuery,this,this.document);
