mirror of
https://github.com/Mibew/i18n.git
synced 2025-01-26 06:50:30 +03:00
35 lines
13 KiB
JavaScript
35 lines
13 KiB
JavaScript
/*
|
|
This file is part of Mibew Messenger project.
|
|
http://mibew.org
|
|
|
|
Copyright (c) 2005-2011 Mibew Messenger Community
|
|
License: http://mibew.org/license.php
|
|
*/
|
|
Ajax.PeriodicalUpdater=Class.create();
|
|
Class.inherit(Ajax.PeriodicalUpdater,Ajax.Base,{initialize:function(a){this.setOptions(a);this._options.onComplete=this.requestComplete.bind(this);this._options.onException=this.handleException.bind(this);this._options.onTimeout=this.handleTimeout.bind(this);this._options.timeout=5E3;this.frequency=this._options.frequency||2;this.updater={};this.update()},handleException:function(){this._options.handleError&&this._options.handleError("offline, reconnecting");this.stopUpdate();this.timer=setTimeout(this.update.bind(this),
|
|
1E3)},handleTimeout:function(){this._options.handleError&&this._options.handleError("timeout, reconnecting");this.stopUpdate();this.timer=setTimeout(this.update.bind(this),1E3)},stopUpdate:function(){if(this.updater._options)this.updater._options.onComplete=void 0;clearTimeout(this.timer)},update:function(){if(this._options.updateParams)this._options.parameters=this._options.updateParams();this.updater=new Ajax.Request(this._options.url,this._options)},requestComplete:function(a){try{var c=Ajax.getXml(a);
|
|
c?(this._options.updateContent||Ajax.emptyFunction)(c):this._options.handleError&&this._options.handleError("reconnecting")}catch(b){}this.timer=setTimeout(this.update.bind(this),1E3*this.frequency)}});
|
|
var HtmlGenerationUtils={popupLink:function(a,c,b,d,g,h,i){return'<a href="'+a+'"'+(null!=i?' class="'+i+'"':"")+' target="_blank" title="'+c+'" onclick="this.newWindow = window.open(\''+a+"', '"+b+"', 'toolbar=0,scrollbars=0,location=0,status=1,menubar=0,width="+g+",height="+h+",resizable=1');this.newWindow.focus();this.newWindow.opener=window;return false;\">"+d+"</a>"},generateOneRowTable:function(a){return'<table class="inner"><tr>'+a+"</tr></table>"},viewOpenCell:function(a,c,b,d,g,h,i,l,k,n){var h=
|
|
2,c=c+"?thread="+b,e="<td>",e=g||d?e+HtmlGenerationUtils.popupLink(l||!d?c:c+"&viewonly=true",localized[g?0:1],"ImCenter"+b,a,640,480,null):e+('<a href="#">'+a+"</a>"),e=e+"</td>";g&&(e=e+'<td class="icon">'+HtmlGenerationUtils.popupLink(c,localized[0],"ImCenter"+b,'<img src="'+webimRoot+'/images/tbliclspeak.gif" width="15" height="15" border="0" alt="'+localized[0]+'">',640,480,null),e+="</td>",h++);d&&(e=e+'<td class="icon">'+HtmlGenerationUtils.popupLink(c+"&viewonly=true",localized[1],"ImCenter"+
|
|
b,'<img src="'+webimRoot+'/images/tbliclread.gif" width="15" height="15" border="0" alt="'+localized[1]+'">',640,480,null),e+="</td>",h++);k&&(e=e+'<td class="icon">'+HtmlGenerationUtils.popupLink(n+"?thread="+b,localized[6],"ImTracked"+b,'<img src="'+webimRoot+'/images/tblictrack.gif" width="15" height="15" border="0" alt="'+localized[6]+'">',640,480,null),e+="</td>",h++);""!=i&&(e=e+('</tr><tr><td class="firstmessage" colspan="'+h+'"><a href="javascript:void(0)" title="'+i+'" onclick="alert(this.title);return false;">')+
|
|
(30<i.length?i.substring(0,30)+"...":i),e+="</a></td>");return HtmlGenerationUtils.generateOneRowTable(e)},banCell:function(a,c){return'<td class="icon">'+HtmlGenerationUtils.popupLink(webimRoot+"/operator/ban.php?"+(c?"id="+c:"thread="+a),localized[2],"ban"+a,'<img src="'+webimRoot+'/images/ban.gif" width="15" height="15" border="0" alt="'+localized[2]+'">',720,480,null)+"</td>"},viewVisOpenCell:function(a,c,b,d,g){var h="<td>",h=g?h+HtmlGenerationUtils.popupLink(c+"?visitor="+b,localized[7],"ImCenter"+
|
|
b,a,640,480,null):h+('<a href="#">'+a+"</a>"),h=h+'</td><td class="icon">',a=HtmlGenerationUtils.popupLink(d+"?visitor="+b,localized[6],"ImTracked"+b,'<img src="'+webimRoot+'/images/tblictrack.gif" width="15" height="15" border="0" alt="'+localized[6]+'">',640,480,null),a=a.replace("scrollbars=0","scrollbars=1");return HtmlGenerationUtils.generateOneRowTable(h+a+"</td>")}};Ajax.ThreadListUpdater=Class.create();
|
|
Class.inherit(Ajax.ThreadListUpdater,Ajax.Base,{initialize:function(a){this.setOptions(a);this._options.updateParams=this.updateParams.bind(this);this._options.handleError=this.handleError.bind(this);this._options.updateContent=this.updateContent.bind(this);this._options.lastrevision=0;this.threadTimers={};this.delta=0;this.t=this._options.table;this.t2=this._options.visitors_table;this.periodicalUpdater=new Ajax.PeriodicalUpdater(this._options);this.old_visitors={};this.visitors={};this.visitorTimers=
|
|
{}},updateParams:function(){return"since="+this._options.lastrevision+"&status="+this._options.istatus+(this._options.showonline?"&showonline=1":"")+(this._options.showvisitors?"&showvisitors=1":"")},setStatus:function(a){this._options.status.innerHTML=a},handleError:function(a){this.setStatus(a)},updateThread:function(a){function c(a,d,b,c){if(a=CommonUtils.getCell(b,d,a))a.innerHTML=c}for(var b,d,g,h=!1,i=!1,l=!1,k=null,n=null,e=0;e<a.attributes.length;e++){var f=a.attributes[e];if("id"==f.nodeName)b=
|
|
f.nodeValue;else if("stateid"==f.nodeName)d=f.nodeValue;else if("state"==f.nodeName)g=f.nodeValue;else if("canopen"==f.nodeName)i=!0;else if("canview"==f.nodeName)h=!0;else if("canban"==f.nodeName)l=!0;else if("ban"==f.nodeName)k=f.nodeValue;else if("banid"==f.nodeName)n=f.nodeValue}e=CommonUtils.getRow("thr"+b,this.t);if("closed"==d)e&&this.t.deleteRow(e.rowIndex),this.threadTimers[b]=null;else{var f=NodeUtils.getNodeValue(a,"name"),m=NodeUtils.getNodeValue(a,"addr"),j=NodeUtils.getNodeValue(a,"time"),
|
|
q=NodeUtils.getNodeValue(a,"agent"),p=NodeUtils.getNodeValue(a,"modified"),r=NodeUtils.getNodeValue(a,"message"),o="<td>"+NodeUtils.getNodeValue(a,"useragent")+"</td>";null!=k&&(o="<td>"+NodeUtils.getNodeValue(a,"reason")+"</td>");l&&(o+=HtmlGenerationUtils.banCell(b,n));o=HtmlGenerationUtils.generateOneRowTable(o);a=CommonUtils.getRow("t"+d,this.t);l=CommonUtils.getRow("t"+d+"end",this.t);if(null!=e&&(e.rowIndex<=a.rowIndex||e.rowIndex>=l.rowIndex))this.t.deleteRow(e.rowIndex),e=this.threadTimers[b]=
|
|
null;if(null==e){if(e=this.t.insertRow(a.rowIndex+1),e.className="blocked"==k&&"chat"!=d?"ban":"in"+d,e.id="thr"+b,this.threadTimers[b]=[j,p,d],CommonUtils.insertCell(e,"name","visitor",null,null,HtmlGenerationUtils.viewOpenCell(f,this._options.agentservl,b,h,i,k,r,"chat"!=d,this._options.showvisitors,this._options.trackedservl)),CommonUtils.insertCell(e,"contid","visitor","center",null,m),CommonUtils.insertCell(e,"state","visitor","center",null,g),CommonUtils.insertCell(e,"op","visitor","center",
|
|
null,q),CommonUtils.insertCell(e,"time","visitor","center",null,this.getTimeSince(j)),CommonUtils.insertCell(e,"wait","visitor","center",null,"chat"!=d?this.getTimeSince(p):"-"),CommonUtils.insertCell(e,"etc","visitor","center",null,o),"wait"==d||"prio"==d)return!0}else this.threadTimers[b]=[j,p,d],e.className="blocked"==k&&"chat"!=d?"ban":"in"+d,c(this.t,e,"name",HtmlGenerationUtils.viewOpenCell(f,this._options.agentservl,b,h,i,k,r,"chat"!=d,this._options.showvisitors,this._options.trackedservl)),
|
|
c(this.t,e,"contid",m),c(this.t,e,"state",g),c(this.t,e,"op",q),c(this.t,e,"time",this.getTimeSince(j)),c(this.t,e,"wait","chat"!=d?this.getTimeSince(p):"-"),c(this.t,e,"etc",o);return!1}},updateQueueMessages:function(){function a(a,b){var c=$(b),i=$(b+"end");return null==c||null==i?!1:c.rowIndex+1<i.rowIndex}var c=$("statustd");if(c){var b=a(this.t,"twait")||a(this.t,"tprio")||a(this.t,"tchat");c.innerHTML=b?"":this._options.noclients;c.height=b?5:30}},getTimeSince:function(a){var a=Math.floor(((new Date).getTime()-
|
|
a-this.delta)/1E3),c=Math.floor(a/60),b="",a=a%60;10>a&&(a="0"+a);60<=c&&(b=Math.floor(c/60),c%=60,10>c&&(c="0"+c),b+=":");return b+c+":"+a},updateTimers:function(){for(var a in this.threadTimers)if(null!=this.threadTimers[a]){var c=this.threadTimers[a],b=CommonUtils.getRow("thr"+a,this.t);if(null!=b){var d=this.getTimeSince(c[0]),g=CommonUtils.getCell("time",b,this.t);if(g)g.innerHTML=d;c="chat"!=c[2]?this.getTimeSince(c[1]):"-";if(b=CommonUtils.getCell("wait",b,this.t))b.innerHTML=c}}},updateThreads:function(a){var c=
|
|
!1,b=NodeUtils.getAttrValue(a,"time"),d=NodeUtils.getAttrValue(a,"revision");if(b)this.delta=(new Date).getTime()-b;if(d)this._options.lastrevision=d;for(b=0;b<a.childNodes.length;b++)d=a.childNodes[b],"thread"==d.tagName&&this.updateThread(d)&&(c=!0);this.updateQueueMessages();this.updateTimers();this.setStatus(this._options.istatus?localized[8]:localized[9]);c&&(playSound(webimRoot+"/sounds/new_user.wav"),window.focus(),updaterOptions.showpopup&&alert(localized[5]))},updateOperators:function(a){var c=
|
|
$("onlineoperators");if(c){for(var b=[],d=0;d<a.childNodes.length;d++){var g=a.childNodes[d];if("operator"==g.tagName){var h=NodeUtils.getAttrValue(g,"name"),g=null!=NodeUtils.getAttrValue(g,"away");b[b.length]='<img src="'+webimRoot+"/images/op"+(g?"away":"online")+'.gif" width="12" height="12" border="0" alt="'+localized[1]+'"> '+h}}c.innerHTML=b.join(", ")}},updateVisitorsTimers:function(){for(var a in this.visitorTimers)if(null!=this.visitorTimers[a]){var c=this.visitorTimers[a],b=CommonUtils.getRow("vis"+
|
|
a,this.t2);if(null!=b){var d=function(a,b,c,d){if(a=CommonUtils.getCell(c,b,a))a.innerHTML=d};d(this.t2,b,"time",this.getTimeSince(c[0]));d(this.t2,b,"modified",this.getTimeSince(c[1]));null!=c[2]&&d(this.t2,b,"invitationtime",this.getTimeSince(c[2]))}}},updateVisitor:function(a){function c(a,b,c,d){if(a=CommonUtils.getCell(c,b,a))a.innerHTML=d}for(var b,d=0;d<a.attributes.length;d++){var g=a.attributes[d];if("id"==g.nodeName)b=g.nodeValue}for(var g=NodeUtils.getNodeValue(a,"addr"),h=NodeUtils.getNodeValue(a,
|
|
"username"),i=NodeUtils.getNodeValue(a,"useragent"),l=NodeUtils.getNodeValue(a,"time"),k=NodeUtils.getNodeValue(a,"modified"),n=NodeUtils.getNodeValue(a,"invitations"),e=NodeUtils.getNodeValue(a,"chats"),f=null,m=null,a=a.getElementsByTagName("invitation")[0],d=0;d<a.childNodes.length;d++){var j=a.childNodes[d];if("operator"==j.tagName)f=j.firstChild.nodeValue;else if("invitationtime"==j.tagName)m=j.firstChild.nodeValue}j=null==f?"free":"invited";d=CommonUtils.getRow("vis"+b,this.t2);a=CommonUtils.getRow("vis"+
|
|
j,this.t2);j=CommonUtils.getRow("vis"+j+"end",this.t2);if(null!=d&&(d.rowIndex<=a.rowIndex||d.rowIndex>=j.rowIndex))this.t2.deleteRow(d.rowIndex),d=this.visitorTimers[b]=null;null==d?(d=this.t2.insertRow(a.rowIndex+1),d.id="vis"+b,this.visitorTimers[b]=[l,k,m],CommonUtils.insertCell(d,"username","visitor",null,null,HtmlGenerationUtils.viewVisOpenCell(h,this._options.inviteservl,b,this._options.trackedservl,null==f)),CommonUtils.insertCell(d,"addr","visitor","center",null,g),CommonUtils.insertCell(d,
|
|
"time","visitor","center",null,this.getTimeSince(l)),CommonUtils.insertCell(d,"modified","visitor","center",null,this.getTimeSince(k)),CommonUtils.insertCell(d,"operator","visitor","center",null,null!=f?f:"-"),CommonUtils.insertCell(d,"invitationtime","visitor","center",null,null!=f?this.getTimeSince(m):"-"),CommonUtils.insertCell(d,"invitations","visitor","center",null,n+" / "+e),CommonUtils.insertCell(d,"useragent","visitor","center",null,i)):(this.visitorTimers[b]=[l,k,m],c(this.t2,d,"username",
|
|
HtmlGenerationUtils.viewVisOpenCell(h,this._options.inviteservl,b,this._options.trackedservl,null==f)),c(this.t2,d,"addr",g),c(this.t2,d,"operator",null!=f?f:"-"),c(this.t2,d,"time",this.getTimeSince(l)),c(this.t2,d,"modified",this.getTimeSince(k)),c(this.t2,d,"invitationtime",null!=f?this.getTimeSince(m):"-"),c(this.t2,d,"invitations",n+" / "+e),c(this.t2,d,"useragent",i));this.visitors[b]=1;return!1},removeOldVisitors:function(){for(id in this.old_visitors)if(void 0===this.visitors[id]){var a=CommonUtils.getRow("vis"+
|
|
id,this.t2);a&&this.t2.deleteRow(a.rowIndex);this.visitorTimers[id]=null}},updateVisitorsList:function(a){var c=$("visstatustd");if(c)c.innerHTML=0<a?"":this._options.novisitors,c.height=0<a?5:30},updateVisitors:function(a){this.old_visitors=this.visitors;this.visitors={};for(var c=0,b=0;b<a.childNodes.length;b++){var d=a.childNodes[b];"visitor"==d.tagName&&(c++,this.updateVisitor(d))}this.updateVisitorsTimers();this.removeOldVisitors();this.updateVisitorsList(c)},updateContent:function(a){if("update"==
|
|
a.tagName)for(var c=0;c<a.childNodes.length;c++){var b=a.childNodes[c];"threads"==b.tagName?this.updateThreads(b):"operators"==b.tagName?this.updateOperators(b):"visitors"==b.tagName&&this.updateVisitors(b)}else"error"==a.tagName?this.setStatus(NodeUtils.getNodeValue(a,"descr")):this.setStatus("reconnecting")}});
|
|
function togglemenu(){if($("sidebar")&&$("wcontent")&&$("togglemenu"))"contentnomenu"==$("wcontent").className?($("sidebar").style.display="block",$("wcontent").className="contentinner",$("togglemenu").innerHTML=localized[4]):($("sidebar").style.display="none",$("wcontent").className="contentnomenu",$("togglemenu").innerHTML=localized[3])}var webimRoot="";Behaviour.register({"#togglemenu":function(a){a.onclick=function(){togglemenu()}}});
|
|
EventHelper.register(window,"onload",function(){webimRoot=updaterOptions.wroot;new Ajax.ThreadListUpdater({table:$("threadlist"),status:$("connstatus"),istatus:0,visitors_table:$("visitorslist")}.extend(updaterOptions||{}));updaterOptions.havemenu||togglemenu()}); |