var dynBg = {
	'backgroundContainer': new Element('div', {
		styles : {
			position:'fixed',
			top:'0',
			left:'0',
			width:'100%',
			height:'100%',
			overflow:'hidden'
		},
		id : 'background-wrapper'
	}).inject(document.body, 'top'),
	'imgArr': null,
	'delay': null,
	'images': null,
	'init': function(imgArr, slideShowDelay) {
		var noOfSlides = imgArr.length;
		if(!noOfSlides > 0) return;
		this.imgArr = imgArr;
		this.loadImages();
		if(noOfSlides >= 2) this.delay = slideShowDelay;
		window.addEvent('resize', dynBg.resizeImages);
	},
	'resizeImages': function() {
		var winSize = window.getSize();
		var winAspect = winSize.x / winSize.y;

		document.getElements('#background-wrapper img').each(function(img) {
			var imgSize = img.getSize();
			var imgAspect = imgSize.x / imgSize.y;
			var scaledSize = {
				'x': winSize.y*imgAspect,
				'y': winSize.y
			};
			if(scaledSize.x < winSize.x) {
				scaledSize.x = winSize.x;
				scaledSize.y = winSize.x/imgAspect;
			}
			img.setStyles({
				'width': scaledSize.x,
				'height': scaledSize.y,
				'margin-left': 0.5*(winSize.x-scaledSize.x),
				'margin-top': 0.5*(winSize.y-scaledSize.y)
			});
		});
	},
	'loadImages' : function(){
		var me = this;
		var images = new Asset.images(me.imgArr, {
			properties : {
				styles : {
					position:'absolute',
					top:'0',
					left:'0',
					opacity:'0'
				}
			},
			onProgress : function(counter, index) {
				images[index].inject($('background-wrapper'), 'bottom');
				me.resizeImages();
				switch(index) {
					case 0:
						images[index].set('tween', {duration: 1000}).tween('opacity', 1);
					break;
					case 1:
						me.slideShow();
					break;
				}
				me.images = document.getElements('#background-wrapper img');
			},
			onComplete : function() {
				me.backgroundContainer.setStyles({'background':'none'});
			}
		});
	},
	'slideShow': function() {
		var imgIndex = 0;
		var me = this;
		(function() {
			me.images[imgIndex].set('tween', {duration: 1000}).tween('opacity', 0);
			++imgIndex;
			imgIndex = (me.images[imgIndex] ? imgIndex : 0);
			me.images[imgIndex].set('tween', {duration: 1000}).tween('opacity', 1);
		}).periodical(this.delay);
	}
};
dynBg.init(BackgroundImages, slideShowDelay);

