var tx_randomimages_pi1_animation = new Class({
	initialize: function(ul){
		this.ul = ul;
		this.startAnimation();
	},
	
	startAnimation : function () {
		var rotate = function () {
			var ul = this.ul;
			var li = ul.getLast();
			
				//get effect
			var effect = li.retrieve('effect');
			effect.start({
				'opacity' : [1, 0]
 	                }).chain(function(){
					//set styles
				li.set('styles' , {
					'opacity' : 1,
					'visible' : 'visible'
				})
					//position to the first place
				ul.grab(li, 'top');
				rotateBind.delay(2000);
			});	
		}
		
		var rotateBind = rotate.bind(this);
		rotateBind();
	}
});

var tx_randomimages_pi1 = {
	
	start : function (randomImagesArray, uid) {
		
		this.images ={
			'rawArray' : tx_randomimages_pi1.arrayShuffle(randomImagesArray),
			'rawArrayLength' : randomImagesArray.length,
			'liTagWithImageArray' : new Array(),
			'splitToPieces' : 1,
			'ulTagsArray' : new Array(),
			'liTagsArray' : new Array()
		};
		this.imageContainer = $('tx_randomimages_pi1_'+uid);
		this.createLiAndImageElements();
		this.splitUpLiTags();
		this.appendUlsToContainer();
		this.rotateImages();
	},
	
	createLiAndImageElements : function () {

		tx_randomimages_pi1.images.rawArray.each(function(item, index){		
		   			
    				//create link
			if(item[2]) {
				var link = new Element('a', {
					'title' : item[0], 
					'text' : item[1],
					'href' :  item[2],
					'target' : item[5],
					 'styles' : {
						'display' : 'block',
						/*'width' :  item[4][0],
						'height' :  item[4][1]  */
						'width' : '100%',
						'height' : '100%'
					}				
				});
			} else {
				var link = new Element('a', {
					'title' : item[0], 
					'text' : item[1],
					 'styles' : {
						'display' : 'none'
					}				
				});

			}    			
    			var liTag = new Element('li', {
    				'title' : item[0],
    				'styles' : {
	    				'position': 'absolute',
					//'visibility' : 'hidden',
    					'width' :  item[4][0],
    					'height' :  item[4][1],
	    				'background-image' : 'url('+item[3]+')'	    				
    				}
    			});

    			
    			link.inject(liTag,'inside');
    			
    				//make fadeout effect
    			var effect = new Fx.Morph(liTag, {duration: 4000});
    			
    				//store effect
    			liTag.store('effect', effect);
    			
    				//adds the final image object to the element array
    			tx_randomimages_pi1.images.liTagWithImageArray.push(liTag);	    			
		});
	},
	
	splitUpLiTags : function () {
		var maxLiTagsForEachUl = Math.ceil(this.images.rawArrayLength/tx_randomimages_pi1.images.splitToPieces);
		
		for (ulIndex=1; ulIndex<=this.images.splitToPieces; ulIndex++) {
			var ul = new Element('ul', {
				'class' :  'elementArray'+ulIndex				
			});

			for (i=1; i<=maxLiTagsForEachUl; i++) {
				liTag = tx_randomimages_pi1.images.liTagWithImageArray.shift();
				if(liTag) liTag.inject(ul, 'inside');					
			}	
			tx_randomimages_pi1.images.ulTagsArray.push(ul);			
		}		
	},
	
	appendUlsToContainer : function () {
		var containerToAppend = $();
		this.images.ulTagsArray.each(function(ulTag, index){
			ulTag.inject(tx_randomimages_pi1.imageContainer, 'inside');		
		});
	},
	
	rotateImages : function () {	
		
		var startAnimation = function () {
			if(tx_randomimages_pi1.images.ulTagsArray.length == 0) return;
			
			var ulTag = tx_randomimages_pi1.images.ulTagsArray.shift();
			
			var animation = new tx_randomimages_pi1_animation(ulTag);
		}
		
		startAnimation.periodical(4000);
		startAnimation();		
	},
	
	/**
	* @author	Jonas Raoni Soares Silva
	*
	* @param	array
	* @return	shuffled array
	*/
	arrayShuffle : function(o){
		for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
		return o;
	}
}


	
