]> jfr.im git - irc/quakenet/qwebirc.git/blame - js/ui/genericlogin.js
Fix ctcps going to wrong window.
[irc/quakenet/qwebirc.git] / js / ui / genericlogin.js
CommitLineData
66de775f
CP
1function 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
9function ConfirmBox(parentElement, callback, initialNickname, initialChannels, autoNick) {
90b89aee
CP
10 var box = new Element("table");
11 box.addClass("confirmbox");
66de775f
CP
12 parentElement.appendChild(box);
13
90b89aee
CP
14 var tr = new Element("tr");
15 box.appendChild(tr);
16 tr.addClass("tr1");
17
18 var text = new Element("td");
19 tr.appendChild(text);
20
66de775f
CP
21 var nick = new Element("b");
22 nick.set("text", initialNickname);
23
24 var c = initialChannels.split(",");
25 var ctext;
26
27 if(c.length > 1) {
28 var last = c.pop();
29 ctext = c.join(", ") + " and " + last;
30 } else {
31 ctext = c.join(", ");
32 }
33
34 var channels = new Element("b");
35 channels.set("text", ctext);
36
66de775f
CP
37 text.appendChild(document.createTextNode("To connect to IRC and join channels "));
38 text.appendChild(channels);
39
40 if(!autoNick) {
41 text.appendChild(document.createTextNode(" as "));
42 text.appendChild(nick);
43 }
44 text.appendChild(document.createTextNode(" click 'Connect'."));
45
90b89aee
CP
46 var tr = new Element("tr");
47 box.appendChild(tr);
48 tr.addClass("tr2");
66de775f 49
90b89aee
CP
50 var td = new Element("td");
51 tr.appendChild(td);
52
66de775f 53 var form = new Element("form");
90b89aee 54 td.appendChild(form);
66de775f
CP
55
56 var yes = new Element("input", {"type": "submit", "value": "Connect"});
57 form.appendChild(yes);
58
59 form.addEvent("submit", function(e) {
60 new Event(e).stop();
61 parentElement.removeChild(box);
62 callback({"nickname": initialNickname, "autojoin": initialChannels});
63 });
64}
65
66function LoginBox(parentElement, callback, initialNickname, initialChannels) {
90b89aee 67 var box = new Element("table");
66de775f 68 parentElement.appendChild(box);
90b89aee
CP
69 box.addClass("loginbox");
70
71 var tr = new Element("tr");
72 box.appendChild(tr);
73 tr.addClass("tr1");
66de775f 74
90b89aee
CP
75 var td = new Element("td");
76 tr.appendChild(td);
77 td.set("html", "<h1>Connect to IRC</h1>");
78
79
80 var tr = new Element("tr");
81 tr.addClass("tr2");
82
83 var td = new Element("td");
66de775f 84
90b89aee
CP
85 box.appendChild(tr);
86
87 var td = new Element("td");
88 tr.appendChild(td);
66de775f 89 var form = new Element("form");
90b89aee 90 td.appendChild(form);
66de775f
CP
91
92 var boxtable = new Element("table");
93 form.appendChild(boxtable);
94
95 var tbody = new Element("tbody");
96 boxtable.appendChild(tbody); /* stupid IE */
97
98 function createRow(label, e2) {
99 var r = new Element("tr");
100 tbody.appendChild(r);
101
102 var d1 = new Element("td");
103 if(label)
104 d1.set("text", label);
105 r.appendChild(d1);
106
107 var d2 = new Element("td");
108 r.appendChild(d2);
109 d2.appendChild(e2);
110 return d1;
111 }
112
113 var nick = new Element("input");
114 createRow("Nickname:", nick);
115 var chan = new Element("input");
90b89aee 116 createRow("Channels:", chan);
66de775f
CP
117
118 var connbutton = new Element("input", {"type": "submit"});
119 connbutton.set("value", "Connect");
120 createRow(undefined, connbutton)
121
122 form.addEvent("submit", function(e) {
123 new Event(e).stop();
124 var nickname = nick.value;
125 var chans = chan.value;
126 if(chans == "#") /* sorry channel "#" :P */
127 chans = "";
128
129 if(!nickname) {
130 alert("You must supply a nickname.");
131 nick.focus();
132 return;
133 }
134
135 parentElement.removeChild(box);
136
137 callback({"nickname": nickname, "autojoin": chans});
138 }.bind(this));
139
140 nick.set("value", initialNickname);
141 chan.set("value", initialChannels);
142
143 nick.focus();
144}