$(document).ready(function(){
	bindCalendar({from: "hotelFromDate", to: "hotelToDate", change: onHotelSearchDateChanged, maxDays: 356, noDates: "nodates"});
	bindCalendar({from: "changeFromDate", to: "changeToDate", change: onHotelSearchDateChanged, maxDays: 356});
	bindCalendar({from: "eventFromDate", to: "eventToDate", change: onDateChangedCompare, maxDays: 356});
	bindCalendar({from: "transfersFromDate", maxDays: 356});
	bindCalendar({from: "flightArrivalDate", maxDays: 356});
	bindCalendar({from: "weddingDate", maxDays: 1068});
	bindCalendar({from: "departureDate", to: "returnDate", change: onDateChangedCompare, maxDays: 356, dateFormat: "yy-m-d"});
	bindCalendar({from: "carFromDate", to: "carToDate", change: onDateChangedCompare, maxDays: 356});
});

function bindCalendar(oData){
	if(!oData.dateFormat){
		oData.dateFormat = "dd/mm/yy";	
	}
	var fromField = $("#" + oData.from);
	
	var toField = null;
	if(oData.to) toField = $("#" + oData.to);
	
	if(fromField.length > 0){
		var minDate = new Date();
		if(fromField.attr('minDelay') > 0){
			minDate.setDate(minDate.getDate() + parseInt(fromField.attr('minDelay')));	
		}
		oData.minDate = minDate;
		var maxday = String(minDate.getDate() + oData.maxDays);
		var maxmonth = String(minDate.getMonth());
		var maxyear = String(minDate.getFullYear());
		oData.maxDate = new Date(maxyear, maxmonth, maxday,0,0,0)

		if(oData.change){
			fromField.bind('change', oData, oData.change);
			if(toField){ 
				toField.bind('change',  oData, oData.change);
			}
		}
		
		fromField.datepicker(
			{
			  buttonImage: fromField.attr('buttonImage'),
			  numberOfMonths: 2,
			  minDate: minDate,
			  maxDate: oData.maxDate,
			  buttonText: 'Select date',
			  dateFormat: oData.dateFormat
			}
		 );	
		
		if(toField){
			var dateDifference = null;
			if(oData.dateDifference){
					var currentDate = fromField.datepicker('getDate');
					var maxday = String(currentDate.getDate() + oData.dateDifference);
					var maxmonth = String(currentDate.getMonth());
					var maxyear = String(currentDate.getFullYear());
					dateDifference = new Date(maxyear, maxmonth, maxday,0,0,0);
			}
			toField.datepicker(
			  {
				  buttonImage: toField.attr('buttonImage'),
				  numberOfMonths: 2,
				  minDate: minDate,
				  maxDate: dateDifference,
				  buttonText: 'Select date',
				  dateFormat: oData.dateFormat
			  }
			 );	
		}
	}
}

function onHotelSearchDateChanged(event){
		var oData = event.data;
		var sChangedField = $(this).attr("id");
		
		var fromField = $("#" + oData.from);
		var toField = $("#" + oData.to);
		var oREGEXP = /^([0-9]|[0,1,2][0-9]|3[0,1])\/([\d]|[1,0][1-9]|10)\/\d{4}$/
		if (!oREGEXP.test(fromField.val()))
		{
			fromField.datepicker('setDate', oData.minDate);
		}
		var selectedDate = fromField.datepicker('getDate');

		if(selectedDate < oData.minDate){
			selectedDate = oData.minDate;
			fromField.datepicker('setDate', selectedDate);
		}
		else if(selectedDate > oData.maxDate){
			selectedDate = oData.maxDate;
			fromField.datepicker('setDate', oData.maxDate);
		}
		if(sChangedField == "hotelFromDate" && toField.datepicker('getDate') < selectedDate){
			var newday = String(selectedDate.getDate()+1);
			var newmonth = String(selectedDate.getMonth());
			var newyear = String(selectedDate.getFullYear());
			var newDate = new Date(newyear, newmonth, newday,0,0,0);	
			toField.datepicker('setDate', newDate);
		}
		
		

		/*var maxday = String(selectedDate.getDate() + oData.maxDays);
		var maxmonth = String(selectedDate.getMonth());
		var maxyear = String(selectedDate.getFullYear());
		var maxDate = new Date(maxyear, maxmonth, maxday,0,0,0);

		toField.datepicker('option', 'minDate', newDate);
		toField.datepicker('option', 'maxDate', maxDate);*/
		$('#' + oData.noDates).attr('checked', false);
}

function onDateChangedCompare(event){
		/*var oData = event.data;
		var fromField = $("#" + oData.from);
		var toField = $("#" + oData.to);
		
		var selectedDate = fromField.datepicker('getDate');
		
		var newday = String(selectedDate.getDate());
		var newmonth = String(selectedDate.getMonth());
		var newyear = String(selectedDate.getFullYear());
		var newDate = new Date(newyear, newmonth, newday,0,0,0);

		var maxday = String(selectedDate.getDate() + oData.maxDays);
		var maxmonth = String(selectedDate.getMonth());
		var maxyear = String(selectedDate.getFullYear());
		var maxDate = new Date(maxyear, maxmonth, maxday,0,0,0);

		toField.datepicker('option', 'minDate', newDate);
		toField.datepicker('option', 'maxDate', maxDate);*/
}
