/////////////////////////////////////////////////////////////////
// FileName : listings.js
// Description : JavaScript methods for the listing module
/////////////////////////////////////////////////////////////////

function setImagePagerText(li) {
	var index = 1;
	
	if (li != null) {
		var currentImg = $("div img", li);
		var id = currentImg[0].id;
		var splitId = id.split("_");
		index = splitId[1];
	}
	
	$("#imagePagerIndex").text(index);
}


// initialize the page level events
$(document).ready(function() {

	// When user clicks pushpin on search results,
	// open the map and select specific pushpin
	$("a.jsSelectOnMap").click(function(e) {
		e.preventDefault();

		// scroll to the top
		scroll(0,0);

		var index = parseInt($(this).attr("href").split("#").pop()) - 1;
		$("body").bind("mapLoadComplete", function() {
			$("body").unbind("mapLoadComplete");
			setTimeout(function() { 
				selectOnMap(index);
			}, 100);
		});

		// VIS-2721
		$("#resultsMapContainer").show();
		if (ajaxMapLoaded !== true) {
			var url = window.location.href.replace("/listings/","/ajax/listing/asyncmap/");
			ajaxLoadMap(url); // triggers 
		}
		else {
			$("body").trigger("mapLoadComplete");
		}
		
		return false;
	});
	
	
	$("a#map-img").click(
		function ( event ) {
			event.preventDefault();

			// VIS-2721
			if (ajaxMapLoaded !== true) {
				$("#resultsMapContainer").show();
				var url = window.location.href.replace("/listings/","/ajax/listing/asyncmap/");
				ajaxLoadMap(url); // triggers 
			}
			else {
				openBubble = null;
				map.HideInfoBox();
				$("#resultsMapContainer").toggle();
			}
		}
	).css({"opacity":"1"});
	
	$("#slide-img").click(
		function ( event ) {
			event.preventDefault();
			var link = $("a[@rel=gallery-listing-images]", "#listingSlideShow").get(0);
			var caption = link.title || link.name || null;
			var url = link.href || link.alt;
			var group = link.rel || false;
			tb_show(caption, url, group);
				
			return false;
		}
	);

	// VIS-2433 - hooks addListing click to force redirect back to current page
	$("#addListing", ".view-listing-buttons").click(function() {
		$("body").append('<form id="jsAddListingForm" action ="'+ this.href +'" method="post"><input type="hidden" name="formredirect" value="'+ window.location.href +'" /></form>').find("#jsAddListingForm").submit();
		return false;
	});

	// VIS-2433 - hooks saveSearch click to force redirect back to current page
	$("#saveSearch", ".view-listing-buttons").click(function() {
		$("body").append('<form id="jsSaveSearchForm" action ="'+ this.href +'" method="post"><input type="hidden" name="formredirect" value="'+ window.location.href +'" /></form>').find("#jsSaveSearchForm").submit();
		return false;
	});
	

	if ($("#listingCarousel").length > 0) {					
		setImagePagerText();
		
		setTimeout(function() {
			$("#listingCarousel").jCarouselLite({
				btnNext: "#nextImageControl",
				btnPrev: "#prevImageControl",
				visible: 1,
				circular: false,
				afterEnd: function (li) {
					setImagePagerText(li);
				}
			});
		}, 300);
	

		$("img.carouselImg", "#listingCarousel").click(
			function () {
				var url = this.src || this.href || null;
				var group = this.rel || false;
				tb_show(null, url, group);
				
				return false;
			}
		);
	}

	if ($("#resultSortControls #filterLaunchButton").length > 0) {
		$("#resultSortControls #filterLaunchButton").click(
			function ( event ) {
				event.preventDefault();
				
				var location = "/featuredlistings";
				var propertytype = $("#propertytypeSelect").val();
				
				if (propertytype != "") {
					location = location + "/propertytype/" + propertytype + "/";
				}

				window.location = location;

				return false;
			}
		);
	}	
	
	if ($("#resultsListContainer").length > 0) {
		$("#resultsList .listing").hover(
			function() {
				$(this).addClass("selected");
			},
			function() {
				$(this).removeClass("selected");
			}
		);
		
		if ($("#resultSortControls #sortLaunchButton").length > 0) {
			$("#resultSortControls #sortLaunchButton").click(
				function ( event ) {
					event.preventDefault();
				
					var sort = $("#resultSortBySelect").val();
					sort =  encodeString(sort);
					
					var currentLocation = window.location.href;
					var location;
					
					if (currentLocation.lastIndexOf("/") == (currentLocation.length - 1)) {
						currentLocation = currentLocation.slice(0, currentLocation.length -1);
					}
					
					if (currentLocation.indexOf("sort" ) > 0) {
						location = currentLocation.replace(/(\/*)sort\/(\w*)\+(\w*)/, "");
					} else {
						location = currentLocation;
					}
					window.location = location + "/sort/" + sort;

					return false;
				}
			);
		}
	}
});

