$(function() {

	$('#infobox').slideshow();

	$('#main').addClass('spinner');

	$('.flexslider .slides img').imgpreload
	({
		all: function()
		{
			$('#main').removeClass('spinner');
			initialize_slideshow();
		}
	});

});

function initialize_slideshow()
{
	var hash = window.location.hash.substring(1);
	var my_starting_slide = hash ? parseInt(hash) : 0;

	if ( $.browser.msie && parseInt($.browser.version, 10) <= 6 ) {
		//do not use slider
	} else {

		$('.flexslider').flexslider({
			animation: "slide",
			slideToStart: my_starting_slide,
			directionNav: false,
			controlNav: false,
			start: function(slider) {
				$('#slide_count').html((my_starting_slide+1) + '/' + slider.count);
				$('#slide_title').html(slider.slides.eq(slider.currentSlide).find('img').attr('alt'));
				$('#buy_link').attr('href', slider.slides.eq(slider.currentSlide).find('img').attr('rel'));
				$('#slide_controls .pause_button').click(function(e) {
					var obj = $(this);
					if (obj.hasClass('pause')) {
						obj.removeClass('pause').addClass('play').text('Play');
						slider.pause(); 
					} else if (obj.hasClass('play')) {
						obj.removeClass('play').addClass('pause').text('Pause');
						slider.resume();
					}
					e.preventDefault();
				});
				$('#slide_controls .prev_button').click(function(e) {
					var target = slider.getTarget('prev');
					slider.flexAnimate(target, false);
					e.preventDefault();
				})
				$('#slide_controls .next_button').click(function(e) {
					var target = slider.getTarget('next');
					slider.flexAnimate(target, false);
					e.preventDefault();
				})
				slider.slides.find('a').click(function(e) {
					var target = slider.getTarget('next');
					slider.flexAnimate(target, false);
					e.preventDefault();
				})
				if (hash) { $('#slide_controls .pause_button').click(); }
			},
			after: function(slider) {
				$('#slide_count').html((slider.currentSlide+1) + '/' + slider.count);
				$('#slide_title').html(slider.slides.eq(slider.currentSlide).find('img').attr('alt'));
				$('#buy_link').attr('href', slider.slides.eq(slider.currentSlide).find('img').attr('rel'));
			}
		});

	}
}


/* plugin for slideshow of infobox on homepage */
(function($) {

	$.fn.slideshow = function(opts) {

		var settings = $.extend({}, $.fn.slideshow.defaults, opts);

		return this.each(function() {

			var timeout, manualMode = false,

			$slideshow = $(this),

			$controls = $('<div/>', {'id' : 'info_controls'}).insertAfter($slideshow),

			$prevBtn = $('<a/>', {
				href : '#',
				html : settings.prevButtonText
				}).appendTo($controls),

				$nextBtn = $('<a/>', {
					href : '#',
					html : settings.nextButtonText
					}).appendTo($controls),

					$items = $slideshow.find('div').hide(),

					getNextItem = function($item) {
						return $item.next().length ? 
						$item.next() : $items.first();
					},

					getPrevItem = function($item) {
						return $item.prev().length ?
						$item.prev() : $items.last();
					},

					showItem = function($currentItem, $itemToShow) {
						var $itemToShow = 
						$itemToShow || getNextItem($currentItem);

						$currentItem.fadeOut(settings.fadeDuration, function() {
							$itemToShow.fadeIn(settings.fadeDuration, fadeCallback);
						});
					},

					fadeCallback = function() {
						if (manualMode) { return; }

						var $this = $(this),
						$next = getNextItem($this),
						num = $this.prevAll().length + 1;

						// set the timeout for showing
						// the next item in 5 seconds
						timeout = setTimeout(function() {
							showItem($this, $next);
							}, settings.interval);
						},

						handleBtnClick = function(e) {
							clearTimeout(timeout);

							manualMode = true;

							var $currentItem = $items.filter(':visible'),
							$itemToShow = e.data.prev ? 
							getPrevItem($currentItem) :
							getNextItem($currentItem);

							showItem($currentItem, $itemToShow);
							e.preventDefault();
						};

						$prevBtn.bind('click', { prev : true }, handleBtnClick);
						$nextBtn.bind('click', { next : true }, handleBtnClick);

						$items.eq(0).fadeIn(settings.fadeDuration, fadeCallback);
					});
				};

				$.fn.slideshow.defaults = {
					fadeDuration : 250,
					interval : 8000,
					prevButtonText : ' &laquo; ',
					nextButtonText : ' &raquo; '
				};

				})(jQuery);

