var videoGallery;

function showGalleryProgressIndicator(gw)
{
	var progressIndicator = gw.find('>.galleryProgressIndicator');
	progressIndicator
		.css({
			 	opacity: 0.1,
			 	display: 'block'
			})
		.fadeTo('fast', 1);
}

function hideGalleryProgressIndicator(gw)
{
	gw.find('>.galleryProgressIndicator')
		.fadeTo('fast', 0.1, function(){jQuery(this).css('display', 'none')})
}

function XMLGallerific(galleryWrapper, XMLpath){
			if (galleryWrapper.size() == 0) return;
			// gallery HTML elements
			var gallery = {
								title: galleryWrapper.find('.GalleryTitle'),
								hint: galleryWrapper.find('.GalleryHint'),
								thumbnailWrapper: galleryWrapper.find('.Thumbnails ul'),
								hiddenNav: galleryWrapper.find('.HiddenNav')
							  };
							  
			showGalleryProgressIndicator(galleryWrapper);
			
			// read and parse XML data
			 jQuery.ajax({
				 type: "GET",
				 url: XMLpath,
				 dataType: "xml",
				 success: function(xml)
				 			{
								// get XML info into HTML containers
								var xmlData = jQuery(xml).find('gallery');
								
								gallery.title.html(xmlData.find('>title').text());
								gallery.hint.html(xmlData.find('>hint').text());
								
								
								// get slides information
								var gallerySlidesLocation = xmlData.find('>slidesLocation').text();
								gallerySlides = xmlData.find('>slides>slide');
								
								var gallerySize = gallerySlides.size();
								var slidesLoaded = 0;
								
								// build HTML for each slide
								gallerySlides
									.each(function(index)
											{
												var slideInfo = jQuery(this);			
												
												// building slides one by one for the modiffied gallerific plugin
												var thumbnail = jQuery('<li><a href="' + gallerySlidesLocation + slideInfo.find('normal').text()  + '" ' +
																		'original="' + gallerySlidesLocation + slideInfo.find('maximized').text() + '" ' +
																		'title="' + slideInfo.find('title').text() + '" ' +
																		'description="' + slideInfo.find('description').text() + '"' +
																		'index="' + index + '">' +
																			'<img src="' + gallerySlidesLocation + slideInfo.find('thumbnail').text() + '" />' +
																		'</a></li>');
												
												thumbnail.appendTo(gallery.thumbnailWrapper);
												
												var lighboxLink = jQuery('<a href="' + gallerySlidesLocation + slideInfo.find('maximized').text() + '" index="' + index + '"></a>');
												lighboxLink.appendTo(gallery.hiddenNav);
												
												thumbnail.find('img')
													 .load(function()
															{	
																slidesLoaded += 1;
																if(index == gallerySize - 1)
																{
																	// last slide loaded, initialize modiffied gallerific gallery							
																	initGallery(galleryWrapper);
																	hideGalleryProgressIndicator(galleryWrapper);
																}																													
															});
											}); //close each
				 },
				 error: function(err)
						{
							hideGalleryProgressIndicator(galleryWrapper);
						}
			 });
		}

function initGallery(galleryWrapper)
{							
	videoGallery = galleryWrapper
					.galleriffic(galleryWrapper.find('.Thumbnails'), 
								 {
									delay:                8000,
									numThumbs:            6,
									preloadAhead:         -1, // Set to -1 to preload all images
									enableTopPager:       false,
									enableBottomPager:    true,
									pagerType: 			  'prevNext',
									imageContainerSel:    galleryWrapper.find('.MainItem'),
									controlsContainerSel: galleryWrapper.find('.Nav'),
									titleContainerSel:    galleryWrapper.find('.Title'),
									descContainerSel:     galleryWrapper.find('.Description'),
									downloadLinkSel:      '',
									renderSSControls:     true,
									renderNavControls:    false,
									autostart: true,
									relatedGallery: galleryWrapper
								});
					
	galleryWrapper.find('.HiddenNav a').hsLB({relatedGallery: galleryWrapper});
	
}

function initTabs(tabsWrapper)
{
	tabsWrapper.find(">ul:first").tabs();
}

jQuery(function() {
	XMLGallerific(jQuery('#PhotoGallery.F5'), 'galleries/f5/gallery.xml');
	XMLGallerific(jQuery('#PhotoGallery.F7'), 'galleries/f7/gallery.xml');
	XMLGallerific(jQuery('#PhotoGallery.TQ5'), 'galleries/tq5/gallery.xml');
	XMLGallerific(jQuery('#PhotoGallery.PB'), 'galleries/pb/gallery.xml');
	initTabs(jQuery('#FeaturesTabs'));
});