From aff839f0c4b498db0157968bca1ca48236b1ffdd Mon Sep 17 00:00:00 2001 From: stef Date: Tue, 22 May 2012 00:31:16 +0200 Subject: [PATCH] [enh] switched to kartograph map --- bt/views.py | 26 +-- media/css/map.css | 55 ++++++ media/eu.svg | 2 + media/img/noise.png | Bin 0 -> 22993 bytes media/js/chroma.min.js | 42 +++++ media/js/flashcanvas.js | 28 +++ media/js/flashcanvas.swf | Bin 0 -> 21235 bytes media/js/jquery-1.6.3.min.js | 4 + media/js/jquery.min.js | 4 + media/js/kartograph-chroma.min.js | 41 +++++ media/js/kartograph.min.js | 21 +++ media/js/map.js | 60 +++++++ media/js/qtip.min.js | 15 ++ media/js/raphael.min.js | 8 + media/js/script.min.js | 7 + templates/list.html | 284 ++++++------------------------ 16 files changed, 346 insertions(+), 251 deletions(-) create mode 100644 media/css/map.css create mode 100644 media/eu.svg create mode 100644 media/img/noise.png create mode 100644 media/js/chroma.min.js create mode 100755 media/js/flashcanvas.js create mode 100755 media/js/flashcanvas.swf create mode 100644 media/js/jquery-1.6.3.min.js create mode 100644 media/js/jquery.min.js create mode 100644 media/js/kartograph-chroma.min.js create mode 100644 media/js/kartograph.min.js create mode 100644 media/js/map.js create mode 100644 media/js/qtip.min.js create mode 100644 media/js/raphael.min.js create mode 100644 media/js/script.min.js diff --git a/bt/views.py b/bt/views.py index cdb17c2..e8c6fb9 100644 --- a/bt/views.py +++ b/bt/views.py @@ -238,28 +238,7 @@ def list_violations(request): countries=sorted([(i['total'],i['country']) for i in Violation.objects.values('country').filter(activationid='').exclude(state__in=['duplicate', 'closed']).annotate(total=Count('country'))], reverse=True) - legend=sorted(set([(w, "rgba(255,%d, 00, 0.4)" % (w*768/(countries[0][0]+1)%256)) for w,c in countries]),reverse=True) - countrycolors=json.dumps(dict([(c.lower(),"#ff%02x00" % (w*768/(countries[0][0]+1)%256)) for w,c in countries])) - tmp=sorted(set([w for w, c in countries]),reverse=True) - legend=[] - countrycolors={} - tmpd={} - itemspercol=len(tmp)/4 - for w,c in countries: - if w not in tmpd.keys(): - if len(tmpd.keys())>=itemspercol and len(legend)<3: - countrycolors.update([(c1.lower(), "#ff%02x00" % (68*(4-len(legend)) if len(legend) else 255)) for w1 in tmpd.keys() for c1 in tmpd[w1]]) - legend.append(("%s - %s" % (max(tmpd.keys()),min(tmpd.keys())), len(legend))) - tmpd={w: [c]} - else: - tmpd[w]=[c] - else: - tmpd[w].append(c) - if tmpd: - countrycolors.update([(c1.lower(), "#ff%02x00" % (68*(4-len(legend)))) for w1 in tmpd.keys() for c1 in tmpd[w1]]) - legend.append(("%s - %s" % (max(tmpd.keys()),min(tmpd.keys())), len(legend))) - countrycolors=json.dumps(countrycolors) - #legend=sorted(set([(w, "rgba(255,%d, 00, 0.4)" % (w*768/(countries[0][0]+1)%256)) for w,c in countries]),reverse=True) + countryweights=json.dumps([{'iso2': y, 'w': x} for x, y in countries]) #countrycolors=json.dumps(dict([(c.lower(),"#ff%02x00" % (w*768/(countries[0][0]+1)%256)) for w,c in countries])) #confirms=sorted([(i['total'],i['country']) # for i in Violation.objects.values('country').filter(activationid='').annotate(total=Count('confirmation')) @@ -268,8 +247,7 @@ def list_violations(request): return render_to_response('list.html', {"violations": violations, "countries": dict([(y,x) for x,y in countries]), - "countrycolors": countrycolors, - "legend": legend, + "countryweights": countryweights, "status": STATUS,}, #"confirms": confirms,}, context_instance=RequestContext(request)) diff --git a/media/css/map.css b/media/css/map.css new file mode 100644 index 0000000..1864cb4 --- /dev/null +++ b/media/css/map.css @@ -0,0 +1,55 @@ +#map { + border: 2px solid #745C1B; + background: #fff url(../img/noise.png); + border-radius: 5px; + margin: 1em; + width: 300px; + height: 280px; +} + +svg path { stroke-linejoin: round } + +svg .sea { + fill: #fff; + stroke-width: .25px; +} + +svg .graticule { + fill: none; + stroke-width: .2px; +} +svg .bg, svg .bgback { + stroke: none; + fill: #fff; + fill-opacity: 1; +} +svg .bgstroke { + stroke: #7C5B27; + stroke-width:.7px; + fill:none; +} +svg .context { + stroke: #D1BEB0; + stroke-opacity: .3; + fill: #D1BEB0; + fill-opacity: .23; +} +svg .fg { + stroke: #cbb; + stroke-opacity: 1; + stroke-dasharray: 3,5; + fill-opacity: .5; +} +svg .fg:hover { + fill: #ada; + fill-opacity: .37; +} + +.k-layer-toggle h2 { + margin: 20px 0 10px; + font-size: 20px; +} +.k-layer-toggle label { + margin-left: 3px; +} + diff --git a/media/eu.svg b/media/eu.svg new file mode 100644 index 0000000..ad3e6c2 --- /dev/null +++ b/media/eu.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/media/img/noise.png b/media/img/noise.png new file mode 100644 index 0000000000000000000000000000000000000000..451edf7ffc8861d0b9b562ebd70ed4fee78c8953 GIT binary patch literal 22993 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 Y0Q4Y{$-Bk>MF0Q*07*qoM6N<$f((*05dZ)H literal 0 HcmV?d00001 diff --git a/media/js/chroma.min.js b/media/js/chroma.min.js new file mode 100644 index 0000000..71d4659 --- /dev/null +++ b/media/js/chroma.min.js @@ -0,0 +1,42 @@ +/** + chroma.js - a neat JS lib for color conversions + Copyright (C) 2011 Gregor Aisch + + The JavaScript code in this page is free software: you can + redistribute it and/or modify it under the terms of the GNU + General Public License (GNU GPL) as published by the Free Software + Foundation, either version 3 of the License, or (at your option) + any later version. The code is distributed WITHOUT ANY WARRANTY; + without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the GNU GPL for more details. + + As additional permission under GNU GPL version 3 section 7, you + may distribute non-source (e.g., minimized or compacted) forms of + that code without the copy of the GNU GPL normally required by + section 4, provided you include this license notice and a URL + through which recipients can access the Corresponding Source. + + @source: https://github.com/gka/chroma.js + +**/ +/** + ColorBrewer colors for chroma.js: + + Copyright (c) 2002 Cynthia Brewer, Mark Harrower, + and The Pennsylvania State University. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied. See the License for the specific + language governing permissions and limitations under the License. + + + Named colors are taken from X11 Color Names. + http://www.w3.org/TR/css3-color/#svg-color +**/(function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q=Object.prototype.hasOwnProperty,r=function(a,b){function d(){this.constructor=a}for(var c in b)q.call(b,c)&&(a[c]=b[c]);d.prototype=b.prototype,a.prototype=new d,a.__super__=b.prototype;return a};j=typeof exports!="undefined"&&exports!==null?exports:this,h=(l=j.chroma)!=null?l:j.chroma={},typeof module!="undefined"&&module!==null&&(module.exports=h),h.version="0.3.0",c=function(){function a(b,c,d,e){var f,g;f=this,b==null&&c==null&&d==null&&e==null&&(b=[255,0,255]),k(b)==="array"&&b.length===3&&(e==null&&(e=c),g=b,b=g[0],c=g[1],d=g[2]),k(b)==="string"?e="hex":e==null&&(e="rgb"),e==="rgb"?f.rgb=[b,c,d]:e==="hsl"?f.rgb=a.hsl2rgb(b,c,d):e==="hsv"?f.rgb=a.hsv2rgb(b,c,d):e==="hex"?f.rgb=a.hex2rgb(b):e==="lab"?f.rgb=a.lab2rgb(b,c,d):e==="hcl"?f.rgb=a.hcl2rgb(b,c,d):e==="hsi"&&(f.rgb=a.hsi2rgb(b,c,d))}a.prototype.hex=function(){return a.rgb2hex(this.rgb)},a.prototype.toString=function(){return this.hex()},a.prototype.hsl=function(){return a.rgb2hsl(this.rgb)},a.prototype.hsv=function(){return a.rgb2hsv(this.rgb)},a.prototype.lab=function(){return a.rgb2lab(this.rgb)},a.prototype.hcl=function(){return a.rgb2hcl(this.rgb)},a.prototype.hsi=function(){return a.rgb2hsi(this.rgb)},a.prototype.interpolate=function(b,c,d){var e,f,g,h,i,j,l,m,n,o,p,q,r;m=this,d==null&&(d="rgb"),k(c)==="string"&&(c=new a(c));if(d==="hsl"||d==="hsv"||d==="hcl"||d==="hsi"){d==="hsl"?(q=m.hsl(),r=c.hsl()):d==="hsv"?(q=m.hsv(),r=c.hsv()):d==="hcl"?(q=m.hcl(),r=c.hcl()):d==="hsi"&&(q=m.hsi(),r=c.hsi()),g=q[0],o=q[1],j=q[2],h=r[0],p=r[1],l=r[2];if(!isNaN(g)&&!isNaN(h))h>g&&h-g>180?e=h-(g+360):h180?e=h+360-g:e=h-g,f=g+b*e;else if(!isNaN(g)){f=g;if(l===1||l===0)n=o}else if(!isNaN(h)){f=h;if(j===1||j===0)n=p}else f=void 0;n==null&&(n=o+b*(p-o)),i=j+b*(l-j);return new a(f,n,i,d)}if(d==="rgb"){q=m.rgb,r=c.rgb;return new a(q[0]+b*(r[0]-q[0]),q[1]+b*(r[1]-q[1]),q[2]+b*(r[2]-q[2]),d)}if(d==="lab"){q=m.lab(),r=c.lab();return new a(q[0]+b*(r[0]-q[0]),q[1]+b*(r[1]-q[1]),q[2]+b*(r[2]-q[2]),d)}throw"color mode "+d+" is not supported"};return a}(),c.hex2rgb=function(a){var b,c,d,e;if(!a.match(/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/))if(h.colors!=null&&h.colors[a])a=h.colors[a];else throw"unknown color format: "+a;if(a.length===4||a.length===7)a=a.substr(1);a.length===3&&(a=a[0]+a[0]+a[1]+a[1]+a[2]+a[2]),e=parseInt(a,16),d=e>>16,c=e>>8&255,b=e&255;return[d,c,b]},c.rgb2hex=function(a,b,c){var d,e,f;a!==void 0&&a.length===3&&(f=a,a=f[0],b=f[1],c=f[2]),e=a<<16|b<<8|c,d="000000"+e.toString(16).toUpperCase();return"#"+d.substr(d.length-6)},c.hsv2rgb=function(a,b,c){var d,e,f,g,h,i,j,l,m,n,o,p,q,r,s,t;k(a)==="array"&&a.length===3&&(n=a,a=n[0],b=n[1],h=n[2]),c*=255;if(b===0&&isNaN(a))l=f=d=c;else{a===360&&(a=0),a>360&&(a-=360),a<0&&(a+=360),a/=60,g=Math.floor(a),e=a-g,i=c*(1-b),j=c*(1-b*e),m=c*(1-b*(1-e));switch(g){case 0:o=[c,m,i],l=o[0],f=o[1],d=o[2];break;case 1:p=[j,c,i],l=p[0],f=p[1],d=p[2];break;case 2:q=[i,c,m],l=q[0],f=q[1],d=q[2];break;case 3:r=[i,j,c],l=r[0],f=r[1],d=r[2];break;case 4:s=[m,i,c],l=s[0],f=s[1],d=s[2];break;case 5:t=[c,i,j],l=t[0],f=t[1],d=t[2]}}l=Math.round(l),f=Math.round(f),d=Math.round(d);return[l,f,d]},c.rgb2hsv=function(a,b,c){var d,e,f,g,h,i,j;a!==void 0&&a.length===3&&(j=a,a=j[0],b=j[1],c=j[2]),g=Math.min(a,b,c),f=Math.max(a,b,c),d=f-g,i=f/255,h=d/f,h===0?(e=void 0,h=0):(a===f&&(e=(b-c)/d),b===f&&(e=2+(c-a)/d),c===f&&(e=4+(a-b)/d),e*=60,e<0&&(e+=360));return[e,h,i]},c.hsl2rgb=function(a,b,c){var d,e,f,g,h,i,j,k,l,m;a!==void 0&&a.length===3&&(l=a,a=l[0],b=l[1],c=l[2]);if(b===0)h=f=d=c*255;else{k=[0,0,0],e=[0,0,0],j=c<.5?c*(1+b):c+b-c*b,i=2*c-j,a/=360,k[0]=a+1/3,k[1]=a,k[2]=a-1/3;for(g=0;g<=2;g++)k[g]<0&&(k[g]+=1),k[g]>1&&(k[g]-=1),6*k[g]<1?e[g]=i+(j-i)*6*k[g]:2*k[g]<1?e[g]=j:3*k[g]<2?e[g]=i+(j-i)*(2/3-k[g])*6:e[g]=i;m=[Math.round(e[0]*255),Math.round(e[1]*255),Math.round(e[2]*255)],h=m[0],f=m[1],d=m[2]}return[h,f,d]},c.rgb2hsl=function(a,b,c){var d,e,f,g,h,i;a!==void 0&&a.length===3&&(i=a,a=i[0],b=i[1],c=i[2]),a/=255,b/=255,c/=255,g=Math.min(a,b,c),f=Math.max(a,b,c),e=(f+g)/2,f===g?(h=0,d=void 0):h=e<.5?(f-g)/(f+g):(f-g)/(2-f-g),a===f?d=(b-c)/(f-g):b===f?d=2+(c-a)/(f-g):c===f&&(d=4+(a-b)/(f-g)),d*=60,d<0&&(d+=360);return[d,h,e]},c.lab2xyz=function(a,b,c){var d,e,f,g,h,i,j;k(a)==="array"&&a.length===3&&(j=a,a=j[0],b=j[1],c=j[2]),d=function(a){return a>6/29?a*a*a:3*(6/29)*(6/29)*(a-4/29)},f=(a+.16)/1.16,e=[.96421,1,.82519],h=e[1]*d(f),g=e[0]*d(f+b/5),i=e[2]*d(f-c/2);return[g,h,i]},c.xyz2rgb=function(a,b,c){var d,e,f,g,h,i,j,l,m,n;k(a)==="array"&&a.length===3&&(m=a,a=m[0],b=m[1],c=m[2]),l=3.2406*a-1.5372*b-.4986*c,i=-0.9689*a+1.8758*b+.0415*c,e=.0557*a-.204*b+1.057*c,f=Math.min(l,i,e)<-0.001||Math.max(l,i,e)>1.001,f&&(l=l<0?0:l>1?1:l,i=i<0?0:i>1?1:i,e=e<0?0:e>1?1:e),f&&(n=[void 0,void 0,void 0],l=n[0],i=n[1],e=n[2]),g=function(a){var b;b=.055;return a<=.0031308?12.92*a:(1+b)*Math.pow(a,1/2.4)-b},j=Math.round(255*g(l)),h=Math.round(255*g(i)),d=Math.round(255*g(e));return[j,h,d]},c.lab2rgb=function(a,b,d){var e,f,g,h,i,j;a!==void 0&&a.length===3&&(h=a,a=h[0],b=h[1],d=h[2]),a!==void 0&&a.length===3&&(i=a,a=i[0],b=i[1],d=i[2]),j=c.lab2xyz(a,b,d),e=j[0],f=j[1],g=j[2];return c.xyz2rgb(e,f,g)},c.hcl2lab=function(a,b,c){var d,e,f,g,h,i,j;k(a)==="array"&&a.length===3&&(j=a,a=j[0],b=j[1],c=j[2]),a/=360,e=6.283185307179586,d=c*.61+.09,g=e/6-a*e,i=(c*.311+.125)*b,f=Math.sin(g)*i,h=Math.cos(g)*i;return[d,f,h]},c.hcl2rgb=function(a,b,d){var e,f,g,h;h=c.hcl2lab(a,b,d),e=h[0],f=h[1],g=h[2];return c.lab2rgb(e,f,g)},c.rgb2xyz=function(a,b,c){var d,e,f,g,h,i,j,k;a!==void 0&&a.length===3&&(k=a,a=k[0],b=k[1],c=k[2]),e=function(a){var b;b=.055;return a<=.04045?a/12.92:Math.pow((a+b)/(1+b),2.4)},g=e(a/255),f=e(b/255),d=e(c/255),h=.4124*g+.3576*f+.1805*d,i=.2126*g+.7152*f+.0722*d,j=.0193*g+.1192*f+.9505*d;return[h,i,j]},c.xyz2lab=function(a,b,c){var d,e,f,g,h,i;a!==void 0&&a.length===3&&(i=a,a=i[0],b=i[1],c=i[2]),g=[.96421,1,.82519],f=function(a){return a>Math.pow(6/29,3)?Math.pow(a,1/3):7.787037037037035*a+4/29},h=1.16*f(b/g[1])-.16,d=5*(f(a/g[0])-f(b/g[1])),e=2*(f(b/g[1])-f(c/g[2]));return[h,d,e]},c.rgb2lab=function(a,b,d){var e,f,g,h,i;a!==void 0&&a.length===3&&(h=a,a=h[0],b=h[1],d=h[2]),i=c.rgb2xyz(a,b,d),e=i[0],f=i[1],g=i[2];return c.xyz2lab(e,f,g)},c.lab2hcl=function(a,b,c){var d,e,f,g,h,i,j;k(a)==="array"&&a.length===3&&(j=a,a=j[0],b=j[1],c=j[2]),d=a,a=(a-.09)/.61,h=Math.sqrt(b*b+c*c),i=h/(a*.311+.125),e=6.283185307179586,f=Math.atan2(b,c),g=(e/6-f)/e,g*=360,g<0&&(g+=360);return[g,i,a]},c.rgb2hcl=function(a,b,d){var e,f,g,h;k(a)==="array"&&a.length===3&&(g=a,a=g[0],b=g[1],d=g[2]),h=c.rgb2lab(a,b,d),f=h[0],e=h[1],d=h[2];return c.lab2hcl(f,e,d)},c.rgb2hsi=function(a,b,c){var d,e,f,g,h,i;k(a)==="array"&&a.length===3&&(i=a,a=i[0],b=i[1],c=i[2]),d=Math.PI*2,a/=255,b/=255,c/=255,g=Math.min(a,b,c),f=(a+b+c)/3,h=1-g/f,h===0?e=0:(e=(a-b+(a-c))/2,e/=Math.sqrt((a-b)*(a-b)+(a-c)*(b-c)),e=Math.acos(e),c>b&&(e=d-e),e/=d);return[e*360,h,f]},c.hsi2rgb=function(a,b,c){var d,e,f,g,h,i,j;k(a)==="array"&&a.length===3&&(j=a,a=j[0],b=j[1],c=j[2]),e=Math.PI*2,d=Math.PI/3,g=Math.cos,a<0&&(a+=360),a>360&&(a-=360),a/=360,a<1/3?(f=(1-b)/3,i=(1+b*g(e*a)/g(d-e*a))/3,h=1-(f+i)):a<2/3?(a-=1/3,i=(1-b)/3,h=(1+b*g(e*a)/g(d-e*a))/3,f=1-(i+h)):(a-=2/3,h=(1-b)/3,f=(1+b*g(e*a)/g(d-e*a))/3,i=1-(h+f)),i=c*i*3,h=c*h*3,f=c*f*3;return[i*255,h*255,f*255]},h.Color=c,h.hsl=function(a,b,d){return new c(a,b,d,"hsl")},h.hsv=function(a,b,d){return new c(a,b,d,"hsv")},h.rgb=function(a,b,d){return new c(a,b,d,"rgb")},h.hex=function(a){return new c(a)},h.lab=function(a,b,d){return new c(a,b,d,"lab")},h.hcl=function(a,b,d){return new c(a,b,d,"hcl")},h.hsi=function(a,b,d){return new c(a,b,d,"hsi")},h.interpolate=function(a,b,d,e){k(a)==="string"&&(a=new c(a)),k(b)==="string"&&(b=new c(b));return a.interpolate(d,b,e)},d=function(){function a(a){var b,d,e,f,g,h,i,j,l,m;f=this,f.colors=e=(g=a.colors)!=null?g:["#ddd","#222"];for(b=0,h=e.length-1;0<=h?b<=h:b>=h;0<=h?b++:b--)d=e[b],k(d)==="string"&&(e[b]=new c(d));if(a.positions!=null)f.pos=a.positions;else{f.pos=[];for(b=0,i=e.length-1;0<=i?b<=i:b>=i;0<=i?b++:b--)f.pos.push(b/(e.length-1))}f.mode=(j=a.mode)!=null?j:"hsv",f.nacol=(l=a.nacol)!=null?l:"#ccc",f.setClasses((m=a.limits)!=null?m:[0,1]),f}a.prototype.getColor=function(a){var b,c,d,e;e=this;if(isNaN(a))return e.nacol;e.classLimits.length>2?(b=e.getClass(a),c=b/(e.numClasses-1)):(c=d=(a-e.min)/(e.max-e.min),c=Math.min(1,Math.max(0,c)));return e.fColor(c)},a.prototype.fColor=function(a){var b,c,d,e,f,g;e=this,c=e.colors;for(d=0,g=e.pos.length-1;0<=g?d<=g:d>=g;0<=g?d++:d--){f=e.pos[d];if(a<=f){b=c[d];break}if(a>=f&&d===e.pos.length-1){b=c[d];break}if(a>f&&a2&&(f=c.length-1,b=g.getClass(a),a=c[b]+(c[b+1]-c[b])*.5,e=c[0],d=c[f-1],a=g.min+(a-e)/(d-e)*(g.max-g.min));return a},a.prototype.setClasses=function(a){var b;a==null&&(a=[]),b=this,b.classLimits=b.limits=a,b.min=a[0],b.max=a[a.length-1];return a.length===2?b.numClasses=0:b.numClasses=a.length-1},a.prototype.getClass=function(a){var b,c,d,e;e=this,c=e.classLimits;if(c!=null){d=c.length-1,b=0;while(b=c[b])b++;return b-1}},a.prototype.validValue=function(a){return!isNaN(a)};return a}(),h.ColorScale=d,f=function(){function a(b,c,d){b==null&&(b="#fe0000"),c==null&&(c="#feeeee"),d==null&&(d="hsl"),a.__super__.constructor.call(this,[b,c],[0,1],d)}r(a,d);return a}(),h.Ramp=f,e=function(){function a(b,c,d,e,f){var g;b==null&&(b="#d73027"),c==null&&(c="#ffffbf"),d==null&&(d="#1E6189"),e==null&&(e="mean"),f==null&&(f="hsl"),g=this,g.mode=f,g.center=e,a.__super__.constructor.call(this,[b,c,d],[0,.5,1],f)}r(a,d),a.prototype.parseData=function(b,c){var d,e;a.__super__.parseData.call(this,b,c),e=this,d=e.center,d==="median"?d=e.median:d==="mean"&&(d=e.mean);return e.pos[1]=(d-e.min)/(e.max-e.min)};return a}(),h.Diverging=e,b=function(){function a(a){var b;b=this,b.colors=a}r(a,d),a.prototype.parseData=function(a,b){},a.prototype.getColor=function(a){var b;b=this;return b.colors.hasOwnProperty(a)?b.colors[a]:"#cccccc"},a.prototype.validValue=function(a){return this.colors.hasOwnProperty(a)};return a}(),h.Categories=b,a=function(){function a(a){var b;b=this,b.name=a,b.setClasses(7),b}r(a,d),a.prototype.getColor=function(a){var b,c;c=this,b=c.getClass(a);return c.name+" l"+c.numClasses+" c"+b};return a}(),h.CSSColors=a,(m=h.scales)==null&&(h.scales={}),h.scales.cool=function(){return new f(h.hsl(180,1,.9),h.hsl(250,.7,.4))},h.scales.hot=function(){return new d({colors:["#000000","#ff0000","#ffff00","#ffffff"],positions:[0,.25,.75,1],mode:"rgb"})},h.scales.BlWhOr=function(){return new e(h.hsl(30,1,.55),"#ffffff",new c(220,1,.55))},h.scales.GrWhPu=function(){return new e(h.hsl(120,.8,.4),"#ffffff",new c(280,.8,.4))},h.limits=function(a,b,c,d){var e,f,g,h,i,j,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z;b==null&&(b="equal"),c==null&&(c=7),d==null&&(d=null),r=Number.MAX_VALUE,q=Number.MAX_VALUE*-1,B=0,F=[];if(k(a)==="array")if(k(a[0])!=="object"&&k(a[0])!=="array")for(G=0,J=a.length;Gq&&(q=D),B+=D;else continue}F=F.sort(function(a,b){return a-b}),p=[],b.substr(0,1)==="c"&&(p.push(r),p.push(q));if(b.substr(0,1)==="e"){p.push(r);for(l=1,T=c-1;1<=T?l<=T:l>=T;1<=T?l++:l--)p.push(r+l/c*(q-r));p.push(q)}else if(b.substr(0,1)==="q"){p.push(r);for(l=1,U=c-1;1<=U?l<=U:l>=U;1<=U?l++:l--)w=F.length*l/c,x=Math.floor(w),x===w?p.push(F[x]):(y=w-x,p.push(F[x]*y+F[x+1]*(1-y)));p.push(q)}else if(b.substr(0,1)==="k"){t=F.length,e=Array(t),i=Array(c),z=!0,u=0,g=null,g=[],g.push(r);for(l=1,V=c-1;1<=V?l<=V:l>=V;1<=V?l++:l--)g.push(r+l/c*(q-r));g.push(q);while(z){for(m=0,W=c-1;0<=W?m<=W:m>=W;0<=W?m++:m--)i[m]=0;for(l=0,X=t-1;0<=X?l<=X:l>=X;0<=X?l++:l--){E=F[l],s=Number.MAX_VALUE;for(m=0,Y=c-1;0<=Y?m<=Y:m>=Y;0<=Y?m++:m--)j=Math.abs(g[m]-E),j=Z;0<=Z?m++:m--)v[m]=null;for(l=0,M=t-1;0<=M?l<=M:l>=M;0<=M?l++:l--)h=e[l],v[h]===null?v[h]=F[l]:v[h]+=F[l];for(m=0,N=c-1;0<=N?m<=N:m>=N;0<=N?m++:m--)v[m]*=1/i[m];z=!1;for(m=0,O=c-1;0<=O?m<=O:m>=O;0<=O?m++:m--)if(v[m]!==g[l]){z=!0;break}g=v,u++,u>200&&(z=!1)}o={};for(m=0,P=c-1;0<=P?m<=P:m>=P;0<=P?m++:m--)o[m]=[];for(l=0,Q=t-1;0<=Q?l<=Q:l>=Q;0<=Q?l++:l--)h=e[l],o[h].push(F[l]);C=[];for(m=0,R=c-1;0<=R?m<=R:m>=R;0<=R?m++:m--)C.push(o[m][0]),C.push(o[m][o[m].length-1]);C=C.sort(function(a,b){return a-b}),p.push(C[0]);for(l=1,S=C.length-1;l<=S;l+=2)isNaN(C[l])||p.push(C[l])}return p},j=typeof exports!="undefined"&&exports!==null?exports:this,k=function(){var a,b,c,d,e;a={},e="Boolean Number String Function Array Date RegExp Undefined Null".split(" ");for(c=0,d=e.length;c=8?a.src:a.getAttribute("src",4)}function v(a){return(""+a).replace(/&/g,"&").replace(/0)return eval(this.B.CallFunction(''+a.join("�")+""))},I:function(a,b){this.e();this.D();if(a>0)this.B.width=a;if(b>0)this.B.height=b;this.a.push(e.resize,a,b)}};t.prototype={addColorStop:function(a,b){if(isNaN(a)||a<0||a>1)i(1);this.G.a.push(e.addColorStop,this.id,a,b)}};D.prototype=Error();var T={1:"INDEX_SIZE_ERR",9:"NOT_SUPPORTED_ERR",11:"INVALID_STATE_ERR", +12:"SYNTAX_ERR",17:"TYPE_MISMATCH_ERR",18:"SECURITY_ERR"},B={initElement:function(a){if(a.getContext)return a;var b=a.uniqueID,c="external"+b;x[b]=false;n[b]=1;Q(a);a.innerHTML=''; +s[b]=a;var d=a.firstChild;y[b]=a.lastChild;var f=j.body.contains;if(f(a))d.movie=w;else var g=setInterval(function(){if(f(a)){clearInterval(g);d.movie=w}},0);if(j.compatMode==="BackCompat"||!h.XMLHttpRequest)y[b].style.overflow="hidden";var o=new u(a,d);a.getContext=function(l){return l==="2d"?o:k};a.toDataURL=function(l,z){(""+l).replace(/[A-Z]+/g,W)==="image/jpeg"?o.a.push(e.toDataURL,l,typeof z==="number"?z:""):o.a.push(e.toDataURL,l);return o.e()};d.attachEvent(K,G);return a},saveImage:function(a){a.firstChild.saveImage()}, +setOptions:function(){},trigger:function(a,b){s[a].fireEvent("on"+b)},unlock:function(a,b){n[a]&&--n[a];if(b){var c=s[a],d=c.firstChild,f,g;Q(c);f=c.width;g=c.height;c.style.width=f+"px";c.style.height=g+"px";if(f>0)d.width=f;if(g>0)d.height=g;d.resize(f,g);c.attachEvent(L,H);x[a]=true}}};j.createElement(r);j.createStyleSheet().cssText=r+"{display:inline-block;overflow:hidden;width:300px;height:150px}";j.readyState==="complete"?A():j.attachEvent(F,A);h.attachEvent(J,I);if(w.indexOf(location.protocol+ +"//"+location.host+"/")===0){var S=new ActiveXObject("Microsoft.XMLHTTP");S.open("GET",w,false);S.send(k)}h[M]=u;h[N]=t;h[O]=E;h[C]=B;h[P]={init:function(){},init_:function(){},initElement:B.initElement};keep=u.measureText}(window,document); diff --git a/media/js/flashcanvas.swf b/media/js/flashcanvas.swf new file mode 100755 index 0000000000000000000000000000000000000000..66ff213fb9b86811d17f032be3c73df61547e597 GIT binary patch literal 21235 zcmV)3K+C^FS5pbJn*acK+RVKNe3M7gKmN>9^hmO7%f>biJ}yp>fH;q^A>~Me&>Zjq zPH3q%DweQ=Z8?%m$=$tYNJt?KLK4zrAS5BATzYS$cVq`Uz4zXe;}Z1$&OVPM+i>LW z-ur$2uaDhlW_EXWc6N4mW}ip7C6fBCB;{QrNu?xBF4#koq`wY&nk4DaSVQFCS(B^F zm$Wpu#t#N|*oekNqV3?y%EgNpk6OInsAz0K<>-SBI;gU0Oy!s{KGg8Vm$oJXOMI>I zVI#%~29v|_P^_sf(G+bhXFL#$wkHl7F~Z{75XvxZYmYSxmJOlGaC5jN+?t42jvh4{ zj2c1*N20NoKw?~=t*yB!6kv9hOMLOhXlUW$z@o4((j1649$J~L$ZZl$iRSRQ2@TO; zxV*YKyrg`;@(J1YqPAIuD>q~X9oJ`=0d74i6m6+&i$xpSLy#!~R-$p=Cd{I(J=ok7 zZw$xAwYM&8jV?C3$WpmZC>9PRqWx>6XEedDCb?vIs2rAcxsl{(I;V18{#igwm$N&F4^{GjK2nD6JD z)vUxxf!0NVxb#rb(n}->WGNC0w1h`XZfTTsDcvAnL}Mg9MKUQXZ@;dwqvPVkyUtkm zj0)!ZOUqY3qds=|g}}afRPXKmOi!hhmylAaNA=e~>(w87I;B6~o6_Iyy-vOUr3yBUbFE*dAy#7r}zyG?gZD*~O&pP{EZBzF(+Gk(>sGYU! z2KDBiZF0xOJM`y1cwg=4xIx{1!!`POe}7Ot>mQx+i&s8C$t#rZWn0xXn|?v(@+Vyz zmDIYE*FW}@_Vo`bef>o%DYfhu{q=jkv!%XyPw%)XrFTB_sjXw#axjx`-f@@qHAKC= z`&a$-yYH|qUv`81HO6)J^N;G=pTA81;hmJ;@$+}e^I-MiEq7@h%eJ7CQ}nJMKGVCe zebKh+jYri-zSyB}e|U#}{Rhiw`xRHIm#ltMdGpLiwYR~iV~292a_JAsa~n3uD>h$l`})>~?Wtb<9q8;1q#GYVr=R_V zmdn)*m*1pxJhMaZSoy2o^Uf!>>y!8C7ytC0`sEuBX=~p3!nW_~-A~q^w%DMcIx4r*