var settings={heartbeat:800,minHeartBeat:500,maxHeartBeat:3000,chatId:0,beating:false,clientName:'',adminName:'',clientId:0,doctitle:document.title,focused:true,unread:0};function heartBeat(){var replies=0;if(settings.beating&&settings.chatId!=0){$.ajax({url:"?cmd=chat&action=ping",type:"POST",data:({chat_id:settings.chatId,admin_name:settings.adminName}),cache:false,dataType:"json",success:function(data){parseReturn(data);if(!data.ok){settings.beating=false;return}if(settings.adminName==''&&data.admin!=''){settings.adminName=data.admin;bindEnter()}if(data.messages)$.each(data.messages,function(i,message){if(message){replies++;$('#chatwindow .messages').append('<div class="message Admin"><span>'+settings.adminName+'</span>'+nl2br(message.message)+'</div>');fixScroll()}});if(replies>0){if(!settings.focused){settings.unread+=replies;$('#sound').jPlayer('play');document.title='('+settings.unread+') '+settings.doctitle}pulseUp()}else{pulseDown()}setTimeout('heartBeat();',settings.heartbeat)}})}};function pulseUp(){if(settings.beating){settings.heartbeat=500}};function pulseDown(){if(settings.beating){if(settings.heartbeat<settings.maxHeartBeat){settings.heartbeat+=20}}};function fixScroll(){$("#chatwindow").scrollTop($("#chatwindow .messages")[0].scrollHeight)};function nl2br(str){var replacePattern1=/(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;var replacedText=str.replace(replacePattern1,'<a href="$1" target="_blank">$1</a>');var replacePattern2=/(^|[^\/])(www\.[\S]+(\b|$))/gim;var replacedText=replacedText.replace(replacePattern2,'$1<a href="http://$2" target="_blank">$2</a>');var replacePattern3=/(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})/gim;var replacedText=replacedText.replace(replacePattern3,'<a href="mailto:$1">$1</a>');return(replacedText+'').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g,'$1<br/>$2')};function bindEnter(){$('#mbox').keydown(function(event){if(event.keyCode==13&&event.shiftKey==0&&settings.beating){var mess;mess=$('#mbox').val();mess=mess.replace(/^\s+|\s+$/g,"").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\"/g,"&quot;");$('#mbox').val('').focus();if(mess!=''){$.ajax({url:"?cmd=chat&action=post",type:"POST",data:({chat_id:settings.chatId,message:mess}),cache:false,dataType:"json",success:function(data){parseReturn(data);if(data.ok==1){$('#chatwindow .messages').append('<div class="message Client"><span>You</span>'+nl2br(mess)+'</div>');fixScroll();pulseUp()}else{settings.beating=false}}})}return false}})};function parseReturn(data){for(i=0;i<data.ERROR.length;i++){$('#errors').append('<span >'+data.ERROR[i]+'</span>')}for(i=0;i<data.INFO.length;i++){$('#chatwindow .messages').append('<div class="message Status">'+data.INFO[i]+'</div>')}if($('#errors').find('span').length>0){$('#errors').slideDown();reBind()}if($('#infos').find('span').length>0){$('#infos').slideDown();reBind()}};function getClientName(){var nc=$('#nonclient');nc.width(nc.parent().width()).height(nc.parent().height()).show()};function validateClientName(){if($('#nonclient_name').val()!=''){settings.clientName=$('#nonclient_name').val();$('#nonclient').hide();initChat();return false}else{$('#nonclient_name').addClass('error');return false}};function initChat(){if($('#chat').length<1){return}initSound();if(settings.clientId==0&&$('#client_id').val()!=''){settings.clientId=$('#client_id').val();settings.clientName=$('#client_name').val()}else if(settings.clientName==''&&!$.cookie('hb_chat_id')){getClientName();return}if(settings.clientId==0&&$.cookie('hb_chat_id')){var cid=$.cookie('hb_chat_id').split(/\$/);settings.chatId=cid[0];settings.clientName=cid[1]}$([window,document]).blur(function(){settings.focused=false}).focus(function(){settings.focused=true;settings.unread=0;document.title=settings.doctitle});$.ajax({url:"?cmd=chat&action=firstping",type:"POST",data:({client_name:settings.clientName,chat_id:settings.chatId}),cache:false,dataType:"json",success:function(data){parseReturn(data);if(data.chat){settings.chatId=data.chat.id;settings.adminName=data.chat.admin_name;bindEnter();settings.beating=true;if(data.chat.messages)$.each(data.chat.messages,function(i,message){if(message&&message.submitter=='Admin'){$('#chatwindow .messages').append('<div class="message Admin"><span>'+settings.adminName+'</span>'+nl2br(message.message)+'</div>')}else if(message&&message.submitter=='Client'){$('#chatwindow .messages').append('<div class="message Client"><span>You</span>'+nl2br(message.message)+'</div>')}fixScroll()});setTimeout('heartBeat();',settings.heartbeat)}else if(data.chat_id){settings.chatId=data.chat_id;settings.beating=true;setTimeout('heartBeat();',settings.heartbeat)}if(settings.clientId==0&&settings.chatId){$.cookie('hb_chat_id',settings.chatId+'$'+settings.clientName,{expires:20})}}})};appendLoader('initChat');jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options.expires=-1}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*60*1000))}else{date=options.expires}expires='; expires='+date.toUTCString()}var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('')}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break}}}return cookieValue}};
