
function trim(s) {

   // Quita espacios en blanco iniciales y finales de una cadena	
   
   var i=0;
   var v=s;
  
   while (s.charAt(i)==" " && i<s.length)  {
         v = s.substring(i+1,s.length);
         i++; 
   }

   if (v=="") return "";

   s = v;

   i=s.length-1;

   while (i>0 && s.charAt(i)==" ") {
         v = s.substring(0,i);  
         i--; 
   }

   return v;
}

function esEntero(s) {
   return (s.toString().search(/^-?[0-9]+$/) == 0);
}


function sacarEspacios(s) {
	
  // saca espacios en blanco al inicio y final de una cadena 
  // y espacios duplicados en el medio

  var i=0;
  while (i < s.length) {
     if (s.charAt(i)==" ") {
	switch (i) {
	   case 0 :
	      if (s.length==1) { s=""; }
	      else { s = s.substring(1,s.length); }
	      break;
	   default:
	      
              while (s.charAt(i+1)==" ") {
		 s = s.substring(0,i) + s.substring(i+1,s.length);
	      }
              i++;
              break;
        }				 
    } else { i++; }
  }	
	
  if (s.charAt(s.length-1)==" ") 
     s = s.substring(0,s.length-1);
	
  return s;
	
}

function reempStr(s,saca,pone) {
	
	var i=0;
	
	while (i<s.length) {
		if (s.charAt(i)==saca) {
		   s = s.substring(0,i) + pone + s.substring(i+1,s.length);
		   i += pone.length; 
		} 
		i++;
	}
	
	return s;
		   
}

function reempChar(s,saca,pone) {
   // reemplaza en una cadena s el caracter "saca" por "sust"
   
   var pos = s.indexOf(saca);
    
   while (pos > -1) {
   		
      switch (pos) {
   	case 0:
   	  s = pone + s.substring(1,s.length);
   	  break;
   	case s.length-1:
   	  s = s.substring(0,s.length-1) + pone;
   	  break;
   	default:
   	  s = s.substring(0,pos) + pone + s.substring(pos+1,s.length);
   	}
   		
   	pos = s.indexOf(saca);
   }
   
   return s;
   
}

function borrarChar(s,saca) {
   // reemplaza en una cadena s el caracter "saca" por "sust"
   
   var pos = s.indexOf(saca);
    
   while (pos > -1) {
   		
     switch (pos) {
   	case 0:
           s = s.substring(1,s.length);
   	   break;
   	case s.length-1:
   	   s = s.substring(0,s.length-1);
   	   break;
   	default:
   	   s = s.substring(0,pos) + s.substring(pos+1,s.length);
   	}
   		
   	pos = s.indexOf(saca);
   }
   
   return s;
   
}

function limpiarCarrito() {

    cnn = crearCnn();
    cnn.onreadystatechange= function () { };
    cnn.open("GET","scripts/lista.php?que=limpiar",true);   
    cnn.send(null);

}
		 
function validar(simple) {

  var aviso = "Error al ingresar la expresión de búsqueda";

  var frm= document.getElementById("frm");

  var idioma = frm.idioma.value;

  if (idioma=="en") {
  	  aviso = "There is no search expression defined";
  }	  

  // Valida que se haya ingresado algún valor al formulario de búsqueda
  var s = "";
  var letras = new Array(":","+","*","^","+");

  if (simple==true) { 

      var s = sacarEspacios(frm.texto.value);
 
      for (j=0; j<letras.length;j++) 
          s = borrarChar(s,letras[j]);
  
      if (s == "") {
        alert(aviso); 
        frm.texto.value="";
        frm.texto.focus();
     } else {
        limpiarCarrito();
        frm.expresion.value = armar_texto(true);
        frm.submit();
     }	 

  } else {

      // toma los elementos los valores de los campos del formulario y los guarda
      // en un arreglo
      var flag = false;
  
      for (var i=0 ; i<frm.texto.length; i++) {
         s = sacarEspacios(frm.texto[i].value);
         s = borrarChar(s,":");
         s = borrarChar(s,"+");
         s = borrarChar(s,"*");
         s = borrarChar(s,";");

         if (s!="") flag=true;
      }

      if (flag && (frm.fechaDesde.value!="" || frm.fechaHasta.value!="")) {
             flag = validarFecha();
      }

 
      if (flag) {
          limpiarCarrito();
 	  frm.expresion.value=armar_texto(false);
          frm.submit();

      } else {

            alert(aviso); 
            frm.texto[0].focus();
            return false;

      }

  }

}

function validarFecha() {
    // función invocada desde le formulario de búsquedas avanzdas para 
    // buscar un rango de fechas
    
    var desde = frm.fechaDesde.value;
    var hasta = frm.fechaHasta.value;
    var idioma = frm.idioma.value;	
      
    if (trim(desde)=="") { 
       if (idioma=="en") alert("There is no inicial year defined");
       else alert("No ha definido ninguna año inicial"); 
       return false; 
    }
	
    if (!esEntero(desde)) { 
	if (idioma=="en") alert("The expression inserted is not a number");
	else alert("El valor ingresado para el año inicial no es un número"); 
	return false;
    }
	
	
    if (desde<1800) {
	if (idioma=="en") alert("Inicial year incorrect");
	else alert("El valor ingresado para el año inicial no es válido");
	return false;
    }
	

    if (trim(hasta)!="") {

       if (!esEntero(hasta)) { 
          if (idioma=="en") alert("The expression inserted is not a number");
	  else alert("El valor ingresado para el año inicial no es un número"); 
	  return false;
       }


       if (hasta<desde) {
         if (idioma=="en") alert("The final year is greater than the inicial one");
	 else alert("El año inicial es mayor que el año final");
	 return false;
       }

    }
			 
    return true;
}


function armarExprFecha() {

    desde = frm.fechaDesde.value;
    hasta = frm.fechaHasta.value;

    var anio=desde;

    if (trim(hasta)=="" || desde==hasta) return "OP:AND;FC:"+desde+";"; 
	
    var s="";
    i=1;

    while (anio<hasta && i < 10) {
   
        s+=anio.toString()+"+";
        anio++;i++;
    }
	
    s += anio;
   
    s ="OP:AND;FC:("+s+");";
    return s;

}



function armar_texto(simple) {
  
   var s = "";
   var texto="";         

   // formulario de búsqueda simple     
   if (simple) {

     s = frm.campo.value + ":" + frm.texto.value + ";";
	 
   } else {
       		 
       for (var i=0; i< frm.texto.length; i++) {
      	   texto = trim(frm.texto[i].value);
	   texto = borrarChar(texto,";");
           texto = borrarChar(texto,":");
	   texto = borrarChar(texto,"*");
	   texto = borrarChar(texto,"*");

	   if (texto != "") {
	      s += frm.campo[i].value + ":" + texto + ";";
	      if (i < frm.oper.length) {
                  for (j=i+1 ; j<frm.texto.length; j++) {
                    if (trim(frm.texto[j].value)!="") { 
                       s += "OP:" + frm.oper[i].value + ";";
                       break;
		    }   	
                  }  
               }
	   }
       }
			        		 

       if (trim(frm.fechaDesde.value)!="") {
           s += armarExprFecha();
       }

    }

    for (var i=0 ; i < frm.tipo.length; i++) 
	if (frm.tipo[i].checked) break;

    s += "TP:" + frm.tipo[i].value; 
	 
    return s; 

}
                                                       
function mostrarAyuda() {

   var frm = document.getElementById("frm");
   var idioma = frm.idioma.value;

   var texto = "";
   var ayuda = document.getElementById("textoAyuda");
   var titulo = document.getElementById("titAyuda");
     
   if (ayuda.style.display=="block") {
      ayuda.style.display="none";

      if (idioma=="en") texto = "[Search tips]"; else texto = "[Sugerencias de búsqueda]";
      titulo.firstChild.nodeValue= texto;
   } else {	    
      ayuda.style.display="block";

      if (idioma=="en") texto = "[Hide]"; else texto = "[Ocultar]";
      titulo.firstChild.nodeValue=texto;
   }
}

function iniciarEventos() {

 var elem = document.getElementById("linkAutor");
 if (elem!=null) agregarEvento(elem,"click",mostrarDetalleAutor)

 elem = document.getElementById("linkDetalle");
 if (elem!=null) agregarEvento(elem,"click",mostrarDetalle);

 elem = document.getElementById("titAyuda");
 agregarEvento(elem,"click",mostrarAyuda);   

 elem = document.getElementById("campo");
 if (elem!=null) agregarEvento(elem,"change",mostrarSugerencia);

 elem = document.getElementById("indice");
 if (elem!=null) agregarEvento(elem,"click",mostrarIndice); 

 elem = document.getElementById("idx1");
 if (elem!=null) agregarEvento(elem,"click",mostrarIndice); 
  
 elem = document.getElementById("idx2");
 if (elem!=null) agregarEvento(elem,"click",mostrarIndice); 

 elem = document.getElementById("idx3");
 if (elem!=null) agregarEvento(elem,"click",mostrarIndice); 



}

function mostrarSugerencia() {

   elem = document.getElementById("campo");

   if (elem==null) return;

   var campo = elem.value;

   var texto = "";

   switch (campo) {
      case "AU":
      case "CO":
          texto = document.getElementById("autor").innerHTML;
          break;
      case "IN":
          texto = document.getElementById("institucion").innerHTML;
          break;
      case "TI":
          texto = document.getElementById("titulo").innerHTML;
          break;
      case "TC":
          texto = document.getElementById("coleccion").innerHTML;
          break;
      case "DE":
          texto = document.getElementById("temas").innerHTML;
          break;
      case "IS":
      case "SN":
          texto = document.getElementById("ISBN").innerHTML;
          break;
      case "ED":
          texto = document.getElementById("editorial").innerHTML;
          break;
      case "FC":	
          texto = document.getElementById("anio").innerHTML;
          break;
      default:
          texto = document.getElementById("todo").innerHTML;
   }


   elem = document.getElementById("sugerencia");
   elem.innerHTML = texto;

 

}


function mostrarDetalle() {

   var resumen = document.getElementById("resumen");
   var link = document.getElementById("linkDetalle");
   var frm = document.getElementById("frm");

   var texto="";

   if (detalle.style.display=="block") {
      detalle.style.display="none";

      texto = "[más información]";
      if (frm.idioma.value=="en") texto = "[more information]";      

      link.firstChild.nodeValue= texto;
   
   } else {
     
      detalle.style.display = "block";
      var texto = "[ocultar]"; 
      if (frm.idioma.value=="en") texto = "[hide]";      
      link.firstChild.nodeValue=texto;

   }   

}

function mostrarDetalleAutor() {

   var elem = document.getElementById("avisoAutor");
   var titulo = document.getElementById("linkAutor");
   var frm = document.getElementById("frm");
   var texto ="";

   if (elem.style.display == "block") {
       elem.style.display = "none";

       texto = "Si ud. es autor/editor...";
       if (frm.idioma.value=="en") texto = "For authors/publishers..."; 
       titulo.innerHTML=texto;
   } else {
       elem.style.display = "block";

       texto = "[ocultar]";
       if (frm.idioma.value=="en") texto = "[ocultar]"; 
       titulo.innerHTML=texto;
   }

}
 

function agregarTextos() {

// agrega un tool tip text a los textos de la página

var elem = document.getElementById("idxautor");
if (elem!=null) elem.setAttribute("title","Índice alfabético de autores");

elem = document.getElementById("idxtema");
if (elem!=null) elem.setAttribute("title","Índice alfabético de temas");

elem = document.getElementById("campo");
if (elem!=null) elem.setAttribute("title","Elija el campo por el que buscar");

elem = document.getElementById("texto");
if (elem !=null) elem.setAttribute("title","Ingrese la expresión de búsqueda");

elem = document.getElementById("sugerencia");
if (elem !=null) elem.setAttribute("title","Sugerencias de búsqueda");

elem = document.getElementById("tipo");
if (elem !=null) elem.setAttribute("title","Tipo de material a buscar");

elem = document.getElementById("linkAutor");
if (elem !=null) elem.setAttribute("title","Haga click para ver datos de contacto");

elem = document.getElementById("titAyuda");
if (elem !=null) elem.setAttribute("title","Haga click para ver la ayuda");

}


function mostrarIndice(evt) {

   var elem;

   document.body.style.cursor="wait";

   var cual=document.getElementById("campo");
   cual = cual.value;

   switch (cual) {
     case "AU":
     case "CO":
        cual = "A";
        break;
     case "ED":
        cual = "E";
        break;
     default:
        cual = "D";
   }

   var param="tipo=" + cual; 

   var estilo = "left=500, top=50, width=350, height=450, resize=1, status=0, menubar=0, scrollbars=0";

   window.open("scripts/indice.php?"+param,"indice",estilo);   

   document.body.style.cursor="auto";


}

function agregarEvento(elemento,evento,funcion) {

if (elemento.addEventListener) {
    elemento.addEventListener(evento,funcion,false);
} else {
    elemento.attachEvent("on"+evento,funcion);
}

}


function crearCnn() {
  var doc = null;

  if (window.ActiveXObject) {
       doc = new ActiveXObject("Microsoft.XMLHTTP");
       return doc;
  } else if (window.XMLHttpRequest) {
       doc = new XMLHttpRequest();
       return doc; 
  } else return doc;

}


