ptownhero

poptrox

Sep 25th, 2021
1,173
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* jquery.poptrox.js v2.5.2-dev | (c) @ajlkn | github.com/ajlkn/jquery.poptrox | MIT licensed */
  2. !(function (e) {
  3.     (e.fn.poptrox_disableSelection = function () {
  4.         return e(this).css("user-select", "none").css("-khtml-user-select", "none").css("-moz-user-select", "none").css("-o-user-select", "none").css("-webkit-user-select", "none");
  5.     }),
  6.         (e.fn.poptrox = function (o) {
  7.             if (0 == this.length) return e(this);
  8.             if (this.length > 1) {
  9.                 for (var t = 0; t < this.length; t++) e(this[t]).poptrox(o);
  10.                 return e(this);
  11.             }
  12.             var p,
  13.                 i,
  14.                 s = e.extend(
  15.                     {
  16.                         preload: !1,
  17.                         baseZIndex: 1e3,
  18.                         fadeSpeed: 300,
  19.                         overlayColor: "#000000",
  20.                         overlayOpacity: 0.6,
  21.                         overlayClass: "poptrox-overlay",
  22.                         windowMargin: 50,
  23.                         windowHeightPad: 0,
  24.                         selector: "a",
  25.                         caption: null,
  26.                         parent: "body",
  27.                         popupSpeed: 300,
  28.                         popupWidth: 200,
  29.                         popupHeight: 100,
  30.                         popupIsFixed: !1,
  31.                         useBodyOverflow: !1,
  32.                         usePopupEasyClose: !0,
  33.                         usePopupForceClose: !1,
  34.                         usePopupLoader: !0,
  35.                         usePopupCloser: !0,
  36.                         usePopupCaption: !1,
  37.                         usePopupNav: !1,
  38.                         usePopupDefaultStyling: !0,
  39.                         popupBackgroundColor: "#FFFFFF",
  40.                         popupTextColor: "#000000",
  41.                         popupLoaderTextSize: "2em",
  42.                         popupCloserBackgroundColor: "#000000",
  43.                         popupCloserTextColor: "#FFFFFF",
  44.                         popupCloserTextSize: "20px",
  45.                         popupPadding: 10,
  46.                         popupCaptionHeight: 60,
  47.                         popupCaptionTextSize: null,
  48.                         popupBlankCaptionText: "(untitled)",
  49.                         popupCloserText: "&#215;",
  50.                         popupLoaderText: "&bull;&bull;&bull;&bull;",
  51.                         popupClass: "poptrox-popup",
  52.                         popupSelector: null,
  53.                         popupLoaderSelector: ".loader",
  54.                         popupCloserSelector: ".closer",
  55.                         popupCaptionSelector: ".caption",
  56.                         popupNavPreviousSelector: ".nav-previous",
  57.                         popupNavNextSelector: ".nav-next",
  58.                         onPopupClose: null,
  59.                         onPopupOpen: null,
  60.                     },
  61.                     o
  62.                 ),
  63.                 r = e(this),
  64.                 n = e("body"),
  65.                 a = e('<div class="' + s.overlayClass + '"></div>'),
  66.                 l = e(window),
  67.                 u = [],
  68.                 d = 0,
  69.                 h = !1,
  70.                 g = new Array(),
  71.                 f = function () {
  72.                     (p = l.width()), (i = l.height() + s.windowHeightPad);
  73.                     var e = Math.abs(x.width() - x.outerWidth()),
  74.                         o = Math.abs(x.height() - x.outerHeight()),
  75.                         t = p - 2 * s.windowMargin - e,
  76.                         r = i - 2 * s.windowMargin - o;
  77.                     x.css("min-width", s.popupWidth).css("min-height", s.popupHeight), v.children().css("max-width", t).css("max-height", r);
  78.                 };
  79.             s.usePopupLoader || (s.popupLoaderSelector = null),
  80.                 s.usePopupCloser || (s.popupCloserSelector = null),
  81.                 s.usePopupCaption || (s.popupCaptionSelector = null),
  82.                 s.usePopupNav || ((s.popupNavPreviousSelector = null), (s.popupNavNextSelector = null));
  83.             var x;
  84.             x = e(
  85.                 s.popupSelector
  86.                     ? s.popupSelector
  87.                     : '<div class="' +
  88.                           s.popupClass +
  89.                           '">' +
  90.                           (s.popupLoaderSelector ? '<div class="loader">' + s.popupLoaderText + "</div>" : "") +
  91.                           '<div class="pic"></div>' +
  92.                           (s.popupCaptionSelector ? '<div class="caption"></div>' : "") +
  93.                           (s.popupCloserSelector ? '<span class="closer">' + s.popupCloserText + "</span>" : "") +
  94.                           (s.popupNavPreviousSelector ? '<div class="nav-previous"></div>' : "") +
  95.                           (s.popupNavNextSelector ? '<div class="nav-next"></div>' : "") +
  96.                           "</div>"
  97.             );
  98.             var v = x.find(".pic"),
  99.                 w = e(),
  100.                 b = x.find(s.popupLoaderSelector),
  101.                 m = x.find(s.popupCaptionSelector),
  102.                 C = x.find(s.popupCloserSelector),
  103.                 y = x.find(s.popupNavNextSelector),
  104.                 S = x.find(s.popupNavPreviousSelector),
  105.                 P = y.add(S);
  106.             if (
  107.                 s.usePopupDefaultStyling &&
  108.                 (x
  109.                     .css("background", s.popupBackgroundColor)
  110.                     .css("color", s.popupTextColor)
  111.                     .css("padding", s.popupPadding + "px"),
  112.                 m.length > 0 &&
  113.                     (x.css("padding-bottom", s.popupCaptionHeight + "px"),
  114.                     m
  115.                         .css("position", "absolute")
  116.                         .css("left", "0")
  117.                         .css("bottom", "0")
  118.                         .css("width", "100%")
  119.                         .css("text-align", "center")
  120.                         .css("height", s.popupCaptionHeight + "px")
  121.                         .css("line-height", s.popupCaptionHeight + "px"),
  122.                     s.popupCaptionTextSize && m.css("font-size", popupCaptionTextSize)),
  123.                 C.length > 0 &&
  124.                     C.html(s.popupCloserText)
  125.                         .css("font-size", s.popupCloserTextSize)
  126.                         .css("background", s.popupCloserBackgroundColor)
  127.                         .css("color", s.popupCloserTextColor)
  128.                         .css("display", "block")
  129.                         .css("width", "40px")
  130.                         .css("height", "40px")
  131.                         .css("line-height", "40px")
  132.                         .css("text-align", "center")
  133.                         .css("position", "absolute")
  134.                         .css("text-decoration", "none")
  135.                         .css("outline", "0")
  136.                         .css("top", "0")
  137.                         .css("right", "-40px"),
  138.                 b.length > 0 &&
  139.                     b
  140.                         .html("")
  141.                         .css("position", "relative")
  142.                         .css("font-size", s.popupLoaderTextSize)
  143.                         .on("startSpinning", function (o) {
  144.                             var t = e("<div>" + s.popupLoaderText + "</div>");
  145.                             t
  146.                                 .css("height", Math.floor(s.popupHeight / 2) + "px")
  147.                                 .css("overflow", "hidden")
  148.                                 .css("line-height", Math.floor(s.popupHeight / 2) + "px")
  149.                                 .css("text-align", "center")
  150.                                 .css("margin-top", Math.floor((x.height() - t.height() + (m.length > 0 ? m.height() : 0)) / 2))
  151.                                 .css("color", s.popupTextColor ? s.popupTextColor : "")
  152.                                 .on("xfin", function () {
  153.                                     t.fadeTo(300, 0.5, function () {
  154.                                         t.trigger("xfout");
  155.                                     });
  156.                                 })
  157.                                 .on("xfout", function () {
  158.                                     t.fadeTo(300, 0.05, function () {
  159.                                         t.trigger("xfin");
  160.                                     });
  161.                                 })
  162.                                 .trigger("xfin"),
  163.                                 b.append(t);
  164.                         })
  165.                         .on("stopSpinning", function (e) {
  166.                             var o = b.find("div");
  167.                             o.remove();
  168.                         }),
  169.                 2 == P.length)
  170.             ) {
  171.                 P.css("font-size", "75px")
  172.                     .css("text-align", "center")
  173.                     .css("color", "#fff")
  174.                     .css("text-shadow", "none")
  175.                     .css("height", "100%")
  176.                     .css("position", "absolute")
  177.                     .css("top", "0")
  178.                     .css("opacity", "0.35")
  179.                     .css("cursor", "pointer")
  180.                     .css("box-shadow", "inset 0px 0px 10px 0px rgba(0,0,0,0)")
  181.                     .poptrox_disableSelection();
  182.                 var k, T;
  183.                 s.usePopupEasyClose ? ((k = "100px"), (T = "100px")) : ((k = "75%"), (T = "25%")),
  184.                     y.css("right", "0").css("width", k).html('<div style="position: absolute; height: 100px; width: 125px; top: 50%; right: 0; margin-top: -50px;">&gt;</div>'),
  185.                     S.css("left", "0").css("width", T).html('<div style="position: absolute; height: 100px; width: 125px; top: 50%; left: 0; margin-top: -50px;">&lt;</div>');
  186.             }
  187.             return (
  188.                 l.on("resize orientationchange", function () {
  189.                     f();
  190.                 }),
  191.                 m.on("update", function (e, o) {
  192.                     (o && 0 != o.length) || (o = s.popupBlankCaptionText), m.html(o);
  193.                 }),
  194.                 C.css("cursor", "pointer").on("click", function (e) {
  195.                     return e.preventDefault(), e.stopPropagation(), x.trigger("poptrox_close"), !0;
  196.                 }),
  197.                 y.on("click", function (e) {
  198.                     e.stopPropagation(), e.preventDefault(), x.trigger("poptrox_next");
  199.                 }),
  200.                 S.on("click", function (e) {
  201.                     e.stopPropagation(), e.preventDefault(), x.trigger("poptrox_previous");
  202.                 }),
  203.                 a
  204.                     .css("position", "fixed")
  205.                     .css("left", 0)
  206.                     .css("top", 0)
  207.                     .css("z-index", s.baseZIndex)
  208.                     .css("width", "100%")
  209.                     .css("height", "100%")
  210.                     .css("text-align", "center")
  211.                     .css("cursor", "pointer")
  212.                     .appendTo(s.parent)
  213.                     .prepend('<div style="display:inline-block;height:100%;vertical-align:middle;"></div>')
  214.                     .append('<div style="position:absolute;left:0;top:0;width:100%;height:100%;background:' + s.overlayColor + ";opacity:" + s.overlayOpacity + ";filter:alpha(opacity=" + 100 * s.overlayOpacity + ');"></div>')
  215.                     .hide()
  216.                     .on("touchmove", function (e) {
  217.                         return !1;
  218.                     })
  219.                     .on("click", function (e) {
  220.                         e.preventDefault(), e.stopPropagation(), x.trigger("poptrox_close");
  221.                     }),
  222.                 x
  223.                     .css("display", "inline-block")
  224.                     .css("vertical-align", "middle")
  225.                     .css("position", "relative")
  226.                     .css("z-index", 1)
  227.                     .css("cursor", "auto")
  228.                     .appendTo(a)
  229.                     .hide()
  230.                     .on("poptrox_next", function () {
  231.                         var e = d + 1;
  232.                         e >= u.length && (e = 0), x.trigger("poptrox_switch", [e]);
  233.                     })
  234.                     .on("poptrox_previous", function () {
  235.                         var e = d - 1;
  236.                         e < 0 && (e = u.length - 1), x.trigger("poptrox_switch", [e]);
  237.                     })
  238.                     .on("poptrox_reset", function () {
  239.                         f(), x.data("width", s.popupWidth).data("height", s.popupHeight), b.hide().trigger("stopSpinning"), m.hide(), C.hide(), P.hide(), v.hide(), w.attr("src", "").detach();
  240.                     })
  241.                     .on("poptrox_open", function (e, o) {
  242.                         return (
  243.                             !!h ||
  244.                             ((h = !0),
  245.                             s.useBodyOverflow && n.css("overflow", "hidden"),
  246.                             s.onPopupOpen && s.onPopupOpen(),
  247.                             x.addClass("loading"),
  248.                             void a.fadeTo(s.fadeSpeed, 1, function () {
  249.                                 x.trigger("poptrox_switch", [o, !0]);
  250.                             }))
  251.                         );
  252.                     })
  253.                     .on("poptrox_switch", function (o, t, p) {
  254.                         var i;
  255.                         if (!p && h) return !0;
  256.                         if (
  257.                             ((h = !0),
  258.                             x.addClass("loading").css("width", x.data("width")).css("height", x.data("height")),
  259.                             m.hide(),
  260.                             w.attr("src") && w.attr("src", ""),
  261.                             w.detach(),
  262.                             (i = u[t]),
  263.                             (w = i.object),
  264.                             w.off("load"),
  265.                             v.css("text-indent", "-9999px").show().append(w),
  266.                             "ajax" == i.type
  267.                                 ? e.get(i.src, function (e) {
  268.                                       w.html(e), w.trigger("load");
  269.                                   })
  270.                                 : w.attr("src", i.src),
  271.                             "image" != i.type)
  272.                         ) {
  273.                             var r, n;
  274.                             (r = i.width),
  275.                                 (n = i.height),
  276.                                 "%" == r.slice(-1) && (r = (parseInt(r.substring(0, r.length - 1)) / 100) * l.width()),
  277.                                 "%" == n.slice(-1) && (n = (parseInt(n.substring(0, n.length - 1)) / 100) * l.height()),
  278.                                 w
  279.                                     .css("position", "relative")
  280.                                     .css("outline", "0")
  281.                                     .css("z-index", s.baseZIndex + 100)
  282.                                     .width(r)
  283.                                     .height(n);
  284.                         }
  285.                         b.trigger("startSpinning").fadeIn(300),
  286.                             x.show(),
  287.                             s.popupIsFixed
  288.                                 ? (x.removeClass("loading").width(s.popupWidth).height(s.popupHeight),
  289.                                   w.on("load", function () {
  290.                                       w.off("load"),
  291.                                           b.hide().trigger("stopSpinning"),
  292.                                           m.trigger("update", [i.captionText]).fadeIn(s.fadeSpeed),
  293.                                           C.fadeIn(s.fadeSpeed),
  294.                                           v
  295.                                               .css("text-indent", 0)
  296.                                               .hide()
  297.                                               .fadeIn(s.fadeSpeed, function () {
  298.                                                   h = !1;
  299.                                               }),
  300.                                           (d = t),
  301.                                           P.fadeIn(s.fadeSpeed);
  302.                                   }))
  303.                                 : w.on("load", function () {
  304.                                       f(), w.off("load"), b.hide().trigger("stopSpinning");
  305.                                       var e = w.width(),
  306.                                           o = w.height(),
  307.                                           p = function () {
  308.                                               m.trigger("update", [i.captionText]).fadeIn(s.fadeSpeed),
  309.                                                   C.fadeIn(s.fadeSpeed),
  310.                                                   v
  311.                                                       .css("text-indent", 0)
  312.                                                       .hide()
  313.                                                       .fadeIn(s.fadeSpeed, function () {
  314.                                                           h = !1;
  315.                                                       }),
  316.                                                   (d = t),
  317.                                                   P.fadeIn(s.fadeSpeed),
  318.                                                   x.removeClass("loading").data("width", e).data("height", o).css("width", "auto").css("height", "auto");
  319.                                           };
  320.                                       e == x.data("width") && o == x.data("height") ? p() : x.animate({ width: e, height: o }, s.popupSpeed, "swing", p);
  321.                                   }),
  322.                             "image" != i.type && w.trigger("load");
  323.                     })
  324.                     .on("poptrox_close", function () {
  325.                         return (
  326.                             !(!h || s.usePopupForceClose) ||
  327.                             ((h = !0),
  328.                             x.hide().trigger("poptrox_reset"),
  329.                             s.onPopupClose && s.onPopupClose(),
  330.                             void a.fadeOut(s.fadeSpeed, function () {
  331.                                 s.useBodyOverflow && n.css("overflow", "auto"), (h = !1);
  332.                             }))
  333.                         );
  334.                     })
  335.                     .trigger("poptrox_reset"),
  336.                 s.usePopupEasyClose
  337.                     ? (m.on("click", "a", function (e) {
  338.                           e.stopPropagation();
  339.                       }),
  340.                       x.css("cursor", "pointer").on("click", function (e) {
  341.                           e.stopPropagation(), e.preventDefault(), x.trigger("poptrox_close");
  342.                       }))
  343.                     : x.on("click", function (e) {
  344.                           e.stopPropagation();
  345.                       }),
  346.                 l.keydown(function (e) {
  347.                     if (x.is(":visible"))
  348.                         switch (e.keyCode) {
  349.                             case 37:
  350.                             case 32:
  351.                                 if (s.usePopupNav) return x.trigger("poptrox_previous"), !1;
  352.                                 break;
  353.                             case 39:
  354.                                 if (s.usePopupNav) return x.trigger("poptrox_next"), !1;
  355.                                 break;
  356.                             case 27:
  357.                                 return x.trigger("poptrox_close"), !1;
  358.                         }
  359.                 }),
  360.                 r.find(s.selector).each(function (o) {
  361.                     var t,
  362.                         p,
  363.                         i = e(this),
  364.                         r = i.find("img"),
  365.                         n = i.data("poptrox");
  366.                     if ("ignore" != n && i.attr("href")) {
  367.                         if (((t = { src: i.attr("href"), captionText: r.attr("title"), width: null, height: null, type: null, object: null, options: null }), s.caption)) {
  368.                             if ("function" == typeof s.caption) c = s.caption(i);
  369.                             else if ("selector" in s.caption) {
  370.                                 var a;
  371.                                 (a = i.find(s.caption.selector)), "attribute" in s.caption ? (c = a.attr(s.caption.attribute)) : ((c = a.html()), s.caption.remove === !0 && a.remove());
  372.                             }
  373.                         } else c = r.attr("title");
  374.                         if (((t.captionText = c), n)) {
  375.                             var l = n.split(",");
  376.                             0 in l && (t.type = l[0]), 1 in l && ((p = l[1].match(/([0-9%]+)x([0-9%]+)/)), p && 3 == p.length && ((t.width = p[1]), (t.height = p[2]))), 2 in l && (t.options = l[2]);
  377.                         }
  378.                         if (!t.type)
  379.                             switch (((p = t.src.match(/\/\/([a-z0-9\.]+)\/.*/)), (!p || p.length < 2) && (p = [!1]), p[1])) {
  380.                                 case "api.soundcloud.com":
  381.                                     t.type = "soundcloud";
  382.                                     break;
  383.                                 case "youtu.be":
  384.                                     t.type = "youtube";
  385.                                     break;
  386.                                 case "vimeo.com":
  387.                                     t.type = "vimeo";
  388.                                     break;
  389.                                 case "wistia.net":
  390.                                     t.type = "wistia";
  391.                                     break;
  392.                                 case "bcove.me":
  393.                                     t.type = "bcove";
  394.                                     break;
  395.                                 default:
  396.                                     t.type = "image";
  397.                             }
  398.                         switch (((p = t.src.match(/\/\/[a-z0-9\.]+\/(.*)/)), t.type)) {
  399.                             case "iframe":
  400.                                 (t.object = e('<iframe src="" frameborder="0"></iframe>')),
  401.                                     t.object
  402.                                         .on("click", function (e) {
  403.                                             e.stopPropagation();
  404.                                         })
  405.                                         .css("cursor", "auto"),
  406.                                     (t.width && t.height) || ((t.width = "600"), (t.height = "400"));
  407.                                 break;
  408.                             case "ajax":
  409.                                 (t.object = e('<div class="poptrox-ajax"></div>')),
  410.                                     t.object
  411.                                         .on("click", function (e) {
  412.                                             e.stopPropagation();
  413.                                         })
  414.                                         .css("cursor", "auto")
  415.                                         .css("overflow", "auto"),
  416.                                     (t.width && t.height) || ((t.width = "600"), (t.height = "400"));
  417.                                 break;
  418.                             case "soundcloud":
  419.                                 (t.object = e('<iframe scrolling="no" frameborder="no" src=""></iframe>')),
  420.                                     (t.src = "//w.soundcloud.com/player/?url=" + escape(t.src) + (t.options ? "&" + t.options : "")),
  421.                                     (t.width = "600"),
  422.                                     (t.height = "166");
  423.                                 break;
  424.                             case "youtube":
  425.                                 (t.object = e('<iframe src="" frameborder="0" allowfullscreen="1"></iframe>')),
  426.                                     (t.src = "//www.youtube.com/embed/" + p[1] + (t.options ? "?" + t.options : "")),
  427.                                     (t.width && t.height) || ((t.width = "800"), (t.height = "480"));
  428.                                 break;
  429.                             case "vimeo":
  430.                                 (t.object = e('<iframe src="" frameborder="0" allowFullScreen="1"></iframe>')),
  431.                                     (t.src = "//player.vimeo.com/video/" + p[1] + (t.options ? "?" + t.options : "")),
  432.                                     (t.width && t.height) || ((t.width = "800"), (t.height = "480"));
  433.                                 break;
  434.                             case "wistia":
  435.                                 (t.object = e('<iframe src="" frameborder="0" allowFullScreen="1"></iframe>')),
  436.                                     (t.src = "//fast.wistia.net/" + p[1] + (t.options ? "?" + t.options : "")),
  437.                                     (t.width && t.height) || ((t.width = "800"), (t.height = "480"));
  438.                                 break;
  439.                             case "bcove":
  440.                                 (t.object = e('<iframe src="" frameborder="0" allowFullScreen="1" width="100%"></iframe>')),
  441.                                     (t.src = "//bcove.me/" + p[1] + (t.options ? "?" + t.options : "")),
  442.                                     (t.width && t.height) || ((t.width = "640"), (t.height = "360"));
  443.                                 break;
  444.                             default:
  445.                                 if (((t.object = e('<img src="" alt="" style="vertical-align:bottom" />')), s.preload)) {
  446.                                     var p = document.createElement("img");
  447.                                     (p.src = t.src), g.push(p);
  448.                                 }
  449.                                 (t.width = i.attr("width")), (t.height = i.attr("height"));
  450.                         }
  451.                         "file:" == window.location.protocol && t.src.match(/^\/\//) && (t.src = "http:" + t.src),
  452.                             u.push(t),
  453.                             r.removeAttr("title"),
  454.                             i
  455.                                 .removeAttr("href")
  456.                                 .css("cursor", "pointer")
  457.                                 .css("outline", 0)
  458.                                 .on("click", function (e) {
  459.                                     e.preventDefault(), e.stopPropagation(), x.trigger("poptrox_open", [o]);
  460.                                 });
  461.                     }
  462.                 }),
  463.                 r.prop("_poptrox", s),
  464.                 r
  465.             );
  466.         });
  467. })(jQuery);
  468.  
RAW Paste Data