/*
  This plugin is developed by Yordan Stoev
  Homepage: http://yordanstoev.com/blog/zoomple-simple-jquery-plugin-for-image-zoom/
*/
(function($){
$.fn.zoomple = function(options) {  
  var timer; 
  options = jQuery.extend({ 
   delay : 5,
   zoomWidth : 500,
   zoomHeight : 350,
   offset : {x : 5,y : 5},
   onZoomShow : function(){},
   onZoomHide : function(){},
   loaderURL : 'http://www.miyama-shop.net/showcase/user_data/packages/miyama20090930/js_org/zoomple/loader.gif',
   blankURL : 'http://www.miyama-shop.net/showcase/user_data/packages/miyama20090930/js_org/zoomple/blank.gif',
   source : 'href'
  }, options|| {});   
  
  // Checks if the preview holder div was alread appended
  if(!Boolean($('#Previewholder').attr('id'))) {
    $('body').append('<div id="Previewholder"><img src="'+options['blankURL']+'" alt="" /> <p></p> </div>');
  }
  $.each($(this),function() { 
      var img = new Image(); 
      img.src = options['loaderURL'];

      $(this).find('img').hover(
        function(){             
        
          $("#viewer img").css({"display" : "none"});
          options.onZoomShow.call(this);
          if(options['source'] == 'href') delaier($(this).parent().attr('href'),$(this).attr('alt'));    
          else if(options['source'] == 'rel') delaier($(this).parent().attr('rel'),$(this).attr('alt'));     
        },
        function(){ 
          clearTimeout(timer);
          $("#Previewholder img").attr('src',options['blankURL']);
          $("#Previewholder p").html(''); 
          $("#Previewholder").css({"display" : "none"});
          options.onZoomHide.call(this);
          $("#viewer img").css({"display" : "block"});
      });



      var vieweroffset = $("#viewer").offset();

      $(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 ), 
                  top : ( e.pageY ), 
                  right : ($(window).width() - ( e.pageX - options['offset']['x'])), 
                  bottom : ($(window).height() - ( e.pageY - options['offset']['y']))}; 



/*
        if(($(window).height() +  $(window).scrollTop() - options['zoomHeight'] - options['offset']['y']) > thumbPosition.top){
          $("#Previewholder").css({ 
                        'top' :  (thumbPosition.top + options['offset']['y']) + "px" 
                        });  
        }else{
          $("#Previewholder").css({ 
                        'top' :  (thumbPosition.top - options['zoomHeight'] - options['offset']['y']) + "px"  
                        });  
        }
*/

          $("#Previewholder").css({
                        'left' : vieweroffset.left ,
                        'top' : vieweroffset.top
                        }).fadeIn("fast");  

        $("#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" : "#fff 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);
 
