/*
xNavegador.js
Versión		: 1.0 23-04-2002
Autor		: Altia Consultores (BCS)
Descripción	: Funciones de compatibilidad entre navagadores
Historia	:
		0.1 BCS 23-04-2002 Creación
*/

	// Permite añadir un evento a un objeto.
	function xnAddEvento(objeto, tipoEvento, funcion, modoCaptura)
	{
		if (objeto.addEventListener)
		{
			objeto.addEventListener(tipoEvento, funcion, modoCaptura);
			return true;
		} 
		else if (objeto.attachEvent)
		{
			var r = objeto.attachEvent("on"+tipoEvento, funcion);
			return r;
		} 
		else 
		{
			alert(xcalListaMensajes[0]);
			return false;
		}
	} 
	
	// Permite eliminar un evento de un objeto
	function xnRemoveEvento(objeto, tipoEvento, funcion, modoCaptura)
	{
	
	  if (objeto.removeEventListener)
	  {
	    objeto.removeEventListener(tipoEvento, funcion, modoCaptura);
	    return true;
	  } 
	  else if (objeto.detachEvent)
	  {
	    var r = objeto.detachEvent("on"+tipoEvento, funcion);
	    return r;
	  } 
	  else 
	  {
	    alert(xcalListaMensajes[0]);
	    return false;
	  }
	} 
	
	// Permite obtener el propietario de un evento
	function xnPropietarioEvento(evento)
	{
	    if (evento.srcElement)
	    {	
	    	return evento.srcElement;
	    }
	    else
	    {
	    	var nodo = evento.target;
		    while (nodo)
		    {
		        if (nodo.nodeType == Node.ELEMENT_NODE)
		        {
		                return nodo;
		        }
		        nodo = nodo.parentNode;
		    }
		}  
	    return null;
	}
	
	// Devuelve el valor del campo que produjo el evento
	function xnValorCampo(evento)
	{
		if (evento.target)
			return evento.target.value;
		else if(evento.srcElement)
			return evento.srcElement.value;
	}
	
	// Permite cambiar la forma del cursor
	function xnEstiloCursor(objeto,modo)
	{
		if (modo == "pointer" || modo == "hand")
		{
			if (navigator.appName == "Microsoft Internet Explorer")
			{
				objeto.style.cursor="hand";
			}
			else
			{
				objeto.style.cursor="pointer";
			}
		}
		else
		{
			objeto.style.cursor = modo;
		}
	}
	
	
	// Obtiene el año de la fecha
	function xnObtieneAno(fecha)
	{
	 	return fecha.getFullYear();
	}
	
	
	// Detecta la tecla que se pulsó
	function xnTeclaPulsada(evento)
	{
		if (evento.keyCode)
		{
			return evento.keyCode;
		}
		else if (evento.which)
		{
			return evento.which;
		}	
		
	}
	
	
	// Obtiene la componente X del elemento
	function xnPosicionXAbsolutaElemento(elemento)
	{
		var posX = 0;
		if (elemento.offsetParent)
		{
			while (elemento.offsetParent)
			{
				posX += elemento.offsetLeft
				elemento = elemento.offsetParent;
			}
		}
		else if (elemento.x)
		{
			posX += elemento.x;
		}
		return posX;
	}
	
	//Obtiene la componente Y del elemento
	function xnPosicionYAbsolutaElemento(elemento)
	{
		var posY = 0;
		if (elemento.offsetParent)
		{
			while (elemento.offsetParent)
			{
				posY += elemento.offsetTop
				elemento = elemento.offsetParent;
			}
		}
		else if (elemento.y)
		{
			posY += elemento.y;
		}
		return posY;
	}
	
	// Fija el foco para los casos en que el funcionamiento normal [focus()]no sea
	// valido. Mozilla no fija bien el foco en el caso de que se quiere volver al
	// campo actual desde onBlur y onChange; en ambos casos el foco se cambia al
	// campo siguiente del formulario.
	var xnObjetoFocalizable=null;
	function xnOnBlurFocus(objeto)
	{
		xnObjetoFocalizable = objeto;
		setTimeout('xnObjetoFocalizable.focus()',10);
	}