$(document)
		.ready(
				function() {
					var dr1 = new DateRange('#date_range_min_flight',
							'#date_range_max_flight');
					var dr2 = new DateRange('#date_range_min_hotel',
							'#date_range_max_hotel');
					var dr3 = new DateRange('#date_range_min_car',
							'#date_range_max_car');
					dr1.link(dr2);
					dr1.link(dr3);
					dr2.link(dr1);
					dr2.link(dr3);
					dr3.link(dr1);
					dr3.link(dr2);
					var status = false;
					$("#search_type input[name^=search_module]").each(
							function() {
								if ($(this).attr('checked'))
									status = true;
							});
					if (!status) {
						$("#search_type input[value=flight]").attr('checked',
								true);
					}
					Search.update_modules();
					$("#search_type input[type=checkbox]")
							.each(
									function() {
										$(this)
												.click(
														function() {
															if ($(
																	"#search_type input[name^=search_module]:checked")
																	.size() == 0) {
																$(this)
																		.attr(
																				'checked',
																				true);
															}
															Search
																	.update_modules();
														});
									});
					var home_city = $.cookie('home_city');
					var home_city_iata = $.cookie('home_city_iata');
					if (home_city != null && home_city_iata != null) {
						$("input[name=fl_origin]").val(home_city);
						$("input[name=fl_origin_iata]").val(home_city_iata);
					}
					$("input[name=fl_origin]").suggest_airport(function(li) {
						var opts = {
							expires : 365,
							path : '/'
						};
						$.cookie('home_city', li.selectValue, opts);
						$.cookie('home_city_iata', li.extra[0], opts);
						$("input[name=fl_origin_iata]").val(li.extra[0]);
					}, function() {
						$(this).val('');
						$("input[name=fl_origin_iata]").val('');
					});
					$("input[name=fl_destination]").suggest_airport(
							function(li) {
								$("input[name=fl_destination_iata]").val(
										li.extra[0]);
								$("input[name=ht_location]")
										.val(li.selectValue);
								$("input[name=ht_location_iata]").val(
										li.extra[0]);
								$("input[name=cr_location_pickup]").val(
										li.selectValue);
								$("input[name=cr_location_pickup_iata]").val(
										li.extra[0]);
							},
							function() {
								$(this).val('');
								$("input[name=fl_destination_iata]").val('');
								$("input[name=ht_location]").val('');
								$("input[name=ht_location_iata]").val('');
								$("input[name=cr_location_pickup]").val('');
								$("input[name=cr_location_pickup_iata]")
										.val('');
							});
					$("input[name=ht_location]").suggest_airport(
							function(li) {
								$("input[name=ht_location_iata]").val(
										li.extra[0]);
								$("input[name=fl_destination]").val(
										li.selectValue);
								$("input[name=fl_destination_iata]").val(
										li.extra[0]);
								$("input[name=cr_location_pickup]").val(
										li.selectValue);
								$("input[name=cr_location_pickup_iata]").val(
										li.extra[0]);
							},
							function() {
								$(this).val('');
								$("input[name=ht_location_iata]").val('');
								$("input[name=fl_destination]").val('');
								$("input[name=fl_destination_iata]").val('');
								$("input[name=cr_location_pickup]").val('');
								$("input[name=cr_location_pickup_iata]")
										.val('');
							});
					$("input[name=cr_location_pickup]").suggest_airport(
							function(li) {
								$("input[name=cr_location_pickup_iata]").val(
										li.extra[0]);
								$("input[name=ht_location]")
										.val(li.selectValue);
								$("input[name=ht_location_iata]").val(
										li.extra[0]);
								$("input[name=fl_destination]").val(
										li.selectValue);
								$("input[name=fl_destination_iata]").val(
										li.extra[0]);
							},
							function() {
								$(this).val('');
								$("input[name=cr_location_pickup_iata]")
										.val('');
								$("input[name=ht_location]").val('');
								$("input[name=ht_location_iata]").val('');
								$("input[name=fl_destination]").val('');
								$("input[name=fl_destination_iata]").val('');
							});
					$("input[name=cr_location_dropoff]").suggest_airport(
							function(li) {
								$("input[name=cr_location_dropoff_iata]").val(
										li.extra[0]);
							},
							function() {
								$(this).val('');
								$("input[name=cr_location_dropoff_iata]").val(
										'');
							});
					$("input[name=fl_one_way_trip]")
							.click(
									function() {
										if ($(this).attr('checked')) {
											$("input[name=fl_date_return]")
													.fadeTo('fast', 0.5).attr(
															"disabled", true);
											$("input[name=fl_date_return_alt]")
											.fadeTo('fast', 0.5).attr(
													"disabled", true);
										} else {
											$("input[name=fl_date_return]")
													.fadeTo("fast", 1.0)
													.removeAttr("disabled")
													.val('dd/mm/yyyy');
											$("input[name=fl_date_return_alt]")
											.fadeTo("fast", 1.0)
											.removeAttr("disabled")
											.val('dd/mm/yyyy');
										}
									});
					$("input[name=cr_dropoff_different]")
							.click(
									function() {
										var target = ("input[name=cr_location_dropoff]");
										if ($(this).attr('checked')) {
											$(target).fadeTo("fast", 1.0)
													.removeAttr("disabled");
										} else {
											$(target).fadeTo('fast', 0.5).attr(
													"disabled", true);
										}
									});
					$("#form_main_search_box")
							.submit(
									function() {
										var m0 = "To ensure 100% customer satisfaction, Vaganga only allows you to book more than 2 days in advance.";
										var currentTime = new Date()
										var month = currentTime.getMonth() + 1
										var day = currentTime.getDate()
										var year = currentTime.getFullYear()
										var currentDate = month + "/" + day
												+ "/" + year
										var one_day = 1000 * 60 * 60 * 24
										var date_max_hotel = new Date($(
												"#date_range_max_hotel").val())
												.getTime()
										var date_max_flight = new Date($(
												"#date_range_max_flight").val())
												.getTime()
										var date_max_car = new Date($(
												"#date_range_max_car").val())
												.getTime()
										var ct = new Date(currentDate)
												.getTime()
										if ($(
												"#search_type input[value=flight]")
												.is(":checked")) {
											if (!$("input[name=fl_origin]")
													.val().length) {
												var msg = "Enter origin for flight search.";
												alert(msg);
												return false;
											}
											if (!$("input[name=fl_destination]")
													.val().length) {
												var msg = "Enter destination for flight search.";
												alert(msg);
												return false;
											}
											var is_one_way = $(
													"input[name=fl_one_way_trip]")
													.attr('checked');
											if (!dr1.validate(is_one_way)) {
												var msg = "Please enter valid date range for flight search. "
														+ m0;
												alert(msg);
												return false;
											}
											if (Math
													.ceil((date_max_flight - ct)
															/ one_day) > 365) {
												var msg = "Date Range over 365 days not allowed.";
												alert(msg);
												return false;
											}
										}
										if ($("#search_type input[value=hotel]")
												.is(":checked")) {
											if (Math.ceil((date_max_hotel - ct)
													/ one_day) > 365) {
												var msg = "Date Range over 365 days not allowed.";
												alert(msg);
												return false;
											}
											if (!$("input[name=ht_location]")
													.val().length) {
												var msg = "Enter location for hotel search.";
												alert(msg);
												return false;
											}
											if (!dr2.validate()) {
												var msg = "Please enter valid date range for hotel search."
														+ m0;
												alert(msg);
												return false;
											}
										}
										if ($("#search_type input[value=car]")
												.is(":checked")) {
											if (!dr3.validate()) {
												var msg = "Please enter valid date range for car search."
														+ m0;
												alert(msg);
												return false;
											}
											if (Math.ceil((date_max_car - ct)
													/ one_day) > 365) {
												var msg = "Date Range over 365 days not allowed.";
												alert(msg);
												return false;
											}
										}
										return true;
									});
					$("#not_from").css( {
						cursor : 'pointer'
					}).bubble('click', {
						url : '/home/index/change_home_city',
						callback : function(o) {
							var wrap = o.wrap;
							wrap.find("input[name=home_city]").css( {
								width : '180px'
							}).suggest_airport(function(li) {
								var opts = {
									expires : 365,
									path : '/'
								};
								$.cookie('home_city', li.selectValue, opts);
								$.cookie('home_city_iata', li.extra[0], opts);
								window.location.reload();
							}, function() {
								$(this).val('');
							});
						}
					});
					if ($.browser.msie && $.browser.version === '6.0') {
						$(".AdPhotoTrans").pngfix();
					}
				});
var Search = {
	update_modules : function() {
		var divs = {
			flight : '#area_search_flight',
			hotel : '#area_search_hotel',
			car : '#area_search_car'
		};
		var nmods = $("#search_type input[name^=search_module]:checked").size();
		$("#search_type input[name^=search_module]").not(":checked").each(
				function() {
					var mod = $(this).val();
					$(divs[mod]).slideUp();
				});
		$("#search_type input[name^=search_module]:checked").each(function() {
			var mod = $(this).val();
			var $t = $(divs[mod]);
			if (nmods > 1) {
				$t.find(".AreaMultisearchLegend").show();
			} else {
				$t.find(".AreaMultisearchLegend").hide();
			}
			$t.slideDown();
		});
	}
};