
 /* CONSTANTES REPRESENTANDO CARACTERES */
	var BLANK 				= "";
	var SEPARATOR 			= "/";
	var SEPARATOR_ESCAPED	= "%252F";
 /* CLAVE PARA RECUPERAR EL CONTEXTO */
	var CONTEXT_URL			= "rootUrl";
 /* CONSTANTES REPRESENTANDO VALORES DE LA INFORMACION DE CADA MAPEO */
	var ANY 				= "any";
	var ORDER				= "order";
	var DEFAULT_VALUE 		= "defaultValue";
	var INPUT_TYPE_TEXT 	= "text";
	var INPUT_TYPE_CHECKBOX = "checkbox";
	var INPUT_TYPE_SELECT	= "select";
	var INPUT_SPACE_BEFORE = " ";
	var INPUT_SPACE_AFTER = "_";
	
/* ********************************************** */
/* ***** INICIO CODIGO GENERADO NO MODIFICAR **** */
/* ********************************************** */

	var map = {"rootUrl":"/buscador-efm/buscar/", "termino":{"order":"1", "defaultValue":"termino_any"}, "start":{"order":"7", "defaultValue":"any"}, "tipoContenido":{"order":"5", "defaultValue":"tipo_any"}, "date2":{"order":"3", "defaultValue":"fecha_hasta_any"}, "sectionRoot":{"order":"4", "defaultValue":"seccion_any"}, "date1":{"order":"2", "defaultValue":"fecha_desde_any"}, "sitesearch":{"order":"6", "defaultValue":"site_any"}, "fields":["termino", "date1", "date2", "sectionRoot", "tipoContenido", "sitesearch", "start"]};
	
/* ********************************************** */
/* ******* FIN CODIGO GENERADO NO MODIFICAR ***** */
/* ********************************************** */
	
  /*
   * Esta funcion recoge todos los valores de los campos del formulario
   * y segun un mapa que se genera en el servidor mapea los parametros
   * del formulario y sus valores a una url. */	
	function submitQuery(target){
		var friendlyUrl = map[CONTEXT_URL];
		var formulario = "form#"+target.id;
		var campos = map['fields'];
		$(campos).each(function(index,value){
			var nameCampo = formulario +" :input[name='"+value+"']";
			var valorCampo = "";
			if ($(nameCampo).attr("type") == 'text'){
				valorCampo = $(nameCampo).val();
				if (!value.startsWith("date") && isBlank(valorCampo)){
					valorCampo = $(nameCampo).attr("defaultValue");
				}
			} else {
				valorCampo = $(nameCampo).val();
			}
		 /* Si el campo no tiene valor se pondra como valor el valor por defecto en el 
		  * mapeo generado. 
		  * En caso de que tenga valor se limpiaran aquellos caracteres no deseados */
			var informacionCampo = map[value];			 
			if (!isBlank(valorCampo)){
				var valorCampoLimpio = startsWith(value,"date") ? 
						procesarFechasBeforeSend(valorCampo) : procesarTerminoBeforeSend(valorCampo);	
				var valorPrefijo = informacionCampo[DEFAULT_VALUE].replace(ANY,BLANK);
				friendlyUrl += (valorPrefijo ? valorPrefijo : BLANK) + valorCampoLimpio + SEPARATOR;
			} else {
				friendlyUrl += informacionCampo[DEFAULT_VALUE] + SEPARATOR;
			}
		});
		$("form#friendly").attr("action",friendlyUrl);
		$("form#friendly").submit();
	}
	
	String.prototype.startsWith = function(str){return (this.match("^"+str)==str)}
	
	/*
	 * Esta funcion realiza las conversiones necesarias para que el termino se envie correctamente
	*/
	function procesarTerminoBeforeSend(termino){
     /* Sustituimos los separadores por vacios */
		var valorFinal = replaceAll(termino, SEPARATOR, SEPARATOR_ESCAPED);
	 /* Sustituimos los espacios por + */
		valorFinal = replaceAll(valorFinal,INPUT_SPACE_BEFORE,INPUT_SPACE_AFTER);
	 /* Finalmente devolvemos el termino tratado */
		return valorFinal;
	}
	
	/*
	 * Esta funcion realiza las conversiones necesarias para que las fechas se envien correctamente
	*/
	function procesarFechasBeforeSend(termino){
     /* Sustituimos los separadores por vacios */
		var valorFinal = replaceAll(termino, SEPARATOR, BLANK);
	 /* Sustituimos los espacios por + */
		valorFinal = replaceAll(valorFinal,INPUT_SPACE_BEFORE,INPUT_SPACE_AFTER);
	 /* Finalmente devolvemos el termino tratado */
		return valorFinal;
	}	
	
 /* Funcion de utilidad para los valores vacios de los campos */
	function isBlank(valor){
		return !valor || valor == BLANK;
	}
	
   /*
    * Esta funcion reemplaza una cadena de texto por otra 
    * */
	function replaceAll( text, busca, reemplaza ){
		while (text.toString().indexOf(busca) != -1){
			text = text.toString().replace(busca,reemplaza);
		}
		return text;
	}
	
/* Funcion para saber si la cadena que se pasa como segundo parametro es el inicio del primer parametro */
	function startsWith (parent, str){
	    return (parent.indexOf(str) === 0);
	}

