jQuery(document).ready(function() {
	bxsDatepickers.Init();
});

bxsDatepickers = {
	departureDatepicker: null,
	returnDatePicker: null,
	dag1: null,
	maandJaar1: null,
	dag2: null,
	maandJaar2: null,
	depCalIsOpened:false,
	retCalIsOpened:false,	
	minimumDaysBeforeDepartureFromToday: prm.config.workDaysBeforeDeparture_marge + 1,
	minimumDaysBeforeReturnFromDeparture: 0,
	
	Init: function() {
		var departureMinDate = new Date();
		departureMinDate.setDate(departureMinDate.getDate() + this.minimumDaysBeforeDepartureFromToday);
		
		this.departureDatepicker = jQuery("#bxsDepartureDate");
		this.returnDatePicker = jQuery("#bxsReturnDate");
		
		this.dag1 = jQuery("#bxsDag1");
		this.maandJaar1 = jQuery("#bxsMaandJaar1");
		this.dag2 = jQuery("#bxsDag2");
		this.maandJaar2 = jQuery("#bxsMaandJaar2");
		
		this.departureDatepicker.datepicker({
			showOn: "focus",
			changeYear: true,
			changeMonth: true,
			minDate: departureMinDate,
			dateFormat: general_.datepickerDateFormat,
			onSelect: this.DidChangeDepartureDate,
			numberOfMonths: 2,
			firstDay: 1//monday
		});
		
		var departureDate = new Date(departureMinDate.getFullYear(), departureMinDate.getMonth(), 
										departureMinDate.getDate(), 0, 0, 0);
		if (this.dag1.val().length > 0 && this.maandJaar1.val().length > 0) {
			var dag1day = parseInt(this.dag1.val(), 10);
			var dag1month = parseInt(this.maandJaar1.val().substr(0, 2), 10);
			var dag1year = parseInt(this.maandJaar1.val().substr(3, 4), 10);
			departureDate = new Date(dag1year, dag1month - 1, dag1day, 0, 0, 0);
		}
		this.departureDatepicker.datepicker("setDate", departureDate);
		
		var returnMinDate = new Date(departureDate.getFullYear(), departureDate.getMonth(), 
									departureDate.getDate() + this.minimumDaysBeforeReturnFromDeparture, 0, 0, 0);
		this.returnDatePicker.datepicker({
			showOn: "focus",
			changeYear: true,
			changeMonth: true,
			minDate: returnMinDate,
			dateFormat: general_.datepickerDateFormat,
			onSelect: this.DidChangeReturnDate,
			numberOfMonths: 2,
			firstDay: 1
		});
		
		var returnDate = new Date(departureDate.getFullYear(), departureDate.getMonth(), departureDate.getDate(), 0, 0, 0);
		if (this.dag2.val().length > 0 && this.maandJaar2.val().length > 0) {
			var dag2day = parseInt(this.dag2.val(), 10);
			var dag2month = parseInt(this.maandJaar2.val().substr(0, 2), 10);
			var dag2year = parseInt(this.maandJaar2.val().substr(3, 4), 10);
			returnDate = new Date(dag2year, dag2month - 1, dag2day, 0, 0, 0);
			if (returnDate < departureDate) {
				returnDate = new Date(departureDate.getFullYear(), departureDate.getMonth(), departureDate.getDate(), 0, 0, 0);
			}
		}
		this.returnDatePicker.datepicker("setDate", returnDate);
	},	
	EditDepartureDate: function() {
		if(!bxsDatepickers.depCalIsOpened){
			this.departureDatepicker.datepicker("show");
			bxsDatepickers.depCalIsOpened = true;
		}else{//make sure these are closed
			bxsDatepickers.returnDatePicker.datepicker("hide");
			bxsDatepickers.departureDatepicker.datepicker("hide");
			bxsDatepickers.retCalIsOpened = false;
			bxsDatepickers.depCalIsOpened = false;
		}
	},
	
	EditReturnDate: function() {
		if(!bxsDatepickers.retCalIsOpened){			
			this.returnDatePicker.datepicker("show");
			bxsDatepickers.retCalIsOpened = true;			
		}else{
			bxsDatepickers.returnDatePicker.datepicker("hide");
			bxsDatepickers.departureDatepicker.datepicker("hide");
			bxsDatepickers.retCalIsOpened = false;
			bxsDatepickers.depCalIsOpened = false;
		}
	},

	DidChangeDepartureDate: function(dateText) {
		var departureDate = jQuery.datepicker.parseDate(general_.datepickerDateFormat, dateText);
		var returnDate = bxsDatepickers.returnDatePicker.datepicker("getDate");
		bxsDatepickers.returnDatePicker.datepicker("option", "minDate", departureDate);
		var depDay = departureDate.getDate();
		var depMonth = departureDate.getMonth() + 1;
		var depYear = departureDate.getFullYear();
		
		bxsDatepickers.dag1.val((depDay < 10 ? "0" : "") + depDay);
		bxsDatepickers.maandJaar1.val((depMonth < 10 ? "0" : "") + depMonth + "/" + depYear);
		
		if (returnDate != null && returnDate < departureDate) {
			bxsDatepickers.dag2.val(depDay);
			bxsDatepickers.maandJaar2.val((depMonth < 10 ? "0" : "") + depMonth + "/" + depYear);
			bxsDatepickers.returnDatePicker.datepicker("setDate", departureDate);
		}	
		bxsDatepickers.depCalIsOpened = false;	
	},
	
	DidChangeReturnDate: function(dateText) {
		var returnDate = jQuery.datepicker.parseDate(general_.datepickerDateFormat, dateText);
				
		var depDay = returnDate.getDate();
		var depMonth = returnDate.getMonth() + 1;
		var depYear = returnDate.getFullYear();
		
		bxsDatepickers.dag2.val((depDay < 10 ? "0" : "") + depDay);
		bxsDatepickers.maandJaar2.val((depMonth < 10 ? "0" : "") + depMonth + "/" + depYear);
		bxsDatepickers.retCalIsOpened = false;	
	},
	
	AddDaysToDepartureDate: function(nrDays) {
		var departureDate = this.departureDatepicker.datepicker("getDate");
		var returnDate = this.returnDatePicker.datepicker("getDate");
		
		departureDate.setDate(departureDate.getDate() + nrDays);

		var depDay   = departureDate.getDate();
		var depMonth = departureDate.getMonth() + 1;
		var depYear  = departureDate.getFullYear();

		this.dag1.val((depDay < 10 ? "0" : "") + depDay);
		this.maandJaar1.val((depMonth < 10 ? "0" : "") + depMonth + "/" + depYear);
		this.departureDatepicker.datepicker("setDate", departureDate);
		
		if (returnDate < departureDate) {
			this.dag2.val((depDay < 10 ? "0" : "") + depDay);
			this.maandJaar2.val((depMonth < 10 ? "0" : "") + depMonth + "/" + depYear);
			this.returnDatePicker.datepicker("setDate", departureDate);
		}
	},
	
	AddDaysToReturnDate: function(nrDays) {
		var departureDate = this.departureDatepicker.datepicker("getDate");
		var returnDate = this.returnDatePicker.datepicker("getDate");
		
		returnDate.setDate(returnDate.getDate() + nrDays);

		var depDay   = returnDate.getDate();
		var depMonth = returnDate.getMonth() + 1;
		var depYear  = returnDate.getFullYear();

		this.dag2.val((depDay < 10 ? "0" : "") + depDay);
		this.maandJaar2.val((depMonth < 10 ? "0" : "") + depMonth + "/" + depYear);
		this.returnDatePicker.datepicker("setDate", returnDate);
		
		if (returnDate < departureDate) {
			this.dag1.val((depDay < 10 ? "0" : "") + depDay);
			this.maandJaar1.val((depMonth < 10 ? "0" : "") + depMonth + "/" + depYear);
			this.departureDatepicker.datepicker("setDate", returnDate);
		}
	}
};
