123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688 |
- function transitionEnd() {
- var e = document.createElement("bootstrap");
- var t = {
- WebkitTransition: "webkitTransitionEnd",
- MozTransition: "transitionend",
- OTransition: "oTransitionEnd otransitionend",
- transition: "transitionend"
- };
- for (var n in t) {
- if (e.style[n] !== undefined) {
- return {
- end: t[n]
- }
- }
- }
- return false
- }(function(e) {
- e.fn.smartZoom = function(t) {
- function r(e) {}
- function s(e, t) {
- var r = n.data("smartZoomData");
- if (r.currentWheelDelta * t < 0) r.currentWheelDelta = 0;
- r.currentWheelDelta += t;
- i.zoom(r.mouseWheelDeltaFactor * r.currentWheelDelta, {
- x: e.pageX,
- y: e.pageY
- })
- }
- function o(e) {
- e.preventDefault()
- }
- function u() {
- var e = n.data("smartZoomData");
- if (e.settings.mouseMoveEnabled != true || e.settings.moveCursorEnabled != true) return;
- var t = S();
- var r = t.width / e.originalSize.width;
- if (parseInt(r * 100) > parseInt(e.adjustedPosInfos.scale * 100)) n.css({
- cursor: "move"
- });
- else n.css({
- cursor: "default"
- })
- }
- function a(e) {
- m(e.pageX, e.pageY)
- }
- function f(t) {
- t.preventDefault();
- e(document).on("mousemove.smartZoom", l);
- e(document).bind("mouseup.smartZoom", c);
- var r = n.data("smartZoomData");
- r.moveCurrentPosition = new A(t.pageX, t.pageY);
- r.moveLastPosition = new A(t.pageX, t.pageY)
- }
- function l(e) {
- var t = n.data("smartZoomData");
- if (t.mouseMoveForPan || !t.mouseMoveForPan && t.moveCurrentPosition.x != e.pageX && t.moveCurrentPosition.y != e.pageY) {
- t.mouseMoveForPan = true;
- v(e.pageX, e.pageY, 0, false)
- }
- }
- function c(t) {
- var r = n.data("smartZoomData");
- if (r.mouseMoveForPan) {
- r.mouseMoveForPan = false;
- if (r.moveLastPosition.distance(r.moveCurrentPosition) > 4) {
- var i = r.moveLastPosition.interpolate(r.moveCurrentPosition, -4);
- v(i.x, i.y, 500, true)
- } else {
- v(r.moveLastPosition.x, r.moveLastPosition.y, 0, true)
- }
- } else if (r.settings.zoomOnSimpleClick) {
- m(t.pageX, t.pageY)
- }
- e(document).unbind("mousemove.smartZoom");
- e(document).unbind("mouseup.smartZoom")
- }
- function h(t) {
- t.preventDefault();
- e(document).unbind("touchmove.smartZoom");
- e(document).unbind("touchend.smartZoom");
- e(document).bind("touchmove.smartZoom", p);
- e(document).bind("touchend.smartZoom", d);
- var r = t.originalEvent.touches;
- var i = r[0];
- var s = n.data("smartZoomData");
- s.touch.touchMove = false;
- s.touch.touchPinch = false;
- s.moveCurrentPosition = new A(i.pageX, i.pageY);
- s.moveLastPosition = new A(i.pageX, i.pageY);
- s.touch.lastTouchPositionArr = new Array;
- var o;
- var u = r.length;
- for (var a = 0; a < u; ++a) {
- o = r[a];
- s.touch.lastTouchPositionArr.push(new A(o.pageX, o.pageY))
- }
- }
- function p(e) {
- e.preventDefault();
- var t = n.data("smartZoomData");
- var r = e.originalEvent.touches;
- var s = r.length;
- var o = r[0];
- if (s == 1 && !t.touch.touchPinch && t.settings.touchMoveEnabled == true) {
- if (!t.touch.touchMove) {
- var u = t.touch.lastTouchPositionArr[0];
- if (u.distance(new A(o.pageX, o.pageY)) < 3) {
- return
- } else t.touch.touchMove = true
- }
- v(o.pageX, o.pageY, 0, false)
- } else if (s == 2 && !t.touch.touchMove && t.settings.pinchEnabled == true) {
- t.touch.touchPinch = true;
- var a = r[1];
- var f = t.touch.lastTouchPositionArr[0];
- var l = t.touch.lastTouchPositionArr[1];
- var c = new A(o.pageX, o.pageY);
- var h = new A(a.pageX, a.pageY);
- var p = c.distance(h);
- var d = f.distance(l);
- var m = p - d;
- if (Math.abs(m) < 3) return;
- var g = new A((c.x + h.x) / 2, (c.y + h.y) / 2);
- var y = S();
- var b = t.originalSize;
- var w = y.width / b.width;
- var E = p / d;
- var x = y.width * E / b.width;
- i.zoom(x - w, g, 0);
- t.touch.lastTouchPositionArr[0] = c;
- t.touch.lastTouchPositionArr[1] = h
- }
- }
- function d(t) {
- t.preventDefault();
- var r = t.originalEvent.touches.length;
- if (r == 0) {
- e(document).unbind("touchmove.smartZoom");
- e(document).unbind("touchend.smartZoom")
- }
- var i = n.data("smartZoomData");
- if (i.touch.touchPinch) return;
- if (i.touch.touchMove) {
- if (i.moveLastPosition.distance(i.moveCurrentPosition) > 2) {
- var s = i.moveLastPosition.interpolate(i.moveCurrentPosition, -4);
- v(s.x, s.y, 500, true)
- }
- } else {
- if (i.settings.dblTapEnabled == true && i.touch.lastTouchEndTime != 0 && (new Date).getTime() - i.touch.lastTouchEndTime < 400) {
- var o = i.touch.lastTouchPositionArr[0];
- m(o.x, o.y)
- }
- i.touch.lastTouchEndTime = (new Date).getTime()
- }
- }
- function v(e, t, i, s) {
- g(r.PAN);
- var o = n.data("smartZoomData");
- o.moveLastPosition.x = o.moveCurrentPosition.x;
- o.moveLastPosition.y = o.moveCurrentPosition.y;
- var u = n.offset();
- var a = S();
- var f = u.left + (e - o.moveCurrentPosition.x);
- var l = u.top + (t - o.moveCurrentPosition.y);
- var c = y(f, l, a.width, a.height);
- x(r.PAN, r.START, false);
- E(n, c.x, c.y, a.width, a.height, i, s == true ?
- function() {
- x(r.PAN, r.END, false)
- } : null);
- o.moveCurrentPosition.x = e;
- o.moveCurrentPosition.y = t
- }
- function m(e, t) {
- var r = n.data("smartZoomData");
- var s = r.originalSize;
- var o = S();
- var u = o.width / s.width;
- var a = r.adjustedPosInfos.scale;
- var f = parseFloat(r.settings.dblClickMaxScale);
- var l;
- if (u.toFixed(2) > f.toFixed(2) || Math.abs(f - u) > Math.abs(u - a)) {
- l = f - u
- } else {
- l = a - u
- }
- i.zoom(l, {
- x: e,
- y: t
- })
- }
- function g(t) {
- var r = n.data("smartZoomData");
- if (r.transitionObject) {
- if (r.transitionObject.cssAnimHandler) n.off(e.support.transition, r.transitionObject.cssAnimTimer);
- var i = r.originalSize;
- var s = S();
- var o = new Object;
- o[r.transitionObject.transition] = "all 0s";
- if (r.transitionObject.css3dSupported) {
- o[r.transitionObject.transform] = "translate3d(" + s.x + "px, " + s.y + "px, 0) scale3d(" + s.width / i.width + "," + s.height / i.height + ", 1)"
- } else {
- o[r.transitionObject.transform] = "translateX(" + s.x + "px) translateY(" + s.y + "px) scale(" + s.width / i.width + "," + s.height / i.height + ")"
- }
- n.css(o)
- } else {
- n.stop()
- }
- u();
- if (t != null) x(t, "", true)
- }
- function y(e, t, r, i) {
- var s = n.data("smartZoomData");
- var o = Math.min(s.adjustedPosInfos.top, t);
- o += Math.max(0, s.adjustedPosInfos.top + s.adjustedPosInfos.height - (o + i));
- var u = Math.min(s.adjustedPosInfos.left, e);
- u += Math.max(0, s.adjustedPosInfos.left + s.adjustedPosInfos.width - (u + r));
- return new A(u.toFixed(2), o.toFixed(2))
- }
- function b(e) {
- n.unbind("load.smartZoom");
- i.init.apply(n, [e.data.arguments])
- }
- function w() {
- var e = n.data("smartZoomData");
- var t = e.containerDiv;
- var r = e.originalSize;
- var i = t.parent().offset();
- var s = C(e.settings.left, i.left, t.parent().width());
- var o = C(e.settings.top, i.top, t.parent().height());
- t.offset({
- left: s,
- top: o
- });
- t.width(N(e.settings.width, t.parent().width(), s - i.left));
- t.height(N(e.settings.height, t.parent().height(), o - i.top));
- var a = L(t);
- var f = Math.min(Math.min(a.width / r.width, a.height / r.height), 1).toFixed(2);
- var l = r.width * f;
- var c = r.height * f;
- e.adjustedPosInfos = {
- left: (a.width - l) / 2 + i.left,
- top: (a.height - c) / 2 + i.top,
- width: l,
- height: c,
- scale: f
- };
- g();
- E(n, e.adjustedPosInfos.left, e.adjustedPosInfos.top, l, c, 0, function() {
- n.css("visibility", "visible")
- });
- u();
- }
- function E(t, r, i, s, o, u, a) {
- var f = n.data("smartZoomData");
- var l = f.containerDiv.offset();
- var c = r - l.left;
- var h = i - l.top;
- if (f.transitionObject != null) {
- var p = f.originalSize;
- var d = new Object;
- d[f.transitionObject.transform + "-origin"] = "0 0";
- d[f.transitionObject.transition] = "all " + u / 1e3 + "s ease-out";
- if (f.transitionObject.css3dSupported) d[f.transitionObject.transform] = "translate3d(" + c + "px, " + h + "px, 0) scale3d(" + s / p.width + "," + o / p.height + ", 1)";
- else d[f.transitionObject.transform] = "translateX(" + c + "px) translateY(" + h + "px) scale(" + s / p.width + "," + o / p.height + ")";
- if (a != null) {
- f.transitionObject.cssAnimHandler = a;
- t.one(e.support.transition.end, f.transitionObject.cssAnimHandler)
- }
- t.css(d)
- } else {
- t.animate({
- "margin-left": c,
- "margin-top": h,
- width: s,
- height: o
- }, {
- duration: u,
- easing: f.settings.easing,
- complete: function() {
- if (a != null) a()
- }
- })
- }
- }
- function S(e) {
- var t = n.data("smartZoomData");
- var r = n.width();
- var i = n.height();
- var s = n.offset();
- var o = parseInt(s.left);
- var u = parseInt(s.top);
- var a = t.containerDiv.offset();
- if (e != true) {
- o = parseInt(o) - a.left;
- u = parseInt(u) - a.top
- }
- if (t.transitionObject != null) {
- var f = n.css(t.transitionObject.transform);
- if (f && f != "" && f.search("matrix") != -1) {
- var l;
- var c;
- if (f.search("matrix3d") != -1) {
- c = f.replace("matrix3d(", "").replace(")", "").split(",");
- l = c[0]
- } else {
- c = f.replace("matrix(", "").replace(")", "").split(",");
- l = c[3];
- o = parseFloat(c[4]);
- u = parseFloat(c[5]);
- if (e) {
- o = parseFloat(o) + a.left;
- u = parseFloat(u) + a.top
- }
- }
- r = l * r;
- i = l * i
- }
- }
- return {
- x: o,
- y: u,
- width: r,
- height: i
- }
- }
- function x(e, t, i) {
- var s = n.data("smartZoomData");
- var o = "";
- if (i == true && s.currentActionType != e) {
- o = s.currentActionType + "_" + r.END;
- s.currentActionType = "";
- s.currentActionStep = ""
- } else {
- if (s.currentActionType != e || s.currentActionStep == r.END) {
- s.currentActionType = e;
- s.currentActionStep = r.START;
- o = s.currentActionType + "_" + s.currentActionStep
- } else if (s.currentActionType == e && t == r.END) {
- s.currentActionStep = r.END;
- o = s.currentActionType + "_" + s.currentActionStep;
- s.currentActionType = "";
- s.currentActionStep = ""
- }
- }
- if (o != "") {
- var u = jQuery.Event(o);
- u.targetRect = S(true);
- u.scale = u.targetRect.width / s.originalSize.width;
- n.trigger(u)
- }
- }
- function T() {
- var t = document.body || document.documentElement;
- var n = t.style;
- var r = ["transition", "WebkitTransition", "MozTransition", "MsTransition", "OTransition"];
- var i = ["transition", "-webkit-transition", "-moz-transition", "-ms-transition", "-o-transition"];
- var s = ["transform", "-webkit-transform", "-moz-transform", "-ms-transform", "-o-transform"];
- var o = r.length;
- var u;
- for (var a = 0; a < o; a++) {
- if (n[r[a]] != null) {
- transformStr = s[a];
- var f = e('<div style="position:absolute;">Translate3d Test</div>');
- e("body").append(f);
- u = new Object;
- u[s[a]] = "translate3d(20px,0,0)";
- f.css(u);
- css3dSupported = f.offset().left - e("body").offset().left == 20;
- f.empty().remove();
- if (css3dSupported) {
- return {
- transition: i[a],
- transform: s[a],
- css3dSupported: css3dSupported
- }
- }
- }
- }
- return null
- }
- function N(e, t, n) {
- if (e.search && e.search("%") != -1) return (t - n) * (parseInt(e) / 100);
- else return parseInt(e)
- }
- function C(e, t, n) {
- if (e.search && e.search("%") != -1) return t + n * (parseInt(e) / 100);
- else return t + parseInt(e)
- }
- function k() {
- w()
- }
- function L(e) {
- var t = e.offset();
- if (!t) return null;
- var n = t.left;
- var r = t.top;
- return {
- x: n,
- y: r,
- width: e.outerWidth(),
- height: e.outerHeight()
- }
- }
- function A(e, t) {
- this.x = e;
- this.y = t;
- this.toString = function() {
- return "(x=" + this.x + ", y=" + this.y + ")"
- };
- this.interpolate = function(e, t) {
- var n = t * this.x + (1 - t) * e.x;
- var r = t * this.y + (1 - t) * e.y;
- return new A(n, r)
- };
- this.distance = function(e) {
- return Math.sqrt(Math.pow(e.y - this.y, 2) + Math.pow(e.x - this.x, 2))
- }
- }
- var n = this;
- r.ZOOM = "SmartZoom_ZOOM";
- r.PAN = "SmartZoom_PAN";
- r.START = "START";
- r.END = "END";
- r.DESTROYED = "SmartZoom_DESTROYED";
- var i = {
- init: function(t) {
- if (n.data("smartZoomData")) return;
- settings = e.extend({
- top: "0",
- left: "0",
- width: "100%",
- height: "100%",
- easing: "smartZoomEasing",
- initCallback: null,
- maxScale: 3,
- dblClickMaxScale: 1.8,
- mouseEnabled: true,
- scrollEnabled: true,
- dblClickEnabled: true,
- mouseMoveEnabled: true,
- moveCursorEnabled: true,
- adjustOnResize: true,
- touchEnabled: true,
- dblTapEnabled: true,
- zoomOnSimpleClick: true,
- pinchEnabled: true,
- touchMoveEnabled: true,
- containerBackground: "#FFFFFF",
- containerClass: ""
- }, t);
- var r = n.attr("style");
- var i = "smartZoomContainer" + (new Date).getTime();
- var u = e('<div id="' + i + '" class="' + settings.containerClass + '"></div>');
- n.before(u);
- n.remove();
- u = e("#" + i);
- u.css({
- overflow: "hidden"
- });
- if (settings.containerClass == "") u.css({
- "background-color": settings.containerBackground
- });
- u.append(n);
- var l = new Object;
- l.lastTouchEndTime = 0;
- l.lastTouchPositionArr = null;
- l.touchMove = false;
- l.touchPinch = false;
- n.data("smartZoomData", {
- settings: settings,
- containerDiv: u,
- originalSize: {
- width: n.width(),
- height: n.height()
- },
- originalPosition: n.offset(),
- transitionObject: T(),
- touch: l,
- mouseWheelDeltaFactor: .15,
- currentWheelDelta: 0,
- adjustedPosInfos: null,
- moveCurrentPosition: null,
- moveLastPosition: null,
- mouseMoveForPan: false,
- currentActionType: "",
- initialStyles: r,
- currentActionStep: ""
- });
- w();
- if (settings.touchEnabled == true) n.bind("touchstart.smartZoom", h);
- if (settings.mouseEnabled == true) {
- if (settings.mouseMoveEnabled == true) n.bind("mousedown.smartZoom", f);
- if (settings.scrollEnabled == true) {
- u.bind("mousewheel.smartZoom", s);
- u.bind("mousewheel.smartZoom DOMMouseScroll.smartZoom", o)
- }
- if (settings.dblClickEnabled == true && settings.zoomOnSimpleClick == false) u.bind("dblclick.smartZoom", a)
- }
- document.ondragstart = function() {
- return false
- };
- if (settings.adjustOnResize == true) e(window).bind("resize.smartZoom", k);
- if (settings.initCallback != null) settings.initCallback.apply(this, n)
- },
- zoom: function(e, t, i) {
- var s = n.data("smartZoomData");
- var o;
- var a;
- if (!t) {
- var f = L(s.containerDiv);
- o = f.x + f.width / 2;
- a = f.y + f.height / 2
- } else {
- o = t.x;
- a = t.y
- }
- g(r.ZOOM);
- var l = S(true);
- var c = s.originalSize;
- var h = l.width / c.width + e;
- h = Math.max(s.adjustedPosInfos.scale, h);
- h = Math.min(s.settings.maxScale, h);
- var p = c.width * h;
- var d = c.height * h;
- var v = o - l.x;
- var m = a - l.y;
- var b = p / l.width;
- var w = l.x - (v * b - v);
- var T = l.y - (m * b - m);
- var N = y(w, T, p, d);
- if (i == null) i = 700;
- x(r.ZOOM, r.START, false);
- E(n, N.x, N.y, p, d, i, function() {
- s.currentWheelDelta = 0;
- u();
- x(r.ZOOM, r.END, false)
- })
- },
- pan: function(e, t, i) {
- if (e == null || t == null) return;
- if (i == null) i = 700;
- var s = n.offset();
- var o = S();
- var u = y(s.left + e, s.top + t, o.width, o.height);
- if (u.x != s.left || u.y != s.top) {
- g(r.PAN);
- x(r.PAN, r.START, false);
- E(n, u.x, u.y, o.width, o.height, i, function() {
- x(r.PAN, r.END, false)
- })
- }
- },
- destroy: function() {
- var t = n.data("smartZoomData");
- if (!t) return;
- g();
- var i = t.containerDiv;
- n.unbind("mousedown.smartZoom");
- n.bind("touchstart.smartZoom");
- i.unbind("mousewheel.smartZoom");
- i.unbind("dblclick.smartZoom");
- i.unbind("mousewheel.smartZoom DOMMouseScroll.smartZoom");
- e(window).unbind("resize.smartZoom");
- e(document).unbind("mousemove.smartZoom");
- e(document).unbind("mouseup.smartZoom");
- e(document).unbind("touchmove.smartZoom");
- e(document).unbind("touchend.smartZoom");
- n.css({
- cursor: "default"
- });
- i.before(n);
- E(n, t.originalPosition.left, t.originalPosition.top, t.originalSize.width, t.originalSize.height, 5);
- n.removeData("smartZoomData");
- i.remove();
- n.attr("style", t.initialStyles);
- n.trigger(r.DESTROYED)
- },
- isPluginActive: function() {
- return n.data("smartZoomData") != undefined
- }
- };
- if (i[t]) {
- return i[t].apply(this, Array.prototype.slice.call(arguments, 1))
- } else if (typeof t === "object" || !t) {
- if (n[0].tagName.toLowerCase() == "img" && !n[0].complete) {
- n.bind("load.smartZoom", {
- arguments: arguments[0]
- }, b)
- } else {
- i.init.apply(n, [arguments[0]])
- }
- } else {
- e.error("Method " + t + " does not exist on e-smartzoom jquery plugin")
- }
- }
- })(jQuery);
- (function(e) {
- e.extend(e.easing, {
- smartZoomEasing: function(t, n, r, i, s) {
- return e.easing["smartZoomOutQuad"](t, n, r, i, s)
- },
- smartZoomOutQuad: function(e, t, n, r, i) {
- return -r * (t /= i) * (t - 2) + n
- }
- })
- })(jQuery);
- (function(e) {
- function t(t) {
- var n = t || window.event,
- r = [].slice.call(arguments, 1),
- i = 0,
- s = true,
- o = 0,
- u = 0;
- t = e.event.fix(n);
- t.type = "mousewheel";
- if (n.wheelDelta) {
- i = n.wheelDelta / 120
- }
- if (n.detail) {
- i = -n.detail / 3
- }
- u = i;
- if (n.axis !== undefined && n.axis === n.HORIZONTAL_AXIS) {
- u = 0;
- o = -1 * i
- }
- if (n.wheelDeltaY !== undefined) {
- u = n.wheelDeltaY / 120
- }
- if (n.wheelDeltaX !== undefined) {
- o = -1 * n.wheelDeltaX / 120
- }
- r.unshift(t, i, o, u);
- return (e.event.dispatch || e.event.handle).apply(this, r)
- }
- var n = ["DOMMouseScroll", "mousewheel"];
- if (e.event.fixHooks) {
- for (var r = n.length; r;) {
- e.event.fixHooks[n[--r]] = e.event.mouseHooks
- }
- }
- e.event.special.mousewheel = {
- setup: function() {
- if (this.addEventListener) {
- for (var e = n.length; e;) {
- this.addEventListener(n[--e], t, false)
- }
- } else {
- this.onmousewheel = t
- }
- },
- teardown: function() {
- if (this.removeEventListener) {
- for (var e = n.length; e;) {
- this.removeEventListener(n[--e], t, false)
- }
- } else {
- this.onmousewheel = null
- }
- }
- };
- e.fn.extend({
- mousewheel: function(e) {
- return e ? this.bind("mousewheel", e) : this.trigger("mousewheel")
- },
- unmousewheel: function(e) {
- return this.unbind("mousewheel", e)
- }
- })
- })(jQuery);
- $.fn.emulateTransitionEnd = function(e) {
- var t = false,
- n = this;
- $(this).one($.support.transition.end, function() {
- t = true
- });
- var r = function() {
- if (!t) $(n).trigger($.support.transition.end)
- };
- setTimeout(r, e);
- return this;
- };
- $(function() {
- $.support.transition = transitionEnd()
- })
|