(function ($) {
Animage = function()
{
	var self=this;
	self.container='';
	self.rel_container='';
	self.img_container='';
	self.text_container='';
	self.text_courtain='';
	self.imgs_url=[];
	self.imgs=[];
	self.text_html=[];
	self.img_loaded=0;
	self.img_w=720;
	self.img_h=480;
	self.speed=750;
	self.pausetime=3000;
	self.curdisp=0;
	self.slice_w=9;
	self.slice_h=6;
	self.basename="animage";
	self.queuetype="random";
	self.anims=['xfade','push_up','push_right','push_down','push_left','squeeze_up','squeeze_right','squeeze_down','squeeze_left','zoom_in','zoom_out','quad_open','quad_close','veneziana_horiz','veneziana_vert','cubize_fade_rand','cubize_fade_vert','cubize_fade_horiz','cubize_zoomin','cubize_zoomout','stripe_vert','stripe_horiz','open_horiz','open_vert','close_horiz','close_vert'];
	self.animscycle=[];
	self.queue=[];
	self.readycb=null;
	self.animstartcb=null;
	self.animfinishcb=null;
	self.playstate=true;
	self.courtainstate=true;
	self.busy=false;
	
	self.textanim_in="xfade";
	self.textanim_out="xfade";
	self.textheight=20;

	self.init = function(settings)
	{
		if (settings)
		{
			self.parse_settings(settings);
		}
		$(self.container).html("");
		self.busy=false;
		self.rel_container=self.basename+"_rel_container";
		self.img_container=self.basename+"_img_container";
		self.text_container=self.basename+"_text_container";
		self.text_courtain=self.basename+"_text_courtain";
		var d1="<div id=\""+self.rel_container+"\" style=\"width:"+self.img_w+"px; height:"+self.img_h+"px; overflow:hidden; position:relative;\">";
		d1+="<div id=\""+self.img_container+"\" style=\"width:"+self.img_w+"px; height:"+self.img_h+"px; position:absolute; top:0px; left:0px;\"></div>";
		d1+="<div id=\""+self.text_courtain+"\" style=\"width:"+self.img_w+"px; height:"+self.textheight+"px; background-color:#000; opacity:0.6; position:absolute; top:"+(self.img_h-self.textheight)+"px; left:0px;\"></div>";
		d1+="</div>";
		self.rel_container="#"+self.rel_container
		self.img_container="#"+self.img_container;
		self.text_container="#"+self.text_container;
		self.text_courtain="#"+self.text_courtain;
		$(self.container).append(d1);
		if ((self.text_html[0]=="")||(self.text_html[0]==undefined))
		{
			self.courtainstate=false;
			$(self.text_courtain).css("display","none");
		}
		self.animscycle=self.clone_array(self.anims);
		
		for (var k=0;k<self.imgs_url.length;k++)
		{
			// Crea html per testo
			if (k==0) { ds="block"; } else { ds="none"; }
			if ((self.text_html[k]==undefined)||(self.text_html[k]==''))
			{
				d1="<div id=\""+self.text_container.substring(1,self.text_container.length)+"_"+k+"\" style=\"display:none; position:absolute; top:"+(self.img_h-self.textheight)+"px; left:0px; color:#ffffff; width:"+self.img_w+"px; height:"+self.textheight+"px; overflow:hidden;\"></div>";
			}
			else
			{
				d1="<div id=\""+self.text_container.substring(1,self.text_container.length)+"_"+k+"\" style=\"display:"+ds+"; position:absolute; top:"+(self.img_h-self.textheight)+"px; left:0px; color:#ffffff; width:"+self.img_w+"px; height:"+self.textheight+"px; overflow:hidden;\">"+self.text_html[k]+"</div>";
			}
			$(self.rel_container).append(d1);
			// Crea html per immagine
			self.imgs[k]=new Image();
			$(self.imgs[k]).attr('id',self.basename+"_"+k)
			self.img_reset(self.imgs[k]);
			if (k==0)
			{
				$(self.imgs[k]).css('display','block');
				self.curdisp=0;
			}
			$(self.imgs[k]).load(function()
			{
				//console.log("IMG LOADED: "+this.src);
				$(self.img_container).append(this);
				self.img_loaded++;
				if (self.img_loaded==self.imgs_url.length)
				{
					//console.log(self.anims.length+" type of animations loaded");
					if (self.readycb!=null)
					{
						self.readycb({'event':'ready','currimg':self.curdisp});
					}
					if (self.playstate==true)
					{
						setTimeout(self.animate,self.pausetime);
					}
				}
			});
			$(self.imgs[k]).attr('src',self.imgs_url[k]);
		}
	};
	
	self.img_reset = function(i)
	{
		$(i).css('display','none').css('position','absolute').css('top','0px').css('left','0px').css('width',self.img_w+'px').css('height',self.img_h+'px');
	}
	
	self.anim_finish = function()
	{
		self.busy=false;
		if (self.animfinishcb!=null)
		{
			self.animfinishcb({'event':'animfinish','currimg':self.curdisp});
		}
		if (self.playstate==true)
		{
			setTimeout(self.animate,self.pausetime);
		}
	}
	
	self.start = function()
	{
		if (self.playstate==false)
		{
			self.playstate=true;
			self.animate();
		}
	}
	
	self.stop = function()
	{
		self.playstate=false;
	}
	
	self.goto = function(num)
	{
		if ((self.playstate==false)&&(!self.busy))
		{
			self.busy=true;
			var last=self.curdisp;
			var lastc=self.courtainstate;
			var canim="";
			var a1='#'+self.basename+'_'+self.curdisp;
			if (num<self.imgs_url.length)
			{
				self.curdisp=num;
				if ((self.text_html[self.curdisp]==undefined)||(self.text_html[self.curdisp]==""))
				{
					self.courtainstate=false;
				}
				else
				{
					self.courtainstate=true;
				}
				if ((self.courtainstate==true)&&(lastc==false))
				{
					canim="in";
				}
				if ((self.courtainstate==false)&&(lastc==true))
				{
					canim="out";
				}
				self.text_anim(self.text_container+"_"+self.curdisp,self.text_container+"_"+last,canim);
				var a2='#'+self.basename+'_'+self.curdisp;
				self.anim_random(a2,a1);
			}
		}
	}
	
	self.next = function()
	{
		if ((self.playstate==false)&&(!self.busy))
		{
			self.busy=true;
			var last=self.curdisp;
			var lastc=self.courtainstate;
			var canim="";
			var a1='#'+self.basename+'_'+self.curdisp;
			self.curdisp++;
			if (self.curdisp>=self.imgs_url.length)
			{
				self.curdisp=0;
			}
			if ((self.text_html[self.curdisp]==undefined)||(self.text_html[self.curdisp]==""))
			{
				self.courtainstate=false;
			}
			else
			{
				self.courtainstate=true;
			}
			if ((self.courtainstate==true)&&(lastc==false))
			{
				canim="in";
			}
			if ((self.courtainstate==false)&&(lastc==true))
			{
				canim="out";
			}
			self.text_anim(self.text_container+"_"+self.curdisp,self.text_container+"_"+last,canim);
			var a2='#'+self.basename+'_'+self.curdisp;
			self.anim_random(a2,a1);
		}
	}
	
	self.animate = function()
	{
		if ((self.playstate==true)&&(!self.busy))
		{
			self.busy=true;
			var last=self.curdisp;
			var lastc=self.courtainstate;
			var canim="";
			var a1='#'+self.basename+'_'+self.curdisp;
			self.curdisp++;
			if (self.curdisp>=self.imgs_url.length)
			{
				self.curdisp=0;
			}
			var a2='#'+self.basename+'_'+self.curdisp;
			if ((self.text_html[self.curdisp]==undefined)||(self.text_html[self.curdisp]==""))
			{
				self.courtainstate=false;
			}
			else
			{
				self.courtainstate=true;
			}
			if ((self.courtainstate==true)&&(lastc==false))
			{
				canim="in";
			}
			if ((self.courtainstate==false)&&(lastc==true))
			{
				canim="out";
			}
			self.text_anim(self.text_container+"_"+self.curdisp,self.text_container+"_"+last,canim);
			self.anim_random(a2,a1);
		}
	}
	
	self.prev = function()
	{
		if ((self.playstate==false)&&(!self.busy))
		{
			self.busy=true;
			var last=self.curdisp;
			var lastc=self.courtainstate;
			var canim="";
			var a1='#'+self.basename+'_'+self.curdisp;
			self.curdisp--;
			if (self.curdisp<0)
			{
				self.curdisp=self.imgs_url.length-1;
			}
			if ((self.text_html[self.curdisp]==undefined)||(self.text_html[self.curdisp]==""))
			{
				self.courtainstate=false;
			}
			else
			{
				self.courtainstate=true;
			}
			if ((self.courtainstate==true)&&(lastc==false))
			{
				canim="in";
			}
			if ((self.courtainstate==false)&&(lastc==true))
			{
				canim="out";
			}
			self.text_anim(self.text_container+"_"+self.curdisp,self.text_container+"_"+last,canim);
			var a2='#'+self.basename+'_'+self.curdisp;
			self.anim_random(a2,a1);
		}
	}
	
	self.clone_array = function(a)
	{
		var nobj=[];
		for (var k in a)
		{
			nobj[k]=a[k];
		}
		return(nobj);

	}
	
	self.parse_settings = function (s)
	{
		if (typeof(s.container)=="string")
		{
			self.container=s.container;
		}
		if (typeof(s.basename)=="string")
		{
			self.basename=s.basename;
		}
		if (typeof(s.queuetype)=="string")
		{
			self.queuetype=s.queuetype;
		}
		if (typeof(s.textanim_in)=="string")
		{
			self.textanim_in=s.textanim_in;
		}
		if (typeof(s.textanim_out)=="string")
		{
			self.textanim_out=s.textanim_out;
		}
		if (typeof(s.width)=="number")
		{
			self.img_w=s.width;
		}
		if (typeof(s.height)=="number")
		{
			self.img_h=s.height;
		}
		if (typeof(s.speed)=="number")
		{
			self.speed=s.speed;
		}
		if (typeof(s.pausetime)=="number")
		{
			self.pausetime=s.pausetime;
		}
		if (typeof(s.slice_h)=="number")
		{
			self.slice_h=s.slice_h;;
		}
		if (typeof(s.slice_w)=="number")
		{
			self.slice_w=s.slice_w;
		}
		if (typeof(s.textheight)=="number")
		{
			self.textheight=s.textheight;
		}
		if (typeof(s.autostart)=="boolean")
		{
			self.playstate=s.autostart;
		}
		if ((typeof(s.readycb)=="function")||(typeof(s.readycb)=="object"))
		{
			self.readycb=s.readycb;
		}
		if ((typeof(s.animstartcb)=="function")||(typeof(s.animstartcb)=="object"))
		{
			self.animstartcb=s.animstartcb;
		}
		if ((typeof(s.animfinishcb)=="function")||(typeof(s.animfinishcb)=="object"))
		{
			self.animfinishcb=s.animfinishcb;
		}
		if (s.imgs_url instanceof Array)
		{
			self.imgs_url=self.clone_array(s.imgs_url);
		}
		if (s.anims instanceof Array)
		{
			self.anims=self.clone_array(s.anims);
		}
		if (s.text_html instanceof Array)
		{
			self.text_html=s.text_html;
		}
	}
	
	// ------------------- ANIMAZIONI TESTO
	self.text_anim = function(i,o,c)
	{
		switch(self.textanim_in)
		{
			case "from_right":
				$(i).css("left",self.img_w+"px").css("display","block").animate({"left":0},self.speed);
				if (c=="in")
				{
					$(self.text_courtain).css("left",self.img_w+"px").css("display","block").animate({"left":0},self.speed);
				}
			break;
			
			case "from_left":
				$(i).css("left","-"+self.img_w+"px").css("display","block").animate({"left":0},self.speed);
				if (c=="in")
				{
					$(self.text_courtain).css("left","-"+self.img_w+"px").css("display","block").animate({"left":0},self.speed);
				}
			break;
			
			case "from_down":
				$(i).css("top",self.img_h+"px").css("display","block").animate({"top":0},self.speed);
				if (c=="in")
				{
					$(self.text_courtain).css("top",self.img_h+"px").css("display","block").animate({"top":0},self.speed);
				}
			break;
			
			case "xfade":
				$(i).css("display","none").fadeIn(self.speed);
				if (c=="in")
				{
					$(self.text_courtain).css("display","none").fadeIn(self.speed);
				}
			break;
		}
		//OUT
		switch(self.textanim_out)
		{
			case "xfade":
				$(o).fadeOut(self.speed);
				if (c=="out")
				{
					$(self.text_courtain).fadeOut(self.speed);
				}
			break;
			
			case "to_right":
				$(o).animate({'left':'='+self.img_w},self.speed,function()
				{
					$(o).css('display','none').css('left','0px');
				});
				if (c=="out")
				{
					$(self.text_courtain).animate({'left':'='+self.img_w},self.speed,function()
					{
						$(self.text_courtain).css('display','none').css('left','0px');
					});
				}
			break;
			
			case "to_left":
				$(o).animate({'left':-self.img_w},self.speed,function()
				{
					$(o).css('display','none').css('left','0px');
				});
				if (c=="out")
				{
					$(self.text_courtain).animate({'left':-self.img_w},self.speed,function()
					{
						$(self.text_courtain).css('display','none').css('left','0px');
					});
				}
			break;
			
			case "to_down":
				$(o).animate({'top':self.img_h},self.speed,function()
				{
					$(o).css('display','none').css('top',(self.img_h-self.textheight)+'px');
				});
				if (c=="out")
				{
					$(self.text_courtain).animate({'top':self.img_h},self.speed,function()
					{
						$(self.text_courtain).css('display','none').css('top',(self.img_h-self.textheight)+'px');
					});
				}
			break;
		}
	}
	
	// ------------------- ANIMAZIONI IMMAGINI
	
	// Un'animazione random
	self.anim_random = function(i,o)
	{
		if (self.queue.length<1)
		{
			self.queue=self.clone_array(self.animscycle);
		}
		var rn=0;	// Queuetype="Linear"
		if (self.queuetype=="random")
		{
			rn=Math.floor(Math.random()*self.queue.length);
		}
		var aa=self.queue[rn];
		if (self.animstartcb!=null)
			{
				self.animstartcb({'event':'animstart','currimg':self.curdisp,'anim':aa});
			}
		self.queue.splice(rn,1);
		eval("self.anim_"+aa+"('"+i+"','"+o+"');");
	}
	
	// Crossfade
	self.anim_xfade = function(i,o)
	{
		$(i).fadeIn(self.speed);
		$(o).fadeOut(self.speed,function()
		{
			self.anim_finish();
		});
	}
	
	// Immagine entra spingendo l'altra da destra a sinistra
	self.anim_push_left = function (i,o)
	{
		$(i).css('left',self.img_w+'px').css('display','block').animate({'left':0},self.speed);
		$(o).animate({'left':-self.img_w},self.speed,function()
		{
			$(this).css('display','none').css('left','0px');
			self.anim_finish();
		});
	}
	
	// Immagine entra spingendo l'altra da sinistra a destra
	self.anim_push_right = function (i,o)
	{
		$(i).css('left','-'+self.img_w+'px').css('display','block').animate({'left':0},self.speed);
		$(o).animate({'left':self.img_w},self.speed,function()
		{
			$(this).css('display','none').css('left','0px');
			self.anim_finish();
		});
	}
	
	// Immagine entra spingendo l'altra dal basso in alto
	self.anim_push_up = function (i,o)
	{
		$(i).css('top',self.img_h+'px').css('display','block').animate({'top':0},self.speed);
		$(o).animate({'top':-self.img_h},self.speed,function()
		{
			$(this).css('display','none').css('top','0px');
			self.anim_finish();
		});
	}
	
	// Immagine entra spingendo l'altra dall'alto in basso
	self.anim_push_down = function (i,o)
	{
		$(i).css('top','-'+self.img_h+'px').css('display','block').animate({'top':0},self.speed);
		$(o).animate({'top':self.img_h},self.speed,function()
		{
			$(this).css('display','none').css('top','0px');
			self.anim_finish();
		});
	}
	
	// Immagine entra allargandosi e schiacciando l'altra da destra a sinistra
	self.anim_squeeze_right = function(i,o)
	{
		$(i).css('width','0px').css('display','block').animate({'width':self.img_w},self.speed);
		$(o).animate({'width':0,'left':self.img_w},self.speed,function()
		{
			$(this).css('display','none').css('width',self.img_w+'px').css('left','0px');
			self.anim_finish();
		});
	}
	
	// Immagine entra allargandosi e schiacciando l'altra da sinistra adestra
	self.anim_squeeze_left = function(i,o)
	{
		$(i).css('width','0px').css('left',self.img_w+'px').css('display','block').animate({'width':self.img_w,'left':0},self.speed);
		$(o).animate({'width':0},self.speed,function()
		{
			$(this).css('display','none').css('width',self.img_w+'px');
			self.anim_finish();
		});
	}
	
	// Immagine entra allargandosi e schiacciando l'altra dal basso in alto
	self.anim_squeeze_up = function(i,o)
	{
		$(i).css('top',self.img_h+'px').css('height','0px').css('display','block').animate({'top':0,'height':self.img_h},self.speed);
		$(o).animate({'height':0},self.speed,function()
		{
			$(this).css('display','none').css('height',self.img_h+'px');
			self.anim_finish();
		});
	}
	
	// Immagine entra allargandosi e schiacciando l'altra dall' alto in basso
	self.anim_squeeze_down = function(i,o)
	{
		$(i).css('top','0px').css('height','0px').css('display','block').animate({'height':self.img_h},self.speed);
		$(o).animate({'height':0,'top':self.img_h},self.speed,function()
		{
			$(this).css('display','none').css('top','0px').css('height',self.img_h+'px');
			self.anim_finish();
		});
	}
	
	// Immagine entra divisa in due orizzontalmente: metà dall'alto, metà dal basso
	self.anim_close_vert = function(i,o)
	{
		var xh=Math.ceil(self.img_h/2);
		var idb=$(i).attr('id')+"_pcs";
		var d1="<div id=\""+idb+"1\" style=\"width:"+self.img_w+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:-"+xh+"px; left:0px;\"><img src=\""+$(i).attr('src')+"\" style=\"position:absolute; top:0px; left:0px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";
		var d2="<div id=\""+idb+"2\" style=\"width:"+self.img_w+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:"+self.img_h+"px; left:0px;\"><img src=\""+$(i).attr('src')+"\" style=\"position:absolute; top:-"+xh+"px; left:0px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";		
		$(self.img_container).append(d1).append(d2);
		$("#"+idb+"1").animate({'top':0},self.speed);
		$("#"+idb+"2").animate({'top':xh},self.speed,function()
		{
			$(i).css('display','block');
			$(o).css('display','none');
			$("#"+idb+"1").css('display','none').remove();
			$("#"+idb+"2").css('display','none').remove();
			self.anim_finish();
		});
	}
	
	// Immagine entra divisa in due verticalmente: metà da sinistra, metà da destra
	self.anim_close_horiz = function(i,o)
	{
		var xh=Math.ceil(self.img_w/2);
		var idb=$(i).attr('id')+"_pcs";
		var d1="<div id=\""+idb+"1\" style=\"width:"+xh+"px; height:"+self.img_h+"px; overflow:hidden; position:absolute; top:0px; left:-"+xh+"px;\"><img src=\""+$(i).attr('src')+"\" style=\"position:absolute; top:0px; left:0px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";
		var d2="<div id=\""+idb+"2\" style=\"width:"+xh+"px; height:"+self.img_h+"px; overflow:hidden; position:absolute; top:0px; left:"+self.img_w+"px;\"><img src=\""+$(i).attr('src')+"\" style=\"position:absolute; top:0px; left:-"+xh+"px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";		
		$(self.img_container).append(d1).append(d2);
		$("#"+idb+"1").animate({'left':0},self.speed);
		$("#"+idb+"2").animate({'left':xh},self.speed,function()
		{
			$(i).css('display','block');
			$(o).css('display','none');
			$("#"+idb+"1").css('display','none').remove();
			$("#"+idb+"2").css('display','none').remove();
			self.anim_finish();
		});
	}
	
	// Immagine esce divisa in due orizzontalmente: metà da sopra, metà da sotto
	self.anim_open_vert = function(i,o)
	{
		var xh=Math.ceil(self.img_h/2);
		var idb=$(o).attr('id')+"_pcs";
		var d1="<div id=\""+idb+"1\" style=\"width:"+self.img_w+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:0px; left:0px;\"><img src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:0px; left:0px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";
		var d2="<div id=\""+idb+"2\" style=\"width:"+self.img_w+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:"+xh+"px; left:0px;\"><img src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:-"+xh+"px; left:0px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";
		$(self.img_container).append(d1).append(d2);
		$(o).css('display','none');
		$(i).css('display','block');
		$("#"+idb+"1").animate({'top':-xh},self.speed);
		$("#"+idb+"2").animate({'top':self.img_h},self.speed,function()
		{
			$("#"+idb+"1").css('display','none').remove();
			$("#"+idb+"2").css('display','none').remove();
			self.anim_finish();
		});
	}
	
	// Immagine esce divisa in due verticalmente: metà da destra, metà da sinistra
	self.anim_open_horiz = function(i,o)
	{
		var xh=Math.ceil(self.img_w/2);
		var idb=$(o).attr('id')+"_pcs";
		var d1="<div id=\""+idb+"1\" style=\"width:"+xh+"px; height:"+self.img_h+"px; overflow:hidden; position:absolute; top:0px; left:0px;\"><img src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:0px; left:0px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";
		var d2="<div id=\""+idb+"2\" style=\"width:"+xh+"px; height:"+self.img_h+"px; overflow:hidden; position:absolute; top:0px; left:"+xh+"px;\"><img src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:0px; left:-"+xh+"px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";
		$(self.img_container).append(d1).append(d2);
		$(o).css('display','none');
		$(i).css('display','block');
		$("#"+idb+"1").animate({'left':-xh},self.speed);
		$("#"+idb+"2").animate({'left':self.img_w},self.speed,function()
		{
			$("#"+idb+"1").css('display','none').remove();
			$("#"+idb+"2").css('display','none').remove();
			self.anim_finish();
		});
	}
	
	self.anim_stripe_horiz = function(i,o)
	{
		var xh=Math.ceil(self.img_h/self.slice_h);
		var idb=$(o).attr('id')+"_pcs";
		var sg="";
		for (var k=0;k<self.slice_h;k++)
		{
			$(self.img_container).append("<div id=\""+idb+k+"\" style=\"width:"+self.img_w+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:"+(xh*k)+"px; left:0px;\"><img src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:-"+(xh*k)+"px; left:0px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>");
		}
		$(o).css('display','none');
		$(i).css('display','block');
		for (k=0;k<self.slice_h;k++)
		{
			if (k%2==0) { sg=1; } else { sg=-1; }
			if (k<(self.slice_h-1))
			{
				$("#"+idb+k).delay(self.speed/2/self.slice_h*k).animate({'left':sg*self.img_w},self.speed/2);
			}
			else
			{
				$("#"+idb+k).delay(self.speed/2/self.slice_h*k).animate({'left':sg*self.img_w},self.speed/2,function()
				{
					for (var k=0;k<self.slice_h;k++)
					{
						$("#"+idb+k).css('display','none').remove();
					}
					self.anim_finish();
				});
			}
		}
	}
	
	self.anim_stripe_vert = function(i,o)
	{
		var xh=Math.ceil(self.img_w/self.slice_w);
		var idb=$(o).attr('id')+"_pcs";
		var sg="";
		for (var k=0;k<self.slice_w;k++)
		{
			$(self.img_container).append("<div id=\""+idb+k+"\" style=\"width:"+xh+"px; height:"+self.img_h+"px; overflow:hidden; position:absolute; top:0px; left:"+(xh*k)+"px;\"><img src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:0px; left:-"+(xh*k)+"px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>");
		}
		$(o).css('display','none');
		$(i).css('display','block');
		for (k=0;k<self.slice_w;k++)
		{
			if (k%2==0) { sg=1; } else { sg=-1; }
			if (k<(self.slice_w-1))
			{
				$("#"+idb+k).delay(self.speed/2/self.slice_w*k).animate({'top':sg*self.img_h},self.speed/2);
			}
			else
			{
				$("#"+idb+k).delay(self.speed/2/self.slice_w*k).animate({'top':sg*self.img_h},self.speed/2,function()
				{
					for (var k=0;k<self.slice_w;k++)
					{
						$("#"+idb+k).css('display','none').remove();
					}
					self.anim_finish();
				});
			}
		}
	}
	
	self.anim_cubize_zoomin = function(i,o)
	{
		var xw=Math.ceil(self.img_w/self.slice_w);
		var xh=Math.ceil(self.img_h/self.slice_h);
		var idb=$(i).attr('id')+"_pcs";
		var num=0;
		var k;
		var j;
		for (k=0;k<self.slice_w;k++)
		{
			for (j=0;j<self.slice_h;j++)
			{
				$(self.img_container).append("<div id=\""+idb+num+"\" style=\"width:0px; height:0px; overflow:hidden; position:absolute; top:"+(xh*j+xh/2)+"px; left:"+(xw*k+xw/2)+"px;\"><img id=\""+idb+"IM_"+num+"\" src=\""+$(i).attr('src')+"\" style=\"position:absolute; top:-"+(xh*j+xh/2)+"px; left:-"+(xw*k+xw/2)+"px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>");
				num++;
			}
		}
		$(o).css('display','block');
		$(i).css('display','none');
		for (k=0;k<num;k++)
		{
			if (k<(num-1))
			{
				$("#"+idb+k).animate({'width':xw,'height':xh,'top':'-='+(xh/2),'left':'-='+(xw/2)},self.speed);
				$("#"+idb+"IM_"+k).animate({'top':'+='+(xh/2),'left':'+='+(xw/2)},self.speed);
			}
			else
			{
				$("#"+idb+"IM_"+k).animate({'top':'+='+(xh/2),'left':'+='+(xw/2)},self.speed);
				$("#"+idb+k).animate({'width':xw,'height':xh,'top':'-='+(xh/2),'left':'-='+(xw/2)},self.speed,function ()
				{
					$(o).css('display','none');
					$(i).css('display','block');
					for (k=0;k<num;k++)
					{
						$("#"+idb+k).css('display','none').remove();
					}
					self.anim_finish();
				});
			}
		}
	}
	
	self.anim_cubize_zoomout = function(i,o)
	{
		var xw=Math.ceil(self.img_w/self.slice_w);
		var xh=Math.ceil(self.img_h/self.slice_h);
		var idb=$(o).attr('id')+"_pcs";
		var num=0;
		var k;
		var j;
		for (k=0;k<self.slice_w;k++)
		{
			for (j=0;j<self.slice_h;j++)
			{
				$(self.img_container).append("<div id=\""+idb+num+"\" style=\"width:"+xw+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:"+(xh*j)+"px; left:"+(xw*k)+"px;\"><img id=\""+idb+"IM_"+num+"\" src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:-"+(xh*j)+"px; left:-"+(xw*k)+"px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>");
				num++;
			}
		}
		$(o).css('display','none');
		$(i).css('display','block');
		for (k=0;k<num;k++)
		{
			if (k<(num-1))
			{
				$("#"+idb+k).animate({'width':0,'height':0,'top':'+='+(xh/2),'left':'+='+(xw/2)},self.speed);
				$("#"+idb+"IM_"+k).animate({'top':'-='+(xh/2),'left':'-='+(xw/2)},self.speed);
			}
			else
			{
				$("#"+idb+k).animate({'width':0,'height':0,'top':'+='+(xh/2),'left':'+='+(xw/2)},self.speed,function ()
				{
					for (k=0;k<num;k++)
					{
						$("#"+idb+k).css('display','none').remove();
					}
					self.anim_finish();
				});
			}
		}
	}
	
	self.anim_cubize_fade_horiz = function(i,o)
	{
		var xw=Math.ceil(self.img_w/self.slice_w);
		var xh=Math.ceil(self.img_h/self.slice_h);
		var idb=$(o).attr('id')+"_pcs";
		var num=0;
		var k;
		var j;
		for (j=0;j<self.slice_h;j++)
		{
			for (k=0;k<self.slice_w;k++)
			{
				$(self.img_container).append("<div id=\""+idb+num+"\" style=\"width:"+xw+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:"+(xh*j)+"px; left:"+(xw*k)+"px;\"><img src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:-"+(xh*j)+"px; left:-"+(xw*k)+"px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>");
				num++;
			}
		}
		$(o).css('display','none');
		$(i).css('display','block');
		var tm=self.speed/4*3/num;
		for (k=0;k<num;k++)
		{
			if (k<(num-1))
			{
				$("#"+idb+k).delay(tm*k).fadeOut(self.speed/4);
			}
			else
			{
				$("#"+idb+k).delay(tm*k).fadeOut(self.speed/4,function ()
				{
					for (k=0;k<num;k++)
					{
						$("#"+idb+k).css('display','none').remove();
					}
					self.anim_finish();
				});
			}
		}
	}
	
	self.anim_cubize_fade_vert = function(i,o)
	{
		var xw=Math.ceil(self.img_w/self.slice_w);
		var xh=Math.ceil(self.img_h/self.slice_h);
		var idb=$(o).attr('id')+"_pcs";
		var num=0;
		var k;
		var j;
		for (k=0;k<self.slice_w;k++)
		{
			for (j=0;j<self.slice_h;j++)
			{
				$(self.img_container).append("<div id=\""+idb+num+"\" style=\"width:"+xw+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:"+(xh*j)+"px; left:"+(xw*k)+"px;\"><img src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:-"+(xh*j)+"px; left:-"+(xw*k)+"px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>");
				num++;
			}
		}
		$(o).css('display','none');
		$(i).css('display','block');
		var tm=self.speed/4*3/num;
		for (k=0;k<num;k++)
		{
			if (k<(num-1))
			{
				$("#"+idb+k).delay(tm*k).fadeOut(self.speed/4);
			}
			else
			{
				$("#"+idb+k).delay(tm*k).fadeOut(self.speed/4,function ()
				{
					for (k=0;k<num;k++)
					{
						$("#"+idb+k).css('display','none').remove();
					}
					self.anim_finish();
				});
			}
		}
	}
	
	self.anim_cubize_fade_rand = function(i,o)
	{
		var xw=Math.ceil(self.img_w/self.slice_w);
		var xh=Math.ceil(self.img_h/self.slice_h);
		var idb=$(o).attr('id')+"_pcs";
		var pcs=[];
		var num=0;
		var k;
		var j;
		var rn="";
		var nn="";
		for (j=0;j<self.slice_h;j++)
		{
			for (k=0;k<self.slice_w;k++)
			{
				$(self.img_container).append("<div id=\""+idb+num+"\" style=\"width:"+xw+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:"+(xh*j)+"px; left:"+(xw*k)+"px;\"><img src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:-"+(xh*j)+"px; left:-"+(xw*k)+"px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>");
				num++;
			}
		}
		$(o).css('display','none');
		$(i).css('display','block');
		for (k=0;k<num;k++)
		{
			pcs[k]=k;
		}
		for (k=0;k<num;k++)
		{
			rn=Math.floor(Math.random()*pcs.length);
			nn=pcs[rn];
			pcs.splice(rn,1);
			if (k<(num-1))
			{
				$("#"+idb+nn).delay(self.speed/4*3/num*k).fadeOut(self.speed/4);
			}
			else
			{
				$("#"+idb+nn).delay(self.speed/4*3/num*k).fadeOut(self.speed/4,function ()
				{
					for (k=0;k<num;k++)
					{
						$("#"+idb+k).css('display','none').remove();
					}
					self.anim_finish();
				});
			}
		}
	}
	
	self.anim_veneziana_vert = function(i,o)
	{
		var xh=Math.ceil(self.img_w/self.slice_w);
		var idb=$(o).attr('id')+"_pcs";
		for (var k=0;k<self.slice_w;k++)
		{
			$(self.img_container).append("<div id=\""+idb+k+"\" style=\"width:"+xh+"px; height:"+self.img_h+"px; overflow:hidden; position:absolute; top:0px; left:"+(xh*k)+"px;\"><img src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:0px; left:-"+(xh*k)+"px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>");
		}
		$(o).css('display','none');
		$(i).css('display','block');
		for (k=0;k<self.slice_w;k++)
		{
			if (k<(self.slice_w-1))
			{
				$("#"+idb+k).animate({'width':0,'left':'+='+(xh/2)},self.speed);
			}
			else
			{
				$("#"+idb+k).animate({'width':0,'left':'+='+(xh/2)},self.speed,function()
				{
					for (var k=0;k<self.slice_w;k++)
					{
						$("#"+idb+k).css('display','none').remove();
					}
					self.anim_finish();
				});
			}
		}
	}
	
	self.anim_veneziana_horiz = function(i,o)
	{
		var xh=Math.ceil(self.img_h/self.slice_h);
		var idb=$(o).attr('id')+"_pcs";
		for (var k=0;k<self.slice_h;k++)
		{
			$(self.img_container).append("<div id=\""+idb+k+"\" style=\"width:"+self.img_w+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:"+(xh*k)+"px; left:0px;\"><img src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:-"+(xh*k)+"px; left:0px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>");
		}
		$(o).css('display','none');
		$(i).css('display','block');
		for (k=0;k<self.slice_h;k++)
		{
			if (k<(self.slice_h-1))
			{
				$("#"+idb+k).animate({'height':0,'top':'+='+xh},self.speed);
			}
			else
			{
				$("#"+idb+k).animate({'height':0,'top':'+='+xh},self.speed,function()
				{
					for (var k=0;k<self.slice_h;k++)
					{
						$("#"+idb+k).css('display','none').remove();
					}
					self.anim_finish();
				});
			}
		}
	}
	
	self.anim_quad_open = function(i,o)
	{
		var xw=Math.ceil(self.img_w/2);
		var xh=Math.ceil(self.img_h/2);
		var idb=$(o).attr('id')+"_pcs";
		var d1="<div id=\""+idb+"1\" style=\"width:"+xw+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:0px; left:0px;\"><img src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:0px; left:0px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";
		var d2="<div id=\""+idb+"2\" style=\"width:"+xw+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:0px; left:"+xw+"px;\"><img src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:0px; left:-"+xw+"px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";		
		var d3="<div id=\""+idb+"3\" style=\"width:"+xw+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:"+xh+"px; left:0px;\"><img src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:-"+xh+"px; left:0px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";
		var d4="<div id=\""+idb+"4\" style=\"width:"+xw+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:"+xh+"px; left:"+xw+"px;\"><img src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:-"+xh+"px; left:-"+xw+"px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";
		$(self.img_container).append(d1).append(d2).append(d3).append(d4);
		$(i).css('display','block');
		$(o).css('display','none');
		$("#"+idb+"1").animate({'top':-xh,'left':-xw},self.speed);
		$("#"+idb+"2").animate({'top':-xh,'left':self.img_w},self.speed);
		$("#"+idb+"3").animate({'top':self.img_h,'left':-xw},self.speed);
		$("#"+idb+"4").animate({'top':self.img_h,'left':self.img_w},self.speed,function()
		{
			$("#"+idb+"1").css('display','none').remove();
			$("#"+idb+"2").css('display','none').remove();
			$("#"+idb+"3").css('display','none').remove();
			$("#"+idb+"4").css('display','none').remove();
			self.anim_finish();
		});
	}
	
	self.anim_quad_close = function(i,o)
	{
		var xw=Math.ceil(self.img_w/2);
		var xh=Math.ceil(self.img_h/2);
		var idb=$(i).attr('id')+"_pcs";
		var d1="<div id=\""+idb+"1\" style=\"width:"+xw+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:-"+xh+"px; left:-"+xw+"px;\"><img src=\""+$(i).attr('src')+"\" style=\"position:absolute; top:0px; left:0px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";
		var d2="<div id=\""+idb+"2\" style=\"width:"+xw+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:-"+xh+"px; left:"+self.img_w+"px;\"><img src=\""+$(i).attr('src')+"\" style=\"position:absolute; top:0px; left:-"+xw+"px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";		
		var d3="<div id=\""+idb+"3\" style=\"width:"+xw+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:"+self.img_h+"px; left:-"+xw+"px;\"><img src=\""+$(i).attr('src')+"\" style=\"position:absolute; top:-"+xh+"px; left:0px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";
		var d4="<div id=\""+idb+"4\" style=\"width:"+xw+"px; height:"+xh+"px; overflow:hidden; position:absolute; top:"+self.img_h+"px; left:"+self.img_w+"px;\"><img src=\""+$(i).attr('src')+"\" style=\"position:absolute; top:-"+xh+"px; left:-"+xw+"px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";
		$(self.img_container).append(d1).append(d2).append(d3).append(d4);
		$("#"+idb+"1").animate({'top':0,'left':0},self.speed);
		$("#"+idb+"2").animate({'top':0,'left':xw},self.speed);
		$("#"+idb+"3").animate({'top':xh,'left':0},self.speed);
		$("#"+idb+"4").animate({'top':xh,'left':xw},self.speed,function()
		{
			$(i).css('display','block');
			$(o).css('display','none');
			$("#"+idb+"1").css('display','none').remove();
			$("#"+idb+"2").css('display','none').remove();
			$("#"+idb+"3").css('display','none').remove();
			$("#"+idb+"4").css('display','none').remove();
			self.anim_finish();
		});
	}
	
	self.anim_zoom_in = function(i,o)
	{
		var idb=$(i).attr('id')+"_pcs";
		var d1="<div id=\""+idb+"1\" style=\"width:0px; height:0px; overflow:hidden; position:absolute; top:"+(self.img_h/2)+"px; left:"+(self.img_w/2)+"px;\"><img id=\""+idb+"2\" src=\""+$(i).attr('src')+"\" style=\"position:absolute; top:-"+(self.img_h/2)+"px; left:-"+(self.img_w/2)+"px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";
		$(self.img_container).append(d1);
		$("#"+idb+"2").animate({'top':0,'left':0},self.speed);
		$("#"+idb+"1").animate({'top':0,'left':0,'width':self.img_w,'height':self.img_h},self.speed,function()
		{
			$(i).css('display','block');
			$(o).css('display','none');
			$("#"+idb+"1").css('display','none').remove();
			$("#"+idb+"2").css('display','none').remove();
			self.anim_finish();
		});
	}
	
	self.anim_zoom_out = function(i,o)
	{
		var idb=$(o).attr('id')+"_pcs";
		var d1="<div id=\""+idb+"1\" style=\"width:"+self.img_w+"px; height:"+self.img_h+"px; overflow:hidden; position:absolute; top:0px; left:0px;\"><img id=\""+idb+"2\" src=\""+$(o).attr('src')+"\" style=\"position:absolute; top:0px; left:0px; width:"+self.img_w+"px; height:"+self.img_h+"px;\"></div>";
		$(self.img_container).append(d1);
		$(i).css('display','block');
		$(o).css('display','none');
		$("#"+idb+"2").animate({'top':-(self.img_h/2),'left':-(self.img_w/2)},self.speed);
		$("#"+idb+"1").animate({'top':(self.img_h/2),'left':(self.img_w/2),'width':0,'height':0},self.speed,function()
		{
			$("#"+idb+"1").css('display','none').remove();
			$("#"+idb+"2").css('display','none').remove();
			self.anim_finish();
		});
	}
	
}
})(jQuery);
