// 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.

// Global variables:
var	id_click_anterior;

var gThumbWidth;
//if (gThumbWidth == undefined)
//	gThumbWidth = 45;
  
var gThumbHeight;
//if (gThumbHeight == undefined)
//	gThumbHeight = 155;

var gSlideShowInterval;
if (gSlideShowInterval == undefined)
	gSlideShowInterval = 3000; // msecs between images.

var gAutoStartSlideShow;
if (gAutoStartSlideShow == undefined)
	gAutoStartSlideShow = true;

var gBehaviorsArray = [];
var gSlideShowOn = false;
var gSlideShowTimer = null;
var gImageLoader = null;

// Register a callback on the dsPhotos data set so we can turn
// off the slide show before it attempts to load new data.


// Register a callback on the thumbnails region so we can show the first
// image in the data set after all the thumbnails have loaded.

Spry.Data.Region.addObserver("thumbnails", function(nType, notifier, data) {
	if (nType == "onPostUpdate")
	{
		ShowCurrentImage();
		if (gAutoStartSlideShow)
			StartSlideShow(true);
	}
});

// Trigger the transition animation from the current image
// being displayed to the image at imgPath.

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: 400,
		finish: function()
		{
			gBehaviorsArray["mainImage"] = new Spry.Effect.Size(img.parentNode, Spry.Effect.getDimensions(img.parentNode), { width: width, height: height, units:"px"}, {duration: 400,
				finish: function()
				{
					// Use an image loader to make sure we only fade in the new image after
					// it is completely loaded.
					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;
								
								// Our new image is fully visible now. Remove any opacity related
								// style properties on the img to workaround the IE bug that creates
								// white dots/holes in the images. Removing the properties forces
								// IE to re-render the image correctly.

								img.style.opacity = "";
								img.style.filter = "";

								// If the slide show is on, fire off the timer for the next image.

								if (gSlideShowOn)
									SetSlideShowTimer();
							}});
						gBehaviorsArray["mainImage"].start();
					};
					gImageLoader.src = imgPath;
				}
		  });
		  gBehaviorsArray["mainImage"].start();
		}
	});
	gBehaviorsArray["mainImage"].start();
}

// Cancel the animation behavior of the object with the given id.

function CancelBehavior(id)
{
	if (gBehaviorsArray[id])
	{
		gBehaviorsArray[id].cancel();
		gBehaviorsArray[id] = null;
	}
}

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);
	
	//effectCluster.finish = callback;
	
	gBehaviorsArray[id] = effectCluster;
	gBehaviorsArray[id].start();
}

// Trigger the animation of the thumbnail growing.

function GrowThumbnail(img, width, height)
{

   gThumbWidth = width - 25;
   gThumbHeight = height - 25;

    var id = img.getAttribute("id");
	
	var twidth = Math.floor(width * .73);
	var theight = Math.floor(height * .90);
	var tx = (gThumbWidth - twidth) / 2;
	var ty = (gThumbHeight - theight) / 2;
	
	SizeAndPosition(id, tx, ty, twidth, theight, function(b){gBehaviorsArray[id] = null;});
}

// Trigger the animation of the thumbnail shrinking.

function ShrinkThumbnail(img)
{
    var id = img.getAttribute("id");
	
	SizeAndPosition(id, 0, 0, gThumbWidth, gThumbHeight, function(b){gBehaviorsArray[id] = null;});
}

// Show the image of the current selected row inside the dsPhotos data set.

// Utility function to advance (forwards or backwards) the current selected row
// in dsPhotos. This has the side effect of "selecting" the thumbnail and image
// of the new current row.

function SetSlideShowTimer()
{
	KillSlideShowTimer();
	gSlideShowTimer = setTimeout(function(){ gSlideShowTimer = null; AdvanceToNextImage(false); }, gSlideShowInterval);
}

function KillSlideShowTimer()
{
	if (gSlideShowTimer)
		clearTimeout(gSlideShowTimer);
	gSlideShowTimer = null;
}

// Start the slide show that runs forwards through all
// the rows in dsPhotos.

// Kill any slide show that is currently running.

function HandleThumbnailClickOLD(id)
{
	var id1 = id.getAttribute("id");
	/*alert (id1);*/
	Spry.Utils.removeClassName(id_click_anterior+"tr", "selecionado");
	id_click_anterior = id1;
	Spry.Utils.addClassName(id_click_anterior+"tr", "selecionado");
    
	
}



function HandleThumbnailClick23(id)
{
	alert (id);	
	//parent.FrmEsquerda.getElementById(id2).style.fontWeight = 'bold';
	
	var id1 = id.getAttribute("id");
	parent.FrmEsquerda.id1.bgcolor = "#FFFFFF";
	
	/*
	var id1 = id.getAttribute("id");
	alert (id1);
	Spry.Utils.removeClassName(id_click_anterior+"tr", "selecionado");
	id_click_anterior = id1;
	Spry.Utils.addClassName(id_click_anterior+"tr", "selecionado"); */

	
}

function HandleThumbnailClick(id2)
{
	var id = parent.FrmEsquerda.document.getElementById(id2);
	var id1 = id.getAttribute("id");
	
	var clicou = parent.FrmEsquerda.document.id_click_anterior;
	
	Spry.Utils.removeClassName(parent.FrmEsquerda.document.getElementById(clicou+"tr"), "selecionado");
	parent.FrmEsquerda.document.id_click_anterior = id1;
	clicou = id1;
	Spry.Utils.addClassName(parent.FrmEsquerda.document.getElementById(clicou+"tr"), "selecionado");

}

function SomenteNumeros(key)
{
  
  if ((key > 47 && key < 58) ||
                   (key > 95 && key < 106)){
                   return true;
                 }else {
                   if ((key != 8)  &&
                       (key != 9)  &&
                       (key != 13) &&
                       (key != 37) &&
                       (key != 38) &&
                       (key != 39) &&
                       (key != 40) &&
                       (key != 46)) {
                     return false;
                   }else {
                     return true;
                   }
                 }
}

