[3100] | 1 | |
---|
| 2 | var TROPHYIM_BOSH_SERVICE="/proxy/ejabberd";var TROPHYIM_LOG_LINES=200;var TROPHYIM_LOGLEVEL=0;var TROPHYIM_VERSION="0.3";var TROPHYIM_RESOURCE="/JABBERITWEB";var TROPHYIM_CHATROOM="conference.im.pr.gov.br";DOMObjects={xmlParse:function(xmlString){var xmlObj=this.xmlRender(xmlString);if(xmlObj){try{if(this.processor==undefined){this.processor=new XSLTProcessor();this.processor.importStylesheet(this.xmlRender('<xsl:stylesheet version="1.0"\ |
---|
| 3 | xmlns:xsl="http://www.w3.org/1999/XSL/Transform">\ |
---|
| 4 | <xsl:output method="html" indent="yes"/><xsl:template\ |
---|
| 5 | match="@*|node()"><xsl:copy><xsl:copy-of\ |
---|
| 6 | select="@*|node()"/></xsl:copy></xsl:template>\ |
---|
| 7 | </xsl:stylesheet>'));} |
---|
| 8 | var htmlObj=this.processor.transformToDocument(xmlObj).documentElement;if(htmlObj.tagName.toLowerCase()=='html'){htmlObj=htmlObj.firstChild.firstChild;} |
---|
| 9 | return document.importNode(htmlObj,true);}catch(e){try{var htmlObj=document.importNode(xmlObj.documentElement,true);if(htmlObj.tagName.toLowerCase()=="div"){var div_wrapper=document.createElement('div');div_wrapper.appendChild(htmlObj);if(div_wrapper.innerHTML){div_wrapper.innerHTML=div_wrapper.innerHTML;} |
---|
| 10 | htmlObj=div_wrapper.firstChild;} |
---|
| 11 | return htmlObj;}catch(e){alert("TrophyIM Error: Cannot add html to page "+e.message);}}}},xmlRender:function(xmlString){try{var renderObj=new ActiveXObject("Microsoft.XMLDOM");renderObj.async="false";if(xmlString){renderObj.loadXML(xmlString);}}catch(e){try{if(this.parser==undefined){this.parser=new DOMParser();} |
---|
| 12 | var renderObj=this.parser.parseFromString(xmlString,"application/xml");}catch(e){alert("TrophyIM Error: Cannot create new html for page");}} |
---|
| 13 | return renderObj;},getHTML:function(page) |
---|
| 14 | {return this.xmlParse(HTMLSnippets[page]);},getScript:function(script) |
---|
| 15 | {var newscript=document.createElement('script');newscript.setAttribute('src',script);newscript.setAttribute('type','text/javascript');return newscript;}};TrophyIM={controll:{notificationNewUsers:0},autoConnection:{connect:true},chatHistory:{},constants:{stale_roster:false},posWindow:{left:400,top:100},statusConn:{connected:false},_timeOut:{renderRoster:null},setCookie:function(name,value) |
---|
| 16 | {var expire=new Date();expire.setDate(expire.getDate()+365);document.cookie=name+"="+value+"; expires="+expire.toGMTString();},delCookie:function(name) |
---|
| 17 | {var expire=new Date();expire.setDate(expire.getDate()-365);document.cookie=name+"= ; expires="+expire.toGMTString();delete TrophyIM.cookies[name];},getCookies:function() |
---|
| 18 | {var cObj={};var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++) |
---|
| 19 | {while(cookies[i].charAt(0)==' ') |
---|
| 20 | {cookies[i]=cookies[i].substring(1,cookies[i].length);} |
---|
| 21 | if(cookies[i].substr(0,8)=="trophyim") |
---|
| 22 | {var nvpair=cookies[i].split("=",2);cObj[nvpair[0]]=nvpair[1];TrophyIM.setCookie(nvpair[0],nvpair[1]);}} |
---|
| 23 | return cObj;},load:function() |
---|
| 24 | {if(loadscript.getUserCurrent()==null) |
---|
| 25 | {loadscript.setUserCurrent();} |
---|
| 26 | if(!TrophyIM.statusConn.connected) |
---|
| 27 | {TrophyIM.cookies=TrophyIM.getCookies();setTimeout("TrophyIM.showLogin()",550);} |
---|
| 28 | else |
---|
| 29 | {loadscript.rosterDiv();}},storeData:function() |
---|
| 30 | {if(TrophyIM.connection&&TrophyIM.connection.connected) |
---|
| 31 | {TrophyIM.setCookie('trophyim_bosh_xid',TrophyIM.connection.jid+"|"+ |
---|
| 32 | TrophyIM.connection.sid+"|"+TrophyIM.connection.rid);TrophyIM.rosterObj.save();}},showLogin:function() |
---|
| 33 | {if(typeof(JSON)!=undefined&&typeof(Strophe)!=undefined) |
---|
| 34 | {TrophyIM.JSONStore=new TrophyIMJSONStore();if(TrophyIM.JSONStore.store_working&&TrophyIM.cookies['trophyim_bosh_xid']) |
---|
| 35 | {var xids=TrophyIM.cookies['trophyim_bosh_xid'].split("|");TrophyIM.delCookie('trophyim_bosh_xid');TrophyIM.constants.stale_roster=true;TrophyIM.connection=new Strophe.Connection(TROPHYIM_BOSH_SERVICE);TrophyIM.connection.rawInput=TrophyIM.rawInput;TrophyIM.connection.rawOutput=TrophyIM.rawOutput;Strophe.info('Attempting Strophe attach.');TrophyIM.connection.attach(xids[0],xids[1],xids[2],TrophyIM.onConnect);TrophyIM.onConnect(Strophe.Status.CONNECTED);} |
---|
| 36 | else |
---|
| 37 | {loadscript.rosterDiv();var _getUserCurrent=null;var _flag=0;do |
---|
| 38 | {_getUserCurrent=loadscript.getUserCurrent();_flag++;}while((_getUserCurrent==null||_flag>3)) |
---|
| 39 | TrophyIM.login(Base64.decode(_getUserCurrent.jid),Base64.decode(_getUserCurrent.password));}} |
---|
| 40 | else |
---|
| 41 | {setTimeout("TrophyIM.showLogin()",500);}},log:function(level,msg) |
---|
| 42 | {if(TrophyIM.logging_div&&level>=TROPHYIM_LOGLEVEL) |
---|
| 43 | {while(TrophyIM.logging_div.childNodes.length>TROPHYIM_LOG_LINES) |
---|
| 44 | {TrophyIM.logging_div.removeChild(TrophyIM.logging_div.firstChild);} |
---|
| 45 | var msg_div=document.createElement('div');msg_div.className='trophyimlogitem';msg_div.appendChild(document.createTextNode(msg));TrophyIM.logging_div.appendChild(msg_div);TrophyIM.logging_div.scrollTop=TrophyIM.logging_div.scrollHeight;}},rawInput:function(data) |
---|
| 46 | {Strophe.debug("RECV: "+data);},rawOutput:function(data) |
---|
| 47 | {Strophe.debug("SEND: "+data);},login:function() |
---|
| 48 | {if(TrophyIM.JSONStore.store_working) |
---|
| 49 | {TrophyIM.JSONStore.delData(['groups','roster','active_chat','chat_history']);} |
---|
| 50 | TrophyIM.connection=new Strophe.Connection(TROPHYIM_BOSH_SERVICE);TrophyIM.connection.rawInput=TrophyIM.rawInput;TrophyIM.connection.rawOutput=TrophyIM.rawOutput;if(arguments.length>0) |
---|
| 51 | {var barejid=arguments[0];var password=arguments[1];TrophyIM.connection.connect(barejid+TROPHYIM_RESOURCE,password,TrophyIM.onConnect);} |
---|
| 52 | else |
---|
| 53 | {var barejid=document.getElementById('trophyimjid').value |
---|
| 54 | var fulljid=barejid+TROPHYIM_RESOURCE;var password=document.getElementById('trophyimpass').value;var button=document.getElementById('trophyimconnect');loadscript.setUserCurrent(barejid,password);if(button.value=='connect') |
---|
| 55 | {button.value='disconnect';TrophyIM.login(barejid,password);_winBuild('window_login_page','remove');}} |
---|
| 56 | TrophyIM.setCookie('trophyimjid',barejid);},logout:function() |
---|
| 57 | {TrophyIM.autoConnection.connect=false;TrophyIM.delCookie('trophyim_bosh_xid');delete TrophyIM['cookies']['trophyim_bosh_xid'];TrophyIM.connection.disconnect();},onConnect:function(status) |
---|
| 58 | {var loading_gif=document.getElementById("JabberIMRosterLoadingGif");if(status==Strophe.Status.CONNECTING) |
---|
| 59 | {loading_gif.style.display="block";Strophe.info('Strophe is connecting.');} |
---|
| 60 | if(status==Strophe.Status.CONNFAIL) |
---|
| 61 | {TrophyIM.delCookie('trophyim_bosh_xid');TrophyIM.statusConn.connected=false;loading_gif.style.display="block";} |
---|
| 62 | if(status==Strophe.Status.DISCONNECTING) |
---|
| 63 | {TrophyIM.statusConn.connected=false;} |
---|
| 64 | if(status==Strophe.Status.DISCONNECTED) |
---|
| 65 | {if(TrophyIM.autoConnection.connect) |
---|
| 66 | {loading_gif.style.display="block";TrophyIM.delCookie('trophyim_bosh_xid');TrophyIM.statusConn.connected=false;setTimeout(function() |
---|
| 67 | {TrophyIM.showLogin();},10000);loadscript.clrAllContacts();loadscript.setStatusJabber(i18n.STATUS_ANAVAILABLE,"unavailable");delete TrophyIM.rosterObj.roster;delete TrophyIM.rosterObj.groups;}} |
---|
| 68 | if(status==Strophe.Status.CONNECTED) |
---|
| 69 | {loadscript.setStatusJabber(i18n.STATUS_AVAILABLE,'available');TrophyIM.statusConn.connected=true;TrophyIM.showClient();}},showClient:function() |
---|
| 70 | {TrophyIM.setCookie('trophyim_bosh_xid',TrophyIM.connection.jid+"|"+ |
---|
| 71 | TrophyIM.connection.sid+"|"+TrophyIM.connection.rid);TrophyIM.rosterObj=new TrophyIMRoster();TrophyIM.connection.addHandler(TrophyIM.onVersion,Strophe.NS.VERSION,'iq',null,null,null);TrophyIM.connection.addHandler(TrophyIM.onRoster,Strophe.NS.ROSTER,'iq',null,null,null);TrophyIM.connection.addHandler(TrophyIM.onPresence,null,'presence',null,null,null);TrophyIM.connection.addHandler(TrophyIM.onMessage,null,'message',null,null,null);TrophyIM.connection.send($iq({type:'get',xmlns:Strophe.NS.CLIENT}).c('query',{xmlns:Strophe.NS.ROSTER}).tree());TrophyIM.connection.send($pres().tree());setTimeout(TrophyIM.renderRoster,1000);},clearClient:function() |
---|
| 72 | {if(TrophyIM.logging_div) |
---|
| 73 | {var logging_div=TrophyIM.client_div.removeChild(document.getElementById('trophyimlog'));} |
---|
| 74 | else |
---|
| 75 | {var logging_div=null;} |
---|
| 76 | while(TrophyIM.client_div.childNodes.length>0) |
---|
| 77 | {TrophyIM.client_div.removeChild(TrophyIM.client_div.firstChild);} |
---|
| 78 | return logging_div;},onVersion:function(msg) |
---|
| 79 | {Strophe.debug("Version handler");if(msg.getAttribute('type')=='get') |
---|
| 80 | {var from=msg.getAttribute('from');var to=msg.getAttribute('to');var id=msg.getAttribute('id');var reply=$iq({type:'result',to:from,from:to,id:id}).c('query',{name:"TrophyIM",version:TROPHYIM_VERSION,os:"Javascript-capable browser"});TrophyIM.connection.send(reply.tree());} |
---|
| 81 | return true;},onRoster:function(msg) |
---|
| 82 | {var roster_items=msg.firstChild.getElementsByTagName('item');for(var i=0;i<roster_items.length;i++) |
---|
| 83 | {with(roster_items[i]) |
---|
| 84 | {var groups=getElementsByTagName('group');var group_array=[];for(var g=0;g<groups.length;g++) |
---|
| 85 | {if(groups[g].hasChildNodes()) |
---|
| 86 | group_array[group_array.length]=groups[g].firstChild.nodeValue;} |
---|
| 87 | if(getAttribute('ask')&&getAttribute('ask').toString()==="subscribe") |
---|
| 88 | {if(getAttribute('subscription').toString()==="none") |
---|
| 89 | {TrophyIM.rosterObj.addContact(getAttribute('jid'),getAttribute('ask'),getAttribute('name'),group_array);} |
---|
| 90 | if(getAttribute('subscription').toString()==="remove") |
---|
| 91 | {TrophyIM.rosterObj.removeContact(getAttribute('jid').toString());}} |
---|
| 92 | else |
---|
| 93 | {if((getAttribute('ask')==null&&getAttribute('subscription').toString()==="remove")||getAttribute('subscription').toString()==="remove") |
---|
| 94 | {TrophyIM.rosterObj.removeContact(getAttribute('jid').toString());} |
---|
| 95 | else |
---|
| 96 | {TrophyIM.rosterObj.addContact(getAttribute('jid'),getAttribute('subscription'),getAttribute('name'),group_array);}}}} |
---|
| 97 | if(msg.getAttribute('type')=='set') |
---|
| 98 | {var _iq=$iq({type:'reply',id:msg.getAttribute('id'),to:msg.getAttribute('from')});TrophyIM.connection.send(_iq.tree());} |
---|
| 99 | return true;},onPresence:function(msg) |
---|
| 100 | {TrophyIM.onPresenceChatRoom(msg);var type=msg.getAttribute('type')?msg.getAttribute('type'):'available';var show=msg.getElementsByTagName('show').length?Strophe.getText(msg.getElementsByTagName('show')[0]):type;var status=msg.getElementsByTagName('status').length?Strophe.getText(msg.getElementsByTagName('status')[0]):'';var priority=msg.getElementsByTagName('priority').length?parseInt(Strophe.getText(msg.getElementsByTagName('priority')[0])):0;if(msg.getAttribute('from').toString().indexOf(TROPHYIM_CHATROOM)<0) |
---|
| 101 | {TrophyIM.rosterObj.setPresence(msg.getAttribute('from'),priority,show,status);} |
---|
| 102 | return true;},onPresenceChatRoom:function(msg) |
---|
| 103 | {var xquery=msg.getElementsByTagName("x");if(xquery.length>0) |
---|
| 104 | {for(var i=0;i<xquery.length;i++) |
---|
| 105 | {var xmlns=xquery[i].getAttribute("xmlns");if(xmlns.indexOf("http://jabber.org/protocol/muc#user")==0) |
---|
| 106 | {var nameChatRoom=xquery[i].parentNode.getAttribute('from');nameChatRoom=Strophe.getBareJidFromJid(nameChatRoom);var nickName=xquery[i].parentNode.getAttribute('from');nickName=Strophe.getResourceFromJid(nickName);var type=xquery[i].parentNode.getAttribute('type')?xquery[i].parentNode.getAttribute('type'):'available';var show=(xquery[i].parentNode.firstChild.firstChild!=null)?xquery[i].parentNode.firstChild.firstChild.nodeValue:type;if(xquery[i].firstChild.getAttribute('jid')) |
---|
| 107 | {if(Strophe.getBareJidFromJid(xquery[i].firstChild.getAttribute('jid'))==Strophe.getBareJidFromJid(TrophyIM.connection.jid)) |
---|
| 108 | show=loadscript.getStatusUserIM();} |
---|
| 109 | var _UserChatRoom=document.createElement("div");_UserChatRoom.id=nameChatRoom+"_UserChatRoom__"+xquery[i].firstChild.getAttribute('jid');_UserChatRoom.setAttribute("style","padding-left:18px ; margin:3px 0px 0px 2px; background: url('"+path_jabberit+"templates/default/images/"+show+".gif')no-repeat center left");_UserChatRoom.appendChild(document.createTextNode(nickName));var nodeUser=document.getElementById(nameChatRoom+"_UserChatRoom__"+xquery[i].firstChild.getAttribute('jid'));if(nodeUser==null&&xquery[i].firstChild.getAttribute('jid')) |
---|
| 110 | {if(document.getElementById(nameChatRoom+'__roomChat__participants')!=null) |
---|
| 111 | {nameChatRoom=document.getElementById(nameChatRoom+'__roomChat__participants');nameChatRoom.appendChild(_UserChatRoom);} |
---|
| 112 | else |
---|
| 113 | {TrophyIM.makeChatRoom(nameChatRoom,nameChatRoom);nameChatRoom=document.getElementById(nameChatRoom+'__roomChat__participants');nameChatRoom.appendChild(_UserChatRoom);}} |
---|
| 114 | else |
---|
| 115 | {if(type=='unavailable') |
---|
| 116 | {var nodeUser="";if(xquery[i].firstChild.getAttribute('jid')!=null) |
---|
| 117 | nodeUser=document.getElementById(nameChatRoom+"_UserChatRoom__"+xquery[i].firstChild.getAttribute('jid'));else |
---|
| 118 | nodeUser=document.getElementById(nameChatRoom+"_UserChatRoom__"+xquery[i].parentNode.getAttribute('to'));nodeUser.parentNode.removeChild(nodeUser);} |
---|
| 119 | else if(show) |
---|
| 120 | {var _UserChatRoom=document.getElementById(nameChatRoom+"_UserChatRoom__"+xquery[i].firstChild.getAttribute('jid')) |
---|
| 121 | _UserChatRoom.setAttribute("style","padding-left:18px ; margin:3px 0px 0px 2px; background: url('"+path_jabberit+"templates/default/images/"+show+".gif')no-repeat center left");}}}}}},onMessage:function(msg) |
---|
| 122 | {var checkTime=function(i) |
---|
| 123 | {if(i<10)i="0"+i;return i;};var messageDate=function(_date) |
---|
| 124 | {var _dt=_date.substr(0,_date.indexOf('T')).split('-');var _hr=_date.substr(_date.indexOf('T')+1,_date.length-_date.indexOf('T')-2).split(':');(_date=new Date).setTime(Date.UTC(_dt[0],_dt[1]-1,_dt[2],_hr[0],_hr[1],_hr[2]));return(_date.toLocaleDateString().replace(/-/g,'/')+' '+_date.toLocaleTimeString());};var data=new Date();var dtNow=checkTime(data.getHours())+":"+checkTime(data.getMinutes())+":"+checkTime(data.getSeconds());var from=msg.getAttribute('from');var type=msg.getAttribute('type');var elems=msg.getElementsByTagName('body');var delay=(msg.getElementsByTagName('delay'))?msg.getElementsByTagName('delay'):null;var stamp=(delay[0]!=null)?"<font style='color:red;'>"+messageDate(delay[0].getAttribute('stamp'))+"</font>":dtNow;var barejid=Strophe.getBareJidFromJid(from);var jidChatRoom=Strophe.getResourceFromJid(from);var jid_lower=barejid.toLowerCase();var contact="";var state="";var chatBox=document.getElementById(jid_lower+"__chatState");var chatStateOnOff=null;var active=msg.getElementsByTagName('active');contact=barejid.toLowerCase();contact=contact.substring(0,contact.indexOf('@'));if(TrophyIM.rosterObj.roster[barejid]) |
---|
| 125 | {if(TrophyIM.rosterObj.roster[barejid.toLowerCase()]['contact']['name']) |
---|
| 126 | {contact=TrophyIM.rosterObj.roster[barejid.toLowerCase()]['contact']['name'];}} |
---|
| 127 | if(elems.length>0) |
---|
| 128 | {state="";chatStateOnOff=document.getElementById(jid_lower+"__chatStateOnOff");if(active.length>0&chatStateOnOff!=null) |
---|
| 129 | {chatStateOnOff.value='on';} |
---|
| 130 | var _message=document.createElement("div");_message.innerHTML=Strophe.getText(elems[0]);var scripts=_message.getElementsByTagName('script');for(var i=0;i<scripts.length;i++) |
---|
| 131 | _message.removeChild(scripts[i--]);_message.innerHTML=_message.innerHTML.replace(/^\s+|\s+$|^\n|\n$/g,"");_message.innerHTML=loadscript.getSmiles(_message.innerHTML);if(type=='chat'||type=='normal') |
---|
| 132 | {if(_message.hasChildNodes()) |
---|
| 133 | {var message={contact:"["+stamp+"] <font style='font-weight:bold; color:black;'>"+contact+"</font>",msg:"</br>"+_message.innerHTML};TrophyIM.addMessage(TrophyIM.makeChat(from),jid_lower,message);}} |
---|
| 134 | else if(type=='groupchat') |
---|
| 135 | {if(_message.hasChildNodes()) |
---|
| 136 | {var message={contact:"["+stamp+"] <font style='font-weight:bold; color:black;'>"+jidChatRoom+"</font>",msg:"</br>"+_message.innerHTML};TrophyIM.addMessage(TrophyIM.makeChatRoom(barejid),jid_lower,message);}}} |
---|
| 137 | else |
---|
| 138 | {if(chatBox!=null) |
---|
| 139 | state=TrophyIM.getChatState(msg);} |
---|
| 140 | var clearChatState=function() |
---|
| 141 | {chatBox.innerHTML='';} |
---|
| 142 | if(chatBox!=null) |
---|
| 143 | {var clearChatStateTimer;chatBox.innerHTML="<font style='font-weight:bold; color:grey; float:right;'>"+state+"</font>";var _composing=msg.getElementsByTagName('composing');if(_composing.length==0) |
---|
| 144 | clearChatStateTimer=setTimeout(clearChatState,2000);else |
---|
| 145 | clearTimeout(clearChatStateTimer);} |
---|
| 146 | return true;},getChatState:function(msg) |
---|
| 147 | {var state=msg.getElementsByTagName('inactive');if(state.length>0) |
---|
| 148 | {return i18n.INACTIVE;} |
---|
| 149 | else |
---|
| 150 | {state=msg.getElementsByTagName('gone');if(state.length>0) |
---|
| 151 | {return i18n.GONE;} |
---|
| 152 | else |
---|
| 153 | {state=msg.getElementsByTagName('composing');if(state.length>0) |
---|
| 154 | {return i18n.COMPOSING;} |
---|
| 155 | else |
---|
| 156 | {state=msg.getElementsByTagName('paused');if(state.length>0) |
---|
| 157 | {return i18n.PAUSED;}}}} |
---|
| 158 | return'';},makeChat:function(fulljid) |
---|
| 159 | {var barejid=Strophe.getBareJidFromJid(fulljid);var titleWindow="";var paramsChatBox={'enabledPopUp':((loadscript.getIsIE())?"none":"block"),'idChatBox':barejid+"__chatBox",'jidTo':barejid,'path_jabberit':path_jabberit};titleWindow=barejid.toLowerCase();titleWindow=titleWindow.substring(0,titleWindow.indexOf('@'));if(TrophyIM.rosterObj.roster[barejid]) |
---|
| 160 | {if(TrophyIM.rosterObj.roster[barejid.toLowerCase()]['contact']['name']) |
---|
| 161 | {titleWindow=TrophyIM.rosterObj.roster[barejid.toLowerCase()]['contact']['name'];}} |
---|
| 162 | TrophyIM.posWindow.top=TrophyIM.posWindow.top+10;if(TrophyIM.posWindow.top>200) |
---|
| 163 | TrophyIM.posWindow.top=100;TrophyIM.posWindow.left=TrophyIM.posWindow.left+5;if(TrophyIM.posWindow.left>455) |
---|
| 164 | TrophyIM.posWindow.left=400;var _content=document.createElement('div');_content.innerHTML=loadscript.parse("chat_box","chatBox.xsl",paramsChatBox);_content=_content.firstChild;var _messages=_content.firstChild.firstChild;var _textarea=_content.getElementsByTagName('textarea').item(0);var _send=_content.getElementsByTagName('input').item(0);var _chatStateOnOff=_content.getElementsByTagName('input').item(1);var _send_message=function() |
---|
| 165 | {if(!TrophyIM.sendMessage(barejid,_textarea.value)) |
---|
| 166 | return false;TrophyIM.addMessage(_messages,barejid,{contact:"<font style='font-weight:bold; color:red;'>"+i18n.ME+"</font>",msg:"<br/>"+_textarea.value});_textarea.value='';_textarea.focus();};var composingTimer_=0;var isComposing_=0;var timeCounter;var setComposing=function() |
---|
| 167 | {var checkComposing=function() |
---|
| 168 | {if(!isComposing_){composingTimer_=0;clearInterval(timeCounter);TrophyIM.sendContentMessage(barejid,'paused');}else{TrophyIM.sendContentMessage(barejid,'composing');} |
---|
| 169 | isComposing_=0;} |
---|
| 170 | if(!composingTimer_){composingTimer_=1;timeCounter=setInterval(checkComposing,4000);} |
---|
| 171 | isComposing_=1;};loadscript.configEvents(_send,'onclick',_send_message);loadscript.configEvents(_textarea,'onkeyup',function(e) |
---|
| 172 | {if(e.keyCode==13){_send_message();composingTimer_=0;clearInterval(timeCounter);}else{if(_chatStateOnOff.value=='on') |
---|
| 173 | setComposing();}});var winChatBox={id_window:"window_chat_area_"+barejid,barejid:barejid,width:387,height:375,top:TrophyIM.posWindow.top,left:TrophyIM.posWindow.left,draggable:true,visible:"display",resizable:true,zindex:loadscript.getZIndex(),title:titleWindow,closeAction:"hidden",content:_content} |
---|
| 174 | _win=_winBuild(winChatBox);loadscript.notification(barejid);loadscript.getPhotoUser(barejid);_textarea.focus();return(_messages=_win.content().firstChild);},makeChatRoom:function() |
---|
| 175 | {var jidChatRoom=arguments[0];var titleWindow="ChatRoom - "+arguments[1];var paramsChatRoom={'idChatRoom':jidChatRoom+"__roomChat",'jidTo':jidChatRoom,'lang_Send':i18n.SEND,'lang_Leave_ChatRoom':i18n.LEAVE_CHATROOM,'path_jabberit':path_jabberit};TrophyIM.posWindow.top=TrophyIM.posWindow.top+10;if(TrophyIM.posWindow.top>200) |
---|
| 176 | TrophyIM.posWindow.top=100;TrophyIM.posWindow.left=TrophyIM.posWindow.left+5;if(TrophyIM.posWindow.left>455) |
---|
| 177 | TrophyIM.posWindow.left=400;var _content=document.createElement('div');_content.innerHTML=loadscript.parse("chat_room","chatRoom.xsl",paramsChatRoom);_content=_content.firstChild;var _messages=_content.firstChild.firstChild;var _textarea=_content.getElementsByTagName('textarea').item(0);var _send=_content.getElementsByTagName('input').item(0);var _leaveChatRoom=_content.getElementsByTagName('input').item(1);var _send_message=function() |
---|
| 178 | {if(!TrophyIM.sendMessageChatRoom(jidChatRoom,_textarea.value)) |
---|
| 179 | return false;_textarea.value='';_textarea.focus();};loadscript.configEvents(_send,'onclick',_send_message);loadscript.configEvents(_leaveChatRoom,'onclick',function() |
---|
| 180 | {TrophyIM.leaveChatRoom(jidChatRoom);setTimeout(function() |
---|
| 181 | {_winBuild('window_chat_room_'+jidChatRoom,'remove');},500);});loadscript.configEvents(_textarea,'onkeyup',function(e) |
---|
| 182 | {if(e.keyCode==13) |
---|
| 183 | {_send_message();}});var winChatRoom={id_window:"window_chat_room_"+arguments[0],barejid:jidChatRoom,width:500,height:450,top:TrophyIM.posWindow.top,left:TrophyIM.posWindow.left,draggable:true,visible:"display",resizable:true,zindex:loadscript.getZIndex(),title:titleWindow,closeAction:"hidden",content:_content} |
---|
| 184 | _win=_winBuild(winChatRoom);return(_messages=_win.content().firstChild);},addContact:function(jidTo,name,group) |
---|
| 185 | {var _id=TrophyIM.connection.getUniqueId('add');var newContact=$iq({type:'set',id:_id});newContact=newContact.c('query').attrs({xmlns:'jabber:iq:roster'});newContact=newContact.c('item').attrs({jid:jidTo,name:name});newContact=newContact.c('group').t(group).tree();TrophyIM.connection.send(newContact);},addMessage:function(chatBox,jid,msg) |
---|
| 186 | {msg.msg=loadscript.getSmiles(msg.msg);var messageDiv=document.createElement("div");messageDiv.style.margin="3px 0px 1em 3px";messageDiv.innerHTML=msg.contact+" : "+msg.msg;chatBox.appendChild(messageDiv);chatBox.scrollTop=chatBox.scrollHeight;},renameContact:function(jid) |
---|
| 187 | {var name=TrophyIM.rosterObj.roster[jid].contact.name;if((name=prompt(i18n.ASK_NEW_NAME_QUESTION+name+"!",name))) |
---|
| 188 | if((name=name.replace(/^\s+|\s+$|^\n|\n$/g,""))=="") |
---|
| 189 | name="";if(name==null||name=="") |
---|
| 190 | name="";var jidTo=jid |
---|
| 191 | var name=(name)?name:TrophyIM.rosterObj.roster[jid].contact.name;var group=TrophyIM.rosterObj.roster[jid].contact.groups[0];TrophyIM.addContact(jidTo,name,group);document.getElementById('itenContact_'+jid).innerHTML=name;},renameGroup:function(jid) |
---|
| 192 | {var group=TrophyIM.rosterObj.roster[jid].contact.groups[0];var presence=TrophyIM.rosterObj.roster[jid].presence;if((group=prompt(i18n.ASK_NEW_GROUP_QUESTION,group))) |
---|
| 193 | if((group=group.replace(/^\s+|\s+$|^\n|\n$/g,""))=="") |
---|
| 194 | group="";if(group==null||group=="") |
---|
| 195 | group="";var jidTo=TrophyIM.rosterObj.roster[jid].contact.jid;var name=TrophyIM.rosterObj.roster[jid].contact.name;var group=(group)?group:TrophyIM.rosterObj.roster[jid].contact.groups[0];TrophyIM.rosterObj.removeContact(jid);TrophyIM.addContact(jidTo,name,group);document.getElementById("JabberIMRoster").innerHTML="";TrophyIM.renderRoster();setTimeout(function() |
---|
| 196 | {for(var i in presence) |
---|
| 197 | {if(presence[i].constructor==Function) |
---|
| 198 | continue;TrophyIM.rosterObj.setPresence(jid,presence[i].priority,presence[i].show,presence[i].status);}},500);},createChatRooms:function() |
---|
| 199 | {var nickName=document.getElementById('nickName_chatRoom_jabberit').value;var nameChatRoom=document.getElementById('name_ChatRoom_jabberit').value;var _from=Base64.decode(loadscript.getUserCurrent().jid)+TROPHYIM_RESOURCE;var _to=escape(nameChatRoom)+"@"+TROPHYIM_CHATROOM+"/"+nickName;var new_room=$pres({from:_from,to:_to}).c("x",{xmlns:Strophe.NS.MUC});TrophyIM.connection.send(new_room.tree());},joinChatRoom:function(roomName) |
---|
| 200 | {var presence=$pres({from:TrophyIM.connection.jid,to:roomName}).c("x",{xmlns:Strophe.NS.MUC});TrophyIM.connection.send(presence);},leaveChatRoom:function(roomName) |
---|
| 201 | {var room_nick=roomName;var presenceid=TrophyIM.connection.getUniqueId();var presence=$pres({type:"unavailable",id:presenceid,from:TrophyIM.connection.jid,to:room_nick}).c("x",{xmlns:Strophe.NS.MUC});TrophyIM.connection.send(presence);},getListRooms:function() |
---|
| 202 | {var _error_return=function(element) |
---|
| 203 | {alert(" ERROR : "+element);};var iq=$iq({to:"conference.im.pr.gov.br",type:"get"}).c("query",{xmlns:Strophe.NS.DISCO_ITEMS});TrophyIM.connection.sendIQ(iq,loadscript.listRooms,_error_return,500);},removeContact:function(jidTo) |
---|
| 204 | {var divItenContact=null;if((divItenContact=document.getElementById('itenContact_'+jidTo))) |
---|
| 205 | {var _id=TrophyIM.connection.getUniqueId();var delContact=$iq({type:'set',id:_id}) |
---|
| 206 | delContact=delContact.c('query').attrs({xmlns:'jabber:iq:roster'});delContact=delContact.c('item').attrs({jid:jidTo,subscription:'remove'}).tree();TrophyIM.connection.send(delContact);loadscript.removeElement(document.getElementById('itenContactNotification_'+jidTo));var spanShow=document.getElementById('span_show_itenContact_'+jidTo) |
---|
| 207 | spanShow.parentNode.removeChild(spanShow);loadscript.removeGroup(divItenContact.parentNode);divItenContact.parentNode.removeChild(divItenContact);}},renderRoster:function() |
---|
| 208 | {var roster_div=document.getElementById('JabberIMRoster');if(roster_div) |
---|
| 209 | {var users=new Array();var loading_gif=document.getElementById("JabberIMRosterLoadingGif");if(loading_gif.style.display=="block") |
---|
| 210 | loading_gif.style.display="none";for(var user in TrophyIM.rosterObj.roster) |
---|
| 211 | {if(TrophyIM.rosterObj.roster[user].constructor==Function) |
---|
| 212 | continue;users[users.length]=TrophyIM.rosterObj.roster[user].contact.jid;} |
---|
| 213 | users.sort();var groups=new Array();var flagGeral=false;for(var group in TrophyIM.rosterObj.groups) |
---|
| 214 | {if(TrophyIM.rosterObj.groups[group].constructor==Function) |
---|
| 215 | continue;if(group) |
---|
| 216 | groups[groups.length]=group;if(group=="Geral") |
---|
| 217 | flagGeral=true;} |
---|
| 218 | if(!flagGeral&&users.length>0) |
---|
| 219 | groups[groups.length]="Geral";groups.sort();for(var i=0;i<groups.length;i++) |
---|
| 220 | {TrophyIM.renderGroups(groups[i],roster_div);} |
---|
| 221 | TrophyIM.renderItensGroup(users,roster_div);} |
---|
| 222 | TrophyIM._timeOut.renderRoster=setTimeout("TrophyIM.renderRoster()",1000);},renderGroups:function(nameGroup,element) |
---|
| 223 | {var _addGroup=function() |
---|
| 224 | {var _nameGroup=nameGroup;var _element=element;var paramsGroup={'nameGroup':_nameGroup,'path_jabberit':path_jabberit} |
---|
| 225 | _element.innerHTML+=loadscript.parse("group","groups.xsl",paramsGroup);} |
---|
| 226 | if(!element.hasChildNodes()) |
---|
| 227 | {_addGroup();} |
---|
| 228 | else |
---|
| 229 | {var _NodeChild=element.firstChild;var flagAdd=false;while(_NodeChild) |
---|
| 230 | {if(_NodeChild.childNodes[0].nodeName.toLowerCase()==="span") |
---|
| 231 | {if(_NodeChild.childNodes[0].childNodes[0].nodeValue===nameGroup) |
---|
| 232 | {flagAdd=true;}} |
---|
| 233 | _NodeChild=_NodeChild.nextSibling;} |
---|
| 234 | if(!flagAdd) |
---|
| 235 | {_addGroup();}}},renderItensGroup:function(users,element) |
---|
| 236 | {var addItem=function() |
---|
| 237 | {if(arguments.length>0) |
---|
| 238 | {var objContact=arguments[0];var group=arguments[1];var element=arguments[2];var showOffline=loadscript.getShowContactsOffline();var presence="unavailable";var status="";var statusColor="black";var statusDisplay="none";var _resource="";var _presence=function(objContact) |
---|
| 239 | {if(objContact.presence) |
---|
| 240 | {for(var resource in objContact.presence) |
---|
| 241 | {if(objContact.presence[resource].constructor==Function) |
---|
| 242 | continue;if(objContact.presence[resource].show!='invisible') |
---|
| 243 | presence=objContact.presence[resource].show;if(objContact.contact.subscription!="both") |
---|
| 244 | presence='subscription';if(objContact.presence[resource].status) |
---|
| 245 | {status=" ( "+objContact.presence[resource].status+" ) ";statusDisplay="block";}}}};var _subscription=function(objContact) |
---|
| 246 | {if(objContact.contact.subscription!="both") |
---|
| 247 | {switch(objContact.contact.subscription) |
---|
| 248 | {case"none":status=" (( "+i18n.ASK_FOR_AUTH+" )) ";statusColor="red";break;case"to":status=" (( "+i18n.CONTACT_ASK_FOR_AUTH+" )) ";statusColor="orange";break;case"from":status=" (( "+i18n.AUTHORIZED+" )) ";statusColor="green";break;case"subscribe":status=" (( "+i18n.AUTH_SENT+" )) ";statusColor="red";break;case"not-in-roster":status=" (( "+i18n.ASK_FOR_AUTH_QUESTION+" )) ";statusColor="orange";break;default:break;} |
---|
| 249 | statusDisplay="block";}};if(objContact.contact.subscription!="remove") |
---|
| 250 | {var itensJid=document.getElementById("itenContact_"+objContact.contact.jid);if(itensJid==null) |
---|
| 251 | {var nameContact="";if(objContact.contact.name) |
---|
| 252 | nameContact=objContact.contact.name;else |
---|
| 253 | {nameContact=objContact.contact.jid;nameContact=nameContact.substring(0,nameContact.indexOf('@'));} |
---|
| 254 | _presence(objContact);var paramsContact={divDisplay:"block",id:'itenContact_'+objContact.contact.jid,jid:objContact.contact.jid,nameContact:nameContact,path_jabberit:path_jabberit,presence:presence,spanDisplay:statusDisplay,status:status,statusColor:"black",subscription:objContact.contact.subscription,resource:_resource} |
---|
| 255 | _subscription(objContact);if(group!="") |
---|
| 256 | {var _NodeChild=element.firstChild;while(_NodeChild) |
---|
| 257 | {if(_NodeChild.childNodes[0].nodeName.toLowerCase()==="span") |
---|
| 258 | {if(_NodeChild.childNodes[0].childNodes[0].nodeValue===group) |
---|
| 259 | {_NodeChild.innerHTML+=loadscript.parse("itens_group","itensGroup.xsl",paramsContact);}} |
---|
| 260 | _NodeChild=_NodeChild.nextSibling;}}} |
---|
| 261 | else |
---|
| 262 | {_presence(objContact);var is_open=itensJid.parentNode.childNodes[0].style.backgroundImage;is_open=is_open.indexOf("arrow_down.gif");_subscription(objContact);itensJid.setAttribute('subscription',objContact.contact.subscription);with(document.getElementById('span_show_'+'itenContact_'+objContact.contact.jid)) |
---|
| 263 | {if(presence=="unavailable"&&!showOffline) |
---|
| 264 | {style.display="none";} |
---|
| 265 | else |
---|
| 266 | {if(is_open>0) |
---|
| 267 | {style.display=statusDisplay;style.color=statusColor;innerHTML=status;}}} |
---|
| 268 | if(presence=="unavailable"&&!showOffline) |
---|
| 269 | {itensJid.style.display="none";} |
---|
| 270 | else |
---|
| 271 | {if(is_open>0) |
---|
| 272 | {itensJid.style.display="block";}} |
---|
| 273 | itensJid.style.background="url('"+path_jabberit+"templates/default/images/"+presence+".gif') no-repeat center left";} |
---|
| 274 | if(!objContact.presence&&!showOffline) |
---|
| 275 | {if(objContact.contact.subscription!="remove") |
---|
| 276 | {with(document.getElementById('span_show_'+'itenContact_'+objContact.contact.jid)) |
---|
| 277 | {style.display="none";} |
---|
| 278 | with(document.getElementById('itenContact_'+objContact.contact.jid)) |
---|
| 279 | {style.display="none";}}}}}};var flag=false;for(var i=0;i<users.length;i++) |
---|
| 280 | {if(TrophyIM.rosterObj.roster[users[i]].contact.jid!=Base64.decode(loadscript.getUserCurrent().jid)) |
---|
| 281 | {var _subscription=TrophyIM.rosterObj.roster[users[i]].contact.subscription;if(_subscription==="to") |
---|
| 282 | {flag=true;} |
---|
| 283 | if(_subscription==="not-in-roster") |
---|
| 284 | {flag=true;} |
---|
| 285 | if(TrophyIM.rosterObj.roster[users[i]].contact.groups) |
---|
| 286 | {var groups=TrophyIM.rosterObj.roster[users[i]].contact.groups;if(groups.length>0) |
---|
| 287 | {for(var j=0;j<groups.length;j++) |
---|
| 288 | {addItem(TrophyIM.rosterObj.roster[users[i]],groups[j],element);}} |
---|
| 289 | else |
---|
| 290 | {addItem(TrophyIM.rosterObj.roster[users[i]],"Geral",element);}} |
---|
| 291 | else |
---|
| 292 | {addItem(TrophyIM.rosterObj.roster[users[i]],"Geral",element);}}} |
---|
| 293 | if(flag) |
---|
| 294 | {if(TrophyIM.controll.notificationNewUsers==0) |
---|
| 295 | {loadscript.enabledNotificationNewUsers();TrophyIM.controll.notificationNewUsers++;}} |
---|
| 296 | else |
---|
| 297 | {loadscript.disabledNotificationNewUsers();TrophyIM.controll.notificationNewUsers=0;}},rosterClick:function(fulljid) |
---|
| 298 | {TrophyIM.makeChat(fulljid);},setAutorization:function(jidTo,jidFrom,_typeSubscription) |
---|
| 299 | {var _id=TrophyIM.connection.getUniqueId();TrophyIM.connection.send($pres().attrs({from:jidFrom,to:jidTo,type:_typeSubscription,id:_id}).tree());},setPresence:function(_type) |
---|
| 300 | {if(_type!='status') |
---|
| 301 | {if(_type=="unavailable"&&TrophyIM.statusConn.connected) |
---|
| 302 | {var loading_gif=document.getElementById("JabberIMRosterLoadingGif");if(TrophyIM._timeOut.renderRoster!=null) |
---|
| 303 | clearTimeout(TrophyIM._timeOut.renderRoster);if(TrophyIM.statusConn.connected) |
---|
| 304 | TrophyIM.connection.send($pres({type:_type}).tree());for(var i=0;i<TrophyIM.connection._requests.length;i++) |
---|
| 305 | {if(TrophyIM.connection._requests[i]) |
---|
| 306 | TrophyIM.connection._removeRequest(TrophyIM.connection._requests[i]);} |
---|
| 307 | TrophyIM.logout();loadscript.clrAllContacts();delete TrophyIM.rosterObj.roster;delete TrophyIM.rosterObj.groups;setTimeout(function() |
---|
| 308 | {if(loading_gif.style.display=="block") |
---|
| 309 | loading_gif.style.display="none";},1000);} |
---|
| 310 | else |
---|
| 311 | {if(!TrophyIM.autoConnection.connect) |
---|
| 312 | {TrophyIM.autoConnection.connect=true;TrophyIM.load();} |
---|
| 313 | else |
---|
| 314 | {if(TrophyIM.statusConn.connected) |
---|
| 315 | {if(loadscript.getStatusMessage()!="") |
---|
| 316 | {var _presence=$pres();_presence.node.appendChild(Strophe.xmlElement('show')).appendChild(Strophe.xmlTextNode(_type));_presence.node.appendChild(Strophe.xmlElement('status')).appendChild(Strophe.xmlTextNode(loadscript.getStatusMessage()));TrophyIM.connection.send(_presence.tree());} |
---|
| 317 | else |
---|
| 318 | {TrophyIM.connection.send($pres().c('show').t(_type).tree());}}}}} |
---|
| 319 | else |
---|
| 320 | {var _show="available";var _status="";if(arguments.length<2) |
---|
| 321 | {if(loadscript.getStatusMessage()!="") |
---|
| 322 | _status=prompt(i18n.TYPE_YOUR_MSG,loadscript.getStatusMessage());else |
---|
| 323 | _status=prompt(i18n.TYPE_YOUR_MSG);var _divStatus=document.getElementById("JabberIMStatusMessage");if((_status=_status.replace(/^\s+|\s+$|^\n|\n$/g,""))!="") |
---|
| 324 | _divStatus.firstChild.innerHTML="( "+_status+" )";} |
---|
| 325 | else |
---|
| 326 | {_status=arguments[1];} |
---|
| 327 | for(var resource in TrophyIM.rosterObj.roster[Base64.decode(loadscript.getUserCurrent().jid)].presence) |
---|
| 328 | {if(TrophyIM.rosterObj.roster[Base64.decode(loadscript.getUserCurrent().jid)].presence[resource].constructor==Function) |
---|
| 329 | continue;if(TROPHYIM_RESOURCE===("/"+resource)) |
---|
| 330 | _show=TrophyIM.rosterObj.roster[Base64.decode(loadscript.getUserCurrent().jid)].presence[resource].show;} |
---|
| 331 | if(TrophyIM.statusConn.connected) |
---|
| 332 | {var _presence=$pres();_presence.node.appendChild(Strophe.xmlElement('show')).appendChild(Strophe.xmlTextNode(_show));_presence.node.appendChild(Strophe.xmlElement('status')).appendChild(Strophe.xmlTextNode(_status));TrophyIM.connection.send(_presence.tree());}}},sendMessage:function() |
---|
| 333 | {if(arguments.length>0) |
---|
| 334 | {var jidTo=arguments[0];var message_input=arguments[1];message_input=message_input.replace(/^\s+|\s+$|^\n|\n$/g,"");if(message_input!=""){var newMessage=$msg({to:jidTo,from:TrophyIM.connection.jid,type:'chat'});newMessage=newMessage.c('body').t(message_input);newMessage.up();newMessage=newMessage.c('active').attrs({xmlns:'http://jabber.org/protocol/chatstates'});TrophyIM.connection.send(newMessage.tree());return true;}} |
---|
| 335 | return false;},sendMessageChatRoom:function(room) |
---|
| 336 | {if(arguments.length>0) |
---|
| 337 | {var room_nick=arguments[0];var message=arguments[1];var msgid=TrophyIM.connection.getUniqueId();var msg=$msg({to:room_nick,type:"groupchat",id:msgid}).c("body",{xmlns:Strophe.NS.CLIENT}).t(message);msg.up();TrophyIM.connection.send(msg);return true;}},sendContentMessage:function() |
---|
| 338 | {if(arguments.length>0) |
---|
| 339 | {var jidTo=arguments[0];var state=arguments[1];var newMessage=$msg({to:jidTo,from:TrophyIM.connection.jid,type:'chat'});newMessage=newMessage.c(state).attrs({xmlns:'http://jabber.org/protocol/chatstates'});TrophyIM.connection.send(newMessage.tree());}}};function TrophyIMRoster() |
---|
| 340 | {if(TrophyIM.JSONStore.store_working) |
---|
| 341 | {var data=TrophyIM.JSONStore.getData(['roster','groups']);this.roster=(data['roster']!=null)?data['roster']:{};this.groups=(data['groups']!=null)?data['groups']:{};} |
---|
| 342 | else |
---|
| 343 | {this.roster={};this.groups={};} |
---|
| 344 | this.changes=new Array();if(TrophyIM.constants.stale_roster) |
---|
| 345 | {for(var jid in this.roster) |
---|
| 346 | {this.changes[this.changes.length]=jid;}} |
---|
| 347 | this.addChange=function(jid) |
---|
| 348 | {for(var c=0;c<this.changes.length;c++) |
---|
| 349 | {if(this.changes[c]==jid) |
---|
| 350 | {return;}} |
---|
| 351 | this.changes[this.changes.length]=jid;this.changes.sort();} |
---|
| 352 | this.addContact=function(jid,subscription,name,groups) |
---|
| 353 | {if(subscription==="remove") |
---|
| 354 | {this.removeContact(jid);} |
---|
| 355 | else |
---|
| 356 | {var contact={jid:jid,subscription:subscription,name:name,groups:groups} |
---|
| 357 | var jid_lower=jid.toLowerCase();if(this.roster[jid_lower]) |
---|
| 358 | {this.roster[jid_lower]['contact']=contact;} |
---|
| 359 | else |
---|
| 360 | {this.roster[jid_lower]={contact:contact};} |
---|
| 361 | groups=groups?groups:[''];for(var g=0;g<groups.length;g++) |
---|
| 362 | {if(!this.groups[groups[g]]) |
---|
| 363 | {this.groups[groups[g]]={};} |
---|
| 364 | this.groups[groups[g]][jid_lower]=jid_lower;}}} |
---|
| 365 | this.getContact=function(jid) |
---|
| 366 | {if(this.roster[jid.toLowerCase()]) |
---|
| 367 | {return this.roster[jid.toLowerCase()]['contact'];}} |
---|
| 368 | this.getPresence=function(fulljid) |
---|
| 369 | {var jid=Strophe.getBareJidFromJid(fulljid);var current=null;if(this.roster[jid.toLowerCase()]&&this.roster[jid.toLowerCase()]['presence']) |
---|
| 370 | {for(var resource in this.roster[jid.toLowerCase()]['presence']) |
---|
| 371 | {if(this.roster[jid.toLowerCase()]['presence'][resource].constructor==Function) |
---|
| 372 | continue;var presence=this.roster[jid.toLowerCase()]['presence'][resource];if(current==null) |
---|
| 373 | {current=presence} |
---|
| 374 | else |
---|
| 375 | {if(presence['priority']>current['priority']&&((presence['show']=="chat"||presence['show']=="available")||(current['show']!="chat"||current['show']!="available"))) |
---|
| 376 | {current=presence}}}} |
---|
| 377 | return current;} |
---|
| 378 | this.groupHasChanges=function(group) |
---|
| 379 | {for(var c=0;c<this.changes.length;c++) |
---|
| 380 | {if(this.groups[group][this.changes[c]]) |
---|
| 381 | {return true;}} |
---|
| 382 | return false;} |
---|
| 383 | this.removeContact=function(jid) |
---|
| 384 | {if(this.roster[jid]) |
---|
| 385 | {var groups=this.roster[jid].contact.groups;if(groups) |
---|
| 386 | {for(var i=0;i<groups.length;i++) |
---|
| 387 | {delete this.groups[groups[i]][jid];} |
---|
| 388 | for(var i=0;i<groups.length;i++) |
---|
| 389 | {var contacts=0;for(var contact in this.groups[groups[i]]) |
---|
| 390 | {if(this.groups[groups[i]][contact].constructor==Function) |
---|
| 391 | continue;contacts++;} |
---|
| 392 | if(!contacts) |
---|
| 393 | delete this.groups[groups[i]];}} |
---|
| 394 | if(this.roster[jid]) |
---|
| 395 | delete this.roster[jid];}} |
---|
| 396 | this.setPresence=function(fulljid,priority,show,status) |
---|
| 397 | {var barejid=Strophe.getBareJidFromJid(fulljid);var resource=Strophe.getResourceFromJid(fulljid);var jid_lower=barejid.toLowerCase();if(show!='unavailable'||show!='error') |
---|
| 398 | {if(!this.roster[jid_lower]) |
---|
| 399 | {this.addContact(barejid,'not-in-roster');} |
---|
| 400 | var presence={resource:resource,priority:priority,show:show,status:status} |
---|
| 401 | if(!this.roster[jid_lower]['presence']) |
---|
| 402 | {this.roster[jid_lower]['presence']={};} |
---|
| 403 | this.roster[jid_lower]['presence'][resource]=presence;}} |
---|
| 404 | this.save=function() |
---|
| 405 | {if(TrophyIM.JSONStore.store_working) |
---|
| 406 | {TrophyIM.JSONStore.setData({roster:this.roster,groups:this.groups,active_chat:TrophyIM.activeChats['current'],chat_history:TrophyIM.chatHistory});}}} |
---|
| 407 | function TrophyIMJSONStore(){this.store_working=false;this._newXHR=function(handler){var xhr=null;if(window.XMLHttpRequest){xhr=new XMLHttpRequest();if(xhr.overrideMimeType){xhr.overrideMimeType("text/xml");}}else if(window.ActiveXObject){xhr=new ActiveXObject("Microsoft.XMLHTTP");} |
---|
| 408 | return xhr;} |
---|
| 409 | this.getData=function(vars){if(typeof(TROPHYIM_JSON_STORE)!=undefined){Strophe.debug("Retrieving JSONStore data");var xhr=this._newXHR();var getdata="get="+vars.join(",");try{xhr.open("POST",TROPHYIM_JSON_STORE,false);}catch(e){Strophe.error("JSONStore open failed.");return false;} |
---|
| 410 | xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');xhr.setRequestHeader('Content-length',getdata.length);xhr.send(getdata);if(xhr.readyState==4&&xhr.status==200){try{var dataObj=JSON.parse(xhr.responseText);return this.emptyFix(dataObj);}catch(e){Strophe.error("Could not parse JSONStore response"+ |
---|
| 411 | xhr.responseText);return false;}}else{Strophe.error("JSONStore open failed. Status: "+xhr.status);return false;}}} |
---|
| 412 | this.emptyFix=function(obj){if(typeof(obj)=="object"){for(var i in obj){if(obj[i].constructor==Function) |
---|
| 413 | continue;if(i=='_empty_'){obj[""]=this.emptyFix(obj['_empty_']);delete obj['_empty_'];}else{obj[i]=this.emptyFix(obj[i]);}}} |
---|
| 414 | return obj} |
---|
| 415 | this.delData=function(vars){if(typeof(TROPHYIM_JSON_STORE)!=undefined){Strophe.debug("Retrieving JSONStore data");var xhr=this._newXHR();var deldata="del="+vars.join(",");try{xhr.open("POST",TROPHYIM_JSON_STORE,false);}catch(e){Strophe.error("JSONStore open failed.");return false;} |
---|
| 416 | xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');xhr.setRequestHeader('Content-length',deldata.length);xhr.send(deldata);if(xhr.readyState==4&&xhr.status==200){try{var dataObj=JSON.parse(xhr.responseText);return dataObj;}catch(e){Strophe.error("Could not parse JSONStore response");return false;}}else{Strophe.error("JSONStore open failed. Status: "+xhr.status);return false;}}} |
---|
| 417 | this.setData=function(vars) |
---|
| 418 | {if(typeof(TROPHYIM_JSON_STORE)!=undefined) |
---|
| 419 | {var senddata="set="+JSON.stringify(vars);var xhr=this._newXHR();try |
---|
| 420 | {xhr.open("POST",TROPHYIM_JSON_STORE,false);} |
---|
| 421 | catch(e) |
---|
| 422 | {Strophe.error("JSONStore open failed.");return false;} |
---|
| 423 | xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');xhr.setRequestHeader('Content-length',senddata.length);xhr.send(senddata);if(xhr.readyState==4&&xhr.status==200&&xhr.responseText=="OK"){return true;}else{Strophe.error("JSONStore open failed. Status: "+xhr.status);return false;}}} |
---|
| 424 | var testData=true;if(this.setData({testData:testData})){var testResult=this.getData(['testData']);if(testResult&&testResult['testData']==true){this.store_working=true;}}} |
---|
| 425 | if(document.ELEMENT_NODE==null){document.ELEMENT_NODE=1;document.ATTRIBUTE_NODE=2;document.TEXT_NODE=3;document.CDATA_SECTION_NODE=4;document.ENTITY_REFERENCE_NODE=5;document.ENTITY_NODE=6;document.PROCESSING_INSTRUCTION_NODE=7;document.COMMENT_NODE=8;document.DOCUMENT_NODE=9;document.DOCUMENT_TYPE_NODE=10;document.DOCUMENT_FRAGMENT_NODE=11;document.NOTATION_NODE=12;} |
---|
| 426 | if(!document.importNode){document.importNode=function(node,allChildren){switch(node.nodeType){case document.ELEMENT_NODE:var newNode=document.createElement(node.nodeName);if(node.attributes&&node.attributes.length>0){for(var i=0;i<node.attributes.length;i++){newNode.setAttribute(node.attributes[i].nodeName,node.getAttribute(node.attributes[i].nodeName));}} |
---|
| 427 | if(allChildren&&node.childNodes&&node.childNodes.length>0){for(var i=0;i<node.childNodes.length;i++){newNode.appendChild(document.importNode(node.childNodes[i],allChildren));}} |
---|
| 428 | return newNode;break;case document.TEXT_NODE:case document.CDATA_SECTION_NODE:case document.COMMENT_NODE:return document.createTextNode(node.nodeValue);break;}};} |
---|
| 429 | var oldonunload=window.onunload;window.onunload=function() |
---|
| 430 | {if(oldonunload) |
---|
| 431 | {oldonunload();} |
---|
| 432 | TrophyIM.setPresence('unavailable');} |
---|