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;
}