Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ! function() {
  2.     "use strict";
  3.     var e = {
  4.             apiUrl: "",
  5.             pollingTimes: {
  6.                 jitter: 100,
  7.                 visible: 2e3,
  8.                 metered: 1e4,
  9.                 hidden: 6e4,
  10.                 meteredHidden: 3e5,
  11.                 error: 6e4,
  12.                 errorMetered: 12e4,
  13.                 errorHidden: 6e5,
  14.                 errorMeteredHidden: 18e5
  15.             },
  16.             smileys: {
  17.                 "\ud83d\ude0e": ["8)", "B)", "B-)", "8-)"],
  18.                 "\ud83d\ude22": [":'(", ";'(", ":*(", ";*("],
  19.                 "\ud83d\ude33": [":-$", ":$"],
  20.                 "\ud83d\ude1e": [":-(", ":(", ":c", ":<", ":["],
  21.                 "\ud83d\ude07": ["O:-)", "O:)", "0:-)", "0:)", "(A)", "(a)"],
  22.                 "\ud83d\ude17": ["(K)", "(k)", ":-*", ":*"],
  23.                 "\ud83d\ude00": [":-D", ":D", ":-d", ":d", "8D"],
  24.                 "\ud83d\ude05": [";-D", ";D"],
  25.                 "\ud83d\ude06": ["XD", "xD"],
  26.                 "\ud83e\udd10": [":-X", ":X", ":-#", ":#", ":x"],
  27.                 "\ud83d\ude03": [":-)", ":)", ":o)", ":]", ":3", ":>", "=]", "=)"],
  28.                 "\ud83d\ude2e": [":-O", ":O", ":-o", ":o", "O_O", "o_o", "O-O", "0_o", "O_o", ";o"],
  29.                 "\ud83d\ude1b": [":-P", ":P", ":-p", ":p", "=p", ":-b", ":b"],
  30.                 "\ud83d\ude1c": [";-P", ";P", ";-p", ";p"],
  31.                 "\ud83d\ude1d": ["xP"],
  32.                 "\ud83e\udd14": [":^)"],
  33.                 "\ud83d\ude09": ["!-)", "!)", ";-)", ";)", "*)", ";]"],
  34.                 "\ud83d\ude21": [":-@", ":@", "D:<", " >:(", "D-:<", ">:-(", ";("]
  35.             },
  36.             dateFormat: function(e) {
  37.                 return e.getFullYear() + "-" + ("0" + (e.getMonth() + 1)).slice(-2) + "-" + ("0" + e.getDate()).slice(-2) + " " + ("0" + e.getHours()).slice(-2) + ":" + ("0" + e.getMinutes()).slice(-2)
  38.             },
  39.             loaderOffset: 150,
  40.             linkShortLength: 30,
  41.             linkText: "[link]",
  42.             linkForceHttps: ["www.nsenschede.nl", "nsenschede.nl"]
  43.         },
  44.         t = {};
  45.     void 0 !== document.hidden ? (t.hidden = "hidden", t.visibilityChange = "visibilitychange") : void 0 !== document.mozHidden ? (t.hidden = "mozHidden", t.visibilityChange = "mozvisibilitychange") : void 0 !== document.msHidden ? (t.hidden = "msHidden", t.visibilityChange = "msvisibilitychange") : void 0 !== document.webkitHidden && (t.hidden = "webkitHidden", t.visibilityChange = "webkitvisibilitychange"), void 0 !== navigator.connection ? t.connection = "connection" : void 0 !== navigator.mozConnection ? t.connection = "mozConnection" : void 0 !== navigator.webkitConnection && (t.connection = "webkitConnection");
  46.     var n = function(n) {
  47.             var i = t.hidden && document[t.hidden],
  48.                 o = t.connection && "cellular" === navigator[t.connection].type;
  49.             return (n ? o ? i ? e.pollingTimes.meteredHidden : e.pollingTimes.metered : i ? e.pollingTimes.hidden : e.pollingTimes.visible : o ? i ? e.pollingTimes.errorMeteredHidden : e.pollingTimes.errorMetered : i ? e.pollingTimes.errorHidden : e.pollingTimes.error) + (2 * Math.random() - 1) * e.pollingTimes.jitter
  50.         },
  51.         i = document.getElementById("shout-list"),
  52.         o = null;
  53.     document.getElementById("admin-login").addEventListener("click", function() {
  54.         if ((o = window.prompt("Beheerderswachtwoord:")) && i.childElementCount > 0) {
  55.             var e = i.cloneNode(!1);
  56.             i.parentNode.replaceChild(e, i), i = e
  57.         }
  58.         setTimeout(v, 0)
  59.     });
  60.     var a = new RegExp("http:\\/\\/(" + e.linkForceHttps.reduce(function(e, t) {
  61.             return (e ? e + "|" : "") + t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")
  62.         }, null) + ")(\\/|$)", "i"),
  63.         d = [],
  64.         r = document.getElementById("linkify-element").onload = function() {
  65.             if ("function" == typeof linkifyElement)
  66.                 for (var t; t = d.shift();) linkifyElement(t, {
  67.                     format: function(t, n) {
  68.                         return "url" === n && ((t = t.replace(/^https?:\/\//i, "").replace(/\/$/, "")).match(/\/.*\//i) || t.length > e.linkShortLength) && (t = e.linkText), t
  69.                     },
  70.                     formatHref: function(e, t) {
  71.                         return "url" === t && e.match(a) && (e = e.replace(/^http:\/\//i, "https://")), e
  72.                     },
  73.                     linkAttributes: {
  74.                         rel: "nofollow noopener noreferrer"
  75.                     },
  76.                     linkClass: null
  77.                 }, document)
  78.         },
  79.         s = {};
  80.     for (var l in e.smileys) s[l] = new RegExp("(?:((?:^|\\s)[a-zA-Z]*\\.?)(?:" + e.smileys[l].map(function(e) {
  81.         return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")
  82.     }).join("|") + ")([\\.,;!\\)]?(?:\\s|$)))");
  83.     var c, u = function(t, n) {
  84.             var i = document.createElement("li");
  85.             i.setAttribute("data-shout-id", t);
  86.             var l = document.createTextNode(n.name),
  87.                 c = document.createElement(n.website ? "a" : "span");
  88.             if (c.className = "name", n.website) {
  89.                 var u = n.website;
  90.                 u.match(a) && (u = u.replace(/^http:\/\//i, "https://")), c.setAttribute("href", u), c.setAttribute("target", "_blank"), c.setAttribute("rel", "nofollow noopener noreferrer")
  91.             }
  92.             c.appendChild(l), i.appendChild(c);
  93.             var m = document.createElement("p");
  94.             m.className = "message";
  95.             var p = n.message;
  96.             for (var h in s) p = p.replace(s[h], "$1" + h + "$2");
  97.             m.appendChild(document.createTextNode(p)), m.innerHTML = m.innerHTML.replace(new RegExp(["\ud83c[\udf00-\udfff]", "\ud83d[\udc00-\ude4f]", "\ud83d[\ude80-\udeff]"].join("|"), "g"), '<span class="emoji">$&</span>'), d.push(m), r(), i.appendChild(m);
  98.             var f = document.createElement("span");
  99.             f.classList.add("meta"), i.appendChild(f);
  100.             var g = document.createElement("time"),
  101.                 w = new Date(1e3 * n.time);
  102.             if (g.setAttribute("datetime", w.toISOString()), g.appendChild(document.createTextNode(e.dateFormat(w))), f.appendChild(g), o) {
  103.                 var b = document.createElement("a");
  104.                 b.appendChild(document.createTextNode("Verwijderen")), b.addEventListener("click", function() {
  105.                     if (window.confirm('Shout "' + p + '" verwijderen?')) {
  106.                         var n = function() {
  107.                                 window.alert('Verwijderen van shout "' + p + '" mislukt!')
  108.                             },
  109.                             i = "secret=" + encodeURIComponent(o) + "&id=" + encodeURIComponent(t),
  110.                             a = new XMLHttpRequest;
  111.                         a.addEventListener("load", function() {
  112.                             "success" === a.responseText ? setTimeout(v, 0) : n()
  113.                         }, !1), a.addEventListener("error", n, !1), a.addEventListener("abort", n, !1), a.open("POST", e.apiUrl + "/api/v1/delete", !0), a.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), a.send(i)
  114.                     }
  115.                 }), f.appendChild(b)
  116.             }
  117.             if (n.ip) {
  118.                 var E = document.createElement("span");
  119.                 E.appendChild(document.createTextNode("IP: " + n.ip)), f.appendChild(E)
  120.             }
  121.             return i
  122.         },
  123.         m = !1,
  124.         p = null,
  125.         v = function() {
  126.             if (!m) {
  127.                 m = !0, clearTimeout(c);
  128.                 var t = !1,
  129.                     a = function(e) {
  130.                         c = setTimeout(v, t ? 0 : n(e)), m = !1, w()
  131.                     },
  132.                     d = new XMLHttpRequest;
  133.                 d.addEventListener("load", function() {
  134.                     var e;
  135.                     try {
  136.                         e = JSON.parse(d.responseText)
  137.                     } catch (e) {
  138.                         return void a()
  139.                     }
  140.                     if (null !== e && "object" == typeof e) {
  141.                         var n = Object.keys(e).map(function(e) {
  142.                             return parseInt(e)
  143.                         });
  144.                         n.sort(function(e, t) {
  145.                             return e - t
  146.                         });
  147.                         var o = !1;
  148.                         if (i.childElementCount > 0 && n.length > 0) {
  149.                             var r = parseInt(i.firstElementChild.getAttribute("data-shout-id"));
  150.                             if (n[0] > r + 1) {
  151.                                 var s = i.cloneNode(!1);
  152.                                 i.parentNode.replaceChild(s, i), i = s, o = !0
  153.                             }
  154.                         }
  155.                         for (var l = 0; l < n.length; l++) {
  156.                             if (e[n[l]].type && "message" == e[n[l]].type && e[n[l]].name && e[n[l]].message && e[n[l]].time) {
  157.                                 var c = u(n[l], e[n[l]]);
  158.                                 i.insertBefore(c, i.firstElementChild)
  159.                             } else if (e[n[l]].type && "deletion" == e[n[l]].type && e[n[l]].id) {
  160.                                 var m = i.querySelector('[data-shout-id="' + e[n[l]].id + '"]');
  161.                                 m && m.parentNode.removeChild(m)
  162.                             }
  163.                             n[l] > p && (p = n[l])
  164.                         }
  165.                         o && 0 == i.childElementCount && (t = !0), a(!0)
  166.                     } else a()
  167.                 }, !1), d.addEventListener("error", a, !1), d.addEventListener("abort", a, !1), d.open(o ? "POST" : "GET", e.apiUrl + "/api/v1/get" + (i.childElementCount > 0 ? "?since=" + p : ""), !0);
  168.                 var r = null;
  169.                 o && (d.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), r = "secret=" + encodeURIComponent(o)), d.send(r)
  170.             }
  171.         };
  172.     t.visibilityChange && document.addEventListener(t.visibilityChange, v, !1);
  173.     var h = document.getElementById("shout-container"),
  174.         f = document.getElementById("shout-container").querySelector(".nse-loader"),
  175.         g = !1,
  176.         w = function() {
  177.             if (!g)
  178.                 if (g = !0, i.childElementCount > 0)
  179.                     if (f.getBoundingClientRect().top <= h.getBoundingClientRect().height + e.loaderOffset) {
  180.                         var t = new XMLHttpRequest;
  181.                         t.addEventListener("load", function() {
  182.                             var e;
  183.                             try {
  184.                                 e = JSON.parse(t.responseText)
  185.                             } catch (e) {
  186.                                 return g = !1, void setTimeout(w, n(!1))
  187.                             }
  188.                             if (null === e || "object" != typeof e) return g = !1, void setTimeout(w, n(!1));
  189.                             var o = Object.keys(e).map(function(e) {
  190.                                 return parseInt(e)
  191.                             });
  192.                             if (o.sort(function(e, t) {
  193.                                     return t - e
  194.                                 }), o.length > 0) {
  195.                                 for (var a = 0; a < o.length; a++) e[o[a]].type && "message" == e[o[a]].type && e[o[a]].name && e[o[a]].message && e[o[a]].time && i.appendChild(u(o[a], e[o[a]]));
  196.                                 g = !1, w()
  197.                             } else f.style.display = "none"
  198.                         }, !1), t.addEventListener("error", function() {
  199.                             g = !1
  200.                         }, !1), t.addEventListener("abort", function() {
  201.                             g = !1
  202.                         }, !1), t.open(o ? "POST" : "GET", e.apiUrl + "/api/v1/get?before=" + i.lastChild.getAttribute("data-shout-id"), !0);
  203.                         var a = null;
  204.                         o && (t.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), a = "secret=" + encodeURIComponent(o)), t.send(a)
  205.                     } else g = !1;
  206.             else g = !1, setTimeout(w, 100)
  207.         };
  208.     h.addEventListener("scroll", w, !1), window.addEventListener("resize", w, !1);
  209.     var b = document.getElementById("shout-form");
  210.     ["name", "website", "message"].forEach(function(e) {
  211.         ["input", "keyup", "change", "blur"].forEach(function(t) {
  212.             b[e].addEventListener(t, function(e) {
  213.                 window.localStorage.setItem(e.target.name, e.target.value)
  214.             })
  215.         })
  216.     }), b.addEventListener("submit", function(t) {
  217.         t.preventDefault(), b.name.disabled = !0, b.website.disabled = !0, b.message.disabled = !0, b.submit.disabled = !0, window.localStorage.setItem("name", b.name.value), window.localStorage.setItem("website", b.website.value), window.localStorage.setItem("message", b.message.value);
  218.         var n = "name=" + encodeURIComponent(b.name.value) + "&website=" + encodeURIComponent(b.website.value) + "&message=" + encodeURIComponent(b.message.value),
  219.             i = function() {
  220.                 window.localStorage.setItem("message", b.message.value = ""), b.name.disabled = !1, b.website.disabled = !1, b.message.disabled = !1, b.submit.disabled = !1, v()
  221.             },
  222.             o = function() {
  223.                 window.alert("Versturen mislukt: Je shout is niet geplaatst."), b.name.disabled = !1, b.website.disabled = !1, b.message.disabled = !1, b.submit.disabled = !1
  224.             },
  225.             a = new XMLHttpRequest;
  226.         a.addEventListener("load", function() {
  227.             "success" === a.responseText ? i() : o()
  228.         }, !1), a.addEventListener("error", o, !1), a.addEventListener("abort", o, !1), a.open("POST", e.apiUrl + "/api/v1/post?ajax", !0), a.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), a.send(n)
  229.     }), b.name.disabled = !1, b.website.disabled = !1, b.message.disabled = !1, b.submit.disabled = !1, b.name.value = window.localStorage.getItem("name") || b.name.value, b.website.value = window.localStorage.getItem("website") || b.website.value, b.message.value = window.localStorage.getItem("message") || b.message.value, v(), w(), window.location.href.match(/^https?:/i) && window.location.href.match(/index.html/i) && window.history.replaceState(null, null, window.location.href.replace(/index.html.*/i, ""))
  230. }();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement