function qwebirc_ui_onbeforeunload(e) { /* IE sucks */ var message = "This action will close all active IRC connections."; var e = e || window.event; if(e) e.returnValue = message; return message; } qwebirc.ui.Interface = new Class({ Implements: [Options], options: { initialNickname: "qwebirc" + Math.ceil(Math.random() * 100000), initialChannels: "", networkName: "ExampleNetwork", networkServices: [], loginRegex: null, appTitle: "ExampleNetwork Web IRC", searchURL: true, theme: undefined, baseURL: null, hue: null, uiOptionsArg: null, dynamicBaseURL: "/", staticBaseURL: "/" }, initialize: function(element, ui, options) { qwebirc.global = {dynamicBaseURL: options.dynamicBaseURL, staticBaseURL: options.staticBaseURL, channels: options.channels, languages: options.languages, lingva_bot: options.lingva_bot, irc: null, initialLanguage: null, header_height: options.header_height, ssl_url: options.ssl_url}; /* HACK */ this.setOptions(options); window.addEvent("domready", function() { var callback = function(options) { var IRC = new qwebirc.irc.IRCClient(options, ui_); qwebirc.global.irc = IRC; this.secure_switch.setStyle("display", "none"); this.navi_channel.selectedIndex = options["channel_index"]; this.navi_language.selectedIndex = options["language_index"]; this.navi_bar.setStyle("display", "block"); this.navi_join.setStyle("display", "block"); IRC.connect(); window.onbeforeunload = qwebirc_ui_onbeforeunload; window.addEvent("unload", function() { IRC.quit("Page closed"); }); }; var inick = null; var ichans = this.options.initialChannels; var autoConnect = false; if(this.options.searchURL) { var args = qwebirc.util.parseURI(String(document.location)); this.options.hue = this.getHueArg(args); if($defined(args["uio"])) this.options.uiOptionsArg = args["uio"]; var url = args["url"]; var chans, nick = args["nick"]; if($defined(url)) { ichans = this.parseIRCURL(url); if($defined(chans) && chans != "") canAutoConnect = true; } else { chans = args["channels"]; var canAutoConnect = false; if(chans) { var cdata = chans.split(" "); chans = cdata[0].split(","); var chans2 = []; for(var i=0;i 360 || hue < 0) return null; return hue; }, 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 0) alert("The following IRC URL components were not accepted: " + not_supported.join(", ") + "."); return channel; } });