//função responsável por colocar as barras na data durante a digitação, além de validar a data.
//para usar, escute os eventos: "onkeyup" e "onblur"
function formataData (event, idDoCampo)
{
  var data = document.getElementById(idDoCampo).value;
  var tipo, codigoDaTecla;
  tipo = event.type;
  if(event.keyCode)
	codigoDaTecla = event.keyCode;
  if(event.which)
    codigoDaTecla = event.which;
	
  if (tipo == "keyup")
	{
		{
		  if ((data.length == 2) && (codigoDaTecla != 8))
			{
			  data = data + "/";
				eval ("document.getElementById('" + idDoCampo + "').value='" + data + "'");
			}
			if ((data.length == 5) && (codigoDaTecla != 8))
			{
			  data = data + "/";
				eval ("document.getElementById('" + idDoCampo + "').value='" + data + "'");
			}
			if ((data.length == 3) && (data.substr ((data.length - 1), (data.length)) != "/"))
			{
				event.returnValue = false;
				eval ("document.getElementById('" + idDoCampo + "').value='" + data.substr (0, (data.length - 1)) + "/" + data.substr ((data.length -1), (data.length)) + "'");
			}
			if ((data.length == 6) && (data.substr ((data.length - 1), (data.length)) != "/"))
			{
				event.returnValue = false;
				eval ("document.getElementById('" + idDoCampo + "').value='" + data.substr (0, (data.length - 1)) + "/" + data.substr ((data.length -1), (data.length)) + "'");
			}			
		}
	}
	else if (tipo == "blur")
	{
	  if (data.length != 0)
		{
  	  if (!(validaData (data)))
    	{
    	  eval ("document.getElementById('" + idDoCampo + "').value=''");
    		eval ("document.getElementById('" + idDoCampo + "').focus()");
    	}
		}
	}
}

//função chamada internamente pela função "formataData". Retorna true se for uma data válida e false caso contrário
function validaData(data) {
var myRegex = new RegExp("^([0][1-9]|[1-2][0-9]|[3][0-1])\/([0][1-9]|[1][0-2])\/[1-9][0-9]{3}$");
if (data.match(myRegex))
	{//valid date format, check for valid date
	var theDay = Math.round(data.substr(0,2));
	var theMonth = Math.round(data.substr(3,2));
	var theYear = Math.round(data.substr(6,4));
	
	if ((theYear%4 == 0) && (theDay > 29) && (theMonth == 2)) {
	  alert ("Data invalida!");
		return false;
		}
	else if ((theYear%4 != 0) && (theDay > 28) && (theMonth == 2)) {
  	alert ("Data invalida!");
		return false;
		}
	else if ((theDay > 30) && (theMonth == 4 || theMonth == 6 || theMonth == 9 || theMonth == 11)) {
	  alert ("Data invalida!");
		return false;
		}
	else {
		return true;
		}
	}
else
	{
	alert ("Data invalida!");
	return false;
	}
}
