From b62303f4c2eb0f69d56c7fb02011f2aca88fefea Mon Sep 17 00:00:00 2001 From: Yuriy Tyukhnin Date: Thu, 6 Nov 2014 10:28:46 +0100 Subject: [PATCH] Added image error handling If an image cannot be downloaded it throws lots of exception during drawing, add a onError handler to the images solves this issue --- jquery.tagcanvas.js | 1 + jquery.tagcanvas.min.js | 2 +- tagcanvas.js | 1 + tagcanvas.min.js | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/jquery.tagcanvas.js b/jquery.tagcanvas.js index 12b00ca..60f02a2 100644 --- a/jquery.tagcanvas.js +++ b/jquery.tagcanvas.js @@ -1230,6 +1230,7 @@ TCproto.CreateTag = function(e, p) { if(im.length) { i = new Image; i.src = im[0].src; + i.onerror = im[0].onerror; t = new Tag(this, i, e, p, 0, 0); AddImage(i, im[0], t, this); return t; diff --git a/jquery.tagcanvas.min.js b/jquery.tagcanvas.min.js index d9d4855..b3b2cbe 100644 --- a/jquery.tagcanvas.min.js +++ b/jquery.tagcanvas.min.js @@ -18,4 +18,4 @@ * jQuery.tagcanvas 2.5.1 * For more information, please contact */ -(function(ak){var K,I,J=Math.abs,ad=Math.sin,v=Math.cos,q=Math.max,ay=Math.min,al=Math.ceil,C=Math.sqrt,an=Math.pow,f={},h={},k={0:"0,",1:"17,",2:"34,",3:"51,",4:"68,",5:"85,",6:"102,",7:"119,",8:"136,",9:"153,",a:"170,",A:"170,",b:"187,",B:"187,",c:"204,",C:"204,",d:"221,",D:"221,",e:"238,",E:"238,",f:"255,",F:"255,"},w,b,O,aA,F,aB,B=document,n,a={};for(K=0;K<256;++K){I=K.toString(16);if(K<16){I="0"+I}h[I]=h[I.toUpperCase()]=K.toString()+","}function ae(i){return typeof i!="undefined"}function G(i){return typeof i=="object"&&i!=null}function ap(i,j,aC){return isNaN(i)?aC:ay(aC,q(j,i))}function av(){return false}function E(){return new Date().valueOf()}function z(aC,aF){var j=[],aD=aC.length,aE;for(aE=0;aE=1){return 0}if(aC<=-1){return Math.PI}return Math.acos(aC)};F.unit=function(){var i=this.length();return new aa(this.x/i,this.y/i,this.z/i)};function af(aC,j){j=j*Math.PI/180;aC=aC*Math.PI/180;var i=ad(aC)*v(j),aE=-ad(j),aD=-v(aC)*v(j);return new aa(i,aE,aD)}function P(i){this[1]={1:i[0],2:i[1],3:i[2]};this[2]={1:i[3],2:i[4],3:i[5]};this[3]={1:i[6],2:i[7],3:i[8]}}aA=P.prototype;P.Identity=function(){return new P([1,0,0,0,1,0,0,0,1])};P.Rotation=function(aD,i){var j=ad(aD),aC=v(aD),aE=1-aC;return new P([aC+an(i.x,2)*aE,i.x*i.y*aE-i.z*j,i.x*i.z*aE+i.y*j,i.y*i.x*aE+i.z*j,aC+an(i.y,2)*aE,i.y*i.z*aE-i.x*j,i.z*i.x*aE-i.y*j,i.z*i.y*aE+i.x*j,aC+an(i.z,2)*aE])};aA.mul=function(aC){var aD=[],aG,aF,aE=(aC.xform?1:0);for(aG=1;aG<=3;++aG){for(aF=1;aF<=3;++aF){if(aE){aD.push(this[aG][1]*aC[1][aF]+this[aG][2]*aC[2][aF]+this[aG][3]*aC[3][aF])}else{aD.push(this[aG][aF]*aC)}}}return new P(aD)};aA.xform=function(aC){var j={},i=aC.x,aE=aC.y,aD=aC.z;j.x=i*this[1][1]+aE*this[2][1]+aD*this[3][1];j.y=i*this[1][2]+aE*this[2][2]+aD*this[3][2];j.z=i*this[1][3]+aE*this[2][3]+aD*this[3][3];return j};function o(aD,aF,aK,aH){var aG,aJ,j,aI,aL=[],aE=Math.PI*(3-C(5)),aC=2/aD;for(aG=0;aG0)}function ag(aG,j,aF,aE){var aD=aG.createLinearGradient(0,0,j,0),aC;for(aC in aE){aD.addColorStop(1-aC,aE[aC])}aG.fillStyle=aD;aG.fillRect(0,aF,j,1)}function g(aE,aC,j){var aD=1024,aI=1,aH=aE.weightGradient,aG,aK,aF,aJ;if(aE.gCanvas){aK=aE.gCanvas.getContext("2d");aI=aE.gCanvas.height}else{if(G(aH[0])){aI=aH.length}else{aH=[aH]}aE.gCanvas=aG=N(aD,aI);if(!aG){return null}aK=aG.getContext("2d");for(aF=0;aFaN?aP+aN:aN*2)*aE,j=aK+(aJ>aN?aJ+aN:aN*2)*aE,aH=aE*((aN||0)+(aD[0]<0?aP:0)),aC=aE*((aN||0)+(aD[1]<0?aJ:0)),aG,aL;aG=N(aF,j);if(!aG){return null}aL=aG.getContext("2d");aM&&(aL.shadowColor=aM);aN&&(aL.shadowBlur=aN*aE);aD&&(aL.shadowOffsetX=aD[0]*aE,aL.shadowOffsetY=aD[1]*aE);aL.drawImage(aI,aH,aC,aO,aK);return{image:aG,width:aF/aE,height:j/aE}}function r(aO,aG,aM){var aN=parseInt(aO.toString().length*aM),aF=parseInt(aM*2*aO.length),aD=N(aN,aF),aJ,j,aE,aI,aL,aK,aC,aH;if(!aD){return null}aJ=aD.getContext("2d");aJ.fillStyle="#000";aJ.fillRect(0,0,aN,aF);V(aJ,aM+"px "+aG,"#fff",aO,0,0,0,[]);j=aJ.getImageData(0,0,aN,aF);aE=j.width;aI=j.height;aH={min:{x:aE,y:aI},max:{x:-1,y:-1}};for(aK=0;aK0){if(aLaH.max.x){aH.max.x=aL}if(aKaH.max.y){aH.max.y=aK}}}}if(aE!=aN){aH.min.x*=(aN/aE);aH.max.x*=(aN/aE)}if(aI!=aF){aH.min.y*=(aN/aI);aH.max.y*=(aN/aI)}aD=null;return aH}function m(i){return"'"+i.replace(/(\'|\")/g,"").replace(/\s*,\s*/g,"', '")+"'"}function Z(i,j,aC){aC=aC||B;if(aC.addEventListener){aC.addEventListener(i,j,false)}else{aC.attachEvent("on"+i,j)}}function aq(aG,aC,aK,aF){var aL=aF.imageScale,aI,aD,aH,j,aE,aJ;if(!aC.complete){return Z("load",function(){aq(aG,aC,aK,aF)},aC)}if(!aG.complete){return Z("load",function(){aq(aG,aC,aK,aF)},aG)}aC.width=aC.width;aC.height=aC.height;if(aL){aG.width=aC.width*aL;aG.height=aC.height*aL}aK.w=aG.width;aK.h=aG.height;if(aF.txtOpt){aD=aG;aI=aF.zoomMax*aF.txtScale;aE=aK.w*aI;aJ=aK.h*aI;if(aE0){aK.w+=2*aF.outlineIncrease;aK.h+=2*aF.outlineIncrease;aE=aI*aK.w;aJ=aI*aK.h;aD=ar(aK.image,aE,aJ);aK.oimage=aD;aK.image=u(aK.image,aK.oimage.width,aK.oimage.height)}else{aE=aI*(aK.w+(2*aF.outlineIncrease));aJ=aI*(aK.h+(2*aF.outlineIncrease));aD=ar(aK.image,aE,aJ);aK.oimage=u(aD,aK.image.width,aK.image.height)}}}}function W(aD,aC){var j=B.defaultView,i=aC.replace(/\-([a-z])/g,function(aE){return aE.charAt(1).toUpperCase()});return(j&&j.getComputedStyle&&j.getComputedStyle(aD,null).getPropertyValue(aC))||(aD.currentStyle&&aD.currentStyle[i])}function s(j,aD,aC){var i=1,aE;if(aD){i=1*(j.getAttribute(aD)||aC)}else{if(aE=W(j,"font-size")){i=(aE.indexOf("px")>-1&&aE.replace("px","")*1)||(aE.indexOf("pt")>-1&&aE.replace("pt","")*1.25)||aE*3.3}}return i}function e(i){return i.target&&ae(i.target.id)?i.target.id:i.srcElement.parentNode.id}function Q(aE,aF){var aD,aC,i=parseInt(W(aF,"width"))/aF.width,j=parseInt(W(aF,"height"))/aF.height;if(ae(aE.offsetX)){aD={x:aE.offsetX,y:aE.offsetY}}else{aC=Y(aF.id);if(ae(aE.changedTouches)){aE=aE.changedTouches[0]}if(aE.pageX){aD={x:aE.pageX-aC.x,y:aE.pageY-aC.y}}}if(aD&&i&&j){aD.x/=i;aD.y/=j}return aD}function A(aC){var j=aC.target||aC.fromElement.parentNode,i=x.tc[j.id];if(i){i.mx=i.my=-1;i.UnFreeze();i.EndDrag()}}function ab(aG){var aD,aC=x,j,aF,aE=e(aG);for(aD in aC.tc){j=aC.tc[aD];if(j.tttimer){clearTimeout(j.tttimer);j.tttimer=null}}if(aE&&aC.tc[aE]){j=aC.tc[aE];if(aF=Q(aG,j.canvas)){j.mx=aF.x;j.my=aF.y;j.Drag(aG,aF)}j.drawn=0}}function y(aD){var j=x,i=B.addEventListener?0:1,aC=e(aD);if(aC&&aD.button==i&&j.tc[aC]){j.tc[aC].BeginDrag(aD)}}function az(aE){var aC=x,j=B.addEventListener?0:1,aD=e(aE),i;if(aD&&aE.button==j&&aC.tc[aD]){i=aC.tc[aD];ab(aE);if(!i.EndDrag()&&!i.touched){i.Clicked(aE)}}}function R(aC){var i=x,j=e(aC);if(j&&aC.changedTouches&&i.tc[j]){i.tc[j].touched=1;i.tc[j].BeginDrag(aC)}}function p(aC){var i=x,j=e(aC);if(j&&aC.changedTouches&&i.tc[j]){au(aC);if(!i.tc[j].EndDrag()){i.tc[j].Draw();i.tc[j].Clicked(aC)}}}function au(aG){var aD,aC=x,j,aF,aE=e(aG);for(aD in aC.tc){j=aC.tc[aD];if(j.tttimer){clearTimeout(j.tttimer);j.tttimer=null}}if(aE&&aC.tc[aE]&&aG.changedTouches){j=aC.tc[aE];if(aF=Q(aG,j.canvas)){j.mx=aF.x;j.my=aF.y;j.Drag(aG,aF)}j.drawn=0}}function ac(aC){var i=x,j=e(aC);if(j&&i.tc[j]){aC.cancelBubble=true;aC.returnValue=false;aC.preventDefault&&aC.preventDefault();i.tc[j].Wheel((aC.wheelDelta||aC.detail)>0)}}function M(){D(E())}function D(aD){var j=x.tc,aC;x.NextFrame(x.interval);aD=aD||E();for(aC in j){j[aC].Draw(aD)}}function Y(aC){var aF=B.getElementById(aC),i=aF.getBoundingClientRect(),aI=B.documentElement,aG=B.body,aH=window,aD=aH.pageXOffset||aI.scrollLeft,aJ=aH.pageYOffset||aI.scrollTop,aE=aI.clientLeft||aG.clientLeft,j=aI.clientTop||aG.clientTop;return{x:i.left+aD-aE,y:i.top+aJ-j}}function T(j,aD,aE,aC){var i=j.radius*j.z1/(j.z1+j.z2+aD.z);return{x:aD.x*i*aE,y:aD.y*i*aC,z:aD.z,w:(j.z1-aD.z)/j.z2}}function aw(i){this.e=i;this.br=0;this.line=[];this.text=[];this.original=i.innerText||i.textContent}aB=aw.prototype;aB.Lines=function(aE){var aD=aE?1:0,aF,j,aC;aE=aE||this.e;aF=aE.childNodes;j=aF.length;for(aC=0;aCaC){aH.push(this.line.join(" "));this.line=[aI[aD]]}else{this.line.push(aI[aD])}}aH.push(this.line.join(" "))}return this.text=aH};function H(i,j){this.ts=E();this.tc=i;this.tag=j;this.x=this.y=this.w=this.h=this.sc=1;this.z=0;this.Draw=i.pulsateTo<1&&i.outlineMethod!="colour"?this.DrawPulsate:this.DrawSimple;this.radius=i.outlineRadius|0;this.SetMethod(i.outlineMethod)}w=H.prototype;w.SetMethod=function(aC){var j={block:["PreDraw","DrawBlock"],colour:["PreDraw","DrawColour"],outline:["PostDraw","DrawOutline"],classic:["LastDraw","DrawOutline"],size:["PreDraw","DrawColour"],none:["LastDraw"]},i=j[aC]||j.outline;if(aC=="none"){this.Draw=function(){return 1}}else{this.drawFunc=this[i[1]]}this[i[0]]=this.Draw};w.Update=function(aI,aH,aJ,aE,aF,aG,aD,i){var j=this.tc.outlineOffset,aC=2*j;this.x=aF*aI+aD-j;this.y=aF*aH+i-j;this.w=aF*aJ+aC;this.h=aF*aE+aC;this.sc=aF;this.z=aG};w.DrawOutline=function(aF,i,aE,j,aC,aD){aF.strokeStyle=aD;am(aF,i,aE,j,aC,this.radius,true)};w.DrawColour=function(aD,aG,aE,aH,aC,i,aI,j,aF){if(aI.oimage){aI.alpha=1;aI.Draw(aD,j,aF,aI.oimage);return 1}return this[aI.image?"DrawColourImage":"DrawColourText"](aD,aG,aE,aH,aC,i,aI,j,aF)};w.DrawColourText=function(aE,aH,aF,aI,aC,i,aJ,j,aG){var aD=aJ.colour;aJ.colour=i;aJ.alpha=1;aJ.Draw(aE,j,aG);aJ.colour=aD;return 1};w.DrawColourImage=function(aH,aK,aI,aL,aG,i,aO,j,aJ){var aM=aH.canvas,aE=~~q(aK,0),aD=~~q(aI,0),aF=ay(aM.width-aE,aL)+0.5|0,aN=ay(aM.height-aD,aG)+0.5|0,aC;if(n){n.width=aF,n.height=aN}else{n=N(aF,aN)}if(!n){return this.SetMethod("outline")}aC=n.getContext("2d");aC.drawImage(aM,aE,aD,aF,aN,0,0,aF,aN);aH.clearRect(aE,aD,aF,aN);aO.alpha=1;aO.Draw(aH,j,aJ);aH.setTransform(1,0,0,1,0,0);aH.save();aH.beginPath();aH.rect(aE,aD,aF,aN);aH.clip();aH.globalCompositeOperation="source-in";aH.fillStyle=i;aH.fillRect(aE,aD,aF,aN);aH.restore();aH.globalCompositeOperation="destination-over";aH.drawImage(n,0,0,aF,aN,aE,aD,aF,aN);aH.globalCompositeOperation="source-over";return 1};w.DrawBlock=function(aF,i,aE,j,aC,aD){aF.fillStyle=aD;am(aF,i,aE,j,aC,this.radius)};w.DrawSimple=function(aE,i,j,aD){var aC=this.tc;aE.setTransform(1,0,0,1,0,0);aE.strokeStyle=aC.outlineColour;aE.lineWidth=aC.outlineThickness;aE.shadowBlur=aE.shadowOffsetX=aE.shadowOffsetY=0;aE.globalAlpha=1;return this.drawFunc(aE,this.x,this.y,this.w,this.h,aC.outlineColour,i,j,aD)};w.DrawPulsate=function(aF,i,j,aD){var aE=E()-this.ts,aC=this.tc;aF.setTransform(1,0,0,1,0,0);aF.strokeStyle=aC.outlineColour;aF.lineWidth=aC.outlineThickness;aF.shadowBlur=aF.shadowOffsetX=aF.shadowOffsetY=0;aF.globalAlpha=aC.pulsateTo+((1-aC.pulsateTo)*(0.5+(v(2*Math.PI*aE/(1000*aC.pulsateTime))/2)));return this.drawFunc(aF,this.x,this.y,this.w,this.h,aC.outlineColour,i,j,aD)};w.Active=function(aC,i,j){return(i>=this.x&&j>=this.y&&i<=this.x+this.w&&j<=this.y+this.h)};w.PreDraw=w.PostDraw=w.LastDraw=av;function d(aD,aO,aK,aN,aL,aE,aC,aG,aM,aF,aJ,j,aI,i){var aH=aD.ctxt;this.tc=aD;this.image=aO.src?aO:null;this.text=aO.src?[]:aO;this.text_original=i;this.line_widths=[];this.title=aK.title||null;this.a=aK;this.position=new aa(aN[0],aN[1],aN[2]);this.x=this.y=this.z=0;this.w=aL;this.h=aE;this.colour=aC||aD.textColour;this.bgColour=aG||aD.bgColour;this.bgRadius=aM|0;this.bgOutline=aF||this.colour;this.bgOutlineThickness=aJ|0;this.textFont=j||aD.textFont;this.padding=aI|0;this.sc=this.alpha=1;this.weighted=!aD.weight;this.outline=new H(aD,this);if(!this.image){this.textHeight=aD.textHeight;this.Measure(aH,aD)}this.SetShadowColour=aD.shadowAlpha?this.SetShadowColourAlpha:this.SetShadowColourFixed;this.SetDraw(aD)}b=d.prototype;b.EqualTo=function(aC){var j=aC.getElementsByTagName("img");if(this.a.href!=aC.href){return 0}if(j.length){return this.image.src==j[0].src}return(aC.innerText||aC.textContent)==this.text_original};b.SetDraw=function(i){this.Draw=this.image?(i.ie>7?this.DrawImageIE:this.DrawImage):this.DrawText;i.noSelect&&(this.CheckActive=av)};b.MeasureText=function(aF){var aD,aC=this.text.length,j=0,aE;for(aD=0;aD0){this.image=u(this.image,this.oimage.width,this.oimage.height)}else{this.oimage=u(this.oimage,this.image.width,this.image.height)}}}if(this.image){this.w=this.image.width/aD;this.h=this.image.height/aD}this.SetDraw(j);j.txtOpt=!!this.image}};b.SetFont=function(j,aD,aC,i){this.textFont=j;this.colour=aD;this.bgColour=aC;this.bgOutline=i;this.Measure(this.tc.ctxt,this.tc)};b.SetWeight=function(aC){var j=this.tc,aE=j.weightMode.split(/[, ]/),i,aD,aF=aC.length;if(!this.text.length){return}this.weighted=true;for(aD=0;aD0&&aD.weightSizeMax>aD.weightSizeMin){this.textHeight=aD.weightSize*(aD.weightSizeMin+(aD.weightSizeMax-aD.weightSizeMin)*i)}else{this.textHeight=q(1,aC*aD.weightSize)}}}}}};b.SetShadowColourFixed=function(aC,j,i){aC.shadowColor=j};b.SetShadowColourAlpha=function(aC,j,i){aC.shadowColor=S(j,i)};b.DrawText=function(aE,aH,aD){var aI=this.tc,aG=this.x,aF=this.y,aJ=this.sc,j,aC;aE.globalAlpha=this.alpha;aE.fillStyle=this.colour;aI.shadow&&this.SetShadowColour(aE,aI.shadow,this.alpha);aE.font=this.font;aG+=aH/aJ;aF+=(aD/aJ)-(this.h/2);for(j=0;jthis.max_weight[aJ]){this.max_weight[aJ]=aG}if(!this.min_weight[aJ]||aGthis.min_weight[aJ]){j=1}}if(j){for(aC=0;aC=0&&this.my>=0&&this.taglist[aQ].CheckActive(aS,aK,aJ);if(aT&&aT.sc>aO&&(!j||aT.z<=0)){aI=aT;aC=aQ;aI.tag=this.taglist[aQ];aO=aT.sc}}this.active=aI}this.txtOpt||(this.shadow&&this.SetShadow(aS));aS.clearRect(0,0,aE,aL);for(aQ=0;aQ=this.fadeIn){this.fadeIn=0;this.fixedAlpha=1}else{this.fixedAlpha=j/this.fadeIn}}if(this.fixedAnim){if(!this.fixedAnim.transform){this.fixedAnim.transform=this.transform}aC=this.fixedAnim,j=E()-aC.t0,aE=aC.angle,i,aD=this.animTiming(aC.t,j);this.transform=aC.transform;if(j>=aC.t){this.fixedCallbackTag=aC.tag;this.fixedCallback=aC.cb;this.fixedAnim=this.yaw=this.pitch=0}else{aE*=aD}i=P.Rotation(aE,aC.axis);this.transform=this.transform.mul(i);return(this.fixedAnim!=0)}return false};O.AnimatePosition=function(aC,aF,aD){var j=this,i=j.mx,aH=j.my,aE,aG;if(!j.frozen&&i>=0&&aH>=0&&iaC){i.yaw=aD>i.z0?i.yaw*i.decel:0}if(!i.ly&&j>aC){i.pitch=j>i.z0?i.pitch*i.decel:0}};O.Zoom=function(i){this.z2=this.z1*(1/i);this.drawn=0};O.Clicked=function(aC){var i=this.active;try{if(i&&i.tag){if(this.clickToFront===false||this.clickToFront===null){i.tag.Clicked(aC)}else{this.TagToFront(i.tag,this.clickToFront,function(){i.tag.Clicked(aC)},true)}}}catch(j){}};O.Wheel=function(j){var aC=this.zoom+this.zoomStep*(j?1:-1);this.zoom=ay(this.zoomMax,q(this.zoomMin,aC));this.Zoom(this.zoom)};O.BeginDrag=function(i){this.down=Q(i,this.canvas);i.cancelBubble=true;i.returnValue=false;i.preventDefault&&i.preventDefault()};O.Drag=function(aE,aD){if(this.dragControl&&this.down){var aC=this.dragThreshold*this.dragThreshold,j=aD.x-this.down.x,i=aD.y-this.down.y;if(this.dragging||j*j+i*i>aC){this.dx=j;this.dy=i;this.dragging=1;this.down=aD}}};O.EndDrag=function(){var i=this.dragging;this.dragging=this.down=null;return i};O.Pause=function(){this.paused=true};O.Resume=function(){this.paused=false};O.SetSpeed=function(j){this.initial=j;this.yaw=j[0]*this.maxSpeed;this.pitch=j[1]*this.maxSpeed};O.FindTag=function(aC){if(!ae(aC)){return null}ae(aC.index)&&(aC=aC.index);if(!G(aC)){return this.taglist[aC]}var aD,aE,j;if(ae(aC.id)){aD="id",aE=aC.id}else{if(ae(aC.text)){aD="innerText",aE=aC.text}}for(j=0;j=1){return 0}if(aC<=-1){return Math.PI}return Math.acos(aC)};F.unit=function(){var i=this.length();return new aa(this.x/i,this.y/i,this.z/i)};function af(aC,j){j=j*Math.PI/180;aC=aC*Math.PI/180;var i=ad(aC)*v(j),aE=-ad(j),aD=-v(aC)*v(j);return new aa(i,aE,aD)}function P(i){this[1]={1:i[0],2:i[1],3:i[2]};this[2]={1:i[3],2:i[4],3:i[5]};this[3]={1:i[6],2:i[7],3:i[8]}}aA=P.prototype;P.Identity=function(){return new P([1,0,0,0,1,0,0,0,1])};P.Rotation=function(aD,i){var j=ad(aD),aC=v(aD),aE=1-aC;return new P([aC+an(i.x,2)*aE,i.x*i.y*aE-i.z*j,i.x*i.z*aE+i.y*j,i.y*i.x*aE+i.z*j,aC+an(i.y,2)*aE,i.y*i.z*aE-i.x*j,i.z*i.x*aE-i.y*j,i.z*i.y*aE+i.x*j,aC+an(i.z,2)*aE])};aA.mul=function(aC){var aD=[],aG,aF,aE=(aC.xform?1:0);for(aG=1;aG<=3;++aG){for(aF=1;aF<=3;++aF){if(aE){aD.push(this[aG][1]*aC[1][aF]+this[aG][2]*aC[2][aF]+this[aG][3]*aC[3][aF])}else{aD.push(this[aG][aF]*aC)}}}return new P(aD)};aA.xform=function(aC){var j={},i=aC.x,aE=aC.y,aD=aC.z;j.x=i*this[1][1]+aE*this[2][1]+aD*this[3][1];j.y=i*this[1][2]+aE*this[2][2]+aD*this[3][2];j.z=i*this[1][3]+aE*this[2][3]+aD*this[3][3];return j};function o(aD,aF,aK,aH){var aG,aJ,j,aI,aL=[],aE=Math.PI*(3-C(5)),aC=2/aD;for(aG=0;aG0)}function ag(aG,j,aF,aE){var aD=aG.createLinearGradient(0,0,j,0),aC;for(aC in aE){aD.addColorStop(1-aC,aE[aC])}aG.fillStyle=aD;aG.fillRect(0,aF,j,1)}function g(aE,aC,j){var aD=1024,aI=1,aH=aE.weightGradient,aG,aK,aF,aJ;if(aE.gCanvas){aK=aE.gCanvas.getContext("2d");aI=aE.gCanvas.height}else{if(G(aH[0])){aI=aH.length}else{aH=[aH]}aE.gCanvas=aG=N(aD,aI);if(!aG){return null}aK=aG.getContext("2d");for(aF=0;aFaN?aP+aN:aN*2)*aE,j=aK+(aJ>aN?aJ+aN:aN*2)*aE,aH=aE*((aN||0)+(aD[0]<0?aP:0)),aC=aE*((aN||0)+(aD[1]<0?aJ:0)),aG,aL;aG=N(aF,j);if(!aG){return null}aL=aG.getContext("2d");aM&&(aL.shadowColor=aM);aN&&(aL.shadowBlur=aN*aE);aD&&(aL.shadowOffsetX=aD[0]*aE,aL.shadowOffsetY=aD[1]*aE);aL.drawImage(aI,aH,aC,aO,aK);return{image:aG,width:aF/aE,height:j/aE}}function r(aO,aG,aM){var aN=parseInt(aO.toString().length*aM),aF=parseInt(aM*2*aO.length),aD=N(aN,aF),aJ,j,aE,aI,aL,aK,aC,aH;if(!aD){return null}aJ=aD.getContext("2d");aJ.fillStyle="#000";aJ.fillRect(0,0,aN,aF);V(aJ,aM+"px "+aG,"#fff",aO,0,0,0,[]);j=aJ.getImageData(0,0,aN,aF);aE=j.width;aI=j.height;aH={min:{x:aE,y:aI},max:{x:-1,y:-1}};for(aK=0;aK0){if(aLaH.max.x){aH.max.x=aL}if(aKaH.max.y){aH.max.y=aK}}}}if(aE!=aN){aH.min.x*=(aN/aE);aH.max.x*=(aN/aE)}if(aI!=aF){aH.min.y*=(aN/aI);aH.max.y*=(aN/aI)}aD=null;return aH}function m(i){return"'"+i.replace(/(\'|\")/g,"").replace(/\s*,\s*/g,"', '")+"'"}function Z(i,j,aC){aC=aC||B;if(aC.addEventListener){aC.addEventListener(i,j,false)}else{aC.attachEvent("on"+i,j)}}function aq(aG,aC,aK,aF){var aL=aF.imageScale,aI,aD,aH,j,aE,aJ;if(!aC.complete){return Z("load",function(){aq(aG,aC,aK,aF)},aC)}if(!aG.complete){return Z("load",function(){aq(aG,aC,aK,aF)},aG)}aC.width=aC.width;aC.height=aC.height;if(aL){aG.width=aC.width*aL;aG.height=aC.height*aL}aK.w=aG.width;aK.h=aG.height;if(aF.txtOpt){aD=aG;aI=aF.zoomMax*aF.txtScale;aE=aK.w*aI;aJ=aK.h*aI;if(aE0){aK.w+=2*aF.outlineIncrease;aK.h+=2*aF.outlineIncrease;aE=aI*aK.w;aJ=aI*aK.h;aD=ar(aK.image,aE,aJ);aK.oimage=aD;aK.image=u(aK.image,aK.oimage.width,aK.oimage.height)}else{aE=aI*(aK.w+(2*aF.outlineIncrease));aJ=aI*(aK.h+(2*aF.outlineIncrease));aD=ar(aK.image,aE,aJ);aK.oimage=u(aD,aK.image.width,aK.image.height)}}}}function W(aD,aC){var j=B.defaultView,i=aC.replace(/\-([a-z])/g,function(aE){return aE.charAt(1).toUpperCase()});return(j&&j.getComputedStyle&&j.getComputedStyle(aD,null).getPropertyValue(aC))||(aD.currentStyle&&aD.currentStyle[i])}function s(j,aD,aC){var i=1,aE;if(aD){i=1*(j.getAttribute(aD)||aC)}else{if(aE=W(j,"font-size")){i=(aE.indexOf("px")>-1&&aE.replace("px","")*1)||(aE.indexOf("pt")>-1&&aE.replace("pt","")*1.25)||aE*3.3}}return i}function e(i){return i.target&&ae(i.target.id)?i.target.id:i.srcElement.parentNode.id}function Q(aE,aF){var aD,aC,i=parseInt(W(aF,"width"))/aF.width,j=parseInt(W(aF,"height"))/aF.height;if(ae(aE.offsetX)){aD={x:aE.offsetX,y:aE.offsetY}}else{aC=Y(aF.id);if(ae(aE.changedTouches)){aE=aE.changedTouches[0]}if(aE.pageX){aD={x:aE.pageX-aC.x,y:aE.pageY-aC.y}}}if(aD&&i&&j){aD.x/=i;aD.y/=j}return aD}function A(aC){var j=aC.target||aC.fromElement.parentNode,i=x.tc[j.id];if(i){i.mx=i.my=-1;i.UnFreeze();i.EndDrag()}}function ab(aG){var aD,aC=x,j,aF,aE=e(aG);for(aD in aC.tc){j=aC.tc[aD];if(j.tttimer){clearTimeout(j.tttimer);j.tttimer=null}}if(aE&&aC.tc[aE]){j=aC.tc[aE];if(aF=Q(aG,j.canvas)){j.mx=aF.x;j.my=aF.y;j.Drag(aG,aF)}j.drawn=0}}function y(aD){var j=x,i=B.addEventListener?0:1,aC=e(aD);if(aC&&aD.button==i&&j.tc[aC]){j.tc[aC].BeginDrag(aD)}}function az(aE){var aC=x,j=B.addEventListener?0:1,aD=e(aE),i;if(aD&&aE.button==j&&aC.tc[aD]){i=aC.tc[aD];ab(aE);if(!i.EndDrag()&&!i.touched){i.Clicked(aE)}}}function R(aC){var i=x,j=e(aC);if(j&&aC.changedTouches&&i.tc[j]){i.tc[j].touched=1;i.tc[j].BeginDrag(aC)}}function p(aC){var i=x,j=e(aC);if(j&&aC.changedTouches&&i.tc[j]){au(aC);if(!i.tc[j].EndDrag()){i.tc[j].Draw();i.tc[j].Clicked(aC)}}}function au(aG){var aD,aC=x,j,aF,aE=e(aG);for(aD in aC.tc){j=aC.tc[aD];if(j.tttimer){clearTimeout(j.tttimer);j.tttimer=null}}if(aE&&aC.tc[aE]&&aG.changedTouches){j=aC.tc[aE];if(aF=Q(aG,j.canvas)){j.mx=aF.x;j.my=aF.y;j.Drag(aG,aF)}j.drawn=0}}function ac(aC){var i=x,j=e(aC);if(j&&i.tc[j]){aC.cancelBubble=true;aC.returnValue=false;aC.preventDefault&&aC.preventDefault();i.tc[j].Wheel((aC.wheelDelta||aC.detail)>0)}}function M(){D(E())}function D(aD){var j=x.tc,aC;x.NextFrame(x.interval);aD=aD||E();for(aC in j){j[aC].Draw(aD)}}function Y(aC){var aF=B.getElementById(aC),i=aF.getBoundingClientRect(),aI=B.documentElement,aG=B.body,aH=window,aD=aH.pageXOffset||aI.scrollLeft,aJ=aH.pageYOffset||aI.scrollTop,aE=aI.clientLeft||aG.clientLeft,j=aI.clientTop||aG.clientTop;return{x:i.left+aD-aE,y:i.top+aJ-j}}function T(j,aD,aE,aC){var i=j.radius*j.z1/(j.z1+j.z2+aD.z);return{x:aD.x*i*aE,y:aD.y*i*aC,z:aD.z,w:(j.z1-aD.z)/j.z2}}function aw(i){this.e=i;this.br=0;this.line=[];this.text=[];this.original=i.innerText||i.textContent}aB=aw.prototype;aB.Lines=function(aE){var aD=aE?1:0,aF,j,aC;aE=aE||this.e;aF=aE.childNodes;j=aF.length;for(aC=0;aCaC){aH.push(this.line.join(" "));this.line=[aI[aD]]}else{this.line.push(aI[aD])}}aH.push(this.line.join(" "))}return this.text=aH};function H(i,j){this.ts=E();this.tc=i;this.tag=j;this.x=this.y=this.w=this.h=this.sc=1;this.z=0;this.Draw=i.pulsateTo<1&&i.outlineMethod!="colour"?this.DrawPulsate:this.DrawSimple;this.radius=i.outlineRadius|0;this.SetMethod(i.outlineMethod)}w=H.prototype;w.SetMethod=function(aC){var j={block:["PreDraw","DrawBlock"],colour:["PreDraw","DrawColour"],outline:["PostDraw","DrawOutline"],classic:["LastDraw","DrawOutline"],size:["PreDraw","DrawColour"],none:["LastDraw"]},i=j[aC]||j.outline;if(aC=="none"){this.Draw=function(){return 1}}else{this.drawFunc=this[i[1]]}this[i[0]]=this.Draw};w.Update=function(aI,aH,aJ,aE,aF,aG,aD,i){var j=this.tc.outlineOffset,aC=2*j;this.x=aF*aI+aD-j;this.y=aF*aH+i-j;this.w=aF*aJ+aC;this.h=aF*aE+aC;this.sc=aF;this.z=aG};w.DrawOutline=function(aF,i,aE,j,aC,aD){aF.strokeStyle=aD;am(aF,i,aE,j,aC,this.radius,true)};w.DrawColour=function(aD,aG,aE,aH,aC,i,aI,j,aF){if(aI.oimage){aI.alpha=1;aI.Draw(aD,j,aF,aI.oimage);return 1}return this[aI.image?"DrawColourImage":"DrawColourText"](aD,aG,aE,aH,aC,i,aI,j,aF)};w.DrawColourText=function(aE,aH,aF,aI,aC,i,aJ,j,aG){var aD=aJ.colour;aJ.colour=i;aJ.alpha=1;aJ.Draw(aE,j,aG);aJ.colour=aD;return 1};w.DrawColourImage=function(aH,aK,aI,aL,aG,i,aO,j,aJ){var aM=aH.canvas,aE=~~q(aK,0),aD=~~q(aI,0),aF=ay(aM.width-aE,aL)+0.5|0,aN=ay(aM.height-aD,aG)+0.5|0,aC;if(n){n.width=aF,n.height=aN}else{n=N(aF,aN)}if(!n){return this.SetMethod("outline")}aC=n.getContext("2d");aC.drawImage(aM,aE,aD,aF,aN,0,0,aF,aN);aH.clearRect(aE,aD,aF,aN);aO.alpha=1;aO.Draw(aH,j,aJ);aH.setTransform(1,0,0,1,0,0);aH.save();aH.beginPath();aH.rect(aE,aD,aF,aN);aH.clip();aH.globalCompositeOperation="source-in";aH.fillStyle=i;aH.fillRect(aE,aD,aF,aN);aH.restore();aH.globalCompositeOperation="destination-over";aH.drawImage(n,0,0,aF,aN,aE,aD,aF,aN);aH.globalCompositeOperation="source-over";return 1};w.DrawBlock=function(aF,i,aE,j,aC,aD){aF.fillStyle=aD;am(aF,i,aE,j,aC,this.radius)};w.DrawSimple=function(aE,i,j,aD){var aC=this.tc;aE.setTransform(1,0,0,1,0,0);aE.strokeStyle=aC.outlineColour;aE.lineWidth=aC.outlineThickness;aE.shadowBlur=aE.shadowOffsetX=aE.shadowOffsetY=0;aE.globalAlpha=1;return this.drawFunc(aE,this.x,this.y,this.w,this.h,aC.outlineColour,i,j,aD)};w.DrawPulsate=function(aF,i,j,aD){var aE=E()-this.ts,aC=this.tc;aF.setTransform(1,0,0,1,0,0);aF.strokeStyle=aC.outlineColour;aF.lineWidth=aC.outlineThickness;aF.shadowBlur=aF.shadowOffsetX=aF.shadowOffsetY=0;aF.globalAlpha=aC.pulsateTo+((1-aC.pulsateTo)*(0.5+(v(2*Math.PI*aE/(1000*aC.pulsateTime))/2)));return this.drawFunc(aF,this.x,this.y,this.w,this.h,aC.outlineColour,i,j,aD)};w.Active=function(aC,i,j){return(i>=this.x&&j>=this.y&&i<=this.x+this.w&&j<=this.y+this.h)};w.PreDraw=w.PostDraw=w.LastDraw=av;function d(aD,aO,aK,aN,aL,aE,aC,aG,aM,aF,aJ,j,aI,i){var aH=aD.ctxt;this.tc=aD;this.image=aO.src?aO:null;this.text=aO.src?[]:aO;this.text_original=i;this.line_widths=[];this.title=aK.title||null;this.a=aK;this.position=new aa(aN[0],aN[1],aN[2]);this.x=this.y=this.z=0;this.w=aL;this.h=aE;this.colour=aC||aD.textColour;this.bgColour=aG||aD.bgColour;this.bgRadius=aM|0;this.bgOutline=aF||this.colour;this.bgOutlineThickness=aJ|0;this.textFont=j||aD.textFont;this.padding=aI|0;this.sc=this.alpha=1;this.weighted=!aD.weight;this.outline=new H(aD,this);if(!this.image){this.textHeight=aD.textHeight;this.Measure(aH,aD)}this.SetShadowColour=aD.shadowAlpha?this.SetShadowColourAlpha:this.SetShadowColourFixed;this.SetDraw(aD)}b=d.prototype;b.EqualTo=function(aC){var j=aC.getElementsByTagName("img");if(this.a.href!=aC.href){return 0}if(j.length){return this.image.src==j[0].src}return(aC.innerText||aC.textContent)==this.text_original};b.SetDraw=function(i){this.Draw=this.image?(i.ie>7?this.DrawImageIE:this.DrawImage):this.DrawText;i.noSelect&&(this.CheckActive=av)};b.MeasureText=function(aF){var aD,aC=this.text.length,j=0,aE;for(aD=0;aD0){this.image=u(this.image,this.oimage.width,this.oimage.height)}else{this.oimage=u(this.oimage,this.image.width,this.image.height)}}}if(this.image){this.w=this.image.width/aD;this.h=this.image.height/aD}this.SetDraw(j);j.txtOpt=!!this.image}};b.SetFont=function(j,aD,aC,i){this.textFont=j;this.colour=aD;this.bgColour=aC;this.bgOutline=i;this.Measure(this.tc.ctxt,this.tc)};b.SetWeight=function(aC){var j=this.tc,aE=j.weightMode.split(/[, ]/),i,aD,aF=aC.length;if(!this.text.length){return}this.weighted=true;for(aD=0;aD0&&aD.weightSizeMax>aD.weightSizeMin){this.textHeight=aD.weightSize*(aD.weightSizeMin+(aD.weightSizeMax-aD.weightSizeMin)*i)}else{this.textHeight=q(1,aC*aD.weightSize)}}}}}};b.SetShadowColourFixed=function(aC,j,i){aC.shadowColor=j};b.SetShadowColourAlpha=function(aC,j,i){aC.shadowColor=S(j,i)};b.DrawText=function(aE,aH,aD){var aI=this.tc,aG=this.x,aF=this.y,aJ=this.sc,j,aC;aE.globalAlpha=this.alpha;aE.fillStyle=this.colour;aI.shadow&&this.SetShadowColour(aE,aI.shadow,this.alpha);aE.font=this.font;aG+=aH/aJ;aF+=(aD/aJ)-(this.h/2);for(j=0;jthis.max_weight[aJ]){this.max_weight[aJ]=aG}if(!this.min_weight[aJ]||aGthis.min_weight[aJ]){j=1}}if(j){for(aC=0;aC=0&&this.my>=0&&this.taglist[aQ].CheckActive(aS,aK,aJ);if(aT&&aT.sc>aO&&(!j||aT.z<=0)){aI=aT;aC=aQ;aI.tag=this.taglist[aQ];aO=aT.sc}}this.active=aI}this.txtOpt||(this.shadow&&this.SetShadow(aS));aS.clearRect(0,0,aE,aL);for(aQ=0;aQ=this.fadeIn){this.fadeIn=0;this.fixedAlpha=1}else{this.fixedAlpha=j/this.fadeIn}}if(this.fixedAnim){if(!this.fixedAnim.transform){this.fixedAnim.transform=this.transform}aC=this.fixedAnim,j=E()-aC.t0,aE=aC.angle,i,aD=this.animTiming(aC.t,j);this.transform=aC.transform;if(j>=aC.t){this.fixedCallbackTag=aC.tag;this.fixedCallback=aC.cb;this.fixedAnim=this.yaw=this.pitch=0}else{aE*=aD}i=P.Rotation(aE,aC.axis);this.transform=this.transform.mul(i);return(this.fixedAnim!=0)}return false};O.AnimatePosition=function(aC,aF,aD){var j=this,i=j.mx,aH=j.my,aE,aG;if(!j.frozen&&i>=0&&aH>=0&&iaC){i.yaw=aD>i.z0?i.yaw*i.decel:0}if(!i.ly&&j>aC){i.pitch=j>i.z0?i.pitch*i.decel:0}};O.Zoom=function(i){this.z2=this.z1*(1/i);this.drawn=0};O.Clicked=function(aC){var i=this.active;try{if(i&&i.tag){if(this.clickToFront===false||this.clickToFront===null){i.tag.Clicked(aC)}else{this.TagToFront(i.tag,this.clickToFront,function(){i.tag.Clicked(aC)},true)}}}catch(j){}};O.Wheel=function(j){var aC=this.zoom+this.zoomStep*(j?1:-1);this.zoom=ay(this.zoomMax,q(this.zoomMin,aC));this.Zoom(this.zoom)};O.BeginDrag=function(i){this.down=Q(i,this.canvas);i.cancelBubble=true;i.returnValue=false;i.preventDefault&&i.preventDefault()};O.Drag=function(aE,aD){if(this.dragControl&&this.down){var aC=this.dragThreshold*this.dragThreshold,j=aD.x-this.down.x,i=aD.y-this.down.y;if(this.dragging||j*j+i*i>aC){this.dx=j;this.dy=i;this.dragging=1;this.down=aD}}};O.EndDrag=function(){var i=this.dragging;this.dragging=this.down=null;return i};O.Pause=function(){this.paused=true};O.Resume=function(){this.paused=false};O.SetSpeed=function(j){this.initial=j;this.yaw=j[0]*this.maxSpeed;this.pitch=j[1]*this.maxSpeed};O.FindTag=function(aC){if(!ae(aC)){return null}ae(aC.index)&&(aC=aC.index);if(!G(aC)){return this.taglist[aC]}var aD,aE,j;if(ae(aC.id)){aD="id",aE=aC.id}else{if(ae(aC.text)){aD="innerText",aE=aC.text}}for(j=0;j */ -(function(){var K,I,J=Math.abs,ad=Math.sin,v=Math.cos,q=Math.max,ax=Math.min,ak=Math.ceil,C=Math.sqrt,am=Math.pow,f={},h={},k={0:"0,",1:"17,",2:"34,",3:"51,",4:"68,",5:"85,",6:"102,",7:"119,",8:"136,",9:"153,",a:"170,",A:"170,",b:"187,",B:"187,",c:"204,",C:"204,",d:"221,",D:"221,",e:"238,",E:"238,",f:"255,",F:"255,"},w,b,O,az,F,aA,B=document,n,a={};for(K=0;K<256;++K){I=K.toString(16);if(K<16){I="0"+I}h[I]=h[I.toUpperCase()]=K.toString()+","}function ae(i){return typeof i!="undefined"}function G(i){return typeof i=="object"&&i!=null}function ao(i,j,aB){return isNaN(i)?aB:ax(aB,q(j,i))}function au(){return false}function E(){return new Date().valueOf()}function z(aB,aE){var j=[],aC=aB.length,aD;for(aD=0;aD=1){return 0}if(aB<=-1){return Math.PI}return Math.acos(aB)};F.unit=function(){var i=this.length();return new aa(this.x/i,this.y/i,this.z/i)};function af(aB,j){j=j*Math.PI/180;aB=aB*Math.PI/180;var i=ad(aB)*v(j),aD=-ad(j),aC=-v(aB)*v(j);return new aa(i,aD,aC)}function P(i){this[1]={1:i[0],2:i[1],3:i[2]};this[2]={1:i[3],2:i[4],3:i[5]};this[3]={1:i[6],2:i[7],3:i[8]}}az=P.prototype;P.Identity=function(){return new P([1,0,0,0,1,0,0,0,1])};P.Rotation=function(aC,i){var j=ad(aC),aB=v(aC),aD=1-aB;return new P([aB+am(i.x,2)*aD,i.x*i.y*aD-i.z*j,i.x*i.z*aD+i.y*j,i.y*i.x*aD+i.z*j,aB+am(i.y,2)*aD,i.y*i.z*aD-i.x*j,i.z*i.x*aD-i.y*j,i.z*i.y*aD+i.x*j,aB+am(i.z,2)*aD])};az.mul=function(aB){var aC=[],aF,aE,aD=(aB.xform?1:0);for(aF=1;aF<=3;++aF){for(aE=1;aE<=3;++aE){if(aD){aC.push(this[aF][1]*aB[1][aE]+this[aF][2]*aB[2][aE]+this[aF][3]*aB[3][aE])}else{aC.push(this[aF][aE]*aB)}}}return new P(aC)};az.xform=function(aB){var j={},i=aB.x,aD=aB.y,aC=aB.z;j.x=i*this[1][1]+aD*this[2][1]+aC*this[3][1];j.y=i*this[1][2]+aD*this[2][2]+aC*this[3][2];j.z=i*this[1][3]+aD*this[2][3]+aC*this[3][3];return j};function o(aC,aE,aJ,aG){var aF,aI,j,aH,aK=[],aD=Math.PI*(3-C(5)),aB=2/aC;for(aF=0;aF0)}function ag(aF,j,aE,aD){var aC=aF.createLinearGradient(0,0,j,0),aB;for(aB in aD){aC.addColorStop(1-aB,aD[aB])}aF.fillStyle=aC;aF.fillRect(0,aE,j,1)}function g(aD,aB,j){var aC=1024,aH=1,aG=aD.weightGradient,aF,aJ,aE,aI;if(aD.gCanvas){aJ=aD.gCanvas.getContext("2d");aH=aD.gCanvas.height}else{if(G(aG[0])){aH=aG.length}else{aG=[aG]}aD.gCanvas=aF=N(aC,aH);if(!aF){return null}aJ=aF.getContext("2d");for(aE=0;aEaM?aO+aM:aM*2)*aD,j=aJ+(aI>aM?aI+aM:aM*2)*aD,aG=aD*((aM||0)+(aC[0]<0?aO:0)),aB=aD*((aM||0)+(aC[1]<0?aI:0)),aF,aK;aF=N(aE,j);if(!aF){return null}aK=aF.getContext("2d");aL&&(aK.shadowColor=aL);aM&&(aK.shadowBlur=aM*aD);aC&&(aK.shadowOffsetX=aC[0]*aD,aK.shadowOffsetY=aC[1]*aD);aK.drawImage(aH,aG,aB,aN,aJ);return{image:aF,width:aE/aD,height:j/aD}}function r(aN,aF,aL){var aM=parseInt(aN.toString().length*aL),aE=parseInt(aL*2*aN.length),aC=N(aM,aE),aI,j,aD,aH,aK,aJ,aB,aG;if(!aC){return null}aI=aC.getContext("2d");aI.fillStyle="#000";aI.fillRect(0,0,aM,aE);V(aI,aL+"px "+aF,"#fff",aN,0,0,0,[]);j=aI.getImageData(0,0,aM,aE);aD=j.width;aH=j.height;aG={min:{x:aD,y:aH},max:{x:-1,y:-1}};for(aJ=0;aJ0){if(aKaG.max.x){aG.max.x=aK}if(aJaG.max.y){aG.max.y=aJ}}}}if(aD!=aM){aG.min.x*=(aM/aD);aG.max.x*=(aM/aD)}if(aH!=aE){aG.min.y*=(aM/aH);aG.max.y*=(aM/aH)}aC=null;return aG}function m(i){return"'"+i.replace(/(\'|\")/g,"").replace(/\s*,\s*/g,"', '")+"'"}function Z(i,j,aB){aB=aB||B;if(aB.addEventListener){aB.addEventListener(i,j,false)}else{aB.attachEvent("on"+i,j)}}function ap(aF,aB,aJ,aE){var aK=aE.imageScale,aH,aC,aG,j,aD,aI;if(!aB.complete){return Z("load",function(){ap(aF,aB,aJ,aE)},aB)}if(!aF.complete){return Z("load",function(){ap(aF,aB,aJ,aE)},aF)}aB.width=aB.width;aB.height=aB.height;if(aK){aF.width=aB.width*aK;aF.height=aB.height*aK}aJ.w=aF.width;aJ.h=aF.height;if(aE.txtOpt){aC=aF;aH=aE.zoomMax*aE.txtScale;aD=aJ.w*aH;aI=aJ.h*aH;if(aD0){aJ.w+=2*aE.outlineIncrease;aJ.h+=2*aE.outlineIncrease;aD=aH*aJ.w;aI=aH*aJ.h;aC=aq(aJ.image,aD,aI);aJ.oimage=aC;aJ.image=u(aJ.image,aJ.oimage.width,aJ.oimage.height)}else{aD=aH*(aJ.w+(2*aE.outlineIncrease));aI=aH*(aJ.h+(2*aE.outlineIncrease));aC=aq(aJ.image,aD,aI);aJ.oimage=u(aC,aJ.image.width,aJ.image.height)}}}}function W(aC,aB){var j=B.defaultView,i=aB.replace(/\-([a-z])/g,function(aD){return aD.charAt(1).toUpperCase()});return(j&&j.getComputedStyle&&j.getComputedStyle(aC,null).getPropertyValue(aB))||(aC.currentStyle&&aC.currentStyle[i])}function s(j,aC,aB){var i=1,aD;if(aC){i=1*(j.getAttribute(aC)||aB)}else{if(aD=W(j,"font-size")){i=(aD.indexOf("px")>-1&&aD.replace("px","")*1)||(aD.indexOf("pt")>-1&&aD.replace("pt","")*1.25)||aD*3.3}}return i}function e(i){return i.target&&ae(i.target.id)?i.target.id:i.srcElement.parentNode.id}function Q(aD,aE){var aC,aB,i=parseInt(W(aE,"width"))/aE.width,j=parseInt(W(aE,"height"))/aE.height;if(ae(aD.offsetX)){aC={x:aD.offsetX,y:aD.offsetY}}else{aB=Y(aE.id);if(ae(aD.changedTouches)){aD=aD.changedTouches[0]}if(aD.pageX){aC={x:aD.pageX-aB.x,y:aD.pageY-aB.y}}}if(aC&&i&&j){aC.x/=i;aC.y/=j}return aC}function A(aB){var j=aB.target||aB.fromElement.parentNode,i=x.tc[j.id];if(i){i.mx=i.my=-1;i.UnFreeze();i.EndDrag()}}function ab(aF){var aC,aB=x,j,aE,aD=e(aF);for(aC in aB.tc){j=aB.tc[aC];if(j.tttimer){clearTimeout(j.tttimer);j.tttimer=null}}if(aD&&aB.tc[aD]){j=aB.tc[aD];if(aE=Q(aF,j.canvas)){j.mx=aE.x;j.my=aE.y;j.Drag(aF,aE)}j.drawn=0}}function y(aC){var j=x,i=B.addEventListener?0:1,aB=e(aC);if(aB&&aC.button==i&&j.tc[aB]){j.tc[aB].BeginDrag(aC)}}function ay(aD){var aB=x,j=B.addEventListener?0:1,aC=e(aD),i;if(aC&&aD.button==j&&aB.tc[aC]){i=aB.tc[aC];ab(aD);if(!i.EndDrag()&&!i.touched){i.Clicked(aD)}}}function R(aB){var i=x,j=e(aB);if(j&&aB.changedTouches&&i.tc[j]){i.tc[j].touched=1;i.tc[j].BeginDrag(aB)}}function p(aB){var i=x,j=e(aB);if(j&&aB.changedTouches&&i.tc[j]){at(aB);if(!i.tc[j].EndDrag()){i.tc[j].Draw();i.tc[j].Clicked(aB)}}}function at(aF){var aC,aB=x,j,aE,aD=e(aF);for(aC in aB.tc){j=aB.tc[aC];if(j.tttimer){clearTimeout(j.tttimer);j.tttimer=null}}if(aD&&aB.tc[aD]&&aF.changedTouches){j=aB.tc[aD];if(aE=Q(aF,j.canvas)){j.mx=aE.x;j.my=aE.y;j.Drag(aF,aE)}j.drawn=0}}function ac(aB){var i=x,j=e(aB);if(j&&i.tc[j]){aB.cancelBubble=true;aB.returnValue=false;aB.preventDefault&&aB.preventDefault();i.tc[j].Wheel((aB.wheelDelta||aB.detail)>0)}}function M(){D(E())}function D(aC){var j=x.tc,aB;x.NextFrame(x.interval);aC=aC||E();for(aB in j){j[aB].Draw(aC)}}function Y(aB){var aE=B.getElementById(aB),i=aE.getBoundingClientRect(),aH=B.documentElement,aF=B.body,aG=window,aC=aG.pageXOffset||aH.scrollLeft,aI=aG.pageYOffset||aH.scrollTop,aD=aH.clientLeft||aF.clientLeft,j=aH.clientTop||aF.clientTop;return{x:i.left+aC-aD,y:i.top+aI-j}}function U(j,aC,aD,aB){var i=j.radius*j.z1/(j.z1+j.z2+aC.z);return{x:aC.x*i*aD,y:aC.y*i*aB,z:aC.z,w:(j.z1-aC.z)/j.z2}}function av(i){this.e=i;this.br=0;this.line=[];this.text=[];this.original=i.innerText||i.textContent}aA=av.prototype;aA.Lines=function(aD){var aC=aD?1:0,aE,j,aB;aD=aD||this.e;aE=aD.childNodes;j=aE.length;for(aB=0;aBaB){aG.push(this.line.join(" "));this.line=[aH[aC]]}else{this.line.push(aH[aC])}}aG.push(this.line.join(" "))}return this.text=aG};function H(i,j){this.ts=E();this.tc=i;this.tag=j;this.x=this.y=this.w=this.h=this.sc=1;this.z=0;this.Draw=i.pulsateTo<1&&i.outlineMethod!="colour"?this.DrawPulsate:this.DrawSimple;this.radius=i.outlineRadius|0;this.SetMethod(i.outlineMethod)}w=H.prototype;w.SetMethod=function(aB){var j={block:["PreDraw","DrawBlock"],colour:["PreDraw","DrawColour"],outline:["PostDraw","DrawOutline"],classic:["LastDraw","DrawOutline"],size:["PreDraw","DrawColour"],none:["LastDraw"]},i=j[aB]||j.outline;if(aB=="none"){this.Draw=function(){return 1}}else{this.drawFunc=this[i[1]]}this[i[0]]=this.Draw};w.Update=function(aH,aG,aI,aD,aE,aF,aC,i){var j=this.tc.outlineOffset,aB=2*j;this.x=aE*aH+aC-j;this.y=aE*aG+i-j;this.w=aE*aI+aB;this.h=aE*aD+aB;this.sc=aE;this.z=aF};w.DrawOutline=function(aE,i,aD,j,aB,aC){aE.strokeStyle=aC;al(aE,i,aD,j,aB,this.radius,true)};w.DrawColour=function(aC,aF,aD,aG,aB,i,aH,j,aE){if(aH.oimage){aH.alpha=1;aH.Draw(aC,j,aE,aH.oimage);return 1}return this[aH.image?"DrawColourImage":"DrawColourText"](aC,aF,aD,aG,aB,i,aH,j,aE)};w.DrawColourText=function(aD,aG,aE,aH,aB,i,aI,j,aF){var aC=aI.colour;aI.colour=i;aI.alpha=1;aI.Draw(aD,j,aF);aI.colour=aC;return 1};w.DrawColourImage=function(aG,aJ,aH,aK,aF,i,aN,j,aI){var aL=aG.canvas,aD=~~q(aJ,0),aC=~~q(aH,0),aE=ax(aL.width-aD,aK)+0.5|0,aM=ax(aL.height-aC,aF)+0.5|0,aB;if(n){n.width=aE,n.height=aM}else{n=N(aE,aM)}if(!n){return this.SetMethod("outline")}aB=n.getContext("2d");aB.drawImage(aL,aD,aC,aE,aM,0,0,aE,aM);aG.clearRect(aD,aC,aE,aM);aN.alpha=1;aN.Draw(aG,j,aI);aG.setTransform(1,0,0,1,0,0);aG.save();aG.beginPath();aG.rect(aD,aC,aE,aM);aG.clip();aG.globalCompositeOperation="source-in";aG.fillStyle=i;aG.fillRect(aD,aC,aE,aM);aG.restore();aG.globalCompositeOperation="destination-over";aG.drawImage(n,0,0,aE,aM,aD,aC,aE,aM);aG.globalCompositeOperation="source-over";return 1};w.DrawBlock=function(aE,i,aD,j,aB,aC){aE.fillStyle=aC;al(aE,i,aD,j,aB,this.radius)};w.DrawSimple=function(aD,i,j,aC){var aB=this.tc;aD.setTransform(1,0,0,1,0,0);aD.strokeStyle=aB.outlineColour;aD.lineWidth=aB.outlineThickness;aD.shadowBlur=aD.shadowOffsetX=aD.shadowOffsetY=0;aD.globalAlpha=1;return this.drawFunc(aD,this.x,this.y,this.w,this.h,aB.outlineColour,i,j,aC)};w.DrawPulsate=function(aE,i,j,aC){var aD=E()-this.ts,aB=this.tc;aE.setTransform(1,0,0,1,0,0);aE.strokeStyle=aB.outlineColour;aE.lineWidth=aB.outlineThickness;aE.shadowBlur=aE.shadowOffsetX=aE.shadowOffsetY=0;aE.globalAlpha=aB.pulsateTo+((1-aB.pulsateTo)*(0.5+(v(2*Math.PI*aD/(1000*aB.pulsateTime))/2)));return this.drawFunc(aE,this.x,this.y,this.w,this.h,aB.outlineColour,i,j,aC)};w.Active=function(aB,i,j){return(i>=this.x&&j>=this.y&&i<=this.x+this.w&&j<=this.y+this.h)};w.PreDraw=w.PostDraw=w.LastDraw=au;function d(aC,aN,aJ,aM,aK,aD,aB,aF,aL,aE,aI,j,aH,i){var aG=aC.ctxt;this.tc=aC;this.image=aN.src?aN:null;this.text=aN.src?[]:aN;this.text_original=i;this.line_widths=[];this.title=aJ.title||null;this.a=aJ;this.position=new aa(aM[0],aM[1],aM[2]);this.x=this.y=this.z=0;this.w=aK;this.h=aD;this.colour=aB||aC.textColour;this.bgColour=aF||aC.bgColour;this.bgRadius=aL|0;this.bgOutline=aE||this.colour;this.bgOutlineThickness=aI|0;this.textFont=j||aC.textFont;this.padding=aH|0;this.sc=this.alpha=1;this.weighted=!aC.weight;this.outline=new H(aC,this);if(!this.image){this.textHeight=aC.textHeight;this.Measure(aG,aC)}this.SetShadowColour=aC.shadowAlpha?this.SetShadowColourAlpha:this.SetShadowColourFixed;this.SetDraw(aC)}b=d.prototype;b.EqualTo=function(aB){var j=aB.getElementsByTagName("img");if(this.a.href!=aB.href){return 0}if(j.length){return this.image.src==j[0].src}return(aB.innerText||aB.textContent)==this.text_original};b.SetDraw=function(i){this.Draw=this.image?(i.ie>7?this.DrawImageIE:this.DrawImage):this.DrawText;i.noSelect&&(this.CheckActive=au)};b.MeasureText=function(aE){var aC,aB=this.text.length,j=0,aD;for(aC=0;aC0){this.image=u(this.image,this.oimage.width,this.oimage.height)}else{this.oimage=u(this.oimage,this.image.width,this.image.height)}}}if(this.image){this.w=this.image.width/aC;this.h=this.image.height/aC}this.SetDraw(j);j.txtOpt=!!this.image}};b.SetFont=function(j,aC,aB,i){this.textFont=j;this.colour=aC;this.bgColour=aB;this.bgOutline=i;this.Measure(this.tc.ctxt,this.tc)};b.SetWeight=function(aB){var j=this.tc,aD=j.weightMode.split(/[, ]/),i,aC,aE=aB.length;if(!this.text.length){return}this.weighted=true;for(aC=0;aC0&&aC.weightSizeMax>aC.weightSizeMin){this.textHeight=aC.weightSize*(aC.weightSizeMin+(aC.weightSizeMax-aC.weightSizeMin)*i)}else{this.textHeight=q(1,aB*aC.weightSize)}}}}}};b.SetShadowColourFixed=function(aB,j,i){aB.shadowColor=j};b.SetShadowColourAlpha=function(aB,j,i){aB.shadowColor=S(j,i)};b.DrawText=function(aD,aG,aC){var aH=this.tc,aF=this.x,aE=this.y,aI=this.sc,j,aB;aD.globalAlpha=this.alpha;aD.fillStyle=this.colour;aH.shadow&&this.SetShadowColour(aD,aH.shadow,this.alpha);aD.font=this.font;aF+=aG/aI;aE+=(aC/aI)-(this.h/2);for(j=0;jthis.max_weight[aI]){this.max_weight[aI]=aF}if(!this.min_weight[aI]||aFthis.min_weight[aI]){j=1}}if(j){for(aB=0;aB=0&&this.my>=0&&this.taglist[aP].CheckActive(aR,aJ,aI);if(aS&&aS.sc>aN&&(!j||aS.z<=0)){aH=aS;aB=aP;aH.tag=this.taglist[aP];aN=aS.sc}}this.active=aH}this.txtOpt||(this.shadow&&this.SetShadow(aR));aR.clearRect(0,0,aD,aK);for(aP=0;aP=this.fadeIn){this.fadeIn=0;this.fixedAlpha=1}else{this.fixedAlpha=j/this.fadeIn}}if(this.fixedAnim){if(!this.fixedAnim.transform){this.fixedAnim.transform=this.transform}aB=this.fixedAnim,j=E()-aB.t0,aD=aB.angle,i,aC=this.animTiming(aB.t,j);this.transform=aB.transform;if(j>=aB.t){this.fixedCallbackTag=aB.tag;this.fixedCallback=aB.cb;this.fixedAnim=this.yaw=this.pitch=0}else{aD*=aC}i=P.Rotation(aD,aB.axis);this.transform=this.transform.mul(i);return(this.fixedAnim!=0)}return false};O.AnimatePosition=function(aB,aE,aC){var j=this,i=j.mx,aG=j.my,aD,aF;if(!j.frozen&&i>=0&&aG>=0&&iaB){i.yaw=aC>i.z0?i.yaw*i.decel:0}if(!i.ly&&j>aB){i.pitch=j>i.z0?i.pitch*i.decel:0}};O.Zoom=function(i){this.z2=this.z1*(1/i);this.drawn=0};O.Clicked=function(aB){var i=this.active;try{if(i&&i.tag){if(this.clickToFront===false||this.clickToFront===null){i.tag.Clicked(aB)}else{this.TagToFront(i.tag,this.clickToFront,function(){i.tag.Clicked(aB)},true)}}}catch(j){}};O.Wheel=function(j){var aB=this.zoom+this.zoomStep*(j?1:-1);this.zoom=ax(this.zoomMax,q(this.zoomMin,aB));this.Zoom(this.zoom)};O.BeginDrag=function(i){this.down=Q(i,this.canvas);i.cancelBubble=true;i.returnValue=false;i.preventDefault&&i.preventDefault()};O.Drag=function(aD,aC){if(this.dragControl&&this.down){var aB=this.dragThreshold*this.dragThreshold,j=aC.x-this.down.x,i=aC.y-this.down.y;if(this.dragging||j*j+i*i>aB){this.dx=j;this.dy=i;this.dragging=1;this.down=aC}}};O.EndDrag=function(){var i=this.dragging;this.dragging=this.down=null;return i};O.Pause=function(){this.paused=true};O.Resume=function(){this.paused=false};O.SetSpeed=function(j){this.initial=j;this.yaw=j[0]*this.maxSpeed;this.pitch=j[1]*this.maxSpeed};O.FindTag=function(aB){if(!ae(aB)){return null}ae(aB.index)&&(aB=aB.index);if(!G(aB)){return this.taglist[aB]}var aC,aD,j;if(ae(aB.id)){aC="id",aD=aB.id}else{if(ae(aB.text)){aC="innerText",aD=aB.text}}for(j=0;j=1){return 0}if(aB<=-1){return Math.PI}return Math.acos(aB)};F.unit=function(){var i=this.length();return new aa(this.x/i,this.y/i,this.z/i)};function af(aB,j){j=j*Math.PI/180;aB=aB*Math.PI/180;var i=ad(aB)*v(j),aD=-ad(j),aC=-v(aB)*v(j);return new aa(i,aD,aC)}function P(i){this[1]={1:i[0],2:i[1],3:i[2]};this[2]={1:i[3],2:i[4],3:i[5]};this[3]={1:i[6],2:i[7],3:i[8]}}az=P.prototype;P.Identity=function(){return new P([1,0,0,0,1,0,0,0,1])};P.Rotation=function(aC,i){var j=ad(aC),aB=v(aC),aD=1-aB;return new P([aB+am(i.x,2)*aD,i.x*i.y*aD-i.z*j,i.x*i.z*aD+i.y*j,i.y*i.x*aD+i.z*j,aB+am(i.y,2)*aD,i.y*i.z*aD-i.x*j,i.z*i.x*aD-i.y*j,i.z*i.y*aD+i.x*j,aB+am(i.z,2)*aD])};az.mul=function(aB){var aC=[],aF,aE,aD=(aB.xform?1:0);for(aF=1;aF<=3;++aF){for(aE=1;aE<=3;++aE){if(aD){aC.push(this[aF][1]*aB[1][aE]+this[aF][2]*aB[2][aE]+this[aF][3]*aB[3][aE])}else{aC.push(this[aF][aE]*aB)}}}return new P(aC)};az.xform=function(aB){var j={},i=aB.x,aD=aB.y,aC=aB.z;j.x=i*this[1][1]+aD*this[2][1]+aC*this[3][1];j.y=i*this[1][2]+aD*this[2][2]+aC*this[3][2];j.z=i*this[1][3]+aD*this[2][3]+aC*this[3][3];return j};function o(aC,aE,aJ,aG){var aF,aI,j,aH,aK=[],aD=Math.PI*(3-C(5)),aB=2/aC;for(aF=0;aF0)}function ag(aF,j,aE,aD){var aC=aF.createLinearGradient(0,0,j,0),aB;for(aB in aD){aC.addColorStop(1-aB,aD[aB])}aF.fillStyle=aC;aF.fillRect(0,aE,j,1)}function g(aD,aB,j){var aC=1024,aH=1,aG=aD.weightGradient,aF,aJ,aE,aI;if(aD.gCanvas){aJ=aD.gCanvas.getContext("2d");aH=aD.gCanvas.height}else{if(G(aG[0])){aH=aG.length}else{aG=[aG]}aD.gCanvas=aF=N(aC,aH);if(!aF){return null}aJ=aF.getContext("2d");for(aE=0;aEaM?aO+aM:aM*2)*aD,j=aJ+(aI>aM?aI+aM:aM*2)*aD,aG=aD*((aM||0)+(aC[0]<0?aO:0)),aB=aD*((aM||0)+(aC[1]<0?aI:0)),aF,aK;aF=N(aE,j);if(!aF){return null}aK=aF.getContext("2d");aL&&(aK.shadowColor=aL);aM&&(aK.shadowBlur=aM*aD);aC&&(aK.shadowOffsetX=aC[0]*aD,aK.shadowOffsetY=aC[1]*aD);aK.drawImage(aH,aG,aB,aN,aJ);return{image:aF,width:aE/aD,height:j/aD}}function r(aN,aF,aL){var aM=parseInt(aN.toString().length*aL),aE=parseInt(aL*2*aN.length),aC=N(aM,aE),aI,j,aD,aH,aK,aJ,aB,aG;if(!aC){return null}aI=aC.getContext("2d");aI.fillStyle="#000";aI.fillRect(0,0,aM,aE);V(aI,aL+"px "+aF,"#fff",aN,0,0,0,[]);j=aI.getImageData(0,0,aM,aE);aD=j.width;aH=j.height;aG={min:{x:aD,y:aH},max:{x:-1,y:-1}};for(aJ=0;aJ0){if(aKaG.max.x){aG.max.x=aK}if(aJaG.max.y){aG.max.y=aJ}}}}if(aD!=aM){aG.min.x*=(aM/aD);aG.max.x*=(aM/aD)}if(aH!=aE){aG.min.y*=(aM/aH);aG.max.y*=(aM/aH)}aC=null;return aG}function m(i){return"'"+i.replace(/(\'|\")/g,"").replace(/\s*,\s*/g,"', '")+"'"}function Z(i,j,aB){aB=aB||B;if(aB.addEventListener){aB.addEventListener(i,j,false)}else{aB.attachEvent("on"+i,j)}}function ap(aF,aB,aJ,aE){var aK=aE.imageScale,aH,aC,aG,j,aD,aI;if(!aB.complete){return Z("load",function(){ap(aF,aB,aJ,aE)},aB)}if(!aF.complete){return Z("load",function(){ap(aF,aB,aJ,aE)},aF)}aB.width=aB.width;aB.height=aB.height;if(aK){aF.width=aB.width*aK;aF.height=aB.height*aK}aJ.w=aF.width;aJ.h=aF.height;if(aE.txtOpt){aC=aF;aH=aE.zoomMax*aE.txtScale;aD=aJ.w*aH;aI=aJ.h*aH;if(aD0){aJ.w+=2*aE.outlineIncrease;aJ.h+=2*aE.outlineIncrease;aD=aH*aJ.w;aI=aH*aJ.h;aC=aq(aJ.image,aD,aI);aJ.oimage=aC;aJ.image=u(aJ.image,aJ.oimage.width,aJ.oimage.height)}else{aD=aH*(aJ.w+(2*aE.outlineIncrease));aI=aH*(aJ.h+(2*aE.outlineIncrease));aC=aq(aJ.image,aD,aI);aJ.oimage=u(aC,aJ.image.width,aJ.image.height)}}}}function W(aC,aB){var j=B.defaultView,i=aB.replace(/\-([a-z])/g,function(aD){return aD.charAt(1).toUpperCase()});return(j&&j.getComputedStyle&&j.getComputedStyle(aC,null).getPropertyValue(aB))||(aC.currentStyle&&aC.currentStyle[i])}function s(j,aC,aB){var i=1,aD;if(aC){i=1*(j.getAttribute(aC)||aB)}else{if(aD=W(j,"font-size")){i=(aD.indexOf("px")>-1&&aD.replace("px","")*1)||(aD.indexOf("pt")>-1&&aD.replace("pt","")*1.25)||aD*3.3}}return i}function e(i){return i.target&&ae(i.target.id)?i.target.id:i.srcElement.parentNode.id}function Q(aD,aE){var aC,aB,i=parseInt(W(aE,"width"))/aE.width,j=parseInt(W(aE,"height"))/aE.height;if(ae(aD.offsetX)){aC={x:aD.offsetX,y:aD.offsetY}}else{aB=Y(aE.id);if(ae(aD.changedTouches)){aD=aD.changedTouches[0]}if(aD.pageX){aC={x:aD.pageX-aB.x,y:aD.pageY-aB.y}}}if(aC&&i&&j){aC.x/=i;aC.y/=j}return aC}function A(aB){var j=aB.target||aB.fromElement.parentNode,i=x.tc[j.id];if(i){i.mx=i.my=-1;i.UnFreeze();i.EndDrag()}}function ab(aF){var aC,aB=x,j,aE,aD=e(aF);for(aC in aB.tc){j=aB.tc[aC];if(j.tttimer){clearTimeout(j.tttimer);j.tttimer=null}}if(aD&&aB.tc[aD]){j=aB.tc[aD];if(aE=Q(aF,j.canvas)){j.mx=aE.x;j.my=aE.y;j.Drag(aF,aE)}j.drawn=0}}function y(aC){var j=x,i=B.addEventListener?0:1,aB=e(aC);if(aB&&aC.button==i&&j.tc[aB]){j.tc[aB].BeginDrag(aC)}}function ay(aD){var aB=x,j=B.addEventListener?0:1,aC=e(aD),i;if(aC&&aD.button==j&&aB.tc[aC]){i=aB.tc[aC];ab(aD);if(!i.EndDrag()&&!i.touched){i.Clicked(aD)}}}function R(aB){var i=x,j=e(aB);if(j&&aB.changedTouches&&i.tc[j]){i.tc[j].touched=1;i.tc[j].BeginDrag(aB)}}function p(aB){var i=x,j=e(aB);if(j&&aB.changedTouches&&i.tc[j]){at(aB);if(!i.tc[j].EndDrag()){i.tc[j].Draw();i.tc[j].Clicked(aB)}}}function at(aF){var aC,aB=x,j,aE,aD=e(aF);for(aC in aB.tc){j=aB.tc[aC];if(j.tttimer){clearTimeout(j.tttimer);j.tttimer=null}}if(aD&&aB.tc[aD]&&aF.changedTouches){j=aB.tc[aD];if(aE=Q(aF,j.canvas)){j.mx=aE.x;j.my=aE.y;j.Drag(aF,aE)}j.drawn=0}}function ac(aB){var i=x,j=e(aB);if(j&&i.tc[j]){aB.cancelBubble=true;aB.returnValue=false;aB.preventDefault&&aB.preventDefault();i.tc[j].Wheel((aB.wheelDelta||aB.detail)>0)}}function M(){D(E())}function D(aC){var j=x.tc,aB;x.NextFrame(x.interval);aC=aC||E();for(aB in j){j[aB].Draw(aC)}}function Y(aB){var aE=B.getElementById(aB),i=aE.getBoundingClientRect(),aH=B.documentElement,aF=B.body,aG=window,aC=aG.pageXOffset||aH.scrollLeft,aI=aG.pageYOffset||aH.scrollTop,aD=aH.clientLeft||aF.clientLeft,j=aH.clientTop||aF.clientTop;return{x:i.left+aC-aD,y:i.top+aI-j}}function U(j,aC,aD,aB){var i=j.radius*j.z1/(j.z1+j.z2+aC.z);return{x:aC.x*i*aD,y:aC.y*i*aB,z:aC.z,w:(j.z1-aC.z)/j.z2}}function av(i){this.e=i;this.br=0;this.line=[];this.text=[];this.original=i.innerText||i.textContent}aA=av.prototype;aA.Lines=function(aD){var aC=aD?1:0,aE,j,aB;aD=aD||this.e;aE=aD.childNodes;j=aE.length;for(aB=0;aBaB){aG.push(this.line.join(" "));this.line=[aH[aC]]}else{this.line.push(aH[aC])}}aG.push(this.line.join(" "))}return this.text=aG};function H(i,j){this.ts=E();this.tc=i;this.tag=j;this.x=this.y=this.w=this.h=this.sc=1;this.z=0;this.Draw=i.pulsateTo<1&&i.outlineMethod!="colour"?this.DrawPulsate:this.DrawSimple;this.radius=i.outlineRadius|0;this.SetMethod(i.outlineMethod)}w=H.prototype;w.SetMethod=function(aB){var j={block:["PreDraw","DrawBlock"],colour:["PreDraw","DrawColour"],outline:["PostDraw","DrawOutline"],classic:["LastDraw","DrawOutline"],size:["PreDraw","DrawColour"],none:["LastDraw"]},i=j[aB]||j.outline;if(aB=="none"){this.Draw=function(){return 1}}else{this.drawFunc=this[i[1]]}this[i[0]]=this.Draw};w.Update=function(aH,aG,aI,aD,aE,aF,aC,i){var j=this.tc.outlineOffset,aB=2*j;this.x=aE*aH+aC-j;this.y=aE*aG+i-j;this.w=aE*aI+aB;this.h=aE*aD+aB;this.sc=aE;this.z=aF};w.DrawOutline=function(aE,i,aD,j,aB,aC){aE.strokeStyle=aC;al(aE,i,aD,j,aB,this.radius,true)};w.DrawColour=function(aC,aF,aD,aG,aB,i,aH,j,aE){if(aH.oimage){aH.alpha=1;aH.Draw(aC,j,aE,aH.oimage);return 1}return this[aH.image?"DrawColourImage":"DrawColourText"](aC,aF,aD,aG,aB,i,aH,j,aE)};w.DrawColourText=function(aD,aG,aE,aH,aB,i,aI,j,aF){var aC=aI.colour;aI.colour=i;aI.alpha=1;aI.Draw(aD,j,aF);aI.colour=aC;return 1};w.DrawColourImage=function(aG,aJ,aH,aK,aF,i,aN,j,aI){var aL=aG.canvas,aD=~~q(aJ,0),aC=~~q(aH,0),aE=ax(aL.width-aD,aK)+0.5|0,aM=ax(aL.height-aC,aF)+0.5|0,aB;if(n){n.width=aE,n.height=aM}else{n=N(aE,aM)}if(!n){return this.SetMethod("outline")}aB=n.getContext("2d");aB.drawImage(aL,aD,aC,aE,aM,0,0,aE,aM);aG.clearRect(aD,aC,aE,aM);aN.alpha=1;aN.Draw(aG,j,aI);aG.setTransform(1,0,0,1,0,0);aG.save();aG.beginPath();aG.rect(aD,aC,aE,aM);aG.clip();aG.globalCompositeOperation="source-in";aG.fillStyle=i;aG.fillRect(aD,aC,aE,aM);aG.restore();aG.globalCompositeOperation="destination-over";aG.drawImage(n,0,0,aE,aM,aD,aC,aE,aM);aG.globalCompositeOperation="source-over";return 1};w.DrawBlock=function(aE,i,aD,j,aB,aC){aE.fillStyle=aC;al(aE,i,aD,j,aB,this.radius)};w.DrawSimple=function(aD,i,j,aC){var aB=this.tc;aD.setTransform(1,0,0,1,0,0);aD.strokeStyle=aB.outlineColour;aD.lineWidth=aB.outlineThickness;aD.shadowBlur=aD.shadowOffsetX=aD.shadowOffsetY=0;aD.globalAlpha=1;return this.drawFunc(aD,this.x,this.y,this.w,this.h,aB.outlineColour,i,j,aC)};w.DrawPulsate=function(aE,i,j,aC){var aD=E()-this.ts,aB=this.tc;aE.setTransform(1,0,0,1,0,0);aE.strokeStyle=aB.outlineColour;aE.lineWidth=aB.outlineThickness;aE.shadowBlur=aE.shadowOffsetX=aE.shadowOffsetY=0;aE.globalAlpha=aB.pulsateTo+((1-aB.pulsateTo)*(0.5+(v(2*Math.PI*aD/(1000*aB.pulsateTime))/2)));return this.drawFunc(aE,this.x,this.y,this.w,this.h,aB.outlineColour,i,j,aC)};w.Active=function(aB,i,j){return(i>=this.x&&j>=this.y&&i<=this.x+this.w&&j<=this.y+this.h)};w.PreDraw=w.PostDraw=w.LastDraw=au;function d(aC,aN,aJ,aM,aK,aD,aB,aF,aL,aE,aI,j,aH,i){var aG=aC.ctxt;this.tc=aC;this.image=aN.src?aN:null;this.text=aN.src?[]:aN;this.text_original=i;this.line_widths=[];this.title=aJ.title||null;this.a=aJ;this.position=new aa(aM[0],aM[1],aM[2]);this.x=this.y=this.z=0;this.w=aK;this.h=aD;this.colour=aB||aC.textColour;this.bgColour=aF||aC.bgColour;this.bgRadius=aL|0;this.bgOutline=aE||this.colour;this.bgOutlineThickness=aI|0;this.textFont=j||aC.textFont;this.padding=aH|0;this.sc=this.alpha=1;this.weighted=!aC.weight;this.outline=new H(aC,this);if(!this.image){this.textHeight=aC.textHeight;this.Measure(aG,aC)}this.SetShadowColour=aC.shadowAlpha?this.SetShadowColourAlpha:this.SetShadowColourFixed;this.SetDraw(aC)}b=d.prototype;b.EqualTo=function(aB){var j=aB.getElementsByTagName("img");if(this.a.href!=aB.href){return 0}if(j.length){return this.image.src==j[0].src}return(aB.innerText||aB.textContent)==this.text_original};b.SetDraw=function(i){this.Draw=this.image?(i.ie>7?this.DrawImageIE:this.DrawImage):this.DrawText;i.noSelect&&(this.CheckActive=au)};b.MeasureText=function(aE){var aC,aB=this.text.length,j=0,aD;for(aC=0;aC0){this.image=u(this.image,this.oimage.width,this.oimage.height)}else{this.oimage=u(this.oimage,this.image.width,this.image.height)}}}if(this.image){this.w=this.image.width/aC;this.h=this.image.height/aC}this.SetDraw(j);j.txtOpt=!!this.image}};b.SetFont=function(j,aC,aB,i){this.textFont=j;this.colour=aC;this.bgColour=aB;this.bgOutline=i;this.Measure(this.tc.ctxt,this.tc)};b.SetWeight=function(aB){var j=this.tc,aD=j.weightMode.split(/[, ]/),i,aC,aE=aB.length;if(!this.text.length){return}this.weighted=true;for(aC=0;aC0&&aC.weightSizeMax>aC.weightSizeMin){this.textHeight=aC.weightSize*(aC.weightSizeMin+(aC.weightSizeMax-aC.weightSizeMin)*i)}else{this.textHeight=q(1,aB*aC.weightSize)}}}}}};b.SetShadowColourFixed=function(aB,j,i){aB.shadowColor=j};b.SetShadowColourAlpha=function(aB,j,i){aB.shadowColor=S(j,i)};b.DrawText=function(aD,aG,aC){var aH=this.tc,aF=this.x,aE=this.y,aI=this.sc,j,aB;aD.globalAlpha=this.alpha;aD.fillStyle=this.colour;aH.shadow&&this.SetShadowColour(aD,aH.shadow,this.alpha);aD.font=this.font;aF+=aG/aI;aE+=(aC/aI)-(this.h/2);for(j=0;jthis.max_weight[aI]){this.max_weight[aI]=aF}if(!this.min_weight[aI]||aFthis.min_weight[aI]){j=1}}if(j){for(aB=0;aB=0&&this.my>=0&&this.taglist[aP].CheckActive(aR,aJ,aI);if(aS&&aS.sc>aN&&(!j||aS.z<=0)){aH=aS;aB=aP;aH.tag=this.taglist[aP];aN=aS.sc}}this.active=aH}this.txtOpt||(this.shadow&&this.SetShadow(aR));aR.clearRect(0,0,aD,aK);for(aP=0;aP=this.fadeIn){this.fadeIn=0;this.fixedAlpha=1}else{this.fixedAlpha=j/this.fadeIn}}if(this.fixedAnim){if(!this.fixedAnim.transform){this.fixedAnim.transform=this.transform}aB=this.fixedAnim,j=E()-aB.t0,aD=aB.angle,i,aC=this.animTiming(aB.t,j);this.transform=aB.transform;if(j>=aB.t){this.fixedCallbackTag=aB.tag;this.fixedCallback=aB.cb;this.fixedAnim=this.yaw=this.pitch=0}else{aD*=aC}i=P.Rotation(aD,aB.axis);this.transform=this.transform.mul(i);return(this.fixedAnim!=0)}return false};O.AnimatePosition=function(aB,aE,aC){var j=this,i=j.mx,aG=j.my,aD,aF;if(!j.frozen&&i>=0&&aG>=0&&iaB){i.yaw=aC>i.z0?i.yaw*i.decel:0}if(!i.ly&&j>aB){i.pitch=j>i.z0?i.pitch*i.decel:0}};O.Zoom=function(i){this.z2=this.z1*(1/i);this.drawn=0};O.Clicked=function(aB){var i=this.active;try{if(i&&i.tag){if(this.clickToFront===false||this.clickToFront===null){i.tag.Clicked(aB)}else{this.TagToFront(i.tag,this.clickToFront,function(){i.tag.Clicked(aB)},true)}}}catch(j){}};O.Wheel=function(j){var aB=this.zoom+this.zoomStep*(j?1:-1);this.zoom=ax(this.zoomMax,q(this.zoomMin,aB));this.Zoom(this.zoom)};O.BeginDrag=function(i){this.down=Q(i,this.canvas);i.cancelBubble=true;i.returnValue=false;i.preventDefault&&i.preventDefault()};O.Drag=function(aD,aC){if(this.dragControl&&this.down){var aB=this.dragThreshold*this.dragThreshold,j=aC.x-this.down.x,i=aC.y-this.down.y;if(this.dragging||j*j+i*i>aB){this.dx=j;this.dy=i;this.dragging=1;this.down=aC}}};O.EndDrag=function(){var i=this.dragging;this.dragging=this.down=null;return i};O.Pause=function(){this.paused=true};O.Resume=function(){this.paused=false};O.SetSpeed=function(j){this.initial=j;this.yaw=j[0]*this.maxSpeed;this.pitch=j[1]*this.maxSpeed};O.FindTag=function(aB){if(!ae(aB)){return null}ae(aB.index)&&(aB=aB.index);if(!G(aB)){return this.taglist[aB]}var aC,aD,j;if(ae(aB.id)){aC="id",aD=aB.id}else{if(ae(aB.text)){aC="innerText",aD=aB.text}}for(j=0;j