(function($) {

	$.fn.imageEffects = function(options) {
		
	   var easingType = "linear";   //easing type for move transiton
	   var transitionTimeGo = 250; // time for mouseover transition
	   
	   var imageWidth=0;
	   var imageHeight=0;
	   var totalWidth=[];
	   var totalHeight=[];
	   var tempLeft=0;
	   var left=0;
	   var top=0;
	   var zoomSize=30;
	   var zoomSizeW=70;
	   var zoomSizeH=321;
	   var overlaySize=60;

	
	   var defaults = {},  
	       options = $.extend(defaults, options);

		this.each(function() {
        var $this = $(this);	
				
//***************************************
//_____________ effectOpacity______________
//***************************************
		var i=0;
		//set the images with effectOpacity class on the initial opacity
		var effectOpacityArray = $(".effectopacity");
		for(i=0;i<effectOpacityArray.length;i++){	
			var aux=effectOpacityArray.eq(i);
			aux.css('opacity', aux.attr("data-initialOpacity"));  //set the initial opacity
			}
	 
		// on mouse over we animate the image to  final opacity
		
		for(i=0;i<effectOpacityArray.length;i++){
			var aux=effectOpacityArray.eq(i);
			aux.mouseover(function(){
		    var finalOpacity = $(this).attr("data-finalOpacity");
	        $(this).animate({
				opacity : finalOpacity},{queue:false, duration:transitionTimeGo});
				}); 
				   
		    // on mouse out we animate the image to  initial opacity	   
			aux.mouseout(function(){
		   var initialOpacity = $(this).attr("data-initialOpacity");
	        $(this).animate({
				opacity :initialOpacity},{queue:false, duration:transitionTimeGo});
			});
		}
		
    
//***************************************
//_____________ effectOverlay______________
//***************************************
		
		//load the overlay image that will not  be visible for the moment (opacity=0)
					
		
		 
		
		
		var effectOverlayArray = $(".effectoverlay");
		for (i = 0; i < effectOverlayArray.length; i++) {
			
			
		 effectOverlayArray.eq(i).wrap('<div class="overlay" style="position:relative; display:inline-block;"/>');
		 imageWidth = effectOverlayArray.eq(i).width();
		  imageHeight = effectOverlayArray.eq(i).height();
		  
		 var aux=$(".overlay").eq(i)
		  if(effectOverlayArray.eq(i)[0].nodeName==="A")
		  {
		  	imageWidth=effectOverlayArray.attr('width');
			imageHeight=effectOverlayArray.attr('height');
			
			var aux2=aux.find('.effectoverlay');
			aux2.append('<div class="overlayBg" style="position:absolute; top:0px; left:0px; background-color:#fff; width:' + imageWidth + 'px;height:' + imageHeight + 'px; opacity:0; filter:alpha(opacity=0);"></div>');	 // load overlay images	
		 	aux2.append("<img src='" + $(".effectoverlay").eq(i).attr("data-overlayImg") + " ' class='overlayImgs'/>");	 // load overlay images	
		 	
			aux=$(".overlay").eq(i).find('.effectoverlay');
		  }
		  else
		  {
		  	aux.append('<div class="overlayBg" style="position:absolute; top:0px; left:0px; background-color:#fff; width:' + imageWidth + 'px;height:' + imageHeight + 'px; opacity:0; filter:alpha(opacity=0);"></div>');	 // load overlay images	
		 	aux.append("<img src='" + $(".effectoverlay").eq(i).attr("data-overlayImg") + " ' class='overlayImgs'/>");	 // load overlay images	
		 	
		  }
		  
		  
		 
		 
		 $(".overlayImgs").eq(i).css({
				   		'position': 'absolute','left': (imageWidth/2 - overlaySize/2),'top':(imageHeight/2 - overlaySize/2),'opacity':0});
						
						
						// on mouse over we change the png file opacity(overlay image) to 1
			aux.mouseover(function(){
			var aux3=$(this).children()
		 	aux3.eq(1).animate({
		 			opacity: 0.3},  {queue: false, duration: transitionTimeGo})
		 	aux3.eq(2).animate({
		 			opacity: 1},  {queue: false, duration: transitionTimeGo})
			 	});
			
	 
	   	// on mouse out we change overlay image	opacity to 0   
			aux.mouseout(function(){
				var aux3=$(this).children()
			 	aux3.eq(1).animate({
			 			opacity: 0},  {queue: false, duration: transitionTimeGo})
			 	aux3.eq(2).animate({
			 			opacity: 0},  {queue: false, duration: transitionTimeGo})
				 	});
			   
		}
//***************************************				  	  
//_____________ effectMove______________
//***************************************
	 
	var effectMoveArray = $(".effectmove");
	effectMoveArray.wrap('<div class="imgdiv"/>');
		
	for(i=0; i<effectMoveArray.length; i++){
	var auxcon = effectMoveArray.eq(i);
     w  = auxcon.attr("data-divWidth"); 
	 h = auxcon.attr("data-divHeight"); 
	 
	
	auxcon.appendTo($(".imgdiv").eq(i))
      $(".imgdiv").eq(i).css({
	  	//'width': w + 'px','height': h + 'px',
		'width': Number(w), 'height' : Number(h),
		'display' : 'inline-block',
		'position':'relative', 'overflow':'hidden'
	  })
	  }	  	  
		     
	for (i = 0; i < effectMoveArray.length; i++){  	
	var aux=effectMoveArray.eq(i);
	   var auxcenter = -(aux.width() - w) * 0.5;
	   var auxright = auxcenter*2;
	   var auxcenter2 = -(aux.height() - h) * 0.5;
	   var auxright2 =auxcenter2*2;
	   var initPosition = aux.attr("data-initialPosition");
	if(initPosition=="topLeft")
			  {left = 0;top = 0 ;}  
    if(initPosition=="topCenter")
			  { left = auxcenter;top = 0 ;}  
	if(initPosition=="topRight")
			  { left = auxright ;top = 0 ;}  
	if(initPosition=="middleLeft")
			  { left = 0;top = auxcenter2 ;}  
	if(initPosition=="middleCenter")
			  { left = auxcenter ;top = auxcenter2 ;}  
	if(initPosition=="middleRight")
			  { left = auxright ;top = auxcenter2 ;}  
	if(initPosition=="bottomLeft")
			  { left = 0 ;top = auxright2 ;}  
	if(initPosition=="bottomCenter")
			  { left = auxcenter ;top = auxright2 ;}  
	if(initPosition=="bottomRight")
			  { left = auxright ;top = auxright2 ;}  
			  
			aux.css({
				'top' : top,'left' : left,'position':'absolute'});
		  }
	
		   //_____________________________initialPosition______________________________________

	effectMoveArray.mouseout(function(){
		
		var auxt=$(this);
	auxcenter = -(auxt.width() - auxt.attr("data-divWidth")) * 0.5;
    auxright = auxcenter*2;
	auxcenter2 = -(auxt.height() - auxt.attr("data-divHeight")) * 0.5;
	auxright2 =auxcenter2*2;  
	var initialPosition  = auxt.attr("data-initialPosition");
	
	if(initialPosition== "topLeft"){auxt.animate({left:0,top:0 },{queue:false, duration:transitionTimeGo})}
	if(initialPosition=="topCenter"){auxt.animate({left:auxcenter,top:0},{queue:false, duration:transitionTimeGo})}
	if(initialPosition=="topRight"){auxt.animate({left:auxright,top:0},{queue:false, duration:transitionTimeGo})}	
	if(initialPosition=="middleLeft"){auxt.animate({left:0,top:auxcenter2},{queue:false, duration:transitionTimeGo})}
	if(initialPosition=="middleCenter"){auxt.animate({left:auxcenter,top:auxcenter2},{queue:false, duration:transitionTimeGo})}
	if(initialPosition=="middleRight"){auxt.animate({left:auxright,top:auxcenter2},{queue:false, duration:transitionTimeGo})}
	if(initialPosition=="bottomLeft"){auxt.animate({left:0,top:auxright2},{queue:false, duration:transitionTimeGo})}
	if(initialPosition=="bottomCenter"){auxt.animate({left:auxcenter,top:auxright2},{queue:false, duration:transitionTimeGo})}
	if(initialPosition=="bottomRight"){auxt.animate({left:auxright,top:auxright2},{queue:false, duration:transitionTimeGo})}	   
	   });
	   
	        //____________________finalPosition________________________________________________	
	 
    effectMoveArray.mouseover(function(){
    	
    	var auxt=$(this);
	auxcenter = -(auxt.width() - auxt.attr("data-divWidth")) * 0.5;
	auxright = auxcenter*2;
	auxcenter2 = -(auxt.height() - auxt.attr("data-divHeight")) * 0.5;
	auxright2 =auxcenter2*2; 
	
	var finalPosition = auxt.attr("data-finalPosition");
		  
	if(finalPosition=="topLeft"){auxt.animate({left:0,top:0},{queue:false,duration:transitionTimeGo,easing:easingType})}
    if(finalPosition=="topCenter"){auxt.animate({left:auxcenter,top:0},{queue:false,duration:transitionTimeGo,easing:easingType})}
	if (finalPosition == "topRight"){auxt.animate({left: auxright,top: 0},{queue:false,duration:transitionTimeGo,easing:easingType})}
	if(finalPosition=="middleLeft"){auxt.animate({left:0,top:auxcenter2},{queue:false,duration:transitionTimeGo,easing:easingType})}
	if(finalPosition=="middleCenter"){auxt.animate({left:auxcenter,top:auxcenter2},{queue:false,duration:transitionTimeGo,easing:easingType})}
	if(finalPosition=="middleRight"){auxt.animate({left:auxright,top:auxcenter2},{queue:false,duration:transitionTimeGo,easing:easingType})}
	if(finalPosition=="bottomLeft"){auxt.animate({left:0,top:auxright2},{queue:false,duration:transitionTimeGo,easing:easingType})}
	if(finalPosition=="bottomCenter"){auxt.animate({left:auxcenter,top:auxright2},{queue:false,duration:transitionTimeGo,easing:easingType})}
	if(finalPosition=="bottomRight"){auxt.animate({left:auxright,top:auxright2},{queue:false,duration:transitionTimeGo,easing:easingType})}
	});			 	
//_________________________________________________________________________________________



//***************************************
//_________effectdoor_________________
//***************************************

for(i=0;i<$(".effectdoor").length;i++){
	var aux=$(".effectdoor").eq(i);
	imageWidth = aux.attr('width');
	imageHeight = aux.attr('height');
	var contentDiv=aux.find(".doorcontent").html();
	aux.find(".doorcontent").remove();
	var tempDiv = aux.html();
	
	
	aux.wrap('<div class="effectdoorcon"><div class="div_con_left" style="position:absolute; overflow:hidden; left:0px; width:' + Number(imageWidth/2) + 'px;height:' + Number(imageHeight) + 'px"><div class="div_main_left" style="width:400px"></div></div></div>')
	
	var auxcon=$(".effectdoorcon").eq(i);
	auxcon.append('<div class="div_con_right" style="position:absolute; overflow:hidden; left:' + Number(imageWidth/2) + 'px; width:' + Number(imageWidth/2) + 'px;height:' + Number(imageHeight) + 'px"><div class="div_main_right" style="position:absolute; overflow:hidden; width:' + Number(imageWidth/2) + 'px;height:' + Number(imageHeight) + 'px"><div class="effectdoorclone" style="position:absolute; left:-' + Number(imageWidth/2) + 'px;">' + tempDiv + '</div></div></div><div class="doorcontent">'  + contentDiv + '</div>')
	auxcon.css({
		'position':'relative',
		'display' : 'inline-block',
		'float' : 'left',
		'height': imageHeight + 'px',
		'width': imageWidth + 'px',
		'overflow':'hidden'
	})
	
	auxcon.mouseenter(function(){
		var auxt=$(this);
		var auxr=auxt.find('.div_con_right');
		tempLeft=auxr.css('left');
		
		
		auxt.find('.div_con_left').animate({
			'left' :("-" + auxr.css('width'))
		},{			queue: false,			duration: transitionTimeGo		});
		
		auxr.animate({
			'left' :(Number((auxr.css('width')).slice(0,(auxr.css('width')).length-2)) * 2)
		},{			queue: false, easing: "linear",			duration: transitionTimeGo		});
	})
	auxcon.mouseleave(function(){
		var auxt=$(this);
		var auxr=auxt.find('.div_con_right');
		tempLeft=auxr.css('left');
		
		$(this).find('.div_con_left').animate({
			'left' :0
		},{			queue: false,			duration: transitionTimeGo		});
		auxr.animate({
			'left' :(auxr.css('width'))
		},{			queue: false, easing: "linear",			duration: transitionTimeGo		});
	})
}

//***************************************
//_________effectzoom_________________
//***************************************
for (i = 0; i < $(".effectzoom").length; i++) {
	var auxcon=$(".effectzoom").eq(i);
	auxcon.wrap('<div class="effectzoomcon" style="display:inline-block; position:relative;"></div>')
	var aux=i;
	totalWidth[aux]=auxcon.width();
		totalHeight[aux]=auxcon.height();
		$(".effectzoomcon").eq(aux).css({
			'width' : totalWidth[aux],
			'height' : totalHeight[aux]
		})
		
		auxcon.css({
			'position' : 'absolute'
		})
		
		auxcon.mouseover(function(){
		var auxt=$(this);
		var thisIndex=$(".effectzoom").index($(this));
		auxt.animate({
			'width' : totalWidth[thisIndex] + zoomSizeW,
			'height' : totalHeight[thisIndex] + zoomSizeH,
			'left' : -zoomSizeW*0.5,
			'top' : -zoomSizeH*0.5
		},{	queue: false, duration: transitionTimeGo})
		auxt.css('z-index',999)
		})
		auxcon.mouseout(function(){
		var auxt=$(this);
		var thisIndex=$(".effectzoom").index($(this));
		
		auxt.animate({
			'width' : totalWidth[thisIndex],
			'height' : totalHeight[thisIndex],
			'left' : 0,
			'top' : 0
		},{	queue: false, duration: transitionTimeGo})
		auxt.css('z-index',998)
		})
	
	
}
	


            return this;

		}); // end each
	}

})(jQuery);



jQuery(window).load(function() {
  if (jQuery.browser.safari && document.readyState != "complete"){
    console.info('done');
    setTimeout( arguments.callee, 120 );
    return;
  } 
 jQuery('body').imageEffects({
	 
 })
})

