/** ************************************************************************** 
 ** Funciones para obtener el height y width original
 ** **************************************************************************/

function getNaturalHeight(img){
	if( img.naturalHeight!=null) {		
    	return img.naturalHeight;
	}else{
		lgi = new Image();
		lgi.src = img.src;
		return lgi.height;
	}
}
    
function getNaturalWidth(img) {
	if( img.naturalWidth!=null) {		
		return img.naturalWidth;
	}else{
		lgi = new Image();            
		lgi.src = img.src;
		return lgi.width;
	}
}

/** ************************************************************************** 
 ** Funcion para posicionar una capa centrada en la pantalla
 ** **************************************************************************/

function posicionarCapaCentrada(capa,anchoImagen,altoImagen){
	var anchoVentana=0;
	var altoVentana=0;
	//var actualY;
	var scrollTop;
	if(document.all){ 
		//actualY = obj.style.pixelTop; 
		scrollTop = document.body.scrollTop; 
	}else if(document.layers){ 
		//actualY = obj.top; 
		scrollTop = window.pageYOffset; 
	}else if(document.getElementById){ 
		//actualY = parseInt(obj.style.top); 
		scrollTop = window.pageYOffset; 
	} 
	
	
	if (typeof window.innerWidth != 'undefined'){
        anchoVentana=window.innerWidth;
        altoVentana=window.innerHeight;
	}else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth !='undefined' && document.documentElement.clientWidth != 0){
		altoVentana=document.documentElement.clientHeight; 
        anchoVentana=document.documentElement.clientWidth;
  	}else{
  		altoVentana=document.getElementsByTagName('body')[0].clientHeight;
        anchoVentana=document.getElementsByTagName('body')[0].clientWidth;
  	}
	
	var posicionLeft=anchoVentana/2-anchoImagen/2;
	var posicionTop=scrollTop;
	if (altoImagen<altoVentana)
		posicionTop=scrollTop+altoVentana/2-altoImagen/2;
	if (posicionLeft<0)
		posicionLeft=0;
	var obj=document.getElementById(capa);
	if (document.all)               //IE
		{
			 //obj.style.top = event.clientY + document.documentElement.scrollTop + 100;
			 obj.style.top=posicionTop;
			 //obj.style.left = event.clientX + document.documentElement.scrollLeft - 90;
			 obj.style.left=posicionLeft;
		 
		}
		else if(document.layers)  //NS
		{
			//obj.top = event.clientX + document.pageXOffset + 100;
			obj.top = posicionTop;
			//obj.left = event.clientY + document.pageYOffset - 90;
			obj.left=posicionLeft;
		}
		else if (document.getElementById)
		{
			//obj.top = window.pageX + window.pageXOffset + 100;
			obj.top = posicionTop;
			//obj.left = window.pageY + window.pageXOffset - 90;
			obj.left=posicionLeft;
		}
}

/** ************************************************************************** 
 ** Funciones para eliminar espacios
 ** **************************************************************************/
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}
function rtrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}
function lrtrim(stringToTrim) {
	return ltrim(rtrim(stringToTrim));
}

/** ************************************************************************** 
 ** Determina si el navegador en el que se esta ejecutando la aplicacion
 ** Devuelve "NETSCAPE" si se trata de un netscape
 ** Devuelve "EXPLORER" si se trata de un explorer
 ** **************************************************************************/
function getCurrentBrowser() {
	var dev = "NETSCAPE";
	
	if(navigator.appName.indexOf("Internet Explorer") != -1) {
		dev = "EXPLORER";
	}
	
	return dev;
}


/** ************************************************************************** 
 ** Funcion que solo devuelve números con el evento KeyPress (para EXPLORER)
 ** **************************************************************************/ 
function soloNumerosEXPLORER() {
	browser=getCurrentBrowser();
	if (browser=="EXPLORER") {
		if ((event.keyCode<48 || event.keyCode>57) && event.keyCode != 8) {
			return false;
		}
	}
}

function soloNumerosFloatEXPLORER() {
	browser=getCurrentBrowser();
	if (browser=="EXPLORER") {
		if ((event.keyCode<48 || event.keyCode>57) && event.keyCode != 8 && event.keyCode!=45 && event.keyCode!=46) {
			return false;
		}
	}
}
/** ************************************************************************** 
 ** Funcion que solo devuelve números con el evento KeyPress (para distinto a EXPLORER)
 **
 ** Necesita incluir: 
 <SCRIPT LANGUAGE="javascript">
	if (getCurrentBrowser()=="NETSCAPE") {
		document.forms.formularioConcreto.objeto.onkeypress = soloNumerosNETSCAPE;	
	}	
 </SCRIPT>
 ** **************************************************************************/
function soloNumerosNETSCAPE(e) {
	if ((e.which<48 || e.which>57) && e.which != 8)
		return false;
}

function soloNumerosFloatNETSCAPE(e) {
	if ((e.which<48 || e.which>57) && e.which != 8 && e.which != 45 && e.which != 46)
		return false;
}

/** ************************************************************************** 
 ** Funcion que solo devuelve caracteres validos con el evento KeyPress (para EXPLORER)
 ** **************************************************************************/ 
function soloLetrasYNumerosEXPLORER() {
	browser=getCurrentBrowser();
	if (browser=="EXPLORER") {
		if (!((event.keyCode>=48 && event.keyCode<=57) || (event.keyCode>=65 && event.keyCode<=90)
			|| (event.keyCode>=97 && event.keyCode<=122) || event.keyCode==95 || event.keyCode==209 || event.keyCode==241) 
			&& event.keyCode != 8) {
			return false;
		}
	}
}

/** ************************************************************************** 
 ** Funcion que solo devuelve caracteres validos con el evento KeyPress (para distinto a EXPLORER)
 ** **************************************************************************/ 
function soloLetrasYNumerosNETSCAPE(e) {
	if (!((e.which>=48 && e.which<=57) || (e.which>=65 && e.which<=90)
		|| (e.which>=97 && e.which<=122) || e.which==95 || e.which==209 || e.which==241) 
		&& e.which != 8 && e.which != 0) {
		return false;
	}
}

function htmlFormat(cadena){
	cadena=cadena.replace('ñ','&ntilde;');
	return cadena;
}

/** ************************************************************************** 
 ** Código base para la carga del motor AJAX *
 ** **************************************************************************/
 // Petición HTTP, por defecto a false
var http_request = false; 
function cargarAJAX(url,funcionProcesamiento){
	// Carga de XMLHTTPRequest para Navegadores que respeten las especificaciones del W3C	
	if(window.XMLHttpRequest){
		// Instanciación del W3C XMLHttpRequest
		http_request = new XMLHttpRequest();
	}else if(window.ActiveXObject){ // Para MSIE
		// Instanciación del MSXMLHTTP
		http_request = new ActiveXObject("Microsoft.XMLHTTP");
	}

	if(http_request==null){
		window.alert("No ha sido posible crear una instancia de XMLHttpRequest");
		return false;
	}
	// Se ha de indicar al objeto http_request la función de JavaScript
	// encargada de manejar la respuesta del servidor
	http_request.onreadystatechange = eval(funcionProcesamiento);
	// Se lanza la petición
	http_request.open('GET', url, true);
	http_request.send(null);
}

function mostrarCapaLogin(){
	var divLogin=document.getElementById("divLogin");
	divLogin.style.display="inline";
	var campoLogin=document.getElementById("login");
	if (campoLogin!=null)
		campoLogin.focus();
}

function validarUsuario(){
//TODO: Comprobar campos rellenos
	document.forms.formLogin.submit();
}

function abrir_ventana(url){
	window.open(url);
	return;
}

/** ************************************************************************** 
 **   Reloj
 ** **************************************************************************/

function reloj() {

	var fObj = new Date() ; 
	var horas = fObj.getHours() ; 
	var minutos = fObj.getMinutes() ; 
	var segundos = fObj.getSeconds() ; 
	if (horas <= 9) horas = "0" + horas; 
	if (minutos <= 9) minutos = "0" + minutos; 
	if (segundos <= 9) segundos = "0" + segundos; 
	window.status = horas+":"+minutos+":"+segundos;
}



/** ************************************************************************** 
 **   Validar Fecha
 ** **************************************************************************/

function esDigito(sChr){
var sCod = sChr.charCodeAt(0);
return ((sCod > 47) && (sCod < 58));
}

function valSep(oTxt){
var bOk = false;
bOk = bOk || ((oTxt.value.charAt(2) == "-") && (oTxt.value.charAt(5) == "-"));
bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(5) == "/"));
return bOk;
}

function finMes(oTxt){
var nMes = parseInt(oTxt.value.substr(3, 2), 10);
var nRes = 0;
switch (nMes){
case 1: nRes = 31; break;
case 2: nRes = 29; break;
case 3: nRes = 31; break;
case 4: nRes = 30; break;
case 5: nRes = 31; break;
case 6: nRes = 30; break;
case 7: nRes = 31; break;
case 8: nRes = 31; break;
case 9: nRes = 30; break;
case 10: nRes = 31; break;
case 11: nRes = 30; break;
case 12: nRes = 31; break;
}
return nRes;
}

function valDia(oTxt){
var bOk = false;
var nDia = parseInt(oTxt.value.substr(0, 2), 10);
bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
return bOk;
}

function valMes(oTxt){
var bOk = false;
var nMes = parseInt(oTxt.value.substr(3, 2), 10);
bOk = bOk || ((nMes >= 1) && (nMes <= 12));
return bOk;
}

function valAno(oTxt){
var bOk = true;
var nAno = oTxt.value.substr(6);
bOk = bOk && (nAno.length == 4);
if (bOk){
for (var i = 0; i < nAno.length; i++){
bOk = bOk && esDigito(nAno.charAt(i));
}
}
return bOk;
}

function valFecha(oTxt){
var bOk = true;
if (oTxt.value != ""){
bOk = bOk && (valAno(oTxt));
bOk = bOk && (valMes(oTxt));
bOk = bOk && (valDia(oTxt));
bOk = bOk && (valSep(oTxt));
if (!bOk){
	return false;
}
}else
	return false;
return true;
}
/** **************************************************************************/
/** **************************************************************************/
function botonDchaIE(e) {
	 if (navigator.appName == "Microsoft Internet Explorer" && (event.button == "2" || event.button == "3")) {
	 return false;
	 }
	}

	function botonDchaNS(e) {
	 if (document.layers || (document.getElementById && !document.all)) {
		 if (e.which == "2" || e.which == "3") {
			 return false;
		 }
	 }
	}

	/*document.onmousedown=botonDchaIE;
	if (getCurrentBrowser()=="NETSCAPE") {
	document.onmouseup=botonDchaNS;
	}
	document.oncontextmenu=new Function("return false");*/

/** **************************************************************************/
/** **************************************************************************/
