$(document).ready(function(){
	$(".boton_buscador_simple").click(function(){
		var formulario_padre = $(this).closest("form");
		//si estamos en una sección, hago la búsqueda sólo para la sección en la que estamos
		var resultado = location.href.match(/\/seccion\/(\d+)\//);
		if (resultado!=null) formulario_padre.find("input[name='q_seccion']").val(resultado[1]);
		//reviso que el formulario se puede mandar y lo mando
		if (protege_busqueda2(formulario_padre.find("input[name='cadena']").get(0),formulario_padre.find("input[name='tam_vector']").get(0)))
			formulario_padre.submit();
	});	
});

/*ORIGINAL EN : WWW/EDITMAKER/TRATA_ESPECIALES.JS*/
/*VERSIÓN CASTELLANO - 1.0*/
function trataEspeciales(texto,comillas) {
    //ojo:si se modifica, modificar tb el que está en www/busquedas/busqueds.js
    var resul = "";
    for (i=0; i<texto.length; i++) {
			codigo = texto.charCodeAt(i);
			texto_simple = (codigo==10 || codigo==13 || (codigo>=32 && codigo<=33) || (codigo>=35 && codigo<=38) || (codigo>=40 && codigo<=126) || (!comillas && (codigo == 34 || codigo == 39)));
			if (texto_simple) {
				switch (codigo) {
					case 34:
					resul += "\"";
					break;
					case 39:
					resul += "\'";
					break;
					default:
					resul += texto.charAt(i);
					break;
				}
			}
			else {
				resul += "&#" + codigo + ";";
			}
		}
		return resul;
}
/*Revisa que los parámetros pasados a la búsqueda sean correctos.
Parámetros:
- cad_area: Objeto que contiene la cadena
- modo: 1 == por palabras
        2 == por frase completa
- tam_vec: Parámetro de salida: número de palabras en cad_area*/
function protege_busqueda1(cad_area,modo,tam_vec) {
   //Mira que la cadena tenga por lo menos 3 caracteres
   if(cad_area.value.length<3) {
      alert("Cadena no válida. Tamaño mínimo: 3 caracteres.")
      return false
   }
   //Mira que, en caso de haber seleccionado búsqueda por fechas, las fechas sean válidas.
   if(document.opbus.q_edicion[1].checked) {
      if (!fechaOk(document.opbus.fecha1.value)) return false;
      if (!fechaOk(document.opbus.fecha2.value)) return false;
   }
   ok = true
   //Quita palabras comunes si la búsqueda es por palabras
   if(modo[0].checked) //la búsqueda es por palabras
      ok = filtra_palabras0(cad_area)
   else if(modo[1].checked) //la búsqueda es completa
      ok = filtra_palabras1(cad_area)
   if (ok) {
      //Cambia letras con tilde, eñes, ues con diéresis, etc. por su correspondiente código.
      cad_area.value = trataEspeciales(cad_area.value,true)
      //Cuenta cuántos bloques debe procesar.
      cuenta_palabras(cad_area,tam_vec)
   }
   return ok
}
/*Revisa que los parámetros pasados a la búsqueda pequeña sean
correctos. Es una sobrecarga de la función anterior.
Parámetros:
- cad_area: Objeto que contiene la cadena
- tam_vec: Parámetro de salida: número de palabras en cad_area*/
function protege_busqueda2(cad_area,tam_vec) {
   //Mira que la cadena tenga por lo menos 3 caracteres
   if(cad_area.value.length<3) {
      alert("Cadena no válida. Tamaño mínimo: 3 caracteres.")
      return false
   }
   ok = true
   //Quita palabras comunes si la búsqueda es por palabras
   ok = filtra_palabras0(cad_area)
   if (ok) {
      cad_area.value = trataEspeciales(cad_area.value,true)
      cuenta_palabras(cad_area,tam_vec)
   }
   return ok
}

/*Cuenta número de palabras en una cadena , y lo guarda en el objeto
oculto pasado como parámetro.*/
function cuenta_palabras(obj_cadena,obj_hidden) {
   cad = obj_cadena.value
   tam=0
   if (cad.length>0) {
      for (i=0; i<cad.length; i++)
         if (cad.charAt(i) == ' ') tam++
      tam++
   }
   obj_hidden.value = tam
}

/*Elimina palabras comunes de una cadena. Hay que pedir a FAbio (Destak) que nos pase las traducciones de estas palabras para cambiarlas en Destak.
Este fichero se traduce entero y ya está. No se pone la traducción a través de EditMaker.*/
function elimina_palabras_comunes(cad) {
   //Paso todo a minúsculas
   cad = cad.toLowerCase();
   //Quito signos de puntuación
   cad = cad.replace(/,{1,}/g, " ")       //,
   cad = cad.replace(/\.{1,}/g, " ")      //.
   cad = cad.replace(/;{1,}/g, " ")       //;
   cad = cad.replace(/¿{1,}/g, " ")       //¿
   cad = cad.replace(/\?{1,}/g, " ")      //?
   cad = cad.replace(/\*{1,}/g, " ")      //asterisco
   cad = cad.replace(/\+{1,}/g, " ")      //+
   cad = cad.replace(/\/{1,}/g, " ")      //barra

   //Quito espacios blancos innecesarios, usando una expresión regular
   cad = cad.replace(/\s{2,}/g, " ") //Adaptado de: http://www.devguru.com/Technologies/ecmascript/quickref/regexp_special_characters.html
   cad = cad.replace(/^\s/,"") //quito primer espacio blanco si lo hay
   cad = cad.replace(/\s$/,"") //quito último espacio blanco si lo hay

   cad = " " + cad + " "
   //Quito palabras comunes
   cad = cad.replace(/\sa\s{1,}/g, " ")       //a
   cad = cad.replace(/\sal\s{1,}/g, " ")      //al
   cad = cad.replace(/\sante\s{1,}/g, " ")    //ante
   cad = cad.replace(/\sademas\s{1,}/g, " ")  //ademas
   cad = cad.replace(/\sademás\s{1,}/g, " ")  //además
   cad = cad.replace(/\saun\s{1,}/g, " ")     //aun
   cad = cad.replace(/\saún\s{1,}/g, " ")     //aún
   cad = cad.replace(/\scabe\s{1,}/g, " ")    //cabe
   cad = cad.replace(/\scada\s{1,}/g, " ")    //cada
   cad = cad.replace(/\scomo\s{1,}/g, " ")    //como
   cad = cad.replace(/\scómo\s{1,}/g, " ")    //cómo
   cad = cad.replace(/\scon\s{1,}/g, " ")     //con
   cad = cad.replace(/\scual\s{1,}/g, " ")    //cual
   cad = cad.replace(/\scuando\s{1,}/g, " ")  //cuando
   cad = cad.replace(/\scuándo\s{1,}/g, " ")  //cuándo
   cad = cad.replace(/\sde\s{1,}/g, " ")      //de
   cad = cad.replace(/\sdel\s{1,}/g, " ")     //del
   cad = cad.replace(/\sdesde\s{1,}/g, " ")   //desde
   cad = cad.replace(/\sdonde\s{1,}/g, " ")   //donde
   cad = cad.replace(/\sdónde\s{1,}/g, " ")   //dónde
   cad = cad.replace(/\se\s{1,}/g, " ")       //e
   cad = cad.replace(/\sel\s{1,}/g, " ")      //el
   cad = cad.replace(/\sella\s{1,}/g, " ")    //ella
   cad = cad.replace(/\sellos\s{1,}/g, " ")   //ellos
   cad = cad.replace(/\sél\s{1,}/g, " ")      //él
   cad = cad.replace(/\sen\s{1,}/g, " ")      //en
   cad = cad.replace(/\ses\s{1,}/g, " ")      //es
   cad = cad.replace(/\sesa\s{1,}/g, " ")     //esa
   cad = cad.replace(/\sese\s{1,}/g, " ")     //ese
   cad = cad.replace(/\sesta\s{1,}/g, " ")    //esta
   cad = cad.replace(/\sestá\s{1,}/g, " ")    //está
   cad = cad.replace(/\sestas\s{1,}/g, " ")   //estas
   cad = cad.replace(/\sestás\s{1,}/g, " ")   //estás
   cad = cad.replace(/\seste\s{1,}/g, " ")    //este
   cad = cad.replace(/\sestés\s{1,}/g, " ")   //estés
   cad = cad.replace(/\sesto\s{1,}/g, " ")    //esto
   cad = cad.replace(/\sestos\s{1,}/g, " ")   //estos
   cad = cad.replace(/\sfue\s{1,}/g, " ")     //fue
   cad = cad.replace(/\sfué\s{1,}/g, " ")     //fué
   cad = cad.replace(/\sha\s{1,}/g, " ")      //ha
   cad = cad.replace(/\shan\s{1,}/g, " ")     //han
   cad = cad.replace(/\shas\s{1,}/g, " ")     //has
   cad = cad.replace(/\shay\s{1,}/g, " ")     //hay
   cad = cad.replace(/\she\s{1,}/g, " ")      //he
   cad = cad.replace(/\shemos\s{1,}/g, " ")   //hemos
   cad = cad.replace(/\sir\s{1,}/g, " ")      //ir
   cad = cad.replace(/\sla\s{1,}/g, " ")      //la
   cad = cad.replace(/\slas\s{1,}/g, " ")     //las
   cad = cad.replace(/\sle\s{1,}/g, " ")      //le
   cad = cad.replace(/\slo\s{1,}/g, " ")      //lo
   cad = cad.replace(/\slos\s{1,}/g, " ")     //los
   cad = cad.replace(/\smas\s{1,}/g, " ")     //mas
   cad = cad.replace(/\smás\s{1,}/g, " ")     //más
   cad = cad.replace(/\sme\s{1,}/g, " ")      //me
   cad = cad.replace(/\smi\s{1,}/g, " ")      //mi
   cad = cad.replace(/\smí\s{1,}/g, " ")      //mí
   cad = cad.replace(/\sni\s{1,}/g, " ")      //ni
   cad = cad.replace(/\sno\s{1,}/g, " ")      //no
   cad = cad.replace(/\spara\s{1,}/g, " ")    //para
   cad = cad.replace(/\spero\s{1,}/g, " ")    //pero
   cad = cad.replace(/\spon\s{1,}/g, " ")     //pon
   cad = cad.replace(/\spor\s{1,}/g, " ")     //por
   cad = cad.replace(/\sporque\s{1,}/g, " ")  //porque
   cad = cad.replace(/\sque\s{1,}/g, " ")     //que
   cad = cad.replace(/\squé\s{1,}/g, " ")     //qué
   cad = cad.replace(/\squien\s{1,}/g, " ")   //quien
   cad = cad.replace(/\squién\s{1,}/g, " ")   //quién
   cad = cad.replace(/\sse\s{1,}/g, " ")      //se
   cad = cad.replace(/\ssé\s{1,}/g, " ")      //sé
   cad = cad.replace(/\sser\s{1,}/g, " ")     //ser
   cad = cad.replace(/\ssi\s{1,}/g, " ")      //si
   cad = cad.replace(/\ssí\s{1,}/g, " ")      //sí
   cad = cad.replace(/\ssu\s{1,}/g, " ")      //su
   cad = cad.replace(/\ssus\s{1,}/g, " ")     //sus
   cad = cad.replace(/\sun\s{1,}/g, " ")      //un
   cad = cad.replace(/\sson\s{1,}/g, " ")     //son
   cad = cad.replace(/\stanto\s{1,}/g, " ")   //tanto
   cad = cad.replace(/\sten\s{1,}/g, " ")     //ten
   cad = cad.replace(/\stu\s{1,}/g, " ")      //tu
   cad = cad.replace(/\stú\s{1,}/g, " ")      //tú
   cad = cad.replace(/\sun\s{1,}/g, " ")      //un
   cad = cad.replace(/\suna\s{1,}/g, " ")     //una
   cad = cad.replace(/\sva\s{1,}/g, " ")      //va
   cad = cad.replace(/\sy\s{1,}/g, " ")       //y
   cad = cad.replace(/\syo\s{1,}/g, " ")      //yo
   cad = cad.substr(1,cad.length-2) //quito los dos espacios puestos al principio y al final
   return cad
}

/*Filtra búsquedas demasiado costosas y/o maliciosas.
El parámetro txtarea es el objeto "input type=text" que contiene
la cadena de búsqueda.*/
function filtra_palabras0(txtarea) {
   cad = elimina_palabras_comunes(txtarea.value)
   txtarea.value=cad
   //mira si después del filtrado queda alguna palabra
   if (cad.length==0) {
      alert("El filtrado de palabras comunes eliminó todas las palabras.")
      return false
   }
   //cuenta el número de palabras que quedan
   trozos = cad.split(" ")
   if (trozos.length > 5) {
      alert("Demasiadas palabras. Intenta acotar tu búsqueda")
      return false
   }
   return true
}

/*Filtra búsquedas demasiado costosas y/o maliciosas si la búsqueda
es completa.
El parámetro txtarea es el objeto "input type=text" que contiene
la cadena de búsqueda.*/
function filtra_palabras1(txtarea) {
   cad = txtarea.value
   //Paso todo a minúsculas
   //Quito signos de puntuación
   cad = cad.replace(/,{1,}/g, " ")       //,
   cad = cad.replace(/\.{1,}/g, " ")      //.
   cad = cad.replace(/;{1,}/g, " ")       //;
   cad = cad.replace(/¿{1,}/g, " ")       //¿
   cad = cad.replace(/\?{1,}/g, " ")      //?
   cad = cad.replace(/\*{1,}/g, " ")      //asterisco
   cad = cad.replace(/\+{1,}/g, " ")      //+
   cad = cad.replace(/-{1,}/g, " ")       //-
   cad = cad.replace(/\/{1,}/g, " ")      //barra
   cad = cad.replace(/\"{1,}/g, " ")      //"
   cad = cad.replace(/\'{1,}/g, " ")      //'

   //Quito espacios blancos innecesarios, usando una expresión regular
   cad = cad.replace(/\s{2,}/g, " ") //Adaptado de: http://www.devguru.com/Technologies/ecmascript/quickref/regexp_special_characters.html
   cad = cad.replace(/^\s/,"") //quito primer espacio blanco si lo hay
   cad = cad.replace(/\s$/,"") //quito último espacio blanco si lo hay

   //mira si después del filtrado queda alguna palabra
   if (cad.length<1) {
      alert("El filtrado eliminó todas las palabras.")
      return false
   }

   txtarea.value = cad
   return true
}

function fechaOk(f){
   if(f.length<8 || f.length>10) { alert("La fecha no tiene una longitud correcta");return false; }
   //Expresión regular que reconoce cualquier caracter que no sea un dígito o "/"
   rexp = /[^\d\/]/gi
   if(rexp.test(f)) { alert("La fecha contiene caracteres extraños");return false; }
   partes = f.split("/")
   dia = parseInt(partes[0],10);
   mes = parseInt(partes[1],10);
   ano = parseInt(partes[2],10);
   if (dia<1 || dia>31) { alert("Día inválido (" + dia + ")"); return false; }
   if (mes<1 || mes>12) { alert("Mes inválido (" + mes + ")"); return false; }
   if (ano<1700 || ano>2100) { alert("Año inválido (" + ano + ")"); return false; }
   return true;
}
