
neo.ieVersion=function(){var ua=navigator.userAgent;var m=ua.match(/MSIE\s*(\d)/);if(!m)return 0;return parseInt(m[1]);}
neo.theIEVersion=neo.ieVersion();function initCanvas(el){if(neo.theIEVersion){G_vmlCanvasManager_.initElement(el);}}
neo.initCanvas=function(el){if(neo.theIEVersion){G_vmlCanvasManager_.initElement(el);}};neo.dom={};(function(){var lib=neo.dom;lib.Element=function(options){this.options=options;this.Class=lib.Element;this.apply();};lib.Element.prototype=new neo.Nit();lib.Element.prototype.installOptions=function(root,tag){var e=neo.currentVersion(root,this,tag);var v=e.value;var r=v.rendered;var click=v.click;var hcss=v.hoverCss;if(v.css){var bcss=v.css;r.css(bcss);}
if(v.attributes){r.attr(v.attributes);}
if(click){var appClick=function(){click(this);};r.click(appClick);}
if(hcss){r.mouseover(function(){neo.log("domcss",hcss);r.children().css(hcss);});r.mouseleave(function(){r.children().css(bcss);});}}
lib.Element.prototype.getContainer=function(root,tag){var e=neo.currentVersion(root,this,tag);var v=e.value;var c=v.container;if(c)return c;var p=v.parent;if(p){return p.value.rendered;}}
lib.Element.prototype.render=function(root){var e=neo.currentVersion(root,this);var v=e.value;if(v.doNotRender)return null;var c=e.getContainer();var tag=v.tag;var el=$("<"+tag+"/>");e.value.rendered=el;e.installOptions();c.append(el);return el;}
lib.Element.prototype.select=function(){var r=this.value.rendered;r.css(this.options.selectedCss);}
lib.Element.prototype.deselect=function(){var r=this.value.rendered;r.css(this.options.css);}
lib.AtomicElement=function(options){this.options=options;this.Class=lib.AtomicElement;this.apply();};lib.AtomicElement.prototype=new lib.Element();lib.AtomicElement.prototype.render=function(root){var e=neo.currentVersion(root,this,tag);var v=e.value;if(v.doNotRender)return null;var c=e.getContainer();var tag=v.tag;if(tag=="img"){var src=v.src;}else{var cn=v.content;var g=v.htmlGen;var html=v.html;if(g){var h=g(cn);}else{if(html){h=html;}else{h=cn;}}}
var el=$("<"+tag+"/>");e.value.rendered=el;if(tag=="img"){el.attr("src",src);}
c.append(el);el.html(h);this.installOptions();return el;}
lib.Elements=function(options){this.options=options;this.Class=lib.Elements;this.apply();};lib.Elements.prototype=new lib.Element();lib.Elements.prototype.render=function(root,rtag){var e=neo.currentVersion(root,this,rtag);var v=e.value;var c=e.getContainer();var tag=v.tag;if(v.doNotRender)return null;if(tag=="body"){var el=$('body');}else{el=$("<"+tag+"/>");c.append(el);}
e.value.rendered=el;e.installOptions();var els=v.elements;if(!els){els=[];}
if(!$.isArray(els))neo.error("Expected elements to an array ",this);var ln=els.length;var newRoot=root;if(rtag){var ctag=rtag;}else{ctag=e._currentTag;}
if(e._repo){var newRoot=e;}else{newRoot=root;}
for(var i=0;i<ln;i++){var cel=els[i];var vcel=neo.currentVersion(newRoot,cel,ctag);vcel.value.parent=e;vcel.render(newRoot);}}
lib.List=function(options){this.options=options;this.Class=lib.List;neo.apply(this);};lib.List.prototype=new lib.Element();lib.List.prototype.elementClick=function(el){var els=this.elements;var ln=els.length;for(var i=0;i<ln;i++){var cel=els[i];if(cel!=el){cel.deselect();}}
var cb=this.value.selectCallback;if(cb)cb(el.value.content);el.select();}
lib.List.prototype.render=function(){var v=this.value;var c=this.getContainer();var css=v.css;var html=v.html;var div=$('<div/>');c.append(div);div.css(css);var tb=$('<table/>');div.append(tb);var elcs=v.elementContents;var elC=v.elementComponent;var ln=elcs.length;var els=[];this.elements=els;var thisHere=this;for(var i=0;i<ln;i++){var ce=elcs[i];var celC=elC.apply({content:ce,container:tb});(function(){var icel=celC;icel.value.click=function(){thisHere.elementClick(icel);};})();els.push(celC);celC.render();}}
lib.Assembly=function(options){this.options=options;this.Class=lib.Assembly;neo.apply(this);};lib.Assembly.prototype.apply=function(options){return neo.apply(this,options);}
lib.Assembly.prototype.render=function(){var v=this.value;var c=v.container;var css=v.css;var parts=v.parts;var partData=v.partData;var tag=v.tag;var root=$('<'+tag+'/>');c.append(root);root.css(css);var ln=parts.length
for(var i=0;i<ln;i++){var part=parts[i];var partd=partData[i];var partv=part.apply({container:root,content:partd});partv.render();}}
lib.loadImages=function(ims){var ln=ims.length;for(var i=0;i<ln;i++){var ci=ims[i];var imel=$('<img>');imel.attr("src",ci);}}
lib.Lightbox=function(container,rect){this.container=container;var xt=rect.extent;var cr=rect.corner;this.left=cr.x;this.top=cr.y;this.width=xt.x;this.height=xt.y;}
lib.Lightbox.prototype.setElementProperties=function(){var element=this.element;element.css({width:(this.width+"px"),height:(this.height+"px"),top:(this.top+"px"),left:(this.left+"px")});}
lib.Lightbox.prototype.dismiss=function(){this.element.hide();this.shade.hide();this.loading.hide();}
lib.Lightbox.prototype.pop=function(){this.setElementProperties();var wd=$(document).width();var ht=$(document).height();var w=$(window);var stop=w.scrollTop();var bht=w.height();var bwd=w.width();var lwd=this.width;var lft=Math.max((bwd-lwd)/2,50);var eht=Math.max(bht-(this.top)-50,50);this.element.css({width:lwd+"px",height:(eht+"px"),top:(stop+35)+"px",left:(lft+"px")});this.loading.css({top:stop+10});this.element.show();this.shade.css({width:(wd+"px"),height:(ht+"px"),top:"0px",left:"0px"});this.shade.show();}
lib.Lightbox.prototype.insertContent=function(url){var e=this.element;this.loading.show();e.empty();this.addClose();var wd=this.width-25;var ifrs='<iframe class="lightboxiframe" src="'+url+'" frameborder="0" width="'+wd+'" height="100%"/>';var ifr=$(ifrs);var thisHere=this;ifr.load(function(){thisHere.loading.hide();});e.append(ifr);}
lib.Lightbox.prototype.addClose=function(){var thisHere=this;this.close=$('<div style="padding:3px;cursor:pointer;background-color:red;font-weight:bold;border:thin solid white;font-size:12pt;color:white;float:right">X</div>');this.close.click(function(){thisHere.dismiss();});this.element.append(this.close);}
lib.Lightbox.prototype.render=function(){var thisHere=this;var loading=$('<div class="loading">Loading...</div>');this.loading=loading;this.container.append(loading);loading.hide();var element=$('<div class="lightbox"/>');var wd=$(document).width();var ht=$(document).height();var shades='<div style="position:absolute;top:0px;left:0px;width:'+wd+'px;height:'+ht+'px;z-index:1500;opacity:0.8;background-color:black;"/>';var shade=$(shades);this.element=element;this.shade=shade;this.setElementProperties();this.container.append(element);this.container.append(shade);this.dismiss();}})();$n=neo;var debugg=0;neo.element={};(function(){var lib=neo.element;lib.OfficeHolder=function(options){this.options=options;this.Class=lib.OfficeHolder;this.rendered={};this.apply();}
lib.OfficeHolder.prototype.apply=function(options){var rs=neo.apply(this,options);var o=this.options.office;if(o){var oD=neo.cast(o,neo.data.government.government_office_or_title);var h=oD.office_holder;if(neo.FofTkind(h)){neo.temporalElements.push(this);}}}
lib.OfficeHolder.imageForSegment=function(sg){var imdirurl="http://neochronography.com/fbimages/";var imso=neo.cast(sg,neo.data.neo.type.Images);if(imso){var ims=imso.images;var im=ims[0];if(im.indexOf("http:")==0){var rs=im;}else{var imf=(im.substr(1).replace(/\//g,"."))+".jpg";rs=imdirurl+imf;}
return rs;}}
lib.OfficeHolder.prototype.allImages=function(){var o=this.options.office;if(o){var oD=neo.cast(o,neo.data.government.government_office_or_title);var h=oD.office_holder;var rs=[];$.each(h,function(i,v){var im=lib.OfficeHolder.imageForSegment(v.value);if(im)rs.push(im);});}
return rs;}
lib.OfficeHolder.prototype.render=function(){var v=this.value;var o=v.office;var name=o.name;var shortNames={"President Of The United States":"President","Vice President Of The United States":"Vice President","United States Secretary Of The Treasury":"Secretary of the Treasury","United States Secretary Of State":"Secretary Of State","United States Secretary Of Defense":"Secretary Of Defense","United States Attorney General":"Attorney General"};var shortName=shortNames[name];if(!shortName)shortName=name;if((shortName=="Secretary Of Defense")&&(neo.currentTime<1947.71495)){shortName="Secretary Of War";}
var oD=neo.cast(o,neo.data.government.government_office_or_title);var oh=oD.office_holder;var asg=neo.adjoiningSegmentStartTimes(oh);neo.log("time",asg);var sg=neo.selectSegment(oh,neo.currentTime);var sgid=neo.segmentIntervalAsString(sg);var lr=this.lastRendered;if(lr){lr.element.hide();}
var r=this.rendered[sgid];if(r){r.element.show();this.lastRendered=r;return;}
var h=sg.value;if(h){var imurl=lib.OfficeHolder.imageForSegment(h);var hid=h.id;var nm=h.name;var subjectURL="http://en.wikipedia.org/wiki/"+nm;var pg=sg.page;if(pg){var pg=pg.replace(/\ /,"_");subjectURL="http://en.wikipedia.org/wiki/"+pg;}
var linkTo=function(){window.open("http://freebase.com/view"+hid,"detailwin");};var tStart=sg.timeStart;var tEnd=sg.timeEnd;}else{var hid="_unknown_";}
var er=$('<table style="background-color:black;width:100%;height:200px;border:solid thin black"/>');var c=v.container;c.append(er);var outerRow=$('<tr/>');er.append(outerRow);if(asg.prev){var linkEarlier=$('<td  style="color:white;cursor:pointer;text-align:center"><</td>');linkEarlier.click(function(){var aaa=asg;var prev=asg.prev;var prevtm=neo.dateToTime(prev);neo.setTheTime(prevtm);});}else{linkEarlier=$('<td style="color:black;cursor:pointer;text-align:center"><</td>');}
outerRow.append(linkEarlier);var mainTd=$('<td/>');outerRow.append(mainTd);if(asg.nxt){var linkLater=$('<td  style="color:white;cursor:pointer;text-align:center">></td>');linkLater.click(function(){if(debugg){debugger;}
var hh=h;var aaa=asg;var nxt=asg.nxt;var nxttm=neo.dateToTime(nxt)+.01;neo.setTheTime(nxttm);});}else{var linkLater=$('<td  style="color:black;cursor:pointer;text-align:center">></td>');}
outerRow.append(linkLater);var innerTable=$('<table style="font-size:8pt"/>');mainTd.append(innerTable);var titleRow=$('<tr style="height:20px"/>');innerTable.append(titleRow);var titleCell=$('<td  style="color:white;text-align:center"/>');titleRow.append(titleCell);titleCell.html(shortName);var nameRow=$('<tr style="height:20px"/>');innerTable.append(nameRow);var nameCell=$('<td  style="color:white;text-align:center"/>');nameRow.append(nameCell);var datesRow=$('<tr style="height:20px"/>');if(tStart&&0){innerTable.append(datesRow);var datesCell=$('<td  style="font-size:7pt;color:white;text-align:center"/>');datesRow.append(datesCell);datesCell.html(neo.dateToUSformat(tStart)+"-<br/>"+neo.dateToUSformat(tEnd));}
if(imurl){var imRow=$('<tr/>');}else{imRow=$('<tr height="130px"/>');}
innerTable.append(imRow);if(imurl){var imCell=$('<td style="text-align:center"/>');}else{imCell=$('<td  style="color:white;text-align:center"> </td>');}
imRow.append(imCell);if(imurl){if(nm=="Tom C Clark"){var imEl=$('<img width="90"/>');}else{imEl=$('<img/>');}
imCell.append(imEl);imEl.attr('src',imurl);imEl.show();if(subjectURL){imEl.click(function(){hub.lightbox.pop();hub.lightbox.insertContent(subjectURL);});imEl.css("cursor","pointer");}}
var r={element:er};this.rendered[sgid]=r;this.lastRendered=r;if(h){nameCell.html(h.name);if(linkTo){nameCell.css('cursor','pointer');nameCell.click(function(){hub.lightbox.pop();hub.lightbox.insertContent(subjectURL);});}}}
lib.analyzeOffice=function(onm){var onms=onm.split("/");var lst=onms[onms.length-1];var ofs=neo.data.en[lst];var oD=neo.cast(ofs,neo.data.government.government_office_or_title);var oh=oD.office_holder;return neo.analyzeSegments(oh);}})();$n=neo;(function(){var lib=neo.element;lib.Cabinet=function(options){this.options=options;this.Class=lib.Cabinet;this.rendered={};this.apply();}
lib.Cabinet.prototype.apply=function(options){var rs=neo.apply(this,options);return rs;}
lib.Cabinet.prototype.getContainer=function(root,tag){var e=neo.currentVersion(root,this,tag);var v=e.value;var c=v.container;if(c)return c;var p=v.parent;if(p){return p.value.rendered;}}
lib.Cabinet.prototype.allImages=function(){var ofhs=this.value.officeHolders;var rs=[];$.each(ofhs,function(i,v){var ims=v.allImages();rs=rs.concat(ims);});return rs;}
lib.Cabinet.prototype.computeOfficeHolders=function(){var ohs=[];$.each(this.value.offices,function(i,v){var office=neo.selectTopic(v);ohs.push(new neo.element.OfficeHolder({office:office}));});this.options.officeHolders=ohs;}
lib.Cabinet.prototype.render=function(){var v=this.value;var perRow=3;var officeHolders=v.officeHolders;var offices=v.offices;var ln=offices.length;var numRows=Math.floor((ln+1)/perRow);var cn=this.getContainer();var wd=v.width;var sep=v.separation;var rowWd=(1+perRow)*sep+perRow*wd;var lft=sep;var vsep=v.verticalSeparation;var ht=v.height;var tht=numRows*(ht+vsep);var mDiv=$('<div/>');mDiv.css({position:"absolute",top:10,left:lft,width:rowWd,height:tht,"font-size":"10pt"});cn.append(mDiv);var cDivs={};var ctop=vsep;var cLeft=sep;var n=0;for(var r=0;r<numRows;r++){for(var c=0;c<perRow;c++){var coff=offices[n];var cDiv=$('<div></div>');mDiv.append(cDiv);var stl={position:"absolute",top:ctop,left:cLeft,width:wd,height:ht};cDiv.css(stl);cDivs[coff]=cDiv;cLeft+=sep+wd;var ofh=v.officeHolders[n];ofh.options.container=cDiv;n++;}
ctop=ctop+ht+vsep;cLeft=sep;}}
lib.Cabinet.spliceInSecOfWar=function(){var sd=neo.selectTopic("/en/united_states_secretary_of_defense");var sw=neo.selectTopic("/en/united_states_secretary_of_war");var sdc=neo.cast(sd,neo.data.government.government_office_or_title);var swc=neo.cast(sw,neo.data.government.government_office_or_title);var sws=swc.office_holder;var sds=sdc.office_holder;var ln=sws.length;for(var i=0;i<ln;i++){var cs=sws[i];if(i==2)cs.timeEnd="1800-06-01";cs.topic=sd;sds.push(cs);}}
lib.Cabinet.prototype.analyzeSegments=function(){var offs=this.value.offices;var ln=offs.length;var rs={};for(var i=0;i<ln;i++){var coff=offs[i];var asgs=lib.analyzeOffice(coff);rs[coff]=asgs;}
return rs;}})();var yUp=function(ctx,centerX,centerY,rotation){this.context=ctx;ctx.rotate(0);ctx.translate(0,0);ctx.save();this.stackDepth=1;this.centerX=centerX;this.centerY=centerY;var width=ctx.canvas.width;var height=ctx.canvas.height;this.width=width;this.height=height;this.setRotation(rotation,1);}
yUp.prototype.setFillStyle=function(fs){this.context.fillStyle=fs;}
yUp.prototype.createRadialGradient=function(){return this.context.createRadialGradient.apply(this.context,arguments);}
yUp.prototype.setRotation=function(rotation,noRestore){var ctx=this.context;if(!noRestore){while(this.restore()){};}
ctx.rotate(0);ctx.translate(0,0);ctx.save();this.stackDepth=1;var centerX=this.centerX;var centerY=this.centerY;var width=this.width;var height=this.height;if(centerX||centerY){var trx=centerX?width/2:0;var trny=centerY?height/2:0;ctx.translate(trx,trny);}
if(1&&rotation){ctx.rotate(rotation);}
this.save();}
yUp.prototype.save=function(){this.context.save();this.stackDepth++;neo.log("yUp","SAVE stack depth",this.stackDepth);}
yUp.prototype.restore=function(){var dpth=this.stackDepth;if(dpth>0){this.context.restore();this.stackDepth--;neo.log("yUp","RESTORE stack depth",this.stackDepth);return true;}else{neo.log("yUp","Attempt to restore but depth already 0");return false;}}
yUp.prototype.flipY=function(y){if(this.centerY)return-y;return this.height-y;}
yUp.prototype.fillRect=function(x,y,width,height){if(this.centerY){var fy=-y-height;}else{fy=this.height-y-height;}
var fx=x;this.context.fillRect(fx,fy,width,height);}
yUp.prototype.clearRect=function(x,y,width,height){if(this.centerY){var fy=-y-height;}else{fy=this.height-y-height;}
var fx=x;this.context.clearRect(fx,fy,width,height);}
yUp.prototype.arc=function(x,y,radius,startAngle,endAngle,antiClockwise){if(this.centerY){var fy=-y;}else{fy=this.height-y;}
this.context.arc(x,fy,radius,startAngle,endAngle,!antiClockwise);}
yUp.prototype.translate=function(x,y){this.context.translate(x,this.flipY(y));}
yUp.prototype.fillText=function(txt,x,y){this.context.fillText(txt,x,this.flipY(y));}
yUp.prototype.rotate=function(r){this.context.rotate(r);}
yUp.prototype.scale=function(x,y){if(!y)y=x;this.context.scale(x,y);}
yUp.prototype.beginPath=function(){this.context.beginPath();}
yUp.prototype.moveTo=function(x,y){this.context.moveTo(x,this.flipY(y));}
yUp.prototype.lineTo=function(x,y){this.context.lineTo(x,this.flipY(y));}
yUp.prototype.fill=function(){this.context.fill();}
yUp.prototype.clip=function(){this.context.clip();}
yUp.prototype.closePath=function(){this.context.closePath();}
neo.shape={};(function(){var lib=neo.shape;lib.Shape=function(){}
lib.Shape.prototype=new neo.Nit();lib.Rect=function(options){this.options=options;this.Class=lib.Rect;this.apply();};lib.Rect.prototype=new lib.Shape();lib.Rect.prototype.render=function(){var v=this.value;var s=v.scale;var x=v.x?v.x:0;var y=v.y?v.y:0;var fs=v.fillStyle;var ctx=v.drawC;if(s||fs){ctx.save();var ctxsaved=1;if(s)ctx.scale(s);if(fs)ctx.setFillStyle(fs);}
if(v.centered){1
var hwd=v.width/2;var hht=v.height/2;ctx.fillRect(x-hwd,y-hht,v.width,v.height);}else{ctx.fillRect(x,y,v.width,v.height);}
if(ctxsaved){ctx.restore();}}
lib.IsoTriangle=function(options){this.options=options;this.Class=lib.IsoTriangle;this.apply();};lib.IsoTriangle.prototype=new lib.Shape();lib.IsoTriangle.prototype.render=function(){var v=this.value;var s=v.scale;var u=v.baseOnTop;var ht=v.height;var wd=v.width;var ctx=v.drawC;var x=v.x?v.x:0;var y=v.y?v.y:0;var fs=v.fillStyle;if(s||fs){ctx.save();var ctxsaved=1;if(s)ctx.scale(s);if(fs)ctx.setFillStyle(fs);}
if(u){var hwd=wd/2;ctx.beginPath();ctx.moveTo(x-hwd,y+ht);ctx.lineTo(x,y);ctx.lineTo(x+hwd,y+ht);ctx.fill();ctx.closePath()}
if(ctxsaved)ctx.restore();}
lib.Circle=function(options){this.options=options;this.Class=lib.Circle;this.apply();};lib.Circle.prototype=new lib.Shape();lib.Circle.prototype.render=function(){var v=this.value;var s=v.scale;var icl=v.innerColor;var ocl=v.outerColor;var fs=v.fillStyle;var r=v.radius;var ctx=v.drawC;var clip=v.clip;var x=v.x?v.x:0;var y=v.y?v.y:0;if(icl||ocl||s||fs){ctx.save();var ctxsaved=1;if(s)ctx.scale(s);if(icl||ocl){var rg=ctx.context.createRadialGradient(0,0,0,0,0,r);rg.addColorStop(0,icl);rg.addColorStop(1,ocl);ctx.setFillStyle(rg);}else{ctx.setFillStyle(fs);}}
ctx.beginPath();ctx.arc(x,y,r,0,2*Math.PI,0);if(clip)ctx.clip();else ctx.fill();ctx.closePath()
if(ctxsaved){ctx.restore();}}
lib.FFButton=function(options){this.options=options;this.Class=lib.FFButton;this.apply();}
lib.FFButton.prototype.apply=function(options){var rs=neo.apply(this,options);var o=rs.options;var tr=o.triangle;var c=o.circle;var bty=o.bty;var tty=o.tty;var ot=o.oneTriangle;if(neo.defined(tr,c,bty,ot)){var v=rs.value;if(!ot)v.topTriangle=o.triangle.apply({y:tty});v.bottomTriangle=o.triangle.apply({y:bty});}
return rs;};lib.FFButton.prototype.render=function(){var v=this.value;var rt=v.rotation;var tt=v.topTriangle;var bt=v.bottomTriangle;var ot=v.oneTriangle;var c=v.circle;var ctx=v.drawC;bt.value.drawC=ctx;if(!ot)tt.value.drawC=ctx;c.value.drawC=ctx;ctx.save();if(rt)ctx.rotate(rt);if(v.scale)ctx.scale(v.scale);c.render();bt.render();if(!ot)tt.render();ctx.restore();}
lib.StopButton=function(options){this.options=options;this.Class=lib.StopButton;this.apply();};lib.StopButton.prototype=new lib.Shape();lib.StopButton.prototype.render=function(){var v=this.value;var sq=v.square;var c=v.circle;var ctx=v.drawC;if(v.scale){ctx.save();ctx.scale(v.scale);}
sq.value.drawC=ctx;c.value.drawC=ctx;c.render();sq.render();if(v.scale){ctx.restore();}}
lib.PlusSign=function(options){this.options=options;this.Class=lib.PlusSign;this.apply();};lib.PlusSign.prototype=new lib.Shape();lib.PlusSign.prototype.render=function(){var v=this.value;var sq=v.square;var stroke=v.stroke;var ctx=v.drawC;var twoStrokes=v.twoStrokes;ctx.save();if(v.scale)ctx.scale(v.scale);var sqv=sq.apply({drawC:ctx});var strokev=stroke.apply({drawC:ctx});if(twoStrokes){strokev.render();ctx.rotate(Math.PI/2);strokev.render();}else{ctx.scale(0.5,1);strokev.render();}
ctx.restore();}})();$n=neo;(function(){var lib=neo.shape;lib.VcrButtons=function(options){this.options=options;this.Class=lib.VcrButtons;this.apply();}
lib.VcrButtons.prototype.apply=function(options){var rs=neo.apply(this,options);var o=rs.options;var ffbut=o.ffbutton;var fbut=o.fbutton;var c=ffbut.options.circle;var sq=o.square;var sc=ffbut.options.scale;var stopBut=new $n.shape.StopButton({scale:sc,square:sq,circle:c});var v=rs.value;v.stopbutton=stopBut;var fBut=fbut.apply({scale:sc,circle:c,rotation:-Math.PI/2,oneTriangle:1});v.fbutton=fBut;var fbBut=ffbut.apply({rotation:Math.PI/2});v.fbbutton=fbBut;return rs;}
lib.VcrButtons.prototype.render=function(){var v=this.value;var ffbut=v.ffbutton;var fbbut=v.fbbutton;var fbut=v.fbutton;var sbut=v.stopbutton;var container=v.container;var r=ffbut.value.circle.value.radius;var butScale=ffbut.value.scale;var os=v.scale;var s=os?os:1;var sep=s*v.separation;var top=v.top?v.top:0;var left=v.left?v.left:0;function mkButtonCanvas(x,dim,name){var fname="vcr"+name;var canvas=document.createElement('canvas');canvas.setAttribute("width",dim);canvas.setAttribute("height",dim);canvas.id=fname;initCanvas(canvas);var canvasE=$(canvas);container.append(canvasE);canvasE.css("position","absolute");canvasE.css("left",x);canvasE.css("top",top);canvasE.css("z-index",300);return canvasE;}
var dim=butScale*s*r*2.1;var cx=left;var cnv=mkButtonCanvas(cx,dim,"fastback");var ctx=new yUp(cnv.context.getContext('2d'),1,1);if(os){ctx.save();ctx.scale(os);}
fbbut.value.drawC=ctx;fbbut.render();if(os)ctx.restore();cx=cx+sep;var cnv=mkButtonCanvas(cx,dim,"stop");var ctx=new yUp(cnv.context.getContext('2d'),1,1);if(os){ctx.save();ctx.scale(os);}
sbut.value.drawC=ctx;sbut.render();if(os)ctx.restore();var cnv=mkButtonCanvas(cx,dim,"forward");var ctx=new yUp(cnv.context.getContext('2d'),1,1);if(os){ctx.save();ctx.scale(os);}
fbut.value.drawC=ctx;fbut.render();if(os)ctx.restore();cx=cx+sep;var cnv=mkButtonCanvas(cx,dim,"fastforward");var ctx=new yUp(cnv.context.getContext('2d'),1,1);if(os){ctx.save();ctx.scale(os);}
ffbut.value.drawC=ctx;ffbut.render();if(os)ctx.restore();}})();$n=neo;neo.slider={};(function(){var lib=neo.slider;lib.Slider=function(options){this.options=options;this.Class=lib.Slider;this.runningAnimation=0;this.apply();};lib.Slider.prototype=new neo.shape.Shape();var Slider=lib.Slider;Slider.prototype.getContainer=function(root,tag){var e=neo.currentVersion(root,this,tag);var v=e.value;var c=v.container;if(c)return c;var p=v.parent;if(p){return p.value.rendered;}}
Slider.prototype.apply=function(options){var rs=neo.apply(this,options);var o=rs.options;var paddingBottom=o.paddingBottom;var includeYear=o.includeYear;var value=rs.value;var mark=o.mark;var smallMark=o.smallMark;var mv=mark.apply({x:0,y:paddingBottom,fillStyle:o.barColor});value.mark=mv;var smv=smallMark.apply({x:0,y:paddingBottom,fillStyle:o.barColor});value.smallMark=smv;var bar=o.bar;var barv=bar.apply({centered:0,x:0,y:paddingBottom,width:o.width,fillStyle:o.barColor});value.bar=barv;return rs;}
Slider.prototype.render=function(){if(this.rendered)return;this.rendered=true;var thisHere=this;var v=this.value;var foreground=this.foreground;var textColor=v.textColor;var barColor=v.barColor;var fontSize=v.fontSize;var includeYear=v.includeYear;var paddingTop=v.paddingTop;var paddingBottom=v.paddingBottom;var cntr=this.getContainer();var coff=cntr.offset();var holderHeight=((v.height)+paddingTop+paddingBottom);var holderD='<div class="sliderHolder" style="position:absolute;z-index:3;padding:0;left:'+(coff.left)+'px;top:'+(coff.top)+'px;width:'+(v.width)+'px;height:'+holderHeight+'px"></div>';var holder=$(holderD);holder.attr("draggable",false);$('body').append(holder);var vcrb=v.vcrbuttons;var interactorD='<div id="interactor" style="z-index:200;cursor:pointer;position:absolute;left:'+(coff.left)+'px;top:'+(coff.top)+'px;width:'+(v.width)+';height:'+holderHeight+'"></div>';var interactor=$(interactorD);interactor.attr("draggable",false);var vcrContainer;function expandInteractor(){interactor.css({width:(v.width)+600,left:(coff.left)-100,height:300,top:coff.top-200});vcrContainer.css({top:200,left:100});}
function contractInteractor(){interactor.css({width:(v.width),left:(coff.left),height:holderHeight,top:coff.top});vcrContainer.css({top:0,left:0});}
$('body').append(interactor);var canvas=document.createElement('canvas');canvas.setAttribute("width",v.width);canvas.setAttribute("height",holderHeight);initCanvas(canvas);var canvasE=$(canvas);holder.append(canvasE);canvasE.css("position","absolute");canvasE.css("left",0);canvasE.css("top",0);canvasE.css("z-index",30);var vcrContainer=$('<div style="position:absolute;width:'+(v.width)+';height:'+holderHeight+';left:0;top:0;"/>');this.vcrContainer=vcrContainer;interactor.append(vcrContainer);if(vcrb){var vcrbi=vcrb.apply({container:vcrContainer,left:(v.width)/2-75,top:v.height+paddingTop+10});vcrbi.render();this.stopButton=$('#vcrstop');this.stopButton.mousedown(function(){thisHere.stopAnimation();return false;});this.forwardButton=$('#vcrforward');this.forwardButton.mousedown(function(){thisHere.startAnimation();return false;});var fastforwardButton=$('#vcrfastforward');fastforwardButton.mousedown(function(){thisHere.stopAnimation();thisHere.setValue(v.endYear);return false;});var fastbackButton=$('#vcrfastback');fastbackButton.mousedown(function(){thisHere.stopAnimation();thisHere.setValue(v.startYear);return false;});}
ctx=new yUp(canvas.getContext('2d'));var interval=v.subInterval;var mstartYear=Math.floor(v.startYear/interval)*interval;var mendYear=Math.floor(v.endYear/interval)*interval;var numMarks=(mendYear-mstartYear)/interval;var pxPerYear=(v.width)/(v.endYear-v.startYear);var mark=v.mark;var smallMark=v.smallMark;var mv=mark.apply({x:0,y:paddingBottom,drawC:ctx});var smv=smallMark.apply({x:0,y:paddingBottom,drawC:ctx});var bar=v.bar;bar.value.drawC=ctx;bar.render();var sliding=v.sliding;var scanvas=document.createElement('canvas');scanvas.setAttribute("width",sliding.value.width);scanvas.setAttribute("height",sliding.value.height);initCanvas(scanvas);var scanvasE=$(scanvas);holder.append(scanvasE);scanvasE.css("position","absolute");scanvasE.css("left",0);scanvasE.css("top",0);scanvasE.css("z-index",200);scanvasE.attr("draggable",false);var thisHere=this;var scanvas=scanvasE[0];function setValueFromMouseEvent(e){var ofs=cntr.offset();var cx=e.pageX-ofs.left;var yr=Math.floor((cx/(v.width))*(v.endYear-v.startYear)+v.startYear);thisHere.setValue(yr);}
function startDragging(e){$n.forDb={event:e};expandInteractor();setValueFromMouseEvent(e);$n.log('drag',e);interactor.mousemove(function(e){setValueFromMouseEvent(e);return false;});return false;}
function stopDragging(e){contractInteractor();interactor.unbind("mousemove");return false;}
if(1){interactor.mousedown(startDragging);interactor.bind("dragstart",startDragging);interactor.mouseup(stopDragging);interactor.mouseleave(stopDragging);}
var sctx=new yUp(scanvas.getContext('2d'),1);var slidingv=sliding.apply({x:0,y:0,drawC:sctx,fillStyle:barColor});slidingv.render();this.slidingShape=slidingv;this.slidingElement=scanvasE;var width=v.width;var cy=mstartYear;var bigInterval=v.interval;var mw=smv.options.width;var hmw=Math.floor(mw/2);while(cy<=v.endYear){var mx=(cy-v.startYear)*pxPerYear;if(cy%bigInterval==0){var m=mv;var txte=$('<div style="color:white;z-index:1;font-size:'+fontSize+';position:absolute;left:'+(mx-10)+'px;top:5px;">'+cy+'</div>');if(textColor)txte.css("color",textColor);vcrContainer.append(txte);txte.attr("draggable",false);}else{m=smv;}
m.options.x=mx-hmw;m.render();cy=cy+interval;}
if(includeYear){var cYearEl=$('<div style="font-size:'+fontSize+';position:absolute;left:'+((v.width/2)+80)+'px;top:'+(paddingTop+v.height+10)+'px;"></div>');if(textColor)cYearEl.css("color",textColor);vcrContainer.append(cYearEl);this.cYearEl=cYearEl;}
contractInteractor();}
Slider.prototype.setValue=function(tm,halos,noCallback){var v=this.value;if(tm>v.endYear)tm=v.endYear;if(tm<v.startYear)tm=v.startYear;$n.log("setValue",tm,halos);if(v.callback&&!noCallback){v.callback(tm,halos);}
var pxPerYear=(v.width)/(v.endYear-v.startYear);var se=this.slidingElement;if(!se)return;var ss=this.slidingShape;var wd=ss.options.width;var ps=(tm-v.startYear)*pxPerYear;var pd=this.options.paddingTop;se.css("left",ps-Math.floor(wd/2));se.css("top",pd);this.cTime=tm;if(this.cYearEl){this.cYearEl.html(neo.dateToUSformat(neo.timeToDate(tm)));}}
Slider.prototype.stopAnimation=function(){this.runningAnimation=0;this.stopButton.hide();this.forwardButton.show();}
Slider.prototype.startAnimation=function(){this.runningAnimation=1;this.forwardButton.hide();this.stopButton.show();if(this.cTime==this.options.endYear)this.setValue(this.options.startYear);this.animate();}
Slider.prototype.animate=function(){if(!this.runningAnimation)return;var increment=1;if(this.value.delay){var delay=this.value.delay;}else{delay=50;}
var etm=this.value.endYear;var stm=this.value.startYear;var tm=this.cTime;$n.log("slider",tm);if(tm>=etm){if(this.value.loopAnimation){$n.log("sliderLoop","LOOPING");tm=stm;}else{tm=etm;this.setValue(etm,1);this.stopAnimation();return;}}
this.setValue(tm+increment,1);var thisHere=this;setTimeout(function(){thisHere.animate();},delay);}})();