forked from kemayo/maphilight
-
Notifications
You must be signed in to change notification settings - Fork 1
/
jquery.maphilight.min.js
1 lines (1 loc) · 4.34 KB
/
jquery.maphilight.min.js
1
(function(F){var B,C,J,L,K,I,G,E,H,A;B=document.namespaces;has_canvas=document.createElement("canvas");has_canvas=has_canvas&&has_canvas.getContext;if(!(has_canvas||B)){F.fn.maphilight=function(){return this};return }if(has_canvas){G=function(O,N,M){if(N<=1){O.style.opacity=N;window.setTimeout(G,10,O,N+0.1,10)}};E=function(M){return Math.max(0,Math.min(parseInt(M,16),255))};H=function(M,N){return"rgba("+E(M.substr(0,2))+","+E(M.substr(2,2))+","+E(M.substr(4,2))+","+N+")"};C=function(M){var N=F('<canvas style="width:'+M.width+"px;height:"+M.height+'px;"></canvas>').get(0);N.getContext("2d").clearRect(0,0,N.width,N.height);return N};J=function(P,M,S,O,N){var R,Q=P.getContext("2d");Q.beginPath();if(M=="rect"){Q.rect(S[0],S[1],S[2]-S[0],S[3]-S[1])}else{if(M=="poly"){Q.moveTo(S[0],S[1]);for(R=2;R<S.length;R+=2){Q.lineTo(S[R],S[R+1])}}else{if(M=="circ"){Q.arc(S[0],S[1],S[2],0,Math.PI*2,false)}}}Q.closePath();if(O.fill){Q.fillStyle=H(O.fillColor,O.fillOpacity);Q.fill()}if(O.stroke){Q.strokeStyle=H(O.strokeColor,O.strokeOpacity);Q.lineWidth=O.strokeWidth;Q.stroke()}if(O.fade){G(P,0)}};L=function(M,N){M.getContext("2d").clearRect(0,0,M.width,M.height)}}else{C=function(M){return F('<var style="zoom:1;overflow:hidden;display:block;width:'+M.width+"px;height:"+M.height+'px;"></var>').get(0)};J=function(N,Q,R,U,M){var S,T,O,P;S='<v:fill color="#'+U.fillColor+'" opacity="'+(U.fill?U.fillOpacity:0)+'" />';T=(U.stroke?'strokeweight="'+U.strokeWidth+'" stroked="t" strokecolor="#'+U.strokeColor+'"':'stroked="f"');O='<v:stroke opacity="'+U.strokeOpacity+'"/>';if(Q=="rect"){P=F('<v:rect name="'+M+'" filled="t" '+T+' style="zoom:1;margin:0;padding:0;display:block;position:absolute;left:'+R[0]+"px;top:"+R[1]+"px;width:"+(R[2]-R[0])+"px;height:"+(R[3]-R[1])+'px;"></v:rect>')}else{if(Q=="poly"){P=F('<v:shape name="'+M+'" filled="t" '+T+' coordorigin="0,0" coordsize="'+N.width+","+N.height+'" path="m '+R[0]+","+R[1]+" l "+R.join(",")+' x e" style="zoom:1;margin:0;padding:0;display:block;position:absolute;top:0px;left:0px;width:'+N.width+"px;height:"+N.height+'px;"></v:shape>')}else{if(Q=="circ"){P=F('<v:oval name="'+M+'" filled="t" '+T+' style="zoom:1;margin:0;padding:0;display:block;position:absolute;left:'+(R[0]-R[2])+"px;top:"+(R[1]-R[2])+"px;width:"+(R[2]*2)+"px;height:"+(R[2]*2)+'px;"></v:oval>')}}}P.get(0).innerHTML=S+O;F(N).append(P)};L=function(M){F(M).find("[name=highlighted]").remove()}}K=function(N){var M,O=N.getAttribute("coords").split(",");for(M=0;M<O.length;M++){O[M]=parseFloat(O[M])}return[N.getAttribute("shape").toLowerCase().substr(0,4),O]};A=function(M){if(!M.complete){return false}if(typeof M.naturalWidth!="undefined"&&M.naturalWidth==0){return false}return true};I={position:"absolute",left:0,top:0,padding:0,border:0};var D=false;F.fn.maphilight=function(M){M=F.extend({},F.fn.maphilight.defaults,M);if(F.browser.msie&&!D){document.createStyleSheet().addRule("v\\:*","behavior: url(#default#VML); antialias: true;");document.namespaces.add("v","urn:schemas-microsoft-com:vml");D=true}return this.each(function(){var S,P,V,O,R,T,U,Q;S=F(this);if(!A(this)){return window.setTimeout(function(){S.maphilight(M)},200)}V=F.metadata?F.extend({},M,S.metadata()):M;O=F('map[name="'+S.attr("usemap").substr(1)+'"]');if(!(S.is("img")&&S.attr("usemap")&&O.size()>0)){return }if(S.hasClass("maphilighted")){var N=S.parent();S.insertBefore(N);N.remove()}P=F("<div>").css({display:"block",background:"url("+this.src+")",position:"relative",padding:0,width:this.width,height:this.height});S.before(P).css("opacity",0).css(I).remove();if(F.browser.msie){S.css("filter","Alpha(opacity=0)")}P.append(S);R=C(this);F(R).css(I);R.height=this.height;R.width=this.width;U=function(Y){var W,X;X=F.metadata?F.extend({},V,F(this).metadata()):V;if(!X.alwaysOn){W=K(this);J(R,W[0],W[1],X,"highlighted")}};if(V.alwaysOn){F(O).find("area[coords]").each(U)}else{if(F.metadata){F(O).find("area[coords]").each(function(){var W,X;X=F.metadata?F.extend({},V,F(this).metadata()):V;if(X.alwaysOn){if(!T){T=C(S.get());F(T).css(I);T.width=S.width();T.height=S.height();S.before(T)}W=K(this);if(F.browser.msie){J(R,W[0],W[1],X,"")}else{J(T,W[0],W[1],X,"")}}})}F(O).find("area[coords]").mouseover(U).mouseout(function(W){L(R)})}S.before(R);S.addClass("maphilighted")})};F.fn.maphilight.defaults={fill:true,fillColor:"000000",fillOpacity:0.2,stroke:true,strokeColor:"ff0000",strokeOpacity:1,strokeWidth:1,fade:true,alwaysOn:false}})(jQuery);