X-Git-Url: https://jfr.im/git/irc/quakenet/qwebirc.git/blobdiff_plain/8d2bf7d06e14cdc822340b169dcab2088b25c8b9..0fc80ad2b9b14a97062e2a7eca6117f09f3234d2:/js/jslib.js diff --git a/js/jslib.js b/js/jslib.js index aeef5ee..89f64ec 100644 --- a/js/jslib.js +++ b/js/jslib.js @@ -223,6 +223,10 @@ String.prototype.startsWith = function(what) { return this.substring(0, what.length) == what; } +String.prototype.endsWith = function(what) { + return this.substring(this.length - what.length, this.length) == what; +}; + /* NOT cryptographically secure! */ qwebirc.util.randHexString = function(numBytes) { var getByte = function() { @@ -260,12 +264,12 @@ qwebirc.util.importJS = function(name, watchFor, onload) { qwebirc.util.createInput = function(type, parent, name, selected, id) { var created = false; var r; - if(name) + if (name) name = "__input" + name; - if(Browser.Engine.trident) { + if (Browser.Engine.trident) { var name2; - if(name) { + if (name) { name2 = " name=\"" + escape(name) + "\""; } else { name2 = ""; @@ -274,8 +278,8 @@ qwebirc.util.createInput = function(type, parent, name, selected, id) { var h = ""; r = $(document.createElement(h)); if (type == "radio") { - r.addEvent("click", function() { - $(document.body).getElements("input[name=" + name + "]").forEach(function(x) { + r.addEvent("click", function () { + $(document.body).getElements("input[name=" + name + "]").forEach(function (x) { x.setAttribute("defaultChecked", x.checked ? "defaultChecked" : ""); }); }); @@ -285,10 +289,11 @@ qwebirc.util.createInput = function(type, parent, name, selected, id) { /* fallthough, trying it the proper way... */ } } - if(!created) - r = new Element("input"); - r.setAttribute("type", type); + if(!created) { + r = new Element("input"); + r.setAttribute("type", type); + } if(name) r.setAttribute("name", name); if(id) @@ -303,63 +308,6 @@ qwebirc.util.createInput = function(type, parent, name, selected, id) { return r; } -/* From: www.webtoolkit.info */ -qwebirc.util.b64Table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; -qwebirc.util.b64Encode = function(data) { - var output = []; - var table = qwebirc.util.b64Table; - for(var i=0;i> 2; - var enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); - var enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); - var enc4 = chr3 & 63; - - if(isNaN(chr2)) { - enc3 = enc4 = 64; - } else if(isNaN(chr3)) { - enc4 = 64; - } - - output.push(table.charAt(enc1) + table.charAt(enc2) + table.charAt(enc3) + table.charAt(enc4)); - } - return output.join(""); -} - -/* From: www.webtoolkit.info */ -qwebirc.util.b64Decode = function(data) { - data = data.replace(/[^A-Za-z0-9\+\/\=]/g, ""); - - var output = []; - var table = qwebirc.util.b64Table; - - /* grossly inefficient... so sue me */ - while(data.length % 4 != 0) - data = data + "="; - - for(var i=0;i> 4); - var chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); - var chr3 = ((enc3 & 3) << 6) | enc4; - - output.push(String.fromCharCode(chr1)); - if (enc3 != 64) - output.push(String.fromCharCode(chr2)); - if (enc4 != 64) - output.push(String.fromCharCode(chr3)); - } - - return output.join(""); -} - qwebirc.util.composeAnd = function() { var xargs = arguments; @@ -415,4 +363,38 @@ qwebirc.util.deviceHasKeyboard = function() { qwebirc.util.generateID_ID = 0; qwebirc.util.generateID = function() { return "qqa-" + qwebirc.util.generateID_ID++; -} \ No newline at end of file +}; + +qwebirc.util.arrayCmp = function(a, b) { + for(var p=0;p