try {
	$(document).ready(function() {
		p9_player_init();
	});
} catch(ex) { /* Unhandled Exception */ }

var _p9_player_slides = null;
var _p9_player_hrefs = [];

var _p9_player_mouse_inside = false;

var _p9_player_slide_width = 0;
var _p9_player_slide_height = 0;

var _p9_player_num_slides = 0;
var _p9_player_current_slide_num = 1;

var _p9_player_is_sliding = false;

var _p9_player_button_fade_in_duration = 500;

var _p9_player_slide_in_duration = 550;
var _p9_player_slide_in_easing = 'easeInOutExpo'; //'easeInOutQuad'; 'easeOutQuad';

var _p9_player_user_active = false;

var _p9_player_slide_queue = new Array();
var _p9_player_slide_queue_latest_slide_num = 0;
var _p9_player_slide_queue_timer = null;
var _p9_player_slide_queue_delay = 75;

var _p9_player_halted = false;
var _p9_player_slide_auto_timer = null;
var _p9_player_slide_auto_timer_period = 6000;
var _p9_player_slide_auto_mod_active = false;

function p9_player_init()
{
	_p9_player_slide_width = $('.player-content').width();
	_p9_player_slide_height = $('.player-content').height();
	
	p9_player_load_slides();
	
	// Create nav buttons
	var btnNext = $('<div class="player-btn btn-next" ><a href="#"></a></div>');
	var btnPrev = $('<div class="player-btn btn-prev" ><a href="#"></a></div>');
	var btnPlay = $('<div class="player-btn btn-play" ><a href="#"></a></div>');
	var btnPause = $('<div class="player-btn btn-pause" ><a href="#"></a></div>');
	var btnPannable = $('<div class="player-btn icon-pannable"></div>');
	var btnHires = $('<div class="player-btn icon-hires"></div>');
	//btnNext.css('opacity', '0.0');
	//btnPrev.css('opacity', '0.0');
	//btnPlay.css('opacity', '0.0');
	//btnPause.css('opacity', '0.0');
	btnPannable.css('opacity', '0.0');
	btnHires.css('opacity', '0.0');
	$('.player-content').append(btnNext).append(btnPrev).append(btnPlay).append(btnPause).append(btnPannable).append(btnHires);
	
	// Bind events
	$('.player-content').hover(function(e) {
		_p9_player_mouse_inside = true;
		//p9_player_toggle_btns(true);
	}, function(e) {
		_p9_player_mouse_inside = false;
		p9_player_toggle_btns(false, '.player-btn');
	});
	
	$('.player-content').mousemove(function(e) {
		var offset = $(this).offset();
		var mX = e.clientX - offset.left;
		var mY = e.clientY - offset.top;
		p9_player_mouse_moved(mX, mY);
	});
	
	$('.btn-next').click(function() { p9_player_nav_slide(true); return false; });
	$('.btn-prev').click(function() { p9_player_nav_slide(false); return false; });
	
	$('.btn-play').click(function() { _p9_player_user_active = false; _p9_player_halted = false; p9_player_reset_timer(); p9_player_start_auto_slide(); return false; });
	$('.btn-pause').click(function() { clearTimeout(_p9_player_slide_auto_timer); _p9_player_slide_auto_timer = null; _p9_player_halted = true; return false; });
	
	// Fix IE6/IE7(IE8?) single-click/double-click wierdness (for fast clicking!)
	if($.browser.msie)
	{
		$('.btn-next').bind("dblclick", function(){
			p9_player_nav_slide(true); return false;
		});
	}
	
	// Start Auto Slide
	//if(_p9_player_slide_auto_timer_period>0)
		//p9_player_reset_timer();
}

function p9_player_reset_timer() {
	clearTimeout(_p9_player_slide_auto_timer);
	_p9_player_slide_auto_timer = setTimeout('p9_player_auto_slide()', _p9_player_slide_auto_timer_period);
}

function p9_player_load_slides()
{
	_p9_player_slides = $('.player-slides > img');
	_p9_player_num_slides = _p9_player_slides.length;
	
	for(var i=0;i<_p9_player_num_slides;i++)
	{
		var slide = $(_p9_player_slides[i]);
		var slideNext = slide.next();
		
		_p9_player_hrefs[i] = slide.next('a').attr('href');
	}
}

function p9_player_nav_slide(next)
{
	var curSlideNum = _p9_player_current_slide_num;
	
	if(_p9_player_slide_queue.length>0)
		curSlideNum = _p9_player_slide_queue_latest_slide_num;
		
	var slideNum = curSlideNum+1;
	
	if(!next)
		slideNum = curSlideNum-1;
		
	if(slideNum>_p9_player_num_slides)
		slideNum = 1;
	else if(slideNum<=0)
		slideNum = _p9_player_num_slides;
	
	if(!_p9_player_slide_auto_mod_active)
		_p9_player_user_active = true;
	
	p9_player_open_slide(slideNum);
}

function p9_player_open_slide(slideNum, mod_queue)
{
	if(_p9_player_is_sliding && !mod_queue)
	{
		_p9_player_slide_queue_latest_slide_num = slideNum;
		p9_player_queue_slide(slideNum);
		return;
	}
	
	_p9_player_is_sliding = true;
	
	var newSlideImg = $(_p9_player_slides[slideNum-1]);
	newSlideImg.attr('alt', '');

	var newSlide = $('<div class="slide-holder"></div>');
	
	var anchorHref = _p9_player_hrefs[slideNum-1];

	if(!anchorHref || !anchorHref.length) {
		anchorHref = newSlideImg.src;
	}

	if(anchorHref==newSlideImg.attr('src')) {
		anchorHref = '#';
	}

	var slideAnchor = $('<a href="'+anchorHref+'"></a>');
	
	if(anchorHref=='#') {
		slideAnchor.click(function(){return false;});
	}

	newSlide.append(slideAnchor);
	
	newSlide.css('opacity', '0.0');
	slideAnchor.append(newSlideImg);
	$('.player-content-inner').append(newSlide);
	var img = $('img', newSlide);

	if(img[0].complete || img[0].readyState === 4) {
		newSlide.animate({opacity: 1.0}, _p9_player_slide_in_duration, _p9_player_slide_in_easing, p9_player_done_sliding);
		setupPanView(img);
	} else {
		img.load(function(){
			newSlide.animate({opacity: 1.0}, _p9_player_slide_in_duration, _p9_player_slide_in_easing, p9_player_done_sliding);
			setupPanView($(this));
		});
	}
	
	_p9_player_current_slide_num = slideNum;
}

function setupPanView(img) {
	if(img.hasClass('hires')) {
		$('.icon-hires').animate({opacity: 1.0}, 500);
	} else {
		$('.icon-hires:visible').animate({opacity: 0.0}, 500);
	}

	if(img.hasClass('panorama')) {
		$('.icon-pannable').animate({opacity: 1.0}, 500);
	} else {
		$('.icon-pannable:visible').animate({opacity: 0.0}, 500);
	}

	if(img.hasClass('hires') || img.hasClass('panorama')) {
	
		var opts = {
			'xwidth'				: 500,
			'xheight'			: 500,
			'autoDimensions'	: false,
	        'autoScale'     	: true,
	        'transitionIn'		: 'none',
			'transitionOut'		: 'none',
			'type'				: 'image',
			'overlayColor'		: '#000',
			'overlayOpacity'	: '0.9'
		};
		
		if(img.hasClass('panorama')) {
			opts.onComplete = function(){
			
				var width = $('#fancybox-content').innerWidth();
				var height = $('#fancybox-content').innerHeight();
				
				$('#fancybox-img').css('width', 'auto').css('height', 'auto');
				
				$('#fancybox-content img').panFullSize(width, height);
				
			};
		}
		
		$(".slide-holder a").fancybox(opts);
	}
	
	/*if(img.width()>_p9_player_slide_width || img.height()>_p9_player_slide_height) {
		$('.icon-pannable').animate({opacity: 1.0}, 500);
		
		img.panFullSize(_p9_player_slide_width, _p9_player_slide_height);
	} else {
		$('.icon-pannable:visible').animate({opacity: 0.0}, 500);
	}*/
}

function p9_player_queue_slide(slideNum)
{
	_p9_player_slide_queue.push(slideNum);
	
	if(!_p9_player_slide_queue_timer)
	{
		if(_p9_player_slide_queue_delay>0)
			_p9_player_slide_queue_timer = setTimeout('p9_player_slide_queue_tick()', _p9_player_slide_queue_delay);
		else
			p9_player_slide_queue_tick()
	}
}

function p9_player_done_sliding()
{
	if(_p9_player_slide_queue.length<=0)
	{
		_p9_player_is_sliding = false;
		p9_player_collect_garbage();
	}
}

function p9_player_slide_queue_tick()
{
	if(_p9_player_slide_queue.length>0)
	{
		var nextSlideNum = _p9_player_slide_queue.shift();
		p9_player_open_slide(nextSlideNum, true);
		
		_p9_player_slide_queue_timer = setTimeout('p9_player_slide_queue_tick()', _p9_player_slide_queue_delay);
	}
	else
	{
		_p9_player_slide_queue_timer = null;
	}
}

function p9_player_collect_garbage()
{
	var visibleSlides = $('.player-content-inner').children();
	
	// Find newest slide which isn't animating
	var backgroundSlideIndex = -1;
	for(var i=visibleSlides.length-1;i>=0;i--)
	{
		var slide = $(visibleSlides[i]);
		//if(slide.width()==_p9_player_slide_width)
		if(!slide.is(':animated'))
		{
			backgroundSlideIndex = i;
			break;
		}
	}
	
	if(backgroundSlideIndex<0)
		return;
		
	var r = 0;
	for(var i=0;i<backgroundSlideIndex;i++)
	{
		var slide = $(visibleSlides[i]);
		slide.remove();
		r++;
	}
}

function p9_player_start_auto_slide()
{
	if(_p9_player_slide_auto_timer) {
		return;
	}
	
	_p9_player_slide_auto_timer = setTimeout('p9_player_auto_slide()', _p9_player_slide_auto_timer_period);
}

function p9_player_auto_slide()
{
	if(_p9_player_user_active || _p9_player_halted)
		return;
	
	_p9_player_slide_auto_mod_active = true;
	p9_player_nav_slide(true);
	_p9_player_slide_auto_mod_active = false;

	_p9_player_slide_auto_timer = setTimeout('p9_player_auto_slide()', _p9_player_slide_auto_timer_period);
}

function p9_player_toggle_btns(show, button_selector, omitStop)
{
	var btn = $(button_selector);
		
	if(!btn.length)
		return;
		
	if(!omitStop)
		btn.stop(true, false);
			
	//if(show)
	//	btn.animate({opacity: 1.0}, _p9_player_button_fade_in_duration);
	//else
	//	btn.animate({opacity: 0.0}, _p9_player_button_fade_in_duration);
}

function p9_player_get_default_slide()
{
	p9_player_load_slides();
	
	return '<img src="' + $(_p9_player_slides[0]).attr('src') + '" alt="" class="default-slide" />';
}

function p9_player_mouse_moved(mX, mY)
{
	/*if(mX<(_p9_player_slide_width/8))
		p9_player_toggle_btns(true, '.btn-prev');
	else
	{
		if($('.btn-prev').is(':visible'))
			p9_player_toggle_btns(false, '.btn-prev', false);
	}
	
	if(mX>=_p9_player_slide_width-(_p9_player_slide_width/8))
		p9_player_toggle_btns(true, '.btn-next');
	else
	{
		if($('.btn-next').is(':visible'))
			p9_player_toggle_btns(false, '.btn-next', false);
	}*/
}

function p9_player_halt()
{
	_p9_player_halted = true;
}

function p9_player_resume()
{
	_p9_player_halted = false;
	if(_p9_player_slide_auto_timer_period>0)
	{
		clearTimeout(_p9_player_slide_auto_timer);
		p9_player_auto_slide();
	}
}
