;(function($){ // secure $ jQuery alias
/*******************************************************************************************/	
// jquery.event.hover.js - rev 5 
// Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)
// Liscensed under the MIT License (MIT-LICENSE.txt)
// http://www.opensource.org/licenses/mit-license.php
// Created: 2008-06-02 | Updated: 2008-07-30
/*******************************************************************************************/

//	USE THESE PROPERTIES TO CUSTOMIZE SETTINGS...

//	$.event.special.hover.delay = 100; 
//	Defines the delay (msec) while mouse is inside the element before checking the speed

//	$.event.special.hover.speed = 100; 
//	Defines the maximum speed (px/sec) the mouse may be moving to trigger the hover event

// save the old jquery "hover" method
$.fn._hover = $.fn.hover;

// jquery method 
$.fn.hover = function( fn1, fn2, fn3 ) {
	if ( fn3 ) this.bind('hoverstart', fn1 ); // 3 args
	if ( fn2 ) this.bind('hoverend', fn3 ? fn3 : fn2 ); // 2+ args
	return !fn1 ? this.trigger('hover') // 0 args 
		: this.bind('hover', fn3 ? fn2 : fn1 ); // 1+ args
	};	

// special event configuration
var hover = $.event.special.hover = {
	delay: 380, // milliseconds
	speed: 20, // pixels per second
	setup: function( data ){
		data = $.extend({ speed: hover.speed, delay: hover.delay, hovered:0 }, data||{} );
		$.event.add( this, "mouseenter mouseleave", hoverHandler, data );
		},
	teardown: function(){
		$.event.remove( this, "mouseenter mouseleave", hoverHandler );
		}
	};

// shared event handler
function hoverHandler( event ){
	var data = event.data || event;
	switch ( event.type ){
		case 'mouseenter': // mouseover
			data.dist2 = 0; // init mouse distance²
			data.event = event; // store the event
			event.type = "hoverstart"; // hijack event
			if ( $.event.handle.call( this, event ) !== false ){ // handle "hoverstart"
				data.elem = this; // ref to the current element
				$.event.add( this, "mousemove", hoverHandler, data ); // track the mouse
				data.timer = setTimeout( compare, data.delay ); // start async compare
				}
			break;
		case 'mousemove': // track the event, mouse distance² = x² + y²
			data.dist2 += Math.pow( event.pageX-data.event.pageX, 2 ) 
				+ Math.pow( event.pageY-data.event.pageY, 2 ); 
			data.event = event; // store current event
			break;
		case 'mouseleave': // mouseout
			clearTimeout( data.timer ); // uncompare
			if ( data.hovered ){ 
				event.type = "hoverend"; // hijack event
				$.event.handle.call( this, event ); // handle "hoverend"
				data.hovered--; // reset flag
				}
			else $.event.remove( data.elem, "mousemove", hoverHandler ); // untrack
			break;
		default: // timeout compare // distance² = x² + y²  = ( speed * time )²
			if ( data.dist2 <= Math.pow( data.speed*( data.delay/1e3 ), 2 ) ){ // speed acceptable
				$.event.remove( data.elem, "mousemove", hoverHandler ); // untrack
				data.event.type = "hover"; // hijack event
				if ( $.event.handle.call( data.elem, data.event ) !== false ) // handle "hover"
					data.hovered++; // flag for "hoverend"
				}
			else data.timer = setTimeout( compare, data.delay ); // async recurse
			data.dist2 = 0; // reset distance² for next compare
			break;
		}
	function compare(){ hoverHandler( data ); }; // timeout/recursive function
	};
	
/*******************************************************************************************/
})(jQuery); // confine scope

/* 
 * NitroSell Product Image Hover previewer 
 * Author: jerry walsh
 * DateCreated: Sat, 06 Nov 2010
 */
(function($) {
  $(document).click(function() {
      $('#imagepopper').empty().hide();
    });
  $(document).ready(function() {
    $('img.image-thumb').bind("mouseenter", function() {
      $('#imagepopper').empty().hide();
});
    $('img.image-thumb').hover(function(e) {
      if ($('#imagepopper').length==0) {
        $(document.body).append( $('<div id="imagepopper"></div>').css({
          position: "absolute",
          border: "1px solid #ccc",
          zIndex : 90
        }));
      }

      var sFullImgSrc = $(this).attr("src").replace(/\/thumb-/, "/");
      $('#imagepopper').hide().empty();
        $("<img border='0' />").load(function() {
          $('#imagepopper').html(this);
          // gah.. a work around for IE and other painful browsers..
          tmpImg = new Image();
          tmpImg.src = (this.getAttribute ? this.getAttribute("src") : false) || this.src;
          ih = tmpImg.height;
          iw = tmpImg.width;
          tmpImg = null // gc
          cy = (e.pageY - $(window).scrollTop())
          cx = (e.pageX - $(window).scrollLeft())
          wh = $(window).height();
          ww = $(window).width();
          offset = 10;
          //alert(ih+' and '+iw+' and '+cx+' and cy '+cy);
          y = (cy > (wh/2)) ? e.pageY-ih-offset  : e.pageY+offset;
          x = (cx > (ww/2)) ? e.pageX-iw-offset : e.pageX+offset;
          $('#imagepopper').html(this).css({
            backgroundColor: "#fff",
            top: y,
            height: ih,
            width: iw,
            left: x
          }).show();
        }).attr("src", sFullImgSrc);
    }, function() {
      $('#imagepopper').empty().hide();
    }).find("img").attr("title","");
  });
})(nsc);

