var n_lineas;
var primera_peticion;
var link_peticion_imprimir;


function findSWF(movieName) {
	if (navigator.appName.indexOf("Microsoft")!= -1) {
		return window[movieName];
	}
	else {
		return document[movieName];
	}
}

//Recarga la gráfica con los datos de la peticion
function doRequest(peticion){
	
	var linea_cero = '{"type":"shape","colour":"#000000","alpha":0,"line-colour":"#000000","line-alpha":1,"width":1,"values":[{"x":"min","y":0},{"x":"max","y":0}]}';
		
	
	//alert(peticion);
	$.ajax({
		type: "GET",
		url: "getChart2.php",
		data: peticion.substr(1),
		success: function(json){
			var data = JSON.parse(json);
			
			//tenemos que comprobar si hay que introducir la linea 0 o no.
			//Sólo la introduciremos si el 0 está entre los límites mostrados
			if(data.y_axis.min < 0 && data.y_axis.max > 0){
				data.elements.push(JSON.parse(linea_cero));
			}
			
			//alert(json);
			//alert(JSON.stringify(data));
			
			//Cuando tengamos los datos, se los pasamos a la gráfica
			var tmp = findSWF("grafica");
			tmp.load(JSON.stringify(data));
		}
	});
}

function formaPeticion(isFirstTime){
	var peticion = "?modo=" + $("#modo").val();
	
	if($("#modo").val() == "datos"){
	  peticion += "&ubicacion=" + $("#ubicaciones_geograficas_modo").val();
	}
	
	if(!isFirstTime){
		peticion += "&anyo_inicio=" + $("#anyo_inicio").val() + "&mes_inicio=" + $("#mes_inicio").val() + "&anyo_fin=" + $("#anyo_fin").val() + "&mes_fin=" + $("#mes_fin").val();
	}
	else{
		peticion += "&isFirstTime=1&anyo_inicio=" + $("#anyo_inicio > *:eq(1)").val() + "&mes_inicio=" + $("#mes_inicio").val();
	}
	
	//Ahora recorremos para ver qu variables y qu lneas tenemos que mostrar
	$(".cuadro_selectores_variables:visible").each( function(){
		var id_div = $(this).attr('id').replace(id_divisor_cuadro_controles_variables, '');
		//Una vez que tenemos el identificador, obtenemos los valores de los select para mostrar la linea
		
		peticion += "&variable_" + id_div + "=" + $("#" + id_select_variable_mostrar + id_div).val();
		peticion += "&linea_" + id_div + "=" + $("#" + id_select_lineas_variable + id_div).val();
		
		if($("#modo").val() == "tasas"){
			peticion += "&ubicacion_" + id_div + "=" + $("#" + id_select_ubicacion_tasa + id_div).val();
		}
	});
	
	return peticion;
}

function reloadGrafica(isFirstTime){  
	var peticion = formaPeticion(isFirstTime);
	
	//alert(tmp);
	//tmp.reload('data.php'); Version 1.0 de OFC. En la v. 2.x no se hace así. Ver funcion doRequest
	doRequest(peticion);
	
	//Recargamos ahora tambien el cuadro informativo
	reloadCuadroResumen(peticion);
	
	link_peticion_imprimir = direccion_imprimir_resumen_pdf + peticion;
	$(".boton_imprimir").show();

}

function reloadCuadroResumen(peticion){
	$.ajax({
		type: "POST",
		url: "cuadro_resumen.php",
		data: peticion.substr(1),
		success: function(html){
			$("#cuadro_resumen").html(html);
			//Una vez recargado el cuadro resumen, ya tenemos las fuentes. Las cargamos
			cargaFuentes();
		}
	});
}

//Comprueba que no se ha superado el maximo y que la fecha de inicio es anterior a la de fin. Si no, se recarga la grfica;
function reloadChart() {
	
	if(n_lineas < 0 || n_lineas > n_max_lineas){
		alert("No se puede recargar la gráfica");
	}
	else{
		var anyo_inicio = $("#anyo_inicio").val();
		var anyo_fin = $("#anyo_fin").val();
		var mes_inicio = $("#mes_inicio").val();
		var mes_fin = $("#mes_fin").val();
		if(isNaN(anyo_inicio) || anyo_inicio == null || isNaN(anyo_fin) || anyo_fin == null || isNaN(mes_inicio) || isNaN(mes_fin)){
			alert("Ha ocurrido un fallo al pasar los parámetros de la gráfica");
		}
		else {
			if(parseInt(anyo_inicio) > parseInt(anyo_fin) || (parseInt(anyo_inicio) == parseInt(anyo_fin) && parseInt(mes_inicio) >= parseInt(mes_fin))){
				alert("La fecha de inicio debe ser anterior a la fecha de fin");
			}
			else{
				reloadGrafica(false);
			}
		}
	}
}

$(document).ready( function () {

	//Recargarmos el cuadro de selectores para que la llamada a formaPeticion se haga correctamente.
	reloadCuadroSelectores(true);
	var primera_peticion = formaPeticion(true);
	
	//Ahora dibujamos la grafica
	//alert(primera_peticion);
	drawChart(primera_peticion);
	
	//Una vez cargada la gráfica, cargamos el cuadro resumen con las fuentes
	reloadCuadroResumen(primera_peticion);
	
	//Formamos la primera petición para los botones de imprimir y los mostramos
	link_peticion_imprimir = direccion_imprimir_resumen_pdf + primera_peticion;
	$(".boton_imprimir").show();
							 
	$("#modo").change(function() {
		reloadCuadroSelectores(false);
	});
	
	//Cuando hagamos click en el boton imprimir, tenemos que subir la imagen
	$(".boton_imprimir").click(function() {
		//alert("se ha hecho click");
		post_image(false);
		//ver funcion imagen_subida
	});
	
});

function reloadCuadroSelectores(isFirstTime){
	//Primero ocultamos para luego sOlo mostrar las lineas por defecto
	$(".cuadro_selectores_variables").hide();
	
	n_lineas = 0;
	
	if($("#modo").val() == "tasas"){
		//Tenemos que esconder y deshabilitar el selector de ubicaciones de modo, y mostrar y habilitar el de variables de Sevilla Municipio y/o Provincia
		$("#label_ubicaciones_geograficas_modo").hide();
		$("#ubicaciones_geograficas_modo").hide();
		$("#ubicaciones_geograficas_modo").attr("disabled", "disabled");
		
		$(".label_ubicaciones_geograficas_variable").show();
		$(".ubicaciones_geograficas_variable").show();
		
		$("#ubicaciones_geograficas_modo").children().each(function(){
			if($(this).val() == id_ubicacion_sevilla_municipio){
				n_lineas++;
				$("#" + id_select_variable_mostrar + n_lineas).val(id_variable_actual);
				$("#" + id_select_ubicacion_tasa + n_lineas).val(id_ubicacion_sevilla_municipio);
				$("#" + id_divisor_cuadro_controles_variables + n_lineas).show();
			}
			else if($(this).val() == id_ubicacion_sevilla_provincia){
				n_lineas++;
				$("#" + id_select_variable_mostrar + n_lineas).val(id_variable_actual);
				$("#" + id_select_ubicacion_tasa + n_lineas).val(id_ubicacion_sevilla_provincia);
				$("#" + id_divisor_cuadro_controles_variables + n_lineas).show();
			}
		});
		
	}
	else{
		//Modo datos
		//Tenemos que esconder y deshabilitar el selector de ubicaciones de variables, y mostrar y habilitar el de modo
		$(".ubicaciones_geograficas_variable").hide();
		$(".label_ubicaciones_geograficas_variable").hide();
		$("#ubicaciones_geograficas_modo").children().each(function(){
			if($(this).val() == id_ubicacion_sevilla_municipio && n_lineas == 0){
				n_lineas++;
				$("#" + id_select_variable_mostrar + n_lineas).val(id_variable_actual);
				$("#" + id_select_ubicacion_datos).val(id_ubicacion_sevilla_municipio);
				$("#" + id_divisor_cuadro_controles_variables + n_lineas).show();
			}
			else if($(this).val() == id_ubicacion_sevilla_provincia && n_lineas == 0){
				n_lineas++;
				$("#" + id_select_variable_mostrar + n_lineas).val(id_variable_actual);
				$("#" + id_select_ubicacion_datos).val(id_ubicacion_sevilla_provincia);
				$("#" + id_divisor_cuadro_controles_variables + n_lineas).show();
			}
		});
		
		$("#label_ubicaciones_geograficas_modo").show();
		$("#ubicaciones_geograficas_modo").show();
		$("#ubicaciones_geograficas_modo").removeAttr("disabled");
		
	}
	
	
	if(n_lineas == 1){
		$(".enlace_elimina_linea").hide();
	}
	else if(n_lineas > 1){
		$(".enlace_elimina_linea").show();
	}
	
	
	if(isFirstTime){
		$("#anyo_inicio").val($("#anyo_inicio > *:eq(1)").val());
		$("#mes_inicio").val($("#mes_inicio > *:first").val());
		$("#mes_fin").val($("#mes_fin > *:last").val());
	}
	else{
		recargar_posibles_lineas_variable();
		reloadChart();
	}
	
}

function recargar_posibles_lineas_variable(){
	$.ajax({
		type: "POST",
		url: "get_posibles_lineas_variable.php?id_variables=" + id_variable_agrupacion + "&modo=" + $("#modo").val(),
		success: function(html){
			$(".posibles_lineas_variable").html(html);
		}
	});
}

function crea_nueva_linea(){
	if(n_lineas < n_max_lineas){
		var content = $(".cuadro_selectores_variables:hidden:first").remove();
		$(".cuadro_selectores_variables:visible:last").after($(content));
		$(content).show()
		n_lineas++;
	}
	else{
		alert("Por razones de legibilidad, sólo se permite mostrar 4 líneas simultáneamente");
	}

	if(n_lineas > 1){
		$(".enlace_elimina_linea").show();
	}
}

function elimina_linea(id_linea){
	if(n_lineas > 1){
		$("#" + id_divisor_cuadro_controles_variables + id_linea).hide();
		n_lineas--;
	}
	if(n_lineas == 1){
		$(".enlace_elimina_linea").hide();
	}
	if(n_lineas < n_max_lineas){
		$(".enlace_nueva_linea").show();
	}
	
	reloadChart();
}

var lastHelpOpened = "";

//Abre la ayuda del elemento pasado como parmetro
function openHelp(elemento){
	if(lastHelpOpened != elemento){
		$.ajax({
			type: "GET",
			url: "../get_ayuda.php?tema_ayuda=" + elemento,
			success: function(html){
				$("#texto_ayuda").html(html);
			}
		});
		
		lastHelpOpened = elemento;
	}
	
	$("#cuadro_ayuda").show();
}

function closeHelp(){
	$("#cuadro_ayuda").hide();
}

function cargaFuentes(){
	$.ajax({
		type: "GET",
		url: "get_fuentes.php",
		success: function(html){
			if(html != "")
				$("#texto_fuentes").html(html);
		}
	});
}

function imagen_subida(){
	//alert(link_peticion_imprimir);
	window.open(link_peticion_imprimir, '_blank', 'width=800, height=600,top=20,left=20,resizable=yes');
}

function post_image(debug)
{
	//La url a la que se subirá la imagen generada por la herramienta flash
	var url = "../../include/php-ofc-library/ofc_upload_image.php";
// alert("se va hacer la peticion");
	var ofc = findSWF("grafica");
 	// el parametro central es una llamada que se realiza cuando la imagen se ha subido.
	var x = ofc.post_image( url, 'imagen_subida', debug );
}
