var chat_fbid=0;
var chat_name='';
var chat_img='chat/a.png';
var chat_mail='';
var chat_admin=false;
var chat_focus=false;
var chat_avisado=false;

FB.Event.subscribe('auth.login',
    function(response) {
		FB.api('/me', function(response) {
			chat_fbid=response.id;
			chat_name=response.first_name;
			chat_img='http://graph.facebook.com/'+chat_fbid+'/picture';
			chat_mail=response.email;
			
			chat_inicio();
		});
	}
);

function chat_del(i) {
	if(!chat_admin) return;
	$.ajax({
		url:'chat/eliminar.php',
		data:'i='+i,
		dataType:'text',
		type:'GET',
		success:function(data) {
			if(parseInt(data)>0) {
				$('#chat'+data).fadeTo(300,0,function() { $(this).remove(); });
				chat_scroll();
			}
		}
	});
}

function chat_bloq(i) {
	if(!chat_admin) return;
	$.ajax({
		url:'chat/bloquear.php',
		data:'i='+i,
		dataType:'text',
		type:'GET',
		success:function(data) {
			alert('El autor del mensaje y su ip han sido bloqueados.');
		}
	});
}

function chat_salir() {
	if(chat_fbid) {
		FB.logout(function() { });
		chat_fbid=0;
		chat_name='';
		chat_img='chat/a.png';
		chat_mail='';
		chat_admin=false;
		chat_focus=false;
	}
	
	$.ajax({
		url:'chat/salir.php',
		data:'',
		dataType:'text',
		type:'GET'
	});
	
	$('#chat_chat').css('display','none');
	$('#chat_inicio').fadeTo(0,0).css('display','inline').fadeTo(300,1,function() { FB.XFBML.parse(); });
	$('.chat_mctrl').css('display','none');
	chat_scroll();
}

function chat_inicio() {
	if(!chat_name) chat_name=$('#chat_nombre').val();
	if(!chat_name) {
		alert('Ingresá tu nombre o hacé click en "Entrar con Facebook" para chatear.');
		return;
	}
	
	$.ajax({
		url:'chat/inicio.php',
		data:'n='+escape(chat_name)+'&fb='+chat_fbid+'&m='+escape(chat_mail),
		dataType:'text',
		type:'GET',
		error:function() {
			alert('Ocurrió un error y no se ha podido abrir tu sesión de chat. Volvé a intentar en un momento.');
		},
		success:function(data) {
			if(data=='bl') {
				if(!chat_avisado) {
					$('#chat_msgs').html('<p>Lo sentimos, no estás autorizado a usar el chat.</p>');
					chat_avisado=true;
				}
			} else {
				d=data.split('|');
				chat_admin=(d[0]=='1')?true:false;
				if(chat_admin) {
					$('.chat_mctrl').css('display','inline');
				} else {
					$('.chat_mctrl').css('display','none');
				}
				chat_scroll();
				chat_name=d[1];
				
				$('#chat_cnombre').val(chat_name);
			
				$('#chat_inicio').css('display','none');
				$('#chat_chat').fadeTo(0,0).css('display','inline').fadeTo(300,1);
				
				$('#chat_mensaje').focus();
				chat_focus=true;
				
				if(chat_fbid) {
					$('.chat_cn').attr('display','none');
					$('#chat textarea').css('height',90);
				} else {
					$('.chat_cn').attr('display','inline');
					$('#chat textarea').css('height',45);
				}
			}
		}
	});
}

$(document).keypress(function(e) {
	if(!chat_focus) return;
	if(e.which == 13) {
		mensaje('',$('#chat_mensaje').val(),chat_name,chat_fbid,'ult');
		$.ajax({
			url:'chat/mensaje.php',
			data:'tat='+escape($('#chat_mensaje').val()),
			dataType:'text',
			type:'POST',
			error:function() {
				alert('Ocurrió un error y no se ha podido enviar tu mensaje. Volvé a intentar en un momento.');
			},
			success:function() {
				chat_mensajes(0);
				$('#chat_mensaje').val('Ingresa tu mensaje...').focus();
			}
		});
		return false;
	} else {
		if($('#chat_mensaje').val()=='Ingresa tu mensaje...') $('#chat_mensaje').val('');
	}
});

function chat_mensajes(pri) {
	$.ajax({
		url:'chat/mensajes.php',
		data:'pri='+pri,
		dataType:'xml',
		type:'GET',
		error:function() {
			chat_mensajes(0);
		},
		success:function(data) {
			$('#chat_msgs').removeClass('prelo');
			$('.chat_ult').css('display','none');
			if($(data).find('bl').length) {
				if(!chat_avisado) {
					$('#chat_msgs').html('<p>Lo sentimos, no estás autorizado a usar el chat.</p>');
					chat_avisado=true;
				}
			} else {
				d=$(data).find('mensaje');
				//if(!d.length) $('#chat_msgs').html('<p>No hay mensajes nuevos que mostrar en este momento.</p>');
				for(i=0;i<d.length;i++) {
					a=d[i];
					nom=$(a).find('nombre:eq(0)').text();
					txt=$(a).find('texto:eq(0)').text();
					mensaje($(a).attr('id'),txt,nom,parseInt($(a).attr('fbid')),'');
				}
				if(i>0) chat_scroll();
				
				s=$(data).find('stats');
				$('#chat_stattxt span').html($(s).attr('online')+' personas en l&iacute;nea');
				html='<div>'+$(s).attr('chat')+' est&aacute;n chateando:</div>';
				s=$(s).find('face');
				for(i=0;i<s.length;i++) {
					a=s[i];
					fb=$(a).attr('fbid');
					nom=$(a).text();
					html+='<div>';
					if(parseInt(fb)) {
						html+='<a href="http://facebook.com/profile.php?id='+fb+'" target="_blank"><img src="http://graph.facebook.com/'+fb+'/picture" width="20" height="20" border="0" align="absmiddle" /> '+nom+'</a>';
					} else {
						html+='<img src="chat/a.png" width="20" height="20" border="0" align="absmiddle" /> '+nom;
					}
					html+='</div>';
				}
				$('#chat_statfaces').html(html);
	
				setTimeout('chat_mensajes(0);',1000);
			}
		}
	});
}

function chat_faces() {
	t=$('#chat_statver').text();
	if(t=='Ver todos') {
		$('#chat_statver').text('Ocultar');
	} else {
		$('#chat_statver').text('Ver todos');
	}
	
	$('#chat_statfaces').slideToggle(300);
}

function mensaje(mid,m,n,i,cl) {
	html='<div class="chat_'+((cl=='ult')?cl:'msg')+'" id="chat'+mid+'">';
	if(i) {
		html+='<a href="http://facebook.com/profile.php?id='+i+'" target="_blank"><img src="http://graph.facebook.com/'+i+'/picture" width="40" height="40" border="0" /></a><span><a href="http://facebook.com/profile.php?id='+i+'" target="_blank">'+n+'</a></span>';
	} else {
		html+='<img src="chat/a.png" width="40" height="40" border="0" /><span>'+n+'</span>';
	}
	
	html+=' '+m+' <span class="chat_mctrl"';
	if(!chat_admin) html+=' style="display:none;"';
	html+='><a href="javascript:chat_del('+mid+');">eliminar</a><a href="javascript:chat_bloq('+mid+');">bloquear</a></span></div>';
	
	cc=$('#chat_msgsc').append(html);
	//$('#chat'+mid).fadeTo(0,0).fadeTo(300,1);
}

function chat_scroll() {
	$(document).trigger("mouseup");
	
	cc=$('#chat_msgs');
	cc2=$('#chat_msgsc');
	cch=parseInt($(cc).innerHeight());
	ch=parseInt($(cc2).outerHeight());
	
	if(ch>cch) {
		$(cc2).animate({top:-(ch-cch)},300,'swing');
		
		sm=parseInt($('#chat_scroll').parent().innerHeight())-parseInt($('#chat_scroll').outerHeight());
		$('#chat_scroll').animate({top:sm},300,'swing');		
	} else {
		$(cc2).animate({top:0},300,'swing');
		$('#chat_scroll').animate({top:0},300,'swing');
	}
}

$(function() {
	$('#chat_scroll').draggable({ containment:'parent',drag:function() {
		cc=$('#chat_msgs');
		cc2=$('#chat_msgsc');
		m0=parseInt($(cc2).outerHeight())-parseInt($(cc).innerHeight());
		if(m0<=0) return false;
		
		y=$(this).position().top;
		m=parseInt($(this).parent().innerHeight())-parseInt($(this).outerHeight());
		
		p=Math.round((y*100)/m);
		if(p>100) p=100;
		if(p<0) p=0;
		
		ny=Math.round((p*m0)/100);
		if(ny<1) ny=0;
		$(cc2).stop().animate({top:-ny},300,'swing');
	}});
	
	$('#chat_cnombreb').click(function() {
		$(this).attr('disabled','disabled');
		$.ajax({
			url:'chat/nombre.php',
			data:'n='+escape($('#chat_cnombre').val()),
			dataType:'text',
			type:'GET',
			error:function() {
				$('#chat_cnombreb').attr('disabled','');
			},
			success:function(data) {
				chat_name=data;
				$('#chat_cnombreb').attr('disabled','');
			}
		});
	});
	
	$('#chat_mensaje').click(function() {
		if($(this).val()=='Ingresa tu mensaje...') $(this).val('');
	});
	
	$('#chat_statfaces').slideUp(0);
	
	if($.browser.msie) setInterval("$('#chat_msgsc').css('left',0);",10);
	chat_mensajes(1);
	
	FB.XFBML.parse();
});
