/*
		cartoonscroller.js
		Written by Paul Dunning 2009
		www.actionsworld.com
		
		used to display online cartoons

*/

var itemsMoving = false;
var counter = 0;
var cartoonImage1 = null;
var cartoonImage2 = null;
var cartoonImage3 = null;
var cartoonPaneScroller = null;
var direction = null;
var distance = null;
var cartoonCount = null;
var myPosition = null;
var myObject = new Object();

function pausecomp(millis) 
{
	var date = new Date();
	var curDate = null;

	do { curDate = new Date(); } 
	while(curDate-date < millis);
} 

function cartoonSetUp(myObject)
{
	myName = myObject["name"];
	
	myObject["cartoonImage1"] = document.getElementById(myName+'cartoonPane1');
	myObject["cartoonImage2"] = document.getElementById(myName+'cartoonPane2');
	myObject["cartoonImage3"] = document.getElementById(myName+'cartoonPane3');
	myObject["cartoonPaneScroller"] = document.getElementById(myName+'cartoonPaneScroller');
	
	myObject["itemsMoving"] = false;
	
	
	
	setImages(myObject);
	return(myObject);
}

function setImages(myObject)
{
	myPosition = myObject["myPosition"];
	myName = myObject["name"];
	cartoonImage1 = myObject["cartoonImage1"];
	cartoonImage2 = myObject["cartoonImage2"];
	cartoonImage3 = myObject["cartoonImage3"];
	cartoonPaneScroller = myObject["cartoonPaneScroller"];
	cartoonImages = myObject["cartoonImages"];
	heights = myObject["heights"];
	newHeight = heights[myPosition] + "px";

	if (cartoonImages[myPosition-1])
		cartoonImage1.style.backgroundImage = "url("+cartoonImages[myPosition-1]+")";

	if (cartoonImages[myPosition])
		cartoonImage2.style.backgroundImage = "url("+cartoonImages[myPosition]+")";

	if (cartoonImages[myPosition+1])
		cartoonImage3.style.backgroundImage = "url("+cartoonImages[myPosition+1]+")";
	
	
	
	new Effect.Morph( myName+"cartoonPane1", { style:{ height:newHeight }, duration:0.5 });
	new Effect.Morph( myName+"cartoonPane2", { style:{ height:newHeight }, duration:0.5 });
	new Effect.Morph( myName+"cartoonPane3", { style:{ height:newHeight }, duration:0.5 });
	new Effect.Morph( myName+"cartoonPaneScroller", { style:{ height:newHeight }, duration:0.5,  });
	new Effect.Morph( myName+"cartoonPane", { style:{ height:newHeight }, duration:0.5 });

}

function cartoonMovingDone(myObject)
{
	myName = myObject["name"];
	cartoonPaneScroller = myObject["cartoonPaneScroller"];
	cartoonImage2 = myObject["cartoonImage2"];
	cartoonImages = myObject["cartoonImages"];
	myPosition = myObject["myPosition"];
	
	// Load up the central pane with the image
	cartoonImage2.style.backgroundImage = "url("+cartoonImages[myPosition]+")";
	pausecomp(250);
	
	// Reposition the panes
	cartoonPaneScroller.style.left = -myDistance + "px";

	// set the panes to the necessary images
	setImages(myObject);

	// Not moving any more
	myObject["itemsMoving"]=false;
	return(myObject);
}

function cartoonScroll( direction , myObject )
{
	if (direction==1 || direction==-1)
		myObject = scrollOne( direction , myObject);
		
	if (direction==2 || direction==-2)
		myObject = scrollToEnd( direction , myObject);
		
	return( myObject );
}

function scrollOne( direction , myObject)
{
	myObject["moveMe"] = true;
	myName = myObject["name"];
	myPosition = myObject["myPosition"];
	cartoonCount = myObject["cartoonCount"];
	
	if ( myPosition + direction >= cartoonCount )
	{
		myObject["moveMe"] = false;
	}
	
	if ( myPosition + direction < 0 )
	{
		myObject["moveMe"] = false;
	}

	if (!myObject["itemsMoving"] && myObject["moveMe"])
	{
		myPosition = myObject["myPosition"];
		distance = myObject["distance"];
		myDistance = myObject["myDistance"];
		
		myPosition = myPosition + direction;
		distance = myDistance * (-direction);
		myObject["itemsMoving"] = true;
		new Effect.Move(myName + 'cartoonPaneScroller', { x: distance, y: 0, mode: 'relative', duration:0.5, afterFinish:function(){ myObject = cartoonMovingDone(myObject) } });
		myObject["myPosition"] = myPosition;
	}
	return(myObject);
}

function recoverToEnd( myObject , myElement )
{
	setImages(myObject);

	new Effect.Opacity( myElement, {duration:0, from:0, to:1, afterFinish:function() { contentPaneScroller.style.backgroundImage = ""; } });
}

function scrollToEnd( direction , myObject )
{
	myName = myObject["name"];
	myPosition = myObject["myPosition"];
	cartoonCount = myObject["cartoonCount"]-1;
	distance = myObject["distance"];
	cartoonImages = myObject["cartoonImages"];
	contentPaneScroller = myObject["cartoonPaneScroller"];
	
	myElement = myName+"cartoonPane2";
	
	if (direction==2)
	{
		myPosition=cartoonCount;
	}
	
	if (direction==-2)
	{
		myPosition=0;
	}
	
	myObject["myPosition"]=myPosition;
	
	myImage = cartoonImages[myPosition];
	
	contentPaneScroller.style.backgroundImage = "url("+myImage+")";
	
	new Effect.Opacity( myElement, { duration: 0.5, from:1, to:0, afterFinish:function(){ recoverToEnd(myObject , myElement) } });
	
	return(myObject);
}
