var banner_timeout = '';
var current_banners = '';
var banners_object = '';
var banner_is_working = false;
Event.observe(window, 'load', function() {
	start_banner_scroll();
});

function start_banner_scroll() {
	//get banners, randomize IDs, and GO!
	new Ajax.Request('/staticfiles/banners/banners.php', {
		method: 'post',
		parameters: { ba : 'init'},
		onComplete: function(transport) {
			//banners_hash object
			/*{"main" : {
						"catid"		: "4"
					,	"container"	: "main_banner_container"
				}}*/
			banners_object = $H(transport.responseJSON);
			//if the banner container isn't found on the page, remove it from banners_hash
			banners_object.each(function(pair) {
				var h = $H(pair.value);
				if($(h.get('container')) == undefined)
					banners_object.unset(pair.key);
			});
			
			if(banners_object.size() > 0) {
				//alert(banners_object.inspect());
				banner_timeout = banner_auto_scroll.delay(6, banners_object);
				
				Event.observe('scrollNext', 'click', function(e) {
					banner_next(banners_object);
				});
				Event.observe('scrollPrevious', 'click', function(e) {
					banner_previous(banners_object);
				});
				Event.observe(window, 'blur', function() {
					window.clearTimeout(banner_timeout);
				});
				Event.observe(window, 'focus', function() {
					banner_timeout = banner_auto_scroll.delay(6, banners_object);
				});
			}
		}
	});
}

function banner_auto_scroll(opt) {
	//use hash of banner items to scroll to the next banner
	//alert('fire');
	opt.each(function(pair) {
		new Ajax.Request('/staticfiles/banners/banners.php', {
			method: 'post',
			parameters: { 'ba' : 'next' , 'bv' : pair.key },
			onComplete: function(transport) {
				var r = $H(transport.responseJSON);
				//alert(r.inspect());
				var container = $H(pair.value).get('container');
				$(container).down('a').setStyle({ 'display' : 'block', position : 'absolute', 'top' : '0px', 'left' : '0px', zIndex : 3 });
				var pimg = new Element('img', { 'alt' : r.get('clickurl') });
				var alnk = new Element('a', {'href' : r.get('clickurl'), 'target' : r.get('target') }).setStyle({'display' : 'block', position : 'absolute', 'top' : '0px', 'left' : '0px', zIndex : 1, 'opacity' : 0.0 });
				alnk.update(pimg);

				Event.observe(pimg, 'load', function(e) {
					var a_old = $(container).down('a');
					alnk.setStyle({ zIndex : 3 });
					a_old.setStyle({ zIndex : 1 });
					new Effect.Opacity(alnk, { from: 0.0, to: 1.0, duration: 2.0, queue: { position : 'end', scope : pair.key } });
					new Effect.Opacity(a_old, {from: 1.0, to: 0.0, duration: 0.25, queue: { position : 'end', scope : pair.key }, afterFinish : function() { a_old.remove(); } });
				});
				
				pimg.src = '/images/banners/'+r.get('imageurl');
				
				$(container).insert({ 'bottom' : alnk });
			}
		});
	});
	window.clearTimeout(banner_timeout);
	banner_timeout = '';
	banner_timeout = banner_auto_scroll.delay(12, banners_object, 0);
}
function banner_next(opt) {
	if(banner_is_working)
		return true;
	banner_is_working = true;
	window.clearTimeout(banner_timeout);
	opt.each(function(pair) {
		new Ajax.Request('/staticfiles/banners/banners.php', {
			method: 'post',
			parameters: { 'ba' : 'next' , 'bv' : pair.key },
			onComplete: function(transport) {
				var r = $H(transport.responseJSON);
				//alert(r.inspect());
				var container = $H(pair.value).get('container');
				$(container).down('a').setStyle({ 'display' : 'block', position : 'absolute', 'top' : '0px', 'left' : '0px', zIndex : 3 });
				var pimg = new Element('img', { 'alt' : r.get('clickurl') });
				var alnk = new Element('a', {'href' : r.get('clickurl') }).setStyle({'display' : 'block', position : 'absolute', 'top' : '0px', 'left' : '0px', zIndex : 1, 'opacity' : 0.0 });
				alnk.update(pimg);

				Event.observe(pimg, 'load', function(e) {
					var a_old = $(container).down('a');
					alnk.setStyle({ zIndex : 3 });
					a_old.setStyle({ zIndex : 1 });
					new Effect.Opacity(alnk, { from: 0.0, to: 1.0, duration: 2.0, queue: { position : 'end', scope : pair.key } });
					new Effect.Opacity(a_old, {from: 1.0, to: 0.0, duration: 0.25, queue: { position : 'end', scope : pair.key }, afterFinish : function() { a_old.remove(); } });
					banner_is_working = false;
				});
				
				pimg.src = '/images/banners/'+r.get('imageurl');
				
				$(container).insert({ 'bottom' : alnk });
			}
		});
	});
}
function banner_previous(opt) {
	if(banner_is_working)
		return true;
	banner_is_working = true;
	window.clearTimeout(banner_timeout);
	opt.each(function(pair) {
		new Ajax.Request('/staticfiles/banners/banners.php', {
			method: 'post',
			parameters: { 'ba' : 'previous' , 'bv' : pair.key },
			onComplete: function(transport) {
				var r = $H(transport.responseJSON);
				//alert(r.inspect());
				var container = $H(pair.value).get('container');
				$(container).down('a').setStyle({ 'display' : 'block', position : 'absolute', 'top' : '0px', 'left' : '0px', zIndex : 3 });
				var pimg = new Element('img', { 'alt' : r.get('clickurl') });
				var alnk = new Element('a', {'href' : r.get('clickurl') }).setStyle({'display' : 'block', position : 'absolute', 'top' : '0px', 'left' : '0px', zIndex : 1, 'opacity' : 0.0 });
				alnk.update(pimg);

				Event.observe(pimg, 'load', function(e) {
					var a_old = $(container).down('a');
					alnk.setStyle({ zIndex : 3 });
					a_old.setStyle({ zIndex : 1 });
					new Effect.Opacity(alnk, { from: 0.0, to: 1.0, duration: 2.0, queue: { position : 'end', scope : pair.key } });
					new Effect.Opacity(a_old, {from: 1.0, to: 0.0, duration: 0.25, queue: { position : 'end', scope : pair.key }, afterFinish : function() { a_old.remove(); } });
					banner_is_working = false;
				});
				
				pimg.src = '/images/banners/'+r.get('imageurl');
				
				$(container).insert({ 'bottom' : alnk });
			}
		});
	});
}
