// SpryThumbnailFilmStripPlugin.js - version 0.2 - Spry Pre-Release 1.7//// Copyright (c) 2010. Adobe Systems Incorporated.// All rights reserved.//// Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions are met:////   * Redistributions of source code must retain the above copyright notice,//     this list of conditions and the following disclaimer.//   * Redistributions in binary form must reproduce the above copyright notice,//     this list of conditions and the following disclaimer in the documentation//     and/or other materials provided with the distribution.//   * Neither the name of Adobe Systems Incorporated nor the names of its//     contributors may be used to endorse or promote products derived from this//     software without specific prior written permission.//// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE// POSSIBILITY OF SUCH DAMAGE.(function() { // BeginSpryComponentif (typeof Spry == "undefined" || !Spry.Widget || !Spry.Widget.ImageSlideShow){	alert("SpryThumbnailFilmStripPlugin.js requires SpryImageSlideShow.js!");	return;}if (!Spry.Widget.FilmStrip){	alert("SpryThumbnailFilmStripPlugin.js requires SpryFilmStrip.js!");	return;}var gTFSP = Spry.Widget.ImageSlideShow.ThumbnailFilmStripPlugin = {	config: {		useBkgImages: true,		pageIncrement: 1,		wraparound: true,		sliceMap: {},		componentOrder: [ "previous", "next", "track" ],		pluginOptionsProp: "TFSP"	},	initialize: function(ss)	{		var opts = ss.setOptions({}, gTFSP.config);		if (ss[opts.pluginOptionsProp])			ss.setOptions(opts, ss[opts.pluginOptionsProp]);		ss[opts.pluginOptionsProp] = opts;		// This plugin stores the thumbnail urls used by the slide show		// directly on the slide show.		ss.thumbnailLinksInfo = { thumbUrls: [] };		// Add the plugin as an observer of the slide show so it can		// hook in at the appropriate times.		ss.addObserver(this);	},	onPostExtractImageInfo: function(ss, evt)	{		// This function gets called before any markup transformation is performed		// by the slideshow widget. We need to extract out the thumbnail URLs from		// the default markup embedded within the page. The film strip we create		// later will use these URLs.		var urls = ss.thumbnailLinksInfo.thumbUrls;		var re = evt.repeatingElements;		for (var i = 0; i < re.length; i++)		{			var img = re[i].getElementsByTagName("img").item(0);			urls[i] = img ? img.src : "";		}	},	onPostTransformMarkup: function(ss, evt)	{		var opts = ss[gTFSP.config.pluginOptionsProp];		// The slideshow widget just finished injecting its transformed markup		// into the page. Look for all of the slide links in the widget, and		// inject a thumbnail image into it, or make it a background image on		// the link.		var urls = ss.thumbnailLinksInfo.thumbUrls;		var links = Spry.$$("." + ss.slideLinkClass, ss.element);		for (var i = 0; i < links.length; i++)		{			var container = links[i].contentContainer;			if (opts.useBkgImages)				container.style.backgroundImage = "url(" + urls[i] + ")";			else			{				container.innerHTML = "";				var img = document.createElement("img");				img.src = urls[i];				container.appendChild(img);			}		}		// Now find the element that contains all of the slide links		// and transform it into a filmstrip widget. All of the slide links		// will be treated as panels during the film strip transformation so		// it will still allow the user to navigate directly to a given slide.		var container = Spry.$$("." + ss.slideLinksClass, ss.element)[0];		if (container)			ss.thumbnailLinksInfo.filmStrip = new Spry.Widget.FilmStrip(container, {				pageIncrement:  opts.pageIncrement,				wraparound:     opts.wraparound,				sliceMap:       opts.sliceMap,				componentOrder: opts.componentOrder			});	},	onPostShowSlide: function(ss, evt)	{		// Anytime a new slide is shown, make sure the correct thumbnail is		// selected and scrolled into view if necessary.		ss.thumbnailLinksInfo.filmStrip.showPanel(evt.slideIndex);	}};})(); // EndSpryComponent
