﻿/*
* 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);
