/*

    Title:          jzoom.js
    Author:         3rd party JS plug-in
    Date Created:   14/04/08

    Synopsis:       click - zoom library for JQuery

    Last Mod:       15/04/08 GH

*/

(function($)
{
    $.fn.jqueryzoom = function(options){var settings = {xzoom:287, yzoom:371, offset:7, position:"right", lens:1, preload:1};
    
    if(options)
	    $.extend(settings, options);

	var noalt='';

	$(this).hover(function()
	{        
	   
	    var imageLeft = $(this).offset().left;                
	    var imageTop = $(this).offset().top;
        var imageWidth = $(this).children('img').get(0).offsetWidth;
	    var imageHeight = $(this).children('img').get(0).offsetHeight;
        var bigimage = $(this).children("img").attr("jqimg");
        
        noalt= $(this).children("img").attr("alt");
        $(this).children("img").attr("alt",'');

	    if($("div.zoomdiv").get().length == 0)
	    {
	        $(this).after("<div class='zoomdiv'><img class='bigimg' src='"+bigimage+"' style='cursor:crosshair;'/></div>");
	        $(this).append("<div class='jqZoomPup' style='cursor:crosshair;'>&nbsp;</div>");
	    }

	    if(settings.position == "right")
	    {
            if(imageLeft + imageWidth + settings.offset + settings.xzoom > screen.width)
                leftpos = imageLeft  - settings.offset - settings.xzoom;
            else
	            leftpos = imageLeft + imageWidth + settings.offset;
	    }
	    else
	    {
	        leftpos = imageLeft - settings.xzoom - settings.offset;
	        
	        if(leftpos < 0)
                leftpos = imageLeft + imageWidth  + settings.offset;
	    }

	    $("div.zoomdiv").css({ top: imageTop,left: leftpos });
	    $("div.zoomdiv").width(settings.xzoom);
	    $("div.zoomdiv").height(settings.yzoom);

        if(!settings.lens)
            $(this).css('cursor','crosshair');

		$(document.body).mousemove(function(e)
		{
            mouse = new MouseEvent(e);
            
            var bigwidth = $(".bigimg").get(0).offsetWidth;
            var bigheight = $(".bigimg").get(0).offsetHeight;
            var scaley ='x';
            var scalex= 'y';

            if(isNaN(scalex)|isNaN(scaley))
            {
		        var scalex = (bigwidth/imageWidth);
		        var scaley = (bigheight/imageHeight);

		        $("div.jqZoomPup").width((settings.xzoom)/scalex );
    		    $("div.jqZoomPup").height((settings.yzoom)/scaley);

                if(settings.lens)
                    $("div.jqZoomPup").css('visibility','visible');
			}

            xpos = mouse.x - $("div.jqZoomPup").width()/2 - imageLeft;
            ypos = mouse.y - $("div.jqZoomPup").height()/2 - imageTop ;

            if(settings.lens)
            {
                xpos = (mouse.x - $("div.jqZoomPup").width()/2 < imageLeft ) ? 0 : (mouse.x + $("div.jqZoomPup").width()/2 > imageWidth + imageLeft ) ?  (imageWidth -$("div.jqZoomPup").width() -2)  : xpos;
			    ypos = (mouse.y - $("div.jqZoomPup").height()/2 < imageTop ) ? 0 : (mouse.y + $("div.jqZoomPup").height()/2  > imageHeight + imageTop ) ?  (imageHeight - $("div.jqZoomPup").height() -2 ) : ypos;
            }

            if(settings.lens)
                $("div.jqZoomPup").css({ top: ypos,left: xpos });

			scrolly = ypos;
			$("div.zoomdiv").get(0).scrollTop = scrolly * scaley;
			scrollx = xpos;
			$("div.zoomdiv").get(0).scrollLeft = (scrollx) * scalex ;
		    });
		    },function()
		    {
                $(this).children("img").attr("alt",noalt);
                $(document.body).unbind("mousemove");
                
                if(settings.lens)
                    $("div.jqZoomPup").remove();
                    
		    $("div.zoomdiv").remove();
		});

        count = 0;

		if(settings.preload)
		{
		    $('body').append("<div style='display:none;' class='jqPreload"+count+"'>sdsdssdsd</div>");

		    $(this).each(function()
		    {
                var imagetopreload= $(this).children("img").attr("jqimg");
                var content = jQuery('div.jqPreload'+count+'').html();

                jQuery('div.jqPreload'+count+'').html(content+'<img src=\"'+imagetopreload+'\">');
		    });
		}
	}
})(jQuery);

function MouseEvent(e)
{
    this.x = e.pageX;
    this.y = e.pageY;
}


