var Fat = { make_hex : function (r,g,b) { r = r.toString(16); if (r.length == 1) r = '0' + r; g = g.toString(16); if (g.length == 1) g = '0' + g; b = b.toString(16); if (b.length == 1) b = '0' + b; return "#" + r + g + b; }, fade_all : function () { var a = document.getElementsByTagName("*"); for (var i = 0; i < a.length; i++) { var o = a[i]; var r = /fade-?(\w{3,6})?/.exec(o.className); if (r) { if (!r[1]) r[1] = ""; if (o.id) Fat.fade_element(o.id,null,null,"#"+r[1]); } } }, fade_element : function (id, fps, duration, from, to) { if (!fps) fps = 30; if (!duration) duration = 3000; if (!from || from=="#") from = "#FFFF33"; if (!to) to = this.get_bgcolor(id); var frames = Math.round(fps * (duration / 1000)); var interval = duration / frames; var delay = interval; var frame = 0; if (from.length < 7) from += from.substr(1,3); if (to.length < 7) to += to.substr(1,3); var rf = parseInt(from.substr(1,2),16); var gf = parseInt(from.substr(3,2),16); var bf = parseInt(from.substr(5,2),16); var rt = parseInt(to.substr(1,2),16); var gt = parseInt(to.substr(3,2),16); var bt = parseInt(to.substr(5,2),16); var r,g,b,h; while (frame < frames) { r = Math.floor(rf * ((frames-frame)/frames) + rt * (frame/frames)); g = Math.floor(gf * ((frames-frame)/frames) + gt * (frame/frames)); b = Math.floor(bf * ((frames-frame)/frames) + bt * (frame/frames)); h = this.make_hex(r,g,b); setTimeout("Fat.set_bgcolor('"+id+"','"+h+"')", delay); frame++; delay = interval * frame; } setTimeout("Fat.set_bgcolor('"+id+"','"+to+"')", delay); }, set_bgcolor : function (id, c) { var o = document.getElementById(id); o.style.backgroundColor = c; }, get_bgcolor : function (id) { var o = document.getElementById(id); while(o) { var c; if (window.getComputedStyle) c = window.getComputedStyle(o,null).getPropertyValue("background-color"); if (o.currentStyle) c = o.currentStyle.backgroundColor; if ((c != "" && c != "transparent") || o.tagName == "BODY") { break; } o = o.parentNode; } if (c == undefined || c == "" || c == "transparent") c = "#FFFFFF"; var rgb = c.match(/rgb\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/); if (rgb) c = this.make_hex(parseInt(rgb[1]),parseInt(rgb[2]),parseInt(rgb[3])); return c; } } function jal_apply_filters(s) { // we don't need filters via javascript anymore since we are parsing both smilies and bbcode directly in the module // it is fatser for user instead of using his machine, and of course php is more powerfull to parse bbcode // se let's just return s return s; } //we must leave smilies retrival just for the smileys window, otherwize we don't need them var helpPopupWindow; function openShoutboxHelp() { var i; if (helpPopupWindow) helpPopupWindow.close(); helpPopupWindow = window.open("", "add_smileys", "toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,width=1024,height=480,resizable=yes"); helpPopupWindow.document.write('\n\n\t\n\t\tShoutbox Help\n\t\t\t \n\t\n\t\n\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t
SMO Ajax Shoutbox
\n\t\t\tBBcode:\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\tBBcode\n\t\t\t\t\t\n\t\t\t\t\t\tBBcode Example\n\t\t\t\t\t\n\t\t\t\t\t\tBBcode Example Results\n\t\t\t\t\t
\n\t\t\t\t\t\t[url] link [/url]\n\t\t\t\t\t\n\t\t\t\t\t\t[url]http://www.arabic-lounge.com[/url]\n\t\t\t\t\t\n\t\t\t\t\t\t«link»\n\t\t\t\t\t
\n\t\t\t\t\t\t[url=link] text [/url]\n\t\t\t\t\t\n\t\t\t\t\t\t[url=http://www.arabic-lounge.com]Arabic-Lounge.com[/url]\n\t\t\t\t\t\n\t\t\t\t\t\tArabic-Lounge.com\n\t\t\t\t\t
\n\t\t\t\t\t\t[email] text [/email]\n\t\t\t\t\t\n\t\t\t\t\t\t[email] gandalf@siemens-mobiles.org [/email]\n\t\t\t\t\t\n\t\t\t\t\t\t«email»\n\t\t\t\t\t
\n\t\t\t\t\t\t[email=link] text [/email]\n\t\t\t\t\t\n\t\t\t\t\t\t[email=gandalf@siemens-mobiles.org] my email [/email]\n\t\t\t\t\t\n\t\t\t\t\t\tmy email\n\t\t\t\t\t
\n\t\t\t\t\t\t[img] Link here [/img]\n\t\t\t\t\t\n\t\t\t\t\t\t[img]http://siemens-mobiles.org/img/Gandalf.png[/img]\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t[b] text [/b]\n\t\t\t\t\t\n\t\t\t\t\t\t[b] Arabic Lounge [/b]\n\t\t\t\t\t\n\t\t\t\t\t\t Arabic Lounge \n\t\t\t\t\t
\n\t\t\t\t\t\t[u] text [/u]\n\t\t\t\t\t\n\t\t\t\t\t\t[u] Arabic Lounge [/u]\n\t\t\t\t\t\n\t\t\t\t\t\t Arabic Lounge \n\t\t\t\t\t
\n\t\t\t\t\t\t[i] text [/i]\n\t\t\t\t\t\n\t\t\t\t\t\t[i] Arabic Lounge [/i]\n\t\t\t\t\t\n\t\t\t\t\t\t Arabic Lounge \n\t\t\t\t\t
\n\t\t\t\t\t\t[color=COLOR] text [/color]
\n\t\t\t\t\t\tWhere COLOR is red, yellow, pink, green, blue, orange, purple etc..
\n\t\t\t\t\t\tor html code, means #XXXXXX\n\t\t\t\t\t
\n\t\t\t\t\t\t[color=#00BFFF] Arabic Lounge [/color]\n\t\t\t\t\t\n\t\t\t\t\t\t Arabic Lounge \n\t\t\t\t\t
\n\t\t\t\t\t\t[sup] text [/sup]\n\t\t\t\t\t\n\t\t\t\t\t\tArabic Lounge[sup]TM[/sup]\n\t\t\t\t\t\n\t\t\t\t\t\tArabic LoungeTM\n\t\t\t\t\t
\n\t\t\t\t\t\t[sub] text [/sub]\n\t\t\t\t\t\n\t\t\t\t\t\tArabic Lounge[sub]TM[/sub]\n\t\t\t\t\t\n\t\t\t\t\t\tArabic LoungeTM\n\t\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\tThis shoutbox will also notify you for new messages sound (if it is enabled by the Administrator), you can disable the sound by simply clicking on the green button under the shoutbox, Green means sound is enabled, Red means sound is disabled
\n\t\t\t
\n\t\t\t
\n\t\t\tIf you found a bug in this shoutbox thanks for sending me an email about it\n\t\t\t
\n\t\t\t
\n\t\t\tSMO Ajax Shoutbox, Made by Wael Nasreddine aka Gandalf
\n\t\t\tArabic-Lounge.com | Siemens-Mobiles.org | Linux-Globe.com | Zone-Celebrity.com\n\t\t\t
Close Window
\n\t\n'); helpPopupWindow.document.close(); } // XHTML live Chat // author: alexander kohlhofer // version: 1.0 // http://www.plasticshore.com // http://www.plasticshore.com/projects/chat/ // please let the author know if you put any of this to use // XHTML live Chat (including this script) is published under a creative commons license // license: http://creativecommons.org/licenses/by-nc-sa/2.0/ var jal_loadtimes; var jal_org_timeout = 5000; var jal_timeout = jal_org_timeout; var GetChaturl = "modules/mod_smo_ajax_shoutbox.php?jalGetChat=yes"; var SendChaturl = "modules/mod_smo_ajax_shoutbox.php?jalSendChat=yes"; var httpReceiveChat; var httpSendChat; /////////////////////////////////////// // // Generic onload by Brothercake // http://www.brothercake.com/ // /////////////////////////////////////// //onload function //setup onload function if(typeof window.addEventListener != 'undefined') { //.. gecko, safari, konqueror and standard window.addEventListener('load', initJavaScript, false); } else if(typeof document.addEventListener != 'undefined') { //.. opera 7 document.addEventListener('load', initJavaScript, false); } else if(typeof window.attachEvent != 'undefined') { //.. win/ie window.attachEvent('onload', initJavaScript); } function initJavaScript() { if (!document.getElementById('chatbarText')) { return; } document.forms['chatForm'].elements['chatbarText'].setAttribute('autocomplete','off'); //this non standard attribute prevents firefox' autofill function to clash with this script // initiates the two objects for sending and receiving data checkStatus(''); //sets the initial value and state of the input comment checkName(); //checks the initial value of the input name checkUrl(); jal_loadtimes = 1; httpReceiveChat = getHTTPObject(); httpSendChat = getHTTPObject(); setTimeout('receiveChatText()', jal_timeout); //initiates the first data query document.getElementById('shoutboxname').onblur = checkName; document.getElementById('shoutboxurl').onblur = checkUrl; document.getElementById('chatbarText').onfocus = function () { checkStatus('active'); } document.getElementById('chatbarText').onblur = function () { checkStatus(''); } document.getElementById('submitchat').onclick = sendComment; document.getElementById('chatForm').onsubmit = function () { return false; } // When user mouses over shoutbox document.getElementById('chatoutput').onmouseover = function () { if (jal_loadtimes > 9) { jal_loadtimes = 1; receiveChatText(); } jal_timeout = jal_org_timeout; } } //initiates the first data query function receiveChatText() { jal_lastID = parseInt(document.getElementById('jal_lastID').value) - 1; if (httpReceiveChat.readyState == 4 || httpReceiveChat.readyState == 0) { httpReceiveChat.open("GET",GetChaturl + '&jal_lastID=' + jal_lastID + '&rand='+Math.floor(Math.random() * 1000000), true); httpReceiveChat.onreadystatechange = handlehHttpReceiveChat; httpReceiveChat.send(null); jal_loadtimes++; if (jal_loadtimes > 9) jal_timeout = jal_timeout * 5 / 4; } setTimeout('receiveChatText()',jal_timeout); } //deals with the servers' reply to requesting new content function handlehHttpReceiveChat() { if (httpReceiveChat.readyState == 4) { results = httpReceiveChat.responseText.split('---'); //the fields are seperated by --- if (results.length > 4) { for(i=0;i < (results.length-1);i=i+5) { //goes through the result one message at a time insertNewContent(results[i+1],results[i+2],results[i+3],results[i+4], results[i]); //inserts the new content into the page document.getElementById('jal_lastID').value = parseInt(results[i]) + 1; PlaySound(); } jal_timeout = jal_org_timeout; jal_loadtimes = 1; } } } //inserts the new content into the page function insertNewContent(liName,liText,lastResponse, liUrl, liId) { response = document.getElementById("responseTime"); response.replaceChild(document.createTextNode(lastResponse), response.firstChild); insertO = document.getElementById("outputList"); oLi = document.createElement('li'); oLi.setAttribute('id','comment-new'+liId); oSpan = document.createElement('span'); oSpan.setAttribute('class','name'); oName = document.createTextNode(liName); if (liUrl != "http://" && liUrl != '') { oURL = document.createElement('a'); oURL.href = liUrl; oURL.appendChild(oName); } else { oURL = oName; } oSpan.appendChild(oURL); oSpan.appendChild(document.createTextNode(' : ')); oLi.appendChild(oSpan); oLi.innerHTML += jal_apply_filters(liText); insertO.insertBefore(oLi, insertO.firstChild); Fat.fade_element("comment-new"+liId, 30, 1500, "#666666", "#FFFFFF"); } //stores a new comment on the server function sendComment() { currentChatText = document.forms['chatForm'].elements['chatbarText'].value; if (httpSendChat.readyState == 4 || httpSendChat.readyState == 0) { if (currentChatText == '') return; currentName = document.getElementById('shoutboxname').value; currentUrl = document.getElementById('shoutboxurl').value; param = 'n='+ encodeURIComponent(currentName)+'&c='+ encodeURIComponent(currentChatText) +'&u='+ encodeURIComponent(currentUrl); httpSendChat.open("POST", SendChaturl, true); httpSendChat.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); httpSendChat.onreadystatechange = receiveChatText; httpSendChat.send(param); document.forms['chatForm'].elements['chatbarText'].value = ''; } } // http://www.codingforums.com/showthread.php?t=63818 function pressedEnter(field,event) { var theCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; if (theCode == 13) { sendComment(); return false; } else return true; } //does clever things to the input and submit function checkStatus(focusState) { currentChatText = document.forms['chatForm'].elements['chatbarText']; oSubmit = document.forms['chatForm'].elements['submit']; if (currentChatText.value != '' || focusState == 'active') { oSubmit.disabled = false; } else { oSubmit.disabled = true; } } function jal_getCookie(name) { var dc = document.cookie; var prefix = name + "="; var begin = dc.indexOf("; " + prefix); if (begin == -1) { begin = dc.indexOf(prefix); if (begin != 0) return null; } else begin += 2; var end = document.cookie.indexOf(";", begin); if (end == -1) end = dc.length; return unescape(dc.substring(begin + prefix.length, end)); } //autoasigns a random name to a new user //If the user has chosen a name, use that function checkName() { jalCookie = jal_getCookie("jalUserName"); currentName = document.getElementById('shoutboxname'); if (currentName.value != jalCookie) { document.cookie = "jalUserName="+currentName.value+"; expires=Fri, 08 May 2015 22:41:33 UTC;" } if (jalCookie && currentName.value == '') { currentName.value = jalCookie; return; } if (currentName.value == '') { currentName.value = 'Gast'; } } function checkUrl() { jalCookie = jal_getCookie("jalUrl"); currentName = document.getElementById('shoutboxurl'); if (currentName.value == '') return; if (currentName.value != jalCookie) { document.cookie = "jalUrl="+currentName.value+"; expires=Fri, 08 May 2015 22:41:33 UTC;" return; } if (jalCookie && ( currentName.value == '' || currentName.value == "http://")) { currentName.value = jalCookie; return; } } //initiates the XMLHttpRequest object //as found here: http://www.webpasties.com/xmlHttpRequest function getHTTPObject() { var xmlhttp; /*@cc_on @if (@_jscript_version >= 5) try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } @else xmlhttp = false; @end @*/ if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp = false; } } return xmlhttp; }