// il CSS zoom per il controllo di bordo, colore ecc,    è nel file listAnnunciHelper.php !

(function($) {


	$.zoom = function(img, id, options)
	{
		var $img = $(img)
		$img.idZoom = 'jZoom'+id
		$offset = $img.offset();
		$('body').append('<img id="' + $img.idZoom + '" src="' + options.loadingImage + '">');
		$('#'+$img.idZoom).hide();
		$('#'+$img.idZoom)
				.css({
					  position: 'absolute'
					, left: $offset.left + 'px'
					, top: $offset.top + 'px'
				})
				;
		$img.preLoading = false
		$img.hover(preLoading, function() {} )

		
		function preLoading()
		{
			if (!$img.preLoading) {
				$img.preLoading = true
				$('#'+$img.idZoom)
					.css(options.cssOption)
					.show()
					;

				// Preload dell'immagine
				var src = $img.attr('src')
				$img.zoomImg = new Image()
				$img.zoomImg.src = src.replace('/t%23', '/');
				if ($img.zoomImg.complete) {
					preLoaded();
				} else {
					$img.zoomImg.onload = function() {
						preLoaded();
					};
				}
			}
		}
		

		function zoomOpen()
		{
			$img.mouseIn = true;		
			if (!$img.startAnimation) {
				$img.startAnimation = true
				$('#'+$img.idZoom).fadeIn(800, endOpenAnimation)
			}
		}
		
		function zoomClose()
		{
			$img.mouseIn = false;
			if (!$img.startAnimation) {
				$img.startAnimation = true
				$('#'+$img.idZoom).fadeOut(400, endCloseAnimation)
			}			
		}

		function endOpenAnimation()
		{
			$img.startAnimation = false
			if (!$img.mouseIn) {
				zoomClose()
			}
		}
		
		function endCloseAnimation()
		{
			$img.startAnimation = false
			if ($img.mouseIn) {
				zoomOpen()
			}
		}


		function preLoaded(newImg)
		{
			$img.startAnimation = false
			$img.hover(zoomOpen, function(){})
			$('#'+$img.idZoom)
				.hide()
				.hover(zoomOpen, zoomClose)	
				.attr('src', $img.zoomImg.src)
				;
			zoomOpen()
		}

	}

	
	$.fn.zoom = function(options)
	{
		options = options || {};
		options.cssOption = options.cssOption || {};
		options.loadingImage = options.loadingImage || '/loadingAnimation.gif';
		var id = 0
		this.each(function() {
			id++
			new $.zoom(this, id, options);
		});
	};
	
})(jQuery);

// il CSS zoom per il controllo di bordo, colore ecc,    è nel file listAnnunciHelper.php !
