/*
 * module_thumbnail.js
 * 
 * När sidan laddas läggs ett klick-event på alla thumbnail-moduler som kör två olika funktioner beroende på om tumnageln 
 * befinner sig i en galleri-mallsida eller inte. Ifall det senare är fallet läggs även events till på navigationsknapperna
 * i galleriet. Slutligen körs klickeventet på alla tumnaglar som har klassen "mark" (typiskt är detta en tumnagel i en
 * gallerisida).
 * 
 * Varje tumnagel innehåller en typklass (bild,video eller text), en media-URL (bild och video) samt ev. textinnehåll.
 * 
 * thumbnail_openOverlay() öppnar tumnagelns media-URL och textinnehåll i en sk overlay. Denna positioneras centrerat. För
 * att positioneringen ska bli korrekt när en bilden laddats färdigt, får bilden ett event som kör positioneringen när 
 * bilden är inladdad. Videofilen laddas genom SWFObject.
 * 
 * Om tumnageln har andra tumnaglar bredvid sig, aktiveras navigationsknapaprna i overlayen. Dessa fungerar bland tumnaglar
 * som är direkta syskon i samma element.
 * 
 * thumbnail_openGallery() lägger ut tumnagelns innehåll inom en gallerisida.
 */

/**
 * @author joolss
 */


/* ======================== open thumbnail in overlay ======================== */

function thumbnail_openOverlay(me) {
	var itemIndex = $('.module_thumbnail',$(me).parent()).index(me);
	
	if (itemIndex < 0) {
		me = me[0];
		itemIndex = $('.module_thumbnail',$(me).parent()).index(me);
	}
	
	if ($('.overlay_shade').length == 0) {
		var overlayHTML = '<div class="overlay"><div class="overlay_top"></div><div class="overlay_middle"><a href="#" class="overlay_ctrl"></a><div class="overlay_pagination"><span class="overlayNav_current"></span>&#160;av&#160;<span class="overlayNav_total"></span> <a href="#" class="overlayNav_prev">Föregående</a> | <a href="#" class="overlayNav_next">Nästa</a></div><div class="overlay_image"></div><div class="overlay_content"></div></div><div class="overlay_bottom"></div></div>';
		
		$('body').prepend('<div class="overlay_shade"></div>'); // add overlay background shade
		$('body').prepend(overlayHTML); // add overlay box
		$('.overlay_shade, .overlay_ctrl').click(function(){
			thumbnail_hideOverlay();
			return false;
		});
		$(window).resize( function() { // maintain lightbox positioning on resize
			posSemiFixed($('.overlay')[0]);
		});
		
		$('.overlay .overlayNav_prev').click(function(){ // pagination - previous
			var currentItem = parseInt($('.overlayNav_current',$(this).parent()).html() - 1);
			if (currentItem > 0) {
				thumbnail_hideOverlay();
				//alert($('.module_thumbnail').eq(currentItem - 1).html());
				thumbnail_openOverlay($('.module_thumbnail').eq(currentItem - 1));
			}
			return false;
		});
		
		$('.overlay .overlayNav_next').click(function(){ // pagination - next
			var currentItem = parseInt($('.overlayNav_current',$(this).parent()).html());
			if (currentItem < parseInt($('.overlayNav_total',$(this).parent()).html())) {
				thumbnail_hideOverlay();
				//alert($('.module_thumbnail').eq(currentItem).html());
				thumbnail_openOverlay($('.module_thumbnail').eq(currentItem));
			}
			return false;
		});
	} else {
		$('.overlay_shade, .overlay').show();
	}
	
	var itemsTotal = $('.module_thumbnail',$(me).parent()).length;
	$('.overlay .overlayNav_total').html(itemsTotal);
	$('.overlay .overlayNav_current').html(itemIndex + 1);
	$('.overlay .stop').removeClass('stop');
	
	if ($('.module_thumbnail',$(me).parent()).length > 1) {
		$('.overlay .overlay_pagination').show();
		if (itemIndex == 0) { // this is the first item
			$('.overlay .overlayNav_prev').addClass('stop');
		} else if ((itemIndex + 1) == itemsTotal) {  // this is the last item
			$('.overlay .overlayNav_next').addClass('stop');
		}
	}
	
	if ($(me).hasClass('thumbType_video')) { // if content is flashvideo
		$('.overlay .overlay_image').css('height','351px');
		$('.overlay .overlay_image').html('<div id="sys_overlay_video"></div>');
		$('.overlay_image').removeClass('overlay_imageHide');
		
		var galflashvars = {};
			galflashvars.movieUrl = $('.thumbnail_url',me).attr('href');
			galflashvars.thumbnailCaptureTime = "50";
			galflashvars.playCaption = "SPELA";
		var galparams = {};
			galparams.allowfullscreen = "true";
		var galattributes = {};
		swfobject.embedSWF("/flash/player.swf", "sys_overlay_video", "527", "351", "9.0.0", false, galflashvars, galparams, galattributes);
		
		$('.overlay .overlay_content').html($('.thumbnail_data',me).html());
		posSemiFixed($('.overlay')[0]);
		$('.overlay .overlay_image').css('height','auto');
		
	} else if ($(me).hasClass('thumbType_image')) { // if content is a regular image
		$('.overlay_image').removeClass('overlay_imageHide');
		$('.overlay .overlay_image').html('<img src="' + $('.thumbnail_url',me).attr('href') + '" alt="' + $(me).children('img').attr('alt') + '" />');
		$('.overlay .overlay_content').html($('.thumbnail_data',me).html());
		$('.overlay .overlay_image img').load(function(){
			 posSemiFixed($('.overlay')[0]); // re-position lightbox after image has loaded
		});
		posSemiFixed($('.overlay')[0]);
		//alert($('.overlay').html());
		
	} else if ($(me).hasClass('thumbType_text')) { // if content is just text 
		$('.overlay .overlay_image').html('');
		$('.overlay_image').addClass('overlay_imageHide');
		$('.overlay .overlay_content').html($('.thumbnail_data',me).html());
		posSemiFixed($('.overlay')[0]);
		
	}
}

function thumbnail_hideOverlay() {
	$('#sys_overlay_video').remove();
	$('.overlay_shade, .overlay').hide();
	$('.overlay .overlay_pagination').hide();
}


/* ======================== open thumbnail in page ======================== */

function thumbnail_openGallery(me) {
	var itemIndex = $('.module_thumbnail',$(me).parent()).index(me);
	
	if (itemIndex < 0) {
		me = me[0];
		itemIndex = $('.module_thumbnail',$(me).parent()).index(me);
	}
	
	$('.galleryNav_total').html($('.module_thumbnail',$(me).parent()).length);
	$('.galleryNav_current').html(itemIndex + 1);
	
	if ($(me).hasClass('thumbType_video')) { // if content is flashvideo
		$('#gallery_imageArea').show();
	
		$('#gallery_imageArea').html('<div id="sys_gallery_video"><h5>Get Adobe Flash player</h5><p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p></div>');
		var flashMovieUrl = '/'+ $('.thumbnail_url',me).attr('href');
		//alert(flashMovieUrl);
		
		var flashvars = {};
		flashvars.movieUrl = flashMovieUrl;
		flashvars.thumbnailCaptureTime = "10";
		flashvars.playCaption = "SPELA";
		flashvars.autoPlay = "False";
		var params = {};
		params.allowfullscreen = "true";
		params.bgcolor = "0x000000";
		var attributes = {};
		swfobject.embedSWF("/flash/player.swf", "sys_gallery_video", "503", "335", "9.0.0", "/js/lib/expressInstall.swf", flashvars, params, attributes);

		$('#gallery_textArea').html($('.thumbnail_data',me).html());
		
	} else if ($(me).hasClass('thumbType_image')) { // if content is a regular image
		$('#gallery_imageArea').show();
		$('#gallery_imageArea').html('<img src="' + $('.thumbnail_url',me).attr('href') + '" alt="' + $(me).children('img').attr('alt') + '" />');
		$('#gallery_textArea').html($('.thumbnail_data',me).html());

		
	} else if ($(me).hasClass('thumbType_text')) { // if content is just text 
		$('#gallery_imageArea').html('');
		$('#gallery_imageArea').hide();
		$('#gallery_textArea').html($('.thumbnail_data',me).html());
		
	}
	
	$('.module_thumbnail').removeClass('mark');
	$(me).addClass('mark');
}



/* ======================== Page DOM Loaded ======================== */

$(document).ready(function(){
	$('.module_thumbnail').click(function(){
		if($(this).parents().hasClass('gallery_thumbs')) { // if used in the thumb area of the gallery template
			thumbnail_openGallery(this);
			return false;
		} else { // if not, use overlay
			thumbnail_openOverlay(this);
			return false;
		}
	});
	
	if ($('.gallery_pagination').length > 0) {
		$('.gallery_pagination .galleryNav_prev').click(function(){ // pagination - previous
			var currentItem = parseInt($('.galleryNav_current', $(this).parent()).html() -1);
			if (currentItem > 0) {
				//alert($('.module_thumbnail').eq(currentItem - 1).html());
				thumbnail_openGallery($('.module_thumbnail').eq(currentItem - 1));
			}
			return false;
		});
		
		$('.gallery_pagination .galleryNav_next').click(function(){ // pagination - next
			var currentItem = parseInt($('.galleryNav_current', $(this).parent()).html());
			if (currentItem < parseInt($('.galleryNav_total', $(this).parent()).html())) {
				//alert($('.module_thumbnail').eq(currentItem).html());
				thumbnail_openGallery($('.module_thumbnail').eq(currentItem));
			}
			return false;
		});
		
		$('.module_thumbnail.mark').eq(0).click();
	}
});
