Created
February 14, 2017 09:22
-
-
Save thebrainroom/2a24c7f59af626391c321e7913df831e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
! function(e) { | |
"use strict"; | |
e.ThreeSixty = function(t, r) { | |
var a, n = this, | |
i = []; | |
n.$el = e(t), n.el = t, n.$el.data("ThreeSixty", n), n.init = function() { | |
a = e.extend({}, e.ThreeSixty.defaultOptions, r), a.disableSpin && (a.currentFrame = 1, a.endFrame = 1), n.initProgress(), n.loadImages() | |
}, n.resize = function() {}, n.initProgress = function() { | |
n.$el.css({ | |
width: a.width + "px", | |
height: a.height + "px", | |
"background-image": "none !important" | |
}), a.styles && n.$el.css(a.styles), n.responsive(), n.$el.find(a.progress).css({ | |
marginTop: a.height / 2 - 15 + "px" | |
}), n.$el.find(a.progress).fadeIn("slow"), n.$el.find(a.imgList).hide() | |
}, n.loadImages = function() { | |
var t, r, o, s; | |
t = document.createElement("li"), s = a.zeroBased ? 0 : 1, r = a.imgArray ? a.imgArray[a.loadedImages] : a.domain + a.imagePath + a.filePrefix + n.zeroPad(a.loadedImages + s) + a.ext + (n.browser.isIE() ? "?" + (new Date).getTime() : ""), o = e("<img>").attr("src", r).addClass("previous-image").appendTo(t), i.push(o), n.$el.find(a.imgList).append(t), e(o).load(function() { | |
n.imageLoaded() | |
}) | |
}, n.imageLoaded = function() { | |
a.loadedImages += 1, e(a.progress + " span").text(Math.floor(a.loadedImages / a.totalFrames * 100) + "%"), a.loadedImages >= a.totalFrames ? (a.disableSpin && i[0].removeClass("previous-image").addClass("current-image"), e(a.progress).fadeOut("slow", function() { | |
e(this).hide(), n.showImages(), n.showNavigation() | |
})) : n.loadImages() | |
}, n.showImages = function() { | |
n.$el.find(".txtC").fadeIn(), n.$el.find(a.imgList).fadeIn(), n.ready = !0, a.ready = !0, a.drag && n.initEvents(), n.refresh(), n.initPlugins(), a.onReady(), setTimeout(function() { | |
n.responsive() | |
}, 50) | |
}, n.initPlugins = function() { | |
e.each(a.plugins, function(t, r) { | |
if ("function" != typeof e[r]) throw new Error(r + " not available."); | |
e[r].call(n, n.$el, a) | |
}) | |
}, n.showNavigation = function() { | |
if (a.navigation && !a.navigation_init) { | |
var t, r, i, o; | |
t = e("<div/>").attr("class", "nav_bar"), r = e("<a/>").attr({ | |
href: "#", | |
"class": "nav_bar_next" | |
}).html("next"), i = e("<a/>").attr({ | |
href: "#", | |
"class": "nav_bar_previous" | |
}).html("previous"), o = e("<a/>").attr({ | |
href: "#", | |
"class": "nav_bar_play" | |
}).html("play"), t.append(i), t.append(o), t.append(r), n.$el.prepend(t), r.bind("mousedown touchstart", n.next), i.bind("mousedown touchstart", n.previous), o.bind("mousedown touchstart", n.play_stop), a.navigation_init = !0 | |
} | |
}, n.play_stop = function(t) { | |
t.preventDefault(), a.autoplay ? (a.autoplay = !1, e(t.currentTarget).removeClass("nav_bar_stop").addClass("nav_bar_play"), clearInterval(a.play), a.play = null) : (a.autoplay = !0, a.play = setInterval(n.moveToNextFrame, a.playSpeed), e(t.currentTarget).removeClass("nav_bar_play").addClass("nav_bar_stop")) | |
}, n.next = function(e) { | |
e && e.preventDefault(), a.endFrame -= 5, n.refresh() | |
}, n.previous = function(e) { | |
e && e.preventDefault(), a.endFrame += 5, n.refresh() | |
}, n.play = function(e) { | |
var t = e || a.playSpeed; | |
a.autoplay || (a.autoplay = !0, a.play = setInterval(n.moveToNextFrame, t)) | |
}, n.stop = function() { | |
a.autoplay && (a.autoplay = !1, clearInterval(a.play), a.play = null) | |
}, n.moveToNextFrame = function() { | |
1 === a.autoplayDirection ? a.endFrame -= 1 : a.endFrame += 1, n.refresh() | |
}, n.gotoAndPlay = function(e) { | |
if (a.disableWrap) a.endFrame = e, n.refresh(); | |
else { | |
var t = Math.ceil(a.endFrame / a.totalFrames); | |
0 === t && (t = 1); | |
var r = t > 1 ? a.endFrame - (t - 1) * a.totalFrames : a.endFrame, | |
i = a.totalFrames - r, | |
o = 0; | |
o = e - r > 0 ? e - r < r + (a.totalFrames - e) ? a.endFrame + (e - r) : a.endFrame - (r + (a.totalFrames - e)) : i + e > r - e ? a.endFrame - (r - e) : a.endFrame + (i + e), r !== e && (a.endFrame = o, n.refresh()) | |
} | |
}, n.initEvents = function() { | |
n.$el.bind("mousedown touchstart touchmove touchend mousemove click", function(e) { | |
e.preventDefault(), "mousedown" === e.type && 1 === e.which || "touchstart" === e.type ? (a.pointerStartPosX = n.getPointerEvent(e).pageX, a.dragging = !0) : "touchmove" === e.type ? n.trackPointer(e) : "touchend" === e.type && (a.dragging = !1) | |
}), e(document).bind("mouseup", function() { | |
a.dragging = !1, e(this).css("cursor", "none") | |
}), e(window).bind("resize", function() { | |
n.responsive() | |
}), e(document).bind("mousemove", function(e) { | |
a.dragging ? (e.preventDefault(), !n.browser.isIE && a.showCursor && n.$el.css("cursor", "url(assets/images/hand_closed.png), auto")) : !n.browser.isIE && a.showCursor && n.$el.css("cursor", "url(assets/images/hand_open.png), auto"), n.trackPointer(e) | |
}), e(window).resize(function() { | |
n.resize() | |
}) | |
}, n.getPointerEvent = function(e) { | |
return e.originalEvent.targetTouches ? e.originalEvent.targetTouches[0] : e | |
}, n.trackPointer = function(e) { | |
a.ready && a.dragging && (a.pointerEndPosX = n.getPointerEvent(e).pageX, a.monitorStartTime < (new Date).getTime() - a.monitorInt && (a.pointerDistance = a.pointerEndPosX - a.pointerStartPosX, a.reverseDrag && (a.pointerDistance = a.pointerStartPosX - a.pointerEndPosX), a.endFrame = a.pointerDistance > 0 ? a.currentFrame + Math.ceil((a.totalFrames - 1) * a.speedMultiplier * (a.pointerDistance / n.$el.width())) : a.currentFrame + Math.floor((a.totalFrames - 1) * a.speedMultiplier * (a.pointerDistance / n.$el.width())), a.disableWrap && (a.endFrame = Math.min(a.totalFrames - (a.zeroBased ? 1 : 0), a.endFrame), a.endFrame = Math.max(a.zeroBased ? 0 : 1, a.endFrame)), n.refresh(), a.monitorStartTime = (new Date).getTime(), a.pointerStartPosX = n.getPointerEvent(e).pageX)) | |
}, n.refresh = function() { | |
0 === a.ticker && (a.ticker = setInterval(n.render, Math.round(1e3 / a.framerate))) | |
}, n.render = function() { | |
var e; | |
a.currentFrame !== a.endFrame ? (e = a.endFrame < a.currentFrame ? Math.floor(.1 * (a.endFrame - a.currentFrame)) : Math.ceil(.1 * (a.endFrame - a.currentFrame)), n.hidePreviousFrame(), a.currentFrame += e, n.showCurrentFrame(), n.$el.trigger("frameIndexChanged", [n.getNormalizedCurrentFrame(), a.totalFrames])) : (window.clearInterval(a.ticker), a.ticker = 0) | |
}, n.hidePreviousFrame = function() { | |
i[n.getNormalizedCurrentFrame()].removeClass("current-image").addClass("previous-image") | |
}, n.showCurrentFrame = function() { | |
i[n.getNormalizedCurrentFrame()].removeClass("previous-image").addClass("current-image") | |
}, n.getNormalizedCurrentFrame = function() { | |
var e, t; | |
return a.disableWrap ? (e = Math.min(a.currentFrame, a.totalFrames - (a.zeroBased ? 1 : 0)), t = Math.min(a.endFrame, a.totalFrames - (a.zeroBased ? 1 : 0)), e = Math.max(e, a.zeroBased ? 0 : 1), t = Math.max(t, a.zeroBased ? 0 : 1), a.currentFrame = e, a.endFrame = t) : (e = Math.ceil(a.currentFrame % a.totalFrames), 0 > e && (e += a.totalFrames - (a.zeroBased ? 1 : 0))), e | |
}, n.getCurrentFrame = function() { | |
return a.currentFrame | |
}, n.responsive = function() { | |
a.responsive && a.limitMaxWidth && n.$el.css({ | |
height: n.$el.find(".current-image").first().css("height"), | |
maxWidth: "100%" | |
}), a.responsive && !a.limitMaxWidth && n.$el.css({ | |
height: n.$el.find(".current-image").first().css("height"), | |
width: "100%" | |
}) | |
}, n.zeroPad = function(e) { | |
function t(e, t) { | |
var r = e.toString(); | |
if (a.zeroPadding) | |
for (; r.length < t;) r = "0" + r; | |
return r | |
} | |
var r = Math.log(a.totalFrames) / Math.LN10, | |
n = 1e3, | |
i = Math.round(r * n) / n, | |
o = Math.floor(i) + 1; | |
return t(e, o) | |
}, n.browser = {}, n.browser.isIE = function() { | |
var e = -1; | |
if ("Microsoft Internet Explorer" === navigator.appName) { | |
var t = navigator.userAgent, | |
r = new RegExp("MSIE ([0-9]{1,}[\\.0-9]{0,})"); | |
null !== r.exec(t) && (e = parseFloat(RegExp.$1)) | |
} | |
return -1 !== e | |
}, n.getConfig = function() { | |
return a | |
}, e.ThreeSixty.defaultOptions = { | |
dragging: !1, | |
ready: !1, | |
pointerStartPosX: 0, | |
pointerEndPosX: 0, | |
pointerDistance: 0, | |
monitorStartTime: 0, | |
monitorInt: 10, | |
ticker: 0, | |
speedMultiplier: 7, | |
totalFrames: 180, | |
currentFrame: 0, | |
endFrame: 0, | |
loadedImages: 0, | |
framerate: 60, | |
domains: null, | |
domain: "", | |
parallel: !1, | |
queueAmount: 8, | |
idle: 0, | |
filePrefix: "", | |
ext: "png", | |
height: 300, | |
width: 300, | |
styles: {}, | |
navigation: !1, | |
autoplay: !1, | |
autoplayDirection: 1, | |
disableSpin: !1, | |
disableWrap: !1, | |
responsive: !1, | |
zeroPadding: !1, | |
zeroBased: !1, | |
plugins: [], | |
showCursor: !1, | |
drag: !0, | |
onReady: function() {}, | |
imgList: ".threesixty_images", | |
imgArray: null, | |
playSpeed: 100, | |
limitMaxWidth: !0, | |
reverseDrag: !1 | |
}, n.init() | |
}, e.fn.ThreeSixty = function(t) { | |
return Object.create(new e.ThreeSixty(this, t)) | |
} | |
}(jQuery), "function" != typeof Object.create && (Object.create = function(e) { | |
"use strict"; | |
function t() {} | |
return t.prototype = e, new t | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment