function ValidaData(campo)
{
	if( campo != '' )
	{
		var strData = campo.value;
		var pos = strData.indexOf("/",0);
		if (pos < 0){
			return false
		}
		dia = strData.slice(0,pos);

		pos2 = strData.indexOf("/",pos+1);
		if (pos < 0){
			return false
		}
		mes = strData.slice(pos+1,pos2);
	
		ano = strData.substr(pos2+1);

		dia= "00" + dia;
		dia = dia.substring(dia.length-2,dia.length);
   		mes= "00" + mes;
		mes = mes.substring(mes.length-2,mes.length);

		if (strData.value != '' && strData.length != 10) {
			return false;
		}
			
		if (isNaN(dia) || isNaN(mes) || isNaN(ano)) {
			return false;
		}
	
		if (ano.length < 4){
			return false;
		}

		if (mes < 1 || mes > 12) {
			return false;
		}

		if (dia < 1 || dia > 31) {
			return false;
		}

		if ((mes==4 || mes==6 || mes==9 || mes==11) && dia==31) {
			return false;
		}

		if (strData.indexOf("_") != -1) {
			return false;
		}

		if (mes == 2) {
			var isleap = (ano % 4 == 0 && (ano % 100 != 0 || ano % 400 == 0))
			if (dia>29 || (dia==29 && !isleap)) {
				return false;
			}
		}
	}
	return true;
}


function MascaraData(campo,w)
{
   var Data = SoNumero(campo.value);
   var DataAux = ''; 
   var campo1 = campo.value;

   if (w.keyCode == 8) {      
     if (campo1.length == 2 || campo1.length == 5) {
        Data = Data.substr(0,Data.length-1);
       } 
    }
    
   if (Data.length < 9) {
     for (var i=0; i < Data.length; i++) {
       DataAux = DataAux + Data.substr(i,1);     
       if (i == 1 || i == 3) {
         DataAux = DataAux + "/";
        }
      }  
     campo.value = DataAux;
    }
   else {
      campo.value = campo.value.substr(0,10);
     }    
}


function DataMaior(dataini, datafim)
{   
   var Dt_inicial = dataini.substr(6,4) + dataini.substr(3,2) + dataini.substr(0,2);
   var Dt_final   = datafim.substr(6,4) + datafim.substr(3,2) + datafim.substr(0,2);

   if (Dt_inicial > Dt_final) {
      return (true);
    }  
   else {
      return (false);
     } 
}


function DataMenor(dataini, datafim)
{   
   var Dt_inicial = dataini.substr(6,4) + dataini.substr(3,2) + dataini.substr(0,2);
   var Dt_final   = datafim.substr(6,4) + datafim.substr(3,2) + datafim.substr(0,2);
   if (Dt_inicial < Dt_final) {
      return (true);
    }  
   else {
      return (false);
     } 
}

function DataIgual(dataini, datafim)
{
  if (!DataMaior(dataini, datafim) && !DataMenor(dataini, datafim)) {
      return (true);
    }  
   else {
      return (false);
     }   
}

function GetDia(Data)
{  
   return (Data.substr(0,2));
}


function GetMes(strData)
{
   return (strData.substr(3,2));
}


function GetAno(strData)
{  
   return (strData.substr(6,4));
}


function DataInversa(strData)
{
    var aaaa = "0000";
    var mm = "00";
    var dd = "00";

    if (strData.length == 10){
        aaaa = GetAno(strData);
        mm   = GetMes(strData);
        dd   = GetDia(strData);
    }
    return (aaaa + mm + dd);
}

function hoje(){

	var dataAtual = new Date();
	var datatmp = new Array();
	
	var dia = dataAtual.getDate();
	var mes = dataAtual.getMonth()+1;
	var ano = dataAtual.getFullYear();
	var strData = (dia+"/"+mes+"/"+ano).toString();

	datatmp[0] = dia;
	datatmp[1] = mes;
	datatmp[2] = ano;
	if(strData.length < 10){

		datatmp = strData.split("/");
		
		if (datatmp[0].length == 1){
			datatmp[0]="0"+datatmp[0];
		}
		if (datatmp[1].length == 1){
			datatmp[1]="0"+datatmp[1];
		}
	}
	return(datatmp[0]+"/"+datatmp[1]+"/"+datatmp[2]);
}

/**
 * Retorna a hora atual.
 * @author rogerio (rtcoelho)
 * @since 0.1
 * @version 0.1, 14/12/2006
 * @return String
 */
function agora() {
	var dataAtual = new Date();
	var datatmp   = new Array();

	var hor = dataAtual.getHours();
	var min = dataAtual.getMinutes();

	if( hor < 10 ) hor = '0'+hor;
	if( min < 10 ) min = '0'+min;

	return (hor + ':' + min).toString(); 
} // fim agora()

/**
 * Valida se a data e hora inicial informada é maior que a data e hora final.
 * @author rogerio (rtcoelho)
 * @since 0.1
 * @version 0.1, 14/12/2006
 * @param String dataini - data e hora no formato DD/MM/AAAA HH:MM
 * @param String datafim - data e hora no formato DD/MM/AAAA HH:MM
 * @return Boolean
 */
function dataHoraMaior(dataini, datafim) { 
	//alert('dataini: '+dataini+'\ndatafim: '+datafim);
  
   	var ini = dataini.substr(6,4) + dataini.substr(3,2) + dataini.substr(0,2) + dataini.substr(11,2) + dataini.substr(14,2);
	var fim = datafim.substr(6,4) + datafim.substr(3,2) + datafim.substr(0,2) + datafim.substr(11,2) + datafim.substr(14,2);	
	//alert('ini: '+ini+'\nfim: '+fim);
   	var retorno = false;
   	if( ini > fim ) retorno = true;

    return retorno;
}

/**
 * Valida se a data e hora inicial informada é menor que a data e hora final.
 * @author rogerio (rtcoelho)
 * @since 0.1
 * @version 0.1, 14/12/2006
 * @param String dataini - data e hora no formato DD/MM/AAAA HH:MM
 * @param String datafim - data e hora no formato DD/MM/AAAA HH:MM
 * @return Boolean
 */
function dataHoraMenor(dataini, datafim) {
   	var ini = dataini.substr(6,4) + dataini.substr(3,2) + dataini.substr(0,2) + dataini.substr(11,2) + dataini.substr(14,2);
	var fim = datafim.substr(6,4) + datafim.substr(3,2) + datafim.substr(0,2) + datafim.substr(11,2) + datafim.substr(14,2);	
	
   	var retorno = false;
   	if( ini < fim ) retorno = true;

    return retorno; 
}

/**
 * Valida se a data e hora inicial informada é igual que a data e hora final.
 * @author rogerio (rtcoelho)
 * @since 0.1
 * @version 0.1, 14/12/2006
 * @param String dataini - data e hora no formato DD/MM/AAAA HH:MM
 * @param String datafim - data e hora no formato DD/MM/AAAA HH:MM
 * @return Boolean
 */
function dataHoraIgual(dataini, datafim) {
   	var ini = dataini.substr(6,4) + dataini.substr(3,2) + dataini.substr(0,2) + dataini.substr(11,2) + dataini.substr(14,2);
	var fim = datafim.substr(6,4) + datafim.substr(3,2) + datafim.substr(0,2) + datafim.substr(11,2) + datafim.substr(14,2);	
	
   	var retorno = false;
   	if( ini == fim ) retorno = true;

    return retorno;   
}


