(function($){
$.fn.zoomple = function(options) {  
	var timer; 
	options = jQuery.extend({ 
	 delay : 0,
	 zoomWidth : 300,
	 zoomHeight : 300,
	 offset : {x : 5,y : 5},
	 onZoomShow : function(){},
	 onZoomHide : function(){},
	 blankURL : 'images/blank.gif',
	 loaderURL : 'images/loader.gif'
	}, options|| {});   
	if(!Boolean($('#Previewholder').attr('id'))) {
		$('body').append('<div id="Previewholder"><img src="'+options['blankURL']+'" alt="" /></div>');
	}
	$.each($(this),function() {	
			var img = new Image(); 
			img.src = options['loaderURL'];
			$(this).find('img').hover(
				function(){  
					options['onZoomShow'];
					delaier($(this).attr('rel'),$(this).attr('alt'));		 
				},
				function(){
					options['onZoomHide'];
					clearTimeout(timer);
					$("#Previewholder img").attr('src',options['blankURL']);
					$("#Previewholder").css({"display" : "none"});	
			});
			$(this).find('img').mousemove(function(e){
				
				var x = ((e.pageX - $(this).offset().left) / $(this).width() )*100 ;
				var y =  ((e.pageY - $(this).offset().top) / $(this).height())*100; 
				$('#writer').html(x +" - "+ $(this).width() + " / " + y);
				thumbPosition = { left : ( e.pageX + options['offset']['x']), 
									top : ( e.pageY + options['offset']['y']), 
									right : ($(window).width() - ( e.pageX - options['offset']['x'])), 
									bottom : ($(window).height() - ( e.pageY - options['offset']['y']))}; 
				if(($(window).height() / 2) >= thumbPosition.top){
					$("#Previewholder").css({ 
												'top' :  thumbPosition.top + "px", 
												'bottom' :  "auto"
												});  
				}else{
					$("#Previewholder").css({ 
												'top' :  "auto", 
												'bottom' :  thumbPosition.bottom + "px"
												});  
				}
				if(($(window).width() / 2) >= thumbPosition.left){
					$("#Previewholder").css({
												'left' : thumbPosition.left + "px", 
												'right' :  "auto" 
												});  
				}else{
					$("#Previewholder").css({
												'left' : "auto", 
												'right' :  thumbPosition.right + "px" 
												});  
												}
				$("#Previewholder img").css({"backgroundPosition" : x +"% "+ y +"%"});  
			}); 
		});   
		function delaier(imgRefUrl,imgDescription)
		{	   
			function delaiedZoom()
			{  
				$("#Previewholder").css({"display" : "block"});	
				$("#Previewholder img").css({"width" : options['zoomWidth'] + "px","height" : options['zoomHeight'] + "px","background" : "black url(" + options['loaderURL'] +") 50% 50% no-repeat"});		
				  var objImagePreloader = new Image();
				  objImagePreloader.src = imgRefUrl;
				  if(objImagePreloader.complete){					
					$("#Previewholder img").css({"background" : "black url("+imgRefUrl+") 50% 50% no-repeat"});					
					//$("#Previewholder p").html(imgDescription);	  
				  }
				  else{
					objImagePreloader.onload = function() {	
						$("#Previewholder img").css({"background" : "black url("+imgRefUrl+") 50% 50% no-repeat"});					
						//$("#Previewholder p").html(imgDescription); 
					}
				  }
			}
			timer = setTimeout(delaiedZoom, options['delay']);
		}
}  
})(jQuery);
