+ },
+ getHueArg: function(args, t) {
+ var hue = args[t + "hue"];
+ if(!$defined(hue))
+ return null;
+ hue = parseInt(hue);
+ if(hue > 360 || hue < 0)
+ return null;
+ return hue;
+ },
+ getSaturationArg: function(args, t) {
+ var saturation = args[t + "saturation"];
+ if(!$defined(saturation))
+ return null;
+ saturation = parseInt(saturation);
+ if(saturation > 100 || saturation < -100)
+ return null;
+ return saturation;
+ },
+ getLightnessArg: function(args, t) {
+ var lightness = args[t + "lightness"];
+ if(!$defined(lightness))
+ return null;
+ lightness = parseInt(lightness);
+ if(lightness > 100 || lightness < -100)
+ return null;
+ return lightness;
+ },
+ randSub: function(nick) {
+ var getDigit = function() { return Math.floor(Math.random() * 10); }
+
+ return nick.split("").map(function(v) {
+ if(v == ".") {
+ return getDigit();
+ } else {
+ return v;
+ }
+ }).join("");
+
+ },
+ parseIRCURL: function(url) {
+ if(url.indexOf(":") == 0)
+ return;
+ var schemeComponents = url.splitMax(":", 2);
+ if(schemeComponents[0].toLowerCase() != "irc" && schemeComponents[0].toLowerCase() != "ircs") {
+ alert("Bad IRC URL scheme.");
+ return;
+ }
+
+ if(url.indexOf("/") == 0) {
+ /* irc: */
+ return;
+ }
+
+ var pathComponents = url.splitMax("/", 4);
+ if(pathComponents.length < 4 || pathComponents[3] == "") {
+ /* irc://abc */
+ return;
+ }
+
+ var args, queryArgs;
+ if(pathComponents[3].indexOf("?") > -1) {
+ queryArgs = qwebirc.util.parseURI(pathComponents[3]);
+ args = pathComponents[3].splitMax("?", 2)[0];
+ } else {
+ args = pathComponents[3];
+ }
+ var parts = args.split(",");
+
+ var channel = parts[0];
+ if(channel.charAt(0) != "#")
+ channel = "#" + channel;
+
+ var not_supported = [], needkey = false, key;
+ for(var i=1;i<parts.length;i++) {
+ var value = parts[i];
+ if(value == "needkey") {
+ needkey = true;
+ } else {
+ not_supported.push(value);
+ }
+ }
+
+ if($defined(queryArgs)) {
+ for(var key_ in queryArgs) {
+ var value = queryArgs[key_];
+
+ if(key_ == "key") {
+ key = value;
+ needkey = true;
+ } else {
+ not_supported.push(key_);
+ }
+ }
+ }
+
+ if(needkey) {
+ if(!$defined(key))
+ key = prompt("Please enter the password for channel " + channel + ":");
+ if($defined(key))
+ channel = channel + " " + key;
+ }
+
+ if(not_supported.length > 0)
+ alert("The following IRC URL components were not accepted: " + not_supported.join(", ") + ".");
+
+ return channel;