/*****************************************

	@Arquivo:
		js_reservas.js

	@Data:
		24/05/2009

	@Objetivo:
		Contém as funções do módulo de reserva on-line

	@Modificações (Data - Descrição):
		- sem modificações -


*****************************************/

var reservas = {
	validaFrmReserva: function(frm){
		if(frm.idHotel.selectedIndex == 0){
			alert("Selecione um hotel!");
			frm.idHotel.focus();
			return false;
		}
		if(frm.dtCheckin.value.length == 0){
			alert("Informe a data de chegada!");
			frm.dtCheckin.focus();
			return false;
		}
		if(!fieldMaskValidator.data(frm.dtCheckin))
			return false;
		
		//define a data de hoje
		var dtHoje	= new Date();
		var diaHj	= (dtHoje.getDate() < 10) ? '0' + dtHoje.getDate() : dtHoje.getDate();
		var mesHj	= (dtHoje.getMonth() < 10) ? '0' + (dtHoje.getMonth()+1) : dtHoje.getMonth();
		var dtHojeFormatada = diaHj + '/' + mesHj + '/' + dtHoje.getYear();
		
		//verifica se a data de checkin informada é maior ou igual que a data de hoje
		if((dtHojeFormatada != frm.dtCheckin.value) && (comparaData(dtHojeFormatada,frm.dtCheckin.value) == dtHojeFormatada)){
			alert("A data de check in informada deverá ser maior ou igual a data de hoje (" + dtHojeFormatada + ")!");
			frm.dtCheckin.focus();
			frm.dtCheckin.select();
			return false;
		}
		
		if(frm.dtCheckout.value.length == 0){
			alert("Informe a data de saída!");
			frm.dtCheckout.focus();
			return false;
		}
		if(!fieldMaskValidator.data(frm.dtCheckout))
			return false;
		
		//verifica se a data de checkout informada é maior ou igual que a data de checkout
		if((frm.dtCheckin.value != frm.dtCheckout.value) && (comparaData(frm.dtCheckin.value,frm.dtCheckout.value) == frm.dtCheckin.value)){
			alert("A data de check out informada deverá ser maior ou igual a data de check in!");
			frm.dtCheckout.focus();
			frm.dtCheckout.select();
			return false;
		}
		
		
		if(frm.numAdultos.selectedIndex == 0){
			alert("Selecione a quantidade de adultos!");
			frm.numAdultos.focus();
			return false;
		}
		if(frm.numCriancas.selectedIndex == 0){
			alert("Selecione a quantidade de crianças!");
			frm.numCriancas.focus();
			return false;
		}
		
		return true;
	}

,	validaFrmEnvioEmail: function(frm){
		//dados para contato
		if(frm.reservaNome.value.length == 0){
			alert("Informe em nome de quem será feita a reserva!");
			frm.reservaNome.focus();
			return false;
		}
		if(frm.reservaTelefone.value.length == 0){
			alert("Informe um telefone para contato!");
			frm.reservaTelefone.focus();
			return false;
		}
		if(frm.reservaEmail.value.length == 0){
			alert("Informe um e-mail para contato!");
			frm.reservaEmail.focus();
			return false;
		}
		if(!fieldMaskValidator.email(frm.reservaEmail))
			return false;
		
		if(frm.reservaCpf.value.length == 0){
			alert("Informe o CPF para quem será feita a reserva!");
			frm.reservaCpf.focus();
			return false;
		}
		if(!fieldMaskValidator.cpf(frm.reservaCpf))
			return false;
		
		//dados da hospedagem
		if(frm.reservaHotel.selectedIndex == 0){
			alert("Selecione um hotel!");
			frm.reservaHotel.focus();
			return false;
		}
		if(frm.reservaCheckin.value.length == 0){
			alert("Informe a data de chegada!");
			frm.reservaCheckin.focus();
			return false;
		}
		if(!fieldMaskValidator.data(frm.reservaCheckin))
			return false;
		
		//define a data de hoje
		var dtHoje	= new Date();
		var diaHj	= (dtHoje.getDate() < 10) ? '0' + dtHoje.getDate() : dtHoje.getDate();
		var mesHj	= (dtHoje.getMonth() < 10) ? '0' + (dtHoje.getMonth()+1) : dtHoje.getMonth();
		var dtHojeFormatada = diaHj + '/' + mesHj + '/' + dtHoje.getYear();
		
		//verifica se a data de checkin informada é maior ou igual que a data de hoje
		if((dtHojeFormatada != frm.reservaCheckin.value) && (comparaData(dtHojeFormatada,frm.reservaCheckin.value) == dtHojeFormatada)){
			alert("A data de entrada informada deverá ser maior ou igual a data de hoje (" + dtHojeFormatada + ")!");
			frm.reservaCheckin.focus();
			frm.reservaCheckin.select();
			return false;
		}
		
		if(frm.reservaCheckout.value.length == 0){
			alert("Informe a data de saída!");
			frm.reservaCheckout.focus();
			return false;
		}
		if(!fieldMaskValidator.data(frm.reservaCheckout))
			return false;
		
		//verifica se a data de checkout informada é maior ou igual que a data de checkout
		if((frm.reservaCheckin.value != frm.reservaCheckout.value) && (comparaData(frm.reservaCheckin.value,frm.reservaCheckout.value) == frm.reservaCheckin.value)){
			alert("A data de saída informada deverá ser maior ou igual a data de chegada!");
			frm.reservaCheckout.focus();
			frm.reservaCheckout.select();
			return false;
		}
		
		return true;
	}
	
,	dtCheckInOutFocus: function(cp,msg){
		if(cp.value == msg){
			cp.value = '';
		}
	}

,	dtCheckInOutBlur: function(cp,msg){
		if(cp.value.length == 0){
			cp.value = msg;
			return true;
		}
		else{
			if(!fieldMaskValidator.data(cp))
				return false;
		}
	}

	/*
		Abre o calendário popup que possibilita a seleção
			de uma data sem a necessidade de digitá-la.
	*/
,	openCalendar: function(cpData,objTrigger,alingCal){
		if(calendarTemp != null){
			calendarTemp.hide();
		}
		else{
			var	dtHoje	= new Date();
			var	aHj		= dtHoje.getFullYear();
			
			var cal = new Calendar(false,null, reservas.onSelectDate, reservas.onCloseCal);
			var calendarTemp = cal;
			
			cal.weekNumbers = false;
			cal.setDateFormat("dd/mm/y");
			cal.setTtDateFormat("DD, dd \de MM \de y");
			cal.setDisabledHandler(reservas.desabilitaDatasAnteriores);
			cal.setRange(aHj,(aHj+5));
			cal.create();
		}
		
		//alinhamento do calendário
		aCal = (alingCal == undefined) ? "Bl" : alingCal;
		
		calendarTemp.sel = cpData;
		calendarTemp.showAtElement(objTrigger,aCal);
	}

	/*
		Coloca a data selecionada no campo INPUT relacionado.
	*/
,	onSelectDate: function(objCalendar,vlData) {
		objCalendar.sel.value = vlData;
		if (objCalendar.dateClicked) {
			objCalendar.callCloseHandler();
		}
	}

	/*
		Esconde (fecha) o calendário ao selecionar uma data
	*/
,	onCloseCal: function(objCalendar){
		objCalendar.hide();
	}

	/*
		Desabilita datas anteriores ao dia atual.
	*/
,	desabilitaDatasAnteriores: function(date){
		var	dtHoje	= new Date();
		var	dHj		= dtHoje.getDate();
		var	mHj		= dtHoje.getMonth();
		var	aHj		= dtHoje.getFullYear();
		
		if(date.getFullYear() < aHj)
			return true; //desabilita datas anteriores ao ano atual
		else{
			if(date.getFullYear() == aHj){
				if(date.getMonth() < mHj)
					return true; //desabilita datas anteriores ao mês atual
				else{
					if(date.getMonth() == mHj && date.getDate() < dHj)
						return true; //desabilita datas anteriores ao dia atual
				}
			}
		}
		
		return false; // enable other dates
	}
}
