$(document).ready(function() {
	$(".pagelink").live("click", function() {
		var uri_segment = $(this).attr('href').split("/");
		var page = uri_segment[uri_segment.length-1];
		var url = baseurl + "/search/page/" + page;
		
		$.post(url, {isajax:1}, function(result) {
			$("#searchresults").html(result);
			$("#searchresults .listing").hide();
			$("#searchresults .listing").each(function(index) {
			    $(this).delay(100*index).fadeIn(300);
			});
			$("#result_start_count").html($("#result_start").val());
			$("#result_end_count").html($("#result_end").val());
			
		});
		
		$("#pagination a, #pagination_bottom a").removeClass('pageactive');
		$(this).addClass('pageactive');
		
		return false;
		
	})
	
	$("#searchresults .listing").each(function(index) {
	    $(this).delay(200*index).hide().fadeIn(300);
	});
	
	$("#fullvacancy").bind("change", function(e) {
		
		e.preventDefault();
		var page = $(this).attr('rel');
		
		if($(this).is(':checked')) {
			window.location = baseurl + "/" + page + "/showvacancy";
		} else {
			window.location = baseurl + "/" + page + "/removevacancy";
		}
	});
	
	$('.user_message').bind("click", function() {
		$(this).fadeOut("slow", function() { $(this).remove() });
	});
	
	$(".changeoption").bind("change", function() {
		var opt = $(this).attr('rel');
		var val = $(this).val();
		var url = baseurl + "/general/changeoption/" + opt + "/" + val;
		window.location.href = url;
	});
	
	$(".option").bind("blur, change", function() {
		var element = $(this).attr('id');
		var ischecked = $(this).attr("checked");
		var posturl = baseurl + "/listingadmin/postdata";
		var fieldname = $(this).attr('id');
		var nm = $(this).attr('name');
		var vl = $(this).val();
		
		$.post(posturl,{fieldname:fieldname, vl:vl, ischecked:ischecked, nm:nm}, 
				function(result) {
					if(result.toString() == "updated") {
						$('#'+element).removeClass('dataupdated_error').addClass('dataupdated');
						$('#'+element).removeClass('dataupdated_error').addClass('dataupdated');
					} else {
						$('#' + element).removeClass('dataupdated');
						$('#' + element).addClass('dataupdated_error');
					}
				} 
		);
	
	});
	
	$("#save_description").bind("click", function(e) {
		e.preventDefault();
		
		var oEditor = CKEDITOR.instances.listing_content;
		var html = oEditor.getData();
		var posturl = baseurl + "/listingadmin/postdata";
		
		$.post(posturl,{fieldname:'listing_content', vl:html, ischecked:false}, 
				function(result) {
					if(result.toString() == "updated") {
						$("#listing_content").removeClass('dataupdated_error').addClass('dataupdated');
						$("#save_description").html("Updated");
					} else {
						$("#listing_content").removeClass('dataupdated');
						$("#listing_content").addClass('dataupdated_error');
					}
				} 
		);
		
		var oEditor = CKEDITOR.instances.listing_intro;
		var html = oEditor.getData();
	
		$.post(posturl,{fieldname:'listing_intro', vl:html, ischecked:false}, 
				function(result) {
					if(result.toString() == "updated") {
						$("#listing_intro").removeClass('dataupdated_error').addClass('dataupdated');
						$("#save_description").html("Updated");
					} else {
						$("#listing_intro").removeClass('dataupdated');
						$("#listing_intro").addClass('dataupdated_error');
					}
				} 
		);
		
		return false;
		
	});
	
	$("#user_email, #pass").bind("focus", function() {
		//$(".error").fadeOut("fast");
	});
	
	
	$("#changelisting").bind("change", function() {
		window.location.href = baseurl + "/listingadmin/changelisting/listingid/" + $(this).val();
	});
	
	$(".deleteimage").bind("click", function() {
		var ref = $(this).attr("ref");
		var id = $(this).attr("id");
		
		if(confirm("This image will be removed from your listing. Continue?")) {
			var posturl = baseurl + "/listingadmin/deleteimage";
			$.post(posturl, {ref:ref}, function(result) {
				if(result == "invalid_isdefault") {
					alert("This is the default image for your listing. Please change your default option, before deleting this image.");
				} else {
					$("#" + id.replace("delete_", "") ).fadeOut("slow", function() { $(this).remove(); });
				};
			})
		}
	});
	
	$(".default_image").bind("change", function() {
		$.post(baseurl + "/listingadmin/defaultimage", {imageref:$(this).val()}, function(result) {
			
		});	
	});
	
	$(".changebooking").bind("click", function() {
		//alert($(this).attr("rel"));
		var dateref = $(this).attr("rel");
		var posturl = baseurl + "/vacancymanager/changebooking";
		$.post(posturl, {ref:dateref}, function(result) {
			if(result == "added") {
				$("#"+dateref).addClass("datebooked");
				return false;
			}
			
			if(result == "removed") {
				$("#"+dateref).removeClass("datebooked");
				return false;
			};
			
		});
	});
	
	$(".showtip").live("mouseover", function(e) { $(this).find('.tooltip').css({'left':'37px','top': '0px'}).fadeIn("normal"); e.stopPropigation(); });
	$(".showtip").live("mouseout", function(e) { $(this).find('.tooltip').fadeOut("normal"); e.stopPropigation(); });
	
	$("#vacancy_summary .vacant").bind("click", function() {
		opts = $(this).attr('rel').split("_");
		window.location.href = baseurl + "/search/redirect/?listing=" + opts[0] + "&bookingdate=" + opts[1];
	});
	
	$(":date").dateinput({trigger: true, format: 'ddd dd mmmm, yyyy', min: -1});
	
	// use the same callback for two different events. possible with bind
	$(":date").bind("onShow onHide", function()  {
		$(this).parent().toggleClass("active");
		$("#hstartdate").val($(":date:first").data("dateinput").getValue("yyyy-mm-dd"));
	});
	
	$(".changesearch a").bind("click", function() {
		
		var url = baseurl + "/search/changesearch";
		
		$.post(url, {}, function(result) {
			$("#min_searchframe").html(result);
		});
		
	});
	
	
	// when first date input is changed
	// $(":date:first").data("dateinput").change(function() {
	// 
	// 		var cur_arrival = Date.parse($(":date:first").data("dateinput").getValue("mmm d, yyyy"));
	// 		var cur_departure = Date.parse($(":date:last").data("dateinput").getValue("mmm d, yyyy"));
	// 	
	// 		if(cur_arrival > cur_departure || !cur_departure) {
	// 			$(":date:last").data("dateinput").setValue(this.getValue()).addDay(2);
	// 			var dept_min = new Date(this.getValue());
	// 			dept_min.setDate(dept_min.getDate() + 1);
	// 			$(":date:last").data("dateinput").setMin(dept_min);
	// 		}
	// 
	// 		setDuration();
	// 	});
	// 
	
	// $(":date:last").data("dateinput").change(function() {
	// 		setDuration();
	// 	});
	
	
	$(".addshortlist").live("click", function(e) {
		e.preventDefault();
		
		var sid = $(this).attr('rel');
		var url = baseurl + "/addshortlist/" + sid;
		
		$.post(url, {}, function(result) {
			if(result != "error"){
				$(".sltext").html(result);
				$("#sl"+sid).removeClass('addshortlist').addClass('shortlistadded');
				$("#sl"+sid).html( $("#sl"+sid).html().replace('Add to Shortlist', 'Shortlisted'));
			} else {
				$("#sl"+sid).next('.slresponse').html('Unable to add to shortlist. Please reload the page and try again.');
			}
		});
	});
		
	$(".removeshortlist").live("click", function(e) {
		e.preventDefault();
		
		var sid = $(this).attr('rel');
		var url = baseurl + "/removeshortlist/" + sid;
		
		$.post(url, {}, function(result) {
			if(result == "1"){
				$("#listing"+ sid).fadeOut("normal", function() { 
					$(".sltext").html("("+result+")").remove(); 
					$("#shortlist_header").html("Displaying "+result+" accommodation options in your shortlist.")
				});
			} else {
				window.location.href = baseurl + "/search" ; 
			}
		});
		
	});
	
	$(".shortlistadded").live("click", function(e) {
		e.preventDefault();
	
		var sid = $(this).attr('rel');
		var url = baseurl + "/removeshortlist/" + sid;
		
		$.post(url, {}, function(result) {
			if(result) {
				$("#sl"+sid).removeClass("shortlistadded").addClass("addshortlist");
				$("#sl"+sid).html($("#sl"+sid).html().replace('Shortlisted', 'Add to Shortlist'));
				$(".sltext").html("("+result+")");
			}
		});
	});
	
	$("#booking_provider").live("change", function() {
		$('.bookingfield').each(function() { $(this).hide(); });
		var field = $(this).val();
		$("."+field).each(function() {
			$(this).fadeIn();
		});
	});
	
	$("#txa_shortname").bind("change", function(e) {
		
		var shortname = $(this).val();
		
		if( confirm('Please confirm you are editing your TXA Short Name. Please wait a moment and select a new Calendar Product using the dropdown below.')) {
			$("#txaproduct").html('<option>Loading...</option>');
			
			var url = "listingadmin/getTXA_productnames";
			
			$.post(url, { shortname:shortname }, function(result) {
				$("#txaproduct").html('').html(result);
			});
		}
	});
	
	$("#import_txa").bind("click", function(e) {
		
		e.preventDefault();
		
		$("#calendars_frame").css({'opacity': '0.4'});
		$("span.loading").show();
		
		var url = baseurl + "/listingadmin/downloadtxa";
		$.post(url, {}, function(result) {
			$("span.loading").hide();
			alert(result);
			if(result == "Calendar Updated") {
				$("#calendars_frame").fadeIn();
				window.location = baseurl + "/listingadmin/vacancycalendars/";
			} else {
				$("span.loading").hide();
				$("#calendars_frame").fadeIn();
			}
		});
		
		return false;
		
	});
	
	
	$(".vacancysummary input.date").bind("onHide", function(e) {
		e.preventDefault();
		var ndate = encodeURIComponent($(this).val());
		var url = baseurl + "/vacancy/setdate/" + ndate;
		window.location = url;
		return false;				
	});
	
	$(".cal_prevpage, .cal_nextpage").live("click", function(e) {
		e.preventDefault();
		var direction = $(this).attr("rel").split("_");
		var url = baseurl + "/vacancy/" + direction[0];
		//var newdate = new Date(direction[1]);
		var newdate = direction[1];
		
		$("#calendar_wrapper img.loading").show();
		$("#calendar_wrapper tbody").fadeTo(100, .3, function() {
			$.post(url, {}, function(result) {
				$("#calendar_wrapper").html(result);
				$("#calendar_wrapper img.loading").hide();
				
				var api = $(":date").data("dateinput");
				api.setValue(newdate);
				
				$("#calendar_wrapper tbody").fadeTo(100, 1);
			});
		});

		return false;
				
	});
	
	$('.showinfo').live("click", function(e) {
		e.preventDefault();
		var row = $(this).attr('rel');
		var url = baseurl + "/vacancy/accomteaser/"+row;
		$("#accomrow_" + row).load(url, function() {
			$(this).toggle();
		});
		return false;
	});
	
	function updateCal(result, newdate) {
	
		$("#calendar_wrapper img.loading").show();
		$("#calendar_wrapper tbody").fadeTo(100, .3, function() {
			$("#calendar_wrapper").html(result);
			$("#calendar_wrapper img.loading").hide();
			$("#calendar_wrapper tbody").fadeTo(100, 1);
		});
		
		var api = $(":date").data("dateinput");
		api.setValue(newdate);
		
	}
	
	function setDuration() {
		
		var d1 = Date.parse($(":date:first").data("dateinput").getValue("mmm d, yyyy"));
		var d2 = Date.parse($(":date:last").data("dateinput").getValue("mmm d, yyyy"));
		var duration =  Math.floor( (d2 - d1) / 86400000);
		var duration_text = duration == 1 ? "night" : "nights";
		$("#duration").html("(" + duration + " " + duration_text + ")");
		$("#duration_val").val(duration);
		
		$("#hstartdate").val(d1.getValue("yyyy-mm-dd"));
		
	}
	
	
});

