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