// Variables con las cantidades de crìticas por página
var cant_x_pag;
var meses = new Array("","Enero","Febrero","Marzo","Abril","Mayo","Julio","Junio","Agosto","Setiembre","Octubre","Noviembre","Diciembre");

function convertirFecha(timestamp) {
  //function parses mysql datetime string and returns javascript Date object
  //input has to be in this format: 2007-06-05 15:26:02
  var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
  var parts=timestamp.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
  return new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]);
}

function utf8_decode ( str_data ) {

	var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0;

	str_data += '';

	while ( i < str_data.length ) {
		c1 = str_data.charCodeAt(i);
		if (c1 < 128) {
			tmp_arr[ac++] = String.fromCharCode(c1);
			i++;
		} else if ((c1 > 191) && (c1 < 224)) {
			c2 = str_data.charCodeAt(i+1);
			tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
			i += 2;
		} else {
			c2 = str_data.charCodeAt(i+1);
			c3 = str_data.charCodeAt(i+2);
			tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
			i += 3;
		}
	}

	return tmp_arr.join('');
}

function inicio(cant,t_lista_central,t_lista_lat) {
	cant_x_pag = cant;
	// Generar variables de sesion
	TIPO_DE_PAGINA = t_lista_central;
		
	// llenar tabla con datos iniciales
	$.post("generar_lista.php", {tipo_lista: t_lista_central, cant_por_pagina: cant_x_pag, n_pagina: "1"}, function(data){
		JSONData = eval(data);
		//alert(JSONData);
		llenar_tabla_central(JSONData);

	});

	// llenar tabla con datos iniciales
	$.post("generar_lista.php", {tipo_lista: t_lista_lat, cant_por_pagina: "10", n_pagina: "1"}, function(data){
		JSONData = eval(data);
		llenar_tabla_lateral(JSONData);	
	});

	// Inicializar conteo de formulario
	$('#agregar_critica').limit('250','#charsLeft');

	var options_agregar = {
		success: actualizar_tabla,  // post-submit callback 
		clearForm: false        // clear all form fields after successful submit
	};

	$('#formu_critica').ajaxForm(options_agregar);
}

function actualizar_tabla (responseText, statusText) {
	
	texto = $("textarea#agregar_critica").val();
	nuevo_id = responseText;

	if(texto==""){
		$('#agregar_critica').effect("highlight", {color:"#FF0000"}, 1000);
	}else{
	
	var tempHTML_lat = $("#barra_lateral_contenido").html();
	var tempHTML = $("#central_contenido").html();

	var nuevoHTML_lat = "<div class=\"critica\" id=\"criticas_laterales_" + nuevo_id +"\">";
	nuevoHTML_lat += "<div class=\"texto\">" + texto + "</div>";
	nuevoHTML_lat += "<div class=\"cant_votos\"><span id=\"votos_laterales_" + nuevo_id + "\">1 VOTO</span></div>";
	nuevoHTML_lat += "</div>";


	var nuevoHTML = "<div class=\"critica\" id=\"criticas_" + nuevo_id +"\">";
	nuevoHTML += "<div class=\"texto\">" + texto + "</div>";
	nuevoHTML += "<div class=\"cant_votos\"><span id=\"votos_" + nuevo_id + "\">1</span> VOTO</div>";
	nuevoHTML += "</div>";

	$("#central_contenido").html(nuevoHTML)
	.append(tempHTML);

	switch(TIPO_DE_PAGINA){
		case "top":
			//Ordenar segun mas votadas (populares.php)
			$("div#central_contenido>div").tsort("span:eq(0)",{order:"desc"});
			
			//Actualizar barra lateral
			$("#barra_lateral_contenido").html(nuevoHTML_lat)
			.append(tempHTML_lat);
			
			// Efecto de color
			$('#criticas_laterales_' + nuevo_id).effect("highlight", {color:"#00FF00"}, 5000);
		break;
		case "ultimas":
			//Ordenar segun mas votadas en barra lateral
			//$("div#central_contenido>div").tsort("span:eq(0)",{order:"desc"});
		break;
		case "bottom":
			//ordenar segun menos votadas (bottom.php)
			$("div#central_contenido>div").tsort("span:eq(0)");
			
		break;
	}

	// Efecto de color
	$('#criticas_' + nuevo_id).effect("highlight", {color:"#00FF00"}, 5000);

	// Borrar contenido del campo de entrada
	$('#formu_critica').clearForm();
	}
}

function agregar_voto(id) {
	$('#criticas_' + id).effect("highlight", {color:"#00FF00"}, 500);
	$("#votos_" + id).html(+$("#votos_" + id).html() + 1);
	$('#criticas_laterales_' + id).effect("highlight", {color:"#00FF00"}, 500);
	$("#votos_laterales_" + id).html(+$("#votos_laterales_" + id).html() + 1);

	//Deshabilitar votación
	$("#votaciones_" + id).html("");
	$("#votaciones_laterales_" + id).html("");
	
	$.post("contar_votos.php", {n_id: id, tipo: "positivo"}, function(){
		switch(TIPO_DE_PAGINA){
		case "top":
			//Ordenar segun mas votadas (populares.php)
			$("div#central_contenido>div").tsort("span:eq(0)",{order:"desc"});
		break;
		case "ultimas":
			//ordenar barra lateral
			$("div#barra_lateral_contenido>div").tsort("span:eq(0)",{order:"desc"});
		break;
		case "bottom":
			//ordenar segun menos votadas (bottom.php)
			$("div#central_contenido>div").tsort("span:eq(0)");
			
		break;
	}
	});
}

function sacar_voto(id) {
	$('#criticas_' + id).effect("highlight", {color:"#FF0000"}, 500);
	$("#votos_" + id).html(+$("#votos_" + id).html() - 1);
	$('#criticas_laterales_' + id).effect("highlight", {color:"#FF0000"}, 500);
	$("#votos_laterales_" + id).html(+$("#votos_laterales_" + id).html() - 1);

	//Deshabilitar votación
	$("#votaciones_" + id).html("");
	$("#votaciones_laterales_" + id).html("");
	
	$.post("contar_votos.php", {n_id: id, tipo: "negativo"}, function(){
		switch(TIPO_DE_PAGINA){
		case "top":
			//Ordenar segun mas votadas (populares.php)
			$("div#central_contenido>div").tsort("span:eq(0)",{order:"desc"});
		break;
		case "ultimas":
			//ordenar barra lateral
			$("div#barra_lateral_contenido>div").tsort("span:eq(0)",{order:"desc"});
		break;
		case "bottom":
			//ordenar segun menos votadas (bottom.php)
			$("div#central_contenido>div").tsort("span:eq(0)");
			
		break;
	}
	});
}

// recibe un array con el cual llenar la tabla central
function llenar_tabla_central(losDatos) {
	var elHTML = "";
	//var contador = 0;
	for (i=0;i<losDatos.length;i++) {
		
		elHTML += "<div class=\"critica\" id=\"criticas_" + losDatos[i]["id_critica"] + "\">";
		elHTML += "<div class=\"texto\">"  + utf8_decode(losDatos[i]["texto"]) + "</div>";
		if (losDatos[i]["habilitado"] == null){
			elHTML += "<div id=\"votaciones_" + losDatos[i]["id_critica"] + "\" class=\"imagenes_votos\">";
			elHTML += "<a href=\"javascript:agregar_voto(" + losDatos[i]["id_critica"] + ")\"><img src=\"imagenes/arriba.png\"></a>";
			elHTML += "<a href=\"javascript:sacar_voto(" + losDatos[i]["id_critica"] + ")\"><img src=\"imagenes/abajo.png\"></a>";
			elHTML += "</div>";
		}
		elHTML += "<div class=\"cant_votos\">";
		if (losDatos[i]["votos"] == 1)
			elHTML += "<span id=\"votos_" + losDatos[i]["id_critica"] + "\">" + losDatos[i]["votos"] + "</span>&nbsp;VOTO";
		else
			elHTML += "<span id=\"votos_" + losDatos[i]["id_critica"] + "\">" + losDatos[i]["votos"] + "</span>&nbsp;VOTOS";
		elHTML += "</div>";
		//elHTML += "</div>";
		if (losDatos[i]["num_comentarios"] == null) {
			elHTML += "<div class=\"comentar\"><a href=\"comentar.php?idcritica=" + losDatos[i]["id_critica"] + "\">Critic&aacute; esta cr&iacute;tica</a></div>";
		} else if (losDatos[i]["num_comentarios"] == "1") {
			elHTML += "<div class=\"comentar\"><a href=\"comentar.php?idcritica=" + losDatos[i]["id_critica"] + "\">1 cr&iacute;tica a esta cr&iacute;tica</a></div>";
		} else {
			elHTML += "<div class=\"comentar\"><a href=\"comentar.php?idcritica=" + losDatos[i]["id_critica"] + "\">" + losDatos[i]["num_comentarios"] + " cr&iacute;ticas a esta cr&iacute;tica</a></div>";
		}
		/*
		//Formateamos la fecha
		var d = convertirFecha(losDatos[i]["fecha"]);
		
		elHTML += "<div class=\"fecha\">Publicado el "+d.getDate()+" de "+ meses[d.getMonth()] +" a las "+ d.getHours() +":"+ d.getMinutes() +"hs</div>";
		*/
		elHTML += "</div>";
	}

	//TEST!!!
	//elHTML = "YoCritico.org se está actualizando. Muchas gracias";
	
	$("#central_contenido").hide();
	$("#central_contenido").html(elHTML);
	$("#central_contenido").show();
}

// recibe un array con el cual llenar la tabla central
function llenar_tabla_lateral(losDatos) {
	var elHTML = "";

	for (i=0;i<losDatos.length;i++) {
		elHTML += "<div class=\"critica\" id=\"criticas_laterales_" + losDatos[i]["id_critica"] + "\">";
		elHTML += "<div class=\"texto\">"  + utf8_decode(losDatos[i]["texto"]) + "</div>";
		if (losDatos[i]["habilitado"] == null){
		elHTML += "<div id=\"votaciones_laterales_" + losDatos[i]["id_critica"] + "\" class=\"imagenes_votos\">";
		elHTML += "<a href=\"javascript:agregar_voto(" + losDatos[i]["id_critica"] + ")\"><img src=\"imagenes/arriba.png\"></a>";
		elHTML += "<a href=\"javascript:sacar_voto(" + losDatos[i]["id_critica"] + ")\"><img src=\"imagenes/abajo.png\"></a>";
		elHTML += "</div>";
		}
		elHTML += "<div class=\"cant_votos\">";
		if (losDatos[i]["votos"] == 1)
			elHTML += "<span id=\"votos_laterales_" + losDatos[i]["id_critica"] + "\">" + losDatos[i]["votos"] + "</span>&nbsp;VOTO";
		else
			elHTML += "<span id=\"votos_laterales_" + losDatos[i]["id_critica"] + "\">" + losDatos[i]["votos"] + "</span>&nbsp;VOTOS";
		elHTML += "</div>";
		
		if (losDatos[i]["num_comentarios"] == null) {
			elHTML += "<div class=\"comentar\"><a href=\"comentar.php?idcritica=" + losDatos[i]["id_critica"] + "\">Critic&aacute; esta cr&iacute;tica</a></div>";
		} else if (losDatos[i]["num_comentarios"] == "1") {
			elHTML += "<div class=\"comentar\"><a href=\"comentar.php?idcritica=" + losDatos[i]["id_critica"] + "\">1 cr&iacute;tica a esta cr&iacute;tica</a></div>";
		} else {
			elHTML += "<div class=\"comentar\"><a href=\"comentar.php?idcritica=" + losDatos[i]["id_critica"] + "\">" + losDatos[i]["num_comentarios"] + " cr&iacute;ticas a esta cr&iacute;tica</a></div>";
		}
		//elHTML += "</div>";
		/*
		//Formateamos la fecha
		var d = convertirFecha(losDatos[i]["fecha"]);
		
		elHTML += "<div class=\"fecha\">Publicado el "+d.getDate()+" de "+ meses[d.getMonth()] +" a las "+ d.getHours() +":"+ d.getMinutes() +"hs</div>";
		*/
		elHTML += "</div>";
	}

	$("#barra_lateral_contenido").hide();
	$("#barra_lateral_contenido").html(elHTML);
	$("#barra_lateral_contenido").show();
}

// Manejar comentarios
function inicio_comentarios(cant,t_lista_central,t_lista_lat,id_critica) {
	cant_x_pag = cant;
	// Generar variables de sesion
	TIPO_DE_PAGINA = t_lista_central;
	
	// llenar tabla con datos iniciales
	$.post("generar_lista.php", {tipo_lista: t_lista_central, cant_por_pagina: cant_x_pag, n_pagina: "1", idcritica: id_critica}, function(data){
		JSONData = eval(data);
		llenar_tabla_central_comentarios(JSONData);

	});

	// llenar tabla con datos iniciales
	$.post("generar_lista.php", {tipo_lista: t_lista_lat, cant_por_pagina: "5", n_pagina: "1"}, function(data){
		JSONData = eval(data);
		llenar_tabla_lateral(JSONData);	
	});

	// Inicializar conteo de formulario
	$('#agregar_comentario').limit('250','#charsLeft');

	var options_agregar = {
		success: actualizar_comentarios,  // post-submit callback 
		clearForm: false        // clear all form fields after successful submit
	};

	$('#formu_comentario').ajaxForm(options_agregar);
}

function actualizar_comentarios (responseText, statusText) {
	texto = $("textarea#agregar_comentario").val();
	nuevo_id = responseText;

	if(texto==""){
		$('#agregar_comentario').effect("highlight", {color:"#FF0000"}, 1000);
	}else{
	
	var tempHTML = $("#central_contenido").html();

	var nuevoHTML = "<div class=\"critica\" id=\"comentario_" + nuevo_id +"\">";
	nuevoHTML += "<div class=\"texto\"><span class=\"numero_comentario\">Tu comentario:</span>" + texto + "</div>";
	nuevoHTML += "</div>";

	$("#central_contenido").html(nuevoHTML)
	.append(tempHTML);

	// Efecto de color
	$('#comentario_' + nuevo_id).effect("highlight", {color:"#00FF00"}, 5000);

	// Borrar contenido del campo de entrada
	$('#formu_comentario').clearForm();
	}
}
// recibe un array para llenar la tabla central pero cuando son comentarios
function llenar_tabla_central_comentarios(losDatos) {
	var elHTML = "";

	var num = losDatos.length;
	for (i=0;i<losDatos.length;i++) {
		elHTML += "<div class=\"critica\" id=\"criticas_" + losDatos[i]["id_comentario"] + "\">";
		elHTML += "<div class=\"texto\"><span class=\"numero_comentario\">#" + num + "</span>"  + utf8_decode(losDatos[i]["comentario"]) + "</div>";
		elHTML += "</div>";
		num--;
	}

	$("#central_contenido").hide();
	$("#central_contenido").html(elHTML);
	$("#central_contenido").show();
}

// Cambia de página
function cambiar_pagina(n_pag,t_lista) {
	$.post("generar_lista.php", {tipo_lista: t_lista, cant_por_pagina:  cant_x_pag, n_pagina: n_pag, nombre_array: "arr_tabla"}, function(data){

		// Convertir resultado a JSON y llenar la tabla principal
		JSONData = eval(data);
		llenar_tabla_central(JSONData);
		$(".contenidos").equalHeights();
		
		// Agregar link al número de la página anterior activa y sacarle la clase "pag_selected"
		$(".pag_selected").html("<a href=\"javascript:cambiar_pagina(" + $(".pag_selected").html() + ",'" + t_lista + "')\">" + $(".pag_selected").html() + "</a>");
		$(".pag_selected").removeClass("pag_selected");

		// Sacar el link del número de la página seleccionada y agregar clase "pag_selected"
		$("#paginado_" + n_pag).html($("#paginado_" + n_pag + " > a").html());
		$("#paginado_" + n_pag).addClass("pag_selected");
	});
}
