
jQuery.fn.zoom = function(o){
	
	var s = {
		target     : '',
		active     : 'active',
		loadingDiv : 'loading',
		loadingImg : 'img/loading.gif',
		blankImg   : 'img/blank.gif',
		wrapperDiv : 'imgWrapper2',
		recursive  : ''
	};
	
	if (o) { jQuery.extend(s, o); }
	

	return this.each(function(i){

		var $anchor   = jQuery(this);

		if (s.target && i == 0 && !jQuery('#'+s.target).find('#'+s.wrapperDiv).length) {
			$startImg = jQuery('#'+s.target).find('img');
			$startImg.wrap('<div id="'+s.wrapperDiv+'"></div>');
			
			jQuery('#'+s.target).append('<div id="'+s.loadingDiv+'"><img src="'+s.blankImg+'" /></div>').children('#'+s.loadingDiv).hide();
		}
		
		$anchor.bind('click', changeImage);
		
	});
	
	
	function changeImage(){

		var $a    = jQuery(this);
		var $wrap = jQuery('#'+s.target).children('#'+s.wrapperDiv);
		var $img  = $wrap.children('img');
		var url   = $a.attr('href');
		var $p    = jQuery('#'+s.target).parent().find('p');
		
		$p.slideUp("slow");
		
		$wrap.fadeOut('slow', function(){
									   
			$('#'+s.loadingDiv).show();

			$.getJSON(url, {js : 1}, function(json){

				imgPreloader = new Image();
				
				imgPreloader.onload = function(){
					$img.attr('src', json.img);


					$('#'+s.loadingDiv).fadeOut('slow', function(){
						$p.parent().append(json.text); 
						$p.remove();
						$wrap.fadeIn('slow');
						
						if (s.recursive) { jQuery(s.recursive).zoom(s); }
					});
				};
	
				imgPreloader.src = json.img;
				$img.attr('src', s.blankImg);
							
			});
			
		});
		
		return false;
	};
};
