var Banner = {
	delay : 9000,
	speed : 500,
	details : null,	preloader: null, bar : null, barHeight : null, imageHolder : null, textHolder : null, cont : null, more : null, current : null, loadCount : 0, preloaderHasRun : false, timer : null, imageURLs : [],
	
	setup : function(details)
	{
		Banner.details = details;
		Banner.preloader = $("#preloader");
		Banner.bar = $("#bar", Banner.preloader);
		Banner.imageHolder = $("#images", Banner.preloader.parent());
		Banner.textHolder = $("#texts", Banner.preloader.parent());
		Banner.cont = $("#bannercont", Banner.textHolder);
		Banner.more = $("#more", Banner.textHolder);
		Banner.current = Math.floor(Math.random()*Banner.details.length);
		Banner.current = Math.floor(Math.random()*Banner.details.length);
		Banner.barHeight = Banner.preloader.height();
		Banner.bar.css({ height:0, position:"absolute", top:Banner.barHeight });
		Banner.textHolder.css({ top:parseInt(Banner.textHolder.css("top"))+30, opacity:0 }).click(Banner.linkHandler);
		Banner.more.css({ top:118/2 - Banner.more.outerHeight()/2, left:-Banner.more.outerWidth() });
		for(var i in details) Banner.imageURLs.push(details[i].image);
		$(Loader).bind(Loader.FILE_COMPLETE, Banner.loadProgress);
		$(Loader).bind(Loader.COMPLETE, Banner.loadComplete);
		Loader.load(Banner.imageURLs).start();
	}, // setup
	
	linkHandler : function() { if(typeof(Banner.details[Banner.current].link) != 'undefined' && Banner.details[Banner.current].link != "") window.location = Banner.details[Banner.current].link; }, // linkHandler
	
	loadProgress : function()
	{
		Banner.loadCount++;
		Banner.bar.clearQueue().animate({ top:Banner.barHeight - (Banner.barHeight*(Banner.loadCount/Banner.details.length))+"px", height:Banner.barHeight*(Banner.loadCount/Banner.details.length) }, 500);
	},
	
	loadComplete : function()
	{
		Banner.bar.clearQueue().animate({ top:Banner.barHeight - (Banner.barHeight*(Banner.loadCount/Banner.details.length))+"px", height:Banner.barHeight*(Banner.loadCount/Banner.details.length) }, 500, function() {
			Banner.preloader.fadeOut(1000, function() {
				var image = $(Loader.getContent(details[Banner.current].image));
				image.hide();
				Banner.imageHolder.append(image);
				image.fadeIn(Banner.speed, function() { Banner.timer = setTimeout(Banner.fadeNext, Banner.delay); });
				Banner.preloaderHasRun = true;
				Banner.textHolder.animate({ opacity:1 }, Banner.speed*2);
				Banner.cont.html(Banner.details[Banner.current].text).animate({ left:0 }, Banner.speed*2);
				if(typeof(Banner.details[Banner.current].link) != 'undefined' && Banner.details[Banner.current].link != "") {
					Banner.more.animate({ left:0 }, Banner.speed*2);
					Banner.textHolder.css({ cursor:"pointer" });
				}	
			});
		});
		
	}, // loadComplete
	
	fadeNext : function()
	{
		Banner.current = Banner.current + 1 < Banner.details.length ? Banner.current + 1 : 0;
		var oldImage = Banner.imageHolder.find("image");
		var newImage = $(Loader.getContent(Banner.details[Banner.current].image));
		newImage.hide();
		Banner.imageHolder.append(newImage);
		newImage.fadeIn(Banner.speed, function() { oldImage.remove(); Banner.timer = setTimeout(Banner.fadeNext, Banner.delay); });
		if(typeof(Banner.details[Banner.current].link) != 'undefined' && Banner.details[Banner.current].link != "") {
			Banner.more.animate({ left:0 }, Banner.speed*2);
			Banner.textHolder.css({ cursor:"pointer" });
		} else {
			Banner.more.animate({ left:-Banner.more.outerWidth() }, Banner.speed*2);
			Banner.textHolder.css({ cursor:"default" });
		}
		Banner.cont.animate({ left:-Banner.cont.outerWidth() }, Banner.speed, function() {
			Banner.cont.html(Banner.details[Banner.current].text).css({ left:Banner.cont.outerWidth() }).animate({ left:0 }, Banner.speed);	
		});
	} // fadeNext
	
} // Banner
