/*
	Exposio HDR Gallery
	Requires Mootool 1.2 Core
	Requires lib.ok.utils.RequireUtils
	Ok!nteractif
*/

RequireUtils.require(
	[
	 	'lib.ok.utils.ElementExtras',
		'lib.mootools.more.utils.Assets',
	 	'lib.mootools.more.element.Shortcuts',
		'lib.mootools.more.element.Measure',
		'lib.mootools.more.element.Position',
		'lib.mootools.more.interface.Tips',
		'local.ui.gallery.ExposioHDRGalleryFullImage',
		'local.ui.gallery.ExposioHDRGalleryVignetteImage',
	 	'local.ui.gallery.ExposioHDRGalleryThumbnails',
		'local.ui.gallery.ExposioHDRGalleryNavigation',
		'local.ui.gallery.ExposioHDRGalleryImageNavigation'
	]
);

var GALLERY_FULLIMAGE_DIV = 'fullImage';
var GALLERY_VIGNETTEIMAGE_DIV = 'vignetteImage';
var GALLERY_THUMBNAILS_DIV = 'thumbnails';
var GALLERY_NAVIGATION_DIV = 'navigation';

var GALLERY_THUMBNAIL_SELECTED_CLASS = 'thumbnailSelected';
var GALLERY_THUMBNAILS_PAGE_CLASS = 'thumbnailsPage';
var GALLERY_THUMBNAIL_MARGIN = 4;
var GALLERY_PAGE_WIDTH = 900;

var GALLERY_NEXT_BUTTON_ID = 'btn-next';
var GALLERY_PREVIOUS_BUTTON_ID = 'btn-previous';

var GALLERY_TOOLTIP_CLASS = 'tooltip';
var GALLERY_TOOLTIP_TEXT = {
	fr:			'Enfoncez le bouton de la souris pour comparer avec la photo originale.',
	en:			'Hold your mouse button to compare to an original photo.'
};

var GALLERY_LOADER_PATH = 'shared/medias/loader.gif'

var GALLERY_IMAGES_SUFFIXES = {
	full:		'-large',
	thumbnail:	'-thumb',
	compare:	'-compare'
};

var GALLERY_IMAGENAVIGATION_NEXT_BUTTON_ID = 'btn-navimage-next';
var GALLERY_IMAGENAVIGATION_PREVIOUS_BUTTON_ID = 'btn-navimage-previous';
var GALLERY_IMAGENAVIGATION_BUTTONS_WIDTH = 50;
var GALLERY_IMAGENAVIGATION_BUTTONS_HEIGHT = 50;
var GALLERY_IMAGENAVIGATION_BUTTONS_MARGIN = 7;

var ExposioHDRGallery = new Class({

	lang					: null,
	currentThumbnail		: null,
	$fullImage				: null,
	$vignette				: null,
	$navigation				: null,
	$thumbnails				: null,
	
	initialize				: function(lang)
	{
		this.lang = lang;
		if(Browser.Engine.trident) this.init();
		else window.addEvent('load', this.init.bind(this));
	},
	
	init					: function()
	{
		this.initFullImage();
		this.initVignetteImage();
		this.initThumbnails();
		this.initNavigation();		
	},
	
	initFullImage			: function()
	{
		this.$fullImage = new ExposioHDRGalleryFullImage(this, $(GALLERY_FULLIMAGE_DIV));
	},
	
	initVignetteImage		: function()
	{
		this.$vignetteImage = new ExposioHDRGalleryVignetteImage(this, $(GALLERY_VIGNETTEIMAGE_DIV));
	},
	
	initNavigation			: function()
	{
		this.$navigation = new ExposioHDRGalleryNavigation(this, $(GALLERY_NAVIGATION_DIV));
	},
	
	initThumbnails			: function()
	{
		this.$thumbnails = new ExposioHDRGalleryThumbnails(this, $(GALLERY_THUMBNAILS_DIV));
	},
	
	getThumbnailsClip		: function() { return this.$thumbnails.getClip(); },
	getThumbnailsPages		: function() { return this.$thumbnails.getTotalPages(); },
	getThumbnailsPage		: function() { return this.$navigation ? this.$navigation.currentPage : 1; },
	
	setFullImage			: function(thumbnail)
	{
		this.$fullImage.change(thumbnail);
		this.$vignetteImage.change(thumbnail);
	},
	
	switchFullImage			: function(direction)
	{
		var thumbnailIndex = (direction == 1) ? this.$thumbnails.getNext() : this.$thumbnails.getPrevious();

		if(!isNaN(thumbnailIndex)) this.$thumbnails.selectThumbnail(thumbnailIndex);
		else{
			this.$navigation.switchToPage(-direction);
			(direction == 1) ? this.$thumbnails.selectFirst() : this.$thumbnails.selectLast();
			
		}
	}
});
