function IsDate(sFecha)
{
	var strDia;
	var strMes;
	var strAno;
	var strResto;

	if ( sFecha.length != 10 ) {
		return false;
	}

	strAno = sFecha.substring(6,10);
	strMes = sFecha.substring(3,5);
	strDia = sFecha.substring(0,2);
	
	if (!IsNumber(strAno)){
		return false;
	}
	if (!IsNumber(strMes)){
		return false;
	}
	if (!IsNumber(strDia)){
		return false;
	}
	
	if (strAno < 1500) {
		return false;
	}
	if (strMes < 1 || strMes > 12) {
		return false;
	}
	if (strMes == 1 || strMes == 3 || strMes == 5 || strMes == 7 || strMes == 8 || strMes == 10 || strMes == 12 ) {
		if (strDia > 31) {
			return false;
		}
	}
	if (strMes == 4 || strMes == 6 || strMes == 9 || strMes == 11) {
		if (strDia > 30) {
			return false;
		}
	}
	if (strMes == 2) {
		strResto = strAno % 4;
		if (strResto == 0) {
			if (strDia > 29) {
				return false;
			}
		} else {
			if (strDia > 28) {
				return false;
			}
		}
	}
	return true;
}	

function IsNumber(checkStr)
{
  var checkOK = "0123456789-,.";
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    if (ch == ".")
    {
      allNum += ",";
      decPoints++;
    }
    else
      allNum += ch;
  }
  if (!allValid)
  {
    return -1;
  }

  if (decPoints > 3)
  {
    return -2;
  }
  return 1;
}

function IsOnlyNumber(checkStr)
{
  var checkOK = "0123456789";
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
				  
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    if (ch == ".")
    {
      allNum += ",";
      decPoints++;
    }
    else
      allNum += ch;
  }
  if (!allValid)
  {
    return -1;
  }

  if (decPoints > 3)
  {
    return -2;
  }
  return 1;
}

////////////////////////////////////////////////////
// Funciónes que chequean que solo se ingresen
// valores numéricos con coma o enteros
////////////////////////////////////////////////////
function kp_numeric() {
	if ((event.keyCode != 46) && (event.keyCode < 48 || event.keyCode > 57)  && (event.keyCode != 13))
		event.returnValue = false;
	if (event.keyCode == 46) {
		if ((event.srcElement.value.indexOf(".") > -1) && (event.keyCode != 13))
			event.returnValue = false;
    }
    }
function kp_integer() {
	if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode != 13))
			event.returnValue = false;
  }
////////////////////////////////////////////////////
/////////////////////////////////////////////
// Funcion que si la tecla presionada es
// ENTER hace 'Accion'
/////////////////////////////////////////////
function kp_enter(accion) {
	if (event.keyCode == 13){
		event.returnValue = false;
		eval(accion);		
	}
  }
/////////////////////////////////////////////
// Funcion que devuelve un numero redondeado
// a dos decimales
/////////////////////////////////////////////
function round2(numbertoround) {
var pospunto = 0;
var snumber = "";

	numbertoround = (Math.round(numbertoround * 100) / 100);
	snumber= numbertoround.toString();
	pospunto = snumber.search(/\./);
	if (pospunto != -1) {
		snumber = snumber + "00";
		snumber = snumber.substring(0,pospunto+3);
	}
	else {
		snumber = snumber + ".00";
  }
	return snumber
}
/////////////////////////////////////////////

/////////////////////////////////////////////
// Funcion que devuelve un numero redondeado
// a tres decimales
/////////////////////////////////////////////
function round3(numbertoround) {
var pospunto = 0;
var snumber = "";

	numbertoround = (Math.round(numbertoround * 1000) / 1000);
	snumber= numbertoround.toString();
	pospunto = snumber.search(/\./);
	if (pospunto != -1) {
		snumber = snumber + "000";
		snumber = snumber.substring(0,pospunto+4);
	}
	else {
		snumber = snumber + ".000";
  }
	return snumber
}
/////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
function ValidarEmail(emailStr) 
{
	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) 
	{
		return "La dirección de e-mail es incorrecta."
	}
	var user=matchArray[1]
	var domain=matchArray[2]

	if (user.match(userPat)==null) 
	{
		return "El nombre de usuario de la dirección de e-mail no es válido."
	}

	var IPArray=domain.match(ipDomainPat)

	if (IPArray!=null) 
	{
		// this is an IP address
		for (var i=1;i<=4;i++) 
		{
			if (IPArray[i]>255) 
			{
				return "La dirección IP del e-mail ingresado no es válida."
			}
		}
	}

	var domainArray=domain.match(domainPat)

	if (domainArray==null) 
	{
		return "El nombre del dominio del e-mail no es válido."
	}

	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length

	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) 
	{
	   return "La dirección de e-mail debe terminar en un dominio de tres letras o un país de dos."
	}

	if (len<2) 
	{
	   var errStr="La dirección de e-mail carece de hostname."
	   return errStr
	}
	return "";
}
