var pageDelay = null;
var imageDelay = null;
var delay = 5;
var lastImg = -1;
var adjustedStartImg = false;

function rotatePage(pattern)
{
	var list, item;
	var last, next;

	if( pageDelay == null || window.location.href.indexOf("/home2") == -1 || window.location.href == "http://test.lenoxhill.org/" ) 
	{
		log("no pageDelay, killing rotate");
		removeHooks();
		return;
	}
	log("rotatePage");

	if( pattern == undefined || pattern == null )
	{
		pattern = "div.story";
	}

	list = $$(pattern);

	if( list.length < 2 ) 
	{
		log("list doesn't have >= 2 items");
		removeHooks();
		return;
	}

	log("list",list);
	
	last = next = -1;
	for(var x = 0; x < list.length; x++)
	{
		item = list[x];

		if( item.hasClassName("current") )
		{
			last = x;
			break;
		}
	}

	if( last == (list.length - 1) )
	{
		next = 0;
	} else
	{
		next = last + 1;
	}

	log("last", last);
	log("next", next);
	log("lastItem", list[last]);
	log("nextItem", list[next]);


	list[last].removeClassName("current");
	list[next].addClassName("current");

	
/*	new Effect.Parallel([
		new Effect.Fade( list[last], { sync: true } ),
		new Effect.Appear( list[next], { sync: true } )
	]);
*/
	list[last].hide();
	new Effect.Appear(list[next]);

	pageDelay = rotatePage.delay(delay);
}

function rotate(pattern)
{
	rotatePage(pattern);
	rotateImage();
}

function rotateImage()
{
	var nextImg = -1;
	var imgTag, imgs;

	log("rotateImage");
	imageDelay = null;

	if( adjustedStartImg == false )
	{
		findStartImg();
	}

	// only run if we have something to change
	if( images.length < 2 )
	{
		if( images.length == 0 )
		{
			log("no images");
		} else
		{
			log("only 1 image");
		}
		return;
	} else
	{
		log("image count", images.length);
	}

	log("last",  lastImg);
	if( lastImg == (images.length - 1) )
	{
		lastImg = 0;
	} else
	{
		lastImg = lastImg + 1;
	}
	log("next", lastImg);

	imgs = $$(".header-banner img");
	if( imgs.length > 1 )
	{
		imgTag = $$(".current .header-banner img")[0];
	}
	else
	{
		imgTag = imgs[0];
	}

	log("imgTag", imgTag);
	if( imgTag != null )
	{
		// don't rotate to the same image that's already showing
		if( imgTag.src.indexOf(images[lastImg]) > -1 )
		{
			lastImg++;
		}
		log("setting:", images[lastImg]);
		
		new Effect.Opacity(imgTag, { from: 1, to: 0.0, duration: 0.60, afterFinish: function() {	imgTag.src = images[lastImg]; new Effect.Opacity(imgTag, { from: 0.0, to: 1, duration: 0.60 });  } });
	
		imageDelay = rotateImage.delay(delay);
	}
}

function findStartImg()
{
	var item, imgs, imgTag, holder;
	log("findStartImg");

	imgs = $$(".header-banner img");
	if( imgs.length > 1 )
	{
		imgTag = $$(".current .header-banner img")[0];
	}
	else
	{
		imgTag = imgs[0];
	}
	log("imgTag", imgTag);

	if( imgTag != null )
	{
		holder = $('rotating-images');
		for( var x = 0; x < images.length; x++ )
		{
			item = images[x];
			log(imgTag.src, item);
			if( holder != null ) holder.insert('<img src="' + item + '"/>');
			if( imgTag.src.indexOf(item) > -1 )
			{
				log("changed start img", lastImg);
				log("new start img", x);
				lastImg = x;
			}
		}
	}

	adjustedStartImg = true;
}

function setupRotateObservers(pattern)
{
	var list, item;
	var last, next;

	log("setupRotateObservers");

	if( pattern == undefined || pattern == null )
	{
		pattern = "div.story";
	}

	list = $$(pattern);
	
	log("list",list);
	
	for(var x = 0; x < list.length; x++)
	{
		item = list[x];

		item.observe("mouseover", function() { mouseOverStory(); } );
		item.observe("mouseout", function() { mouseOutStory(); } );
	}
	
	startRotate();
}

function removeHooks(pattern)
{
	var list, item;
	var last, next;

	log("removeHooks");

	if( pattern == undefined || pattern == null )
	{
		pattern = "div.story";
	}

	list = $$(pattern);
	
	log("list",list);
	
	for(var x = 0; x < list.length; x++)
	{
		item = list[x];
		item.stopObserving("mouseover");
		item.stopObserving("mouseout");
	}
}

function startRotate()
{
	log("startRotate");
	pageDelay = rotatePage.delay(delay);
	findStartImg.delay(1);
	if( imageDelay == null ) imageDelay = rotateImage.delay(delay);
}

function mouseOutStory()
{
	log("mouseOutStory");
	startRotate();
}

function mouseOverStory()
{
	log("mouseOverStory");
	window.clearTimeout(pageDelay);
	pageDelay = null;
}

Event.observe(window, 'load', function() { setupRotateObservers(); });
