$(function(){
	$.fn.jq_z_zoom=function(options){
		var settings={
			win_id:'jq_z_zoom_win',		//id of zoom block
			img_id:'jq_z_zoom_img',		//id of zoom image
			curs_id:'jq_z_zoom_curs',	//id of cursor
			h_pr:0,
			v_pr:0,
			h_pred:0,
			v_pred:0,
			img_w:0,
			img_h:0,
			lnk_w:0,
			lnk_h:0,
			curs_w:0,
			curs_h:0
		};
		if(options){$.extend(settings, options);}
		$.fn.extend({
			construct:function(lnk,set){
				if($(lnk).children('img').width()>50) set.lnk_w=$(lnk).children('img').width();
				if($(lnk).children('img').height()>50) set.lnk_h=$(lnk).children('img').height();
				if($(lnk).next().children('img').width()>50) set.img_w=$(lnk).next().children('img').width();
				if($(lnk).next().children('img').height()>50) set.img_h=$(lnk).next().children('img').height();
				var lnk_next_width=$(lnk).next().width();
				var lnk_next_height=$(lnk).next().height();
				$(lnk).css({width:set.lnk_w, height:set.lnk_h});
				set.h_pr=set.img_w-lnk_next_width;
				set.v_pr=set.img_h-lnk_next_height;
				set.curs_w=Math.round(lnk_next_width/(set.img_w/set.lnk_w));
				set.curs_h=Math.round(lnk_next_height/(set.img_h/set.lnk_h));
				$(lnk).children('.'+settings.curs_id).css({
					width:set.curs_w,
					height:set.curs_h
				});
				if($.browser.opera||$.browser.safari){
					set.h_pred=set.lnk_w-set.curs_w;
					set.v_pred=set.lnk_h-set.curs_h;
				}else{
					set.h_pred=set.lnk_w-set.curs_w-2;
					set.v_pred=set.lnk_h-set.curs_h-2;
				}
				$.fn.drawDefault(lnk,set);
				return;
			},
			loadImage:function(lnk){
				$('body').append('<div style="display:none;" class="jqPrelImg"><img src=\"'+$(lnk).attr("href")+'\"></div>');
				return;
			},
			draw_img:function(lnk,set,evnt){
				var curs_left=$(lnk).get(0).offsetLeft;
				var curs_top=$(lnk).get(0).offsetTop;
				$(lnk).parents().each(
					function(){
						curs_left+=this.offsetLeft;
						curs_top+=this.offsetTop;
					}
				);
				curs_left=$.fn.getMouseX(evnt)-curs_left-Math.floor(set.curs_w/2);
				curs_top=$.fn.getMouseY(evnt)-curs_top-Math.floor(set.curs_h/2)+50;
				if((curs_left>=0)&&(curs_left<=set.h_pred)){
					$(lnk).children('.'+set.curs_id).css({left:curs_left+'px'});
					$(lnk).next().children('img.'+set.img_id).css({left:'-'+Math.round(set.img_w/set.lnk_w*curs_left)+'px'});
				}else if(curs_left<0){
					$(lnk).children('.'+set.curs_id).css({left:'0px'});
					$(lnk).next().children('img.'+set.img_id).css({left:'0px'});
				}else{
					$(lnk).children('.'+set.curs_id).css({left:set.h_pred+'px'});
					$(lnk).next().children('img.'+set.img_id).css({left:'-'+set.h_pr+'px'});
				}
				if((curs_top>=0)&&(curs_top<=set.v_pred)){
					$(lnk).children('.'+set.curs_id).css({top:curs_top+'px'});
					$(lnk).next().children('img.'+set.img_id).css({top:'-'+Math.round(set.img_h/set.lnk_h*curs_top)+'px'});
				}else if(curs_top<0){
					$(lnk).children('.'+set.curs_id).css({top:'0px'});
					$(lnk).next().children('img.'+set.img_id).css({top:'0px'});
				}else{
					$(lnk).children('.'+set.curs_id).css({top:set.v_pred+'px'});
					$(lnk).next().children('img.'+set.img_id).css({top:'-'+set.v_pr+'px'});
				}
				return;
			},
			getMouseX:function (e) {
				if($.browser.msie){
					tempX=e.clientX;
					if(parseInt($.browser.version)<7) tempX+=document.documentElement.scrollLeft+10;
				}else{tempX=e.pageX-window.scrollX;}
				if(tempX<0) tempX=0;
				return tempX;
			},		
			getMouseY:function (e) {
				if($.browser.msie){
					tempY=e.clientY;
					if(parseInt($.browser.version)<7) tempY+=document.documentElement.scrollTop;
				}else{tempY=e.pageY-window.scrollY;}  
				if(tempY<0) tempY=0;
				return tempY;
			},
			drawDefault:function(lnk,set){
				$(lnk).children('.'+set.curs_id).css({left:parseInt(set.h_pred/2)+'px'});
				$(lnk).children('.'+set.curs_id).css({top:parseInt(set.v_pred/2)+'px'});
				$(lnk).next().children('img.'+set.img_id).css({left:'-'+Math.abs(parseInt(set.h_pr/2))+'px'});
				$(lnk).next().children('img.'+set.img_id).css({top:'-'+Math.abs(parseInt(set.v_pr/2))+'px'});
				return;
			}
		});
		this.click(function(event){event.preventDefault();});
		$.fn.loadImage(this);
		if(!$('.'+settings.win_id).length) this.after('<div class="'+settings.win_id+'"><img src="'+this.attr('href')+'" class="'+settings.img_id+'" alt="" /></div>');
		if(!$('.'+settings.curs_id).length) this.append('<span class="'+settings.curs_id+'"><!----></span>');
		$('#lightbox_2_big').show();
		$.fn.construct(this,settings);
		$('#lightbox_2_big').hide();
		
		this.bind("mouseenter",function(event){
			$.fn.construct(this,settings);
		}).bind("mouseleave",function(){
			$.fn.drawDefault(this,settings);
		}).mousemove(function(event){
			$.fn.draw_img(this,settings,event);
		});
	}
});