jQuery(document).ready(function($) {

/*************/
/* Slideshow */
/*************/

	var window_loaded = false;
	
	// Define variables
	var id;
	var iterator = 0;
	var item_count = 0;
	var paused = false;
	var transition_speed = 700;
	var second_transition_speed = 400;
	var transition_interval = 6000;
	var gallery_width = 640;
	var gallery_height = 408;
	
	// Define jQuery objects for reuse
	var gallery;
	var panels;
	var filmstrip;
	var frames;
	
	/*******************/
	/* Plugin Methods */
	/******************/
	
	// Transition from current to item 'i'
	function showItem(i) {
	
		// Fade out all panels while fading in target panel
		panels.fadeOut(transition_speed).eq(i).fadeIn(transition_speed);
		frames.removeClass('active');
		frames.eq(i).addClass('active');		
		enableFrameClicking();
		
	}

	// Halt transition timer, move to next item, restart timer
	function showNextItem() {
	
		$(document).stopTime("transition");
		if(++iterator==frames.length) {iterator=0;}
		showItem(iterator);
		if (!paused) {
			$(document).everyTime(transition_interval,"transition",function(){
				showNextItem();
			});
		}
	};
	
		//Get absolute position of element in relation to top-left corner of gallery
	//If el=gallery, return position of gallery within browser viewport
		function getPos(el) {
			var left = 0, top = 0;
			var el_id = el.id;
			if(el.offsetParent) {
				do {
					left += el.offsetLeft;
					top += el.offsetTop;
				} while(el = el.offsetParent);
			}
			//If we want the position of the gallery itself, return it
			if(el_id == id) {return {'left':left,'top':top};}
			//Otherwise, get position of element relative to gallery
			else {
				var gPos = getPos(gallery[0]);
				var gLeft = gPos.left;
				var gTop = gPos.top;
				
				return {'left':left-gLeft,'top':top-gTop};
			}
		};
	
	//Add onclick event to each frame
		function enableFrameClicking() {
			frames.each(function(i){
				//If there isn't a link in this frame, set up frame to slide on click
				//Frames with links will handle themselves
				
					$(this).click(function(){
						if(iterator!=i) {
							$(document).stopTime("transition");
							showItem(i);
							iterator = i;
							if(!paused) {
								$(document).everyTime(opts.transition_interval,"transition",function(){
									showNextItem();
								});
							}
						}
						return false;
					});
				
			});
		};
		
		//Check mouse to see if it is within the borders of the panel
	//More reliable than 'mouseover' event when elements overlay the panel
		function mouseIsOverGallery(x,y) {		
			var pos = getPos(gallery[0]);
			var top = pos.top;
			var left = pos.left;
			return x > left && x < left+gallery_width && y > top && y < top+gallery_height;				
		};
		
		function getInt(i) {
			i = parseInt(i,10);
			if(isNaN(i)) { i = 0; }
			return i;	
		}
	
	
	function buildGallery() {
/************************************************/
	/*	Add events to various elements				*/
	/************************************************/		
// Pause on Hover
		$().mousemove(function(e){							
					if(mouseIsOverGallery(e.pageX,e.pageY)) {

							if(!paused) {
								$(document).oneTime(500,"animation_pause",function(){
									$(document).stopTime("transition");
									paused=true;
								});
							}
						
					} else {

							$(document).stopTime("animation_pause");
							if(paused) {
								$(document).everyTime(transition_interval,"transition",function(){
									showNextItem();
								});
								paused = false;
							}

					}
				});
		
		
	/****************************************************************/
	/*	Initiate Automated Animation								*/
	/****************************************************************/
			
			//Hide loading box
			filmstrip.css('visibility','visible');
			gallery.css('visibility','visible');
			//$('.loader',gallery).fadeOut('1000',function(){
			gallery.fadeIn('1000',function(){
				$('.ss-nav-container').fadeIn();
				//Show the 'first' panel
				showItem(iterator);
				//If we have more than one item, begin automated transitions
				if(item_count > 1) {
					$(document).everyTime(transition_interval,"transition",function(){
						showNextItem();
					});
				}	
			});
	}
	
	/************************************************/
/*	Main Plugin Code							*/
/************************************************/

	//Hide <ul>
	gallery = $('#front-page-slideshow-list');
	gallery.css('visibility','hidden');
	
	$(document).stopTime("transition");
	$(document).stopTime("animation_pause");
			
	id = gallery.attr('id');
	
	filmstrip = $('#ss-nav');
	frames = $('li',filmstrip);
	frames.addClass('frame');
	
	panels = $('li',gallery);
	
	// Number of frames in filmstrip
	item_count = panels.length;
	
	iterator = 0;
	
	/********************************************************/
			/*	PLACE LOADING BOX OVER GALLERY UNTIL IMAGES LOAD	*/
			/********************************************************/
			
			/*galleryPos = getPos(gallery[0]);
					$('<div>').addClass('loader').css({
						'position':'absolute',
						'zIndex':'32666',
						'opacity':1,
						'top':'0px',
						'left':'0px',
						'width':gallery_width+'px',
						'height':gallery_height+'px'
					}).appendTo(gallery);*/
					
	
// Initiate the Slideshow	
	if(!window_loaded) {
		$(window).load(function(){
			window_loaded = true;
			buildGallery();
		});
	} else {
		buildGallery();
	}

});
