var mblAdsServed = null; var mblAdCnt = null; var mblAdDivID = null; var mblAdMax = null; var sendmgsxml = null; var cptr = null; var lastMsgID = null; var fwarnings = null; var mutexml = null; var readxml = null; var winxml = null; var synchCon = null; var refresh = null; var wzChanID = null; var wzChanName = null; var urlroot = null; var ifrm = null; var wzUserID = null; var talkTimer = null; var talkmode = null; var imgSize = null; var nDispRecs = null; var listLength = null; var chatMsgEL = null; var chatMsgELC = null; var chatELTimer = null; var zoomImgEL = null; var pvcInFocus = null; var showGoogleAd = null; var rollMsgs = null; var rollCnt = null; var rollRefresh = null; var rollnNew = null; var rollTimer = null; var isRolling = null; var chanHasChanged = null; // end chat engine core declarations.. function chatCoreInit(){ readxml = getHttpConnection(); winxml = getHttpConnection(); synchCon = getHttpConnection(); sendmgsxml = getHttpConnection(); mutexml = getHttpConnection(); ifrm = document.getElementById("chatFrame"); cptr = ""; refresh = 2; rollRefresh = 24; lastMsgID = 0; wzChanID = "none"; listLength = 65; mblAdCnt = 2; mblAdsServed = 0; mblAdDivID = 1; mblAdMax = 3; } function formatHashTags(txt){ txt = txt.replace('#',' #'); var words = txt.split(/(\s)/); tx = ''; for (var i in words){ var str = words[i]; if (str[0] == '#'){ str = str.replace('#',''); var str = " #" + str + ""; } tx = tx + str; } return tx; } function zoomChannelConversation(id,chanID){ var imgELID = parent.document.getElementById('wzBrowser'); var xoff = parent.document.getElementById('wzBrowser').offsetLeft; parent.wzAPI_showFrame("/whzon/talk/zoomConversation.php?wzID=" + sID + "&fmbrID=" + id + '&fchanID=' + chanID,850,850,xoff,layersViewTop); parent.window.scrollTo(1, 0); } function zoomConversation(id){ var imgELID = parent.document.getElementById('wzBrowser'); var xoff = parent.document.getElementById('wzBrowser').offsetLeft; parent.wzAPI_showFrame("/whzon/talk/zoomConversation.php?wzID=" + sID + "&fmbrID=" + id,850,850,xoff,layersViewTop); parent.window.scrollTo(1, 0); } function highlightChatMsg(id){ chatMsgEL = document.getElementById('cmsgEL' + id); chatMsgELC = chatMsgEL.style.color; normalizeChatMsg(); chatELTimer = setTimeout('normalizeChatMsg()',3800); zoomImgEL = document.getElementById('zimgEL' + id); chatMsgEL.style.borderRadius = '.3em'; chatMsgEL.style.background = 'Gray'; chatMsgEL.style.color = 'white'; zoomImgEL.style.visibility = "visible"; } function normalizeChatMsg(){ if (chatMsgEL){chatMsgEL.style.background = 'none';} //#f9f9f9';} if (chatELTimer){ clearTimeout(chatELTimer); chatELTimer = null; } chatMsgEL.style.color = 'inherit'; if (zoomImgEL){ zoomImgEL.style.visibility = "hidden"; } } function initChannelID(id){ wzChanID = id; } function initRefreshRate(rate){ refresh = rate; } function initURLRoot(str){ urlroot = str; } function initUserID(id){ wzUserID = id; } function initCommentMode(){ talkmode = 'comments'; } function initNReads(n){ nDispRecs = '&fnrec=' + n; listLength = n; } function initImageSize(sz){ imgSize = '&fimg=' + sz; } function doClick(e) { var key; if(window.event){ key = window.event.keyCode; //IE } else{ key = e.which; //firefox } if (key == 13){ if(!talkmode){ sendMsg(); } else { sendComments(); } return false; } } function doChatClick(e) { // do this when no user logged in! var key; if(window.event) key = window.event.keyCode; //IE else key = e.which; //firefox if (key == 13){ document.frmTalkAI.submit(); return false; } } function doSendMsgToServer(url){ sendmgsxml.open("GET", url,true); sendmgsxml.onreadystatechange = doNothingMsg; sendmgsxml.send(null); parent.trackPage(); } function doSendCommentToServer(url){ sendmgsxml.open("GET", url,true); sendmgsxml.onreadystatechange = doSetCommentChan; sendmgsxml.send(null); } function doSetCommentChan(){ if (sendmgsxml.readyState == 4) { if (sendmgsxml.status == 200) { var cChanID = sendmgsxml.responseText; if (cChanID != "OK"){ wzChanID = parseInt(cChanID); } } } } function doMuteSelf(){ var currentTime = new Date(); var ranTime = currentTime.getMilliseconds(); var URL = '/whzon/mbr/mods/muteSelf.php?wzID=' + sID + '&fpen=30&xm=' + ranTime; if (fwarnings<10) { URL = '/whzon/mbr/mods/muteSelf.php?wzID=' + sID + '&fpen=5&xm=' + ranTime; } mutexml.open("GET", URL,true); mutexml.onreadystatechange = doNothingMsg; mutexml.send(null); } function doNothingMsg(){ } function doWarnMsg(msg){ if (msg.indexOf('@')>0 ) { msg = ''; alert('Please Send Contact Info Only In Private Conversations'); } if (msg.indexOf('http') >-1 || msg.indexOf('.com') >-1 || msg.indexOf('www') > -1 ) { msg = ''; alert('Please do not list URL`s in Public Chat'); } return msg; } function sendComments(){ if (1==2 && parent.eVerified != 1 && parent.wzUserID > 502959 ) { wzAPI_setRefreshPg(1); wzAPI_showFrame("/whzon/signup/fastJoin.php?mode=v&wzID=" + sID,400,450,50,100); } else { parent.doUserActionLog(); var msg = document.getElementById("chTxtBox").elements["fmsg"].value; msg = mkyTrim(msg); msg = doWarnMsg(msg); var chkMsg = msg; if (parent.ProfanityUsed(stripToAlpha(chkMsg))){ doMuteSelf(); alert("You Can't Talk Like That Here!"); } else{ if (msg != '') { msg = stripToLowerCase(msg); var currentTime = new Date(); var ranTime = currentTime.getMilliseconds(); var url = urlroot + '&wzID=0&fshout=' + escape(msg) + "&xm=" + ranTime; doSendCommentToServer(url); msg = doEmotes(msg); msg = formatHashTags(msg); // ifrm.scrollTo(0,0); var wzoutput = ifrm; var gdiv = document.createElement('DIV'); gdiv.innerHTML = "
I Said:
" + msg + "
"; if (wzoutput.childNodes.length == 0) wzoutput.appendChild(gdiv); else wzoutput.insertBefore(gdiv,wzoutput.firstChild); if (typeof wzMblReDrawPage == 'function') {wzMblReDrawPage();} } document.getElementById("chTxtBox").elements["fmsg"].value = ''; } //writeGglAd(); parent.rotateAdSpot(); } return false; } function sendMsg(fromWidget=null){ hideMkyDisclaimer(); if (1==2 && parent.eVerified != 1 && parent.wzUserID > 502959 ) { wzAPI_setRefreshPg(1); wzAPI_showFrame("/whzon/signup/fastJoin.php?mode=v&wzID=" + sID,400,450,50,100); } else { parent.doUserActionLog(); var msg = ''; if (fromWidget){ msg = document.getElementById("chatWidgetBox").value; hideChatWidget(); } else { msg = document.getElementById("chTxtBox").elements["fmsg"].value; } msg = mkyTrim(msg); msg = mkySanitize(mkyTrim(msg)); msg = doWarnMsg(msg); var chkMsg = msg; if (parent.ProfanityUsed(stripToAlpha(chkMsg))){ doMuteSelf(); alert("You Can't Talk Like That Here!"); } else{ if (msg != '') { msg = stripToLowerCase(msg); var currentTime = new Date(); var ranTime = currentTime.getMilliseconds(); var pchan = document.getElementById('postToChan'); if (pchan){ if (pchan.value != ''){ pchan = '&pchan=' + pchan.value; } else { pchan = ''; } } else {pchan = '';} var url = '/whzon/talk/sendChatOpt.php?wzID=' + parent.sID + '&fshout=' + escape(msg) + pchan + "&xm=" + ranTime; doSendMsgToServer(url); msg = doEmotes(msg); msg = formatHashTags(msg); // ifrm.scrollTo(0,0); var wzoutput = ifrm; var gdiv = document.createElement('DIV'); gdiv.innerHTML = "
I Said:
" + msg + "
"; if (wzoutput.childNodes.length == 0) wzoutput.appendChild(gdiv); else wzoutput.insertBefore(gdiv,wzoutput.firstChild); } document.getElementById("chTxtBox").elements["fmsg"].value = ''; } //writeGglAd(); parent.rotateAdSpot(); } return false; } function checkForInstantWinner() { var currentTime = new Date(); var ranTime = currentTime.getMilliseconds(); var url = '/whzon/talk/checkForInstantWin.php?wzID=' + parent.sID + '&xm=' + ranTime; winxml.open("GET", url, true); winxml.onreadystatechange = DoCheckForInstantWinner; winxml.send(null); } function DoCheckForInstantWinner(){ if (winxml.readyState == 4) { if (winxml.status == 200) { var isWinID = parseInt(winxml.responseText); //parent.dbug("check winner is !" + isWinID); if (isWinID > 0){ doAlertInstantWinner(isWinID); } } } } function ReadMsg() { if (isRolling){ if (talkTimer){clearTimeout(talkTimer);} talkTimer = setTimeout('ReadMsg()',rollRefresh * 1000); return; } if (chanHasChanged){ chanHasChanged = null; lastMsgID = 0; mblAdCnt = 1; mblAdsServed = 0; } var streamDiv = document.getElementById("chatLoading"); if (streamDiv){streamDiv.style.visibility = "visible";} if (talkTimer) clearTimeout(talkTimer); var currentTime = new Date(); var ranTime = currentTime.getMilliseconds(); if (!wzChanID || wzChanID == 'undefined'){ wzChanID = 1; } if (mblAdCnt == 3){ mblAdsServed = mblAdsServed + 1; } var url = '/whzon/talk/mbrChatGetJOBWC.php?fcu=' + wzUserID + '&wzID=' + parent.sID + imgSize + nDispRecs + '&fchanID=' + wzChanID + '&flmsgID=' + lastMsgID + '&adNbr=' + mblAdCnt + '&gAd=' + showGoogleAd + '&xm=' + ranTime; showGoogleAd = null; readxml.timeout = rollRefresh * 1000; readxml.ontimeout = ReadMsg; readxml.onerror = function(){ talkTimer = setTimeout('ReadMsg()',rollRefresh * 1000); } readxml.open("GET", url, true); readxml.onreadystatechange = writeMsg; readxml.send(null); //checkForInstantWinner(); } function writeMsg() { rollnNew = 0; if (readxml.readyState == 4) { talkTimer = setTimeout("ReadMsg()", rollRefresh * 1000); if (readxml.status == 200) { var streamDiv = document.getElementById("chatLoading"); if (streamDiv){streamDiv.style.visibility = "hidden";} var jdata = readxml.responseText; console.log('jdata',jdata); jdata = jdata.replace(/gsoftADJ/g," - 0.47em"); if (jdata == '') {jdata = '{"myMsgs":[]}';} try {j = JSON.parse(jdata); } catch(err) { parent.dbug("JSON fail: writeMsgs fail" + jdata); return; } rollMsgs = j.myMsgs; if (mblAdsServed < mblAdMax && mblAdCnt > mblAdMax){ mblAdCnt = 0; } mblAdCnt = mblAdCnt + 1; rollCnt = 0; if(rollTimer){clearTimeout(rollTimer)} rollOut(); } } var maxlength = listLength + 1 + rollnNew; toremove = ifrm.firstChild; if(toremove){ var gcount = 1; for(var i = 0; i < maxlength; i++){ if ( i > listLength && toremove){ toremove.innerHTML = ""; setShowGoogleAd(gcount); gcount = gcount + 1; } if (toremove) toremove = toremove.nextSibling; } if (typeof wzMblReDrawPage == 'function') {wzMblReDrawPage();} } } function rollOut(){ if (rollMsgs.length == 0){ parent.dbug('roll: empty msg buffer'); return; } var rate = Math.floor(rollRefresh * 1000 / rollMsgs.length); if (rollMsgs.length > 12){ rate = 25; } if (rollCnt < rollMsgs.length){ isRolling = true; //parent.dbug('rolling: ' + rollCnt + ' of: ' + rollMsgs.length); rollMessage(rollMsgs,rollCnt); rollTimer = setTimeout('rollOut()',rate); } else { isRolling = null; } rollCnt = rollCnt + 1; } function rollMessage(msgs,i){ var curScrollX = parent.wzScrollXis(); //parent.dbug('window Height is: ' + parent.curScrollX); var msgID = msgs[i].msgID; var blockID = msgs[i].crUserID; var blkCntry = msgs[i].country; var readChan = msgs[i].chanID; var callID = msgs[i].callID; var rawmsg = msgs[i].rawmsg; if (callID !== 0){ } if (msgID != 0) {lastMsgID = msgID;} if (!msgs[i].msg){ msgs[i].msg = ''; } if (readChan != wzChanID && readChan != 0){ return; } if ((parent.blockList[blockID] != 1 && !parent.countryIsBlocked(blkCntry)) || modSeeAll == 1) { var msg = msgs[i].msg; msg = unescape(msg.replace(/[+]/g,' ')); msg = unescape(msg); msg = msg.replace(/:300px;/g, ':99%;'); msg = msg.replace(/width:40px;height:32px/g, 'width:110px;height:80px;border-radius:0.4em;'); //msg = fixutf8(msg); //parent.dbug('rollm: ' + i + ': ' + msg); var wzoutput = ifrm; var divflg = document.getElementById(msgID); if (divflg == null) { var gdiv = document.createElement('DIV'); if (msgID == 0){ //parent.dbug('roll: add found'); gdiv.id = 'ad' + mblAdDivID; mblAdDivID = mblAdDivID + 1; talkTimer = setTimeout('ReadMsg()',2000); } else { gdiv.id = msgID; } gdiv.innerHTML = doEmotes(msg); gdiv.style.width = '100%'; rollnNew = rollnNew + 1; if (wzoutput.childNodes.length == 0){ wzoutput.appendChild(gdiv); } else { wzoutput.insertBefore(gdiv, wzoutput.firstChild); } } parent.document.documentElement.scrollTop = document.body.scrollTop = curScrollX; } } function setShowGoogleAd(n){ if (n == 1){ showGoogleAd = true; } } function fixutf8(s){ //return s; return unescape(s); //return decodeURIComponent(escape(s)); } String.prototype.replaceAll = function(search, replacement) { var target = this; return target.replace(new RegExp(search, 'g'), replacement); }; function doEmotes(msg){ msg = msg.replace(/~q/g,''); msg = msg.replace(/:Q/g,''); msg = msg.replace(/~u/g,''); msg = msg.replace(/:U/g,''); msg = msg.replace(/:\)/g,''); msg = msg.replace(/:\(/g,''); msg = msg.replace(/:C/g,''); msg = msg.replace(/:A/g,''); msg = msg.replace(/:W/g,''); msg = msg.replace(/:R/g,''); msg = msg.replace(/:Y/g,''); msg = msg.replace(/:L/g,''); msg = msg.replace(/:M/g,''); msg = msg.replace(/:F/g,''); msg = msg.replace(/~m/g,''); msg = msg.replace(/~a/g,''); msg = msg.replace(/~c/g,''); msg = msg.replace(/~r/g,''); msg = msg.replace(/~w/g,''); msg = msg.replace(/~y/g,''); msg = msg.replace(/~l/g,''); msg = msg.replace(/~f/g,''); msg = msg.replace(/~\)/g,''); msg = msg.replace(/~\(/g,''); msg = msg.replace(/~k/g,''); msg = msg.replace(/:K/g,''); msg = msg.replace(/~b/g,''); msg = msg.replace(/:B/g,''); msg = msg.replace(/~d/g,''); msg = msg.replace(/:D/g,''); msg = msg.replace(/~g/g,''); msg = msg.replace(/:G/g,''); msg = msg.replace(/~h/g,''); msg = msg.replace(/:H/g,''); msg = msg.replace(/~e/g,''); msg = msg.replace(/:E/g,''); msg = msg.replace(/~i/g,''); msg = msg.replace(/:I/g,''); msg = msg.replace(/:O/g,''); msg = msg.replace(/~o/g,''); msg = msg.replace(/~s/g,''); msg = msg.replace(/:S/g,''); msg = msg.replace(/~x/g,''); msg = msg.replace(/:X/g,''); msg = msg.replace(/~t/g,''); msg = msg.replace(/:T/g,''); msg = msg.replace(/~z/g,''); msg = msg.replace(/:Z/g,''); msg = msg.replace(/~j/g,''); msg = msg.replace(/:J/g,''); msg = msg.replace(/~0/g,''); msg = msg.replace(/:V/g,''); msg = msg.replace(/~v/g,''); msg = msg.replace(/~p/g,''); msg = msg.replace(/:P/g,''); msg = msg.replace(/~n/g,''); msg = msg.replace(/:N/g,''); return msg.replace(/~/g,':'); } function getUrl(url) { synchCon.open("GET", url, false); synchCon.send(null); return synchCon.responseText; } // utility functions function getHttpConnection() { var xmlhttp = null; /*@cc_on @*/ /*@if (@_jscript_version >= 5) // JScript gives us Conditional compilation, we can cope with old IE versions. // and security blocked creation of the objects. try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } @end @*/ if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp = false; } } if (!xmlhttp && window.createRequest) { try { xmlhttp = window.createRequest(); } catch (e) { xmlhttp = false; } } return xmlhttp; } function stripToLowerCase(txt){ var words = txt.split(" "); txt = ""; for(i = 0; i < words.length-1; i++){ txt = txt+ doFixWord(words[i],i) + " "; } txt = txt+doFixWord(words[words.length-1]); return txt.replace(/:/g,"~"); } function doFixWord(txt,i){ if (i == 0) { txt = txt.toLowerCase(); txt = txt.substring(0,1).toUpperCase() + txt.substring(1,txt.length); } else { txt = txt.substring(0,1) + txt.substring(1,txt.length).toLowerCase(); } return txt; } function Left(str, n) { if (n <= 0) return ""; else if (n > String(str).length) return str; else return String(str).substring(0, n); } function Right(str, n) { if (n <= 0) return ""; else if (n > String(str).length) return str; else { var iLen = String(str).length; return String(str).substring(iLen, iLen - n); } } function mkyTrim(stringToTrim) { return stringToTrim.replace(/^\s+|\s+$/g, ""); } function stripToAlpha(txt) { return txt.replace(/\W/g, ''); } function purgeList(d) { if (d){ var a = d.attributes, i, l, n; if (a) { for (i = a.length - 1; i >= 0; i -= 1) { n = a[i].name; if (typeof d[n] === 'function') { d[n] = null; } } } a = d.childNodes; if (a) { l = a.length; for (i = 0; i < l; i += 1) { purgeList(d.childNodes[i]); } } } } function parsmsg(term) { var sword = ''; var endw = cptr.indexOf(term); if (endw > 0) sword = Left(cptr, endw); cptr = Right(cptr, cptr.length - endw - 1); return sword; } function stripTxtSpam(str){ if (!str) return " "; prevL = str[0]; Lcount = 1; var newStr = "" + prevL; for (i = 1; i < str.length;i++){ var l = str[i]; if (l == prevL) Lcount++; else Lcount = 1; if (Lcount<3) newStr = newStr+l; prevL = l; } return newStr; }