]> jfr.im git - irc/quakenet/qwebirc.git/blame - js/qwebircinterface.js
Add /options and /embed.
[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: "",
66de775f 6 searchURL: true,
d65fe45f
CP
7 theme: undefined
8 },
9 initialize: function(element, ui, options) {
10 this.setOptions(options);
11
12 window.addEvent("domready", function() {
e20e5a6b 13 var ui_ = new ui($(element), new qwebirc.ui.Theme(this.options.theme));
66de775f
CP
14
15 var callback = function(options) {
e20e5a6b 16 var IRC = new qwebirc.irc.IRCClient(options, ui_);
d65fe45f
CP
17 IRC.connect();
18 window.addEvent("beforeunload", function() {
19 IRC.quit("Page closed");
20 });
66de775f
CP
21 };
22
6500b600
CP
23 var inick = null;
24 var ichans = this.options.initialChannels;
25 var autoConnect = false;
26
66de775f 27 if(this.options.searchURL) {
e20e5a6b 28 var args = qwebirc.util.parseURI(String(document.location));
66de775f
CP
29
30 var chans = args["channels"];
31 var nick = args["nick"];
32
6500b600
CP
33 var canAutoConnect = false;
34
66de775f 35 if(chans) {
290c60db
CP
36 var cdata = chans.split(" ");
37
38 chans = cdata[0].split(",");
66de775f
CP
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 }
290c60db
CP
47 cdata[0] = chans2.join(",");
48 ichans = cdata.join(" ");
6500b600 49 canAutoConnect = true;
66de775f
CP
50 }
51
6500b600 52 if($defined(nick))
66de775f 53 inick = nick;
bede573a 54
6500b600
CP
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 }
66de775f 79 }
6500b600
CP
80
81 var usingAutoNick = !$defined(nick);
82 if(usingAutoNick && autoConnect)
83 inick = this.options.initialNickname;
bede573a 84
6500b600 85 var details = ui_.loginBox(callback, inick, ichans, autoConnect, usingAutoNick);
d65fe45f
CP
86 }.bind(this));
87 }
88});