/*
 * Archivo: JavaScript/funciones.js
 * Descripcion: Script de funciones varias y necesarias en JavaScript
 * Autor: Ing. Carlos Yerena <cyerena@aztecomp.com>
 * Fecha: 07/05/2008
 * 
 */

// ************************************************************
// ESTAS FUNCIONES DEBEN SER USADAS CON EL EVENTO onKeyPress
// ************************************************************
// onkeypress="return funcion(event,objeto);"
//

// Función que sólo acepta números y un solo punto
function moneda(e,objeto){
	var aceptado = false;
	var tecla;
	var caracter;
	
	if(window.event){ 
		tecla=e.keyCode; 
	} else { 
		tecla=e.which; 
	}; 
	
	// numeros
	if(tecla >= 48 && tecla <= 57){
		aceptado = true;
		//alert('numeros');
	}
	
	// punto
	if(tecla == 46){
		aceptado = true;
		//alert('punto');
	}
	
	if(tecla == 0 || tecla == 8 || tecla == 13)
		aceptado = true;
		
	return aceptado;
}

// Función que sólo acepta números y un solo punto y signo negativo
function monedaS(e,objeto){
	var aceptado = false;
	var tecla;
	var caracter;
	
	if(window.event){ 
		tecla=e.keyCode; 
	} else { 
		tecla=e.which; 
	}; 
	
	// numeros
	if(tecla >= 48 && tecla <= 57){
		aceptado = true;
		//alert('numeros');
	}
	
	// punto
	if(tecla == 46){
		aceptado = true;
		//alert('punto');
	}
	
	// signo negativo
	if(tecla == 45){
		aceptado = true;
		//alert('punto');
	}
	
	if(tecla == 0 || tecla == 8 || tecla == 13)
		aceptado = true;
		
	return aceptado;
}

// Función que sólo acepta números
function numero(e,objeto){
	var aceptado = false;
	var tecla;
	var caracter;
	
	if(window.event){ 
		tecla=e.keyCode; 
	} else { 
		tecla=e.which; 
	}; 
	
	// numeros
	if(tecla >= 48 && tecla <= 57){
		aceptado = true;
		//alert('numeros');
	}
		
	if(tecla == 0 || tecla == 8 || tecla == 13)
		aceptado = true;
		
	return aceptado;
}

// Función que sólo acepta letras (sin caracteres especiales, espacios, signos de cualquier tipo)
function letra(e,objeto){
	var aceptado = false;
	var tecla;
	var caracter;
	
	if(window.event){ 
		tecla=e.keyCode; 
	} else { 
		tecla=e.which; 
	}; 

	// letras minusculas
	if(tecla >= 97 && tecla <= 122){
		aceptado = true;
		//alert('minusculas');
	}
	
	// letras mayusculas
	if(tecla >= 65 && tecla <= 90){
		aceptado = true;
		//alert('mayusculas');
	}
	
	// tildes
	if(tecla == 209 || tecla == 241){
		aceptado = true;
		//alert('tildes');
	}
	
	// teclas de control (enter, esc, supr, etc.)
	if(tecla == 0 || tecla == 8 || tecla == 13){
		aceptado = true;
		//alert('control');
	}
	
	return aceptado;
}

// Función que sólo acepta letras (sin caracteres especiales, espacios, signos de cualquier tipo, ni acentos)
function letraEspacios(e,objeto){
	var aceptado = false;
	var tecla;
	var caracter;
	
	if(window.event){ 
		tecla=e.keyCode; 
	} else { 
		tecla=e.which; 
	}; 

	// letras minusculas
	if(tecla >= 97 && tecla <= 122){
		aceptado = true;
		//alert('minusculas');
	}
	
	// letras mayusculas
	if(tecla >= 65 && tecla <= 90){
		aceptado = true;
		//alert('mayusculas');
	}
	
	// numeros
	if(tecla >= 48 && tecla <= 57){
		aceptado = true;
		//alert('numeros');
	}
	
	// espacio
	if(tecla == 32){
		aceptado = true;
		//alert('espacio');
	}
	
	// tildes
	if(tecla == 209 || tecla == 241){
		aceptado = true;
		//alert('tildes');
	}
	
	// teclas de control (enter, esc, supr, etc.)
	if(tecla == 0 || tecla == 8 || tecla == 13){
		aceptado = true;
		//alert('control');
	}
	
	return aceptado;
}

// Función que sólo acepta letras y numeros (sin caracteres especiales, espacios, signos de cualquier tipo)
function letraNumero(e,objeto){
	var aceptado = false;
	var tecla;
	var caracter;
	
	if(window.event){ 
		tecla=e.keyCode; 
	} else { 
		tecla=e.which; 
	}; 

	// letras minusculas
	if(tecla >= 97 && tecla <= 122){
		aceptado = true;
		//alert('minusculas');
	}
	
	// letras mayusculas
	if(tecla >= 65 && tecla <= 90){
		aceptado = true;
		//alert('mayusculas');
	}
	
	// numeros
	if(tecla >= 48 && tecla <= 57){
		aceptado = true;
		//alert('numeros');
	}
	
	// teclas de control (enter, esc, supr, etc.)
	if(tecla == 0 || tecla == 8 || tecla == 13){
		aceptado = true;
		//alert('control');
	}
	
	return aceptado;
}

// Función que sólo acepta caracteres de correo electronico (a-z, 0-9, .,@,- ,_)
function correoE(e,objeto){
	var aceptado = false;
	var tecla;
	var caracter;
	var cadena = objeto.value;
	
	if(window.event){ 
		tecla=e.keyCode; 
	} else { 
		tecla=e.which; 
	}; 
	
	// letras minusculas
	if(tecla >= 97 && tecla <= 122){
		aceptado = true;
		//alert('minusculas');
	}
	
	// letras mayusculas
	if(tecla >= 65 && tecla <= 90){
		aceptado = true;
		//alert('mayusculas');
	}
	
	// numeros
	if(tecla >= 48 && tecla <= 57){
		aceptado = true;
		//alert('numeros');
	}
	
	// guion
	if(tecla == 45){
		aceptado = true;
		//alert('espacio');
	}
	
	// guion bajo
	if(tecla == 95){
		aceptado = true;
		//alert('espacio');
	}
	
	// arroba
	if(tecla == 64){
		aceptado = true;
		//alert('arroba');
	}
	
	// punto
	if(tecla == 46){
		aceptado = true;
		//alert('punto');
	}
	
	// teclas de control (enter, esc, supr, etc.)
	if(tecla == 0 || tecla == 8 || tecla == 13){
		aceptado = true;
		//alert('control');
	}
	
	if(aceptado)
		objeto.value = objeto.value.toLowerCase();
		
	return aceptado;
}


// Convierte texto a mayusculas
function mayusculas(objeto){
	objeto.value = objeto.value.toUpperCase();
}

// Convierte texto a minusculas
function minusculas(objeto){
	objeto.value = objeto.value.toLowerCase();
}


/**************************************************
 * Función que elimina espacios a la derecha e izquierda de una cadena
 * ***********************************************/
function trim(cadena){
	cadena = cadena.replace(/^\s*|\s*$/g,"");
	return cadena;
}

/**************************************************
 * Función que valida la estructura de un correo electrónico
 * ***********************************************/
 
function correoValido(correo){
	var emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  
	if(emailRegex.test(correo))
		valido = true;
	else
		valido = false;
	return valido;
}
				
/**************************************************
 * Función que valida una fecha
 * ***********************************************/
function validaFecha(dia,mes,anio){
	dia = parseInt(dia);
	mes = parseInt(mes);
	anio = parseInt(anio);
	now = new Date();
	anioAct = (now.getFullYear());
	valida = true;
	
	if(anio < 1900 || anio > anioAct) { valida = false; }
	if(mes < 1 || mes > 12) { valida = false; }
	var limiteDia;
	if(mes == 1) { limiteDia = 31; }
	if(mes == 2) { 
		if(bisiesto(anio)){ 
			limiteDia = 29; 
		} else { 
			limiteDia = 28;
		}
	}	
	if(mes == 3) { limiteDia = 31; }
	if(mes == 4) { limiteDia = 30; }
	if(mes == 5) { limiteDia = 31; }
	if(mes == 6) { limiteDia = 30; }
	if(mes == 7) { limiteDia = 31; }
	if(mes == 8) { limiteDia = 31; }
	if(mes == 9) { limiteDia = 30; }
	if(mes == 10) { limiteDia = 31; }
	if(mes == 11) { limiteDia = 30; }
	if(mes == 12) { limiteDia = 31; }
	if(dia < 1 || dia > limiteDia) { valida = false; }
	return valida;
}

function bisiesto(anio){
	anio = parseInt(anio);
	if(anio % 400 == 0){
		return true;
	} else {
		if((anio % 4 == 0) && (anio % 100 != 0)){
			return true;
		} else {
			return false;
		}
	}
}
/**************************************************
 * Función que simula position:fixed
 * ***********************************************/
	// Uso por medio de 
	// window.onload = function() {setInterval("divFijo('idElemento','Xpx','Ypx')", milisegundos)}
	// window.onload = function() {setInterval("divFijo('agua','','275')", 100)}
	
	var posxAnt = 0;
	var posyAnt = 0;
	var posx = 0;
	var posy = 0;
	function divFijo(idDiv,X,Y){
		var elemento = document.getElementById(idDiv);
		if (document.body) {
			posx = document.body.scrollLeft;
			posy = document.body.scrollTop;
			if(document.body.scrollLeft == 0 && document.body.scrollTop == 0){
				posx = document.documentElement.scrollLeft;
				posy = document.documentElement.scrollTop;
			}
		} else {
			posx = window.pageXOffset;
			posy = window.pageYOffset;
		}
		
		if(parseInt(X) >= 0){
			posx += parseInt(X);
			if(posx != posxAnt){
				elemento.style.left = posx + "px";
			}
		}
		
		if(parseInt(Y) >= 0){
			posy += parseInt(Y);
			if(posy != posyAnt){
				elemento.style.top = posy + "px";
			}
		}
		posxAnt = posx;
		posyAnt = posy;
	}



/**************************************************
 * Función que muestra la hora y fecha en elementos distintos
 * 
 * Usar al terminar la carga de la página como
 * 	hora(campoFecha,campoHora);
 * 
 * Donde:
 * 	campoFecha = Será el objeto contenedor donde aparecerá la fecha
 * 	campoHora = Será el objeto contenedor donde aparecerá la hora actual
 * ***********************************************/
 
function hora(campoFecha,campoHora){			
	AdiaS = new Array('Domingo','Lunes','Martes','Mi&eacute;coles','Jueves','Viernes','S&aacute;bado');
	Ames =  new Array('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre');
	now=new Date();
  	horas=now.getHours();
  	minutos=now.getMinutes();
  	segundos=now.getSeconds();
  	dia=now.getDate();
  	diaS=now.getDay();
  	mes=now.getMonth();
  	anio=now.getFullYear();
  	if(horas < 10) { horas="0"+horas;};
 	if(minutos < 10) { minutos="0"+minutos;};
	if(segundos < 10) { segundos="0"+segundos;};
  	actualHora=horas+":"+minutos+":"+segundos+" hrs.";
  	actualFecha=AdiaS[diaS]+" "+dia+" de "+Ames[mes]+" de "+anio
	try{document.getElementById(campoFecha).innerHTML = actualFecha;} catch(e) {}
	try{document.getElementById(campoHora).innerHTML = actualHora;} catch(e) {}
}


// Funcion de ajuste de pié de página
/* Procedimiento
 * El pie de página debe contener id al igual que el elemento que crecerá
 * Establecer:
 * 		<body onload="piePagina(pie,elemCrece,ajuste);">
 * Agregar:
 * 		<script type="text/javascript">
 *			window.onresize = function(){
 *				piePagina(pie,elemCrece,ajuste);
 *			}
 *		</script>
 * 
 * Donde:
 * 		pie = es el id del div que contiene al pié de página
 * 		elemCrece = es el elemento contenedor que crecerá para ajustar al tamaño de la página
 * 		ajuste = numero de pixeles positivo o negativo para el ajuste óptimo deseado
 */
 
function piePagina(pie,elemCrece,ajuste){
	// Si el navegador es Internet Explorer versión menor a 7 sale de funcion
	var nav = navigator.userAgent;
	var ver = 0;
	if((ie = nav.indexOf("MSIE")) != -1){
		ver = parseInt(nav.substring(ie+5));
		if(ver < 7) return false;
	}
	/////////////////////////////////////////////////////////////////////////
	var minimo = 0;
	if (window.innerHeight){
		minimo = window.innerHeight;
	} else {
		minimo = document.body.clientHeight;
	}
	minimo -= parseInt(document.getElementById(pie).style.height);
	minimo += Number(ajuste);
	try{
		document.getElementById(elemCrece).style.minHeight = Number(minimo) + 'px';
	} catch(e) {
		return false;
	}
}

