//=========================================
// FUNCIONES JAVASCRIPT DEL PROYECTO OCENET
//=========================================

// Funcion que se ejecuta cuando el usuario sale de la aplicacion cerrando
// la ventana del navegador

function ExitOcenet() {
    window.status = "";
    top.frames['mainFrame'].location.href = "exit.do?welcome=false";
    window.status = "";
}

//-----------------------
// Funciones para arboles
//-----------------------

// Busqueda en arbol.

function OCNTreeSearch(categoria, descripcion) {
    var re=/.Root/gi;
    if((categoria != null) && (categoria.length > 0)) {
        // Se ha especificado una categoria de busqueda.
        document.arbolForm.cat.value = categoria;
        document.arbolForm.categoria.value = categoria.replace(re, "*");
        if(document.arbolForm['categoria_display']) {
            document.arbolForm.categoria_display.value = descripcion;
        }
        OCNSetQueryDesc(document.arbolForm);
        document.arbolForm.submit();
    }
    else {
        // No se ha especificado ninguna categoria. Se busca en todo el arbol.
        var categorias = getMarkIds(",");
        if((categorias == null) || (categorias.length == 0)) {
            categorias = DVCgetTreeStart();
        }
        document.arbolForm.cat.value = categorias;
        document.arbolForm.categoria.value = categorias.replace(re, "*");
        OCNSetQueryDesc(document.arbolForm);
    }
}

// Funciones que se ejecuta antes de redibujar un arbol.

function OCNBeforeRepaintTree() {
    DVCsetCookie("OCNCookieTreeQuery", document.arbolForm.src_1_query.value);
    if(navigator.appName == "Netscape") {
        top.frames['topFrame'].DVC_REMOVE_SESSION=false;
    }
}

// Funciones que se ejecuta despues de redibujar un arbol.

function OCNAfterRepaintTree() {
    document.arbolForm.src_1_query.value = DVCgetCookie("OCNCookieTreeQuery");
}

//-----------------------------------------------------
// Funciones para la validacion generica de formularios
//-----------------------------------------------------

// Funcion auxiliar util para establecer la descripcion de la query en el
// formulario pasado como parametro.

function OCNSetQueryDesc(f) {
    if(window.top.DVCFormDesc && f.queryDesc) {
        var desc = window.top.DVCFormDesc(f);
        if(desc != null && desc != "") {
            // Si la descripcion contiene saltos de linea, sustituirlos por
            // espacios en blanco.
            var re=/\n/g;
            f.queryDesc.value = desc.replace(re, " ");
        }
        else {
            f.queryDesc.value = "";
        }
    }
}

// Esta funcion valida cualquier formulario asumiendo la existencia de
// una funcion Javascript de validación cuyo nombre ha de ser
// validateNombreFormulario (con la primera letra del nombre del formulario en
// mayúsculas


function DVCSubmitFormValidate(f,msg){
  // Comprobar si todos los campos (modificables por el usuario) estan vacios
   if (!DVCEmptyAll(f)) {
      // f es el objeto form
            var formName=f.name;
            var primeraLetra = formName.substr(0,1).toUpperCase();

            formName=primeraLetra+formName.substr(1);
            var validateResult;
            // LLamada a la funcion Javascript de validacion de Struts
            eval("validateResult=validate" +formName + "(f)");
            if (validateResult) {
                OCNSetQueryDesc(f);
                return true;
            }
   }
   else {// Todos estan vacios
      if (msg!=null) {
          alert(msg);
      }
      else if(DVC_EMPTY_FORM_MESSAGE != null) {
          alert(DVC_EMPTY_FORM_MESSAGE);
      }
      else {
          alert ("Todos los campos están vacíos");
      }
   }
   return false;
}

// Esta será la funcion que se llamará desde los elementos externos al formulario
// en las JSP's (desde los <A href=...>)
function DVCSubmitForm(f,msg){

    if(DVCSubmitFormValidate(f,msg))
      f.submit();
}

//Esta función devuelve true si todos los campos del formulario están vacíos

function DVCEmptyAll(f){

   for (var i=0;i<f.elements.length;i++){
     fieldName=f.elements[i].name;
     fieldValue=f.elements[i].value;
     fieldType=f.elements[i].type;

     if (fieldType != "checkbox" &&
        (fieldName.substr(0,4)=="src_" || fieldName=="login" || fieldName=="password") &&
         fieldValue.length > 0){
       return false;
     }
   }


   return true;
}



//---------------------------------
// Funciones para el envío de formularios al pulsar ENTER
//---------------------------------
/*
function submitIfEnter(e) {

// Controlar el caso correspondiente a navegadores Netscape
 if (navigator.appName == "Netscape"){
    if(e.which==13){
      if (e.target.form != null)
             if (DVCSubmitFormValidate(e.target.form))
                  e.target.form.submit();
    }
 }
 // Controlar el caso correspondiente a navegadores Microsoft
 else {
       if (navigator.appName == "Microsoft Internet Explorer"){
         if (event==null) event=e;

         if(event.keyCode==13){
           if (event.srcElement.form != null)
                if (DVCSubmitFormValidate(event.srcElement.form))
                        event.srcElement.form.submit();
         }
       }
 }
}


// Se ha de capturar el evento si se trata de Netscape
if (navigator.appName == "Netscape")
     document.captureEvents(Event.KEYPRESS);
// Asignar la funcion gestora del evento
document.onkeypress = submitIfEnter;

*/

//-----------------------------------------------------
// Funcion para mostrar la lista de documentos marcados
//-----------------------------------------------------

function MisDocumentos() {
    // Poner frame superior en el estado inicial
    top.frames['topFrame'].limpiaEstado();
    // top.frames['topFrame'].estadoBarra('simple');
    // Mostrar lista de documentos en el frame inferior
    top.frames['mainFrame'].location.href = "showMarkedDocList.do?tipo=&tipo_display=&queryDesc=";
}

//-----------------------------------------------
// Funcion para mostrar el historial de busquedas
//-----------------------------------------------

function Historial() {
    // Poner frame superior en el estado inicial
    top.frames['topFrame'].limpiaEstado();
    // top.frames['topFrame'].estadoBarra('simple');
    // Mostrar historial en el frame inferior
    top.frames['mainFrame'].location.href = "history.do";
}

//--------------------------------------------
// Funcion para buscar documentos relacionados
//--------------------------------------------

function BRelacionados() {
    if(window.name == "bodyFrame") {
        // Estamos en una busqueda por arbol, ya que el documento visualizado
        // esta en el frame de la derecha, llamado bodyFrame.
        // Hay que ejecutar la busqueda de relacionados especifica para arboles.
        document.relacionadosForm.action = "showRelacionadosTree.do";
    }
    OCNSetQueryDesc(document.relacionadosForm);
    document.relacionadosForm.submit();
}

//----------------------------------------------------------
// Funcion para buscar y filtrar por periodos en Cronologias
//----------------------------------------------------------

function periodos(periodo, periodoDesc) {
    document.cronologiaForm.queryname.value=periodo;
    document.cronologiaForm.periodo_display.value=periodoDesc;
    document.cronologiaForm.queryDesc.value = window.top.DVCFormDesc(document.cronologiaForm);
    document.cronologiaForm.submit();
}

//---------------------------------
// Funciones invocadas por las XSLT
//---------------------------------

function BuscaTema (cat){
    var escaped=escape(cat + ".Root");
    window.top.frames['mainFrame'].document.location.href="resetTreeLoaded.do?cat=" + escaped +  '&tipoConsulta=Tematica';
}

function BuscaGaleria (cat){
    var escaped=escape(cat + ".Root");
    window.top.frames['mainFrame'].document.location.href="resetTreeLoaded.do?cat=" + escaped +  '&tipoConsulta=Galeria';
}

function VisualizaDoc(iddoc) {
    document.viewDocumentForm.iddoc.value = iddoc;
    document.viewDocumentForm.submit();
}

function ArchivaDoc() {
    document.markedDocListForm.submit();
}

function Bsimple(texto) {
    document.simpleForm.src_1_query.value = texto;
    OCNSetQueryDesc(document.simpleForm);
    document.simpleForm.submit();
}

function VerSignosCartograficos() {
    window.open('html/signos.html','consulta','width=320,height=480,scrollbars=yes,resizable=yes');
}

//----------------
// Otras funciones
//----------------

function writeMedia(media) {
    if(media != null && media != "") {
        document.write("<img src=\"images/ico-foto.gif\">");
    }
}

function writeScore(score) {
    var IMG_ON  = "<img src=\"images/square-full.gif\" width=\"7\" height=\"7\">";
    var IMG_OFF = "<img src=\"images/square-void.gif\" width=\"7\" height=\"7\">";
    var currentScore = 0.0;
    for(var i=0; i<5; i++) {
        if(currentScore < score) {
            document.write(IMG_ON);
        }
        else {
            document.write(IMG_OFF);
        }
        document.write("&nbsp;");
        currentScore += 0.17;
    }
//    document.write("&nbsp; <span class=\"subtit-result\">[" + score + "]</span>");
}

function PrintDocument() {
    MM_openBrWindow('','printWindow','scrollbars=yes,width=550,height=450');
    document.printDocumentForm.submit();
}

function FormSendDocMail() {
    var formSendDocMailUrl =
            "formSendDocMail.do?" +
            "producto=" + document.printDocumentForm.producto.value +
            "&iddoc=" + document.printDocumentForm.iddoc.value;
    MM_openBrWindow(formSendDocMailUrl,'mailWindow','width=400,height=350');
}

function SendDocMail() {
	if(validateSendDocMailForm(document.sendDocMailForm)) {
		document.sendDocMailForm.submit();
	}
}

function writeError(error,ventana){
	ventana.document.write(error);
}

