function VInt(Inteiro) {
		var checkOK = "0123456789";
		var checkCh = 0;
		for (var i = 0; i < Inteiro.length; i++) {   
		    checkCh = 0;
			for (var j = 0;  j < checkOK.length;  j++) {  
			   if (Inteiro.charAt(i)==checkOK.charAt(j) && checkCh==0) {
			       checkCh = 1;
			   }
			}
			if (checkCh == 0) {
				return (false)
			}
		}
		return (true)
}

function VData(dma) {
	arr_dma = dma.split('/')
	if (arr_dma.length != 3) {
		return(false);
	}
	dd = arr_dma[0]; 
	mm = arr_dma[1]; 
	aa = arr_dma[2]; 
	if (!VInt(dd) || !VInt(mm) || !VInt(aa)) {
		return(false)
	}
	dd = parseInt(dd,10);
	mm = parseInt(mm,10);
	aa = parseInt(aa,10);

	if ((aa < 1900) || (mm < 1) || (mm > 12) || (dd < 1)) {
		return(false)
	}
	mes31 = new Array(1,3,5,7,8,10,12)
	for (var i=0;i<7;i++) { 
		if (mm == mes31[i]) {
			mes31_ok = true
			break
		}
		mes31_ok = false
	}
	if (mm == 2) {
		if (bisexto(aa)) {
			if (dd > 29) {
				return(false)
			}
		}
		else { 
			if (dd > 28) {
				return(false)
			}
		}
	} 
	else { 
		if ((mes31_ok) && (dd > 31)) {
					return(false)
		} 
		else { 
				if ((!mes31_ok) && (dd > 30)) {
						return(false)
				}
		}
	}
	return(true)
}

function FormataData(campo,teclapres) {
	var tecla = teclapres.keyCode;
	vr = campo.value;
	vr = vr.replace( ".", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	tam = vr.length + 1;

	if ( tecla != 9 && tecla != 8 ){
		if ( tam > 2 && tam < 5 )
			campo.value = vr.substr( 0, tam - 2  ) + '/' + vr.substr( tam - 2, tam );
		if ( tam >= 5 && tam <= 10 )
			campo.value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/' + vr.substr( 4, 4 ); 
	}

}

function ValidaData(data)
{
	if (trim(data.value).length>0){
	
		var Barra1   = data.value.indexOf('/')
		var Barra2   = data.value.lastIndexOf('/')
		var Length   = data.value.length
		var dia = data.value.substring(0,2)
		var mes = data.value.substring(3,5)
		var ano = data.value.substring(6,10)

		if ((Barra1 != "2") || (Barra2 != "5")){
		   alert("A data está no formato errado. O correto é DD/MM/AAAA.")
		   data.focus()
		   return false}

		if (dia > "31") {
		   alert("Dia inválido.")
		   data.focus()
		   return false}
		if (mes > "12") {
		   alert("Mês inválido.")
		   data.focus()
		   return false}
		if ((ano < "1850") || (ano.length != 4)){
		   alert("Ano inválido.")
		   data.focus()
		   return false}
		if ((mes == "04")||(mes == "06")||(mes == "09")||(mes == "11") ) {
			if (dia > 30) {
 			alert("Dia inválido. Este mês só tem 30 dias.")
		 	data.focus()
			return false}
		}
		if (mes == "02") {
			if (dia > 29) {
 			alert("Dia inválido. Fevereiro não tem este dia.")
		 	data.focus()
			return false}
			if (dia == 29) {
			if (!(((ano % 4 == 0) && (ano % 100 != 0)) || (ano % 400 == 0))){
 			 alert("Dia inválido. Este ano não é bissexto.");
		     data.focus();
		     return false}
			} 
		}
		return true
	}
}

function SomenteData(objCampo)
{
	if(event.keyCode < 48 || event.keyCode > 57)
	{
		event.keyCode = 0;
	}
	FormataData(objCampo, event)
}

function SomenteHoras(objCampo)
{
	if(event.keyCode < 48 || event.keyCode > 57)
	{
		event.keyCode = 0;
	}
	FormataHoras(objCampo, event)
}

function FormataHoras(campo,teclapres) {
	var tecla = teclapres.keyCode;
	vr = campo.value;
	vr = vr.replace( ".", "" );
	vr = vr.replace( ":", "" );
	vr = vr.replace( ":", "" );
	tam = vr.length + 1;

	if ( tecla != 9 && tecla != 8 ){
		if ( tam > 2 && tam < 5 )
			campo.value = vr.substr( 0, tam - 2  ) + ':' + vr.substr( tam - 2, tam );
	}

}

function bisexto(ano) {
	if (ano % 4 == 0) {
		if (ano % 100 == 0) {
			if (ano % 400 == 0) {
				return(true)
			} 
			return(false)
		} 
		return(true)
	} else {return(false) }
}

function CompData(data1,data2) {
	if (!VData(data1) || !VData(data2)) {
		return('invalido')	
	}
	if (FDataAMD(data1) > FDataAMD(data2)) {
		return('maior')
	} 
	if (FDataAMD(data1) < FDataAMD(data2)) {
			return('menor')
	}
	return('igual')
}

function FData(data) {
	if (!VData(data)) {
		return('invalido')	
	}
	arr_dma = data.split('/')
	dd = parseInt(arr_dma[0],10);
	dd = ((dd < 10) ? "0":"")+dd.toString()
	mm = parseInt(arr_dma[1],10); 
	mm = ((mm < 10) ? "0":"")+mm.toString()
	aa = parseInt(arr_dma[2],10);
	aa = ((aa < 10) ? "200":"")+aa.toString()
	aa = ((aa > 9 && aa < 30) ? "20":"")+aa.toString()
	aa = ((aa > 29 && aa < 100) ? "19":"")+aa.toString()
	return(dd+'/'+mm+'/'+aa)
}

function FDataAMD(data) {
	if (!VData(data)) {
		return('invalido')	
	}
	arr_dma = data.split('/')
	dd = parseInt(arr_dma[0],10);
	dd = ((dd < 10) ? "0":"")+dd.toString()
	mm = parseInt(arr_dma[1],10); 
	mm = ((mm < 10) ? "0":"")+mm.toString()
	aa = parseInt(arr_dma[2],10);
	aa = ((aa < 10) ? "200":"")+aa.toString()
	aa = ((aa > 9 && aa < 30) ? "20":"")+aa.toString()
	aa = ((aa > 29 && aa < 100) ? "19":"")+aa.toString()
	return(aa+mm+dd)
}

function SomenteDataAno(objCampo)
{
	if(event.keyCode < 48 || event.keyCode > 57)
	{
		event.keyCode = 0;
	}
	FormataDataAno(objCampo, event)
}

function FormataDataAno(campo,teclapres) {
	var tecla = teclapres.keyCode;
	vr = campo.value;
	vr = vr.replace( ".", "" );
	vr = vr.replace( "/", "" );
	vr = vr.replace( "/", "" );
	tam = vr.length + 1;
	
	if ( tecla != 9 && tecla != 8 ){
		if ( tam > 2 && tam < 5 )
			campo.value = vr.substr( 0, tam - 2  ) + '/' + vr.substr( tam - 2, tam );	

		if ( tam >= 5 && tam <= 10 )
			if(vr.substr( 4, 4 )=="")
				campo.value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/20' + vr.substr( 4, 4 ); 
			else
				campo.value = vr.substr( 0, 2 ) + '/' + vr.substr( 2, 2 ) + '/' + vr.substr( 4, 4 ); 			
	}

}

function DiferencaDias(pstrDataInicio, pstrDataFim)
{
	var QtdDias = 0
	var strNegativo = ""
	var strDataAux
	
	if(pstrDataInicio.length!=10 || pstrDataFim.length!=10)
	{
		return 0
	}
	
	var AnoInicio = parseFloat(pstrDataInicio.substring(6, 10))
	var AnoFim = parseFloat(pstrDataFim.substring(6, 10))	
	var MesInicio = parseFloat(pstrDataInicio.substring(3, 5))
	var MesFim = parseFloat(pstrDataFim.substring(3, 5))	
	var DiaInicio =parseFloat(pstrDataInicio.substring(0, 2))
	var DiaFim =parseFloat(pstrDataFim.substring(0, 2))	
	
	if(AnoInicio>AnoFim)
	{
		strDataAux = pstrDataFim
		pstrDataFim = pstrDataInicio
		pstrDataInicio = strDataAux
		
		AnoInicio = parseFloat(pstrDataInicio.substring(6, 10))
		AnoFim = parseFloat(pstrDataFim.substring(6, 10))	
		MesInicio = parseFloat(pstrDataInicio.substring(3, 5))
		MesFim = parseFloat(pstrDataFim.substring(3, 5))	
		DiaInicio =parseFloat(pstrDataInicio.substring(0, 2))
		DiaFim =parseFloat(pstrDataFim.substring(0, 2))	
		
		strNegativo = "-"
	}
	else
	{
		if(AnoInicio==AnoFim)
		{
			if(MesInicio>MesFim)
			{
				strDataAux = pstrDataFim
				pstrDataFim = pstrDataInicio
				pstrDataInicio = strDataAux
				
				AnoInicio = parseFloat(pstrDataInicio.substring(6, 10))
				AnoFim = parseFloat(pstrDataFim.substring(6, 10))	
				MesInicio = parseFloat(pstrDataInicio.substring(3, 5))
				MesFim = parseFloat(pstrDataFim.substring(3, 5))	
				DiaInicio =parseFloat(pstrDataInicio.substring(0, 2))
				DiaFim =parseFloat(pstrDataFim.substring(0, 2))	
				
				strNegativo = "-"
			}
			else
			{
				if(MesInicio==MesFim)
				{
					if(DiaInicio>DiaFim)
					{
						strDataAux = pstrDataFim
						pstrDataFim = pstrDataInicio
						pstrDataInicio = strDataAux
						
						AnoInicio = parseFloat(pstrDataInicio.substring(6, 10))
						AnoFim = parseFloat(pstrDataFim.substring(6, 10))	
						MesInicio = parseFloat(pstrDataInicio.substring(3, 5))
						MesFim = parseFloat(pstrDataFim.substring(3, 5))	
						DiaInicio =parseFloat(pstrDataInicio.substring(0, 2))
						DiaFim =parseFloat(pstrDataFim.substring(0, 2))	
						
						strNegativo = "-"
					}
				}
			}
		}
	}
	
	if(AnoInicio==AnoFim)
	{
		if(MesInicio==MesFim)
		{
			if(DiaInicio==DiaFim)
			{
				return 0
			}
			else
			{
				QtdDias = (DiaFim - DiaInicio)
				QtdDias = "" + QtdDias
				QtdDias = strNegativo + QtdDias
				
				return QtdDias
			}
		}
		else
		{
			if((MesFim-1)==MesInicio)
			{
				QtdDias = RetornaDiasMes(MesInicio, AnoInicio) - DiaInicio
				QtdDias = QtdDias + DiaFim
				
				QtdDias = "" + QtdDias
				QtdDias = strNegativo + QtdDias
				
				return QtdDias
			}
			else
			{
				QtdDias = RetornaDiasMes(MesInicio, AnoInicio) - DiaInicio
				QtdDias = QtdDias + DiaFim				
				for(intI=(MesInicio+1);intI<=(MesFim-1);intI++)
				{
					QtdDias = QtdDias + RetornaDiasMes(intI, AnoInicio)			
				}
				
				QtdDias = "" + QtdDias
				QtdDias = strNegativo + QtdDias
				
				return QtdDias
			}
		}
	}
	else
	{
		QtdDias = RetornaDiasMes(MesInicio, AnoInicio) - DiaInicio
		QtdDias = QtdDias + DiaFim
		
		if(MesInicio<12)
		{
			for(intI=(MesInicio+1);intI<=12;intI++)
			{
				QtdDias = QtdDias + RetornaDiasMes(intI, AnoInicio)
			}
		}
		if(MesFim>1)
		{
			for(intI=1;intI<=(MesFim-1);intI++)
			{
				QtdDias = QtdDias + RetornaDiasMes(intI, AnoFim)
			}
		}
		if((AnoFim-1)==AnoInicio)
		{
			QtdDias = "" + QtdDias
			QtdDias = strNegativo + QtdDias
			
			return QtdDias
		}
		else
		{
			for(intI=(AnoInicio+1);intI<=(AnoFim-1);intI++)
			{
				if(bisexto(intI))
				{
					QtdDias = QtdDias + 366
				}
				else
				{
					QtdDias = QtdDias + 365
				}
			}
			QtdDias = "" + QtdDias
			QtdDias = strNegativo + QtdDias
			
			return QtdDias
		}
	}
	return 0
	//var Data1=new Date(pstrDataInicio.substring(6, 10), (parseFloat(pstrDataInicio.substring(3, 5)) - 1) ,pstrDataInicio.substring(0, 2)) 
	//var Data2=new Date(pstrDataFim.substring(6, 10), (parseFloat(pstrDataFim.substring(3, 5)) - 1) ,pstrDataFim.substring(0, 2)) 
	
	//Mês funciona assim: 0-11 em JavaScript 
	// Configurando 1 dia em milisegundos 
	//var dia=1000*60*60*24 

	//return (Math.ceil((Data2.getTime()-Data1.getTime())/(dia))) 
}

function SomaMes(pstrData, pintMes)
{
	var Mes
	var Ano
	var Dia
	
	for(intI=0;intI<pintMes;intI++)
	{
		Mes = parseFloat(pstrData.substring(3, 5))
		Ano = parseFloat(pstrData.substring(6, 10))
		Mes = Mes + 1
		if(Mes==13)
		{
			Mes = 1
			Ano = Ano + 1 
		}
		if(Mes<10)
		{
			Mes = "0" + Mes
		}
		pstrData = pstrData.substring(0, 2) + "/" + Mes + "/" + Ano
	}
	
	Dia = parseFloat(pstrData.substring(0, 2))
	Mes = parseFloat(pstrData.substring(3, 5))
	Ano = parseFloat(pstrData.substring(6, 10))
	
	if(Dia==31)
	{
		if(Mes==4 || Mes==6 || Mes==9 || Mes==11)	
		{
			Dia = 30
		}
		else
		{
			if(Mes==2)
			{
				if(bisexto(Ano))
				{
					Dia = 29
				}
				else
				{
					Dia = 28
				}
			}
		}
	}
	else
	{
		if((Dia==30 || Dia==29) && Mes==2)
		{
			if(bisexto(Ano))
			{
				Dia = 29
			}
			else
			{
				Dia = 28
			}
		}
	}
	
	if(Mes<10)
	{
		Mes = "0" + Mes
	}
	if(Dia<10)
	{
		Dia = "0" + Dia
	}
	
	pstrData = Dia + "/" + Mes + "/" + Ano

	return pstrData
}

function RetornaDiasMes(pintMes, pintAno)
{
	if(pintMes==1 || pintMes==3 || pintMes==5 || pintMes==7 || pintMes==8 || pintMes==10 || pintMes==12)
	{
		return 31
	}
	else
	{
		if(pintMes!=2)
		{
			return 30
		}
		else
		{
			if(bisexto(pintAno))
			{
				return 29
			}
			else
			{
				return 28
			}
		}
	}
}

function Delay(millis) 
{
	date = new Date();
	var curDate = null;
	
	do 
	{ 
		var curDate = new Date(); 
	} 
	while(curDate-date < millis);
} 

