Super simple event handling.
var handle = SUP.sub("points", function(data){
console.log("Oh sweet! I got "+data+" more points!");
});
SUP.pub("points",12);| const AJAX = { | |
| get: function(url,onGet) { | |
| var xhttp = new XMLHttpRequest(); | |
| xhttp.onreadystatechange = function() { | |
| if (this.readyState == 4 && this.status == 200) { | |
| onGet(this.responseText); | |
| } | |
| }; | |
| xhttp.open("GET", url, true); | |
| xhttp.send(); |
| // Please note: while the returned hash would be a pain in the butt to decode, it does not ensure uniqueness for smaller strings. | |
| // If you have a string at least 9 varying characters than it might be worth using. | |
| function hash(s,base64){var a="";s.split('').forEach(e=>{a+=e.charCodeAt(0)>>2;});return !!base64?btoa(a):a;} | |
| // Example: hash("mySuperSecretPassword",true); // Base64 | |
| // Output: "MjczMDIwMjkyODI1MjgyMDI1MjQyODI1MjkyMDI0MjgyODI5MjcyODI1" | |
| // Example: hash("mySuperSecretPassword"); | |
| // Output: "273020292825282025242825292024282829272825" |
| const parseURL = function(char) { | |
| var url = window.location.href, data = {}; | |
| char = !!char ? char === "?" || char === "#" ? char : "check" : "check"; | |
| if (char==="check") { | |
| char = url.includes("?") ? "?" : url.includes("#") ? "#" : false; | |
| if (char === false) { return false; } | |
| } | |
| url = url.substring(url.indexOf(char)+1,url.length); | |
| if (url.includes("=")) { | |
| var kv = url.split("&"); |
| function intToCCV(n,c) { // Character compression value | |
| var c = c || "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890!?"; | |
| var r = [0,0,0,0]; | |
| while (n - 64 >= 0) { | |
| var pos = 2; | |
| r[r.length-pos] += 1; | |
| while (r[r.length-pos]==c.length) { | |
| r[r.length-pos] = 0; | |
| pos += 1; // Go to next position | |
| if (r.length-pos in r) { // If that position is alread in the data |
| function random(a, b) { | |
| if(Array.isArray(a)){ | |
| return a[random(a.length)]; | |
| } | |
| if (typeof a === "object") { | |
| var key = random(Object.keys(a)); | |
| return b === "key" ? key : b === "both" ? {key:key,value:a[key]} : a[key]; | |
| } | |
| if (typeof a === "string" && !!a) { | |
| return (a.toLowerCase() === "bool") ? (Math.floor(Math.random()*2) == 1) : random(a.split('')); |
| var randID = (n)=>{var i,a="";for(i of new Array(n)){a+=("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890").charAt(~~(Math.random()*62));}return a;}; | |
| //console.log(randID(6)); |
| function definedParameters(func) { | |
| return func.toString().split("\n")[0].match(/\({1}.*\){1}/)[0].replace("(","").replace(")","").split(" ").join("").split(","); | |
| } | |
| // definedParameters(function (a,b,c){return a*b*c;}) returns ["a","b","c"]; |
| <head> | |
| <title>HTA Test</title> | |
| <HTA:APPLICATION | |
| APPLICATIONNAME="Application" | |
| SCROLL="no" | |
| SINGLEINSTANCE="yes" | |
| > | |
| </head> |
| function TDROM() { | |
| var THIS = this; | |
| THIS.data = []; | |
| THIS.props = {}; | |
| THIS.vals = {}; | |
| THIS.map = []; | |
| THIS.add = function(obj) { | |
| var index = THIS.data.push(obj) - 1, p, v, k; | |
| for (k in obj) { |