var calHelper = function () {
		var f;
		var a;
		var d;
		var h;
		var j;
		var g;
		var e;
		var k = "m/d/yy";
		var p = function (r, q) {
				if (r === undefined || r === null || q === undefined || q === null) {
					return false
				}
				return r.valueOf() == q.valueOf()
			};
		var b = function (q) {
				if (q === "") {
					f = null
				} else {
					f = calHelper.parse(q)
				}
			};
		var o = function (q) {
				if (q === "") {
					a = null
				} else {
					a = calHelper.parse(q)
				}
			};
		var c = function () {
				b(j.val());
				o(g.val())
			};
		var i = function (q) {
				q.setMinutes(0);
				q.setSeconds(0);
				q.setHours(0);
				q.setMilliseconds(0);
				return q
			};
		var n = function (q, r) {
				q.setFullYear(q.getFullYear() + r);
				return q
			};
		var m = function (q, r) {
				q.setDate(q.getDate() + r);
				return q
			};
		var l = function (s, r) {
				var q = 1000 * 60 * 60 * 24;
				return Math.ceil((r.getTime() - s.getTime()) / q)
			};
		return {
			setDepart: function (q) {
				o(q)
			},
			setArrive: function (q) {
				b(q)
			},
			init: function () {
				$(document).ready(function () {
					d = i(new Date());
					h = i(m(n(new Date(), 1), -1));
					j = $(".arrive > input");
					j.change(c);
					g = $(".depart > input");
					g.change(c);
					e = Number($("#minLengthOfStay > input").val());
					c();
					var q = {
						dateFormat: k,
						gotoCurrent: true,
						numberOfMonths: 2,
						minDate: "+" + $("#minimumBookingLeadTime").val() + "D",
						maxDate: "+1Y -" + e + "D",
						beforeShowDay: calHelper.beforeShowDay,
						changeMonth: true,
						changeYear: true
					};
					q.onSelect = calHelper.onArriveSelect;
					$("#" + j.attr("id")).datepicker(q);
					q.onSelect = calHelper.onDepartSelect;
					var r = e + Number($("#minimumBookingLeadTime").val());
					q.minDate = "+" + r + "D";
					q.maxDate = "+1Y";
					$("#" + g.attr("id")).datepicker(q)
				})
			},
			validate: function () {
				if (j.val() == "" && g.val() == "") {
					return true
				}
				if (f === null || f === undefined || a === null || a === undefined) {
					if ((f === null || f === undefined) && (a === null || a === undefined)) {
						alert("Please enter valid checkin and checkout dates.");
						return false
					}
					if (f === null || f === undefined) {
						alert("Please enter a valid checkin date.");
						return false
					}
					if (a === null || a === undefined) {
						alert("Please enter a valid checkout date.");
						return false
					}
				}
				var q = i(new Date());
				m(q, Number($("#minimumBookingLeadTime").val()));
				if (f < q) {
					alert("The earliest possible checkin date is " + $.datepicker.formatDate("m/d/yy", q));
					return false
				}
				if (a <= f) {
					alert("Checkin must precede checkout.");
					return false
				}
				if (f < d || f > h) {
					alert("Travel must take place within one year from today.");
					return false
				}
				if (l(f, a) < e) {
					alert("Minimum length of stay is " + e + (e == 1 ? " night." : " nights."));
					return false
				}
				return true
			},
			onArriveSelect: function (q, r) {
				f = calHelper.parse(q);
				$("#" + g.attr("id")).datepicker("option", "defaultDate", f);
				if (a !== null && a !== undefined && a <= f) {
					$("#" + g.attr("id")).datepicker("setDate", null);
					a = null
				}
			},
			onDepartSelect: function (q, r) {
				a = calHelper.parse(q);
				$("#" + j.attr("id")).datepicker("option", "defaultDate", a);
				if (f !== null && f !== undefined && f >= a) {
					$("#" + j.attr("id")).datepicker("setDate", null);
					f = null
				}
			},
			beforeShowDay: function (q) {
				if (p(f, q)) {
					return [true, "arrive-day"]
				}
				if (p(a, q)) {
					return [true, "depart-day"]
				}
				if (f !== null && a !== null && q > f && q < a) {
					return [true, "stay"]
				}
				return [true, ""]
			},
			parse: function (r) {
				try {
					return $.datepicker.parseDate(k, r)
				} catch (q) {
					alert("Sorry, we don't recognize the date you typed in. Please use the following format: m/d/yyyy")
				}
			}
		}
	}();
calHelper.init();
