if(typeof(console)=="undefined"){console={log:function(){}}}var ChatDaddy=Class.create({initialize:function(a){this.win=a.targetWindow;this.doc=a.targetWindow.document;this.config=a;this.config.httpbase="/http-bind/";this.config.server="biotest.net";this.debug=true&&console;if(this.debug){this.logger=new JSJaCConsoleLogger(10);this.log=this.logger.log}this.babies=new Hash();Event.observe(window,"unload",this.onunload.bindAsEventListener(this));this.chatContainer=this.win.$("chatContainer");this.notifyArea=this.win.$("chatNotificationArea");this.connectionFinishedCallbacks=new Array();this.approver=new ChatApprover(this);this.roster=new ChatRoster(this);this.idler=new ChatIdler(this);this.broadcaster=new ChatBroadcaster(this);this.loggingOut=false;this.win.ChatBar.instance.chatDaddy=this},win:null,doc:null,con:null,config:null,debug:false,connection:null,linkTemplate:null,friendTemplate:null,messageHeaderTemplate:null,continueMessageTemplate:null,statusChangeTemplate:null,babies:null,broadcaster:null,chatContainer:null,logger:null,log:null,connectionFinishedCallbacks:null,roster:null,approver:null,notifyArea:null,idler:null,namesafe:function(a){a.toLowerCase().gsub(/[^ a-zA-Z0-9]/,"").gsub(/ +/,"_").gsub(/_+$/,"")
},hasBaby:function(a){return this.babies.get(a.toLowerCase())!=undefined},baby:function(c){var d=c.toLowerCase();var a=this.babies.get(d);if(a==null){a=new ChatBaby(this,c);this.babies.set(d,a)}this.saveActiveChats();return a},getActiveBaby:function(){var b=null;this.babies.values().each(function(a){if(a.active){b=a}}.bind(this));return b},saveActiveChats:function(){var a=new Array();this.babies.each(function(c){if(c.value.lastMessageTime!=null&&!c.value.broadcast){a.push(c.value.user+":"+c.value.lastMessageTime.getTime()+":"+(c.value.active?"1":"0"))}}.bind(this));new JSJaCCookie("activeChats",a.join("|||"),3600).write()},tryHideChatBar:function(){if(this.babies.keys().length==0&&(this.approver!=null&&!this.approver.link.visible())){this.hideChatBar()}},recover:function(a){this.babies.unset(a.user.toLowerCase());
this.saveActiveChats();this.tryHideChatBar()},chatWith:function(c){var a=this.baby(c);a.chatWith();return a},initiateChat:function(a){a=a.gsub(/ /,"___");this.chatWith(a);this.chatContainer.show()},handleIQ:function(a){if(a.getType()=="result"){}else{if(a.getID()=="push"){}}},handleMessage:function(d){var e=d.getFrom().split("@")[0];var c=d.getBody().htmlEnc();if(this.roster.isFriend(e)||this.hasBaby(e)){var a=this.baby(e);a.messageRecieved(c);this.saveActiveChats()}else{this.approver.handleMessage(e,c)}},loginTimer:null,handleError:function(b){var a="An error occured:<br />"+("Code: "+b.getAttribute("code")+"\nType: "+b.getAttribute("type")+"\nCondition: "+b.firstChild.nodeName).htmlEnc();if(this.win.$("infoBox")){this.win.$("infoBox").innerHTML=a}else{console.log(a)}if(this.con&&this.con.connected()){this.reconnecting=true;
this.con.disconnect()}this.showError(b.firstChild.nodeName);if(this.loginTimer!=null){clearTimeout(this.loginTimer)}this.loginTimer=setTimeout("chat.login()",5000)},reconnecting:false,sessionConflict:false,handleStatusChanged:function(a){if(a=="session-terminate-conflict"){this.sessionConflict=true}},handleConnected:function(){this.roster.requestRoster();var a=new JSJaCPresence();a.setPresence();this.con.send(a);this.conReady()},trans:0,transN:function(){this.trans++;return this.trans},runConnectionFinishedCallbacks:function(){this.connectionFinishedCallbacks.each(function(a){a()}.bind(this));this.connectionFinishedCallbacks=new Array()},handleDisconnected:function(){if(this.reconnecting&&!this.sessionConflict){setTimeout(this.login.bind(this),1000);this.reconnecting=false}},handleIqVersion:function(a){this.con.send(a.reply([a.buildNode("name","jsjac simpleclient"),a.buildNode("version",JSJaC.Version),a.buildNode("os",navigator.userAgent)]));
return true},handleIqTime:function(b){var a=new Date();this.con.send(b.reply([b.buildNode("display",a.toLocaleString()),b.buildNode("utc",a.jabberDate()),b.buildNode("tz",a.toLocaleString().substring(a.toLocaleString().lastIndexOf(" ")+1))]));return true},login:function(){this.loginTimer=null;if(this.sessionConflict){return}if(typeof(JSJaCConnection)=="undefined"||typeof(ChatBaby)=="undefined"){this.win.setTimeout("chat.login()",100)}this.con=new JSJaCHttpBindingConnection({httpbase:this.config.httpbase,oDbg:this.log});this.setupCon();if(this.con.resume()){this.conReady()}else{this.config.username_login=this.config.username.toLowerCase();this.config.username_login=this.config.username_login.gsub(/ /,"___");this.con.connect({domain:this.config.server,username:this.config.username_login,resource:"ubxmpp-"+((new Date()).getTime().toString().substring(9,13)),pass:this.config.password,register:false})
}var a=this.win.$("logoutLink");if(a!=undefined&&a!=null){a.observe("click",function(){this.loggingOut=true;var b=ChatDaddy.clearCookies.bind(this);b()}.bindAsEventListener(this))}},loggingOut:false,conReady:function(){this.approver.connected();this.roster.postLogin();try{var a=JSJaCCookie.read("activeChats");if(a!=null&&a!=undefined){var b=new Date();b.setHours(b.getHours()-1);var c=a.getValue();if(c.length>0){c.split("|||").each(function(i){try{var h=i.split(":");var g=h[0];var l=h[1];var k=h[2];var m=new Date(parseInt(l));if(b-m<=0){var f=this.baby(g);f.lastMessageTime=m;if(k=="1"){f.show()}else{f.hide()}}}catch(j){}}.bind(this))}}}catch(d){}this.notifyArea.innerHTML="";this.enableChat();this.runConnectionFinishedCallbacks()},showError:function(a){a=a.gsub(/"/,'"');this.notifyArea.innerHTML='<img src="/img/forum/tforums/chat/error.gif" width="16" height="13" alt="'+a+'" title="'+a+'">';
this.disableChat()},enableChat:function(){this.win.$("mainNavChatLink").stopObserving("click");this.win.$("mainNavChatLink").observe("click",function(){this.roster.friendContainer.toggle()}.bindAsEventListener(this))},disableChat:function(){this.win.$("mainNavChatLink").stopObserving("click")},setupCon:function(){this.con.registerHandler("message",this.handleMessage.bind(this));this.con.registerHandler("presence",this.roster.handlePresence.bind(this.roster));this.con.registerHandler("iq",this.handleIQ.bind(this));this.con.registerHandler("onconnect",this.handleConnected.bind(this));this.con.registerHandler("onerror",this.handleError.bind(this));this.con.registerHandler("status_changed",this.handleStatusChanged.bind(this));this.con.registerHandler("ondisconnect",this.handleDisconnected.bind(this));this.con.registerIQGet("query",NS_VERSION,this.handleIqVersion.bind(this));
this.con.registerIQGet("query",NS_TIME,this.handleIqTime.bind(this))},quit:function(){var a=new JSJaCPresence();a.setType("unavailable");this.con.send(a);this.con.disconnect();this.win.$("msgBox").innerHTML+='<div style="text-align:center; padding:3px;">(logged out)</div>';this.win.$("msgBox").scrollTop=this.win.$("msgBox").scrollHeight},onunload:function(){if(this.loggingOut){var a=ChatDaddy.clearCookies.bind(this);a()}else{if(typeof this.con!="undefined"&&this.con&&this.con.connected()){if(this.con._hold){(new JSJaCCookie("btype","binding",3600)).write()}else{(new JSJaCCookie("btype","polling",3600)).write()}if(this.con.suspend){this.con.suspend()}}}},showChatBar:function(){this.win.ChatBar.instance.showBar()},hideChatBar:function(){this.win.ChatBar.instance.hideBar()}});ChatDaddy.clearCookies=function(){if(typeof(this)=="ChatDaddy"){this.con.disconnect()
}else{try{chat.con.disconnect()}catch(a){}}new JSJaCCookie("activeChats","",-1).write();new JSJaCCookie("btype","",-1).write();new JSJaCCookie("frpres","",-1).write()};
