function y2k(number) { return (number < 1000) ? number + 1900 : number; }

function isDate (day,month,year) {
    var today = new Date();
    year = ((!year) ? y2k(today.getYear()):year);
    month = ((!month) ? today.getMonth():month-1);
    if (!day) return false
    var test = new Date(year,month,day);
    if ( (y2k(test.getYear()) == year) &&
         (month == test.getMonth()) &&
         (day == test.getDate()) )
        return true;
    else
        return false
}

function DateDiff(xopt,date1,date2){
switch(xopt){
	case "d":
		var one_day=1000*60*60*24;
		return Math.ceil((date2.getTime()-date1.getTime())/(one_day));
}
}

function numero_dias(mes,ano)
{
 if (mes=="04" || mes=="06" || mes=="09" || mes=="11") return 30
 else if ((mes=="02") && bisiesto(ano)) return 29
 else if (mes=="02") return 28
 else return 31
}

function bisiesto(ano)
{
 if (((ano % 4 == 0) && ano % 100 != 0) || ano % 400 == 0) return true
 else return false
}


function validarInput(tipval){
	var xkey;
	if (document.all) {
		xkey=window.event.keyCode;
	    if(xkey=="13"){
			event.returnValue = true;
		}
		else{
		if(tipval=="int")
			if ((xkey < 48) || (xkey > 57)) event.returnValue = false;
		if(tipval=="dec")
			if ((xkey < 46) || (xkey > 57)) event.returnValue = false;
		if(tipval=="str")
			if (((xkey != 32) && (xkey < 65)) || ((xkey > 90) && (xkey < 97))) event.returnValue = false;
		if(tipval=="tlf")
			if (((xkey != 32) && (xkey < 45)) || (xkey > 57)) event.returnValue = false;
		}

	}
}

function emailCheck (emailStr) {

	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);

	if (matchArray==null) {
		//alert("Dirección Email parece incorrecto (verifique @ y puntos)");
		return false;
	}

	var user=matchArray[1];
	var domain=matchArray[2];

	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
		//alert("El nombre de usuario contiene caracteres inválidos.");
		return false;
		}
	}

	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
		//alert("El nombre de dominio contiene caracteres inválidos.");
		return false;
		}
	}

	if (user.match(userPat)==null) {
		//alert("El nombre de usuario no parece ser válido");
		return false;
	}

	var IPArray=domain.match(ipDomainPat);
	
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
			//alert("dirección IP es inválido!");
			return false;
			}
		}
		return true;
	}

	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
		//alert("El nombre de dominio no parece ser válido.");
		return false;
		}
	}

	if (checkTLD && domArr[domArr.length-1].length!=2 && 
	domArr[domArr.length-1].search(knownDomsPat)==-1) {
	//alert("la direccion de email debe terminar con un dominio correcto o con dos letras del pais");
	return false;
	}

	if (len<2) {
	//alert("Dirección no tiene un Hostname!");
	return false;
	}
	
	return true;
}

function validar_txt(xinput,tipval){
var xkey=event.keyCode;
	if(tipval=="int")
		if ((xkey < 48) || (xkey > 57)) event.returnValue = false;
	if(tipval=="dec")
		if ((xkey < 46) || (xkey > 57)) event.returnValue = false;
	if(tipval=="str")
		if (((xkey != 32) && (xkey < 65)) || ((xkey > 90) && (xkey < 97))) event.returnValue = false;
	if(tipval=="tlf")
		if (  ((xkey != 32) && (xkey < 45)) || (xkey > 57)    ) event.returnValue = false;
	
	if(tipval=="usr")
		if 	((xkey ==95)|| ( (xkey > 47) && (xkey < 58))	|| ( ((xkey > 64 )&& (xkey < 91)) )		|| ( ((xkey > 96 )&& (xkey < 123)) )	)
		{
		event.returnValue = true;
		}
		else
		event.returnValue = false;
}
