﻿


if (document.layers) { // Netscape
    document.captureEvents(Event.MOUSEMOVE);
    document.onmousemove = captureMousePosition;
} else if (document.all) { // Internet Explorer
    document.onmousemove = captureMousePosition;
} else if (document.getElementById) { // Netcsape 6
    document.onmousemove = captureMousePosition;
}
// Global variables
xMousePos = 0; // Horizontal position of the mouse on the screen
yMousePos = 0; // Vertical position of the mouse on the screen
xMousePosMax = 0; // Width of the page
yMousePosMax = 0; // Height of the page



        ///// Obtenido en http://www.ahristov.com/tutorial/JavaScript+Short+Tips/Obtener+la+posici%F3n+absoluta+de+cualquier+elemento+HTML.html
        function getAbsoluteElementPosition(element) {
          if (typeof element == "string")
            element = document.getElementById(element)
            
          if (!element) return { top:0,left:0 };
          
          var y = 0;
          var x = 0;
          while (element.offsetParent) {
            x += element.offsetLeft;
            y += element.offsetTop;
            element = element.offsetParent;
          }
          return {top:y,left:x};
        }
        /////////////////
        
        function getRelativeElementPosition(element) {
          if (typeof element == "string")
            element = document.getElementById(element)
            
          if (!element) return { top:0,left:0 };
          
          var x = element.offsetLeft;
          var y = element.offsetTop;
          return {top:y,left:x};
        }

       

        function capaToCursor(id) {     
            // reseteamos la posicion de la capa
            var capa = document.getElementById(id);
            capa.style.left = "0px";
            capa.style.top = "0px";      
            // obtenemos posicion relativa de la capa que queremos mover
            var posRelativa = getRelativeElementPosition(id);
            //alert('posicion relativa x:'+posRelativa.left+" y "+posRelativa.top);
            // obtenemos la posicion absoluta de la capa que queremos mover
            var posAbsoluta = getAbsoluteElementPosition(id);
            //alert('posicion absoluta x:'+posAbsoluta.left+" y "+posAbsoluta.top);
            // obtenemos la posicion del puntero
            var posMouse = {top:yMousePos, left:xMousePos};
            //alert('posicion mouse x:'+posMouse.left+" y "+posMouse.top);            
            // obtenemos la diferencia entre la posicion absoluta del raton y la del elemento
            var difx = 0;//posMouse.left - posAbsoluta.left;
            var dify = 0;//posMouse.top - posAbsoluta.top;
            // se la sumamos a la posicion relativa
            var nuevaPosRelativa = {top:posRelativa.top+dify, left:posRelativa.left+difx};
            //alert('posicion nueva x:'+nuevaPosRelativa.left+" y "+nuevaPosRelativa.top);                        
            // establecemos la nueva ubicacion
            
            /*console.debug(
            'posAbsoluta(x:'+posAbsoluta.left+';y:'+posAbsoluta.top+')'+
            '  --  posMouse(x:'+posMouse.left+';y:'+posMouse.top+')'+
            '  --  posRelativa(x:'+posRelativa.left+';y:'+posRelativa.top+')');
            */
            var scrollTop=getScrollXY();
            
            capa = document.getElementById(id);
            //capa.style.left = ""+ ( (posMouse.left-10) + scrollTop )  + "px";
            //capa.style.top = ""+ ( (posMouse.top-10) + scrollTop ) + "px";
            if (document.all) {
                capa.style.left = ""+ ( (posMouse.left-10))  + "px";
                capa.style.top = ""+ ( (posMouse.top-10) + scrollTop.top ) + "px";                            
            }else{
                capa.style.left = ""+ ( (posMouse.left-10))  + "px";
                capa.style.top = ""+ ( (posMouse.top-10) /*+ scrollTop*/ ) + "px";            
            }        
        }
        
        function getScrollXY() {
          var scrOfX = 0, scrOfY = 0;
          if( typeof( window.pageYOffset ) == 'number' ) {
            //Netscape compliant
            scrOfY = window.pageYOffset;
            scrOfX = window.pageXOffset;
          } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
            //DOM compliant
            scrOfY = document.body.scrollTop;
            scrOfX = document.body.scrollLeft;
          } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
            //IE6 standards compliant mode
            scrOfY = document.documentElement.scrollTop;
            scrOfX = document.documentElement.scrollLeft;
          }
          return {top:scrOfY, left:scrOfX };
        }
        
        function ocultarCapa2(id) {
            var capa = document.getElementById(id);
            if (capa) {
                capa.style.visibility = "hidden";
                capa.style.display = "none";                          
            }
        }
        
        function desOcultarCapa2(id,tipodisplay) {
            var capa = document.getElementById(id);
            if (capa) {
                capa.style.visibility = "visible";
                //capa.style.overflow = "visible";   
                capa.style.display = tipodisplay;                          
            }        
        }
        
        function ocultarCapa(id) {
            var capa = document.getElementById(id);
            if (capa) {
                capa.style.visibility = "hidden";                               
                //capa.style.overflow = "hidden";   
                capa.style.display = "none";                          
            }
        }
        
        function desOcultarCapa(id) {
            var capa = document.getElementById(id);
            if (capa) {
                capa.style.visibility = "visible";
                //capa.style.overflow = "visible";   
                capa.style.display = "block";                          
            }
        }      

        function sub_cerrarCapa(id, alturainicial) {
            var capa = document.getElementById(id);
            var h = capa.style.height;
            var aux = h.split("px",1);
            var alturaactual = parseInt(aux[0]);
            if (alturaactual!=0) {
                capa.style.height= "" +(alturaactual-100>0?alturaactual-100:0) + "px";
                capa.offsetHorizontal = capa.offsetHorizontal + 10;
                setTimeout("sub_cerrarCapa('"+id+"',"+alturainicial+")",100);
            }else{
                capa.style.height = alturainicial + "px";
                capa.style.visibility = "hidden";
            }
            return false;    
        }
                
        function cerrarCapa(id) {
            var capa;
            capa = document.getElementById(id);
            capa.style.overflow = "hidden";
            var h = capa.style.height;
            var aux = h.split("px",1);
            var alturaactual = parseInt(aux[0]);
            
            var resultado = sub_cerrarCapa(id,alturaactual);
            capa.style.height = alturaactual + "px";
            return resultado;
        }
        
        function isVisible(id) {
            return document.getElementById(id).style.visibility!="hidden";
        }
        
        
        function OcultaCapaSiMouseOut(id,capaPosicionRelativa) {
            if (mouseOutOfDiv(id,capaPosicionRelativa)) {
                ocultarCapa(id);
            }
        }
                     
        function OcultaCapaSiMouseOut_WithTimeOut(id,capaPosicionRelativa){
            if (!capaPosicionRelativa)
                setTimeout("OcultaCapaSiMouseOut('"+id+"');",200);
            else
                setTimeout("OcultaCapaSiMouseOut('"+id+"',"+(capaPosicionRelativa?true:false)+");",200);
        }
    
        //// Tiene un gran error, pero me vale para lo que estoy haciendo mientras no meta capas dentro de esta ///
        function mouseOutOfDiv(id,capaPosicionRelativa) {
            // obtenemos posicion relativa de la capa que queremos mover
            var posRelativa = getRelativeElementPosition(id);
            //alert('posicion relativa x:'+posRelativa.left+" y "+posRelativa.top);
            // obtenemos la posicion absoluta de la capa que queremos mover
            var posAbsoluta = getAbsoluteElementPosition(id);
            //alert('posicion absoluta x:'+posAbsoluta.left+" y "+posAbsoluta.top);
            // obtenemos la posicion del puntero
            var posMouse = {top:yMousePos, left:xMousePos};
            //alert('posicion mouse x:'+posMouse.left+" y "+posMouse.top);            
            // obtenemos la diferencia entre la posicion absoluta del raton y la del elemento
            var difx = posMouse.left - posAbsoluta.left;
            var dify = posMouse.top - posAbsoluta.top;
            // se la sumamos a la posicion relativa
            var nuevaPosRelativa = {top:posRelativa.top+dify, left:posRelativa.left+difx};
            //alert('posicion nueva x:'+nuevaPosRelativa.left+" y "+nuevaPosRelativa.top);                        
            // establecemos la nueva ubicacion
            var capa = document.getElementById(id);                       

            //if (!capa) console.debug('La capa es nula; id='+id);
                
            //console.debug(' Pos mouse.left: '+posMouse.left+' ; Pos mouse.top: '+posMouse.top
            //            + ' ; PosAbsoluta.left: ' + posAbsoluta.left + ' PosAbsoluta.top: ' 
            //            + posAbsoluta.top);                                    
            
            var ancho_capa = capa.clientWidth;  //capa.style.width.substr(0,(""+capa.style.width).length-2);
            var alto_capa =  capa.clientHeight; //capa.style.height.substr(0,(""+capa.style.height).length-2);

            /*console.debug(' Pos mouse.left: '+posMouse.left+' ; Pos mouse.top: '+posMouse.top
                        + ' ; PosAbsoluta.left+ancho: ' + (posAbsoluta.left + ancho_capa) + 
                        ' PosAbsoluta.top+alto: ' +  
                        + (posAbsoluta.top+alto_capa) );*/ 
            var scroll = getScrollXY();
            if (document.all) {
                posAbsoluta.left -= scroll.left;
                posAbsoluta.top -= scroll.top;
            }


            if (capaPosicionRelativa && document.all /*(document.getElementById && document.all&&(navigator.appVersion.indexOf("MSIE 6.")>=0))*/ )
            {
                if (posMouse.left < 0){
                    return true;
                }
                
                if (posMouse.top < 0){
                    return true;
                }
                
                if (posMouse.left > ancho_capa){
                    return true;
                }
                
                if (posMouse.top  > alto_capa){
                    return true;
                }
            
            }else{

                if (posMouse.left < posAbsoluta.left){                    
                    return true;
                }
                
                if (posMouse.top < posAbsoluta.top){
                    return true;
                }
                
                if (posMouse.left > posAbsoluta.left + ancho_capa){
                    return true;
                }
                
                if (posMouse.top  > posAbsoluta.top  + alto_capa){
                    return true;
                }
                //console.debug('DENTRO');
               /* alert('posMouse.top:'+posMouse.top+" ; posMouse.left:"+posMouse.left+
                    " ;\n posAbsoluta.top:" + posAbsoluta.top + " ; posAbsoluta.left " + posAbsoluta.left +
                    " ;\n posAbsoluta.top+altura:" + (posAbsoluta.top  + alto_capa) +
                    " ; posAbsoluta.left+anchura " + (posAbsoluta.left + ancho_capa)                 
                    );*/
            }
            return false;             
            
            //capa.style.left = ""+(posMouse.left-10) + "px";
            //capa.style.top = ""+(posMouse.top-10) + "px";           
        }


function captureMousePosition(e) {
    if (document.layers) {
        // When the page scrolls in Netscape, the event's mouse position
        // reflects the absolute position on the screen. innerHight/Width
        // is the position from the top/left of the screen that the user is
        // looking at. pageX/YOffset is the amount that the user has 
        // scrolled into the page. So the values will be in relation to
        // each other as the total offsets into the page, no matter if
        // the user has scrolled or not.
        xMousePos = e.pageX;
        yMousePos = e.pageY;
        xMousePosMax = window.innerWidth+window.pageXOffset;
        yMousePosMax = window.innerHeight+window.pageYOffset;
    } else if (document.all) {
        // When the page scrolls in IE, the event's mouse position 
        // reflects the position from the top/left of the screen the 
        // user is looking at. scrollLeft/Top is the amount the user
        // has scrolled into the page. clientWidth/Height is the height/
        // width of the current page the user is looking at. So, to be
        // consistent with Netscape (above), add the scroll offsets to
        // both so we end up with an absolute value on the page, no 
        // matter if the user has scrolled or not.
        xMousePos = window.event.x+document.body.scrollLeft;
        yMousePos = window.event.y+document.body.scrollTop;
        xMousePosMax = document.body.clientWidth+document.body.scrollLeft;
        yMousePosMax = document.body.clientHeight+document.body.scrollTop;
    } else if (document.getElementById) {
        // Netscape 6 behaves the same as Netscape 4 in this regard 
        xMousePos = e.pageX;
        yMousePos = e.pageY;
        xMousePosMax = window.innerWidth+window.pageXOffset;
        yMousePosMax = window.innerHeight+window.pageYOffset;
    }
    
    
     function letraNif (numdni) 
        { 
            cadena="TRWAGMYFPDXBNJZSQVHLCKET" 
            
            posicion = numdni % 23 
            letra = cadena.substring(posicion,posicion+1) 
            return letra;
        } 
            
     function nif_correcto(dni) {
        
        if (dni.length!=9)
            return false;
                     
        var er_dni = /^\d{8}[A-Z]$/;
        
        if (!er_dni.test(dni)) {
                return false;
        }
        
        var s_numero = dni.substr(0,8);
        var i_numero = parseint(s_numero);
        
        var letra = dni.substring(8,1);
        if (letra != letraNif(i_numero))
        {
            return false;       
        }
        
        return true;
     }

     function nie_correcto(dni) {
        var er_dni = /^(X)\d{7}[A-Z]$/;

        if (!er_dni.test(dni)) {
                return false;
        }

        var s_numero = dni.substr(1,7);
        var i_numero = parseint(s_numero);
        
        var letra = dni.substring(8,1);
        if (letra != letraNif(i_numero))
        {
            return false;       
        }
        return true;
     }
     
     
     function expandir_nifnie_sinletra(dni){
        var er_dni_no_letra = /^(((X)\d{7})|(\d{8}))$/;

        if (!er_dni_no_letra.test(dni)){
            return null;
        }

        var dni_expandido = letraNif(dni);

        return dni_expandido;
     }




}




/********************** AJAX ***********************/
function realizarPeticionNula(url){
    var pagina_requerida = false;
    if (window.XMLHttpRequest)    {        
    // Si es Mozilla, Safari etc        
        pagina_requerida = new XMLHttpRequest ();    
    } else if (window.ActiveXObject)    {
    // pero si es IE        
        try         {            
            pagina_requerida = new ActiveXObject ("Msxml2.XMLHTTP");        
        }  catch (e) {
                    // en caso que sea una versión antigua            
            try  {                
                pagina_requerida = new ActiveXObject ("Microsoft.XMLHTTP");            
            }  catch (e)  {  }        
        }    
     } else    
        return false;    
     pagina_requerida.onreadystatechange = function ()    {        
        // función de respuesta        
        // no hacemos nada
     }    
     pagina_requerida.open ('GET', url, true); // asignamos los métodos open y send    
     pagina_requerida.send (null);

 }

 function crearMenuPersonalizado(id_capa_menu, npasos) {
     if (npasos > 10) return;
     
     var capamenu = document.getElementById(id_capa_menu);
     if (capamenu) {
         var contenido = capamenu.innerHTML;
         if (contenido && contenido != '') {             
            anyadirContenidoAsincrono('http://www.ffis.es/formacion/aspx/ZonaPersonal/MenuIzqZonaPersonal.aspx', 'menu');
         } else {
            setTimeout('crearMenuPersonalizado("' + id_capa_menu + '", ' + (npasos + 1) + ');', 600);
         }
     }
 }

 function anyadirContenidoAsincrono(url,  id_contenedor) {
     var pagina_requerida = false;
     if (window.XMLHttpRequest) {
         // Si es Mozilla, Safari etc        
         pagina_requerida = new XMLHttpRequest();
     } else if (window.ActiveXObject) {
         // pero si es IE        
         try {
             pagina_requerida = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
             // en caso que sea una versión antigua            
             try {
                 pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP");
             } catch (e) { }
         }
     } else
         return false;
     pagina_requerida.onreadystatechange = function() {
         // función de respuesta
     cargarpagina2(pagina_requerida, id_contenedor);
     }
     pagina_requerida.open('GET', url, true); // asignamos los métodos open y send    
     pagina_requerida.send(null);
 }
 
// Documento JavaScript
// Esta función cargará las paginas
 function llamarasincrono(url, id_contenedor) {

     var pagina_requerida = false;
     if (window.XMLHttpRequest) {
         // Si es Mozilla, Safari etc        
         pagina_requerida = new XMLHttpRequest();
     } else if (window.ActiveXObject) {
         // pero si es IE        
         try {
             pagina_requerida = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
             // en caso que sea una versión antigua            
             try {
                 pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP");
             } catch (e) { }
         }
     } else
         return false;

     pagina_requerida.onreadystatechange = function() {
         // función de respuesta        
         cargarpagina(pagina_requerida, id_contenedor);
     }
     
     pagina_requerida.open('GET', url, true); // asignamos los métodos open y send     
     pagina_requerida.send(null);
 }
 // todo es correcto y ha llegado el momento de poner la información requerida
 // en su sitio en la pagina xhtml
 function cargarpagina (pagina_requerida, id_contenedor){
     if (pagina_requerida.readyState == 4 && (pagina_requerida.status == 200 || window.location.href.indexOf("http") == -1)) {
         
        document.getElementById (id_contenedor).innerHTML = pagina_requerida.responseText;        
    }
}

function cargarpagina2(pagina_requerida, id_contenedor) {
    if (pagina_requerida.readyState == 4 && (pagina_requerida.status == 200 || window.location.href.indexOf("http") == -1)) {
        var contenido_nuevo = pagina_requerida.responseText;

        document.getElementById(id_contenedor).innerHTML = (contenido_nuevo + document.getElementById(id_contenedor).innerHTML);
        //alert("el contenido nuevo es " + contenido_nuevo);
    }
}
 
/////////////////////////

	function formedicion_desrehabilitar (booleano,control)
	{
		control.checked = booleano;
		control.disabled = booleano;
	}
	
	function formedicion_rehabilitar (control)
	{
		control.disabled = false;
	}


 
 
 function formedicion_cbtodoelpersonal_onchange(evento){
    if (document.getElementById("CbTodoPersonal").checked){ 
        document.getElementById("CbPersonalSanitario").checked=true;
        document.getElementById("CbFacultativoSanitario").checked=true;
        document.getElementById("CbDiplomadoSanitario").checked=true;
        document.getElementById("CbTecnicoEspecialistaSanitario").checked=true;
        document.getElementById("CbTecnicoAuxiliarSanitario").checked=true;
        document.getElementById("CbPersonalSubalterno").checked=true;        
        document.getElementById("CbResidentes").checked=true;
        document.getElementById("CbPersonalNoSanitario").checked=true;
        document.getElementById("CbFacultativoNoSanitario").checked=true;
        document.getElementById("CbDiplomadoNoSanitario").checked=true;        
        document.getElementById("CbTecnicoEspecialistaNoSanitario").checked=true;        
        document.getElementById("CbTecnicoAuxiliarNoSanitario").checked=true;
    }
 }
 
 function cb_formedicion_cbtodosanitario_onchange(evento) {
   
 }
 
 function showModal( capa_modal,  capa_trans_modal)
 {
    capa_modal.style.display = "block";
    capa_trans_modal.style.display = "block";
 }
 
 function endShowModal( capa_modal, capa_trans_modal){
    capa_modal.style.display = "none";
    capa_trans_modal.style.display="none";
 }
