//=============== FUNÇÕES DE VALIDAÇÃO DURANTE A DIGITAÇÃO ================================================

/*----------------------------------------------------------------------------------------------------
Compara datas - se a primeira é posterior à segunda
----------------------------------------------------------------------------------------------------*/
function compararDatas (value1, value2) {
   var date1, date2;
   var month1, month2;
   var year1, year2;

   date1 = parseFloat(value1.substring (0, value1.indexOf ("/")));
   month1 = parseFloat(value1.substring (value1.indexOf ("/")+1, value1.lastIndexOf ("/")));
   year1 = parseFloat(value1.substring (value1.lastIndexOf ("/")+1, value1.length));

   date2 = parseFloat(value2.substring (0, value2.indexOf ("/")));
   month2 = parseFloat(value2.substring (value2.indexOf ("/")+1, value2.lastIndexOf ("/")));
   year2 = parseFloat(value2.substring (value2.lastIndexOf ("/")+1, value2.length));
   
   //alert ( date1 + "-" + month1 + "-" + year1 );
   //alert ( date2 + "-" + month2 + "-" + year2 );
   
   if (year1 > year2) return 1;
   else if (year1 < year2) return -1;
   else if (month1 > month2) return 1;
   else if (month1 < month2) return -1;
   else if (date1 > date2) return 1;
   else if (date1 < date2) return -1;
   else return 0;
   
}

/*----------------------------------------------------------------------------------------------------
Não deixa o cara digitar nada além de números, e formata o campo como Valor Monetário
----------------------------------------------------------------------------------------------------*/
function fnData(strData, strSeparador, strTamanhoAno, e) {
   var key = '';
   var i = j = 0;
   var len = len2 = 0;
   var strCheck = '0123456789';

   var whichCode = (window.Event) ? e.which : e.keyCode;
   if (whichCode == 13) return true;  // Enter
   key = String.fromCharCode(whichCode);  // Get key value from key code
   if (strCheck.indexOf(key) == -1) return false;  // Not a valid key
   len = strData.length;
   if (len == 0) return "";
   if (len == strTamanhoAno) return strSeparador + strData;
   if (len == strTamanhoAno+2) return strSeparador + strData;
}

/*----------------------------------------------------------------------------------------------------
Verifica se o string digitado é uma data válida
----------------------------------------------------------------------------------------------------*/
function fnValidaData(str)
{
  if (str.length != 10) { return false }

  for (j=0; j<str.length; j++) {
    if ((j == 2) || (j == 5)) {
      if (str.charAt(j) != "/") { return false }
    } else {
      if ((str.charAt(j) < "0") || (str.charAt(j) > "9")) { return false }
    }
  }

  var day = str.charAt(0) == "0" ? parseInt(str.substring(1,2)) : parseInt(str.substring(0,2));
  var month = str.charAt(3) == "0" ? parseInt(str.substring(4,5)) : parseInt(str.substring(3,5));
  var begin = str.charAt(6) == "0" ? (str.charAt(7) == "0" ? (str.charAt(8) == "0" ? 9 : 8) : 7) : 6;
  var year = parseInt(str.substring(begin, 10));

  if (day == 0) { return false }
  if (month == 0 || month > 12) { return false }
  if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
    if (day > 31) { return false }
  } else {
    if (month == 4 || month == 6 || month == 9 || month == 11) {
      if (day > 30) { return false }
    } else {
      if (year%4 != 0) {
        if (day > 28) { return false }
      } else {
        if (day > 29) { return false }
      }
    }
  }
  return true;
}

/*----------------------------------------------------------------------------------------------------
Compara datas no formato brasileiro e americano
----------------------------------------------------------------------------------------------------*/
function fnComparaDatas(inicial, final, formato)
{
   // terminar a função
   // é preciso que ela remonte a data como quer que ela seja passada
   var dti = dtf = "";
   var dia = mes = ano = "";
   dia = inicial.substr(0, 2);
   mes = inicial.substr(3, 2);
   ano = inicial.substr(6);
   alert(inicial + "== " + dia + " - " + mes + " - " + ano);
   
   if (formato == "" || formato.toUpperCase() == "BRA") {
      dti = inicial.getDay() + "/" + inicial.getMonth() + "/" + inicial.getYear();
      dtf = final.getDay() + "/" + final.getMonth() + "/" + final.getYear();
   } else {
      dti = inicial.getMonth() + "/" + inicial.getDay() + "/" + inicial.getYear();
      dtf = final.getMonth() + "/" + final.getDay() + "/" + final.getYear();
   }
   if (Date.parse(dti) > Date.parse(dtf)) {
      alert("A data inicial deve ser menor que a data final");
      return false;
   }
}
