/**************************************************************

	Script		: lcw Image Album
	Version		: 1.0
	Authors		: Gerald Süess
	Desc			: Animiertes Image Album

**************************************************************/

var lcwAlbum = new Class({
				
		initialize: function(classname,tableid,width,height){
		  this.classname = classname;
			this.tableid = tableid;
		  this.lcwBoxSize = width;
			this.lcwBoxHeight = height;
			
			this.lcwImagePos = 0;
			this.lcwBoxSizedUp = 0;
			
			this.createBox();
						
 			this.lcwBoxScale = new Array(0,15,30,60,100,60,30,15);
 			this.lcwBoxZindex = new Array(0,1,2,3,4,3,2,1);
			this.lcwBoxlpos = new Array(0,1,5,15,25,55,80,91);
			this.lcwBoxtpos = new Array(3,3,6,11,12,11,6,3);
			this.lcwImages = new Array();

			this.lcwBoxFpos = new Array(8);
			for (i=0; i <8; i++)
					this.lcwBoxFpos[i]=new Array(2)
			
			this.lcwPosArr = new Array(8);
			for (i=0; i <8; i++)
				this.lcwPosArr[i]=new Array(7)

			$(this.tableid).style.height = height+'px';
			$(this.tableid).style.width = width+'px';

		},
		
		lcwBoxShow: function(){
		$('lcwbox1').style.height='50px';
						
 		 		for(i=0;i<8;i++)
 				{			
							this.lcwPosArr[i][0] = (Math.round((this.lcwBoxSize*this.lcwBoxScale[i])/100)/2);
							this.lcwPosArr[i][1] = this.lcwBoxZindex[i];
							this.lcwPosArr[i][2] = (Math.round((this.lcwBoxSize*this.lcwBoxlpos[i])/100));
							this.lcwPosArr[i][3] = (Math.round((this.lcwBoxSize*this.lcwBoxtpos[i])/100));
							this.lcwPosArr[i][4] = (Math.round(((this.lcwBoxHeight-40)*this.lcwBoxScale[i])/100));
							if(this.lcwBoxScale[i]==100){
									this.lcwPosArr[i][5] = this.lcwBoxScale[i]-1;
							}else{
									this.lcwPosArr[i][5] = this.lcwBoxScale[i];
							} 
							this.lcwBoxFpos[i][0] = i;
							this.lcwBoxFpos[i][1] = i;

  	 					$('lcwbox'+i).style.width = this.lcwPosArr[i][0]+'px';
		 					$('lcwbox'+i).style.zIndex = this.lcwPosArr[i][1];
							$('lcwbox'+i).style.left = this.lcwPosArr[i][2]+"px";
							$('lcwbox'+i).style.top = this.lcwPosArr[i][3]+'px';
							$('lcwbox'+i).style.height = this.lcwPosArr[i][4]+"px";							
							var opacit = new Fx.Style('lcwbox'+i, 'opacity').set('.' + this.lcwPosArr[i][5]);
 		 		}
				
				if(this.lcwImagePos == 0){
				 this.lcwInsertImages();
				}
 		},

		fwd: function(){			
			if(this.lcwBoxSizedUp == 0 && this.lcwImagePos < this.lcwImages.length-1)
			{

			 this.lcwImagePos++;
			 $('info').innerHTML = this.lcwImages[this.lcwImagePos][1];
			 
			 for(i=0;i<8;i++)
 			 {
			 	 var boxid = 'lcwbox'+this.lcwBoxFpos[i][0];
			 	 if(this.lcwBoxFpos[i][1] == 7){			  
	
		 				$(boxid).style.zIndex = this.lcwPosArr[0][1];
						$(boxid).effect('opacity',{wait:true}).start('.'+this.lcwPosArr[7][5],'.0');
						this.lcwBoxFpos[i][1] = 0;

				 } else if (this.lcwBoxFpos[i][1] == 0){
				 	 			
						$(boxid).effect('width',{wait:true}).set(this.lcwPosArr[1][0]);
						$(boxid).effect('left',{wait:true}).set(this.lcwPosArr[1][2]);
						$(boxid).effect('top',{wait:true}).set(this.lcwPosArr[1][3]);
						$(boxid).effect('height',{wait:true}).set(this.lcwPosArr[1][4]);
						
						this.lcwBoxFpos[i][1] = this.lcwBoxFpos[i][1] + 1;

						if(this.lcwImagePos+3<this.lcwImages.length)
					  {
					    $(boxid).innerHTML = this.lcwImages[this.lcwImagePos+3][0];
							$(boxid).effect('opacity',{wait:true}).start('.0','.'+this.lcwPosArr[1][5]);
					  } else {
						  $(boxid).innerHTML = ' ';
							$(boxid).effect('opacity').set('.0');
						}
						
				 } else {
				 
						$('lcwbox'+this.lcwBoxFpos[i][0]).style.zIndex = this.lcwPosArr[this.lcwBoxFpos[i][1]+1][1];
						$(boxid).effect('width',{wait:true}).start(this.lcwPosArr[this.lcwBoxFpos[i][1]][0], this.lcwPosArr[this.lcwBoxFpos[i][1]+1][0]);
						$(boxid).effect('height',{wait:true,transition: Fx.Transitions.Back.easeInOut}).start(this.lcwPosArr[this.lcwBoxFpos[i][1]][4], this.lcwPosArr[this.lcwBoxFpos[i][1]+1][4]);
						$(boxid).effect('left',{wait:true,transition: Fx.Transitions.Back.easeInOut}).start(this.lcwPosArr[this.lcwBoxFpos[i][1]][2], this.lcwPosArr[this.lcwBoxFpos[i][1]+1][2]);
						$(boxid).effect('top',{wait:true,transition: Fx.Transitions.Back.easeInOut}).start(this.lcwPosArr[this.lcwBoxFpos[i][1]][3], this.lcwPosArr[this.lcwBoxFpos[i][1]+1][3]);
						$(boxid).effect('opacity',{wait:true}).start('.'+this.lcwPosArr[this.lcwBoxFpos[i][1]][5],'.'+this.lcwPosArr[this.lcwBoxFpos[i][1]+1][5]);

						this.lcwBoxFpos[i][1] = this.lcwBoxFpos[i][1] + 1;
				  }
			  }
			 }
			},
			
			rwd: function(){
		   if(this.lcwBoxSizedUp == 0 && this.lcwImagePos > 0)
			 {
			  this.lcwImagePos--;

				$('info').innerHTML = this.lcwImages[this.lcwImagePos][1];
				
			  for(i=0;i<8;i++)
 			  {
				 var boxid = 'lcwbox'+this.lcwBoxFpos[i][0];
				 
			 	 if(this.lcwBoxFpos[i][1] == 1){			  
	
		 				$(boxid).style.zIndex = this.lcwPosArr[0][1];
						var scaleupo = new Fx.Style(boxid, 'opacity',{wait:true}).start('.'+this.lcwPosArr[7][5],'.0');
						this.lcwBoxFpos[i][1] = 0;

				 } else if (this.lcwBoxFpos[i][1] == 0){
				 	 			
						$(boxid).effect('width',{wait:true}).set(this.lcwPosArr[7][0]);
						$(boxid).effect( 'left',{wait:true}).set(this.lcwPosArr[7][2]);
						$(boxid).effect('top',{wait:true}).set(this.lcwPosArr[7][3]);
						$(boxid).effect('height',{wait:true}).set(this.lcwPosArr[7][4]);

						this.lcwBoxFpos[i][1] = 7;
						if((this.lcwImagePos-3)>=0)
					  {	
					    $(boxid).innerHTML = this.lcwImages[(this.lcwImagePos-3)][0];
							$(boxid).effect('opacity',{wait:true}).start('.0','.'+this.lcwPosArr[7][5]);
					  } else {
						  $(boxid).innerHTML = ' ';
							$(boxid).effect('opacity',{wait:true}).set('.0');
						}
						
				 } else {
				 
						$(boxid).style.zIndex = this.lcwPosArr[this.lcwBoxFpos[i][1]-1][1];
						$(boxid).effect('width',{wait:true}).start(this.lcwPosArr[this.lcwBoxFpos[i][1]][0], this.lcwPosArr[this.lcwBoxFpos[i][1]-1][0]);
			      $(boxid).effect('height',{wait:true,transition: Fx.Transitions.Back.easeInOut}).start(this.lcwPosArr[this.lcwBoxFpos[i][1]][4], this.lcwPosArr[this.lcwBoxFpos[i][1]-1][4]);
					  $(boxid).effect('left',{wait:true,transition: Fx.Transitions.Back.easeInOut}).start(this.lcwPosArr[this.lcwBoxFpos[i][1]][2], this.lcwPosArr[this.lcwBoxFpos[i][1]-1][2]);
						$(boxid).effect('top',{wait:true,transition: Fx.Transitions.Back.easeInOut}).start(this.lcwPosArr[this.lcwBoxFpos[i][1]][3], this.lcwPosArr[this.lcwBoxFpos[i][1]-1][3]);
						$(boxid).effect('opacity',{wait:true}).start('.'+this.lcwPosArr[this.lcwBoxFpos[i][1]][5],'.'+this.lcwPosArr[this.lcwBoxFpos[i][1]-1][5]);

						this.lcwBoxFpos[i][1] = this.lcwBoxFpos[i][1] - 1;
				  }
			  }
			 }
			},
			 
			moveto: function(goto){
				
				if(this.lcwBoxFpos[goto][1] < 4 ){
				  var diff = 4- this.lcwBoxFpos[goto][1];
					for(i=1;diff>=i;i++){
					  this.fwd.delay(500*i, this);
					}					
				} else {
					var diff = this.lcwBoxFpos[goto][1]-4;
					for(i=1;diff>=i;i++){
					  this.rwd.delay(500*i, this);
					}		
				}
			},
			
			sizeup: function(goto){		
				if(this.lcwBoxFpos[goto][1] == 4 )
				{
				  var boxid = 'lcwbox'+this.lcwBoxFpos[goto][0];
				  if(this.lcwBoxSizedUp == 0)
					{
						$(boxid).effect('width',{wait:true,transition: Fx.Transitions.Back.easeInOut}).start(this.lcwPosArr[4][0],this.lcwBoxSize);
						$(boxid).effect('left',{wait:true,transition: Fx.Transitions.Back.easeInOut}).start(this.lcwPosArr[4][2],0);
						$(boxid).effect('top',{wait:true,transition: Fx.Transitions.Back.easeInOut}).start(this.lcwPosArr[4][3],0);
						$(boxid).effect('height',{wait:true,transition: Fx.Transitions.Back.easeInOut}).start(this.lcwPosArr[4][4],this.lcwBoxHeight);
						
					  this.lcwBoxSizedUp = 1;
					} else {

						$(boxid).effect('width',{wait:true,transition: Fx.Transitions.Back.easeInOut}).start(this.lcwBoxSize,this.lcwPosArr[4][0]);
						$(boxid).effect('left',{wait:true,transition: Fx.Transitions.Back.easeInOut}).start(0,this.lcwPosArr[4][2]);
						$(boxid).effect('top',{wait:true,transition: Fx.Transitions.Back.easeInOut}).start(0,this.lcwPosArr[4][3]);
						$(boxid).effect('height',{wait:true,transition: Fx.Transitions.Back.easeInOut}).start(this.lcwBoxHeight,this.lcwPosArr[4][4]);

					  this.lcwBoxSizedUp = 0;
					}
				}
			},
			
			createBox: function(){
					var content = '';
					for(i=0;i<8;i++){
						content = content + '<div style="position:absolute;" id="lcwbox'+i+'" ondblclick="'+this.classname+'.sizeup('+i+');" onclick="'+this.classname+'.moveto('+i+');"></div>';
					}
					 content = content + '<div id="info"></div><div id="next" onclick="'+this.classname+'.fwd();"></div><div id="prev" onclick="'+this.classname+'.rwd();"></div>';
					$(this.tableid).innerHTML = content;
					
					var FXnext = $('next').effect('opacity', {duration: 200});
					
					$('next').addEvent('mouseout', function(){
							FXnext.stop();
							FXnext.start('1','0.1');																	
					});
					
					$('next').addEvent('mouseover', function(element){
							FXnext.stop();
							FXnext.start('0.1','1');																		
					});
					
					var FXprev = $('prev').effect('opacity', {duration: 200});
					
					$('prev').addEvent('mouseout', function(){
							FXprev.stop();
							FXprev.start('1','0.1');																		
					});
					
					$('prev').addEvent('mouseover', function(element){
							FXprev.stop();
							FXprev.start('0.1','1');															
					});
					
					FXnext.start('1','0.1');	
					FXprev.start('1','0.1');	
			},
			
			addImage: function(image,txt){
				var img = '<img src="'+image+'" width="100%">';
			  this.lcwImages.push(new Array(img,txt));
			},
			
			lcwInsertImages: function(){
				 if(this.lcwImages.length == 1){
				    $('lcwbox'+this.lcwBoxFpos[4][0]).innerHTML = this.lcwImages[0];
						$('info').innerHTML = this.lcwImages[0][1];
				 		this.lcwImagePos = 0;
				 } else if(this.lcwImages.length == 2){
						$('lcwbox'+this.lcwBoxFpos[4][0]).innerHTML = this.lcwImages[0];
						$('lcwbox'+this.lcwBoxFpos[3][0]).innerHTML = this.lcwImages[1];
						$('info').innerHTML = this.lcwImages[0][1];
				    this.lcwImagePos = 0;
				 } else if(this.lcwImages.length == 3){	
						$('lcwbox'+this.lcwBoxFpos[4][0]).innerHTML = this.lcwImages[0];
						$('lcwbox'+this.lcwBoxFpos[3][0]).innerHTML = this.lcwImages[1];
						$('lcwbox'+this.lcwBoxFpos[2][0]).innerHTML = this.lcwImages[2];
						$('info').innerHTML = this.lcwImages[0][1];
						this.lcwImagePos = 0;
				 } else if(this.lcwImages.length == 4){
				 		$('lcwbox'+this.lcwBoxFpos[4][0]).innerHTML = this.lcwImages[0];
						$('lcwbox'+this.lcwBoxFpos[3][0]).innerHTML = this.lcwImages[1];
						$('lcwbox'+this.lcwBoxFpos[2][0]).innerHTML = this.lcwImages[2];
						$('lcwbox'+this.lcwBoxFpos[1][0]).innerHTML = this.lcwImages[3];
						$('info').innerHTML = this.lcwImages[0][1];
						this.lcwImagePos = 0;
				 } else {

							var j=0;
							var l=this.lcwImages.length;
							if(this.lcwImages.length > 7)l=7;
							for(i=l;i>=0;i--)
							{
							 	$('lcwbox'+this.lcwBoxFpos[i][0]).innerHTML = this.lcwImages[j][0];
								j++;
								
								if(i==5) $('info').innerHTML = this.lcwImages[j][1];

							}j--;
							
							if(this.lcwImages.length > 7){
							 this.lcwImagePos = 3;
							 }else{
							 this.lcwImagePos = this.lcwImages.length-4;
							 }

				 }
			}

});

