]> jfr.im git - irc/quakenet/qwebirc.git/blame - js/qwebircinterface.js
Fix floodcounter bug.
[irc/quakenet/qwebirc.git] / js / qwebircinterface.js
CommitLineData
e20e5a6b 1qwebirc.ui.Interface = new Class({
d65fe45f
CP
2 Implements: [Options],
3 options: {
4 initialNickname: "qwebirc" + Math.ceil(Math.random() * 100000),
5 initialChannels: "",
2cad083e 6 networkName: "QuakeNet",
3a2657fd 7 networkServices: ["Q!TheQBot@CServe.quakenet.org"],
2cad083e
CP
8 loginRegex: "^You are now logged in as [^ ]+\\.$",
9 appTitle: "QuakeNet Web IRC",
66de775f 10 searchURL: true,
d65fe45f
CP
11 theme: undefined
12 },
13 initialize: function(element, ui, options) {
14 this.setOptions(options);
15
16 window.addEvent("domready", function() {
2cad083e 17 var ui_ = new ui($(element), new qwebirc.ui.Theme(this.options.theme), this.options);
66de775f
CP
18
19 var callback = function(options) {
e20e5a6b 20 var IRC = new qwebirc.irc.IRCClient(options, ui_);
d65fe45f
CP
21 IRC.connect();
22 window.addEvent("beforeunload", function() {
23 IRC.quit("Page closed");
24 });
66de775f
CP
25 };
26
6500b600
CP
27 var inick = null;
28 var ichans = this.options.initialChannels;
29 var autoConnect = false;
30
66de775f 31 if(this.options.searchURL) {
e20e5a6b 32 var args = qwebirc.util.parseURI(String(document.location));
66de775f
CP
33
34 var chans = args["channels"];
35 var nick = args["nick"];
36
6500b600
CP
37 var canAutoConnect = false;
38
66de775f 39 if(chans) {
290c60db
CP
40 var cdata = chans.split(" ");
41
42 chans = cdata[0].split(",");
66de775f
CP
43 var chans2 = [];
44
45 for(i=0;i<chans.length;i++) {
46 chans2[i] = chans[i];
47
48 if(chans[i].charAt(0) != '#')
49 chans2[i] = "#" + chans2[i]
50 }
290c60db
CP
51 cdata[0] = chans2.join(",");
52 ichans = cdata.join(" ");
6500b600 53 canAutoConnect = true;
66de775f
CP
54 }
55
6500b600 56 if($defined(nick))
66de775f 57 inick = nick;
bede573a 58
6500b600
CP
59 if(args["randomnick"] && args["randomnick"] == 1)
60 inick = this.options.initialNickname;
61
62 /* we only consider autoconnecting if the nick hasn't been supplied, or it has and it's not "" */
63 if(canAutoConnect && (!$defined(inick) || ($defined(inick) && (inick != "")))) {
64 var p = args["prompt"];
65 var pdefault = false;
66
67 if(!$defined(p) || p == "") {
68 pdefault = true;
69 p = false;
70 } else if(p == "0") {
71 p = false;
72 } else {
73 p = true;
74 }
75
76 /* autoconnect if we have channels and nick but only if prompt != 1 */
77 if($defined(inick) && !p) {
78 autoConnect = true;
79 } else if(!pdefault && !p) { /* OR if prompt=0, but not prompt=(nothing) */
80 autoConnect = true;
81 }
82 }
66de775f 83 }
6500b600
CP
84
85 var usingAutoNick = !$defined(nick);
86 if(usingAutoNick && autoConnect)
87 inick = this.options.initialNickname;
bede573a 88
6500b600 89 var details = ui_.loginBox(callback, inick, ichans, autoConnect, usingAutoNick);
d65fe45f
CP
90 }.bind(this));
91 }
92});