/**
 * Diaporama site arcadim
 * @author christian@konfiture.com
 */ 
(function($)
	{
		$.fn.arcadimDiaporama = function(params)
			{
				var defaults = 
					{
						titleReplace: 'Ouvrir le Diaporama',
						zIndex: 9999,
						showLink: true,
						linkTitle: 'Fiche détaillée du bien'
					};
				
				var params = $.extend( defaults, params );

				this.each(function()
					{
						var rel = $(this).attr('rel');
						var href = $(this).attr('href');
						
						$(this).attr('title', params.titleReplace);
						if (typeof tooltipOpts !== 'undefined')
							$(this).tooltip(tooltipOpts);
						
						/*
            if (typeof siteRoot !== 'undefined')
							href = siteRoot + href;
            */
						
						var detectKey = 'diaporama:';
						
						if ( ! rel.startsWith(detectKey) )
							return;
						
						var srcStr = rel.substr(detectKey.length);
						
						if ( srcStr.trim() == '' )
							return;
						
						var sources = srcStr.split(';');
						if ( sources.length == 0 )
							return;
							
						var html = '<div id="slideshow-gallery-dialog"><div id="slideshow-gallery-content">';
						for ( x in sources )
							html += '<img src="' + sources[x].trim() + '" width="640" height="480" />';
		
						html += '</div></div>';
						
						if ( sources.length > 1 )
							var dialogButtons = 
								{
									'Suivant' : function()
										{
											$('#slideshow-gallery-content').cycle('next');
										},
									'Précédent': function()
										{
											$('#slideshow-gallery-content').cycle('prev');
										}
								};
						else
							var dialogButtons = {};
							
						if ( params.showLink )
							{
								var linkButton = {};
								linkButton[params.linkTitle] =	function() { $(location).attr('href', href); };
								$.extend( defaults, params );
								dialogButtons = $.extend(dialogButtons, linkButton);
							}
						
						$(this)
							.data('diaporamaSourceImages', sources)
							.data('diaporamaHtml', html)
							.click(function(event)
								{
									event.preventDefault();
									
									$('#slideshow-gallery-dialog').empty().remove();
									
									$('body').first().append( $(this).data('diaporamaHtml') );
									
									$('#slideshow-gallery-content').
										css(
											{
												position: 'relative',
												width: '640px',
												height: '480px'
											});
											
									$('#slideshow-gallery-dialog')
										.css(
											{
												display: 'none',
												position: 'relative',
												width: '640px',
												height: '480px',
												padding: '0',
												overflow: 'hidden'
											})
										.dialog(
											{
												autoOpen: false,
												width: 640,
												height: 'auto',
												modal: true,
												show: 'clip',
												hide: 'clip',
												title:'Diaporama',
												resizable: false,
												zIndex: params.zIndex,
												buttons: dialogButtons,
												open: function()
													{
														$('#slideshow-gallery-content').cycle(
															{
																prev: '#gallery-previous',
																fx: 'fade',
																speed: 'slow',
																sync: true
															});
														
														$('.ui-dialog-titlebar').find('a')
															.attr('title', 'Fermer le diaporama')
															.tooltip(tooltipOpts);
														
														var pane = $('.ui-dialog-buttonpane');
														
														pane.find('button:contains("Suivant")')
															.button(
																{
																	icons: { primary: 'ui-icon-arrowthick-1-e' }
																});
														
														pane.find('button:contains("Précédent")')
															.button(
																{
																	icons: { primary: 'ui-icon-arrowthick-1-w' }
																});
														
														if ( params.showLink )
															pane.find('button:contains("'+params.linkTitle+'")')
																.css('float', 'left')
																.button(
																	{
																		icons: { primary: 'ui-icon-search' }
																	});
													}
											});
									
									//$('#slideshow-gallery-dialog').dialog('open');
									
									var sourcesPreLoad = $(this).data('diaporamaSourceImages');
									var loaded = sourcesPreLoad.length;
									
									var loadingMsg = arcadimMsgBox.loading({message:'Chargement du diaporama, image <span class="preloadAdvanceReplace">1/' + loaded + '</span>.'});
									
									var isPreLoadError = false;
									
									$.each(sourcesPreLoad, function()
										{
											if (!isPreLoadError)
												{
													$(new Image())
														.load(function()
															{
																if (!isPreLoadError)
																	{
																		if (--loaded < 1)
																			{
																				loadingMsg.dialog('close');
																				$('#slideshow-gallery-dialog').dialog('open');
																			}
																			
																		$('.preloadAdvanceReplace')
																			.html((sourcesPreLoad.length - loaded + 1) + '/' + sourcesPreLoad.length);														
																	}
															})
														.error(function()
															{
																if (!isPreLoadError)
																	{
																		isPreLoadError = true;
																		loadingMsg.dialog('close');
																		arcadimMsgBox.error({message: 'Les photos n\'ont pu être chargées.<br />Vérifiez l\'état de votre connexion à internet.'});
																	}
															})
														.attr('src', this);
												}
										});
									
									
								})
						;
							
					});
			};
	})(jQuery);
