/*
 * jQuery Zoom Plugin v 0.1
 * 
 *
 * Copyright (c) 2009 Atarimarket
 *
 * Date: 2009-08-19
 * 
 * Special Thanks: Yordan Stoev(http://yordanstoev.com/blog/zoomple-simple-jquery-plugin-for-image-zoom/)
 */
(function($){
	$.fn.zoomImage = function(options) {
		var timer;
		options = jQuery.extend({ 
			zoomWidth : 190,
			zoomHeight : 190,
			zoomMagin: 10,
			offset : {x : 0,y : 0},
			blankURL : '/common/js/jquery/images/zoom_blank.gif',
			source : 'href'
		}, options|| {});
		if(!Boolean($('#preview').attr('id'))) {
			$(this).append('<div id="preview"><div id="preview-inner"><img src="'+options['blankURL']+'" alt="" /></div></div>');
		}
		$.each($(this),function(){	
			var obj=$(this);			
			var res=$('#thum_pic',obj);
			var pos=res.offset();
			var l=pos.left;
			var r=pos.left+res.width();
			var t=pos.top;
			var b=pos.top+res.height();			
			var zw=options['zoomWidth']+options['zoomMagin'];
			var zh=options['zoomHeight']+options['zoomMagin'];
							
			var img=new Image;
	
			obj.click(function(){
				return false;
			});
			
			$(window).resize(function(){
				pos=res.offset();
				l=pos.left;
				r=pos.left+res.width();
				t=pos.top;
				b=pos.top+res.height();	
			});
			
			//画像表示
			obj.hover(
			function(){
				pos=res.offset();
				l=pos.left;
				r=pos.left+res.width();
				t=pos.top;
				b=pos.top+res.height();
				//
				img.src=$(this).attr('href');
				delaier($(this).attr('href'),$(this).attr('alt'));
			},
			function(){
				//clearTimeout(timer);
				$('#preview').fadeOut();
			});
			
			//レンズ機能
			obj.find('img').mousemove(function(e){
				var imgw=img.width-zw;
				var imgh=img.height-zh;
				
				var x = Math.round(((e.pageX-pos.left)/res.width())*(imgw));
				var y = Math.round(((e.pageY-pos.top)/res.height())*(imgh));
				var posx= -x+'px';
				var posy= -y+'px';
				
				if(e.pageX>=l && e.pageX<r){
					if(e.pageX<(l+(zw/2))){
						$('#preview').css({'left':(l)+'px'});
					}else if(e.pageX>(r-(zw/2))){
						$('#preview').css({'left':(r-zw)+'px'});
					}else{
						$('#preview').css({'left':(e.pageX-(zw/2))+'px'});
					}
				}
				if(e.pageY>=t && e.pageY<b){
					if(e.pageY<(t+(zh/2))){
						$('#preview').css({'top':(t)+'px'});
					}else if(e.pageY>(b-(zh/2))){
						$('#preview').css({'top':(b-zh)+'px'});
					}else{
						$('#preview').css({'top':(e.pageY-(zh/2))+'px'});
					}
				}
				preview_inner_img.css({'backgroundPosition' : posx+' '+posy});
				//$('#preview-inner img').css({'backgroundPosition' : posx+' '+posy});
				//$('#preview-inner img').css({'top' :posy,'left':posx});
			});
			var preview_inner_img = $('#preview-inner img');
		});   
		function delaier(imgRefUrl,imgDescription){	
			
			function delaiedZoom(){
				$('#preview img').css({'width':options['zoomWidth']+'px','height':options['zoomHeight']+'px'});	
				$('#preview img').css({'background':'url('+imgRefUrl+') 50% 50% no-repeat'}); 
				//$('#preview-inner img').attr("src", imgRefUrl);
				
			}
			delaiedZoom();
			$('#preview').fadeIn();
			//timer = setTimeout(delaiedZoom, 400);
			
		}
	}  
})(jQuery);
 