//JavaScript document

function validaEvento(e){
	var keynum;
	if(window.event){ 
		keynum = e.keyCode;
	}
	else if(e.which){ 
		keynum = e.which;
	}
	return keynum;
}

function validaNumero(texto,evento){//permite digitar solo numeros y el punto
    
	var key = validaEvento(evento);
	if(key == 8){ return true; }
	if(key == 44){ return true; }
	
    if ((key < 48 || key > 57)&&(key!=46)){
        if(window.event){ 
			evento.keyCode = 0;
			respuesta = false;
		}
		else if(evento.which){			
			return false;
		}
    }
	
    if((key==46)&&(texto.value.indexOf('.') > -1)){
        if(window.event){ 
			evento.keyCode = 0;
			respuesta = false;
		}
		else if(evento.which){ 
			return false;
		}
    }	
}//end function validaNumero

function validaPunto(texto){
    if(texto.value.indexOf('.') == 0){
        texto.value = texto.value.substr(1);
    }    
}//end function validaPunto

function validaSoloNumero(evento){	
	var key = validaEvento(evento);
	if(key == 8){ return true; }
	//if ((key < 48 || key > 57)&&(key!=46)){
	if (key < 48 || key > 57){
        if(window.event){ 
			evento.keyCode = 0;
			respuesta = false;
		}
		else if(evento.which){			
			return false;
		}
    }	
}//end function validaNumero

function validaFecha(evento){	
	var key = validaEvento(evento);
	if(key == 8){ return true; }
	if ((key < 48 || key > 57)&&(key!=45)){
		if(window.event){ 
			evento.keyCode = 0;
			respuesta = false;
		}
		else if(evento.which){ 
			return false;
		}
	}	
}//end function validaNumero

function validaLetra(evento){	
	var key = validaEvento(evento);
//if (key != 13)	{
	if ( key != 32){
		if ((key <65  || key > 90)&&(key <97  || key > 122)){
			if(window.event){ 
				evento.keyCode = 0;
				respuesta = false;
			}
			else if(evento.which){ 
				return false;
			}
		}
	}	
}

///////////////////////////////////
// Rutina para 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(4) == "-") && (oTxt.value.charAt(7) == "-"));
//	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(5, 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(8, 2), 10);
	//alert(nDia);
	//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(5, 2), 10);
	//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(0,4);
//	var nAno = oTxt.value.substr(6);
	bOk = bOk && ((nAno.length == 4));
//	bOk = bOk && ((nAno.length == 2) || (nAno.length == 4));
	if (bOk){
		for (var i = 0; i < nAno.length; i++){
		bOk = bOk && esDigito(nAno.charAt(i));
		}
		if (bOk){
			var anio = parseInt(nAno);
			bOk = ((anio >= 1900) && (anio <= 2777));
		}
	}
	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){
			alert("Fecha Incorrecta");
			oTxt.value = "";
			oTxt.focus();
			return false;
		}
	}
	return true;
}

// Fin Rutina para validar Fecha
///////////////////////////////////
// Rutina para validar Fecha	//

function valSepHora(oTxt){
	var bOk = false;
	bOk = bOk || ((oTxt.value.charAt(2) == ":"));
	return bOk;
}
function valHora(oTxt){
	var bOk = false;
	var nHora = parseInt(oTxt.value.substr(0, 2), 10);
	bOk = bOk || ((nHora >= 0) && (nHora <= 23));
	return bOk;
}
function valMinuto(oTxt){
	var bOk = false;
	var nMin = parseInt(oTxt.value.substr(3, 2), 10);
	bOk = bOk || ((nMin >= 0) && (nMin <= 59));
	return bOk;
}
function valHoras(oTxt){
	var bOk = true;
	if (oTxt.value != ""){
		bOk = bOk && (valHora(oTxt));
		bOk = bOk && (valMinuto(oTxt));
		bOk = bOk && (valSepHora(oTxt));
		if (!bOk){
			alert("Hora Invalida");
			oTxt.value = "";
			oTxt.focus();
			return false;
		}
	}
}
// Fin Rutina para validar Hora

function calculaEdad(fecha,idControlx){	
	//fecha actual 
	var hoy = new Date(); 
    //alert(hoy) ;
	var mes = parseInt(hoy.getMonth());
	var dia = parseInt(hoy.getDate());
	var anio = parseInt(hoy.getFullYear());
	
	if (fecha=='0000-00-00' || fecha==''){
		document.getElementById(idControlx).value = 0;	
		return false;
	}

    //la fecha que recibo la descompongo en un array 
    var array_fecha = fecha.split("-");
    //si el array no tiene tres partes, la fecha es incorrecta 
    if (array_fecha.length!=3){ 
       return false; 
	}
    //compruebo que los anios, mes, dia son correctos 
    var anionaz; 
    anionaz = parseInt(array_fecha[0],10); 
    if (isNaN(anionaz)){ 
       return false; }
    var mesnaz; 
    mesnaz = parseInt(array_fecha[1],10);
	
    if (isNaN(mesnaz)){ 		
       return false }
    var dianaz; 
    dianaz = parseInt(array_fecha[2],10); 
    if (isNaN(dianaz)){ 
       return false; }
	
	//si el mes es el mismo pero el dia inferior aun no ha cumplido aņos, le quitaremos un aņo al actual
	if ((mesnaz == mes) && (dianaz > dia)) { 
	anio=(anio-1); } 
	//si el mes es superior al actual tampoco habra cumplido aņos, por eso le quitamos un aņo al actual 	
	if (mesnaz > mes) { 
	anio=(anio-1);} 	
	//ya no habria mas condiciones, ahora simplemente restamos los aņos y mostramos el resultado como su edad
	
	edad=(anio-anionaz); 
	if(edad < 0){ edad = 0; }
	//return edad; 
	document.getElementById(idControlx).value = edad;
}
function number_format( number, decimals, dec_point, thousands_sep ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // *     example 1: number_format(1234.5678, 2, '.', '');
    // *     returns 1: 1234.57     
 
    var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
    var d = dec_point == undefined ? "." : dec_point;
    var t = thousands_sep == undefined ? "," : thousands_sep, s = n < 0 ? "-" : "";
    var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
    
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}

function ltrim(s) {
   return s.replace(/^\s+/, "");
}

function rtrim(s) {
   return s.replace(/\s+$/, "");
}

function trim(s) {
   return rtrim(ltrim(s));
}