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