
$(document).ready(function(){

	rules_form_buscador_avanzado.evento();
	rules_form_buscador.evento();
	rules_buscador_resultado.evento();
});


rules_paginacion_buscador = {
	evento : function(){
		rules_paginacion_buscador.eventoContexto($(document));
	},
    eventoContexto : function(contexto) {
                 $('a.aP',contexto).click(rules_paginacion_buscador.ejecutar);
	},
    ejecutar: function(){
                  var parametrs = this.href.split('?')[1];
				  var modulo = parametrs.split("modulo_buscador=")[1];
				  modulo = modulo.split("&")[0];
				  var aP = "modulo="+modulo+"&params="+escape(parametrs);
                  var contenedor = $(this).parents('.mainPaginator');
                  $.ajax({ 
                  	url: '/modulo/index.html?'+aP,
					beforeSend: rules_animacion_espera.show,
                  	success: function(html){
                       	contenedor.html(html);
                       	rules_paginacion_buscador.eventoContexto(contenedor);							
                  		},
					complete:rules_animacion_espera.hide                  		
                  	});
                  return false;
	}
}

rules_buscador_resultado = {
	evento: function(){
		rules_buscador_resultado.eventoContexto($("#buscadorResul"));
		rules_paginacion_buscador.eventoContexto($("#buscadorResul"));
	},
	eventoContexto: function (contexto){
		$("#tabs-1 a, #tabs_links a",contexto).click(rules_buscador_resultado.enviar);
	},
	enviar: function(){
		
		rules_animacion_espera.show();
		return true;
							
							
		var modulo_carga = getParamUrlEscape($(this).attr('href'),'buscador_modulo');
		
		var selecTabLink = $("#tabs-1 .selec a");
		var tabHrefSelec = selecTabLink.attr('href');
		selecTabLink.siblings().hide();
		selecTabLink.show();
		selecTabLink.parent().eq(0).removeClass('selec');
		
		var selecLink = $("#buscadorResul #tabs_links a:hidden");
		selecLink.show();
		
		var nuevTab = $("#buscadorResul #tabs-1 a." + modulo_carga );
		nuevTab.parents().eq(0).addClass('selec');
		nuevTab.siblings().show();
		nuevTab.hide();

		
		var nuevLink = $("#buscadorResul #tabs_links a." + modulo_carga);
		nuevLink.hide();
				
		var param = parametros(nuevTab.attr('href'));
		
		
		$.ajax({
			url: '/modulo/index.html',
			data:param['aP'],
			dataType: "html",
			beforeSend: rules_animacion_espera.show, 
			success:function(data){
				$("#contentBus").html(data)
				rules_paginacion_buscador.eventoContexto($("#contentBus"));
				},
			complete:rules_animacion_espera.hide
			});
		
		return false;
	}
}


var urlActionForm = '/buscador/';

rules_form_buscador = {
	evento:function(){
		formulario = $("form.buscarFormUI");
		formulario.submit(rules_form_buscador.enviar);
	},
	enviar:function(){
	
		var buscador 	= $("input[name=buscador]", this).get(0).value;
		var keyword 	= $("input[name=keyword]", this).get(0).value.replace(/ /gi,'-');
		var modulo 		= $("input[name=buscador_modulo]:text, input[name=buscador_modulo]:hidden, input[name=buscador_modulo]:checked, select[name=buscador_modulo] option:selected", this).get(0).value;
		var strAviso = "<p>SE HAN PRODUCIDO LOS SIGUIENTES ERRORES EN EL FORMULARIO:<p>";
		var error 		= false;
		var formulario	= this;
		
		var formAvanzado = $("#formulario-avanzado");
		if (formAvanzado.length > 0)
			formAvanzado[0].keyword.value = keyword;
		
		if (validaKeyword(keyword) != 0){
			error = true;
			strAviso += "<p>- Debe rellenar el campo a buscar correctamente</p><br/>"
		}
		
		if (error){
			aviso(strAviso);
			return false;
		}

				
		rules_animacion_buscando.buscando(formulario);
		this.action = urlActionForm+keyword+'/'+getParamModuloBuscador(modulo);
		this.method = 'post';
		return true;
		
		
		hrefParams = 'buscador_modulo='+modulo
			+'&keyword='+keyword
			+'&buscador='+buscador;

		//Si esta el modulo de buscqueda resultados cargados realizamos la búsqueda por ajax, sino cargamos toda la página.
		if ($("#buscadorResul").size() > 0){

			var aP = 'modulo=BUSBuscadorResultado&params='+escape(hrefParams);
			var varEsto = $(this);
			$.ajax({
				url: '/modulo/index.html',
				data: aP,
				success:function(data){
					$("#buscadorResul").replaceWith(data)
					rules_buscador_resultado.eventoContexto($("#buscadorResul"));
					rules_paginacion_buscador.eventoContexto($("#contentBus"));
					},
				complete:function() { rules_animacion_buscando.buscar(formulario); }
				});
			
			return false;
			}
		return true;
			
	}
}



rules_form_avanzado_buscador_date = {
	evento : function(){
			$("#formulario-avanzado select.month, #formulario-avanzado select.year").change(rules_form_avanzado_buscador_date.compruebaDia);
	},
	valida_dia: function(){
		var year 	= $(".year option:selected",$(this).parent()).text();
		var month 	= $(".month option:selected",$(this).parent()).text();
		var domDay 	= $("select.day ",$(this).parent()).get(0);
		
		var topeDias = getLastDay(month, year);
		if (domDay.length < topeDias){
			while (domDay.length < topeDias)
				domDay.options[domDay.length] = new Option(domDay.length+1, domDay.length+1);
		}
		else domDay.length = topeDias;
	}
}


rules_form_buscador_avanzado = {
	evento: function(){
		$("#formulario-avanzado").submit(rules_form_buscador_avanzado.envio);
		rules_form_avanzado_buscador_date.evento();
	},
	envio : function(){
		today = new Date();
		strAviso = "<p>SE HAN PRODUCIDO LOS SIGUIENTES ERRORES EN EL FORMULARIO:<p>";
		var error = false;
		var varDateFrom 	= $("#yr1 option:selected").text() + '-' + parseInt($("#mes1 option:selected").get(0).value,10) + '-' + parseInt($("#dia1 option:selected").text(),10);
		var varDateTo 		= $("#yr2 option:selected").text() + '-' + parseInt($("#mes2 option:selected").get(0).value,10) + '-' + parseInt($("#dia2 option:selected").text(),10);
		var varDateWhen 	= $("#dateWhen option:selected").get(0).value;
		today = new Date();
		var varDateToday 	= today.getFullYear() + '-' + parseInt(today.getMonth()+1,10) + '-' + parseInt(today.getDate(),10);
		var cuando 			= $("#formulario-avanzado [name=cuando]:checked");
		var keyword			= $("#formulario-avanzado [name=keyword]:text").get(0).value.replace(/ /gi,'-');
		var donde 			= $("#formulario-avanzado [name=donde]:checked");
		var modulo = null;
		if (donde.size() > 0){
			if (donde.get(0).value == 'los40')
				modulo 			= $("#formulario-avanzado [name=buscador_modulo] option:selected").get(0).value;
			else if (donde.get(0).value == 'google')
				modulo 			= 'google';
			}
		var buscador		= $("#formulario-avanzado input[name=buscador]:hidden").get(0).value
		
		if (cuando.size() > 0)
			cuando = cuando.get(0).value;
		
		if  (cuando == 'date' && !(varDateFrom <= varDateTo)){
			error = true;
			strAviso += "<p>- La fecha de comienzo debe ser menor que la de finalización</p>";
			}

		if (validaKeyword(keyword) != 0){
			error = true;
			strAviso += "<p>- Debe rellenar el campo a buscar correctamente</p>"
		}
			
		if (error){
			aviso(strAviso);
			return false;
		}
		


		var hrefParams = 'buscador_modulo='+modulo
			+'&keyword='+keyword
			+'&buscador='+buscador;
		if ($("#formulario-avanzado input[name=cuando]:checked").size() > 0){
			if ($("#formulario-avanzado input[name=cuando]:checked").get(0).value == 'date'){
				hrefParams += '&between='+varDateFrom
					+'&betweenAnd='+varDateTo;
				}
			else if ($("#formulario-avanzado input[name=cuando]:checked").get(0).value == 'anio'){
				hrefParams += '&between='+varDateWhen
					+'&betweenAnd='+varDateToday;
				}
			}
				
		rules_animacion_espera.show('cargando');
		this.action = urlActionForm+keyword+'/'+getParamModuloBuscador(modulo);
		this.method = 'post';
		return true;
							
				
		if ($("#buscadorResul").size() > 0){
			
			hrefServer = '/modulo/index.html';
			var aP = 'modulo=BUSBuscadorResultado&params='+escape(hrefParams);
			$.ajax({
				url: hrefServer,
				data: aP,
				dataType: "html",
				beforeSend: rules_animacion_espera.show,
				success:function(data){
					$("#buscadorResul").replaceWith(data)
					rules_buscador_resultado.eventoContexto($("#buscadorResul"));
					rules_paginacion_buscador.eventoContexto($("#contentBus"));
					},
				complete: rules_animacion_espera.hide
			});
			
			return false;
			}
		
		return true;
	}
	
	
}
	
/**
*Funciones genéricas
**/
	
	
function getParamModuloBuscador(modulo){
	switch(modulo){
		case 'modulo_artistas':
			return 'artistas';
		case 'modulo_albumes':
			return 'album';
		case 'modulo_canciones':
			return 'canciones';
		case 'modulo_videos':
			return 'videos';
		case 'modulo_actualidad':
			return 'actualidad';
		case 'modulo_agenda':
			return 'agenda';
		case 'modulo_google':
			return 'google';
		default : 
			return '';
	}
}
	
function getParamUrlEscape(hrefUrl, param){
	hrefParam  = hrefUrl.split(param+'%25253D')[1]
	if (hrefParam == '')
		return '';

	hrefParamValue = hrefParam.split('%252526')[0];
	return hrefParamValue;
}

function setParamUrlEscape(hrefUrl, param, value){
	if (getParamUrlEscape(hrefUrl, param) != ''){
		hrefUrlArray = hrefUrl.split(encode(param)+'%25253D');

		if (hrefUrlArray[1].substr(0,1) == '%252526')
			hrefUrlArray[1] = hrefUrlArray[1].substr(1);
	
		hrefParams = hrefUrlArray[1].substr(hrefUrlArray[1].indexOf('&'));
		
		return hrefUrlArray[0] + param + '=' + value + hrefParams	
	}
	else if (hrefUrl.indexOf('?') < 0)
		return hrefUrl + '?' + param + '=' + value;
	else if (hrefUrl.substr(-1,1) == '&')
		return hrefUrl + param + '=' + value;
	else return hrefUrl + '&' + param + '=' + value;
		

}

function getLastDay(month, year){
	var result;
	switch (month){
		case 'Enero':
		case 'Marzo':
		case 'Mayo':
		case 'Julio':
		case 'Agosto':
		case 'Octubre':
		case 'Diciembre':
				result = 31
			break;
		case 'Febrero':
			if (esBisiesto(year))
				result = 29;
			else result = 28;
			break;
		default :
			result = 30;
			break;
		}
	return result;
	}

function esBisiesto(anio){
	return ((anio % 4 == 0) && ((anio % 100 != 0) || (anio % 400 == 0)));
	}
	

function validaKeyword(keyword){
	var result = 0;
	keyword = $.trim(keyword);
	var regValida = new RegExp("^[a-zA-Záéíóúäëïöü&!0-9.,`'¡¿? \-]+$");
	if (keyword == '')
		result = 2;
	else if (! (regValida.test(keyword)))
		result =  1;
	else result = 0;
	
	return result;
	}
