/**
 * @author nenTi
 */

var imageScript = new Class({
	
    initialize: function(img_src){	
			
			this.elements = new list();
			this.myChain = new Chain();
			this.img_src = img_src;
			
			this.mo = false;
			this.speed = 1000; // geschwindigkeit der Animation

			arr_length = this.img_src.length;
			
			if(arr_length < 5) {
				for(i = arr_length-1; i < 5; i++) {
					img_src[i] = img_src[i % (arr_length)]
				}
			}
			
			this.placeImage(this.imageCreate(0,"links"), -40, 30, 40,0);
			this.placeImage(this.imageCreate(1,"rechts"), 10, 25, 50,0.5);    
			this.placeImage(this.imageCreate(2,"rechts"), 70, 10, 80,1);
			this.placeImage(this.imageCreate(3,"rechts"), 160, 25, 50,0.5);
			this.placeImage(this.imageCreate(4,"rechts"), 220, 30, 40,0); 
			this.updateImgScriptData();
			
    },
	imageCreate: function(id,pos) {
		
			if (id < 0) { id = this.img_src.length+id; }
			if (id > this.img_src.length-1) { id = this.img_src.length%id; }
			
			
			if (pos=="links") {
				
				var myImage = new Element('img', {'id': 'image_'+id, 'src':this.img_src[id%this.img_src.length][0]});
				myImage.inject($('imagescript'), 'top');
				this.elements.push(myImage);
				this.placeImage(myImage, -40, 30, 40,0);
			}
			else {
				var myImage = new Element('img', {'id': 'image_'+id, 'src': this.img_src[id%this.img_src.length][0]});
				myImage.inject($('imagescript'), 'bottom');
				this.elements.append(myImage);
				this.placeImage(myImage, 240, 30, 40,0);
			}
			return myImage;
		},
		
	placeImage: function(ele,left, top, size, opacity) {
			ele.setStyles({
				left: left,
				top: top,
				width: size,
				height: size,
				opacity: opacity
			});
		},
		
	moveImg: function(node, dir) {
			if(dir == "links") {
				var myEffect = new Fx.Morph(node.ele, {transition: Fx.Transitions.Back.easeOut, duration:this.speed});
				myEffect.start({
							'width': node.prev.ele.getStyle('width'),
							'height': node.prev.ele.getStyle('height'),
							'top': node.prev.ele.getStyle('top'),
							'left': node.prev.ele.getStyle('left'),
							'opacity': node.prev.ele.getStyle('opacity')
					});
				if(node.id == this.elements.last.id) {
					myEffect.addEvent('complete', function(event){
							this.imageCreate(this.elements.last.id + 1, "rechts");
							this.mo = false;
							this.myChain.callChain();
							this.updateImgScriptData();
						}.bind(this))
				}			
			}	
			else {
				var myEffect = new Fx.Morph(node.ele, {transition: Fx.Transitions.Back.easeOut, duration:this.speed});
				myEffect.start({
							'width': node.next.ele.getStyle('width'),
							'height': node.next.ele.getStyle('height'),
							'top': node.next.ele.getStyle('top'),
							'left': node.next.ele.getStyle('left'),
							'opacity': node.next.ele.getStyle('opacity')
					});
				if(node.id == this.elements.first.id) {
					myEffect.addEvent('complete', function(event){
							this.imageCreate(this.elements.first.id - 1, "links");
							this.mo = false;
							this.myChain.callChain();
							this.updateImgScriptData();
						}.bind(this))
				}		
			}
		},
		
	updateImgScriptData: function() {
			data = this.img_src[this.elements.first.next.next.id];
			$('teamImageScriptPosition').innerHTML = data[5];
			$('teamImageScriptAge').innerHTML = data[2];
			$('teamImageScriptCity').innerHTML = data[3];
			$('teamImageScriptDesc').innerHTML = data[6];
			$('teamImageScriptNick').innerHTML = '<a style="color:#dc381a;font-size:14px; font-weight:bold;" href="#mod=users&action=view&id=' + data[7] + '">' + data[1] + '</a>';
		},
	
	startMove: function(dir) {
			if(dir == "links") {
				this.myChain.chain(function() { this.moveLeft(); }.bind(this));
			}
			else {
				this.myChain.chain(function() { this.moveRight(); }.bind(this));
			}	
			if(this.mo == false) {
				this.myChain.callChain();
			}
		},
		
	moveLeft: function() {
				var node = this.elements.first;
				while (node.next != null) {
					this.mo = true;
					this.moveImg(node.next, "links");
					node = node.next;
				}
				$('imagescript').removeChild($('imagescript').childNodes[0]);
				this.elements.pop();
		},
		
	moveRight: function() {
				var node = this.elements.last;
				while (node.prev != null) {
					this.mo = true;
					this.moveImg(node.prev, "rechts");
					node = node.prev;
				}
				$('imagescript').removeChild($('imagescript').childNodes[4]);
				this.elements.cut();
		}
});


