]> jfr.im git - irc/quakenet/qwebirc.git/blob - js/ui/genericlogin.js
Add URL parsing for channels/nick selection.
[irc/quakenet/qwebirc.git] / js / ui / genericlogin.js
1 function GenericLoginBox(parentElement, callback, initialNickname, initialChannels, autoConnect, autoNick) {
2 if(autoConnect) {
3 ConfirmBox(parentElement, callback, initialNickname, initialChannels, autoNick);
4 } else {
5 LoginBox(parentElement, callback, initialNickname, initialChannels);
6 }
7 }
8
9 function ConfirmBox(parentElement, callback, initialNickname, initialChannels, autoNick) {
10 var box = new Element("div");
11 box.addStyle("confirmbox");
12 parentElement.appendChild(box);
13
14 var nick = new Element("b");
15 nick.set("text", initialNickname);
16
17 var c = initialChannels.split(",");
18 var ctext;
19
20 if(c.length > 1) {
21 var last = c.pop();
22 ctext = c.join(", ") + " and " + last;
23 } else {
24 ctext = c.join(", ");
25 }
26
27 var channels = new Element("b");
28 channels.set("text", ctext);
29
30 var text = new Element("div");
31 text.appendChild(document.createTextNode("To connect to IRC and join channels "));
32 text.appendChild(channels);
33
34 if(!autoNick) {
35 text.appendChild(document.createTextNode(" as "));
36 text.appendChild(nick);
37 }
38 text.appendChild(document.createTextNode(" click 'Connect'."));
39
40 box.appendChild(text);
41
42 var form = new Element("form");
43 box.appendChild(form);
44
45 var yes = new Element("input", {"type": "submit", "value": "Connect"});
46 form.appendChild(yes);
47
48 form.addEvent("submit", function(e) {
49 new Event(e).stop();
50 parentElement.removeChild(box);
51 callback({"nickname": initialNickname, "autojoin": initialChannels});
52 });
53 }
54
55 function LoginBox(parentElement, callback, initialNickname, initialChannels) {
56 var box = new Element("div");
57 parentElement.appendChild(box);
58 box.addStyle("loginbox");
59
60 var header = new Element("h1");
61 header.set("text", "Connect to IRC");
62 box.appendChild(header);
63
64 var form = new Element("form");
65 box.appendChild(form);
66
67 var boxtable = new Element("table");
68 form.appendChild(boxtable);
69
70 var tbody = new Element("tbody");
71 boxtable.appendChild(tbody); /* stupid IE */
72
73 function createRow(label, e2) {
74 var r = new Element("tr");
75 tbody.appendChild(r);
76
77 var d1 = new Element("td");
78 if(label)
79 d1.set("text", label);
80 r.appendChild(d1);
81
82 var d2 = new Element("td");
83 r.appendChild(d2);
84 d2.appendChild(e2);
85 return d1;
86 }
87
88 var nick = new Element("input");
89 createRow("Nickname:", nick);
90 var chan = new Element("input");
91 createRow("Channels (comma seperated):", chan);
92
93 var connbutton = new Element("input", {"type": "submit"});
94 connbutton.set("value", "Connect");
95 createRow(undefined, connbutton)
96
97 form.addEvent("submit", function(e) {
98 new Event(e).stop();
99 var nickname = nick.value;
100 var chans = chan.value;
101 if(chans == "#") /* sorry channel "#" :P */
102 chans = "";
103
104 if(!nickname) {
105 alert("You must supply a nickname.");
106 nick.focus();
107 return;
108 }
109
110 parentElement.removeChild(box);
111
112 callback({"nickname": nickname, "autojoin": chans});
113 }.bind(this));
114
115 nick.set("value", initialNickname);
116 chan.set("value", initialChannels);
117
118 nick.focus();
119 }