$(document).ready(function(){
	
	//Obtenemos el id de la nota y el nivel de despliegue
	var idNota  = window.location.href.split('=')[1].substring(0,4);
	var level   = window.location.href.split('?')[1];
		level   = level.split('&')[2];
	var seccion = window.location.href.split('/')[3];
	
	var debug 		= window.location.href.split('&');
	var debugLong 	= debug.length-1;
	var debugStatus	= (debug[debugLong] == 'debug' )
					?	'si'
					:	'no';
	
	switch (seccion) { 
		case 'varios':		
			var colorTres = '#CDC2D6';
			var colorDos  = '#E7DCEF';
			break 
		case 'empleos':		
			var colorTres = '#FCD59A'; 
			var colorDos  = '#FEF3E2'; 
			break 
		case 'vehiculos':	
			var colorTres = '#FC9A9A';
			var colorDos  = '#FEDEDE';
			break 
		case 'inmuebles':	
			var colorTres = '#9BCCE9';
			var colorDos  = '#E0EFF8';
			break 
		default: 
	}
	

	//Agregamos la clase que define los colores según la sección
	$(	'#titulo-comentario, #form-comentario, '		+
		'#form-comentario label, #comentario-valida, ' 	+
		'#autor-valida, #autor, #comentario, ' 			+
		'#agrega-comentario, #notificacion, #email').addClass(seccion);
	$('#autor-valida, #comentario-valida, #email-valida').addClass('oculto');
	
	
	//Función que pone en blanco todos los comentarios
	function comentariosEnBlanco (){
		$('#tabla_listado tr').css('background','white')
	}
	
	
	//Función que agrega el comentario ya definido como padre o hijo
	function agregaComentario(tipoComentario,idComPadre){
		var autor			 = $('#autor').val();
		var comentario		 = $('#comentario').val();
		var email		 	 = $('#email').val();
		var error_autor		 = 	'Debes ingresar un nombre';
		var error_comentario = 	'Debes ingresar un comentario';
		var error_email 	 = 	'Debes ingresar un e-mail';
		var error_email_2	 = 	'Debe tener este formato: '+
								'<span class="'+seccion+'-2">usuario</span>'+
								'<span class="'+seccion+'">@</span>'+
								'<span class="'+seccion+'-2">dominio</span>'+
								'<span class="'+seccion+'">.</span>'+
								'<span class="'+seccion+'-2">tipodedominio</span>';
		var formato_email_valido = /[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/;
		
		$('#autor-valida, #email-valida, #comentario-valida, #notificacion').fadeOut('slow');
		
		if(tipoComentario == 'comentario-padre'){
			$('#notificacion').text('');
			comentariosEnBlanco ();
		}
		if(autor == ''){
			$('#autor-valida').text(error_autor).fadeIn();
			$('#autor').focus();
		}else{
			$('#autor-valida').fadeOut();
			if(email == ''){
				$('#email-valida').fadeOut('slow', function(){
					$('#email-valida').text(error_email).fadeIn();
				});
				$('#email').focus();
			}else{
				if((formato_email_valido.test(email))  == false){
					$('#email-valida').fadeOut('slow', function(){
						$('#email-valida').html(error_email_2).fadeIn();
					});
					$('#email').focus();
				}else{
					$('#email-valida').fadeOut();
					if(comentario == ''){
						$('#comentario-valida').text(error_comentario).fadeIn();
						$('#comentario').focus();
					}else{
						$('#comentario-valida').text('').fadeOut();
						$.ajax({
							url:'../genericos/notas_comentarios_ajax.php',
							type:'POST',
							dataType:'html',
							data:{	autor:autor,
									comentario:comentario,
									email:email,
									id_nota:idNota,
									tipo_comentario:tipoComentario,
									id_com_padre:idComPadre,
									action:'nuevo_comentario'
									},
							success:function(response) {
										$('#notificacion').hide('slow').text(response).show('slow');
										$('#autor, #comentario, #email').val('');
										$('#tabla_listado tr').css('background','White');
										if(tipoComentario == 'comentario-hijo'){
											$('#agrega-comentario').unbind('click').bind('click', function() {
												agregaComentario('comentario-padre',null);
											});
										}
				            }
						});
					}
				}
			}
		}
	}
	
	
	//Función que determina si será un comentario padre o comentario hijo
	function cambiaBotonAgrega(tipoComentario,idComPadre){
		if(tipoComentario == 'comentario-hijo'){
			$('#agrega-comentario').unbind('click').bind('click',function(){
				agregaComentario(tipoComentario,idComPadre);
			});
		}else{
			agregaComentario(tipoComentario,idComPadre);
		}
	}
	
	//Función que lista los comentarios
	function listaComentarios (){ 
		$.ajax({
			url:'../genericos/notas_comentarios_ajax.php',
			type:'POST',
			dataType:'html',
			data:{	action	: 'listar_comentarios',
					level 	: level,
					id_nota	: idNota,
					seccion	: seccion,
					debug_status : debugStatus
				},
			success:function(response) {
				$('#listado-coment-nota').html(response);
				$('#tabla_listado td').addClass(seccion);
				$('#tabla_listado th').addClass(seccion);
				if(level == 'level=admor' || level == 'level=op-onl'){
					$('td.oculto, th.oculto').removeClass('oculto');
					$('#instrucciones-notas').removeClass('oculto');
					$('.segundo_comentario, .boton_segundo_comentario, .lista-respuestas').addClass('oculto');
					$('#tabla_listado tr.oculto').remove();
					$('#notificacion').remove();
				}else{
					$('tr.segundo_comentario').addClass('oculto');
					$('#comentarios-nota').css('margin-left','5px');
				}
				$('.boton_segundo_comentario').bind('click',function(){
					var idComentario  = $(this).parents('tr').children('td:first').text();
					var autorComentario = $(this).parents('tr').children('td:eq(3)').children('span.label-autor').text();
					var segundoComent 	= 'Ingresa tu respuesta al comentario de: ';
					$('#tabla_listado tr').css('background','White');
					$('#autor').focus();
					$('#notificacion').hide('slow').text(segundoComent+autorComentario).show('slow');
					$(this).parents('tr').css('background',colorTres);
					cambiaBotonAgrega('comentario-hijo',idComentario);
				});
			}
		});
	}	

	
	listaComentarios();
	
	
	//Agrega comentario
	$('#agrega-comentario').click(function() {
		cambiaBotonAgrega('comentario-padre', null);
	});
	
	//Función que verifica si el comentario hijo tiene publicado su comentario padre
	function verificaComentarioPadre(botonCambiaStatus, idComentarioPa, idComentario, status, nuevoTxt, nuevaImg){
		var comentariosTotales	= $(botonCambiaStatus).parents('tr').siblings('tr').length-1;
		var arrayComentariosTotales	= $(botonCambiaStatus).parents('tr').siblings('tr');
		
		for(var i=1; i <= comentariosTotales ;i++){
			var idComent 	= $(arrayComentariosTotales[i]).children('td:first').text();
			var tipoComent 	= $(arrayComentariosTotales[i]).children('td:eq(1)').text();
			var statusComentarioPadre = $(arrayComentariosTotales[i]).children('td:eq(6)').find('img:first').attr('src').split('/')[3];
			
			if(tipoComent == 'padre' && idComentarioPa == idComent){
				if(statusComentarioPadre == 'publicado.PNG'){
					cambiaStatus(botonCambiaStatus, status, idComentario);
				}else{
					var alerta	=	'No puede aprobar este comentario.';
					var msg		=	'El comentario con id: '+idComentario+' no se puede publicar porque su padre no esta publicado.';
					$.alerts.okButton 		= 'OK';
					$.alerts.dialogClass 	= seccion;
					$.alerts.overlayOpacity = 0.4;
					jAlert(msg, alerta);
					comentariosEnBlanco();
					$(arrayComentariosTotales[i]).css('background',colorTres);
					$(botonCambiaStatus).parents('tr').css('background',colorDos);
				}
			}
		}
	}
	
	
	//Función que cambia el status de un comentario después de revisar las dependencias padre-hijo
	function cambiaStatus(botonCambiaStatus, status, idComentario){
		var nuevoTxt	 		= (status == false)	? 'Despublicar'					: 'Publicar';		 
		var nuevaImg	 		= (status == false)	? '../img/notas/publicado.PNG'	: '../img/notas/no-publicado.PNG';
		comentariosEnBlanco();
		$(botonCambiaStatus).parents('tr').css('background',colorTres);
		$.ajax({
			url:'../genericos/notas_comentarios_ajax.php',
			type:'POST',
			dataType:'html',
			data:{	status:status,
					id_comentario:idComentario,
					action:'actualiza_aprobacion'
					},
			success:function(response) {
						var alerta	=	'Notificación.';
						var msg		=	response;
						$.alerts.okButton 		= 'OK';
						$.alerts.dialogClass 	= seccion;
						$.alerts.overlayOpacity = 0.4;
						jAlert(msg, alerta);
						$(botonCambiaStatus).val(nuevoTxt);
						$(botonCambiaStatus).parents('tr').children('td.img-status').find('img:first').attr('src',nuevaImg);
				  }
		});
		/**/
	}
	
	
	//Función que verifica si un comentario padre tiene comentarios hijos publicados antes de cambiar su publicación
	function verificaComentariosHijosPublicados(botonCambiaStatus, status, idComentario){
		var comentariosTotales		= $(botonCambiaStatus).parents('tr').siblings('tr').length-1;
		var arrayComentariosTotales	= $(botonCambiaStatus).parents('tr').siblings('tr');
		var numHijos				= 0;
		var	arrayComentariosHijos = new Array();
		for(var i=1; i <= comentariosTotales ;i++){
			var idComentarioPa 			= $(arrayComentariosTotales[i]).children('td:eq(2)').text();
			var tipoComent 				= $(arrayComentariosTotales[i]).children('td:eq(1)').text();
			var statusComentarioPadre	= $(arrayComentariosTotales[i]).children('td.img-status').find('img:first').attr('src');
			
			//Evaluamos si los comentarios, son hijos, si pertenecen al mismo id padre y si se estan publicando
			if(tipoComent == 'hijo' && idComentarioPa == idComentario && statusComentarioPadre == '../img/notas/publicado.PNG'){
				arrayComentariosHijos.push($(arrayComentariosTotales[i]));
				numHijos	= 	++numHijos;
			}
		}
		
		//Si no tiene hijos cambia en automatico su status
		if(numHijos == 0){
			cambiaStatus(botonCambiaStatus, status, idComentario);
		}else{
			var alerta	=	'No puede despublicar este comentario.';
			var msg		=	'El comentario con id: '+idComentario+' no se puede despublicar porque tiene '+numHijos+' hijos publicandose.';
			$.alerts.okButton 		= 'OK';
			$.alerts.dialogClass 	= seccion;
			$.alerts.overlayOpacity = 0.4;
			jAlert(msg, alerta);
			comentariosEnBlanco();
			$(botonCambiaStatus).parents('tr').css('background',colorTres);
			
			//Cambia el color de sus hijos que se encuentran publicandose
			for(var i=0; i <= arrayComentariosHijos.length-1 ;i++){
				$(arrayComentariosHijos[i]).css('background',colorDos);
				
			}
		}
	}
	
	
	//Cambia la aprobación de los comentarios en la administración
	$('.guarda_status').live('click', function() {
		var botonCambiaStatus	= $(this);
		//var status 		 		= $(botonCambiaStatus).attr('value');
		var status 		 		= $(botonCambiaStatus).parents('tr').children('td.img-status').find('img:first').attr('src');
			status 		 		= (status == '../img/notas/publicado.PNG'	)	? true					: false;
		var idComentario 		= $(botonCambiaStatus).parents('tr').children('td:first').text();
		var idComentarioPa 		= $(botonCambiaStatus).parents('tr').children('td:eq(2)').text();
		var tipoComentario		= $(botonCambiaStatus).parents('tr').children('td:eq(1)').text();
		
		switch (tipoComentario) { 
		case 'hijo':		
			if(status == false){
				verificaComentarioPadre( botonCambiaStatus, idComentarioPa, idComentario, status);
			}else{
				cambiaStatus(botonCambiaStatus, status, idComentario);
			}
			break 
		case 'padre':		
			if(status == true){
				verificaComentariosHijosPublicados(botonCambiaStatus, status, idComentario);
			}else{
				cambiaStatus(botonCambiaStatus, status, idComentario);
			}
			break 
		default: 
		}
	});
	
	
	//Función que elimina un comentario después de haber verificado que no tiene hijos
	function eliminaComentario (idComentario, botonEliminaComentario){
		var tituloEliminar  = 'Eliminar comentario';
		var confirmEliminar = '¿Deseas eliminar el comentario con id: '+idComentario+' ?';
		
		$.alerts.okButton 		= 'Si, deseo eliminarlo.';
		$.alerts.dialogClass 	= seccion;
		$.alerts.overlayOpacity = 0.6;
		
		jConfirm(confirmEliminar, tituloEliminar, function(e) {
			if(e){
				$.ajax({
					url:'../genericos/notas_comentarios_ajax.php',
					type:'POST',
					dataType:'html',
					data:{	action:'elimina_comentario',
							id_comentario:idComentario
					},
					success:function(response) {
						var alerta	=	'Notificación.';
						var msg		=	response;
						$.alerts.okButton 		= 'OK';
						$.alerts.dialogClass 	= seccion;
						$.alerts.overlayOpacity = 0.4;
						jAlert(msg, alerta, function(){
							$(botonEliminaComentario).parents('tr').find('td').slideUp('slow', function() {
								$(botonEliminaComentario).parents('tr').remove();
							});
						});
						
					}
				});
			}else{
				$(botonEliminaComentario).parents('tr').css('background','white');
			}
		});
		
	}
	
	
	//Función que verifica si un comentario padre tiene comentarios hijo antes de ser eliminado
	function verificaComentariosHijo (idComentarioPadre,botonEliminaComentario){
		var comentariosTotales	= $(botonEliminaComentario).parents('tr').siblings('tr').length-1;
		var longitudComentariosHijos	= $(botonEliminaComentario).parents('tr').siblings('tr:contains('+idComentarioPadre+')').length;
		
		
		if(longitudComentariosHijos != 0){
			var alerta	=	'¡Cuidado!';
			var msg		=	'El comentario con id: '+idComentarioPadre+' no se puede eliminar porque tiene '+longitudComentariosHijos+' comentarios hijos.';
			$.alerts.okButton 		= 'OK';
			$.alerts.dialogClass 	= seccion;
			$.alerts.overlayOpacity = 0.4;
			jAlert(msg, alerta);
			$(botonEliminaComentario).parents('tr').siblings('tr:contains('+idComentarioPadre+')').css('background',colorDos);
		}else{
			eliminaComentario (idComentarioPadre, botonEliminaComentario);
		}
		
		
	}
	
	

	//Función que lista los comentarios hijos
	function listaRespuestas (botonComentarioPadre){
		var idComentario = $(botonComentarioPadre).parents('tr').children('td:first').text();
		var no_hermanos	= $(botonComentarioPadre).parents('tr').siblings('tr').length-1;
		var a_hermanos 	= $(botonComentarioPadre).parents('tr').siblings('tr');
		for(var i=1; i <= no_hermanos ;i++){
			var clasePadre = $(a_hermanos[i]).hasClass(idComentario);
			if(clasePadre){
				$(a_hermanos[i]).removeClass('oculto');
				$(a_hermanos[i]).css('background',colorDos);
				$(botonComentarioPadre).siblings('.oculta-respuestas:first').removeClass('oculto');
				$(botonComentarioPadre).parents('tr').css('background',colorTres);
				$(botonComentarioPadre).addClass('oculto');
			}
		}
	}
	
	
	//Función que oculta los comentarios hijos
	function ocultaRespuestas (botonComentarioPadre){
		var idComentario = $(botonComentarioPadre).parents('tr').children('td:first').text();
		var no_hermanos	= $(botonComentarioPadre).parents('tr').siblings('tr').length-1;
		var a_hermanos 	= $(botonComentarioPadre).parents('tr').siblings('tr');
		for(var i=1; i <= no_hermanos ;i++){
			var clasePadre = $(a_hermanos[i]).hasClass(idComentario);
			if(clasePadre){
				$(a_hermanos[i]).addClass('oculto');
				$(botonComentarioPadre).siblings('.lista-respuestas:first').removeClass('oculto');
				$(botonComentarioPadre).addClass('oculto');
			}
		}
	}
	
	
	//Función que regresa a un comentario padre
	function regresaComentarioPadre(){
		$('#agrega-comentario').unbind('click').bind('click',function(){
			agregaComentario('comentario-padre','No tiene padre');
		});
	}
	
	
	//Llama a la función que elimina un comentario en la administración
	$('.elimina_comentario').live('click', function() {
		comentariosEnBlanco();
		var botonEliminaComentario	= $(this);
		var idComentario 			= $(botonEliminaComentario).parents('tr').children('td:first').text();
		var tipoComentario 			= $(botonEliminaComentario).parents('tr').children('td:eq(1)').text();
		
		$(botonEliminaComentario).parents('tr').css('background',colorTres);
		
		if(tipoComentario == 'padre'){
			verificaComentariosHijo (idComentario,botonEliminaComentario);
		}else{
			eliminaComentario (idComentario, botonEliminaComentario);
		}
	});
	
	//Llama a la función que lista los comentarios hijos
	$('.lista-respuestas').live('click',function(){
		comentariosEnBlanco ();
		regresaComentarioPadre();
		var botonComentarioPadre = $(this);
		listaRespuestas (botonComentarioPadre);
	});


	//Llama a la función que oculta los comentarios hijos
	$('.oculta-respuestas').live('click',function(){
		comentariosEnBlanco ();
		regresaComentarioPadre();
		var botonComentarioPadre = $(this);
		ocultaRespuestas (botonComentarioPadre);
	});
	
	
});
	
	
	
