var ChatApprover=Class.create();ChatApprover.prototype={initialize:function(a){this.daddy=a;this.pendees=new Hash();this.data=new Hash();this.link=this.daddy.win.$("chatPending");this.linkTemplate=new Template(this.link.innerHTML);this.link.observe("click",this.toggleBox.bindAsEventListener(this));this.box=Element.extend(a.doc.createElement("div"));this.box.id="chatPendingBox";this.daddy.win.$("chatContainer").insert(this.box);this.box.hide()},connected:function(){this.loadData();this.updateLinkText()},dataCookie:"chatPendingMessages",daddy:null,data:null,link:null,linkTemplate:null,box:null,pendees:null,pendingTemplate:null,handleMessage:function(e,b){var c=new ChatPendingMessage();c.body=b;c.time=(new Date()).getTime();var a=e.toLowerCase();var d=this.data.get(a);if(d==null){d=new Array()}d.push(c);
this.data.set(a,d);this.saveData();this.addPendingUser(e)},approveChat:function(c){var a=this.daddy.baby(c);a.pendingMessages=this.data.unset(c);this.removePendingUser(c);this.saveData();a.show()},denyChat:function(c){this.data.unset(c.toLowerCase());this.saveData();this.removePendingUser(c);var b=c;if(c.indexOf("@")==-1){b+="@"+this.daddy.con.domain}var a=new JSJaCMessage();a.setTo(new JSJaCJID(b));a.setBody("Pending chat denied.");this.daddy.con.send(a)},loadData:function(){try{var d=JSJaCCookie.read(this.dataCookie);var c=d.getValue();if(c.length>1){var b=c.split(/:b:/);this.data=new Hash();b.each(function(e){var a=e.split(/:a:/);this.data.set(a[0],ChatPendingMessage.unserializeList(a[1]));this.addPendingUser(a[0])}.bind(this))}}catch(f){}},saveData:function(){var c=new Array();this.data.each(function(a){c.push(a.key+":a:"+ChatPendingMessage.serializeList(a.value))
}.bind(this));var b=c.join(":b:");var d=new JSJaCCookie(this.dataCookie,b,2592000);d.write()},addPendingUser:function(e){var c=e.toLowerCase();if(this.pendees.get(c)==undefined){var f=Element.extend(this.daddy.doc.createElement("div"));f.addClassName("pendingChatUser");f.innerHTML=this.pendingTemplate.evaluate({user:e.gsub(/___/," ")});var d=f.select("a");d[0].observe("click",function(g,b){this.approveChat(b)}.bindAsEventListener(this,e));d[1].observe("click",function(g,b){this.denyChat(b)}.bindAsEventListener(this,e));this.box.insert(f);this.pendees.set(c,f);this.updateLinkText();var a=this.daddy.getActiveBaby();if(a!=null){a.reposition()}}},removePendingUser:function(a){var b=this.pendees.unset(a.toLowerCase());b.remove();this.updateLinkText()},updateLinkText:function(){var b=this.pendees.keys().length;
if(b>0){this.link.show();var a="s";if(b==1){var a=""}this.link.innerHTML=this.linkTemplate.evaluate({num:b,s:a});this.daddy.showBar()}else{this.link.hide();this.box.hide();this.daddy.tryHideChatBar()}},toggleBox:function(){if(this.pendees.keys().length>0){this.box.toggle()}}};
