$(document).ready(function() {
	// Photo Carousel
	var selectImage = function(button, direction) {
		var carouselContainer = $(button).closest('.PhotoCarouselContainer');
		var carousel = $(carouselContainer).find('.PhotoCarousel');
		var carouselElements = $(carousel).find('ul > li');
		var currentIndex = carouselElements.index($(carousel).find('ul > li.Current:first'));
		if(direction == 'next' && carouselElements.length > currentIndex + 1) {
			if((currentIndex + 1) % 5 == 0)
				$(carouselContainer).find('.NextPage').trigger('click');
			$(carouselElements[currentIndex + 1]).trigger('mouseover');
		} else if(direction == 'previous' && currentIndex - 1 >= 0) {
			if((currentIndex) % 5 == 0)
				$(carouselContainer).find('.PreviousPage').trigger('click');
			$(carouselElements[currentIndex - 1]).trigger('mouseover');
		}
	};

	var selectFirstImageForPage = function(button, page) {
		var carouselContainer = $(button).closest('.PhotoCarouselContainer');
		var carousel = $(carouselContainer).find('.PhotoCarousel');
		var carouselElements = $(carousel).find('ul > li');
		var currentIndex = carouselElements.index($(carousel).find('ul > li.Current:first'));
		var firstIndex = currentIndex - (currentIndex % 5);
		var index = page == 'next' ? firstIndex + 5 : firstIndex - 5;
		if(index < carouselElements.length)
			$(carouselElements[index]).trigger('mouseover');
	};

	$('.PhotoCarousel > ul > li')
		.hover(
			function() { 
				var index = $(this).parent().children().index($(this));
				var container = $(this).closest('.PhotoCarouselContainer');
				var view = container.find('ul.View');
				view.css('top', -(index * view.find('li:first').height()));
				container.find('.ImageNumber').html(index + 1);
				
				$(this).siblings('.Current').removeClass('Current');
				$(this).addClass('Current');
			},
			function() { }
		);
	
	$('.PhotoCarousel').each(function() { $(this).find('ul > li:first').addClass('Current'); });
	
	$('.PhotoCarouselContainer > .Pagination > .ControlContainer > .NextPage').click(function(e) { 
		e.preventDefault();
		selectFirstImageForPage(this, 'next');
	});
	
	$('.PhotoCarouselContainer > .Pagination > .ControlContainer > .PreviousPage').click(function(e) { 
		e.preventDefault();
		selectFirstImageForPage(this, 'previous');
	});

	$('.PhotoCarouselContainer > .Pagination > .ControlContainer > .NextImage').click(function(e) {
		e.preventDefault();
		selectImage(this, 'next');
	});

	$('.PhotoCarouselContainer > .Pagination > .ControlContainer > .PreviousImage').click(function(e) {
		e.preventDefault();
		selectImage(this, 'previous');
	});
	
	$('.PhotoCarouselContainer').each(function() {
		$(this).carousel({ 
			next: '.NextPage', 
			previous: '.PreviousPage',
			container: '.PhotoCarousel'
		});
	});

	$('.GetDirectionsHeader').click(function(e) {
		e.preventDefault();
		var content = $('.GetDirectionsContent');
		if(content.is(':visible'))
			content.slideUp();
		else
			content.slideDown();
	});
	
	$('.GetDirectionsContent > form').submit(function(e) {
		e.preventDefault();
		window.open($(this).attr('action') + '?' + $(this).serialize());
	});
	
	// Google Map
	$('.ListingMap').each(function() {
		var startLatitude = $(this).data('startLatitude');
		var startLongitude = $(this).data('startLongitude');
		if(GBrowserIsCompatible() && startLatitude !== undefined && startLongitude !== undefined) {
			var map = new google.maps.Map2(this);
			map.setCenter(new GLatLng(startLatitude, startLongitude), 15);
			map.savePosition();
			map.addControl(new GSmallMapControl());
			$(this).data('map', map);

			var marker = new GMarker(new GLatLng(startLatitude, startLongitude));
			map.addOverlay(marker);
		}
	});
});
