function Calendario() {
	
	this.contador = 0;
	this.diaPadrao = 0;
	
	
	/*
	 * Faz a conversao de data para o formato de banco de dados (Ex.: 2008-01-01)
	 */
	this.formataDataParaHtml = function(vData) {
		var dataComoArray = vData.split("-");
		return dataComoArray[2] + "/" + dataComoArray[1] + "/" + dataComoArray[0];
	}
	
	/*
	 * Faz a conversao de data para o formato brasileiro (Ex.: 01/01/2008)
	 */
	this.formataDataParaServidor = function(vData) {
		var dataComoArray = vData.split("/");
		return dataComoArray[2] + "-" + dataComoArray[1] + "-" + dataComoArray[0];
	}

	
	this.criaObjetoDate = function(vData) {
		var dataComoArray = vData.split("/");
		vData = dataComoArray.length == 3 ? this.formataDataParaServidor(vData) : vData;

		var novaData = vData.split("-");

		return new Date(novaData[0], novaData[1] - 1, novaData[2]);

	}
	
	this.getDiaSemana = function(data) {
		// Formato de entrada: preferencialmente DD/MM/YYYY
		
		var objData = this.criaObjetoDate(data);
		
		// 0 - Dom
		// 1 - Seg
		// 2 - Ter
		// 3 - Qua
		// 4 - Qui
		// 5 - Sex
		// 6 - Sab.
		return objData.getDay();		
	}
		
	this.comparaDataMenor = function(data1, data2) {

		var dataMenor = this.criaObjetoDate(data1);
		var dataMaior = this.criaObjetoDate(data2);
		
		return dataMenor.getTime() < dataMaior.getTime();    
	}		

	/*
	 * Faz a validacao dos valores de horario
	 */
	this.validaHora = function(vHora) {
		var rv = true;
		
		var horaComoArray = vHora.split(":");
		
		if (horaComoArray != undefined && horaComoArray.length == 3) {
			if (horaComoArray[0] > 24 || horaComoArray[0] < 1) {
				rv = false;
			}
			else if (horaComoArray[1] > 59 || horaComoArray[1] < 0) {
				rv = false;
			}
			else if (horaComoArray[2] > 59 || horaComoArray[2] < 0) {
				rv = false;
			}
		}
		
		return rv;
	}
	
	/*
	 * Soma uma quantidade de dias a uma determinada data
	 */
	this.somaDias = function(vData, vDias) {
		var dataComoArray = vData.split("/");
		
		var dia = parseInt( dataComoArray[0], 10 );
		var mes = parseInt( dataComoArray[1], 10 ) - 1;
		var ano = parseInt( dataComoArray[2], 10 );
	
		var dataSeguinte = new Date(ano, mes, dia + vDias);
		
		var diaSeguinte = dataSeguinte.getDate() < 10 ? "0" + dataSeguinte.getDate() : dataSeguinte.getDate();
		var mesSeguinte = (dataSeguinte.getMonth() + 1) < 10 ? "0" + (dataSeguinte.getMonth() + 1) : (dataSeguinte.getMonth() + 1);
		var anoSeguinte = dataSeguinte.getFullYear() < 10 ? "0" + dataSeguinte.getFullYear() : dataSeguinte.getFullYear();
	
		return diaSeguinte + "/" + mesSeguinte + "/" + anoSeguinte;
	}
	
	/*
	 * Faz a validacao se uma data encontra-se dentro de um determinado periodo
	 */
	this.validaDataNoPeriodo = function(vDataInicial, vDataFinal, vData) {
		var dataInicialComoArray = vDataInicial.split("/");
		var dataFinalComoArray = vDataFinal.split("/");
		var dataComoArray = vData.split("/");
		 
		var objDataInicial = new Date(dataInicialComoArray[2], dataInicialComoArray[1], dataInicialComoArray[0]);
		var objDataFinal = new Date(dataFinalComoArray[2], dataFinalComoArray[1], dataFinalComoArray[0]);
		var objData = new Date(dataComoArray[2], dataComoArray[1], dataComoArray[0]);
		
		return (objData >= objDataInicial && objData <= objDataFinal);
	}
	
	//IMPLEMENTADO POR JUNOR 19/11/2009 METODO RESPONSAVEL POR DIMINUIR A DIFERENCA ENTRE DIAS
	this.subtrairDiferencaEntreDias = function(vDataInicial, vDataFinal) {
		var dataInicialComoArray = vDataInicial.split("/");
		var dataFinalComoArray = vDataFinal.split("/");
		
		var objDataInicial = new Date(dataInicialComoArray[2], (dataInicialComoArray[1] - 1), dataInicialComoArray[0]);
		var objDataFinal = new Date(dataFinalComoArray[2], (dataFinalComoArray[1] - 1), dataFinalComoArray[0]);
		
		return ((objDataFinal - objDataInicial) / 86400000);
	}
	
	this.formataDataHoraParaCliente = function(dataHora) {
		var arrayDataHora = dataHora.split(" ");
		
		var data = arrayDataHora[0];
		var hora = arrayDataHora[1];
		
		var dataFormatada = this.formataDataParaHtml(data);
		dataFormatada = dataFormatada + " " + hora;
				
		return dataFormatada;
	} 
	
	this.getDataSeguinte = function(umaData) {
		var vContador = this.getContador();
		var vDiaPadrao = this.getDiaPadrao();
		
		var dataComoArray = umaData.split("/");
		
		var dia = parseInt( dataComoArray[0], 10 );
		var mes = parseInt( dataComoArray[1], 10 ) - 1;
		var ano = parseInt( dataComoArray[2], 10 );
	
		if (vContador == 0) {
			vDiaPadrao = dia;
			this.setDiaPadrao(vDiaPadrao);
			this.setContador(++vContador);
		}
			
		var dataSeguinte = new Date(ano, mes+1, vDiaPadrao);
		if (dataSeguinte.getDate() != vDiaPadrao) {
			dataSeguinte = new Date(ano, mes+1, vDiaPadrao-dataSeguinte.getDate());
		}
		
		var diaSeguinte = dataSeguinte.getDate() < 10 ? "0" + dataSeguinte.getDate() : dataSeguinte.getDate();
		var mesSeguinte = (dataSeguinte.getMonth() + 1) < 10 ? "0" + (dataSeguinte.getMonth() + 1) : (dataSeguinte.getMonth() + 1);
		var anoSeguinte = dataSeguinte.getFullYear() < 10 ? "0" + dataSeguinte.getFullYear() : dataSeguinte.getFullYear();
	
		return diaSeguinte + "/" + mesSeguinte + "/" + anoSeguinte;
	}
	
	this.getContador = function() {
		return this.contador;
	}
	
	this.setContador = function(vContador) {
		this.contador = vContador;
	}

	this.getDiaPadrao = function() {
		return this.diaPadrao;
	}
	
	this.setDiaPadrao = function(vDiaPadrao) {
		this.diaPadrao = vDiaPadrao;
	}
}