(function($) {	
	$.nxsShowZoomImage = function(menuObj, aOptions){
		var $oObject 		= $(menuObj);
		var $aOptions		= aOptions;
		var $oImage			= null;		
		var $sMouseX		= 0;
		var $sMouseY		= 0;
		var IE = document.all?true:false;
		if (!IE) document.captureEvents(Event.MOUSEMOVE)
		
		var $blIsOpen		= false;
		
		init();		
		
		function _showImage() {
			$("#"+$aOptions.zoomDiv).html("<img src=\""+$oImage.src+"\" />");
			$("#"+$aOptions.zoomDiv).css('position', 'absolute');
			$("#"+$aOptions.zoomDiv).css('z-index', '5000');
			$("#"+$aOptions.zoomDiv).css('top', $sMouseY+10);
			$("#"+$aOptions.zoomDiv).css('left', $sMouseX+10);
			$("#"+$aOptions.zoomDiv).show();
			$blIsOpen = true;
		}
		
		function _hideImage() {
			$("#"+$aOptions.zoomDiv).hide();
			$blIsOpen = false;
		}
							
		function init() {
		
			$oObject.unbind("mousemove").mousemove(getMouseXY);
			$oObject.unbind("hover").hover(_showImage, _hideImage);			
			
			$oImage = new Image();
			$oImage.src = $oObject.attr('href');
		}
		
		function getMouseXY(e)
		{
			if (IE)
			{
				// grab the x-y pos.s if browser is IE
				$sMouseX = event.clientX + document.body.scrollLeft;
				$sMouseY = event.clientY + document.body.scrollTop;
			}
			else
			{
				// grab the x-y pos.s if browser is NS
				$sMouseX = e.pageX;
				$sMouseY = e.pageY;
			}
			if ($sMouseX < 0)
			{
				$sMouseX = 0;
			}
			if ($sMouseY < 0)
			{
				$sMouseY = 0;
			}
			
			if ($blIsOpen) {
				$("#"+$aOptions.zoomDiv).css('top', $sMouseY+10);
				$("#"+$aOptions.zoomDiv).css('left', $sMouseX+10);
			}
			return true;
		}
	}
	
	
	$.fn.nxsShowZoomImage = function(aOptions){
		aOptions = aOptions || {};
		aOptions.zoomDiv = aOptions.zoomDiv || 'zoomDiv';
				
				
		this.each(function() {
			new $.nxsShowZoomImage(this, aOptions);
		});
	}
	
})(jQuery);
