jMad.SfpAlerts={
	init:function()
	{
		this.bind(null);
	}
	,bind:function(id)
	{
		var sel=id ? "#"+id+" " : "";
		sel+="div.sfp_alerts";
		$(sel).each( function(){jMad.SfpAlerts._start($(this))} );
	}
	,_start:function(div)
	{
		var ul=div.find("ul"),li=ul.find("> li"),a=ul.closest(".sfp_alerts").find(".ctl a");
		if( li.length<=1){a.hide();return;}
		a.click(jMad.SfpAlerts.click);
		ul.data("alert", {index:0,dir:1,fading:false,timer:0,items:li} );
		div.hover(jMad.SfpAlerts.pause,jMad.SfpAlerts.unpause);
		this._pause(div,false);
	}
	,click:function()
	{
		jMad.SfpAlerts._tick($(this).closest(".sfp_alerts").find("ul"),this.className=="next" ? 1 : -1);
		return false;
	}
	,pause:function()
	{
		jMad.SfpAlerts._pause(this,true);
	}
	,unpause:function()
	{
		jMad.SfpAlerts._pause(this,false);
	}
	,_pause:function(div,p)
	{
		var ul=$(div).find("ul"),data=ul.data("alert");
		if( p )
		{
			if(!data.timer)return;
			clearInterval(data.timer);
			data.timer=0;
		}
		else
		{
			if(data.timer)return;
			data.timer=setInterval(function() {jMad.SfpAlerts._tick(ul,data.dir)}, 4000);
		}
		$(ul).data("alert",data);
	}
	,_tick:function(ul,d)
	{
		var data=$(ul).data("alert");
		if( !data || data.fading )
			return;
		data.fading = true;
		data.dir=d;
		$(ul).data("alert",data);
		$(data.items.get(data.index)).fadeOut("fast",jMad.SfpAlerts.next);
	}
	,next:function()
	{
		var ul=$(this).closest("ul"),data=ul.data("alert");
		$(this).hide();
		if(data.dir>0)
		{
			if( ++data.index>=data.items.length )data.index=0;
		}
		else
		{
			if( --data.index<0 )data.index=data.items.length-1;
		}
		$(data.items[data.index]).fadeIn("fast",function(){data.fading=false;ul.data("alert",data);});
	}
};

