$(document).ready(function(){
	
	scrollToBottom('dialogs');
	document.getElementById('shoutbox').focus();
	$('#shoutbox').keyup(function(e){
		
		// enter tuşuna basılmışsa
		if(e.keyCode==13){
			var msg=$(this).val();
			if(msg=='') return false;
			addToDialog('user',msg);
			getReply(msg);
			$(this).val('');
			}
	})
	
	if(_botStt.isSuggestList)
	$("#shoutbox").autocomplete(_botStt.ajaxFile+'?cmm=suggestCells&', {
		minChars: 1,
		max: 10,
		autoFill: false,
		mustMatch: false,
		matchContains: false,
		selectFirst: false,
		scrollHeight: 220,
		formatItem: function(data, i, total) {
			var r=eval('('+data+')');
			return r.title;
		}
	}).result(function(data,selected){
		var r=eval('('+selected+')');
		addToDialog('user',r.title);
		getReply(r.id,'replyByCellId');
		$(this).val('');
	});
	
	if(_botStt.idleSecond)
		idleCounter=setTimeout('startIdle();',_botStt.idleSecond);
	
   
});

function addToDialog(who,msg){
	var str;
        var senderClass;
	if(who=='user'){
                senderClass='user';
		who=_botStt.userName;
		msg=htmlentities(msg);
	}
	
	if(who=='bot') {
                senderClass='bot';
                who=_botStt.botName;
        }
	
	str='<div class="i '+senderClass+' '+who+'"><b class="who">\
            <span class="nick">'+who+'</span>\
            <span>&gt;</span></b>';
	str+='<span class="msg">'+msg+'</span></div>';
	$('#dialogs').append(str);
	scrollToBottom('dialogs');

	bind();
}

function bind(){
	$(function() {
		// lightbox
		$('a').filter(function(){
			return $(this).attr('class').match(/lightbox.*/);
		}).lightBox();
	});
}

function scrollToBottom(f){
	var dlg=document.getElementById(f);
	dlg.scrollTop=dlg.scrollHeight;
}

function chatWSubmit(f){
	return false;
}

function getReply(msg,command){
	if(!command) command='reply';
	var ajax=new simpleAjax();
	
	ajax.send(_botStt.ajaxFile,
		'cmm='+command+'&q='+encodeURI(msg)+
		'&returnType='+_botStt.returnType,
		{'onSuccess':function(rsp,o){
			if(rsp!=''){
				
				if(_botStt.returnType=='xml'){
					rsp=o.responseXML;
					$(rsp).find('msg').each(function(){
						evalCellMsg($(this).text());
						addToDialog('bot',$(this).text());
					});
					
					// eğer jscript parametresi ile javascript kodu 
					// gönderilmişse, çalıştırılıyor
					$(rsp).find('jscript').each(function(){
						evalCellMsg($(this).text());
					});
					
				}
				else{ //json ise
					var rsp=eval('('+rsp+')');
					var reply=eval(rsp);
					evalCellMsg(reply.msg);
					
					// öneri listesinden seçim yapılan hücrelerin
					// soru içerikleri gösterilmeyecektir.
					// <b class="soru"><p>soru ifadei</p></b><br /><p>cevap</p> 
					if(command=='replyByCellId'){
						reply.msg=reply.msg.split('</b><br />');
						reply.msg=(reply.msg.length>1?reply.msg[1]:reply.msg[0]);
					}
					
					// alt satıra geçmek için p elementi kullanılıyor içeriklerde fakat
					// p elementleri için display:inline sitili verildiğinden
					// alt satıra geçmek mümkün olmuyordu. alt satıra geçildiğini 
					// yakalayıp <br /> elementi ekleniyor
					reply.msg=reply.msg.replace(/<\/p><p>/g,'</p><br class="p" /><p>');

					addToDialog('bot',reply.msg);
					
					// eğer jscript parametresi ile javascript kodu 
					// gönderilmişse, çalıştırılıyor
					if(reply.jscript)
						evalCellMsg(reply.jscript);
				}

				if(reply.user.isim){
                                        $('.user .who .nick').html(reply.user.isim);
                                }

				// eğer callBack varsa
				if(_botStt.replyCallBack)
					_botStt.replyCallBack(rsp);
				
			}
			
			clearTimeout(idleCounter);
			idleCounter=setTimeout('startIdle();',_botStt.idleSecond);
			
		}
		}
	);
}

function evalCellMsg(m){
	try{
		eval(m);
		return true;
	}catch(e){}
	return false;
}

function startIdle(){
	getReply('','replyForIdle');
}

