//version 1.00

function chatTempl(tp,id,name,acl,timestamp,pre,con){
    switch(tp){
	case 'scr':
	return "<div id='chat_scr"+id+"' class='chat-scr'></div>";
	break;
	case 'frm':
	return "<div id='chat_frm"+id+"' class='chat-frm'><textarea id='chat_txt"+id+"'></textarea></div>";
	break;
	case 'a':
	return "<div class='chat-float' id='chat_holder"+id+"'><div class='chat-holder'><div class='chat-top' id='chat_top"+id+"'>"
	  +"<span class='chat-username chat_hide"+id+"'>"+name+"</span><div style='float:right;'>"
	  +" <a href='#' id='chat_clear"+id+"'>"+chatImg['clear']+"</a>"
	  +" <a href='#' class='chat_hide"+id+"'>"+chatImg['hide']+"</a>"
          +" <a href='#' id='chat_close"+id+"'>"+chatImg['close']+"</a>"
	  +"</div>"+chatTempl('scr',id)+chatTempl('frm',id)+"</div></div>";
	break;
	case 'th':
	return "<div class='chat-text"+acl+"' id='chat_msg"+chatcnt+"'><div class='chat-timestamp'>"+timestamp+"</div>"+pre+con+"</div>";
	break;
	case 'tm':
	return "<div class='chat-info' id='chat_info"+chatcnt+"'><div class='chat-timestamp'>"+timestamp+"</div>"+pre+con+"</div>";
	break;
    }
}

function chatsounds(pol){
    if($('#chat_player').length>0){
        $('#chat_player').jPlayer({
	    ready: function () {
		chatrtp=1;
		$(this).setFile(chatbeepsound);
		if(pol==1) $(this).play();
	    }
	});
    }
}
function chatbeep(){
    if(chatrtp){
	$('#chat_player').play();
    }
    else chatsounds(1);
				 
}
function chatgetUser(id){
    waitl='';
    $.get('getelement.php?elm=chat&type=getuser&id='+id, function(data){
	ret=data;
	waitl='1';
    });
}
function chatsetinterval(rst){
    if(rst){
	chatinterval=chatbasei;
	chatim=1;
    }
    else{
	chatinterval=chatim*chatbasei;
	if(chatim<20){
	    chatim++;
	    setTimeout('chatsetinterval()',20000);
	}
    }
}
	   
function chatresume(){
    var co=$.cookie('chat_tabs');
    if(co){
	var ow=co.split('|');
	jQuery.each(ow, function(i, val){
	    var st=val.split(',');
	    var ih=null;
	    if(st[1]==1) ih=1;
	    chatstart(st[0],ih);
	        $.get('getelement.php?elm=chat&type=resume&user='+st[0], function(data){
		    if(data.length>0){
			var ca=data.split(chatsep);
	                var nm=ca.length/5;
		        var os=0;
		        var id=st[0];
			var acl='';
		        for(var n=0;n<nm;n++){
			    os=n*5;
			    var con=ca[(os+2)];
			    if(ca[os+1]!=chatmeid) var acl=' chat-own';
			    else var acl='';
			    if(id==chatmeid){
				var id=ca[os+1];
				var pre=chatme+': ';
		             }
  		             else var pre=ca[os+4]+': ';
		         var timestamp=ca[(os+3)];
		         $('#chat_scr'+id).append(chatTempl('th','','',acl,timestamp,pre,con));
			 if($('#chat_scr'+id).length>0) var sh=$('#chat_scr'+id)[0].scrollHeight;
			 else var sh=0;
		         $('#chat_scr'+id).scrollTop(sh);
		         chatcnt++;
		    }
	        }
	    });
        });
    }
}

function chatonline(){
    $.get('getelement.php?elm=chat&type=online', function(data){
	$('#chat_userholder').html(data);
	setTimeout('chatonline()',15000);
    });
}

function chatupdate(){
    $.get('getelement.php?elm=chat&type=get', function(data){
	if(data.length>0){
	    var ca=data.split(chatsep);
	    if(ca.length>1){
	    var nm=ca.length/4;
	    var os=0;
	    for(var n=0;n<nm;n++){
		os=n*4;
		var id=ca[os].replace('\n','');
		var con=ca[(os+1)];
		var pre=ca[(os+3)]+': ';
		var timestamp=ca[(os+2)];
		if(id==chatmeid) var acl=' chat-own';
		else var acl='';
		if($('#chat_scr'+id).length<=0){
		    chatstart(id,0,ca[(os+3)]);
		}
		$('#chat_scr'+id).append(chatTempl('th','','',acl,timestamp,pre,con));
		if($('#chat_scr'+id).is(':hidden')){
		    $('#chat_top'+id).addClass('chat-top-hl');
		}
		else $('#chat_scr'+id).scrollTop($('#chat_scr'+id)[0].scrollHeight);
		chatcnt++;
	    }
	    chatbeep();
	    chatsetinterval(1);
	    }
	    
	}
	setTimeout('chatupdate()',chatinterval);
    });
}

function chattabs(id,del){
    var ta=new Array();
    var n=0;
    var add=1;
    jQuery.each(chattabsa, function(i, val){
	var t=val.split(',');
	if(t[0]!=id||!del){
	    var ih=0;
	    if($('#chat_scr'+t[0]).is(':hidden')){
		ih=1;
	    }
            ta[n]=t[0]+','+ih;
            n++;
        }
        if(id==t[0]) add=0;
    });
    if(!del&&add){
	var ih=0;
	if($('#chat_scr'+id).is(':hidden')){
	    ih=1;
	}
	ta[ta.length]=id+','+ih;
    }
    chattabsa=ta;
    if(chattabsa.length<=0) $.cookie('chat_tabs',null);
    else $.cookie('chat_tabs',chattabsa.join('|'));
}

function chatstartc(id,ish,un){
    var name=un;
    if($('#chat_holder'+id).length<=0){
	$('body').append(chatTempl('a',id,name));
	if(ish){
	    $('#chat_frm'+id).hide();
            $('#chat_scr'+id).hide();
	}
        chattabs(id,0);
        $('#chat_close'+id).click(function(){
	    $.get('getelement.php?elm=chat&user='+id+'&type=clear&user='+id, function(data){
		$('#chat_holder'+id).remove();
		chattabs(id,1);
	    });
	});
        $('#chat_clear'+id).click(function(){
	    $.get('getelement.php?elm=chat&user='+id+'&type=clear&user='+id, function(data){
		$('#chat_scr'+id).html('');
//		chattabs(id,1);
	    });
	});
      $('.chat_hide'+id).click(function(){
	    $('#chat_frm'+id).toggle();
	    $('#chat_scr'+id).toggle();
	    $('#chat_top'+id).removeClass('chat-top-hl');
	    $('#chat_scr'+id).scrollTop($('#chat_scr'+id)[0].scrollHeight);
	    chattabs(id,0);
	});
    $('#chat_txt'+id).keyup(function(e) {
	if(e.keyCode == 13) {
	    var con=$('#chat_txt'+id).val();
	    if(con.length>1){
		$.get('getelement.php?elm=chat&user='+id+'&msg='+encodeURIComponent(con), function(data){
		    var dh=data.split(chatsep);
		    con=dh[2];
//		    con=htmlentities(dh[2]);
  		    var timestamp=dh[1];
		    if(dh[0]==0){
			var pre='Unable to send message: ';
			$('#chat_scr'+id).append(chatTempl('tm','','','',timestamp,pre,con));
			chatcnt++;
		    }
		    else{
			if(dh[0]==1){
			    var pre=name+' is ofline. messsage will be sent next time he/she is online. message: ';
			    $('#chat_scr'+id).append(chatTempl('tm','','','',timestamp,pre,con));
			    chatcnt++;
			    if($('#chat_user'+id).length>0) $('#chat_user'+id).remove();
			}
			else{
			   var pre=chatme+': ';
			   var acl=' chat-own';
			   $('#chat_scr'+id).append(chatTempl('th','','',acl,timestamp,pre,con));
		           chatcnt++;
		        }
		    }
		    $('#chat_scr'+id).scrollTop($('#chat_scr'+id)[0].scrollHeight);
		});
	    }
	    $('#chat_txt'+id).val('');
	 }
   });
    }

}

function chatstart(id,ish,un){
    if(id){
	if(un!=undefined){
	    chatstartc(id,ish,un);
	}
	else{
	    $.get('getelement.php?elm=chat&user='+id+'&type=getuser', function(data){
		chatstartc(id,ish,data);
	    });
	}
    }
    $('#chat_txt'+id).focus();
}

