User:Bawolff/sandbox/irc.js
From Wikinews, the free news source you can write!
< User:Bawolff | sandbox
Note: After saving, you may have to bypass your browser's cache to see the changes. Mozilla / Firefox / Safari: hold down Shift while clicking Reload, or press Ctrl-Shift-R (Cmd-Shift-R on Apple Mac); IE: hold Ctrl while clicking Refresh, or press Ctrl-F5; Konqueror: simply click the Reload button, or press F5; Opera users may need to completely clear their cache in Tools→Preferences. — More skins
/* ;Testing something <div id="cgiircbox" /> <!--<table border="0" cellpadding="5" cellspacing="0" > <tr id="ircfirsttr"><td colspan="2" align="center" bgcolor="#c0c0dd"><b>CGI:IRC Login</b></td></tr> <tr><td align="right" bgcolor="#f1f1f1" id="nickname-label-a"></td><td align="left" bgcolor="#f1f1f1" id="nickname-a"> </td></tr> <tr><td align="right" bgcolor="#f1f1f1" id="server-label-a"></td><td align="left" bgcolor="#f1f1f1" id="server-a"></td></tr> <tr><td align="right" bgcolor="#f1f1f1" id="channel-label-a"></td><td align="left" bgcolor="#f1f1f1" id="channel-a"> </td></tr> <tr><td align="left" bgcolor="#d9d9d9"> </td><td align="right" bgcolor="#d9d9d9" id="go-a"> </td></tr></table>--> <source lang="javascript"> */ function add_irc() { irc_div = document.getElementById("cgiircbox"); if (irc_div) { //alt server //http://chatwikizine.memebot.com/cgi-bin/cgiirc/irc.cgi //http://irc.net/cgi-bin/irc/irc.cgi (allows all servers) //http://68.213.57.225/irc.cgi //http://wnirc.awardspace.com/advanced.html var irc_form = new_element("form", {id: 'cgiirclogin', name: 'cgiirclogin', method: 'post', action: 'http://chatwikizine.memebot.com/cgi-bin/cgiirc/irc.cgi', onsubmit: 'setjs();return nickvalid()'}, irc_div); new_input('interface', 'nonjs', 'hidden', irc_form); new_input('Server', 'irc.freenode.net', 'hidden', irc_form); table = new_element("table", {border: 0, cellpadding: 5, cellspacing: 0, id: "cgiircboxtable"}, irc_form); //to seperate out table rows (function() { var tr = new_element("tr", {}, table); var td1 = new_element("td", {colspan: 2, align: "center", bgcolor: "#c0c0dd", style: "font-weight: bold;"}, tr); var ircTitle = document.createTextNode("CGI:IRC Login"); td1.appendChild(ircTitle); })(); (function() { var tr = new_element("tr", {}, table); var td1 = new_element("td", {align: "right", bgcolor: "#f1f1f1", id: "nickname-label-a"}, tr); var td2 = new_element("td", {align: "left", bgcolor: "#f1f1f1", id: "nickname-a"}, tr); })(); // (function() { // var tr = new_element("tr", {}, table); // var td1 = new_element("td", {align: "right", bgcolor: "#f1f1f1", id: "server-label-a"}, tr); // var td2 = new_element("td", {align: "left", bgcolor: "#f1f1f1", id: "server-a"}, tr); // }); (function() { var tr = new_element("tr", {}, table); var td1 = new_element("td", {align: "right", bgcolor: "#f1f1f1", id: "channel-label-a"}, tr); var td2 = new_element("td", {align: "left", bgcolor: "#f1f1f1", id: "channel-a"}, tr); })(); (function() { var tr = new_element("tr", {}, table); var td1 = new_element("td", {align: "left", bgcolor: "#d9d9d9", id: "ircAdvanced-td"}, tr); var AdvancedLink = new_element("a", {href: "javascript:show_ircAdvanced()", style: "font-size:small;", id: "ircAdvanced"}, td1); var ircAdvanced = document.createTextNode("Advanced..."); AdvancedLink.appendChild(ircAdvanced); var td2 = new_element("td", {align: "right", bgcolor: "#d9d9d9", id: "go-a"}, tr); })(); new_label('Nickname-label', 'nickname', 'Your Nickname: ', document.getElementById("nickname-label-a")); if (wgUserGroups.indexOf("user") > 0) { var irc_username = wgUserName; } else { var irc_username = "Wikinewsie" + (Math.floor(Math.random()*100)); } new_input('Nickname', irc_username, 'text', document.getElementById("nickname-a")); new_label('Channel-label', 'channel', 'IRC channel (which chat room): ', document.getElementById("channel-label-a")); var channel = new_element('select', {name: "Channel", id: "Channel", onchange: "irc_channelChange(this.selectedIndex);"}, document.getElementById("channel-a")); //start chat chan var ircDiscussion = new_element('optgroup', {label: "Discussion", id: "ircDiscussion"}, channel); var ircwikinews = new_element("option", {name: "#wikinews", value: "#wikinews", selected: "selected"}, ircDiscussion); ircwikinews.appendChild(document.createTextNode("General Wikinews discussion")); ircwikinewsen = new_element("option", {name: "#wikinews-en", value: "#wikinews-en"}, ircDiscussion); ircwikinewsen.appendChild(document.createTextNode("English Wikinews discussion")); //start rc chan var ircRC = new_element('optgroup', {label: "Recent Changes", id: "ircDiscussion"}, channel); ircwikinewsen = new_element("option", {name: "en.wikinews", value: "#en.wikinews"}, ircRC); ircwikinewsen.appendChild(document.createTextNode("English Wikinews RC")); new_input('go', ' Chat! ', 'submit', document.getElementById("go-a")); } } function show_ircAdvanced() { //do nothing! //eventually I will make this expand the form alert("Advanced options not currently avaliable"); } function irc_channelChange(chan) { //fix server var form = document.getElementById("cgiirclogin"); //alert("You selected: " + chan + ": " + select.options[chan].firstChild.nodeValue); var serv = document.getElementById("Server"); //break not on all for a reason switch (chan) { case 0: case 1: //switch to freenode serv.setAttribute("value", "irc.freenode.net"); form.setAttribute("action", "http://chatwikizine.memebot.com/cgi-bin/cgiirc/irc.cgi"); break; case 2: //RC serv.setAttribute("value", "irc.wikimedia.org"); form.setAttribute("action", "http://irc.net/cgi-bin/irc/irc.cgi"); break; } } /*</source> <!-- script src="http://scripts.blitzed.org/cgiirc.js" <form method="post" action="http://irc.net/cgi-bin/irc/irc.cgi" name="loginform" onsubmit="setjs()"> <input type="hidden" name="interface" value="nonjs"> <table border="0" cellpadding="5" cellspacing="0"> <tr><td colspan="2" align="center" bgcolor="#c0c0dd"><b>CGI:IRC Login</b></td></tr> <tr><td align="right" bgcolor="#f1f1f1">Nickname</td><td align="left" bgcolor="#f1f1f1"> <input type="text" name="Nickname" value=""></td></tr> <tr><td align="right" bgcolor="#f1f1f1">Server</td><td align="left" bgcolor="#f1f1f1"><input type="text" name="Server" value="irc.freenode.net" ></td></tr> <tr><td align="right" bgcolor="#f1f1f1">Channel</td><td align="left" bgcolor="#f1f1f1"> <input type="text" name="Channel" value="#wikinews" > </td></tr> <tr><td align="left" bgcolor="#d9d9d9"> </td><td align="right" bgcolor="#d9d9d9"> <input type="submit" value="Login" style="background-color: #d9d9d9"> </td></tr></table></form> --> <source lang="javascript">*/ function new_input(id, value, type, attach) { var new_opt = document.createElement("input"); new_opt.setAttribute('id', id); new_opt.setAttribute('name', id); new_opt.setAttribute('value', value); new_opt.setAttribute('type', type); //starting adding to tree attach.appendChild(new_opt); return(document.getElementById(id)); } function new_label(id, input, value, attach) { var new_opt = document.createElement("label"); new_opt.setAttribute('id', id); new_opt.setAttribute('name', id); new_opt.setAttribute('for', input); var label = document.createTextNode(value); new_opt.appendChild(label); //starting adding to tree if (attach && attach.appendChild) { attach.appendChild(new_opt); } else { alert("JS Error (CGI::IRC): Can not find element to append new element to. (opt)"); } return(document.getElementById(id)); } function new_element (name, attributes) { //Create element, and attributes, and optionally add to tree // call as new_element(element name to create(string), attributes of element (object), optionally element to append as a child to) if (name) { var elm = document.createElement(name); } else { return null; } //set attributes if (typeof(attributes) == "object") { for (var i in attributes) { elm.setAttribute(i, attributes[i]); } } else { return null; } //attach to tree (but only if third argument given) if (arguments[2]) { var appendState = arguments[2].appendChild(elm) if (!appendState) { alert("JS Error (CGI::IRC): Can not find element to append new element to. (element)"); } } return elm; } function setjs() { //This function might be under the GPL as it is from cgi:irc 0.5 by David Leadbeater. see http://cgiirc.sf.net if(navigator.product == 'Gecko') { document.cgiirclogin["interface"].value = 'mozilla'; }else if(window.opera && document.childNodes) { document.cgiirclogin["interface"].value = 'opera7'; }else if(navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf("Mac_PowerPC") > 0) { document.cgiirclogin["interface"].value = 'konqueror'; }else if(navigator.appName == 'Microsoft Internet Explorer' && document.getElementById && document.getElementById('ietest').innerHTML) { document.cgiirclogin["interface"].value = 'ie'; }else if(navigator.appName == 'Konqueror') { document.cgiirclogin["interface"].value = 'konqueror'; }else if(window.opera) { document.cgiirclogin["interface"].value = 'opera'; } } function nickvalid() { //This function might be under the GPL as it is from cgi:irc 0.5 by David Leadbeater. see http://cgiirc.sf.net var nick = document.cgiirclogin.Nickname.value; if(nick.match(/^[A-Za-z0-9\[\]\{\}^\\\|\_\-`]{1,32}$/)) return true; alert('Please enter a valid nickname'); document.cgiirclogin.Nickname.value = nick.replace(/[^A-Za-z0-9\[\]\{\}^\\\|\_\-`]/g, ''); return false; } function setcharset() { //This function might be under the GPL as it is from cgi:irc 0.5 by David Leadbeater. see http://cgiirc.sf.net if(document.charset && document.cgiirclogin["Character set"]) document.cgiirclogin['Character set'].value = document.charset } addLoadEvent(add_irc); addLoadEvent(setcharset); //</source>
