/**
 *	Função responsável por realizar a máscara de data em um campo 
 *	seguindo o modelo DD/MM/AAAA
 *	----> USADA NO EVENTO KEYUP <----
 *
*/
function formatarData(objeto,event)
{
	var i;
	var strData = objeto.value;
	
	//Se tamanho da String maior que 10 caracteres truncar
	if (strData.length > 10)
	{
		strData = strData.substr(0,10);
	}
	
	// Verifica se o caractere inserido é válido
	for (i=0; i<strData.length; i++)
	{
		if (((i!=2 && i!=5) && "0123456789".indexOf(strData.charAt(i)) < 0) || ((i==2 || i==5) && "0123456789/".indexOf(strData.charAt(i)) < 0))
		{
			strData = strData.replace(strData.charAt(i),"");
			i=0;
		}
	}
	
	//Corrigir situação onde o usuário segura uma TECLA INVÁLIDA durante vários segundos
	if ("0123456789".indexOf(strData.charAt(0)) < 0)
		strData = "";
	
	//Se a String está na posição de inclusão das barras, inclui-la
	if (event.keyCode != 8 && (strData.length == 2 || strData.length == 5))
	{
		strData += "/";
	}
	
	// Verifica se o caractere inserido é válido
	for (i=0; i<strData.length; i++)
	{
		if ((i==2 || i==5) && strData.charAt(i)!="/")
		{
			strData = strData.substring(0,i) + "/" + strData.substring(i,strData.length);
		}
	}
	
	objeto.value = strData;
}

function checarData(objName)
{
	var datefield = objName;
  	if (objName.value == "" )
	{
		return false;
	}
	else
	{
		if (isDate(objName.value, 'd/M/yyyy') == false)
		{
			datefield.select();
			datefield.value = "";
			alert("Esta data é inválida. Por favor, tente novamente.");
			datefield.focus();      
			return(false);
		}
		else
			return(true);
	}
}

function Make_Array(n)
{
  for (var i = 0 ; i <= n ; i++) 
  { 
    this[i] = "";
  } 
}

function Data_caracteres(x)
{
  MAX=11;
  num = new Make_Array(MAX);
  num[0] = 0;
  num[1] = 1;
  num[2] = 2;
  num[3] = 3;
  num[4] = 4;
  num[5] = 5;
  num[6] = 6;
  num[7] = 7;
  num[8] = 8;
  num[9] = 9;
  num[10] = "/";
  n = x.length
  for(i=0;i<=n;i++)
  {
     var passou = 0;
     for(j=0;j<=MAX;j++)
     {
        if ((x.charAt(i)) == num[j])
        {
          passou = 1;
          break;
        }
        else
        {
          passou = 0;
        }
     }
     if (!(passou))
     {
       break;
     }
  }
  if (passou)
  {
    return (true);
  }
  else
  {
    return (false);
  }
}

function isDate(x)
  {
    erro_ = 0;
    if (x.length < 10)
    {
      erro_ = 1;
    }
    else
    {
      if (!(Data_caracteres(x)))
      {
        erro_ = 1;
      }
      else
      {
        dd = x.substring(0,2);
        mm = x.substring(3,5);
        yy = x.substring(6,10);
        b1 = x.substring(2,3);
        b2 = x.substring(5,6);
        if ((b1 != "/") || (b2 != "/"))
        {
          erro_ = 1;
        }
        else
        {
          if ((dd > 31) || (dd <= 0))
          {
            erro_ = 1;
          }
          else
          {
            if ((mm > 12) || (mm <= 0))
            {
              erro_ = 1;
            }
            else
            {
              if ((yy/4) == (Math.ceil(yy/4)))
              {
                if ((mm == 02) && (dd > 29))
                {
                  erro_ = 1;
                }
              }
              else
              {
                if ((mm == 02) && (dd > 28))
                {
                  erro_ = 1;
                }
              }
              if ((mm == 04) && (dd >30))
              {
                erro_ = 1;
              }
              if ((mm == 06) && (dd > 30))
              {
                erro_ = 1;
              }
              if ((mm == 09) && (dd > 30))
              {
                erro_ = 1;
              }
              if ((mm == 06) && (dd > 30))
              {
                erro_ = 1;
              }
              if ((mm == 11) && (dd > 30))
              {
                erro_ = 1;
              }
              if (yy < 1753)
              {
                erro_ = 1;
              }
            }
          }
        }
      }
    }
    if (erro_)
    {
      return (false);
    }
    else
    {
      return (true);
    }
}