var SEARCH = {};

SEARCH.pintaMes = function(mes, anio, capa) {
	//Definimos las variables necesarias
	var meses = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    var mesesNombre = new Array('Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
    var calendario = '';

    var mes_anterior = (mes == 1) ? 12 : mes - 1;
    var anio_anterior = (mes == 1) ? anio - 1 : anio;

    var mes_siguiente = (mes == 12) ? 1 : mes + 1;
    var anio_siguiente = (mes == 12) ? anio + 1 : anio;

    //Preparamos el html
    calendario += '<div class="calheader">';
    calendario += '<a href="javascript:void(0)" onclick="SEARCH.muestraMes(' + mes_anterior + ', ' + anio_anterior + ', \'' + capa + '\')" class="hemcalmesant"><span>mes anterior</span></a>';
    calendario += '<a href="javascript:void(0)" onclick="SEARCH.muestraMes(' + mes_siguiente + ', ' + anio_siguiente + ', \'' + capa + '\')" class="hemcalmessig"><span>mes siguiente</span></a>';
    calendario += '<h5>' + mesesNombre[mes - 1] + ' ' + anio + '</h5></div>';
    calendario += '<table border="0" summary="Calendario2" cellpadding="0" cellspacing="0">';
    calendario += ' <tr>';
    calendario += '     <th scope="col">L</th>';
    calendario += '     <th scope="col">M</th>';
    calendario += '     <th scope="col">X</th>';
    calendario += '     <th scope="col">J</th>';
    calendario += '     <th scope="col">V</th>';
    calendario += '     <th scope="col">S</th>';
    calendario += '     <th scope="col">D</th>';
    calendario += ' </tr>';

    var dia_semana = (new Date(anio, (mes - 1), 1)).getDay();

    dia_semana = dia_semana ? dia_semana : 7;

    calendario += '<tr>';

    for (var i = 1; i < dia_semana; i++) {
        calendario += '<td class="Hvacio">&nbsp;</td>';
    }

    var dia = 1;
    if (dia_semana <= 7) {
        for (var i = dia_semana; i <= 7; i++) {
            calendario += '<td><a href="javascript:void(0)" onclick="SEARCH.realizaSeleccion(' + dia + ', ' + mes + ', ' + anio + ', \'' + capa + '\')">' + dia + '</a></td>';
            dia++;
        }
    }

    dia_semana = 1;

    var dias = (mes == 2 && SEARCH.checkYear(anio)) ? 29 : meses[mes - 1];

    for (var i = dia; i <= dias; i++) {
        dia_semana = (dia_semana > 7) ? 1 : dia_semana;
        if (dia_semana == 1) {
            calendario += '</tr>';
            calendario += '<tr>';
        }

        calendario += '<td><a href="javascript:void(0)" onclick="SEARCH.realizaSeleccion(' + i + ', ' + mes + ', ' + anio + ', \'' + capa + '\')">' + i + '</a></td>';
        dia_semana++;
    }

    for (var i = dia_semana; i <= 7; i++) {
        calendario += '<td class="Hvacio">&nbsp;</td>';
    }

    calendario += '</tr>';
    calendario += '</table>';
    calendario += ' <div class="clear"></div>';
		
    return calendario;
}

SEARCH.checkYear = function (anio) {
	//Comprobamos si un año es bisiesto
	if ((anio % 4 == 0) && ((anio % 100 != 0) || (anio % 400 == 0))) { 
		return true;
	}
	return false;
}

SEARCH.muestraMes = function(mes, anio, capa) {
	//Mostramos la capa con el calendario
	var cal = SEARCH.pintaMes(mes, anio, capa);
	$('#calendario-' + capa).html(cal);
	$('#calendario-' + capa).show();
	SEARCH.limpiarRadios();
}

SEARCH.cerrarMes = function(capa) {
	//Ocultamos la capa del calendario
	$('#calendario-' + capa).hide();
}

SEARCH.realizaSeleccion = function(dia, mes, anio, capa) {
    //Rellenamos los select con la devolución del calendario
    $('select[name=dia' + capa + ']').val((dia < 10) ? '0' + dia : dia);
    $('select[name=mes' + capa + ']').val((mes < 10) ? '0' + mes : mes);
    $('select[name=anno' + capa + ']').val(anio);
    
    $('#calendario-' + capa).hide();
    
    $(':radio[value=5]').attr('checked', 'checked');
}

SEARCH.comprobarSelect = function(capa) {
	//Comprobamos si los valores de los selects son válidos
	if($('select[name=dia' + capa + ']').val() == '') {return false;}
	if($('select[name=mes' + capa + ']').val() == '') {return false;}
	if($('select[name=anno' + capa + ']').val() == '') {return false;}
	return true;
}

SEARCH.enviarFiltroFecha = function(url, day) {
	//Comprobamos si los valores de los selects son válidos
	if(!SEARCH.comprobarSelect('desde') || !SEARCH.comprobarSelect('hasta'))
	{
		alert('Por favor, complete las fechas desde y hasta.');
		return;
	}
	
	//Obtenemos los valores de las fechas desde y hasta
	var fechadesde = $('select[name="annodesde"]').val() + $('select[name="mesdesde"]').val() + $('select[name="diadesde"]').val();
	var fechahasta = $('select[name="annohasta"]').val() + $('select[name="meshasta"]').val() + $('select[name="diahasta"]').val();
	
	//Preparamos la llamada
	var llamada = url + day + ':[' + fechadesde + ';' + fechahasta + ']';
	
	//La realizamos
	$(location).attr('href', llamada);
}

SEARCH.limpiarSelect = function() {
	//Limpiamos todos los select de selección de fechas
	$('select[name="annodesde"]').attr('selectedIndex', 0);
	$('select[name="mesdesde"]').attr('selectedIndex', 0);
	$('select[name="diadesde"]').attr('selectedIndex', 0);
	$('select[name="annohasta"]').attr('selectedIndex', 0);
	$('select[name="meshasta"]').attr('selectedIndex', 0);
	$('select[name="diahasta"]').attr('selectedIndex', 0);
}

SEARCH.limpiarRadios = function() {
	//Limpiamos todos los radios de selección de fechas
	$("input[name='acotar']").removeAttr("checked");
}

SEARCH.enviarAdvance = function(url, format, day) {	
	//Obtenemos los valores necesarios para componer la llamada
	var hits = $('input[name="hits"]:checked').attr('value');
	var order = $('input[name="order"]:checked').attr('value');
	var filter = $('input[name="acotar"]:checked').attr('value');
	//Si no tenemos seleccionado ningún radio de fecha, podemos tener los selects
	if(filter == undefined) 
	{
		if(SEARCH.comprobarSelect('desde') && SEARCH.comprobarSelect('hasta'))
		{
			var fechadesde = $('select[name="annodesde"]').val() + $('select[name="mesdesde"]').val() + $('select[name="diadesde"]').val();
			var fechahasta = $('select[name="annohasta"]').val() + $('select[name="meshasta"]').val() + $('select[name="diahasta"]').val();
			
			filter = day + ':[' + fechadesde + ';' + fechahasta + ']';
		}
		else
		{
			filter = '';
		}
	}
	
	var edition = $('select[name="edicion"]').attr('selectedIndex');
	if(edition != undefined && $('select[name="edicion"]').val() != 0) 
	{ 
		if(filter.length > 0) {filter+= ',';}
		filter+= $('select[name="edicion"]').val();
	}
	
	//Montamos la query para la llamada
	var query = '';
	var algunCampo = 0;
	
	if($("#todas").attr("value") != "")
	{
		if($("#todas").attr("value").length < 3) 
		{
			alert('Por favor, introduzca al menos 3 caracteres en el campo \'con todas las palabras\'.');
			return false;
		}
		var todas = jQuery.trim($("#todas").attr("value"));
//		todas = todas.replace(/\s+/g, " AND ");
//		todas = '(' + todas + ')';
		query = todas;
		algunCampo = 1;
	}
	
	if($("#frase").attr("value").length > 0)
	{
		if($("#frase").attr("value").length < 3) 
		{
			alert('Por favor, introduzca al menos 3 caracteres en el campo \'con la frase exacta\'.');
			return false;
		}
		var frase = jQuery.trim($("#frase").attr("value"));
		frase = '"' + frase + '"';
//		if(algunCampo)
//		{
//			query = query + ' AND ' + frase;
//		}
//		else
//		{
//			query = query + ' ' + frase;
//		}
	    query = query + ' ' + frase;
		algunCampo = 1;
	}
	
	if($("#alguna").attr("value").length > 0)
	{
		if($("#alguna").attr("value").length < 3) 
		{
			alert('Por favor, introduzca al menos 3 caracteres en el campo \'con alguna de las palabras\'.');
			return false;
		}
		var alguna = jQuery.trim($("#alguna").attr("value"));
		//Inclusion de frase exacta en el OR
		var array_words = alguna.split(" ");
		if (array_words.length > 1) {
			alguna = array_words[0];
			for (var i = 1; i < array_words.length ; i++) {
				if (array_words[i - 1][0] == '"' && array_words[i][array_words[i].length -1] == '"') {
					alguna = alguna + " " + array_words[i];
				}
				else {
					alguna = alguna + " OR " + array_words[i];
				}
			};
		}
        query = query + ' ' + alguna;
		algunCampo = 1;
	}
	
	if($("#sin").attr("value").length > 0)
	{
		if(!algunCampo) 
		{
			alert('El campo \'sin las palabras\' debe ir acompañado de otro criterio de búsqueda.');
			return false;
		}
		if($("#sin").attr("value").length < 3) 
		{
			alert('Por favor, introduzca al menos 3 caracteres en el campo \'sin las palabras\'.');
			return false;
		}
		var sin = jQuery.trim($("#sin").attr("value"));
		var array_words = sin.split(" ");
		sin = "-"+array_words[0];
		if (array_words.length > 1) {
			for (var i = 1; i < array_words.length; i++) {
				if (array_words[i - 1][0] == '"' && array_words[i][array_words[i].length - 1] == '"') {
					sin = sin + " " + array_words[i];
				}
				else {
					sin = sin + " -" + array_words[i];
				}
			}
		}
		query = query + ' ' + sin;
	}
	
	if(!algunCampo) 
	{
		alert('Debe introducir algún criterio de búsqueda.');
		return false;
	}
	
	//Preparamos la llamada
	llamada = url + '?action=search&format=' + format + '&query=' + query + '&filter=' + filter + '&sortby=' + order + '&hits=' + hits;
	
	//alert(llamada); //return;
	
	//Realizamos la llamada
	$(location).attr('href', llamada);
}

SEARCH.mostrarDesplegable = function(id) {
	$(".displayer").hide();
	$("#ul-" + id).show();
}

SEARCH.cerrarDesplegable = function(id) {
	$("#ul-" + id).hide();
}

SEARCH.mostrarMas = function(id) {
	$(".verMas").hide();
	$("#mas-" + id).show();
}

SEARCH.cerrarMas = function(id) {
	$("#mas-" + id).hide();
}

SEARCH.mostrarFiltro = function(id) {
	if($("#li-" + id).hasClass('close')) {
		$("#li-" + id).removeClass('close')
		$("#li-" + id).addClass('open');
	}
	else {
		$("#li-" + id).removeClass('open')
		$("#li-" + id).addClass('close');
	}
}
