// gallery.js - version 0.5 - Spry Pre-Release 1.6
//
// Copyright (c) 2006. 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.
if (root!='../') {var root=''}
var gSlideShowInterval;if (gSlideShowInterval==undefined)gSlideShowInterval=3000;
var gAutoStartSlideShow;if (gAutoStartSlideShow==undefined)gAutoStartSlideShow=true;
var gBehaviorsArray=[];var gSlideShowOn=false;var gSlideShowTimer=null;var gImageLoader=null;
dsPhotos.addObserver(function(nType, notifier, data) {if (nType=="onPreLoad")StopSlideShow();});
Spry.Data.Region.addObserver("thumbContainer", function(nType, notifier, data) {if (nType=="onPostUpdate"){ShowCurrentImage();if (gAutoStartSlideShow)StartSlideShow(true);}});
function CancelBehavior(id){if (gBehaviorsArray[id]){gBehaviorsArray[id].cancel();gBehaviorsArray[id]=null;}}
function SetMainImage(imgPath, width, height, tnID){var img=document.getElementById("mainImage");if (!img)return;CancelBehavior("mainImage");
Spry.Utils.SelectionManager.clearSelection("thumbnailSelection");if (tnID)
Spry.Utils.SelectionManager.select("thumbnailSelection", document.getElementById(tnID), "selectedThumbnail");
if (gImageLoader){gImageLoader.onload=function() {};gImageLoader=null;}gBehaviorsArray["mainImage"]=new Spry.Effect.Opacity(img, Spry.Effect.getOpacity(img),0, 
{duration:300, finish: function(){gBehaviorsArray["mainImage"]=new Spry.Effect.Size(img.parentNode, Spry.Effect.getDimensions(img.parentNode), {width: width, height: height, units:"px"},
{duration:325, finish: function(){gImageLoader=new Image();gImageLoader.onload=function(){img.src=gImageLoader.src;gImageLoader=null;
gBehaviorsArray["mainImage"]=new Spry.Effect.Opacity(img,0,1, {duration: 400,finish: function(){gBehaviorsArray["mainImage"]=null;img.style.opacity="";img.style.filter="";if (gSlideShowOn)SetSlideShowTimer();}});gBehaviorsArray["mainImage"].start();};
gImageLoader.src=imgPath;}});gBehaviorsArray["mainImage"].start();}});gBehaviorsArray["mainImage"].start();}
function ShowCurrentImage(){var curRow=dsPhotos.getCurrentRow();SetMainImage(root+curRow["@path"]+"/images/"+curRow["@image"], curRow["@width"], curRow["@height"], "tn"+curRow["ds_RowID"]);}
function SizeAndPosition(id, toX, toY, toWidth, toHeight, callback){CancelBehavior(id);
var effectCluster=new Spry.Effect.Cluster({finish: callback});var ele=Spry.Effect.getElement(id); 
var moveEffect=new Spry.Effect.Move(ele, Spry.Effect.getPosition(ele), {x: toX, y: toY, units: "px"}, {duration:400});
var sizeEffect=new Spry.Effect.Size(ele, Spry.Effect.getDimensions(ele), {width: toWidth, height: toHeight, units: "px"}, {duration:400});
effectCluster.addParallelEffect(moveEffect);effectCluster.addParallelEffect(sizeEffect);gBehaviorsArray[id]=effectCluster;gBehaviorsArray[id].start();}
function AdvanceToNextImage(moveBackwards){var rows=dsPhotos.getData();var curRow=dsPhotos.getCurrentRow();
if (rows.length < 1)return;for (var i=0; i < rows.length; i++){if (rows[i]==curRow){if (moveBackwards)--i;
else++i;break;}}if (!moveBackwards && i >= rows.length)i=0;else if (moveBackwards && i < 0)
i=rows.length - 1;curRow=rows[i];dsPhotos.setCurrentRow(curRow["ds_RowID"]);ShowCurrentImage();}function SetSlideShowTimer(){KillSlideShowTimer();
gSlideShowTimer=setTimeout(function(){gSlideShowTimer=null; AdvanceToNextImage(false);}, gSlideShowInterval);}
function KillSlideShowTimer(){if (gSlideShowTimer) clearTimeout(gSlideShowTimer);gSlideShowTimer=null;}
function StartSlideShow(skipTimer){gSlideShowOn=true;if (!skipTimer)SetSlideShowTimer();var playLabel=document.getElementById("playLabel");if (playLabel)playLabel.firstChild.data="||";}
function StopSlideShow(){gSlideShowOn=false;KillSlideShowTimer();var playLabel=document.getElementById("playLabel");if (playLabel)playLabel.firstChild.data=">";}
function HandleThumbnailClick(id){StopSlideShow();dsPhotos.setCurrentRow(id);ShowCurrentImage();}

