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