/**
 * Copyright (c) 2008 Robert Kummer (http://www.ipunkt.biz)
 * 
 * Version 1.0
 *
 * $LastChangedDate$
 * $Rev$
 */
 
(function($) {
/**
 * A basic image rotation
 *
 * @name     rotator
 * @param    delay      Delay (in milliseconds) between iterations. Default 4 seconds (4000ms)
 * @author   Robert Kummer (http://www.ipunkt.biz)
 * @example  $("#images").rotator(); // or $("#images").rotator(5000);
 *
 */
$.fn.rotator = function(delay)
{
	delay = delay || 4000;
	init = function(el)
	{
		stop(el);
		el.items = $("a", el);
		// hide all items (except first one)
//		el.items.not(":eq(0)").triggerHandler("mouseover");
		// current item
		el.currentitem = 0;
		
		el.currentitem++;
		if (el.currentitem >= el.items.size())
		{
			el.currentitem = 0;
		}
		start(el);
	};
	start = function(el)
	{
		el.tickfn = setInterval(function() { trigger(el) }, delay)
	};
	stop = function(el)
	{
		clearInterval(el.tickfn);
	};
	pause = function(el)
	{
		el.pause = true;
	};
	resume = function(el)
	{
		el.pause = false;
	};
	trigger = function(el)
	{
		// don't run if paused
		if(el.pause) return;
		// pause until animation has finished
		el.pause = true;
		// hide current item
		
		$(el.items[el.currentitem]).triggerHandler("mouseover");
		el.currentitem++;
		if (el.currentitem >= el.items.size())
		{
			el.currentitem = 0;
		}
		
		el.pause = false;
	};
	this.each(
		function()
		{
			if(this.nodeName.toLowerCase()!= "div") return;
			init(this);
		}
	)
	.addClass("rotator")
	.hover(
		function()
		{
			// pause if hovered over
			pause(this);
		},
		function()
		{
			// resume when not hovered over
			resume(this);
		}
	);
	return this;
};

})(jQuery);
