var serverIMUrl="http://www.espertoweb.com/moodle/blocks/instmsg/core/ajax_instmsg.php"; var userid="0"; var username=""; var pingTimer; var _TTim; var pathImage="http://www.espertoweb.com/moodle/blocks/instmsg/core/pix"; var chat_windows=0; function openUsersList() { var data="op=getUsersList"; var request = YAHOO.util.Connect.asyncRequest('GET', serverIMUrl+'?'+data, callback_openUsersList); } var showUsersList=function(ObjReq) { var listText = ObjReq.responseText; var users = YAHOO.lang.JSON.parse(listText); displayUsersList(users.list,true); } var showUsersListKO = function(o){ if(o.responseText !== undefined){ alert("Il server non risponde. Chiudi questo pannello e riprova."); } } var callback_openUsersList = { success:showUsersList, failure: showUsersListKO, argument: { } }; function displayUsersList(usersList) { var str=''; var name="userlist"; if (wObjList[name]==null) { str='
'+str+'
'; var butns=''; var title="On Line User"; var butns=''; var panel=new Window(); panel.containerId="content"; panel.type="panel"; panel.id=name; panel.title=title; panel.content=str; panel.width=330; panel.height=488; panel.buttons=butns; panel.close=true; panel.fixedcenter=false; panel.y=488; panel.show(); } else { document.getElementById('listContainer').innerHTML=str; wObjList[name].w_obj.show(); } //document.getElementById('listContainer').innerHTML=str; } function refreshUsersList(usersList) { var str=''; var name="userlist"; if (wObjList[name]!=null) { document.getElementById('listContainer').innerHTML=str; } } function startChat(id_sender,name_sender) { if (id_sender==userid) return 0; var wChat=id_sender; if (wObjList[wChat]==null) { clearInterval(pingTimer); pingTimer=setInterval("ping()",5000); chat_windows++; getChatContent(wChat,name_sender); } } function getChatContent(wChat,name_sender) { var id_receiver=userid; var name_receiver=username; var id_sender=wChat; var data="op=getContent"; data+="&wChat="+wChat; data+="&id_sender="+id_sender; data+="&id_receiver="+id_receiver; data+="&name_sender="+name_sender; data+="&name_receiver="+name_receiver; var request = YAHOO.util.Connect.asyncRequest('GET', serverIMUrl+'?'+data, callback_getChatContent); } var showChat=function(ObjReq) { var chatText = ObjReq.responseText; var chatObj = YAHOO.lang.JSON.parse(chatText); var wChat=chatObj.wChat; var name_sender=chatObj.name_sender; var msg=""; str='
'; str+='
'; for (var i=0;i (" + chatObj.content[i].timestamp + ") " + chatObj.content[i].userName + ": " + msg + "
\n"; } str+='
'; /* str+=' '; */ str+=' '; str+="
"; str+="Juke Box 
"; str+=' '; Stamp = new Date(); var day = String(Stamp.getDate()); var month = String(Stamp.getMonth()+1); var year = String(Stamp.getFullYear()); day = (day.length > 1) ? day : "0"+day; month = (month.length > 1) ? month : "0"+month; var name=wChat; //var title=_TTim._CHAT+": "+name_sender+" ("+ day + "/" + month + "/" + year+")"; var title=name_sender+" ("+ day + "/" + month + "/" + year+")"; var butns=''; var panel=new Window(); panel.containerId="content"; panel.type="panel"; panel.id=name; panel.title=title; panel.content=str; panel.width=430; panel.height=488; panel.buttons=butns; panel.close=false; panel.fixedcenter=false; panel.y=488; panel.show(); var chatBox=document.getElementById(wChat+'_text'); setTimeout("setScroll('"+wChat+"_text')",500); } var showChatKO = function(o){ if(o.responseText !== undefined){ //alert("Il server non risponde. Chiudi questo pannello e riprova."); } } var callback_getChatContent = { success:showChat, failure: showChatKO, argument: { } }; function setScroll(chatDiv) { var chatBox=document.getElementById(chatDiv); chatBox.scrollTop = chatBox.scrollHeight - chatBox.clientHeight; } function keyHandler( e, wChat ) { var asc = document.all ? event.keyCode : e.which; if(asc == 13) { sendLine(wChat); } return asc != 13; } function sendLine(wChat) { var sentText=String(document.getElementById(wChat+'_inputBox').value); document.getElementById(wChat+'_inputBox').value=''; if (sentText.length < 1) return true; document.getElementById(wChat+'_inputBox').value=""; Stamp = new Date(); var h = String(Stamp.getHours()); var m = String(Stamp.getMinutes()); var s = String(Stamp.getSeconds()); var day = String(Stamp.getDate()); var month = String(Stamp.getMonth()+1); var year = String(Stamp.getFullYear()); day = (day.length > 1) ? day : "0"+day; month = (month.length > 1) ? month : "0"+month; h = (h.length > 1) ? h : "0"+h; m = (m.length > 1) ? m : "0"+m; s = (s.length > 1) ? s : "0"+s; var msg=replaceEmoticon(sentText); var chatBox=document.getElementById(wChat+'_text'); chatBox.innerHTML = chatBox.innerHTML + " (" + h + ":" + m + ":" + s + ") " + username + ": " + msg + "
\n"; chatBox.scrollTop = chatBox.scrollHeight - chatBox.clientHeight; if (msg.indexOf('jukebox') != -1) { var parole=msg.split(" "); var song=parole[1]; var jb = document.getElementById('j'+wChat); if (song=="stop") { jb.innerHTML=""; } else { song='http://www.espertoweb.com/moodle/mod/chat/juke_box/'+song+'.mp3'; jb.innerHTML=""; } } var id_sender=userid; var id_receiver=wChat; var msg=new String(); msg=escape(sentText); var data="op=sendLine&wChat="+wChat+"&id_sender="+id_sender+"&id_receiver="+id_receiver+"&msg="+msg; var request = YAHOO.util.Connect.asyncRequest('GET', serverIMUrl+'?'+data, callback_sendLine); } var lineSent=function(ObjReq) { return true; } var lineSentKO = function(o){ if(o.responseText !== undefined){ //alert("Il server non risponde. Chiudi questo pannello e riprova."); } } var callback_sendLine = { success:lineSent, failure: lineSentKO, argument: { } }; function ping() { var id_receiver=userid; var name_receiver=username; var data="op=ping&id_receiver="+id_receiver+"&name_receiver="+name_receiver; var request = YAHOO.util.Connect.asyncRequest('GET', serverIMUrl+'?'+data, callback_ping); } var pingResponseKO = function(o){ if(o.responseText !== undefined){ //alert("Il server non risponde. Chiudi questo pannello e riprova."); } } var pingResponse=function(ObjReq) { var chatMsgsText = ObjReq.responseText; var chatMsgs = YAHOO.lang.JSON.parse(chatMsgsText); for (var i=0;i (" + chatMsgs.content[i].timestamp + ") " + chatMsgs.content[i].name_sender + ": " + msg + "
\n"; if (msg.indexOf('jukebox') != -1) { var parole=msg.split(" "); var song=parole[1]; var jb = document.getElementById('j'+wChat); if (song=="stop") { jb.innerHTML=""; } else { song='http://www.espertoweb.com/moodle/mod/chat/juke_box/'+song+'.mp3'; jb.innerHTML=""; } } chatBox.scrollTop = chatBox.scrollHeight - chatBox.clientHeight; window.focus(); } var name="userlist"; if (wObjList[name]!=null) { refreshUsersList(chatMsgs.list); } } var callback_ping = { success:pingResponse, failure: pingResponseKO, argument: { } }; function startPinging() { pingTimer=setInterval("ping()",15000); } function updateTimers() { chat_windows--; if (chat_windows==0) { clearInterval(pingTimer); pingTimer=setInterval("ping()",15000); } } function getLang() { var data="op=getLang"; var request = YAHOO.util.Connect.asyncRequest('GET', serverIMUrl+'?'+data, callback_getLang); } var getLangCompletedKO = function(o){ if(o.responseText !== undefined){ //alert("Il server non risponde. Chiudi questo pannello e riprova."); } } var getLangCompleted=function(ObjReq) { var langText = ObjReq.responseText; var _TTim = YAHOO.lang.JSON.parse(langText); startPinging(); } var callback_getLang = { success:getLangCompleted, failure: getLangCompletedKO, argument: { } }; /* replacing emoticons with images */ function getChatEmoticon(name) { var ext="gif"; var res ="\""+name+"\""; return res; } function replaceEmoticon(txt) { var res=txt; res=res.replace(/;[-]?\)/i, getChatEmoticon("wink_smile")); res=res.replace(/:[-]?\|/i, getChatEmoticon("whatchutalkingabout_smile")); res=res.replace(/:[-]?P/i, getChatEmoticon("tounge_smile")); res=res.replace(/o:[-]?\)/i, getChatEmoticon("angel_smile")); res=res.replace(/:[-]?\)/i, getChatEmoticon("regular_smile")); res=res.replace(/:[-]?\(/i, getChatEmoticon("sad_smile")); res=res.replace(/:?\'[-]?(\(|\[)/i, getChatEmoticon("cry_smile")); res=res.replace(/:[-]?o/i, getChatEmoticon("omg_smile")); res=res.replace(/8[-]?\)/i, getChatEmoticon("shades_smile")); res=res.replace(/:[-]?s/i, getChatEmoticon("confused_smile")); res=res.replace(/X[-]?\(/i, getChatEmoticon("devil_smile")); res=res.replace(/\=\(\(/i, getChatEmoticon("broken_heart")); res=res.replace(/:[-]?x/i, getChatEmoticon("heart")); res=res.replace(/:[-]?d/i, getChatEmoticon("teeth_smile")); res=res.replace(/\[OK\]/, getChatEmoticon("thumbs_up")); res=res.replace(/\[BAD\]/, getChatEmoticon("thumbs_down")); res=res.replace(/\[IDEA\]/, getChatEmoticon("lightbulb")); res=res.replace(/\[MAIL\]/, getChatEmoticon("envelope")); return res; } /*------------------------------------------------------------*/ function stopTimer() { clearInterval(pingTimer); } YAHOO.util.Event.addListener(window, "load", getLang); //YAHOO.util.Event.addListener(window, "load", openUsersList); YAHOO.util.Event.addListener(window, "unload", stopTimer);