/*
Library: Orden del Dia JS
Theme URI: http://www.congresovisible.org
Description: Orden del Dia de Congreso Visible
Version: 1.0
Author: http://www.monoku.com

Creada : 16.01.10
Modificada : 16.01.10
*/
var sentido=1;
var date_selected=undefined;
var hoy=new Date();
hoy.setHours(0, 0, 0, 0);

$(document).ready(function(){
	var elementos=$(".list-comision li");
	$(".list-comision li h4 a").live("click", function(event){
		event.stopPropagation();
		return true;
	});
	$(".list-comision li").live("click", function(){
		$(this).toggleClass("open");
	});
	
	$("#calendario a.prev").click(function(){
		anterioresFechas();
	});
	
	$("#calendario a.next").click(function(){
		siguientesFechas();
	});
	$("#datepicker-continer").datepicker({
		onSelect: function(dateText, inst) {
			$("#datepicker-continer").slideUp();
			var date=$(this).datepicker('getDate');
			siguientesFechas(date.getTime());
		},
		changeMonth: true,
		changeYear: true
	});
	$('body').click(function(event) {
		$("#datepicker-continer").slideUp();
	});
	$("#thedatepicker").click(function(event){
		$("#datepicker-continer").slideDown();
		event.stopPropagation();
	});
	$("#datepicker-continer").click(function(event){
		event.stopPropagation();
	});
	$("#calendario li").live("click", function(){
		$("#calendario li").not($(this).addClass("selected")).removeClass("selected");
		setFechaOrdenDelDia(new Date(parseFloat($(this).find("input").val())));
	});
	$("#listbox-categorias li").live("click", function(){
		setFiltroComision($(this).html());
	});
	$("#botones-filtros a").click(function(){
		if(!$(this).hasClass("selected")) {
			$("#botones-filtros a").not($(this).addClass("selected")).removeClass("selected");
			setFiltroActividades($(this).find("span span").html());
		}
		return false;
	});
	
	var t = new Date();
	if( t.getMonth() == 11 ){
		t.setMonth( 0 );
		t.setFullYear( (t.getFullYear() + 1) );
	}
	else{
		t.setMonth((t.getMonth()+ 1));
	}
	anterioresFechas( hoy, cargarUltimaFecha);

	//setFechaOrdenDelDia(hoy);
});

/**
 * Carga las fechas anteriores a la primera de la lista
 * @param valor
 * @return true
 */
function anterioresFechas(valor, callback) {
	callback=callback||function(){};
	$("#calendario ul").animate({left:($("#calendario ul").position().left+$("#calendario").width())},function(){
		$("#calendario li.selected").removeClass("selected");
		sentido=-1;
		if(valor) {
			getFechasOrdenesDelDia(valor, callback);
		}else {
			var fecha=$("#calendario ul li:visible input:first").val();
			getFechasOrdenesDelDia(fecha, callback);
		}
	});
	return true
}

/**
 * Carga las fechas siguientes a la última de la lista
 * @param valor
 * @return true
 */
function siguientesFechas(valor, callback) {
	callback=callback||function(){};
	$("#calendario ul").animate({left:($("#calendario ul").position().left-$("#calendario").width())},function(){
		$("#calendario li.selected").removeClass("selected");
		sentido=1;
		if(valor) {
			getFechasOrdenesDelDia(valor, callback);
		}else {
			var fecha=$("#calendario ul li:visible input:last").val();
			getFechasOrdenesDelDia(fecha, callback);
		}
	});
	return true
}

/**
 * Hace el llamado ajax para cargar las fechas de ordenes del día
 * @param fecha
 * @return true
 */
function getFechasOrdenesDelDia(fecha, callback) {
	callback=callback||function(){};
	var temp=(sentido==1?"":"-")
	$.get("/orden-del-dia/listar-fechas/"+temp+parseInt(fecha/1000)+"/6/",function (data){
		setFechasOrdenesDelDia(data, fecha);
		callback();
	});
	$("#calendario,#calendario a").css("cursor","wait");
	return true
}
/**
 * Refresca el listado de fechas dado el modelo
 * @param fechas
 * @return true
 */
function setFechasOrdenesDelDia(fechas) {
	if(fechas.length==0) {
	 return true;
	}
	$("#calendario").css("cursor","auto");
	$("#calendario a").css("cursor","pointer");
	var calendarios=$("#calendario ul li").hide();
	for ( var i = 0; i < fechas.length; i++) {
		if($(calendarios[i]).hasClass("hoy")) {
			$(calendarios[i]).removeClass("hoy");
		}
		var fechatemp=new Date(fechas[i].fecha*1000);
		fechatemp.setHours(0, 0, 0, 0);

		$(calendarios[i]).find(".mes").html(parseFechaMes(fechatemp));
		$(calendarios[i]).find(".dia").html(fechas[i].dia);
		$(calendarios[i]).find(".nombre").html(parseDia(fechatemp));
		$(calendarios[i]).find("input").val(fechatemp.getTime());
		if(hoy.getTime()==fechatemp.getTime()) {
			$(calendarios[i]).addClass("hoy");
		}
		if(fechatemp.getTime()==date_selected) {
			$(calendarios[i]).addClass("selected");
		}
		$(calendarios[i]).show();
	}
	if(sentido>0) {
		$("#calendario ul").css("left",$("#calendario").width());
		$("#calendario ul").animate({left:42});
	}
	else{
		$("#calendario ul").css("left",-$("#calendario").width());
		$("#calendario ul").animate({left:42});
	}
	return true
}

/**
 * Al elegir una fecha del listado, se carga dicho orden del dia
 * @param fecha
 * @return true
 */
function setFechaOrdenDelDia(fecha){
	fecha.setHours(0, 0, 0, 0);
	date_selected=fecha.getTime();
	//Se asigna la fecha al titulo, si es hoy se habilita el tag hoy
	$(".fecha-de-busqueda .texto").html(parseFechaLegible(fecha));
	if(fecha.getTime()==hoy.getTime()){
		$(".fecha-de-busqueda .tag").show();
	}else {
		$(".fecha-de-busqueda .tag").hide();
	}
	//Ahora se asigna la busqueda
	loadOrdenDelDia(fecha);
	return true;
}

/**
 * Filtra los resultados por comisiones (solo html)
 * @param comision
 * @return true
 */
function setFiltroComision(comision) {
	if(comision=="Todos") {
		$("#resultados h3,#resultados h3 + ul").show();
	}else {
		$("#resultados h3,#resultados h3 + ul").not("#resultados h3:contains('"+comision+"'),#resultados h3:contains('"+comision+"') + ul").hide();
		$("#resultados h3:contains('"+comision+"'),#resultados h3:contains('"+comision+"') + ul").show();
	}
	return true;
}
/**
 * Cuando un filtro es seleccionado se ocultan los resultados que no coincidan (solo html)
 * @param actividad
 * @return true
 */
function setFiltroActividades(actividad) {
	if(actividad=="Todo") {
		$("#resultados li").show();
	}else if(actividad=="Citaciones"){
		$("#resultados li .actividad .tag span span:not(:contains('Citaci'))").parents("li").hide();
		$("#resultados li .actividad .tag span span:contains('Citaci')").parents("li").show();
	}else if(actividad=="Proyectos"){
		$("#resultados li .actividad .tag span span:not(:contains('Proyecto'))").parents("li").hide();
		$("#resultados li .actividad .tag span span:contains('Proyecto')").parents("li").show();
	}else{
		$("#resultados li .actividad .tag span span:contains('Citaci'),#resultados li .actividad .tag span span:contains('Proyecto')").parents("li").hide();
		$("#resultados li .actividad .tag span span").not(":contains('Citaci'),:contains('Proyecto')").parents("li").show();
	}
	return true;
}

/**
 * Realiza el llamado ajax para cargar el orden del dia dada una fecha en long
 * @param fecha
 * @return true
 */
function loadOrdenDelDia(fecha){
	$("#resultados").html("cargando...").css("cursor","wait");
	$.get("/orden-del-dia/"+parseInt(fecha.getTime()/1000)+"/",function (data){
		cargarOrdenDelDia(data);
	});
	return true;
}

/**
 * Carga la informacion del json al html
 */
function cargarOrdenDelDia(data) {
	if(data.length==0) {
	 return true;
	}

	$("#botones-filtros a").removeClass("selected").first().addClass('selected');
	var $resultados=$("#resultados");
	$resultados.html("").css("cursor","auto");
	$("#lista-comisiones").html("");
	$("#list_cat_genero").html("Todos");
	$("#lista-comisiones").append($("<li>").html("Todos").attr("val","Todos"));
	for ( var i = 0; i < data.length; i++) {
		var doc_frag=document.createDocumentFragment();
		elem_comision=data[i];
		if(elem_comision.comision||elem_comision.camara){			
			$resultados.append($("<h3>").html((elem_comision.comision||"Plenaria de "+elem_comision.camara)));
		}else{
			$resultados.append($("<h3>").html("Otro"));
		}
		$resultados.append($("<ul>").addClass("list-comision"));
		var actividades=elem_comision.actividades;
		if(actividades){
			for ( var j = 0; j < actividades.length; j++) {
				var actividad=actividades[j];
				var $template;
				if(actividad.tipo.toLowerCase().indexOf("citac")!=-1) {
					$template=$("#template .elem-citacion").clone();
					$template.find(".e_titulo").html("<span style='font-size:120%'>"+actividad.tipo_citacion+":</span> "+actividad.titulo).attr("href","/citaciones/"+slugify(actividad.titulo)+"/"+actividad.id_citacion);
					$template.find(".e_tema").html(actividad.tema);
					$template.find(".e_citantes").html("");
					if(actividad.citantes){						
						for ( var k = 0; k < actividad.citantes.length; k++) {
							var citante=actividad.citantes[k];
							$template.find(".e_citantes").append($("<a>").html(citante.nombre).attr("href","/congresistas/perfil/"+slugify(citante.nombre)+"/"+citante.id+"/"));
							if(k<actividad.citantes.length-1&&actividad.citantes.length>1) {
								$template.find(".e_citantes").append(",&nbsp;");
							}
						}
					}
					var $ecitado=$template.find(".citado").clone();
					$template.find(".e_citados").html("");
					if(actividad.citados){						
						for ( var k = 0; k < actividad.citados.length; k++) {
							var citado=actividad.citados[k];
							$ecitado=$ecitado.clone();
							//$ecitado.find(".titulo").html(citado.cargo);
							$ecitado.find(".nombre").html(citado.nombre);
							//.append($("<span>").addClass("cargo").html(citado.donde));
							$template.find(".e_citados").append($ecitado);
						}
					}
				}
				else if(actividad.tipo.toLowerCase().indexOf("proyecto")!=-1) {
					$template=$("#template .elem-proyecto").clone();
					$template.find(".e_titulo").html(actividad.titulo).attr("href","/proyectos-de-ley/"+slugify(actividad.proyecto.nombre)+"/"+actividad.proyecto.id);
					$template.find(".e_proyecto").html(actividad.proyecto.nombre);
					$template.find(".e_proyecto_link").attr("href","/proyectos-de-ley/"+slugify(actividad.proyecto.nombre)+"/"+actividad.proyecto.id);
					$template.find(".e_estado").html(actividad.datos.estado?actividad.datos.estado:"&minus;");
					$template.find(".e_numero_camara").html(actividad.datos.numero_camara?actividad.datos.numero_camara:"&minus;");
					$template.find(".e_numero_senado").html(actividad.datos.numero_senado?actividad.datos.numero_senado:"&minus;");
				}else{
					$template=$("#template .elem-otro").clone();
					$template.find(".e_titulo").html(actividad.titulo).attr("href","#"+slugify(actividad.titulo));
				}
				if(!actividad.importante) {
					$template.find(".alert").hide();
				}
				doc_frag.appendChild($template.addClass("open").get(0));
			}
			$("#resultados ul:last").append(doc_frag);
		}
		if(elem_comision.camara||elem_comision.comision){
			if($("#lista-comisiones li[val='"+(elem_comision.camara||"Plenaria de "+elem_comision.comision)+"']").length==0){				
				$("#lista-comisiones").append($("<li>").html((elem_comision.comision||"Plenaria de "+elem_comision.camara)).attr("val",(elem_comision.comision||"Plenaria de "+elem_comision.camara)));
				
			}
		}
	}
}
 
function cargarUltimaFecha(){
	$("#calendario li").removeClass("selected");
	$("#calendario li:visible:last").addClass("selected");
	setFechaOrdenDelDia(new Date(parseFloat($("#calendario li:visible:last input").val())));
}

