/*
 * Gallery Beqa Lagoon Resort
 * 2009 Morozov Igor (http://www.imvio.eu)
 * Requires: jQuery v1.3+
*/

;
pausegallery = true
itemphoto = 0;
bigPhotoInterval = 0

function gallery() {
	var $mom = $(this);
	var scrollXpos;
	var $gallerymain = $('#gallery-main');
	var $thumbblock = $('#thumbnails');
	var $thumbpanel = $('#thumbnails-panel');
	var thumbpanelheight = $('#thumbnails-panel').height();
	var $thumbblocktable = $thumbblock.find('table');
	
	var $thumbRightshad = $('#right-shad');
	var $thumbLeftshad = $('#left-shad');
	var motherElementOffset = $thumbblock.offset().left;
	var hotSpotWidth = $thumbRightshad.width();

	var offsetimg = Math.round($thumbblock.width()/2 - 81);

	var photolink = $thumbblock.find('a');
	var gimage = $('#big-photo');
	var indicator = $('#indicator');
	var myGalleryItems = '';
	
	$thumbblock.scrollLeft(0);
	hideLeftShad();
	
	$(window).one("load",function(){
		itemphoto++;
		pausegallery = false;
		startgallery();


		/**** preload img ****/
		$('#minWidth').append('<div id="preloadimg"></div>');
		$('#thumbnails a').each(function(){
			$t = $(this);
			prehre = $t.attr("href");
			myGalleryItems += '<img src='+prehre+' width=1 height=1 />';
		});
		$('#preloadimg').html(myGalleryItems);
		/**** preload img ****/

	});
	
	
	
	$gallerymain.bind('mouseenter',function(){
		pauseslide();
		$(document).stopTime("thumbnailshide");
		$thumbpanel.stop().animate({'bottom':0},400);
	});

	$gallerymain.bind('mouseleave',function(){
		pausegallery = false;
		startgallery();
		$(document).oneTime(1000,"thumbnailshide",function(){
			$thumbpanel.stop().animate({'bottom':-thumbpanelheight},800);
		});


	});
	
	function activephoto(itemphoto) {
		$thumbblock.find('td').removeClass('selected');
		$thumbblock.find('td:eq('+itemphoto+')').addClass('selected');
		$thumbblock.scrollTo('td:eq('+itemphoto+')', 400, {axis:'x',offset:-offsetimg});
		indicator.show();
	};
	
	function try_clickphoto(){
		showHideShadows();
		if (gimage.find('img')[0].complete) {
			$(document).stopTime("thumbnailclick");
			indicator.hide();
			loadedclick_photo();
		}
		else{
			$(document).oneTime(1000,"thumbnailclick",function(){
				try_clickphoto();
			});
		};
	};
	
	function try_slidephoto(){
		showHideShadows();
		if (gimage.find('img')[0].complete) {
			$(document).stopTime("thumbnailslide");
			indicator.hide();
			loadedslide_photo();
		}
		else{
			$(document).oneTime(1000,"thumbnailslide",function(){
				try_slidephoto();
			});
		};
	};
	
	function loadedclick_photo(){
		gimage.animate({'opacity':'1'},800);
	};
	
	function loadedslide_photo(){
		gimage.animate({'opacity':'1'},800, function(){
			pausegallery = false;
			startgallery();
		});
	};
	
	function startgallery() {
		if(pausegallery===false) {
			$(document).oneTime('5s',"slideshow",function(){
				slideshow();
			});
		}
		else{
			$(document).stopTime("slideshow");
		}
	};
	
	function pauseslide() {
		pausegallery = true;
		$(document).stopTime("slideshow");
	};
	
	/**************
	slideshow gallery
	***************/
	
	function slideshow() {
		pauseslide();
		if(photolink.length === itemphoto) {
			$thumbblock.scrollLeft('0');
			showLeftShad();
			itemphoto = 0;
			slideshow();
		}
		else {
			activephoto(itemphoto);
			var photolinkattr = $thumbblock.find('a:eq('+itemphoto+')').attr('href');
			gimage.animate({'opacity':'0'},250,function(){
				gimage.find('img').remove();
				$('#big-photo').html('<img src='+photolinkattr+' />');
				try_slidephoto();
			});
			itemphoto++;
		};
	};
	
	
	/**************
	click gallery
	***************/
	
	$('#thumbnails a').bind('click',function(){
		pauseslide();
		var itemindex = $(this).parent();
		itemphoto = $('#thumbnails td').index(itemindex);
		activephoto(itemphoto);
		
		var photolinkattr = $thumbblock.find('a:eq('+itemphoto+')').attr('href');
		gimage.animate({'opacity':'0'},250,function(){
			gimage.find('img').remove();
			$('#big-photo').html('<img src='+photolinkattr+' />');
			try_clickphoto();
		});
		itemphoto++;
		return false;
	}).bind('mouseover',function(){
		pauseslide();
	});

	/**************
	thumbnails
	***************/

		/**********************
		right shadow*/

		$thumbRightshad.bind('mousemove',function(e){
			var x = e.pageX - (this.offsetLeft + motherElementOffset);
			scrollXpos = Math.round((x/hotSpotWidth) * 10);
			if(scrollXpos === Infinity) {
				scrollXpos = 0;
			}
		});

		$thumbRightshad.bind('mouseover',function(e){

			$mom.rightScrollInterval = setInterval(doScrollRight, 6);
		});

		$thumbRightshad.bind('mouseout',function(){
			clearInterval($mom.rightScrollInterval);
			scrollXpos = 0;
		});

		var doScrollRight = function()
		{	
			if(scrollXpos > 0) {
				$thumbblock.scrollLeft($thumbblock.scrollLeft() + (scrollXpos));
			};
			showHideShadows();
		};


		/*
		**********************/

		/**********************
		left shadow*/

		$thumbLeftshad.bind('mousemove',function(e){
			var x = $thumbLeftshad.innerWidth() - (e.pageX - motherElementOffset);
			scrollXpos = Math.round((x/hotSpotWidth) * 10);
			if(scrollXpos === Infinity) {
				scrollXpos = 0;
			}
		});

		$thumbLeftshad.bind('mouseover',function(e){

			$mom.leftScrollInterval = setInterval(doScrollLeft, 6);
		});

		$thumbLeftshad.bind('mouseout',function(){
			clearInterval($mom.leftScrollInterval);
			scrollXpos = 0;
		});

		var doScrollLeft = function()
		{	
			if(scrollXpos > 0) {
				$thumbblock.scrollLeft($thumbblock.scrollLeft() - (scrollXpos));
			}
			showHideShadows();
		};


		/*
		**********************/


		function showHideShadows()
		{
			if($thumbblock.scrollLeft() === 0)
			{
				hideLeftShad();
				showRightShad();
			}

			else if(($thumbblocktable.width()) <= ($thumbblock.innerWidth() + $thumbblock.scrollLeft()))
			{
				hideRightShad();
				showLeftShad();
			}

			else
			{
				showRightShad();
				showLeftShad();
			};
		};

		function hideLeftShad(){
			$thumbLeftshad.hide();
		};

		function hideRightShad(){
			$thumbRightshad.hide();
		};

		function showLeftShad(){
			$thumbLeftshad.show();
			if(hotSpotWidth <= 0) {
				hotSpotWidth = $thumbLeftshad.width();
			};
		};

		function showRightShad(){
			$thumbRightshad.show();
			if(hotSpotWidth <= 0) {
				hotSpotWidth = $thumbRightshad.width();
			};
		};
};
