
// Cargar formulario de búsqueda adecuado según de cual vengan
function cargar_formulario_busqueda(vista)
{
    // Comprobar que exista la variable con typeof 
    if (typeof(parent.formularioBusqueda)=="undefined")
    {
      // Cargar el formulario de búsqueda sencilla en función de la vista
      // consultada. Si no se detecta mandarlo a la página principal
      switch(vista)
      {
        case "FRAGMENTOS_CAS":
          this.location=dirraiz+'/formulario.htm'
          break
        case "FRAGMENTOS_VAL":
          this.location=dirraiz+'/formulari.htm'
          break
        default:
          this.location=dirraiz
          break
      }
    }
    else
    {
        // Comprobar que exista la variable con typeof 
        formulario=parent.formularioBusqueda
        if (formulario=="FORMULARIO")
            this.location=dirraiz+'/formulario.htm'
        else if (formulario=="FORMULARI")
            this.location=dirraiz+'/formulari.htm'
        else if (formulario=="FRAGMENTOS_CAS_AVANZADO")
            this.location=dirdbdocs+'/BASIS/'+baseDeDatos+'/WEB/FRAGMENTOS_CAS_AVANZADO/SF'
        else if (formulario=="FRAGMENTOS_VAL_AVANZADO")
            this.location=dirdbdocs+'/BASIS/'+baseDeDatos+'/WEB/FRAGMENTOS_VAL_AVANZADO/SF'
        else if (formulario=="FRAGMENTOS_CAS_AVANZA2")
            this.location=dirdbdocs+'/BASIS/'+baseDeDatos+'/WEB/FRAGMENTOS_CAS_AVANZA2/SF'
        else if (formulario=="FRAGMENTOS_VAL_AVANZA2")
            this.location=dirdbdocs+'/BASIS/'+baseDeDatos+'/WEB/FRAGMENTOS_VAL_AVANZA2/SF'
        else if (top.idioma=="CASTELLANO")
            this.location=dirraiz+'/formulario.htm'
        else
            this.location=dirraiz+'/formulari.htm'
    }
}

// Devuelve el tipo de búsqueda de la que se ha partido en
// función del formulario de búsqueda. Devuelve:
// S  --> busqueda sencilla
// A  --> búsqueda avanzada
// R  --> acotar búsqueda
// N  --> no definido
function tipoBusqueda()
{
    // Comprobar que exista la variable con typeof 
    if (typeof(parent.formularioBusqueda)=="undefined")
      return "N"
    
    formulario=parent.formularioBusqueda
    switch(formulario)
    {
      case "FORMULARIO":
      case "FORMULARI":
        return "S"
        break
      case "FRAGMENTOS_CAS_AVANZADO":
      case "FRAGMENTOS_VAL_AVANZADO":
        return "A"
        break
      case "FRAGMENTOS_CAS_AVANZA2":
      case "FRAGMENTOS_VAL_AVANZA2":
        return "R"
        break
      default:
        return "N"
    }
}

// Devuelve el nombre del formulario de búsquda en el
// otro idioma
function formularioEnOtroIdioma()
{
    // Comprobar que exista la variable con typeof 
    if (typeof(parent.formularioBusqueda)=="undefined")
      return ""
    
    formulario=parent.formularioBusqueda
    switch(formulario)
    {
      case "FORMULARIO":
        return "FORMULARI"
        break
      case "FORMULARI":
        return "FORMULARIO"
        break
      case "FRAGMENTOS_CAS_AVANZADO":
        return "FRAGMENTOS_VAL_AVANZADO"
        break
      case "FRAGMENTOS_VAL_AVANZADO":
        return "FRAGMENTOS_CAS_AVANZADO"
        break
      case "FRAGMENTOS_CAS_AVANZA2":
        return "FRAGMENTOS_VAL_AVANZA2"
        break
      case "FRAGMENTOS_VAL_AVANZA2":
        return "FRAGMENTOS_CAS_AVANZA2"
        break
      default:
        return ""
    }
}

// Cargar formulario de búsqueda adecuado en el otro idioma
function cargar_formulario_busqueda_otro_idioma(vista)
{
    // Comprobar que exista la variable con typeof 
    if (typeof(parent.formularioBusqueda)=="undefined")
    {
      // Cargar el formulario de búsqueda sencilla en función de la vista
      // consultada. Si no se detecta mandarlo a la página principal
      switch(vista)
      {
        case "FRAGMENTOS_CAS":
          top.location=dirraiz+'/defaultv.htm?URL='+dirraiz+'/formulari.htm' 
          break
        case "FRAGMENTOS_VAL":
          top.location=dirraiz+'/default.htm?URL='+dirraiz+'/formulario.htm'
          break
        default:
          this.location=dirraiz
          break
      }
    }
    else
    {
        // Comprobar que exista la variable con typeof 
        formulario=parent.formularioBusqueda
        if (formulario=="FORMULARIO")
            top.location=dirraiz+'/defaultv.htm?URL='+dirraiz+'/formulari.htm'
        else if (formulario=="FORMULARI")
            top.location=dirraiz+'/default.htm?URL='+dirraiz+'/formulario.htm'
        else if (formulario=="FRAGMENTOS_CAS_AVANZADO")
            top.location=dirraiz+'/defaultv.htm?URL='+dirdbdocs+'/BASIS/'+baseDeDatos+'/WEB/FRAGMENTOS_VAL_AVANZADO/SF'
        else if (formulario=="FRAGMENTOS_VAL_AVANZADO")
            top.location=dirraiz+'/default.htm?URL='+dirdbdocs+'/BASIS/'+baseDeDatos+'/WEB/FRAGMENTOS_CAS_AVANZADO/SF'
        else if (formulario=="FRAGMENTOS_CAS_AVANZA2")
            top.location=dirraiz+'/defaultv.htm?URL='+dirdbdocs+'/BASIS/'+baseDeDatos+'/WEB/FRAGMENTOS_VAL_AVANZA2/SF'
        else if (formulario=="FRAGMENTOS_VAL_AVANZA2")
            top.location=dirraiz+'/default.htm?URL='+dirdbdocs+'/BASIS/'+baseDeDatos+'/WEB/FRAGMENTOS_CAS_AVANZA2/SF'
        else if (top.idioma=="CASTELLANO")
            top.location=dirraiz+'/defaultv.htm?URL='+dirraiz+'/formulari.htm'
        else
            top.location=dirraiz+'/default.htm?URL='+dirraiz+'/formulario.htm'
    }
}

// Establece, en función del nombre del campo que le pasan como argumento,
// que se debe cargar en la pantalla de información del campo si el Tesauro,
// el índice o únicamente la ayuda del campo
function establecerParametrosInfoCampo(campo,etiqueta,idioma,vista)
{
    var establecerParametrosInfoCampo
    // Hacer un case para tratar cada caso por separado
    switch(campo)
    {
      // Los casos de campos que tienen tesauro los trato juntos
      case "DESCRIPTOR_EUROVOC":
      case "DESCRIPTOR_PROPIO":
      case "DESCRIPTOR_TOPONIMICO":
      case "ORADOR_NORMALIZADO":
      case "COMISION":
        establecerParametrosInfoCampo="TESAURO=SI&INDICE=SI&CAMPO="+campo
        break
      default:
        establecerParametrosInfoCampo="TESAURO=NO&INDICE=SI&CAMPO="+campo
    }
	etiqueta=etiqueta.replace(/ /g, "+")
	establecerParametrosInfoCampo+="&ETIQUETA="+etiqueta+"&IDIOMA="+idioma+"&VISTA="+vista
            
    return establecerParametrosInfoCampo
}
function QuitarBlancos(Cadena)
{
        if (Cadena.length==0)
                return ""

        // Buscar primer caracter distinto de blanco
        primerNoBlanco=0
        while(Cadena.charAt(primerNoBlanco)==" " && primerNoBlanco<Cadena.length)
        {
                primerNoBlanco++
        }

        // Buscar último caracter distinto de blanco
        ultimoNoBlanco=Cadena.length-1
        while (Cadena.charAt(ultimoNoBlanco)==" " && ultimoNoBlanco>=0)
        {
                ultimoNoBlanco--
        }

        // Si todos son blancos devolver una cadena vacía
        if (primerNoBlanco>ultimoNoBlanco)
                return ""

        // Obtener la cadena sin espacios al principio y al final
        return Cadena.substring(primerNoBlanco,ultimoNoBlanco+1)
}

// Asignar los códigos escape que corresponden a la coma y el ampersand
var escComa=escape(",");
var escAmpersand=escape("&");

// Si la cadena tiene comillas cambiamos las comas y los ampersands
// que hay dentro de las comillas por sus caracteres de escape y le
// quitamos las comillas
function tratarCadenaConComillas(Cadena)
{
  // Variables auxiliares
  var comillasAbiertas=false
  var i=0
  
  // Variable para el resultado
  var cadenaTratada=""

  // Recorrer toda la cadena
  for(i=0;i<Cadena.length;i++)
  {
	// Conseguir un caracter
	caracter=Cadena.charAt(i)

	// Tratar cada caracter por separado
	switch (caracter)
	{
	  case ',':
	      if (comillasAbiertas)
		    cadenaTratada+=escComa
		  else
		    cadenaTratada+=caracter
		  break
	  case '&':
	      if (comillasAbiertas)
		    cadenaTratada+=escAmpersand
		  else
		    cadenaTratada+=caracter
		  break
	  case '"':
		  if (comillasAbiertas)
		    comillasAbiertas=false
		  else
		    comillasAbiertas=true
		  break
	  default:
		  cadenaTratada+=caracter
	}
  }
  
  // Devolver la cadena que he formado
  return cadenaTratada;
}



function abrirPaginaAyuda(pagina)
{
    var nombreVentana=String("AyudaDSCCV")
    ventanaInfo=window.open(dirraiz+pagina,
                            nombreVentana,"height=500,width=700,scrollbars=yes,resizable=yes")
}


function tratar_condicion(condicion)
{
        // Si no hay valor terminar
        if (condicion.length==0)
                return ""

        // Asignar el valor inicial
        condicionTratada=QuitarBlancos(condicion)

// Si el valor contiene comillas las quitaremos y además
	// sustituiremos las comas y ampersands que estaban entre comillas
	// por sus códigos de caracter
	if (condicionTratada.search(/"/g)!=-1)
		condicionTratada=tratarCadenaConComillas(condicionTratada)

    //Eliminar blancos intermedios entre operadores y palabras
        
        
        if (condicionTratada.search(" ,")!=1)
        {
        bus=condicionTratada.search(" ,")
            while (bus !=-1)
                {
                    condicionTratada=condicionTratada.replace(/ ,/g, ",")
                    bus=condicionTratada.search(" ,")
                }
        }

        if (condicionTratada.search(", ")!=1)
        {
            bus=condicionTratada.search(", ")
            while (bus !=-1)
                {
                    condicionTratada=condicionTratada.replace(/, /g, ",")
                    bus=condicionTratada.search(", ")
                }
        }
        
        if (condicionTratada.search(" &")!=1)
        {
            bus=condicionTratada.search(" &")
            while (bus !=-1)
                {
                    condicionTratada=condicionTratada.replace(/ &/g, "&")
                    bus=condicionTratada.search(" &")
                }
        }

        if (condicionTratada.search("& ")!=1)
        {
            bus=condicionTratada.search("& ")
            while (bus !=-1)
                {
                    condicionTratada=condicionTratada.replace(/& /g, "&")
                    bus=condicionTratada.search("& ")
                }
        }
        
        if (condicionTratada.search(" :")!=1)
        {
        bus=condicionTratada.search(" :")
            while (bus !=-1)
                {
                    condicionTratada=condicionTratada.replace(/ :/g, ":")
                    bus=condicionTratada.search(" :")
                }
        }

        if (condicionTratada.search(": ")!=1)
        {
            bus=condicionTratada.search(": ")
            while (bus !=-1)
                {
                    condicionTratada=condicionTratada.replace(/: /g, ":")
                    bus=condicionTratada.search(": ")
                }
        }
        
        // Entrecomillar cada condición
        condicionTratada=condicionTratada.replace(/ /g, "+");
        condicionTratada=condicionTratada.replace(/,/g, "\",\"");
        condicionTratada=condicionTratada.replace(/&/g, "\"&\"");
        condicionTratada=condicionTratada.replace(/:/g, "\":\"");
        
        // Recuperar los caracteres especiales para evitar que el "escape"
    // que se aplica posteriormente cause un error al convertir por
    // ejemplo el %2C en %252C (pone el caracter escape del %)
    condicionTratada=unescape(condicionTratada)

    // Devolver la condición tratada
    return "\""+escape(condicionTratada)+"\""
    //  return "\""+condicionTratada+"\""
}


//Las tres funciones siguientes cambian la imagen de restringir busqueda al pasar el cursor por encima

function MM_preloadImages() { //v2.0
  if (document.images) {
    var imgFiles = MM_preloadImages.arguments;
    if (document.preloadArray==null) document.preloadArray = new Array();
    var i = document.preloadArray.length;
    with (document) for (var j=0; j<imgFiles.length; j++) if (imgFiles[j].charAt(0)!="#"){
      preloadArray[i] = new Image;
      preloadArray[i++].src = imgFiles[j];
  } }
}

function MM_swapImgRestore() { //v2.0
  if (document.MM_swapImgData != null)
    for (var i=0; i<(document.MM_swapImgData.length-1); i+=2)
      document.MM_swapImgData[i].src = document.MM_swapImgData[i+1];
}

function MM_swapImage() { //v2.0
  var i,j=0,objStr,obj,swapArray=new Array,oldArray=document.MM_swapImgData;
  for (i=0; i < (MM_swapImage.arguments.length-2); i+=3) {
    objStr = MM_swapImage.arguments[(navigator.appName == 'Netscape')?i:i+1];
    if ((objStr.indexOf('document.layers[')==0 && document.layers==null) ||
        (objStr.indexOf('document.all[')   ==0 && document.all   ==null))
      objStr = 'document'+objStr.substring(objStr.lastIndexOf('.'),objStr.length);
    obj = eval(objStr);
    if (obj != null) {
      swapArray[j++] = obj;
      swapArray[j++] = (oldArray==null || oldArray[j-1]!=obj)?obj.src:oldArray[j];
      obj.src = MM_swapImage.arguments[i+2];
  } }
  document.MM_swapImgData = swapArray; //used for restore
}
