Current File : /home/karenpetzb/www/js/tagcloud/jquery.tagcanvas.min.js |
/**
* Copyright (C) 2010-2013 Graham Breach
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* jQuery.tagcanvas 2.2
* For more information, please contact <graham@goat1000.com>
*/
(function(ad){var ap,ao,aa=Math.abs,w=Math.sin,l=Math.cos,I=Math.max,au=Math.min,V=Math.ceil,ai=Math.sqrt,X=Math.pow,L={},O={},R={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,"},e,ae,d,a,af,z,o=document,H,c={};for(ap=0;ap<256;++ap){ao=ap.toString(16);if(ap<16){ao="0"+ao}O[ao]=O[ao.toUpperCase()]=ap.toString()+","}function ak(i){return typeof i!="undefined"}function v(i){return typeof i=="object"&&i!=null}function b(i,j,aw){return isNaN(i)?aw:au(aw,I(j,i))}function Y(){return false}function T(){return new Date().valueOf()}function n(aw,az){var j=[],ax=aw.length,ay;for(ay=0;ay<ax;++ay){j.push(aw[ay])}j.sort(az);return j}function ac(j){var ax=j.length-1,aw,ay;while(ax){ay=~~(Math.random()*ax);aw=j[ax];j[ax]=j[ay];j[ay]=aw;--ax}}function U(i,aw,j){this.x=i;this.y=aw;this.z=j}af=U.prototype;af.length=function(){return ai(this.x*this.x+this.y*this.y+this.z*this.z)};af.dot=function(i){return this.x*i.x+this.y*i.y+this.z*i.z};af.cross=function(j){var i=this.y*j.z-this.z*j.y,ax=this.z*j.x-this.x*j.z,aw=this.x*j.y-this.y*j.x;return new U(i,ax,aw)};af.angle=function(j){var i=this.dot(j),aw;if(i==0){return Math.PI/2}aw=i/(this.length()*j.length());if(aw>=1){return 0}if(aw<=-1){return Math.PI}return Math.acos(aw)};af.unit=function(){var i=this.length();return new U(this.x/i,this.y/i,this.z/i)};function K(aw,j){j=j*Math.PI/180;aw=aw*Math.PI/180;var i=w(aw)*l(j),ay=-w(j),ax=-l(aw)*l(j);return new U(i,ay,ax)}function k(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]}}a=k.prototype;k.Identity=function(){return new k([1,0,0,0,1,0,0,0,1])};k.Rotation=function(ax,i){var j=w(ax),aw=l(ax),ay=1-aw;return new k([aw+X(i.x,2)*ay,i.x*i.y*ay-i.z*j,i.x*i.z*ay+i.y*j,i.y*i.x*ay+i.z*j,aw+X(i.y,2)*ay,i.y*i.z*ay-i.x*j,i.z*i.x*ay-i.y*j,i.z*i.y*ay+i.x*j,aw+X(i.z,2)*ay])};a.mul=function(aw){var ax=[],aA,az,ay=(aw.xform?1:0);for(aA=1;aA<=3;++aA){for(az=1;az<=3;++az){if(ay){ax.push(this[aA][1]*aw[1][az]+this[aA][2]*aw[2][az]+this[aA][3]*aw[3][az])}else{ax.push(this[aA][az]*aw)}}}return new k(ax)};a.xform=function(aw){var j={},i=aw.x,ay=aw.y,ax=aw.z;j.x=i*this[1][1]+ay*this[2][1]+ax*this[3][1];j.y=i*this[1][2]+ay*this[2][2]+ax*this[3][2];j.z=i*this[1][3]+ay*this[2][3]+ax*this[3][3];return j};function s(ax,az,aE,aB){var aA,aD,j,aC,aF=[],ay=Math.PI*(3-ai(5)),aw=2/ax;for(aA=0;aA<ax;++aA){aD=aA*aw-1+(aw/2);j=ai(1-aD*aD);aC=aA*ay;aF.push([l(aC)*j*az,aD*aE,w(aC)*j*aB])}return aF}function at(ay,aw,aB,aH,aF){var aG,aI=[],az=Math.PI*(3-ai(5)),ax=2/ay,aE,aD,aC,aA;for(aE=0;aE<ay;++aE){aD=aE*ax-1+(ax/2);aG=aE*az;aC=l(aG);aA=w(aG);aI.push(aw?[aD*aB,aC*aH,aA*aF]:[aC*aB,aD*aH,aA*aF])}return aI}function Q(aw,ax,aA,aG,aE,aC){var aF,aH=[],ay=Math.PI*2/ax,aD,aB,az;for(aD=0;aD<ax;++aD){aF=aD*ay;aB=l(aF);az=w(aF);aH.push(aw?[aC*aA,aB*aG,az*aE]:[aB*aA,aC*aG,az*aE])}return aH}function E(ax,i,j,aw){return at(ax,0,i,j,aw)}function W(ax,i,j,aw){return at(ax,1,i,j,aw)}function C(ay,i,j,aw,ax){ax=isNaN(ax)?0:ax*1;return Q(0,ay,i,j,aw,ax)}function N(ay,i,j,aw,ax){ax=isNaN(ax)?0:ax*1;return Q(1,ay,i,j,aw,ax)}function u(az,i){var ay=az,ax,aw,j=(i*1).toPrecision(3)+")";if(az[0]==="#"){if(!L[az]){if(az.length===4){L[az]="rgba("+R[az[1]]+R[az[2]]+R[az[3]]}else{L[az]="rgba("+O[az.substr(1,2)]+O[az.substr(3,2)]+O[az.substr(5,2)]}}ay=L[az]+j}else{if(az.substr(0,4)==="rgb("||az.substr(0,4)==="hsl("){ay=(az.replace("(","a(").replace(")",","+j))}else{if(az.substr(0,5)==="rgba("||az.substr(0,5)==="hsla("){ax=az.lastIndexOf(",")+1,aw=az.indexOf(")");i*=parseFloat(az.substring(ax,aw));ay=az.substr(0,ax)+i.toPrecision(3)+")"}}}return ay}function h(i,j){if(window.G_vmlCanvasManager){return null}var aw=o.createElement("canvas");aw.width=i;aw.height=j;return aw}function D(){var j=h(3,3),ax,aw;if(!j){return false}ax=j.getContext("2d");ax.strokeStyle="#000";ax.shadowColor="#fff";ax.shadowBlur=3;ax.globalAlpha=0;ax.strokeRect(2,2,2,2);ax.globalAlpha=1;aw=ax.getImageData(2,2,1,1);j=null;return(aw.data[0]>0)}function av(aD,j){var aw=1024,az=aD.weightGradient,ay,aB,ax,aC,aA;if(aD.gCanvas){aB=aD.gCanvas.getContext("2d")}else{aD.gCanvas=ay=h(aw,1);if(!ay){return null}aB=ay.getContext("2d");aC=aB.createLinearGradient(0,0,aw,0);for(ax in az){aC.addColorStop(1-ax,az[ax])}aB.fillStyle=aC;aB.fillRect(0,0,aw,1)}aA=aB.getImageData(~~((aw-1)*j),0,1,1).data;return"rgba("+aA[0]+","+aA[1]+","+aA[2]+","+(aA[3]/255)+")"}function B(aB,aA,ax,aH,aC,aD,aw,aE,aF){var az=(aD||0)+(aw&&aw[0]<0?aa(aw[0]):0),j=(aD||0)+(aw&&aw[1]<0?aa(aw[1]):0),ay,aG;aB.font=aA;aB.textBaseline="top";aB.fillStyle=ax;aC&&(aB.shadowColor=aC);aD&&(aB.shadowBlur=aD);aw&&(aB.shadowOffsetX=aw[0],aB.shadowOffsetY=aw[1]);for(ay=0;ay<aH.length;++ay){aG=aF?(aE-aF[ay])/2:0;aB.fillText(aH[ay],az+aG,j);j+=parseInt(aA)}}function q(aK,aB,aG,aI,aA,ax,aE,aF,j,aJ,aH,aD,aw){var ay=aI+aa(j[0])+aF+aF,i=aA+aa(j[1])+aF+aF,az,aC;az=h(ay+aJ,i+aH);if(!az){return null}aC=az.getContext("2d");B(aC,aB,ax,aK,aE,aF,j,aD,aw);return az}function an(aB,aE,aF,ax){var aG=aa(ax[0]),aC=aa(ax[1]),ay=aB.width+(aG>aF?aG+aF:aF*2),j=aB.height+(aC>aF?aC+aF:aF*2),aA=(aF||0)+(ax[0]<0?aG:0),aw=(aF||0)+(ax[1]<0?aC:0),az,aD;az=h(ay,j);if(!az){return null}aD=az.getContext("2d");aE&&(aD.shadowColor=aE);aF&&(aD.shadowBlur=aF);ax&&(aD.shadowOffsetX=ax[0],aD.shadowOffsetY=ax[1]);aD.drawImage(aB,aA,aw,aB.width,aB.height);return az}function ag(aI,aA,aG){var aH=parseInt(aI.toString().length*aG),az=parseInt(aG*2*aI.length),ax=h(aH,az),aD,j,ay,aC,aF,aE,aw,aB;if(!ax){return null}aD=ax.getContext("2d");aD.fillStyle="#000";aD.fillRect(0,0,aH,az);B(aD,aG+"px "+aA,"#fff",aI,0,0,[]);j=aD.getImageData(0,0,aH,az);ay=j.width;aC=j.height;aB={min:{x:ay,y:aC},max:{x:-1,y:-1}};for(aE=0;aE<aC;++aE){for(aF=0;aF<ay;++aF){aw=(aE*ay+aF)*4;if(j.data[aw+1]>0){if(aF<aB.min.x){aB.min.x=aF}if(aF>aB.max.x){aB.max.x=aF}if(aE<aB.min.y){aB.min.y=aE}if(aE>aB.max.y){aB.max.y=aE}}}}if(ay!=aH){aB.min.x*=(aH/ay);aB.max.x*=(aH/ay)}if(aC!=az){aB.min.y*=(aH/aC);aB.max.y*=(aH/aC)}ax=null;return aB}function y(i){return"'"+i.replace(/(\'|\")/g,"").replace(/\s*,\s*/g,"', '")+"'"}function G(i,j,aw){aw=aw||o;if(aw.addEventListener){aw.addEventListener(i,j,false)}else{aw.attachEvent("on"+i,j)}}function am(ay,aA,ax,aw){var az=aw.imageScale,j;if(!aA.complete){return G("load",function(){am(ay,aA,ax,aw)},aA)}if(!ay.complete){return G("load",function(){am(ay,aA,ax,aw)},ay)}aA.width=aA.width;aA.height=aA.height;if(az){ay.width=aA.width*az;ay.height=aA.height*az}ax.w=ay.width;ax.h=ay.height;if(aw.txtOpt&&aw.shadow){j=an(ay,aw.shadow,aw.shadowBlur,aw.shadowOffset);if(j){ax.image=j;ax.w=j.width;ax.h=j.height}}}function aj(ax,aw){var j=o.defaultView,i=aw.replace(/\-([a-z])/g,function(ay){return ay.charAt(1).toUpperCase()});return(j&&j.getComputedStyle&&j.getComputedStyle(ax,null).getPropertyValue(aw))||(ax.currentStyle&&ax.currentStyle[i])}function F(aw,j){var i=1,ax;if(aw.weightFrom){i=1*(j.getAttribute(aw.weightFrom)||aw.textHeight)}else{if(ax=aj(j,"font-size")){i=(ax.indexOf("px")>-1&&ax.replace("px","")*1)||(ax.indexOf("pt")>-1&&ax.replace("pt","")*1.25)||ax*3.3}else{aw.weight=false}}return i}function A(i){return i.target&&ak(i.target.id)?i.target.id:i.srcElement.parentNode.id}function M(ay,az){var ax,aw,i=parseInt(aj(az,"width"))/az.width,j=parseInt(aj(az,"height"))/az.height;if(ak(ay.offsetX)){ax={x:ay.offsetX,y:ay.offsetY}}else{aw=r(az.id);if(ak(ay.changedTouches)){ay=ay.changedTouches[0]}if(ay.pageX){ax={x:ay.pageX-aw.x,y:ay.pageY-aw.y}}}if(ax&&i&&j){ax.x/=i;ax.y/=j}return ax}function m(aw){var j=aw.target||aw.fromElement.parentNode,i=x.tc[j.id];if(i){i.mx=i.my=-1;i.UnFreeze();i.EndDrag()}}function ah(aA){var ax,aw=x,j,az,ay=A(aA);for(ax in aw.tc){j=aw.tc[ax];if(j.tttimer){clearTimeout(j.tttimer);j.tttimer=null}}if(ay&&aw.tc[ay]){j=aw.tc[ay];if(az=M(aA,j.canvas)){j.mx=az.x;j.my=az.y;j.Drag(aA,az)}j.drawn=0}}function Z(ax){var j=x,i=o.addEventListener?0:1,aw=A(ax);if(aw&&ax.button==i&&j.tc[aw]){j.tc[aw].BeginDrag(ax)}}function g(ay){var aw=x,j=o.addEventListener?0:1,ax=A(ay),i;if(ax&&ay.button==j&&aw.tc[ax]){i=aw.tc[ax];ah(ay);if(!i.EndDrag()&&!i.touched){i.Clicked(ay)}}}function J(aw){var i=x,j=A(aw);if(j&&aw.changedTouches&&i.tc[j]){i.tc[j].touched=1;i.tc[j].BeginDrag(aw)}}function p(aw){var i=x,j=A(aw);if(j&&aw.changedTouches&&i.tc[j]){ab(aw);if(!i.tc[j].EndDrag()){i.tc[j].Draw();i.tc[j].Clicked(aw)}}}function ab(aA){var ax,aw=x,j,az,ay=A(aA);for(ax in aw.tc){j=aw.tc[ax];if(j.tttimer){clearTimeout(j.tttimer);j.tttimer=null}}if(ay&&aw.tc[ay]&&aA.changedTouches){j=aw.tc[ay];if(az=M(aA,j.canvas)){j.mx=az.x;j.my=az.y;j.Drag(aA,az)}j.drawn=0}}function ar(aw){var i=x,j=A(aw);if(j&&i.tc[j]){aw.cancelBubble=true;aw.returnValue=false;aw.preventDefault&&aw.preventDefault();i.tc[j].Wheel((aw.wheelDelta||aw.detail)>0)}}function t(ay){var j=x.tc,ax,aw;ay=ay||T();for(ax in j){aw=j[ax].interval;j[ax].Draw(ay)}x.NextFrame(aw)}function r(aw){var az=o.getElementById(aw),i=az.getBoundingClientRect(),aC=o.documentElement,aA=o.body,aB=window,ax=aB.pageXOffset||aC.scrollLeft,aD=aB.pageYOffset||aC.scrollTop,ay=aC.clientLeft||aA.clientLeft,j=aC.clientTop||aA.clientTop;return{x:i.left+ax-ay,y:i.top+aD-j}}function aq(j,ax,ay,aw){var i=j.radius*j.z1/(j.z1+j.z2+ax.z);return{x:ax.x*i*ay,y:ax.y*i*aw,z:ax.z,w:(j.z1-ax.z)/j.z2}}function P(i){this.e=i;this.br=0;this.line=[];this.text=[];this.original=i.innerText||i.textContent}z=P.prototype;z.Lines=function(ay){var ax=ay?1:0,az,j,aw;ay=ay||this.e;az=ay.childNodes;j=az.length;for(aw=0;aw<j;++aw){if(az[aw].nodeName=="BR"){this.text.push(this.line.join(" "));this.br=1}else{if(az[aw].nodeType==3){if(this.br){this.line=[az[aw].nodeValue];this.br=0}else{this.line.push(az[aw].nodeValue)}}else{this.Lines(az[aw])}}}ax||this.br||this.text.push(this.line.join(" "));return this.text};z.SplitWidth=function(aw,aD,aA,az){var ay,ax,aC,aB=[];aD.font=az+"px "+aA;for(ay=0;ay<this.text.length;++ay){aC=this.text[ay].split(/\s+/);this.line=[aC[0]];for(ax=1;ax<aC.length;++ax){if(aD.measureText(this.line.join(" ")+" "+aC[ax]).width>aw){aB.push(this.line.join(" "));this.line=[aC[ax]]}else{this.line.push(aC[ax])}}aB.push(this.line.join(" "))}return this.text=aB};function f(i){this.ts=T();this.tc=i;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.SetMethod(i.outlineMethod)}e=f.prototype;e.SetMethod=function(aw){var j={block:["PreDraw","DrawBlock"],colour:["PreDraw","DrawColour"],outline:["PostDraw","DrawOutline"],classic:["LastDraw","DrawOutline"],none:["LastDraw"]},i=j[aw]||j.outline;if(aw=="none"){this.Draw=function(){return 1}}else{this.drawFunc=this[i[1]]}this[i[0]]=this.Draw};e.Update=function(aC,aB,aD,ay,az,aA,ax,i){var j=this.tc.outlineOffset,aw=2*j;this.x=az*aC+ax-j;this.y=az*aB+i-j;this.w=az*aD+aw;this.h=az*ay+aw;this.sc=az;this.z=aA};e.DrawOutline=function(az,i,ay,j,aw,ax){az.strokeStyle=ax;az.strokeRect(i,ay,j,aw)};e.DrawColour=function(ax,aA,ay,aB,aw,i,aC,j,az){return this[aC.image?"DrawColourImage":"DrawColourText"](ax,aA,ay,aB,aw,i,aC,j,az)};e.DrawColourText=function(ay,aB,az,aC,aw,i,aD,j,aA){var ax=aD.colour;aD.colour=i;aD.alpha=1;aD.Draw(ay,j,aA);aD.colour=ax;return 1};e.DrawColourImage=function(aB,aE,aC,aF,aA,i,aI,j,aD){var aG=aB.canvas,ay=~~I(aE,0),ax=~~I(aC,0),az=au(aG.width-ay,aF)+0.5|0,aH=au(aG.height-ax,aA)+0.5|0,aw;if(H){H.width=az,H.height=aH}else{H=h(az,aH)}if(!H){return this.SetMethod("outline")}aw=H.getContext("2d");aw.drawImage(aG,ay,ax,az,aH,0,0,az,aH);aB.clearRect(ay,ax,az,aH);aI.alpha=1;aI.Draw(aB,j,aD);aB.setTransform(1,0,0,1,0,0);aB.save();aB.beginPath();aB.rect(ay,ax,az,aH);aB.clip();aB.globalCompositeOperation="source-in";aB.fillStyle=i;aB.fillRect(ay,ax,az,aH);aB.restore();aB.globalCompositeOperation="destination-over";aB.drawImage(H,0,0,az,aH,ay,ax,az,aH);aB.globalCompositeOperation="source-over";return 1};e.DrawBlock=function(az,i,ay,j,aw,ax){az.fillStyle=ax;az.fillRect(i,ay,j,aw)};e.DrawSimple=function(ay,i,j,ax){var aw=this.tc;ay.setTransform(1,0,0,1,0,0);ay.strokeStyle=aw.outlineColour;ay.lineWidth=aw.outlineThickness;ay.shadowBlur=ay.shadowOffsetX=ay.shadowOffsetY=0;ay.globalAlpha=1;return this.drawFunc(ay,this.x,this.y,this.w,this.h,aw.outlineColour,i,j,ax)};e.DrawPulsate=function(az,i,j,ax){var ay=T()-this.ts,aw=this.tc;az.setTransform(1,0,0,1,0,0);az.strokeStyle=aw.outlineColour;az.lineWidth=aw.outlineThickness;az.shadowBlur=az.shadowOffsetX=az.shadowOffsetY=0;az.globalAlpha=aw.pulsateTo+((1-aw.pulsateTo)*(0.5+(l(2*Math.PI*ay/(1000*aw.pulsateTime))/2)));return this.drawFunc(az,this.x,this.y,this.w,this.h,aw.outlineColour,i,j,ax)};e.Active=function(aw,i,j){return(i>=this.x&&j>=this.y&&i<=this.x+this.w&&j<=this.y+this.h)};e.PreDraw=e.PostDraw=e.LastDraw=Y;function S(ax,aD,aA,aC,aB,ay,j,aw,i){var az=ax.ctxt;this.tc=ax;this.image=aD.src?aD:null;this.text=aD.src?[]:aD;this.text_original=i;this.line_widths=[];this.title=aA.title||null;this.a=aA;this.position=new U(aC[0],aC[1],aC[2]);this.x=this.y=this.z=0;this.w=aB;this.h=ay;this.colour=j||ax.textColour;this.textFont=aw||ax.textFont;this.weight=this.sc=this.alpha=1;this.weighted=!ax.weight;this.outline=new f(ax);if(!this.image){this.textHeight=ax.textHeight;this.extents=ag(this.text,this.textFont,this.textHeight);this.Measure(az,ax)}this.SetShadowColour=ax.shadowAlpha?this.SetShadowColourAlpha:this.SetShadowColourFixed;this.SetDraw(ax)}ae=S.prototype;ae.EqualTo=function(aw){var j=aw.getElementsByTagName("img");if(this.a.href!=aw.href){return 0}if(j.length){return this.image.src==j[0].src}return(aw.innerText||aw.textContent)==this.text_original};ae.SetDraw=function(i){this.Draw=this.image?(i.ie>7?this.DrawImageIE:this.DrawImage):this.DrawText;i.noSelect&&(this.CheckActive=Y)};ae.MeasureText=function(az){var ax,aw=this.text.length,j=0,ay;for(ax=0;ax<aw;++ax){this.line_widths[ax]=ay=az.measureText(this.text[ax]).width;j=I(j,ay)}return j};ae.Measure=function(aA,j){this.h=this.extents?this.extents.max.y+this.extents.min.y:this.textHeight;aA.font=this.font=this.textHeight+"px "+this.textFont;this.w=this.MeasureText(aA);if(j.txtOpt){var ax=j.txtScale,ay=ax*this.textHeight,az=ay+"px "+this.textFont,aw=[ax*j.shadowOffset[0],ax*j.shadowOffset[1]],i;aA.font=az;i=this.MeasureText(aA);this.image=q(this.text,az,ay,i,ax*this.h,this.colour,j.shadow,ax*j.shadowBlur,aw,ax,ax,i,this.line_widths);if(this.image){this.w=this.image.width/ax;this.h=this.image.height/ax}this.SetDraw(j);j.txtOpt=!!this.image}};ae.SetFont=function(i,j){this.textFont=i;this.colour=j;this.extents=ag(this.text,this.textFont,this.textHeight);this.Measure(this.tc.ctxt,this.tc)};ae.SetWeight=function(i){if(!this.text.length){return}this.weight=i;this.Weight(this.tc.ctxt,this.tc);this.Measure(this.tc.ctxt,this.tc)};ae.Weight=function(ax,aw){var j=this.weight,i=aw.weightMode;this.weighted=true;if(i=="colour"||i=="both"){this.colour=av(aw,(j-aw.min_weight)/(aw.max_weight-aw.min_weight))}if(i=="size"||i=="both"){if(aw.weightSizeMin>0&&aw.weightSizeMax>aw.weightSizeMin){this.textHeight=aw.weightSize*(aw.weightSizeMin+(aw.weightSizeMax-aw.weightSizeMin)*(j-aw.min_weight)/(aw.max_weight-aw.min_weight))}else{this.textHeight=j*aw.weightSize}}this.extents=ag(this.text,this.textFont,this.textHeight)};ae.SetShadowColourFixed=function(aw,j,i){aw.shadowColor=j};ae.SetShadowColourAlpha=function(aw,j,i){aw.shadowColor=u(j,i)};ae.DrawText=function(ay,aB,ax){var aC=this.tc,aA=this.x,az=this.y,aD=this.sc,j,aw;ay.globalAlpha=this.alpha;ay.fillStyle=this.colour;aC.shadow&&this.SetShadowColour(ay,aC.shadow,this.alpha);ay.font=this.font;aA+=aB/aD;az+=(ax/aD)-(this.h/2);for(j=0;j<this.text.length;++j){aw=aA-(this.line_widths[j]/2);ay.setTransform(aD,0,0,aD,aD*aw,aD*az);ay.fillText(this.text[j],0,0);az+=this.textHeight}};ae.DrawImage=function(ay,aE,ax){var aB=this.x,az=this.y,aF=this.sc,j=this.image,aC=this.w,aw=this.h,aA=this.alpha,aD=this.shadow;ay.globalAlpha=aA;aD&&this.SetShadowColour(ay,aD,aA);aB+=(aE/aF)-(aC/2);az+=(ax/aF)-(aw/2);ay.setTransform(aF,0,0,aF,aF*aB,aF*az);ay.drawImage(j,0,0,aC,aw)};ae.DrawImageIE=function(ay,aC,ax){var j=this.image,aD=this.sc,aB=j.width=this.w*aD,aw=j.height=this.h*aD,aA=(this.x*aD)+aC-(aB/2),az=(this.y*aD)+ax-(aw/2);ay.setTransform(1,0,0,1,0,0);ay.globalAlpha=this.alpha;ay.drawImage(j,aA,az)};ae.Calc=function(i,aw){var j,az=this.tc,ay=az.minBrightness,ax=az.maxBrightness,aA=az.max_radius;j=i.xform(this.position);this.xformed=j;j=aq(az,j,az.stretchX,az.stretchY);this.x=j.x;this.y=j.y;this.z=j.z;this.sc=j.w;this.alpha=aw*b(ay+(ax-ay)*(aA-this.z)/(2*aA),0,1)};ae.CheckActive=function(ax,aB,aw){var aC=this.tc,i=this.outline,aA=this.w,j=this.h,az=this.x-aA/2,ay=this.y-j/2;i.Update(az,ay,aA,j,this.sc,this.z,aB,aw);return i.Active(ax,aC.mx,aC.my)?i:null};ae.Clicked=function(az){var j=this.a,aw=j.target,ax=j.href,i;if(aw!=""&&aw!="_self"){if(self.frames[aw]){self.frames[aw].document.location=ax}else{try{if(top.frames[aw]){top.frames[aw].document.location=ax;return}}catch(ay){}window.open(ax,aw)}return}if(o.createEvent){i=o.createEvent("MouseEvents");i.initMouseEvent("click",1,1,window,0,0,0,0,0,0,0,0,0,0,null);if(!j.dispatchEvent(i)){return}}else{if(j.fireEvent){if(!j.fireEvent("onclick")){return}}}o.location=ax};function x(aB,j,ax){var aw,az,aA=o.getElementById(aB),ay=["id","class","innerHTML"];if(!aA){throw 0}if(ak(window.G_vmlCanvasManager)){aA=window.G_vmlCanvasManager.initElement(aA);this.ie=parseFloat(navigator.appVersion.split("MSIE")[1])}if(aA&&(!aA.getContext||!aA.getContext("2d").fillText)){az=o.createElement("DIV");for(aw=0;aw<ay.length;++aw){az[ay[aw]]=aA[ay[aw]]}aA.parentNode.insertBefore(az,aA);aA.parentNode.removeChild(aA);throw 0}for(aw in x.options){this[aw]=ax&&ak(ax[aw])?ax[aw]:(ak(x[aw])?x[aw]:x.options[aw])}this.canvas=aA;this.ctxt=aA.getContext("2d");this.z1=250/this.depth;this.z2=this.z1/this.zoom;this.radius=au(aA.height,aA.width)*0.0075;this.max_weight=0;this.min_weight=200;this.textFont=this.textFont&&y(this.textFont);this.textHeight*=1;this.pulsateTo=b(this.pulsateTo,0,1);this.minBrightness=b(this.minBrightness,0,1);this.maxBrightness=b(this.maxBrightness,this.minBrightness,1);this.ctxt.textBaseline="top";this.lx=(this.lock+"").indexOf("x")+1;this.ly=(this.lock+"").indexOf("y")+1;this.frozen=this.dx=this.dy=this.fixedAnim=this.touched=0;this.fixedAlpha=1;this.source=j||aB;this.transform=k.Identity();this.startTime=this.time=T();this.Animate=this.dragControl?this.AnimateDrag:this.AnimatePosition;this.animTiming=(typeof x[this.animTiming]=="function"?x[this.animTiming]:x.Smooth);if(this.shadowBlur||this.shadowOffset[0]||this.shadowOffset[1]){this.ctxt.shadowColor=this.shadow;this.shadow=this.ctxt.shadowColor;this.shadowAlpha=D()}else{delete this.shadow}this.Load();if(j&&this.hideTags){(function(i){if(x.loaded){i.HideTags()}else{G("load",function(){i.HideTags()},window)}})(this)}this.yaw=this.initial?this.initial[0]*this.maxSpeed:0;this.pitch=this.initial?this.initial[1]*this.maxSpeed:0;if(this.tooltip){if(this.tooltip=="native"){this.Tooltip=this.TooltipNative}else{this.Tooltip=this.TooltipDiv;if(!this.ttdiv){this.ttdiv=o.createElement("div");this.ttdiv.className=this.tooltipClass;this.ttdiv.style.position="absolute";this.ttdiv.style.zIndex=aA.style.zIndex+1;G("mouseover",function(i){i.target.style.display="none"},this.ttdiv);o.body.appendChild(this.ttdiv)}}}else{this.Tooltip=this.TooltipNone}if(!this.noMouse&&!c[aB]){G("mousemove",ah,aA);G("mouseout",m,aA);G("mouseup",g,aA);G("touchstart",J,aA);G("touchend",p,aA);G("touchcancel",p,aA);G("touchmove",ab,aA);if(this.dragControl){G("mousedown",Z,aA);G("selectstart",Y,aA)}if(this.wheelZoom){G("mousewheel",ar,aA);G("DOMMouseScroll",ar,aA)}c[aB]=1}x.started||(x.started=setTimeout(t,this.interval))}d=x.prototype;d.SourceElements=function(){if(o.querySelectorAll){return o.querySelectorAll("#"+this.source)}return[o.getElementById(this.source)]};d.HideTags=function(){var aw=this.SourceElements(),j;for(j=0;j<aw.length;++j){aw[j].style.display="none"}};d.GetTags=function(){var aA=this.SourceElements(),az,aw=[],ay,ax;for(ay=0;ay<aA.length;++ay){az=aA[ay].getElementsByTagName("a");for(ax=0;ax<az.length;++ax){aw.push(az[ax])}}return aw};d.CreateTag=function(aB,aA){var j=aB.getElementsByTagName("img"),ay,ax,az,aw;aA=aA||[0,0,0];if(j.length){ay=new Image;ay.src=j[0].src;ax=new S(this,ay,aB,aA,0,0);am(ay,j[0],ax,this);return ax}az=new P(aB);ax=az.Lines();aw=this.textFont||y(aj(aB,"font-family"));if(this.splitWidth){ax=az.SplitWidth(this.splitWidth,this.ctxt,aw,this.textHeight)}return new S(this,ax,aB,aA,2,this.textHeight+2,this.textColour||aj(aB,"color"),aw,az.original)};d.UpdateTag=function(aw,i){var ax=this.textColour||aj(i,"color"),j=this.textFont||y(aj(i,"font-family"));aw.title=i.title;if(aw.colour!=ax||aw.textFont!=j){aw.SetFont(j,ax)}};d.Weight=function(ax){var aw=ax.length,j,ay,az=[];for(ay=0;ay<aw;++ay){j=F(this,ax[ay].a);if(j>this.max_weight){this.max_weight=j}if(j<this.min_weight){this.min_weight=j}az.push(j)}if(this.max_weight>this.min_weight){for(ay=0;ay<aw;++ay){ax[ay].SetWeight(az[ay])}}};d.Load=function(){var aF=this.GetTags(),aB=[],aE,aA,ax,aw,j,ay,aD,az=[],aC={sphere:s,vcylinder:E,hcylinder:W,vring:C,hring:N};if(aF.length){az.length=aF.length;for(aD=0;aD<aF.length;++aD){az[aD]=aD}this.shuffleTags&&ac(az);ax=100*this.radiusX;aw=100*this.radiusY;j=100*this.radiusZ;this.max_radius=I(ax,I(aw,j));if(this.shapeArgs){this.shapeArgs[0]=aF.length}else{aA=this.shape.toString().split(/[(),]/);aE=aA.shift();this.shape=aC[aE]||aC.sphere;this.shapeArgs=[aF.length,ax,aw,j].concat(aA)}ay=this.shape.apply(this,this.shapeArgs);this.listLength=aF.length;for(aD=0;aD<aF.length;++aD){aB.push(this.CreateTag(aF[az[aD]],ay[aD]))}this.weight&&this.Weight(aB,true)}this.taglist=aB};d.Update=function(){var aF=this.GetTags(),aE=[],az=this.taglist,aG,aD=[],aB=[],ax,aC,aw,aA,ay;if(!this.shapeArgs){return this.Load()}if(aF.length){aw=this.listLength=aF.length;aC=az.length;for(aA=0;aA<aC;++aA){aE.push(az[aA]);aB.push(aA)}for(aA=0;aA<aw;++aA){for(ay=0,aG=0;ay<aC;++ay){if(az[ay].EqualTo(aF[aA])){this.UpdateTag(aE[ay],aF[aA]);aG=aB[ay]=-1}}if(!aG){aD.push(aA)}}for(aA=0,ay=0;aA<aC;++aA){if(aB[ay]==-1){aB.splice(ay,1)}else{++ay}}if(aB.length){ac(aB);while(aB.length&&aD.length){aA=aB.shift();ay=aD.shift();aE[aA]=this.CreateTag(aF[ay])}aB.sort(function(j,i){return j-i});while(aB.length){aE.splice(aB.pop(),1)}}ay=aE.length/(aD.length+1);aA=0;while(aD.length){aE.splice(V(++aA*ay),0,this.CreateTag(aF[aD.shift()]))}this.shapeArgs[0]=aw=aE.length;ax=this.shape.apply(this,this.shapeArgs);for(aA=0;aA<aw;++aA){aE[aA].position=new U(ax[aA][0],ax[aA][1],ax[aA][2])}this.weight&&this.Weight(aE)}this.taglist=aE};d.SetShadow=function(i){i.shadowBlur=this.shadowBlur;i.shadowOffsetX=this.shadowOffset[0];i.shadowOffsetY=this.shadowOffset[1]};d.Draw=function(aG){if(this.paused){return}var aA=this.canvas,ay=aA.width,aF=aA.height,aI=0,ax=(aG-this.time)*this.interval/1000,aE=ay/2+this.offsetX,aD=aF/2+this.offsetY,aM=this.ctxt,aC,aN,aK,aw=-1,az=this.taglist,aJ=az.length,j=this.frontSelect,aH=(this.centreFunc==Y),aB;this.time=aG;if(this.frozen&&this.drawn){return this.Animate(ay,aF,ax)}aB=this.AnimateFixed();aM.setTransform(1,0,0,1,0,0);this.active=null;for(aK=0;aK<aJ;++aK){az[aK].Calc(this.transform,this.fixedAlpha)}az=n(az,function(aO,i){return i.z-aO.z});for(aK=0;aK<aJ;++aK){aN=this.mx>=0&&this.my>=0&&this.taglist[aK].CheckActive(aM,aE,aD);if(aN&&aN.sc>aI&&(!j||aN.z<=0)){aC=aN;aw=aK;aC.tag=this.taglist[aK];aI=aN.sc}}this.active=aC;this.txtOpt||(this.shadow&&this.SetShadow(aM));aM.clearRect(0,0,ay,aF);for(aK=0;aK<aJ;++aK){if(!aH&&az[aK].z<=0){try{this.centreFunc(aM,ay,aF,aE,aD)}catch(aL){alert(aL);this.centreFunc=Y}aH=true}if(!(aC&&aC.tag==az[aK]&&aC.PreDraw(aM,az[aK],aE,aD))){az[aK].Draw(aM,aE,aD)}aC&&aC.tag==az[aK]&&aC.PostDraw(aM)}if(this.freezeActive&&aC){this.Freeze()}else{this.UnFreeze();this.drawn=(aJ==this.listLength)}if(this.fixedCallback){this.fixedCallback(this,this.fixedCallbackTag);this.fixedCallback=null}aB||this.Animate(ay,aF,ax);aC&&aC.LastDraw(aM);aA.style.cursor=aC?this.activeCursor:"";this.Tooltip(aC,this.taglist[aw])};d.TooltipNone=function(){};d.TooltipNative=function(j,i){this.canvas.title=j&&i.title?i.title:""};d.TooltipDiv=function(ay,j){var i=this,ax=i.ttdiv.style,az=i.canvas.id,aw="none";if(ay&&j.title){if(j.title!=i.ttdiv.innerHTML){ax.display=aw}i.ttdiv.innerHTML=j.title;j.title=i.ttdiv.innerHTML;if(ax.display==aw&&!i.tttimer){i.tttimer=setTimeout(function(){var aA=r(az);ax.display="block";ax.left=aA.x+i.mx+"px";ax.top=aA.y+i.my+24+"px";i.tttimer=null},i.tooltipDelay)}}else{ax.display=aw}};d.Transform=function(az,i,aB){if(i||aB){var j=w(i),aA=l(i),aC=w(aB),ay=l(aB),aw=new k([ay,0,aC,0,1,0,-aC,0,ay]),ax=new k([1,0,0,0,aA,-j,0,j,aA]);az.transform=az.transform.mul(aw.mul(ax))}};d.AnimateFixed=function(){var aw,j,ay,i,ax;if(this.fadeIn){j=T()-this.startTime;if(j>=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}aw=this.fixedAnim,j=T()-aw.t0,ay=aw.angle,i,ax=this.animTiming(aw.t,j);this.transform=aw.transform;if(j>=aw.t){this.fixedCallbackTag=aw.tag;this.fixedCallback=aw.cb;this.fixedAnim=this.yaw=this.pitch=0}else{ay*=ax}i=k.Rotation(ay,aw.axis);this.transform=this.transform.mul(i);return(this.fixedAnim!=0)}return false};d.AnimatePosition=function(aw,az,ax){var j=this,i=j.mx,aB=j.my,ay,aA;if(!j.frozen&&i>=0&&aB>=0&&i<aw&&aB<az){ay=j.maxSpeed,aA=j.reverse?-1:1;j.lx||(j.yaw=aA*ax*((ay*2*i/aw)-ay));j.ly||(j.pitch=aA*ax*-((ay*2*aB/az)-ay));j.initial=null}else{if(!j.initial){if(j.frozen&&!j.freezeDecel){j.yaw=j.pitch=0}else{j.Decel(j)}}}this.Transform(j,j.pitch,j.yaw)};d.AnimateDrag=function(j,ay,ax){var i=this,aw=100*ax*i.maxSpeed/i.max_radius/i.zoom;if(i.dx||i.dy){i.lx||(i.yaw=i.dx*aw/i.stretchX);i.ly||(i.pitch=i.dy*-aw/i.stretchY);i.dx=i.dy=0;i.initial=null}else{if(!i.initial){i.Decel(i)}}this.Transform(i,i.pitch,i.yaw)};d.Freeze=function(){if(!this.frozen){this.preFreeze=[this.yaw,this.pitch];this.frozen=1;this.drawn=0}};d.UnFreeze=function(){if(this.frozen){this.yaw=this.preFreeze[0];this.pitch=this.preFreeze[1];this.frozen=0}};d.Decel=function(i){var aw=i.minSpeed,ax=aa(i.yaw),j=aa(i.pitch);if(!i.lx&&ax>aw){i.yaw=ax>i.z0?i.yaw*i.decel:0}if(!i.ly&&j>aw){i.pitch=j>i.z0?i.pitch*i.decel:0}};d.Zoom=function(i){this.z2=this.z1*(1/i);this.drawn=0};d.Clicked=function(aw){var i=this.active;try{if(i&&i.tag){if(this.clickToFront===false||this.clickToFront===null){i.tag.Clicked(aw)}else{this.TagToFront(i.tag,this.clickToFront,function(){i.tag.Clicked(aw)})}}}catch(j){}};d.Wheel=function(j){var aw=this.zoom+this.zoomStep*(j?1:-1);this.zoom=au(this.zoomMax,I(this.zoomMin,aw));this.Zoom(this.zoom)};d.BeginDrag=function(i){this.down=M(i,this.canvas);i.cancelBubble=true;i.returnValue=false;i.preventDefault&&i.preventDefault()};d.Drag=function(ay,ax){if(this.dragControl&&this.down){var aw=this.dragThreshold*this.dragThreshold,j=ax.x-this.down.x,i=ax.y-this.down.y;if(this.dragging||j*j+i*i>aw){this.dx=j;this.dy=i;this.dragging=1;this.down=ax}}};d.EndDrag=function(){var i=this.dragging;this.dragging=this.down=null;return i};d.Pause=function(){this.paused=true};d.Resume=function(){this.paused=false};d.FindTag=function(aw){if(!ak(aw)){return null}ak(aw.index)&&(aw=aw.index);if(!v(aw)){return this.taglist[aw]}var ax,ay,j;if(ak(aw.id)){ax="id",ay=aw.id}else{if(ak(aw.text)){ax="innerText",ay=aw.text}}for(j=0;j<this.taglist.length;++j){if(this.taglist[j].a[ax]==ay){return this.taglist[j]}}};d.RotateTag=function(aD,aw,aC,i,aA){var aB=aD.xformed,ay=new U(aB.x,aB.y,aB.z),ax=K(aC,aw),j=ay.angle(ax),az=ay.cross(ax).unit();if(j==0){this.fixedCallbackTag=aD;this.fixedCallback=aA}else{this.fixedAnim={angle:-j,axis:az,t:i,t0:T(),cb:aA,tag:aD}}};d.TagToFront=function(i,j,aw){this.RotateTag(i,0,0,j,aw)};x.Start=function(aw,i,j){x.tc[aw]=new x(aw,i,j)};function al(i,j){x.tc[j]&&x.tc[j][i]()}x.Linear=function(i,j){return j/i};x.Smooth=function(i,j){return 0.5-l(j*Math.PI/i)/2};x.Pause=function(i){al("Pause",i)};x.Resume=function(i){al("Resume",i)};x.Reload=function(i){al("Load",i)};x.Update=function(i){al("Update",i)};x.TagToFront=function(j,i){if(!v(i)){return false}i.lat=i.lng=0;return x.RotateTag(j,i)};x.RotateTag=function(aw,i){if(!v(i)){return false}if(x.tc[aw]){if(isNaN(i.time)){i.time=500}var j=x.tc[aw].FindTag(i);if(j){x.tc[aw].RotateTag(j,i.lat,i.lng,i.time,i.callback);return true}}return false};x.NextFrame=function(i){var j=window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame;x.NextFrame=j?x.NextFrameRAF:x.NextFrameTimeout;x.NextFrame(i)};x.NextFrameRAF=function(){requestAnimationFrame(t)};x.NextFrameTimeout=function(i){setTimeout(t,i)};x.tc={};x.options={z1:20000,z2:20000,z0:0.0002,freezeActive:false,freezeDecel:false,activeCursor:"pointer",pulsateTo:1,pulsateTime:3,reverse:false,depth:0.5,maxSpeed:0.05,minSpeed:0,decel:0.95,interval:20,minBrightness:0.1,maxBrightness:1,outlineColour:"#ffff99",outlineThickness:2,outlineOffset:5,outlineMethod:"outline",textColour:"#ff99ff",textHeight:15,textFont:"Helvetica, Arial, sans-serif",shadow:"#000",shadowBlur:0,shadowOffset:[0,0],initial:null,hideTags:true,zoom:1,weight:false,weightMode:"size",weightFrom:null,weightSize:1,weightSizeMin:null,weightSizeMax:null,weightGradient:{0:"#f00",0.33:"#ff0",0.66:"#0f0",1:"#00f"},txtOpt:true,txtScale:2,frontSelect:false,wheelZoom:true,zoomMin:0.3,zoomMax:3,zoomStep:0.05,shape:"sphere",lock:null,tooltip:null,tooltipDelay:300,tooltipClass:"tctooltip",radiusX:1,radiusY:1,radiusZ:1,stretchX:1,stretchY:1,offsetX:0,offsetY:0,shuffleTags:false,noSelect:false,noMouse:false,imageScale:1,paused:false,dragControl:false,dragThreshold:4,centreFunc:Y,splitWidth:0,animTiming:"Smooth",clickToFront:false,fadeIn:0};for(ap in x.options){x[ap]=x.options[ap]}window.TagCanvas=x;jQuery.fn.tagcanvas=function(j,i){var aw={pause:function(){ad(this).each(function(){al("Pause",ad(this)[0].id)})},resume:function(){ad(this).each(function(){al("Resume",ad(this)[0].id)})},reload:function(){ad(this).each(function(){al("Load",ad(this)[0].id)})},update:function(){ad(this).each(function(){al("Update",ad(this)[0].id)})},tagtofront:function(){ad(this).each(function(){x.TagToFront(ad(this)[0].id,i)})},rotatetag:function(){ad(this).each(function(){x.RotateTag(ad(this)[0].id,i)})}};if(typeof j=="string"&&aw[j]){aw[j].apply(this)}else{x.jquery=1;ad(this).each(function(){x.Start(ad(this)[0].id,i,j)});return x.started}};G("load",function(){x.loaded=1},window)})(jQuery);