(function(a){jQuery.fn.imageNavigator=function(b){return this.each(function(){this.options={areaWidth:500,areaHeight:500,defaultnavWidth:150,draggerStyle:"2px dotted red",navOpacity:0.8,loaderUrl:"loading.gif",additionalContenet:""};a.extend(this.options,b);b=this.options;var N=this;var y,g,M,i,w,G,p,h,s,P,L,O,U,v,E,J,t,r,Q,n=0,K=false,l,j;a(N).css({width:N.options.areaWidth});var f=a(N).find(".imagesContainer");a(N).empty();if(a.metadata){a.metadata.setType("class");a(f).each(function(){if(a(this).metadata().imageUrl){a(this).attr("imageUrl",a(this).metadata().imageUrl)}if(a(this).metadata().navPosition){a(this).attr("navPosition",a(this).metadata().navPosition)}if(a(this).metadata().navWidth){a(this).attr("navWidth",a(this).metadata().navWidth)}if(a(this).metadata().NavCoordinates){a(this).attr("NavCoordinates",a(this).metadata().NavCoordinates)}})}var x=a(f[0]).attr("imageUrl");var V=a(f[0]).attr("navPosition");var D=a(f[0]).attr("navWidth")?a(this).attr("navWidth"):N.options.defaultnavWidth;var e=a(f).find(".title");var A=a(f).find(".description");var d=a(f).find(".additionalContent");a(N).append("<div class='imageContainer'></div>");p=a(N).find(".imageContainer");a(p).css({overflow:"hidden",position:"relative",width:this.options.areaWidth+"px",height:this.options.areaHeight+"px"});var z="<table id='loader' style='display:none;' cellpadding='0' cellspacing='0' width='100%' height='100%'><tr><td valign='middle' align='center'><center><img src='"+N.options.loaderUrl+"' alt='loading'></center></td></tr></table>";a(p).append(z);a(N).prepend("<div class='imagesIndex'></div>");var T=a(N).find(".imagesIndex");a(T).css({position:"relative",width:this.options.areaWidth,padding:"0"});a(T).append(e);var m=true;a(e).each(function(W){a(this).click(function(){if(!m){return}n=W;m=false;x=a(f[W]).attr("imageUrl");V=a(f[W]).attr("navPosition");D=a(f[W]).attr("navWidth")?a(f[W]).attr("navWidth"):N.options.defaultnavWidth;if(a(f[W]).attr("NavCoordinates")){l=a(f[W]).attr("NavCoordinates").split(",")[0];j=a(f[W]).attr("NavCoordinates").split(",")[1]}if(i){a(i).fadeOut(500,function(){S(x)})}else{S(x)}})});a(N).append("<div class='descriptionBox'></div>");var q=a(N).find(".descriptionBox");a(q).html(A[0]);function S(W){E=null;Q=null;if(M){a(M).remove()}a(e).each(function(Y){if(Y==n){a(this).addClass("selected")}else{a(this).removeClass("selected")}});E=D;var X=new Image();X.src=null;W=W+"?rdm="+Math.random();X.src=W;X.onload=function(){c(W)};X.onerror=u;a("#loader").fadeIn(500)}function u(){alert("non riesco a caricare: "+this.src)}function c(W){h=a(p).width();s=a(p).height();a("#loader").fadeOut(500,function(){m=true});a(e).bind("click",function(){return true});a(p).click(function(){if(a.browser.msie){a(v).show()}else{a(v).show()}});a(p).append("<div class='applContainer'></div>");M=a(N).find(".applContainer");a(M).css({position:"relative",height:a(p).height()});a(M).append("<div class='draggableElement'></div>");g=a(M).find(".draggableElement");a(g).append("<image class='navImage' usemap='#CzeposMap'>");i=a(g).find(".navImage");a(g).append("<div class='additionalContent'></div>");y=a(g).find(".additionalContent");a(y).css({position:"absolute",top:"0"});a(g).css({position:"absolute"});a(q).html(A[n]);a(y).html(d[n]);a(i).attr("src",W);a(i).hide();G=a(i).outerHeight();w=a(i).outerWidth();a(i).fadeIn(1000,function(){var Y,X;if(!a(f[n]).attr("NavCoordinates")){Y=-(G/2-(a(v).height()*3));X=-(w/2-(a(v).width()*3))}else{Y=-(j-(a(p).height()/2));X=-(l-(a(p).width()/2));if(Y>0){Y=0}if(X>0){X=0}}a(g).animate({top:Y,left:X},500,"linear");F(X,Y)});a(g).draggable({containment:[a(p).offset().left-w+a(p).outerWidth(),a(p).offset().top-G+a(p).outerHeight(),a(p).offset().left,a(p).offset().top],start:function(){a(g).css({cursor:"move"})},stop:function(Y,X){F(X.position.left,X.position.top);a(g).css({cursor:"default"});a(v).show()}});a(M).append("<div class='nav'></div>");v=a(N).find(".nav");a(v).css({position:"absolute",opacity:N.options.navOpacity});a(v).append("<div id='navLocator'></div>");P=a(N).find("#navLocator");a(P).css({zIndex:10000,position:"absolute",border:N.options.draggerStyle,backgroundColor:a.browser.msie?"white":"transparent",opacity:a.browser.msie?0.5:1});a(P).draggable({containment:"parent",start:function(){a(P).css({cursor:"move"})},drag:function(Y,X){o(X.position.left,X.position.top)},stop:function(){a(P).css({cursor:"default"})}});a(v).append("<image class='navigationThumb'>");L=a(N).find(".navigationThumb");a(L).attr("src",W);t=G<w;r=s<h;Q=G/J;I()}function C(){if(!K){P.oldX=a(P).css("left");P.oldY=a(P).css("top");g.oldX=a(g).css("left");g.oldY=a(g).css("top");var X=((E*s)/J)<h;if(X){a(i).css("width",h)}else{a(i).css("height",s)}K=true;a(P).css("top",0);a(P).css("left",0);a(g).css("top",0);a(g).css("left",0);a(g).bind("mousemove",N.doNothing=function(){return false});a(y).hide()}else{a(i).width("");a(i).height("");K=false;a(g).css("top",g.oldY);a(g).css("left",g.oldX);a(P).css("top",P.oldY);a(P).css("left",P.oldX);a(g).unbind("mousemove",N.doNothing);a(y).show()}I();var W=a(P).offsetLeft;var Y=a(P).offsetTop;o(W,Y)}function o(W,Z){Q=G/J;var Y=-(arguments[0]+1)*Q;var X=-(arguments[1]+1)*Q;a(g).css("top",X);a(g).css("left",Y)}function F(W,Z){Q=G/J;var Y=-(arguments[0]+1)/Q;var X=-(arguments[1]+1)/Q;a(P).css({top:X,left:Y})}function H(){E=!E?h/4:E;J=(E*G)/w;a(L).height(parseFloat(J));O=a(L).width();U=a(L).height()}function R(){a(P).width((h*E)/w);a(P).height((s*J)/G)}function k(){switch(V){case"TL":a(v).css("left",0);a(v).css("top",0);break;case"TR":a(v).css("top",0);a(v).css("left",(h-O));break;case"BL":a(v).css("top",(s-U));break;case"BR":a(v).css("left",(h-O));a(v).css("top",(s-U));break;default:var W=(a(p).width())-O;a(v).css("left",W);break}}function I(){h=a(p).width();s=a(p).height();r=s<h;G=a(i).height();w=a(i).width();H();R();k()}function B(){if(!i){return}a(i).width("");a(i).height("");if(a.browser.msie){a(v).show()}else{a(v).fadeIn(500)}p.oldW=a(p).css("width");p.oldH=a(p).css("height");p.style.width=a(window).outerWidth();a(window).bind("resize",function(){B()});I()}S(x)})};jQuery.fn.extend({getMouseX:function(c){var b;if(a.browser.msie){b=event.clientX+document.body.scrollLeft}else{b=c.pageX}if(b<0){b=0}return b},getMouseY:function(c){var b;if(a.browser.msie){b=event.clientY+document.body.scrollTop}else{b=c.pageY}if(b<0){b=0}return b}})})(jQuery);