var PI=Math.PI;var DOUBLE_PI=Math.PI*2;var HALF_PI=PI/2;var TO_RADIANS=PI/180;var MINUTE_SECONDS=60;var HOUR_SECONDS=60*60;var DAY_SECONDS=HOUR_SECONDS*24;var MAP_IMAGE="/images/supergraphic/robinson.png";var DATA_SOURCE="/javascripts/supergraphic_json.js";var TIME_INTERVAL=(MINUTE_SECONDS*3);var DRAW_INTERVAL=125;var POINT_TIME_ON_SCREEN=2;var ARC_TIME_ON_SCREEN=0.5;var SAN_FRANCISCO_X=175;var SAN_FRANCISCO_Y=125;var r1=80;var r2=91;var g1=121;var g2=137;var b1=57;var b2=67;var a1=1;var a2=0.5;var s1=2;var s2=10;var robinson=(function(){var e=[0.98441988,0.9858,0.98441988,0.98126532,0.975942,0.9682527599999999,0.9591834,0.946368,0.92931366,0.90851328,0.88347396,0.85557582,0.823143,0.78725988,0.74891226,0.70839588,0.66364056,0.61247754,0.56407476,0.52464276];var h=[-0.062,0,0.062,0.124,0.186,0.248,0.31,0.372,0.434,0.4958,0.5571,0.6176,0.6769,0.7346,0.7903,0.8435,0.8936,0.9394,0.9761,1];var d=1.5708;var a=-1.5708;var f=3.097;var b=-3.097;var c={};var g={};return function(t,j){var n=j+"";var m=t+"";var u={x:c[n],y:g[m]};if(!(u.x&&u.y)){var o=-1*t*TO_RADIANS;var s=Math.abs(o/0.0872664626);var i=j*TO_RADIANS;var q=Math.floor(s);s-=q;var r=(e[q+1]+s*(e[q+2]-e[q])/2+s*s*(e[q+2]-2*e[q+1]+e[q])/2)*i;var p=(h[q+1]+s*(h[q+2]-h[q])/2+s*s*(h[q+2]-2*h[q+1]+h[q])/2)*HALF_PI;if(o<0){p=-p}var l=(r-b)/(f-b);var k=(p-a)/(d-a);c[n]=l;g[m]=k;u={x:l,y:k}}return u}})();var mapImage=new Image();mapImage.src=MAP_IMAGE;var points=[];var start_time=0;var current_time=0;var end_time=0;var dot_cache={};var timesDrawn={};window.addEvent("load",function(){var width=$("supergraphic").width;var height=$("supergraphic").height;var canvas=$("supergraphic");var context=canvas.getContext("2d");mapImage.onload=function(){context.drawImage(mapImage,0,0,width,height)};var drawCanvas=function(){context.drawImage(mapImage,0,0,width,height);current_time=current_time+TIME_INTERVAL;var date=new Date(current_time*1000);$("supergraphic_date").set("html",date.toDateString());var drawPoints=[];var drawArcs=[];var numPoints=points.length;for(var i=numPoints-1;i>0;i--){if(points[i][0]<current_time){var hours_old=((current_time-points[i][0])/HOUR_SECONDS);if(hours_old<=POINT_TIME_ON_SCREEN){drawPoints[drawPoints.length]=i}if(hours_old<=ARC_TIME_ON_SCREEN){drawArcs[drawPoints.length]=i}}}var drawPointsSize=drawPoints.length;for(var c=drawPointsSize-1;c>=0;c--){var i=drawPoints[c];var age=((current_time-points[i][0])/HOUR_SECONDS);var mix=(1-(age/POINT_TIME_ON_SCREEN)).toFixed(2);var mix_2=1-mix;var cache_key=mix.toString();var cached_dot=dot_cache[cache_key];if(!(cached_dot)){var red=(r1*mix)+(r2*mix_2);var green=(g1*mix)+(g2*mix_2);var blue=(b1*mix)+(b2*mix_2);var alpha=(a1*mix)+(a2*mix_2);var size=(s1*mix)+(s2*mix_2);dot_cache[cache_key]={c:["rgba(",red.toInt(),", ",green.toInt(),", ",blue.toInt(),", ",alpha,")"].join(""),s:size};cached_dot=dot_cache[cache_key]}drawPoint(points[i][1],points[i][2],cached_dot.c,cached_dot.s)}var drawArcsSize=drawArcs.length;for(var c=drawArcsSize-1;c>0;c--){var i=drawArcs[c];drawArc(context,points[i][1],points[i][2])}};var getPoints=function(){var json_url=DATA_SOURCE;new Request({url:json_url,onSuccess:function(judgmentsText){var judgments=eval(judgmentsText);start_time=judgments[0][0];current_time=start_time;end_time=judgments.getLast()[0];var numJudgments=judgments.length;for(var i=0;i<numJudgments;i++){var rp=robinson(judgments[i][1],judgments[i][2]);judgments[i][1]=rp.x*width;judgments[i][2]=rp.y*height}points=judgments}}).get();startSupergraphicLoop=function(){setInterval(drawCanvas,DRAW_INTERVAL)}};drawPoint=function(x,y,col,size){context.fillStyle=col;context.beginPath();context.arc(x,y,size,0,DOUBLE_PI,true);context.closePath();context.fill()};drawArc=function(context,x,y){context.strokeStyle="rgba(98,145,73,0.2)";context.beginPath();context.moveTo(SAN_FRANCISCO_X,SAN_FRANCISCO_Y);cp1x=(SAN_FRANCISCO_X+x)/2+(SAN_FRANCISCO_X-x)/4;cp1y=(SAN_FRANCISCO_Y+y)/2-(Math.abs(SAN_FRANCISCO_X-x)/5+Math.abs(SAN_FRANCISCO_Y-y)/2);cp2x=(SAN_FRANCISCO_X+x)/2-(SAN_FRANCISCO_X-x)/4;cp2y=(SAN_FRANCISCO_Y+y)/2-(Math.abs(SAN_FRANCISCO_X-x)/5+Math.abs(SAN_FRANCISCO_Y-y)/2);context.bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y);context.stroke()};getPoints()});window.addEvent("domready",function(){var b=$("supergraphic_placeholder");var a=$("supergraphic");b.addEvent("click",function(c){if(c){c.stop()}this.setStyle("display","none");a.setStyle("display","block");startSupergraphicLoop()})});