var	currentPage = 0;
var maxPage = 0;
var pageWidth = 0;
var SwapImages = {};
var anchorEventMouse = false;

var showImage = function(filename) {
	var imageFrame = $('#GalleryImage');
  imageFrame.attr('src', 'images/layout/loading.gif');
  setTimeout(function(){
  var image = $("<img />")
    .attr('src', 'images/gallery/' + filename)
    .load(function() {
       if (!this.complete || typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
           alert('Error loading image.  Try clicking on another link.');
       } else {
           imageFrame.attr('src', 'images/gallery/' + filename);
       }
    });
  }, 1000);
};
var moveCarousel = function(newPage) {
	newPage = (newPage<0) ? 0 : ((newPage>maxPage) ? maxPage : newPage);
	var panelUl = $('ul#CarouselPanel');
	if (!panelUl.hasClass('Moving')) {
		var minLeft = -1 * panelUl.width();
		var oldLeft = parseInt(panelUl.css('left'));
		oldLeft = isNaN(oldLeft) ? 0 : oldLeft;
		var newLeft = -1 * pageWidth * (newPage-1);
		if ((minLeft < newLeft) && (newLeft <= 0)) {
			panelUl.addClass('Moving');
			panelUl.animate({ left: newLeft + 'px' },
				function() { $(this).removeClass('Moving'); movePagination(); }
			);
		}
	}
}
var movePagination = function() {
	var panelUl = $('ul#CarouselPanel');
	var pageNum = parseInt(panelUl.css('left'));
	currentPage = Math.floor((isNaN(pageNum) ? 0 : -pageNum) / pageWidth) + 1;
	$('#CarouselPagination').find('.Current').removeClass('Current');
	$('#CarouselPage' + currentPage).addClass('Current');

	imgElm = $('img#CarouselArrowBack');
	if (currentPage == 1) {
		imgElm.attr('src', SwapImages['BackD']);
	} else {
		if (imgElm.attr('src') == SwapImages['BackD']) imgElm.attr('src', SwapImages['BackE']);
	}
	imgElm = $('img#CarouselArrowNext');
	if (currentPage == maxPage) {
		imgElm.attr('src', SwapImages['NextD']);
	} else {
		if (imgElm.attr('src') == SwapImages['NextD']) imgElm.attr('src', SwapImages['NextE']);
	}
}

$(document).ready(function() {
	// Reset width based on number of li's
	var panelUl = $('ul#CarouselPanel');
	var panelLi = panelUl.find('li');
	var carouselWidth = $('div#CarouselViewInner').width();
	liPerPage = Math.floor(carouselWidth / panelLi.outerWidth());
	currentPage = 1;
	maxPage = Math.floor((panelLi.size()-1) / liPerPage) + 1;
	pageWidth = panelLi.outerWidth() * liPerPage;
	panelUl.width(panelLi.size() * panelLi.outerWidth());
	// Insert Pagination
	var paginationDiv = $('div#CarouselPagination');
	var paginationHtml = '';
	for (i = 1; i <= maxPage; i++) {
		paginationHtml = paginationHtml +
			'<span class="CarouselPage' + (i==1 ? ' Current"' : '"') +
			'id="CarouselPage' + i + '">' + i + '</span>';
	}
	paginationDiv.html(paginationHtml);
	// Build image hash
	SwapImages['BackE'] = $('img#CarouselArrowBackE').attr('src');
	SwapImages['BackD'] = $('img#CarouselArrowBackD').attr('src');
	SwapImages['BackH'] = $('img#CarouselArrowBackH').attr('src');
	SwapImages['NextE'] = $('img#CarouselArrowNextE').attr('src');
	SwapImages['NextD'] = $('img#CarouselArrowNextD').attr('src');
	SwapImages['NextH'] = $('img#CarouselArrowNextH').attr('src');

	$('div#CarouselBack').hover(
		function() { if (currentPage > 1) $('img#CarouselArrowBack').attr('src', SwapImages['BackH']); },
		function() { if (currentPage > 1) $('img#CarouselArrowBack').attr('src', SwapImages['BackE']); }
	);
	$('div#CarouselNext').hover(
		function() { if (currentPage < maxPage) $('img#CarouselArrowNext').attr('src', SwapImages['NextH']); },
		function() { if (currentPage < maxPage) $('img#CarouselArrowNext').attr('src', SwapImages['NextE']); }
	);
	$('div#CarouselBack').click(function() { moveCarousel(currentPage-1); });
	$('div#CarouselNext').click(function() { moveCarousel(currentPage+1); });
	$('.CarouselPage').click(function(evt) {
		var pageStr = new String(evt.target.id);
		var pageNum = parseInt(pageStr.substring(12,pageStr.length));
		moveCarousel(pageNum);
	});

	/* Outline and keyboard navigation
	$('a').mousedown(function(event) { anchorEventMouse = true; $(this).blur(); return false; });
	$('a').keydown(function(event) { anchorEventMouse = false; });
	$('a').click(function(event) { if (anchorEventMouse) $(this).blur(); });
	*/
});

