var windowFocus = true; var username; var chatHeartbeatCount = 0; var minChatHeartbeat = 1000; var maxChatHeartbeat = 33000; var chatHeartbeatTime = minChatHeartbeat; var originalTitle; var blinkOrder = 0; var chatboxFocus = new Array(); var newMessages = new Array(); var newMessagesWin = new Array(); var chatBoxes = new Array(); $(document).ready(function(){ originalTitle = document.title; startChatSession(); $([window, document]).blur(function(){ windowFocus = false; }).focus(function(){ windowFocus = true; document.title = originalTitle; }); }); function translateName(nombre){ var as_arr=new Array(); if(as_arr[nombre]) return as_arr[nombre]; return nombre; } function restructureChatBoxes() { align = 0; for (x in chatBoxes) { chatboxtitle = chatBoxes[x]; if ($("#chatbox_"+chatboxtitle).css('display') != 'none') { if (align == 0) { $("#chatbox_"+chatboxtitle).css('right', '20px'); } else { width = (align)*(225+7)+20; $("#chatbox_"+chatboxtitle).css('right', width+'px'); } align++; } } } function chatWith(chatuser) { createChatBox(chatuser); $("#chatbox_"+chatuser+" .chatboxtextarea").focus(); } function createChatBox(chatboxtitle,minimizeChatBox) { if ($("#chatbox_"+chatboxtitle).length > 0) { if ($("#chatbox_"+chatboxtitle).css('display') == 'none') { $("#chatbox_"+chatboxtitle).css('display','block'); restructureChatBoxes(); } $("#chatbox_"+chatboxtitle+" .chatboxtextarea").focus(); return; } $("
" ).attr("id","chatbox_"+chatboxtitle) .addClass("chatbox") .html('
'+translateName(chatboxtitle)+'

') .appendTo($( "body" )); $("#chatbox_"+chatboxtitle).css('bottom', '0px'); chatBoxeslength = 0; for (x in chatBoxes) { if ($("#chatbox_"+chatBoxes[x]).css('display') != 'none') { chatBoxeslength++; } } if (chatBoxeslength == 0) { $("#chatbox_"+chatboxtitle).css('right', '20px'); } else { width = (chatBoxeslength)*(225+7)+20; $("#chatbox_"+chatboxtitle).css('right', width+'px'); } chatBoxes.push(chatboxtitle); if (minimizeChatBox == 1) { minimizedChatBoxes = new Array(); if ($.cookie('chatbox_minimized')) { minimizedChatBoxes = $.cookie('chatbox_minimized').split(/\|/); } minimize = 0; for (j=0;j= blinkOrder) { document.title = x+' says...'; titleChanged = 1; break; } } } if (titleChanged == 0) { document.title = originalTitle; blinkOrder = 0; } else { ++blinkOrder; } } else { for (x in newMessagesWin) { newMessagesWin[x] = false; } } for (x in newMessages) { if (newMessages[x] == true) { if (chatboxFocus[x] == false) { //FIXME: add toggle all or none policy, otherwise it looks funny $('#chatbox_'+x+' .chatboxhead').toggleClass('chatboxblink'); } } } $.ajax({ url: "/FRT/front/chat.php?action=chatheartbeat", cache: false, dataType: "json", success: function(data) { $.each(data.items, function(i,item){ if (item) { // fix strange ie bug chatboxtitle = item.f; if ($("#chatbox_"+chatboxtitle).length <= 0) { createChatBox(chatboxtitle); } if ($("#chatbox_"+chatboxtitle).css('display') == 'none') { $("#chatbox_"+chatboxtitle).css('display','block'); restructureChatBoxes(); } if (item.s == 1) { item.f = username; } if (item.s == 2) { $("#chatbox_"+chatboxtitle+" .chatboxcontent").append('
'+item.m+'
'); } else { newMessages[chatboxtitle] = true; newMessagesWin[chatboxtitle] = true; $("#chatbox_"+chatboxtitle+" .chatboxcontent").append('
'+translateName(item.f)+':  '+item.m+'
'); } $("#chatbox_"+chatboxtitle+" .chatboxcontent").scrollTop($("#chatbox_"+chatboxtitle+" .chatboxcontent")[0].scrollHeight); itemsfound += 1; } }); chatHeartbeatCount++; if (itemsfound > 0) { chatHeartbeatTime = minChatHeartbeat; chatHeartbeatCount = 1; } else if (chatHeartbeatCount >= 10) { chatHeartbeatTime *= 2; chatHeartbeatCount = 1; if (chatHeartbeatTime > maxChatHeartbeat) { chatHeartbeatTime = maxChatHeartbeat; } } setTimeout('chatHeartbeat();',chatHeartbeatTime); }}); } function closeChatBox(chatboxtitle) { $('#chatbox_'+chatboxtitle).css('display','none'); restructureChatBoxes(); $.post("/FRT/front/chat.php?action=closechat", { chatbox: chatboxtitle} , function(data){ }); } function toggleChatBoxGrowth(chatboxtitle) { if ($('#chatbox_'+chatboxtitle+' .chatboxcontent').css('display') == 'none') { var minimizedChatBoxes = new Array(); if ($.cookie('chatbox_minimized')) { minimizedChatBoxes = $.cookie('chatbox_minimized').split(/\|/); } var newCookie = ''; for (i=0;i/g,">").replace(/\"/g,"""); $("#chatbox_"+chatboxtitle+" .chatboxcontent").append('
'+translateName(username)+':  '+message+'
'); $("#chatbox_"+chatboxtitle+" .chatboxcontent").scrollTop($("#chatbox_"+chatboxtitle+" .chatboxcontent")[0].scrollHeight); }); } chatHeartbeatTime = minChatHeartbeat; chatHeartbeatCount = 1; return false; } var adjustedHeight = chatboxtextarea.clientHeight; var maxHeight = 94; if (maxHeight > adjustedHeight) { adjustedHeight = Math.max(chatboxtextarea.scrollHeight, adjustedHeight); if (maxHeight) adjustedHeight = Math.min(maxHeight, adjustedHeight); if (adjustedHeight > chatboxtextarea.clientHeight) $(chatboxtextarea).css('height',adjustedHeight+8 +'px'); } else { $(chatboxtextarea).css('overflow','auto'); } } function startChatSession(){ $.ajax({ url: "/FRT/front/chat.php?action=startchatsession", cache: false, dataType: "json", success: function(data) { username = data.username; $.each(data.items, function(i,item){ if (item) { // fix strange ie bug chatboxtitle = item.f; if ($("#chatbox_"+chatboxtitle).length <= 0) { createChatBox(chatboxtitle,1); } if (item.s == 1) { item.f = username; } if (item.s == 2) { $("#chatbox_"+chatboxtitle+" .chatboxcontent").append('
'+item.m+'
'); } else { $("#chatbox_"+chatboxtitle+" .chatboxcontent").append('
'+translateName(item.f)+':  '+item.m+'
'); } } }); for (i=0;i