From fbc0473dfb23520468326934dbae171c6d2813d9 Mon Sep 17 00:00:00 2001 From: Sebastian Kruse Date: Mon, 12 Jun 2017 10:50:42 +0200 Subject: [PATCH] generate new build --- platin-min.js | 2 +- platin.js | 142 ++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 139 insertions(+), 5 deletions(-) diff --git a/platin-min.js b/platin-min.js index 8f65b41..cba1121 100644 --- a/platin-min.js +++ b/platin-min.js @@ -49,4 +49,4 @@ https://github.com/nodeca/pako/blob/master/LICENSE * Copyright 2010-2012, Peter Johnson * http://www.uselesscode.org/javascript/csv/ */ -var CSV=(function(){var f=/^\d+$/,g=/^\d*\.\d+$|^\d+\.\d*$/,i=/^\s|\s$|,|"|\n/,b=(function(){if(String.prototype.trim){return function(j){return j.trim()}}else{return function(j){return j.replace(/^\s*/,"").replace(/\s*$/,"")}}}());function h(j){return Object.prototype.toString.apply(j)==="[object Number]"}function a(j){return Object.prototype.toString.apply(j)==="[object String]"}function d(j){if(j.charAt(j.length-1)!=="\n"){return j}else{return j.substring(0,j.length-1)}}function e(k){var p,m="",o,n,l;for(n=0;n=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent"){break}elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)"){c="transparent"}return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str)){return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10))}if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)){return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]))}if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str)){return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55)}if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)){return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]))}if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str)){return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16))}if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str)){return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16))}var name=$.trim(str).toLowerCase();if(name=="transparent"){return m(255,255,255,0)}else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);(function($){var hasOwnProperty=Object.prototype.hasOwnProperty;function Canvas(cls,container){var element=container.children("."+cls)[0];if(element==null){element=document.createElement("canvas");element.className=cls;$(element).css({direction:"ltr",position:"absolute",left:0,top:0}).appendTo(container);if(!element.getContext){if(window.G_vmlCanvasManager){element=window.G_vmlCanvasManager.initElement(element)}else{throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode.")}}}this.element=element;var context=this.context=element.getContext("2d");var devicePixelRatio=window.devicePixelRatio||1,backingStoreRatio=context.webkitBackingStorePixelRatio||context.mozBackingStorePixelRatio||context.msBackingStorePixelRatio||context.oBackingStorePixelRatio||context.backingStorePixelRatio||1;this.pixelRatio=devicePixelRatio/backingStoreRatio;this.resize(container.width(),container.height());this.textContainer=null;this.text={};this._textCache={}}Canvas.prototype.resize=function(width,height){if(width<=0||height<=0){throw new Error("Invalid dimensions for plot, width = "+width+", height = "+height)}var element=this.element,context=this.context,pixelRatio=this.pixelRatio;if(this.width!=width){element.width=width*pixelRatio;element.style.width=width+"px";this.width=width}if(this.height!=height){element.height=height*pixelRatio;element.style.height=height+"px";this.height=height}context.restore();context.save();context.scale(pixelRatio,pixelRatio)};Canvas.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)};Canvas.prototype.render=function(){var cache=this._textCache;for(var layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var layer=this.getTextLayer(layerKey),layerCache=cache[layerKey];layer.hide();for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey];for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var positions=styleCache[key].positions;for(var i=0,position;position=positions[i];i++){if(position.active){if(!position.rendered){layer.append(position.element);position.rendered=true}}else{positions.splice(i--,1);if(position.rendered){position.element.detach()}}}if(positions.length==0){delete styleCache[key]}}}}}layer.show()}}};Canvas.prototype.getTextLayer=function(classes){var layer=this.text[classes];if(layer==null){if(this.textContainer==null){this.textContainer=$("
").css({position:"absolute",top:0,left:0,bottom:0,right:0,"font-size":"smaller",color:"#545454"}).insertAfter(this.element)}layer=this.text[classes]=$("
").addClass(classes).css({position:"absolute",top:0,left:0,bottom:0,right:0}).appendTo(this.textContainer)}return layer};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){var textStyle,layerCache,styleCache,info;text=""+text;if(typeof font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px/"+font.lineHeight+"px "+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var element=$("
").html(text).css({position:"absolute","max-width":width,top:-9999}).appendTo(this.getTextLayer(layer));if(typeof font==="object"){element.css({font:textStyle,color:font.color})}else{if(typeof font==="string"){element.addClass(font)}}info=styleCache[text]={width:element.outerWidth(true),height:element.outerHeight(true),element:element,positions:[]};element.detach()}return info};Canvas.prototype.addText=function(layer,x,y,text,font,angle,width,halign,valign){var info=this.getTextInfo(layer,text,font,angle,width),positions=info.positions;if(halign=="center"){x-=info.width/2}else{if(halign=="right"){x-=info.width}}if(valign=="middle"){y-=info.height/2}else{if(valign=="bottom"){y-=info.height}}for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=true;return}}position={active:true,rendered:false,element:positions.length?info.element.clone():info.element,x:x,y:y};positions.push(position);position.element.css({top:Math.round(y),left:Math.round(x),"text-align":halign})};Canvas.prototype.removeText=function(layer,x,y,text,font,angle){if(text==null){var layerCache=this._textCache[layer];if(layerCache!=null){for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey];for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var positions=styleCache[key].positions;for(var i=0,position;position=positions[i];i++){position.active=false}}}}}}}else{var positions=this.getTextInfo(layer,text,font,angle).positions;for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=false}}}};function Plot(placeholder,data_,options_,plugins){var series=[],options={colors:["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"],legend:{show:true,noColumns:1,labelFormatter:null,labelBoxBorderColor:"#ccc",container:null,position:"ne",margin:5,backgroundColor:null,backgroundOpacity:0.85,sorted:null},xaxis:{show:null,position:"bottom",mode:null,font:null,color:null,tickColor:null,transform:null,inverseTransform:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,reserveSpace:null,tickLength:null,alignTicksWithAxis:null,tickDecimals:null,tickSize:null,minTickSize:null},yaxis:{autoscaleMargin:0.02,position:"left"},xaxes:[],yaxes:[],series:{points:{show:false,radius:3,lineWidth:2,fill:true,fillColor:"#ffffff",symbol:"circle"},lines:{lineWidth:2,fill:false,fillColor:null,steps:false},bars:{show:false,lineWidth:2,barWidth:1,fill:true,fillColor:null,align:"left",horizontal:false,zero:true},shadowSize:3,highlightColor:null},grid:{show:true,aboveData:false,color:"#545454",backgroundColor:null,borderColor:null,tickColor:null,margin:0,labelMargin:5,axisMargin:8,borderWidth:2,minBorderMargin:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:false,hoverable:false,autoHighlight:true,mouseActiveRadius:10},interaction:{redrawOverlayInterval:1000/60},hooks:{}},surface=null,overlay=null,eventHolder=null,ctx=null,octx=null,xaxes=[],yaxes=[],plotOffset={left:0,right:0,top:0,bottom:0},plotWidth=0,plotHeight=0,hooks={processOptions:[],processRawData:[],processDatapoints:[],processOffset:[],drawBackground:[],drawSeries:[],draw:[],bindEvents:[],drawOverlay:[],shutdown:[]},plot=this;plot.setData=setData;plot.setupGrid=setupGrid;plot.draw=draw;plot.getPlaceholder=function(){return placeholder};plot.getCanvas=function(){return surface.element};plot.getPlotOffset=function(){return plotOffset};plot.width=function(){return plotWidth};plot.height=function(){return plotHeight};plot.offset=function(){var o=eventHolder.offset();o.left+=plotOffset.left;o.top+=plotOffset.top;return o};plot.getData=function(){return series};plot.getAxes=function(){var res={},i;$.each(xaxes.concat(yaxes),function(_,axis){if(axis){res[axis.direction+(axis.n!=1?axis.n:"")+"axis"]=axis}});return res};plot.getXAxes=function(){return xaxes};plot.getYAxes=function(){return yaxes};plot.c2p=canvasToAxisCoords;plot.p2c=axisToCanvasCoords;plot.getOptions=function(){return options};plot.highlight=highlight;plot.unhighlight=unhighlight;plot.triggerRedrawOverlay=triggerRedrawOverlay;plot.pointOffset=function(point){return{left:parseInt(xaxes[axisNumber(point,"x")-1].p2c(+point.x)+plotOffset.left,10),top:parseInt(yaxes[axisNumber(point,"y")-1].p2c(+point.y)+plotOffset.top,10)}};plot.shutdown=shutdown;plot.destroy=function(){shutdown();placeholder.removeData("plot").empty();series=[];options=null;surface=null;overlay=null;eventHolder=null;ctx=null;octx=null;xaxes=[];yaxes=[];hooks=null;highlights=[];plot=null};plot.resize=function(){var width=placeholder.width(),height=placeholder.height();surface.resize(width,height);overlay.resize(width,height)};plot.hooks=hooks;initPlugins(plot);parseOptions(options_);setupCanvases();setData(data_);setupGrid();draw();bindEvents();function executeHooks(hook,args){args=[plot].concat(args);for(var i=0;imaxIndex){maxIndex=sc}}}if(neededColors<=maxIndex){neededColors=maxIndex+1}var c,colors=[],colorPool=options.colors,colorPoolSize=colorPool.length,variation=0;for(i=0;i=0){if(variation<0.5){variation=-variation-0.2}else{variation=0}}else{variation=-variation}}colors[i]=c.scale("rgb",1+variation)}var colori=0,s;for(i=0;iaxis.datamax&&max!=fakeInfinity){axis.datamax=max}}$.each(allAxes(),function(_,axis){axis.datamin=topSentry;axis.datamax=bottomSentry;axis.used=false});for(i=0;i0&&points[k-ps]!=null&&points[k-ps]!=points[k]&&points[k-ps+1]!=points[k+1]){for(m=0;mxmax){xmax=val}}if(f.y){if(valymax){ymax=val}}}}if(s.bars.show){var delta;switch(s.bars.align){case"left":delta=0;break;case"right":delta=-s.bars.barWidth;break;default:delta=-s.bars.barWidth/2}if(s.bars.horizontal){ymin+=delta;ymax+=delta+s.bars.barWidth}else{xmin+=delta;xmax+=delta+s.bars.barWidth}}updateAxis(s.xaxis,xmin,xmax);updateAxis(s.yaxis,ymin,ymax)}$.each(allAxes(),function(_,axis){if(axis.datamin==topSentry){axis.datamin=null}if(axis.datamax==bottomSentry){axis.datamax=null}})}function setupCanvases(){placeholder.css("padding",0).children().filter(function(){return !$(this).hasClass("flot-overlay")&&!$(this).hasClass("flot-base")}).remove();if(placeholder.css("position")=="static"){placeholder.css("position","relative")}surface=new Canvas("flot-base",placeholder);overlay=new Canvas("flot-overlay",placeholder);ctx=surface.context;octx=overlay.context;eventHolder=$(overlay.element).unbind();var existing=placeholder.data("plot");if(existing){existing.shutdown();overlay.clear()}placeholder.data("plot",plot)}function bindEvents(){if(options.grid.hoverable){eventHolder.mousemove(onMouseMove);eventHolder.bind("mouseleave",onMouseLeave)}if(options.grid.clickable){eventHolder.click(onClick)}executeHooks(hooks.bindEvents,[eventHolder])}function shutdown(){if(redrawTimeout){clearTimeout(redrawTimeout)}eventHolder.unbind("mousemove",onMouseMove);eventHolder.unbind("mouseleave",onMouseLeave);eventHolder.unbind("click",onClick);executeHooks(hooks.shutdown,[eventHolder])}function setTransformationHelpers(axis){function identity(x){return x}var s,m,t=axis.options.transform||identity,it=axis.options.inverseTransform;if(axis.direction=="x"){s=axis.scale=plotWidth/Math.abs(t(axis.max)-t(axis.min));m=Math.min(t(axis.max),t(axis.min))}else{s=axis.scale=plotHeight/Math.abs(t(axis.max)-t(axis.min));s=-s;m=Math.max(t(axis.max),t(axis.min))}if(t==identity){axis.p2c=function(p){return(p-m)*s}}else{axis.p2c=function(p){return(t(p)-m)*s}}if(!it){axis.c2p=function(c){return m+c/s}}else{axis.c2p=function(c){return it(m+c/s)}}}function measureTickLabels(axis){var opts=axis.options,ticks=axis.ticks||[],labelWidth=opts.labelWidth||0,labelHeight=opts.labelHeight||0,maxWidth=labelWidth||(axis.direction=="x"?Math.floor(surface.width/(ticks.length||1)):null),legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=opts.font||"flot-tick-label tickLabel";for(var i=0;i=0;--i){allocateAxisBoxFirstPhase(allocatedAxes[i])}adjustLayoutForThingsStickingOut();$.each(allocatedAxes,function(_,axis){allocateAxisBoxSecondPhase(axis)})}plotWidth=surface.width-plotOffset.left-plotOffset.right;plotHeight=surface.height-plotOffset.bottom-plotOffset.top;$.each(axes,function(_,axis){setTransformationHelpers(axis)});if(showGrid){drawAxisLabels()}insertLegend()}function setRange(axis){var opts=axis.options,min=+(opts.min!=null?opts.min:axis.datamin),max=+(opts.max!=null?opts.max:axis.datamax),delta=max-min;if(delta==0){var widen=max==0?1:0.01;if(opts.min==null){min-=widen}if(opts.max==null||opts.min!=null){max+=widen}}else{var margin=opts.autoscaleMargin;if(margin!=null){if(opts.min==null){min-=delta*margin;if(min<0&&axis.datamin!=null&&axis.datamin>=0){min=0}}if(opts.max==null){max+=delta*margin;if(max>0&&axis.datamax!=null&&axis.datamax<=0){max=0}}}}axis.min=min;axis.max=max}function setupTickGeneration(axis){var opts=axis.options;var noTicks;if(typeof opts.ticks=="number"&&opts.ticks>0){noTicks=opts.ticks}else{noTicks=0.3*Math.sqrt(axis.direction=="x"?surface.width:surface.height)}var delta=(axis.max-axis.min)/noTicks,dec=-Math.floor(Math.log(delta)/Math.LN10),maxDec=opts.tickDecimals;if(maxDec!=null&&dec>maxDec){dec=maxDec}var magn=Math.pow(10,-dec),norm=delta/magn,size;if(norm<1.5){size=1}else{if(norm<3){size=2;if(norm>2.25&&(maxDec==null||dec+1<=maxDec)){size=2.5;++dec}}else{if(norm<7.5){size=5}else{size=10}}}size*=magn;if(opts.minTickSize!=null&&size0){if(opts.min==null){axis.min=Math.min(axis.min,niceTicks[0])}if(opts.max==null&&niceTicks.length>1){axis.max=Math.max(axis.max,niceTicks[niceTicks.length-1])}}axis.tickGenerator=function(axis){var ticks=[],v,i;for(i=0;i1&&/\..*0$/.test((ts[1]-ts[0]).toFixed(extraDec)))){axis.tickDecimals=extraDec}}}}}function setTicks(axis){var oticks=axis.options.ticks,ticks=[];if(oticks==null||(typeof oticks=="number"&&oticks>0)){ticks=axis.tickGenerator(axis)}else{if(oticks){if($.isFunction(oticks)){ticks=oticks(axis)}else{ticks=oticks}}}var i,v;axis.ticks=[];for(i=0;i1){label=t[1]}}else{v=+t}if(label==null){label=axis.tickFormatter(v,axis)}if(!isNaN(v)){axis.ticks.push({v:v,label:label})}}}function snapRangeToTicks(axis,ticks){if(axis.options.autoscaleMargin&&ticks.length>0){if(axis.options.min==null){axis.min=Math.min(axis.min,ticks[0].v)}if(axis.options.max==null&&ticks.length>1){axis.max=Math.max(axis.max,ticks[ticks.length-1].v)}}}function draw(){surface.clear();executeHooks(hooks.drawBackground,[ctx]);var grid=options.grid;if(grid.show&&grid.backgroundColor){drawBackground()}if(grid.show&&!grid.aboveData){drawGrid()}for(var i=0;ito){var tmp=from;from=to;to=tmp}return{from:from,to:to,axis:axis}}function drawBackground(){ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.fillStyle=getColorOrGradient(options.grid.backgroundColor,plotHeight,0,"rgba(255, 255, 255, 0)");ctx.fillRect(0,0,plotWidth,plotHeight);ctx.restore()}function drawGrid(){var i,axes,bw,bc;ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var markings=options.grid.markings;if(markings){if($.isFunction(markings)){axes=plot.getAxes();axes.xmin=axes.xaxis.min;axes.xmax=axes.xaxis.max;axes.ymin=axes.yaxis.min;axes.ymax=axes.yaxis.max;markings=markings(axes)}for(i=0;ixrange.axis.max||yrange.toyrange.axis.max){continue}xrange.from=Math.max(xrange.from,xrange.axis.min);xrange.to=Math.min(xrange.to,xrange.axis.max);yrange.from=Math.max(yrange.from,yrange.axis.min);yrange.to=Math.min(yrange.to,yrange.axis.max);var xequal=xrange.from===xrange.to,yequal=yrange.from===yrange.to;if(xequal&&yequal){continue}xrange.from=Math.floor(xrange.axis.p2c(xrange.from));xrange.to=Math.floor(xrange.axis.p2c(xrange.to));yrange.from=Math.floor(yrange.axis.p2c(yrange.from));yrange.to=Math.floor(yrange.axis.p2c(yrange.to));if(xequal||yequal){var lineWidth=m.lineWidth||options.grid.markingsLineWidth,subPixel=lineWidth%2?0.5:0;ctx.beginPath();ctx.strokeStyle=m.color||options.grid.markingsColor;ctx.lineWidth=lineWidth;if(xequal){ctx.moveTo(xrange.to+subPixel,yrange.from);ctx.lineTo(xrange.to+subPixel,yrange.to)}else{ctx.moveTo(xrange.from,yrange.to+subPixel);ctx.lineTo(xrange.to,yrange.to+subPixel)}ctx.stroke()}else{ctx.fillStyle=m.color||options.grid.markingsColor;ctx.fillRect(xrange.from,yrange.to,xrange.to-xrange.from,yrange.from-yrange.to)}}}axes=allAxes();bw=options.grid.borderWidth;for(var j=0;jaxis.max||(t=="full"&&((typeof bw=="object"&&bw[axis.position]>0)||bw>0)&&(v==axis.min||v==axis.max))){continue}if(axis.direction=="x"){x=axis.p2c(v);yoff=t=="full"?-plotHeight:t;if(axis.position=="top"){yoff=-yoff}}else{y=axis.p2c(v);xoff=t=="full"?-plotWidth:t;if(axis.position=="left"){xoff=-xoff}}if(ctx.lineWidth==1){if(axis.direction=="x"){x=Math.floor(x)+0.5}else{y=Math.floor(y)+0.5}}ctx.moveTo(x,y);ctx.lineTo(x+xoff,y+yoff)}ctx.stroke()}if(bw){bc=options.grid.borderColor;if(typeof bw=="object"||typeof bc=="object"){if(typeof bw!=="object"){bw={top:bw,right:bw,bottom:bw,left:bw}}if(typeof bc!=="object"){bc={top:bc,right:bc,bottom:bc,left:bc}}if(bw.top>0){ctx.strokeStyle=bc.top;ctx.lineWidth=bw.top;ctx.beginPath();ctx.moveTo(0-bw.left,0-bw.top/2);ctx.lineTo(plotWidth,0-bw.top/2);ctx.stroke()}if(bw.right>0){ctx.strokeStyle=bc.right;ctx.lineWidth=bw.right;ctx.beginPath();ctx.moveTo(plotWidth+bw.right/2,0-bw.top);ctx.lineTo(plotWidth+bw.right/2,plotHeight);ctx.stroke()}if(bw.bottom>0){ctx.strokeStyle=bc.bottom;ctx.lineWidth=bw.bottom;ctx.beginPath();ctx.moveTo(plotWidth+bw.right,plotHeight+bw.bottom/2);ctx.lineTo(0,plotHeight+bw.bottom/2);ctx.stroke()}if(bw.left>0){ctx.strokeStyle=bc.left;ctx.lineWidth=bw.left;ctx.beginPath();ctx.moveTo(0-bw.left/2,plotHeight+bw.bottom);ctx.lineTo(0-bw.left/2,0);ctx.stroke()}}else{ctx.lineWidth=bw;ctx.strokeStyle=options.grid.borderColor;ctx.strokeRect(-bw/2,-bw/2,plotWidth+bw,plotHeight+bw)}}ctx.restore()}function drawAxisLabels(){$.each(allAxes(),function(_,axis){var box=axis.box,legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=axis.options.font||"flot-tick-label tickLabel",tick,x,y,halign,valign;surface.removeText(layer);if(!axis.show||axis.ticks.length==0){return}for(var i=0;iaxis.max){continue}if(axis.direction=="x"){halign="center";x=plotOffset.left+axis.p2c(tick.v);if(axis.position=="bottom"){y=box.top+box.padding}else{y=box.top+box.height-box.padding;valign="bottom"}}else{valign="middle";y=plotOffset.top+axis.p2c(tick.v);if(axis.position=="left"){x=box.left+box.width-box.padding;halign="right"}else{x=box.left+box.padding}}surface.addText(layer,x,y,tick.label,font,null,null,halign,valign)}})}function drawSeries(series){if(series.lines.show){drawSeriesLines(series)}if(series.bars.show){drawSeriesBars(series)}if(series.points.show){drawSeriesPoints(series)}}function drawSeriesLines(series){function plotLine(datapoints,xoffset,yoffset,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize,prevx=null,prevy=null;ctx.beginPath();for(var i=ps;i=y2&&y1>axisy.max){if(y2>axisy.max){continue}x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max}else{if(y2>=y1&&y2>axisy.max){if(y1>axisy.max){continue}x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max}}if(x1<=x2&&x1=x2&&x1>axisx.max){if(x2>axisx.max){continue}y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max}else{if(x2>=x1&&x2>axisx.max){if(x1>axisx.max){continue}y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max}}if(x1!=prevx||y1!=prevy){ctx.moveTo(axisx.p2c(x1)+xoffset,axisy.p2c(y1)+yoffset)}prevx=x2;prevy=y2;ctx.lineTo(axisx.p2c(x2)+xoffset,axisy.p2c(y2)+yoffset)}ctx.stroke()}function plotLineArea(datapoints,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize,bottom=Math.min(Math.max(0,axisy.min),axisy.max),i=0,top,areaOpen=false,ypos=1,segmentStart=0,segmentEnd=0;while(true){if(ps>0&&i>points.length+ps){break}i+=ps;var x1=points[i-ps],y1=points[i-ps+ypos],x2=points[i],y2=points[i+ypos];if(areaOpen){if(ps>0&&x1!=null&&x2==null){segmentEnd=i;ps=-ps;ypos=2;continue}if(ps<0&&i==segmentStart+ps){ctx.fill();areaOpen=false;ps=-ps;ypos=1;i=segmentStart=segmentEnd+ps;continue}}if(x1==null||x2==null){continue}if(x1<=x2&&x1=x2&&x1>axisx.max){if(x2>axisx.max){continue}y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max}else{if(x2>=x1&&x2>axisx.max){if(x1>axisx.max){continue}y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max}}if(!areaOpen){ctx.beginPath();ctx.moveTo(axisx.p2c(x1),axisy.p2c(bottom));areaOpen=true}if(y1>=axisy.max&&y2>=axisy.max){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.max));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.max));continue}else{if(y1<=axisy.min&&y2<=axisy.min){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.min));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.min));continue}}var x1old=x1,x2old=x2;if(y1<=y2&&y1=axisy.min){x1=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.min}else{if(y2<=y1&&y2=axisy.min){x2=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.min}}if(y1>=y2&&y1>axisy.max&&y2<=axisy.max){x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max}else{if(y2>=y1&&y2>axisy.max&&y1<=axisy.max){x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max}}if(x1!=x1old){ctx.lineTo(axisx.p2c(x1old),axisy.p2c(y1))}ctx.lineTo(axisx.p2c(x1),axisy.p2c(y1));ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));if(x2!=x2old){ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));ctx.lineTo(axisx.p2c(x2old),axisy.p2c(y2))}}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.lineJoin="round";var lw=series.lines.lineWidth,sw=series.shadowSize;if(lw>0&&sw>0){ctx.lineWidth=sw;ctx.strokeStyle="rgba(0,0,0,0.1)";var angle=Math.PI/18;plotLine(series.datapoints,Math.sin(angle)*(lw/2+sw/2),Math.cos(angle)*(lw/2+sw/2),series.xaxis,series.yaxis);ctx.lineWidth=sw/2;plotLine(series.datapoints,Math.sin(angle)*(lw/2+sw/4),Math.cos(angle)*(lw/2+sw/4),series.xaxis,series.yaxis)}ctx.lineWidth=lw;ctx.strokeStyle=series.color;var fillStyle=getFillStyle(series.lines,series.color,0,plotHeight);if(fillStyle){ctx.fillStyle=fillStyle;plotLineArea(series.datapoints,series.xaxis,series.yaxis)}if(lw>0){plotLine(series.datapoints,0,0,series.xaxis,series.yaxis)}ctx.restore()}function drawSeriesPoints(series){function plotPoints(datapoints,radius,fillStyle,offset,shadow,axisx,axisy,symbol){var points=datapoints.points,ps=datapoints.pointsize;for(var i=0;iaxisx.max||yaxisy.max){continue}ctx.beginPath();x=axisx.p2c(x);y=axisy.p2c(y)+offset;if(symbol=="circle"){ctx.arc(x,y,radius,0,shadow?Math.PI:Math.PI*2,false)}else{symbol(ctx,x,y,radius,shadow)}ctx.closePath();if(fillStyle){ctx.fillStyle=fillStyle;ctx.fill()}ctx.stroke()}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var lw=series.points.lineWidth,sw=series.shadowSize,radius=series.points.radius,symbol=series.points.symbol;if(lw==0){lw=0.0001}if(lw>0&&sw>0){var w=sw/2;ctx.lineWidth=w;ctx.strokeStyle="rgba(0,0,0,0.1)";plotPoints(series.datapoints,radius,null,w+w/2,true,series.xaxis,series.yaxis,symbol);ctx.strokeStyle="rgba(0,0,0,0.2)";plotPoints(series.datapoints,radius,null,w/2,true,series.xaxis,series.yaxis,symbol)}ctx.lineWidth=lw;ctx.strokeStyle=series.color;plotPoints(series.datapoints,radius,getFillStyle(series.points,series.color),0,false,series.xaxis,series.yaxis,symbol);ctx.restore()}function drawBar(x,y,b,barLeft,barRight,fillStyleCallback,axisx,axisy,c,horizontal,lineWidth){var left,right,bottom,top,drawLeft,drawRight,drawTop,drawBottom,tmp;if(horizontal){drawBottom=drawRight=drawTop=true;drawLeft=false;left=b;right=x;top=y+barLeft;bottom=y+barRight;if(rightaxisx.max||topaxisy.max){return}if(leftaxisx.max){right=axisx.max;drawRight=false}if(bottomaxisy.max){top=axisy.max;drawTop=false}left=axisx.p2c(left);bottom=axisy.p2c(bottom);right=axisx.p2c(right);top=axisy.p2c(top);if(fillStyleCallback){c.fillStyle=fillStyleCallback(bottom,top);c.fillRect(left,top,right-left,bottom-top)}if(lineWidth>0&&(drawLeft||drawRight||drawTop||drawBottom)){c.beginPath();c.moveTo(left,bottom);if(drawLeft){c.lineTo(left,top)}else{c.moveTo(left,top)}if(drawTop){c.lineTo(right,top)}else{c.moveTo(right,top)}if(drawRight){c.lineTo(right,bottom)}else{c.moveTo(right,bottom)}if(drawBottom){c.lineTo(left,bottom)}else{c.moveTo(left,bottom)}c.stroke()}}function drawSeriesBars(series){function plotBars(datapoints,barLeft,barRight,fillStyleCallback,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize;for(var i=0;i")}fragments.push("");rowStarted=true}fragments.push('
'+entry.label+"")}if(rowStarted){fragments.push("")}if(fragments.length==0){return}var table=''+fragments.join("")+"
";if(options.legend.container!=null){$(options.legend.container).html(table)}else{var pos="",p=options.legend.position,m=options.legend.margin;if(m[0]==null){m=[m,m]}if(p.charAt(0)=="n"){pos+="top:"+(m[1]+plotOffset.top)+"px;"}else{if(p.charAt(0)=="s"){pos+="bottom:"+(m[1]+plotOffset.bottom)+"px;"}}if(p.charAt(1)=="e"){pos+="right:"+(m[0]+plotOffset.right)+"px;"}else{if(p.charAt(1)=="w"){pos+="left:"+(m[0]+plotOffset.left)+"px;"}}var legend=$('
'+table.replace('style="','style="position:absolute;'+pos+";")+"
").appendTo(placeholder);if(options.legend.backgroundOpacity!=0){var c=options.legend.backgroundColor;if(c==null){c=options.grid.backgroundColor;if(c&&typeof c=="string"){c=$.color.parse(c)}else{c=$.color.extract(legend,"background-color")}c.a=1;c=c.toString()}var div=legend.children();$('
').prependTo(legend).css("opacity",options.legend.backgroundOpacity)}}}var highlights=[],redrawTimeout=null;function findNearbyItem(mouseX,mouseY,seriesFilter){var maxDistance=options.grid.mouseActiveRadius,smallestDistance=maxDistance*maxDistance+1,item=null,foundPoint=false,i,j,ps;for(i=series.length-1;i>=0;--i){if(!seriesFilter(series[i])){continue}var s=series[i],axisx=s.xaxis,axisy=s.yaxis,points=s.datapoints.points,mx=axisx.c2p(mouseX),my=axisy.c2p(mouseY),maxx=maxDistance/axisx.scale,maxy=maxDistance/axisy.scale;ps=s.datapoints.pointsize;if(axisx.options.inverseTransform){maxx=Number.MAX_VALUE}if(axisy.options.inverseTransform){maxy=Number.MAX_VALUE}if(s.lines.show||s.points.show){for(j=0;jmaxx||x-mx<-maxx||y-my>maxy||y-my<-maxy){continue}var dx=Math.abs(axisx.p2c(x)-mouseX),dy=Math.abs(axisy.p2c(y)-mouseY),dist=dx*dx+dy*dy;if(dist=Math.min(b,x)&&my>=y+barLeft&&my<=y+barRight):(mx>=x+barLeft&&mx<=x+barRight&&my>=Math.min(b,y)&&my<=Math.max(b,y))){item=[i,j/ps]}}}}if(item){i=item[0];j=item[1];ps=series[i].datapoints.pointsize;return{datapoint:series[i].datapoints.points.slice(j*ps,(j+1)*ps),dataIndex:j,series:series[i],seriesIndex:i}}return null}function onMouseMove(e){if(options.grid.hoverable){triggerClickHoverEvent("plothover",e,function(s){return s.hoverable!=false})}}function onMouseLeave(e){if(options.grid.hoverable){triggerClickHoverEvent("plothover",e,function(s){return false})}}function onClick(e){triggerClickHoverEvent("plotclick",e,function(s){return s.clickable!=false})}function triggerClickHoverEvent(eventname,event,seriesFilter){var offset=eventHolder.offset(),canvasX=event.pageX-offset.left-plotOffset.left,canvasY=event.pageY-offset.top-plotOffset.top,pos=canvasToAxisCoords({left:canvasX,top:canvasY});pos.pageX=event.pageX;pos.pageY=event.pageY;var item=findNearbyItem(canvasX,canvasY,seriesFilter);if(item){item.pageX=parseInt(item.series.xaxis.p2c(item.datapoint[0])+offset.left+plotOffset.left,10);item.pageY=parseInt(item.series.yaxis.p2c(item.datapoint[1])+offset.top+plotOffset.top,10)}if(options.grid.autoHighlight){for(var i=0;iaxisx.max||yaxisy.max){return}var pointRadius=series.points.radius+series.points.lineWidth/2;octx.lineWidth=pointRadius;octx.strokeStyle=highlightColor;var radius=1.5*pointRadius;x=axisx.p2c(x);y=axisy.p2c(y);octx.beginPath();if(series.points.symbol=="circle"){octx.arc(x,y,radius,0,2*Math.PI,false)}else{series.points.symbol(octx,x,y,radius,false)}octx.closePath();octx.stroke()}function drawBarHighlight(series,point){var highlightColor=(typeof series.highlightColor==="string")?series.highlightColor:$.color.parse(series.color).scale("a",0.5).toString(),fillStyle=highlightColor,barLeft;switch(series.bars.align){case"left":barLeft=0;break;case"right":barLeft=-series.bars.barWidth;break;default:barLeft=-series.bars.barWidth/2}octx.lineWidth=series.bars.lineWidth;octx.strokeStyle=highlightColor;drawBar(point[0],point[1],point[2]||0,barLeft,barLeft+series.bars.barWidth,function(){return fillStyle},series.xaxis,series.yaxis,octx,series.bars.horizontal,series.bars.lineWidth)}function getColorOrGradient(spec,bottom,top,defaultColor){if(typeof spec=="string"){return spec}else{var gradient=ctx.createLinearGradient(0,top,0,bottom);for(var i=0,l=spec.colors.length;i1){options.series.pie.tilt=1}else{if(options.series.pie.tilt<0){options.series.pie.tilt=0}}}});plot.hooks.bindEvents.push(function(plot,eventHolder){var options=plot.getOptions();if(options.series.pie.show){if(options.grid.hoverable){eventHolder.unbind("mousemove").mousemove(onMouseMove)}if(options.grid.clickable){eventHolder.unbind("click").click(onClick)}}});plot.hooks.processDatapoints.push(function(plot,series,data,datapoints){var options=plot.getOptions();if(options.series.pie.show){processDatapoints(plot,series,data,datapoints)}});plot.hooks.drawOverlay.push(function(plot,octx){var options=plot.getOptions();if(options.series.pie.show){drawOverlay(plot,octx)}});plot.hooks.draw.push(function(plot,newCtx){var options=plot.getOptions();if(options.series.pie.show){draw(plot,newCtx)}});function processDatapoints(plot,series,datapoints){if(!processed){processed=true;canvas=plot.getCanvas();target=$(canvas).parent();options=plot.getOptions();plot.setData(combine(plot.getData()))}}function combine(data){var total=0,combined=0,numCombined=0,color=options.series.pie.combine.color,newdata=[];for(var i=0;ioptions.series.pie.combine.threshold){newdata.push($.extend(data[i],{data:[[1,value]],color:data[i].color,label:data[i].label,angle:value*Math.PI*2/total,percent:value/(total/100)}))}}if(numCombined>1){newdata.push({data:[[1,combined]],color:color,label:options.series.pie.combine.label,angle:combined*Math.PI*2/total,percent:combined/(total/100)})}return newdata}function draw(plot,newCtx){if(!target){return}var canvasWidth=plot.getPlaceholder().width(),canvasHeight=plot.getPlaceholder().height(),legendWidth=target.children().filter(".legend").children().width()||0;ctx=newCtx;processed=false;maxRadius=Math.min(canvasWidth,canvasHeight/options.series.pie.tilt)/2;centerTop=canvasHeight/2+options.series.pie.offset.top;centerLeft=canvasWidth/2;if(options.series.pie.offset.left=="auto"){if(options.legend.position.match("w")){centerLeft+=legendWidth/2}else{centerLeft-=legendWidth/2}if(centerLeftcanvasWidth-maxRadius){centerLeft=canvasWidth-maxRadius}}}else{centerLeft+=options.series.pie.offset.left}var slices=plot.getData(),attempts=0;do{if(attempts>0){maxRadius*=REDRAW_SHRINK}attempts+=1;clear();if(options.series.pie.tilt<=0.8){drawShadow()}}while(!drawPie()&&attempts=REDRAW_ATTEMPTS){clear();target.prepend("
Could not draw pie with labels contained inside canvas
")}if(plot.setSeries&&plot.insertLegend){plot.setSeries(slices);plot.insertLegend()}function clear(){ctx.clearRect(0,0,canvasWidth,canvasHeight);target.children().filter(".pieLabel, .pieLabelBackground").remove()}function drawShadow(){var shadowLeft=options.series.pie.shadow.left;var shadowTop=options.series.pie.shadow.top;var edge=10;var alpha=options.series.pie.shadow.alpha;var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius;if(radius>=canvasWidth/2-shadowLeft||radius*options.series.pie.tilt>=canvasHeight/2-shadowTop||radius<=edge){return}ctx.save();ctx.translate(shadowLeft,shadowTop);ctx.globalAlpha=alpha;ctx.fillStyle="#000";ctx.translate(centerLeft,centerTop);ctx.scale(1,options.series.pie.tilt);for(var i=1;i<=edge;i++){ctx.beginPath();ctx.arc(0,0,radius,0,Math.PI*2,false);ctx.fill();radius-=i}ctx.restore()}function drawPie(){var startAngle=Math.PI*options.series.pie.startAngle;var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius;ctx.save();ctx.translate(centerLeft,centerTop);ctx.scale(1,options.series.pie.tilt);ctx.save();var currentAngle=startAngle;for(var i=0;i0){ctx.save();ctx.lineWidth=options.series.pie.stroke.width;currentAngle=startAngle;for(var i=0;i1e-9){ctx.moveTo(0,0)}ctx.arc(0,0,radius,currentAngle,currentAngle+angle/2,false);ctx.arc(0,0,radius,currentAngle+angle/2,currentAngle+angle,false);ctx.closePath();currentAngle+=angle;if(fill){ctx.fill()}else{ctx.stroke()}}function drawLabels(){var currentAngle=startAngle;var radius=options.series.pie.label.radius>1?options.series.pie.label.radius:maxRadius*options.series.pie.label.radius;for(var i=0;i=options.series.pie.label.threshold*100){if(!drawLabel(slices[i],currentAngle,i)){return false}}currentAngle+=slices[i].angle}return true;function drawLabel(slice,startAngle,index){if(slice.data[0][1]==0){return true}var lf=options.legend.labelFormatter,text,plf=options.series.pie.label.formatter;if(lf){text=lf(slice.label,slice)}else{text=slice.label}if(plf){text=plf(text,slice)}var halfAngle=((startAngle+slice.angle)+startAngle)/2;var x=centerLeft+Math.round(Math.cos(halfAngle)*radius);var y=centerTop+Math.round(Math.sin(halfAngle)*radius)*options.series.pie.tilt;var html=""+text+"";target.append(html);var label=target.children("#pieLabel"+index);var labelTop=(y-label.height()/2);var labelLeft=(x-label.width()/2);label.css("top",labelTop);label.css("left",labelLeft);if(0-labelTop>0||0-labelLeft>0||canvasHeight-(labelTop+label.height())<0||canvasWidth-(labelLeft+label.width())<0){return false}if(options.series.pie.label.background.opacity!=0){var c=options.series.pie.label.background.color;if(c==null){c=slice.color}var pos="top:"+labelTop+"px;left:"+labelLeft+"px;";$("
").css("opacity",options.series.pie.label.background.opacity).insertBefore(label)}return true}}}}function drawDonutHole(layer){if(options.series.pie.innerRadius>0){layer.save();var innerRadius=options.series.pie.innerRadius>1?options.series.pie.innerRadius:maxRadius*options.series.pie.innerRadius;layer.globalCompositeOperation="destination-out";layer.beginPath();layer.fillStyle=options.series.pie.stroke.color;layer.arc(0,0,innerRadius,0,Math.PI*2,false);layer.fill();layer.closePath();layer.restore();layer.save();layer.beginPath();layer.strokeStyle=options.series.pie.stroke.color;layer.arc(0,0,innerRadius,0,Math.PI*2,false);layer.stroke();layer.closePath();layer.restore()}}function isPointInPoly(poly,pt){for(var c=false,i=-1,l=poly.length,j=l-1;++i1?options.series.pie.radius:maxRadius*options.series.pie.radius,x,y;for(var i=0;i1?options.series.pie.radius:maxRadius*options.series.pie.radius;octx.save();octx.translate(centerLeft,centerTop);octx.scale(1,options.series.pie.tilt);for(var i=0;i1e-9){octx.moveTo(0,0)}octx.arc(0,0,radius,series.startAngle,series.startAngle+series.angle/2,false);octx.arc(0,0,radius,series.startAngle+series.angle/2,series.startAngle+series.angle,false);octx.closePath();octx.fill()}}}var options={series:{pie:{show:false,radius:"auto",innerRadius:0,startAngle:3/2,tilt:1,shadow:{left:5,top:15,alpha:0.02},offset:{top:0,left:"auto"},stroke:{color:"#fff",width:1},label:{show:"auto",formatter:function(label,slice){return"
"+label+"
"+Math.round(slice.percent)+"%
"},radius:1,background:{color:null,opacity:0},threshold:0},combine:{threshold:-1,color:null,label:"Other"},highlight:{opacity:0.5}}}};$.plot.plugins.push({init:init,options:options,name:"pie",version:"1.1"})})(jQuery);(function($,t,n){function p(){for(var n=r.length-1;n>=0;n--){var o=$(r[n]);if(o[0]==t||o.is(":visible")){var h=o.width(),d=o.height(),v=o.data(a);!v||h===v.w&&d===v.h?i[f]=i[l]:(i[f]=i[c],o.trigger(u,[v.w=h,v.h=d]))}else{v=o.data(a),v.w=0,v.h=0}}s!==null&&(s=t.requestAnimationFrame(p))}var r=[],i=$.resize=$.extend($.resize,{}),s,o="setTimeout",u="resize",a=u+"-special-event",f="delay",l="pendingDelay",c="activeDelay",h="throttleWindow";i[l]=250,i[c]=20,i[f]=i[l],i[h]=!0,$.event.special[u]={setup:function(){if(!i[h]&&this[o]){return !1}var t=$(this);r.push(this),t.data(a,{w:t.width(),h:t.height()}),r.length===1&&(s=n,p())},teardown:function(){if(!i[h]&&this[o]){return !1}var t=$(this);for(var n=r.length-1;n>=0;n--){if(r[n]==this){r.splice(n,1);break}}t.removeData(a),r.length||(cancelAnimationFrame(s),s=null)},add:function(t){function s(t,i,s){var o=$(this),u=o.data(a);u.w=i!==n?i:o.width(),u.h=s!==n?s:o.height(),r.apply(this,arguments)}if(!i[h]&&this[o]){return !1}var r;if($.isFunction(t)){return r=t,s}r=t.handler,t.handler=s}},t.requestAnimationFrame||(t.requestAnimationFrame=function(){return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame||function(e,n){return t.setTimeout(e,i[f])}}()),t.cancelAnimationFrame||(t.cancelAnimationFrame=function(){return t.webkitCancelRequestAnimationFrame||t.mozCancelRequestAnimationFrame||t.oCancelRequestAnimationFrame||t.msCancelRequestAnimationFrame||clearTimeout}())})(jQuery,this);(function($){var options={};function init(plot){function onResize(){var placeholder=plot.getPlaceholder();if(placeholder.width()==0||placeholder.height()==0){return}plot.resize();plot.setupGrid();plot.draw()}function bindEvents(plot,eventHolder){plot.getPlaceholder().resize(onResize)}function shutdown(plot,eventHolder){plot.getPlaceholder().unbind("resize",onResize)}plot.hooks.bindEvents.push(bindEvents);plot.hooks.shutdown.push(shutdown)}$.plot.plugins.push({init:init,options:options,name:"resize",version:"1.0"})})(jQuery);(function($){function init(plot){var selection={first:{x:-1,y:-1},second:{x:-1,y:-1},show:false,active:false};var savedhandlers={};var mouseUpHandler=null;function onMouseMove(e){if(selection.active){updateSelection(e);plot.getPlaceholder().trigger("plotselecting",[getSelection()])}}function onMouseDown(e){if(e.which!=1){return}document.body.focus();if(document.onselectstart!==undefined&&savedhandlers.onselectstart==null){savedhandlers.onselectstart=document.onselectstart;document.onselectstart=function(){return false}}if(document.ondrag!==undefined&&savedhandlers.ondrag==null){savedhandlers.ondrag=document.ondrag;document.ondrag=function(){return false}}setSelectionPos(selection.first,e);selection.active=true;mouseUpHandler=function(e){onMouseUp(e)};$(document).one("mouseup",mouseUpHandler)}function onMouseUp(e){mouseUpHandler=null;if(document.onselectstart!==undefined){document.onselectstart=savedhandlers.onselectstart}if(document.ondrag!==undefined){document.ondrag=savedhandlers.ondrag}selection.active=false;updateSelection(e);if(selectionIsSane()){triggerSelectedEvent()}else{plot.getPlaceholder().trigger("plotunselected",[]);plot.getPlaceholder().trigger("plotselecting",[null])}return false}function getSelection(){if(!selectionIsSane()){return null}if(!selection.show){return null}var r={},c1=selection.first,c2=selection.second;$.each(plot.getAxes(),function(name,axis){if(axis.used){var p1=axis.c2p(c1[axis.direction]),p2=axis.c2p(c2[axis.direction]);r[name]={from:Math.min(p1,p2),to:Math.max(p1,p2)}}});return r}function triggerSelectedEvent(){var r=getSelection();plot.getPlaceholder().trigger("plotselected",[r]);if(r.xaxis&&r.yaxis){plot.getPlaceholder().trigger("selected",[{x1:r.xaxis.from,y1:r.yaxis.from,x2:r.xaxis.to,y2:r.yaxis.to}])}}function clamp(min,value,max){return valuemax?max:value)}function setSelectionPos(pos,e){var o=plot.getOptions();var offset=plot.getPlaceholder().offset();var plotOffset=plot.getPlotOffset();pos.x=clamp(0,e.pageX-offset.left-plotOffset.left,plot.width());pos.y=clamp(0,e.pageY-offset.top-plotOffset.top,plot.height());if(o.selection.mode=="y"){pos.x=pos==selection.first?0:plot.width()}if(o.selection.mode=="x"){pos.y=pos==selection.first?0:plot.height()}}function updateSelection(pos){if(pos.pageX==null){return}setSelectionPos(selection.second,pos);if(selectionIsSane()){selection.show=true;plot.triggerRedrawOverlay()}else{clearSelection(true)}}function clearSelection(preventEvent){if(selection.show){selection.show=false;plot.triggerRedrawOverlay();if(!preventEvent){plot.getPlaceholder().trigger("plotunselected",[])}}}function extractRange(ranges,coord){var axis,from,to,key,axes=plot.getAxes();for(var k in axes){axis=axes[k];if(axis.direction==coord){key=coord+axis.n+"axis";if(!ranges[key]&&axis.n==1){key=coord+"axis"}if(ranges[key]){from=ranges[key].from;to=ranges[key].to;break}}}if(!ranges[key]){axis=coord=="x"?plot.getXAxes()[0]:plot.getYAxes()[0];from=ranges[coord+"1"];to=ranges[coord+"2"]}if(from!=null&&to!=null&&from>to){var tmp=from;from=to;to=tmp}return{from:from,to:to,axis:axis}}function setSelection(ranges,preventEvent){var axis,range,o=plot.getOptions();if(o.selection.mode=="y"){selection.first.x=0;selection.second.x=plot.width()}else{range=extractRange(ranges,"x");selection.first.x=range.axis.p2c(range.from);selection.second.x=range.axis.p2c(range.to)}if(o.selection.mode=="x"){selection.first.y=0;selection.second.y=plot.height()}else{range=extractRange(ranges,"y");selection.first.y=range.axis.p2c(range.from);selection.second.y=range.axis.p2c(range.to)}selection.show=true;plot.triggerRedrawOverlay();if(!preventEvent&&selectionIsSane()){triggerSelectedEvent()}}function selectionIsSane(){var minSize=plot.getOptions().selection.minSize;return Math.abs(selection.second.x-selection.first.x)>=minSize&&Math.abs(selection.second.y-selection.first.y)>=minSize}plot.clearSelection=clearSelection;plot.setSelection=setSelection;plot.getSelection=getSelection;plot.hooks.bindEvents.push(function(plot,eventHolder){var o=plot.getOptions();if(o.selection.mode!=null){eventHolder.mousemove(onMouseMove);eventHolder.mousedown(onMouseDown)}});plot.hooks.drawOverlay.push(function(plot,ctx){if(selection.show&&selectionIsSane()){var plotOffset=plot.getPlotOffset();var o=plot.getOptions();ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var c=$.color.parse(o.selection.color);ctx.strokeStyle=c.scale("a",0.8).toString();ctx.lineWidth=1;ctx.lineJoin=o.selection.shape;ctx.fillStyle=c.scale("a",0.4).toString();var x=Math.min(selection.first.x,selection.second.x)+0.5,y=Math.min(selection.first.y,selection.second.y)+0.5,w=Math.abs(selection.second.x-selection.first.x)-1,h=Math.abs(selection.second.y-selection.first.y)-1;ctx.fillRect(x,y,w,h);ctx.strokeRect(x,y,w,h);ctx.restore()}});plot.hooks.shutdown.push(function(plot,eventHolder){eventHolder.unbind("mousemove",onMouseMove);eventHolder.unbind("mousedown",onMouseDown);if(mouseUpHandler){$(document).unbind("mouseup",mouseUpHandler)}})}$.plot.plugins.push({init:init,options:{selection:{mode:null,color:"#e8cfac",shape:"round",minSize:5}},name:"selection",version:"1.1"})})(jQuery);(function($){var options={xaxis:{timezone:null,timeformat:null,twelveHourClock:false,monthNames:null}};function floorInBase(n,base){return base*Math.floor(n/base)}function formatDate(d,fmt,monthNames,dayNames){if(typeof d.strftime=="function"){return d.strftime(fmt)}var leftPad=function(n,pad){n=""+n;pad=""+(pad==null?"0":pad);return n.length==1?pad+n:n};var r=[];var escape=false;var hours=d.getHours();var isAM=hours<12;if(monthNames==null){monthNames=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}if(dayNames==null){dayNames=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]}var hours12;if(hours>12){hours12=hours-12}else{if(hours==0){hours12=12}else{hours12=hours}}for(var i=0;i=minSize){break}}var size=spec[i][0];var unit=spec[i][1];if(unit=="year"){if(opts.minTickSize!=null&&opts.minTickSize[1]=="year"){size=Math.floor(opts.minTickSize[0])}else{var magn=Math.pow(10,Math.floor(Math.log(axis.delta/timeUnitSize.year)/Math.LN10));var norm=(axis.delta/timeUnitSize.year)/magn;if(norm<1.5){size=1}else{if(norm<3){size=2}else{if(norm<7.5){size=5}else{size=10}}}size*=magn}if(size<1){size=1}}axis.tickSize=opts.tickSize||[size,unit];var tickSize=axis.tickSize[0];unit=axis.tickSize[1];var step=tickSize*timeUnitSize[unit];if(unit=="second"){d.setSeconds(floorInBase(d.getSeconds(),tickSize))}else{if(unit=="minute"){d.setMinutes(floorInBase(d.getMinutes(),tickSize))}else{if(unit=="hour"){d.setHours(floorInBase(d.getHours(),tickSize))}else{if(unit=="month"){d.setMonth(floorInBase(d.getMonth(),tickSize))}else{if(unit=="quarter"){d.setMonth(3*floorInBase(d.getMonth()/3,tickSize))}else{if(unit=="year"){d.setFullYear(floorInBase(d.getFullYear(),tickSize))}}}}}}d.setMilliseconds(0);if(step>=timeUnitSize.minute){d.setSeconds(0)}if(step>=timeUnitSize.hour){d.setMinutes(0)}if(step>=timeUnitSize.day){d.setHours(0)}if(step>=timeUnitSize.day*4){d.setDate(1)}if(step>=timeUnitSize.month*2){d.setMonth(floorInBase(d.getMonth(),3))}if(step>=timeUnitSize.quarter*2){d.setMonth(floorInBase(d.getMonth(),6))}if(step>=timeUnitSize.year){d.setMonth(0)}var carry=0;var v=Number.NaN;var prev;do{prev=v;v=d.getTime();ticks.push(v);if(unit=="month"||unit=="quarter"){if(tickSize<1){d.setDate(1);var start=d.getTime();d.setMonth(d.getMonth()+(unit=="quarter"?3:1));var end=d.getTime();d.setTime(v+carry*timeUnitSize.hour+(end-start)*tickSize);carry=d.getHours();d.setHours(0)}else{d.setMonth(d.getMonth()+tickSize*(unit=="quarter"?3:1))}}else{if(unit=="year"){d.setFullYear(d.getFullYear()+tickSize)}else{d.setTime(v+step)}}}while(v>>0;fromIndex=+fromIndex||0;if(Math.abs(fromIndex)===Infinity){fromIndex=0}if(fromIndex<0){fromIndex+=length;if(fromIndex<0){fromIndex=0}}for(;fromIndex0){$tip=$("#flotTip")}else{$tip=$("
").attr("id","flotTip");$tip.appendTo("body").hide().css({position:"absolute"});if(this.tooltipOptions.defaultTheme){$tip.css({background:"#fff","z-index":"1040",padding:"0.4em 0.6em","border-radius":"0.5em","font-size":"0.8em",border:"1px solid #111",display:"none","white-space":"nowrap"})}}return $tip};FlotTooltip.prototype.updateTooltipPosition=function(pos){var totalTipWidth=$("#flotTip").outerWidth()+this.tooltipOptions.shifts.x;var totalTipHeight=$("#flotTip").outerHeight()+this.tooltipOptions.shifts.y;if((pos.x-$(window).scrollLeft())>($(window).innerWidth()-totalTipWidth)){pos.x-=totalTipWidth}if((pos.y-$(window).scrollTop())>($(window).innerHeight()-totalTipHeight)){pos.y-=totalTipHeight}this.tipPosition.x=pos.x;this.tipPosition.y=pos.y};FlotTooltip.prototype.stringFormat=function(content,item){var percentPattern=/%p\.{0,1}(\d{0,})/;var seriesPattern=/%s/;var xLabelPattern=/%lx/;var yLabelPattern=/%ly/;var xPattern=/%x\.{0,1}(\d{0,})/;var yPattern=/%y\.{0,1}(\d{0,})/;var xPatternWithoutPrecision="%x";var yPatternWithoutPrecision="%y";var x,y;if(typeof item.series.threshold!=="undefined"){x=item.datapoint[0];y=item.datapoint[1]}else{x=item.series.data[item.dataIndex][0];y=item.series.data[item.dataIndex][1]}if(item.series.label===null&&item.series.originSeries){item.series.label=item.series.originSeries.label}if(typeof(content)==="function"){content=content(item.series.label,x,y,item)}if(typeof(item.series.percent)!=="undefined"){content=this.adjustValPrecision(percentPattern,content,item.series.percent)}if(typeof(item.series.label)!=="undefined"){content=content.replace(seriesPattern,item.series.label)}else{content=content.replace(seriesPattern,"")}if(this.hasAxisLabel("xaxis",item)){content=content.replace(xLabelPattern,item.series.xaxis.options.axisLabel)}else{content=content.replace(xLabelPattern,"")}if(this.hasAxisLabel("yaxis",item)){content=content.replace(yLabelPattern,item.series.yaxis.options.axisLabel)}else{content=content.replace(yLabelPattern,"")}if(this.isTimeMode("xaxis",item)&&this.isXDateFormat(item)){content=content.replace(xPattern,this.timestampToDate(x,this.tooltipOptions.xDateFormat))}if(this.isTimeMode("yaxis",item)&&this.isYDateFormat(item)){content=content.replace(yPattern,this.timestampToDate(y,this.tooltipOptions.yDateFormat))}if(typeof x==="number"){content=this.adjustValPrecision(xPattern,content,x)}if(typeof y==="number"){content=this.adjustValPrecision(yPattern,content,y)}if(typeof item.series.xaxis.ticks!=="undefined"){var ticks;if(this.hasRotatedXAxisTicks(item)){ticks="rotatedTicks"}else{ticks="ticks"}var tickIndex=item.dataIndex+item.seriesIndex;if(item.series.xaxis[ticks].length>tickIndex&&!this.isTimeMode("xaxis",item)){content=content.replace(xPattern,item.series.xaxis[ticks][tickIndex].label)}}if(typeof item.series.yaxis.ticks!=="undefined"){for(var index in item.series.yaxis.ticks){if(item.series.yaxis.ticks.hasOwnProperty(index)){var value=(this.isCategoriesMode("yaxis",item))?item.series.yaxis.ticks[index].label:item.series.yaxis.ticks[index].v;if(value===y){content=content.replace(yPattern,item.series.yaxis.ticks[index].label)}}}}if(typeof item.series.xaxis.tickFormatter!=="undefined"){content=content.replace(xPatternWithoutPrecision,item.series.xaxis.tickFormatter(x,item.series.xaxis).replace(/\$/g,"$$"))}if(typeof item.series.yaxis.tickFormatter!=="undefined"){content=content.replace(yPatternWithoutPrecision,item.series.yaxis.tickFormatter(y,item.series.yaxis).replace(/\$/g,"$$"))}return content};FlotTooltip.prototype.isTimeMode=function(axisName,item){return(typeof item.series[axisName].options.mode!=="undefined"&&item.series[axisName].options.mode==="time")};FlotTooltip.prototype.isXDateFormat=function(item){return(typeof this.tooltipOptions.xDateFormat!=="undefined"&&this.tooltipOptions.xDateFormat!==null)};FlotTooltip.prototype.isYDateFormat=function(item){return(typeof this.tooltipOptions.yDateFormat!=="undefined"&&this.tooltipOptions.yDateFormat!==null)};FlotTooltip.prototype.isCategoriesMode=function(axisName,item){return(typeof item.series[axisName].options.mode!=="undefined"&&item.series[axisName].options.mode==="categories")};FlotTooltip.prototype.timestampToDate=function(tmst,dateFormat){var theDate=new Date(tmst*1);return $.plot.formatDate(theDate,dateFormat,this.tooltipOptions.monthNames,this.tooltipOptions.dayNames)};FlotTooltip.prototype.adjustValPrecision=function(pattern,content,value){var precision;var matchResult=content.match(pattern);if(matchResult!==null){if(RegExp.$1!==""){precision=RegExp.$1;value=value.toFixed(precision);content=content.replace(pattern,value)}}return content};FlotTooltip.prototype.hasAxisLabel=function(axisName,item){return(this.plotPlugins.indexOf("axisLabels")!==-1&&typeof item.series[axisName].options.axisLabel!=="undefined"&&item.series[axisName].options.axisLabel.length>0)};FlotTooltip.prototype.hasRotatedXAxisTicks=function(item){return($.grep($.plot.plugins,function(p){return p.name==="tickRotor"}).length===1&&typeof item.series.xaxis.rotatedTicks!=="undefined")};var init=function(plot){new FlotTooltip(plot)};$.plot.plugins.push({init:init,options:defaultOptions,name:"tooltip",version:"0.6.7"})})(jQuery);String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")};String.prototype.startsWith=function(A){return this.length>=A.length&&this.substr(0,A.length)==A};String.prototype.endsWith=function(A){return this.length>=A.length&&this.substr(this.length-A.length)==A};String.substitute=function(B,D){var A="";var F=0;while(FF&&B.charAt(C-1)=="\\"){A+=B.substring(F,C-1)+"%";F=C+1}else{var E=parseInt(B.charAt(C+1));if(isNaN(E)||E>=D.length){A+=B.substring(F,C+2)}else{A+=B.substring(F,C)+D[E].toString()}F=C+2}}}if(FOrtsfacette) und verschiedene Kartentypen.
Da es Objekte geben kann, die keine Ortsangabe in ihrer Beschreibung enthalten, ist die Menge der in der Karte dargestellten Objekte in der Regel kleiner als in der Ergebnisliste (Anzahl darstellbarer Objekte siehe rechts oben über der Karte).
Mit der Karte können Sie die Suchergebnisse weiter eingrenzen, indem Sie auf einen der Punkte klicken. Wählen Sie einen Ort aus und klicken Sie auf die kleine Lupe, um die Ergebnisliste so einzuschränken, dass nur noch die diesem Ort zugeordneten Objekte als Suchergebnis erscheinen. Mehr zur Karte im Benutzerhandbuch ...",timeHelp:"In der Zeitleiste sind die Suchergebnisse nach Jahren geordnet. Sie können verschiedene zeitbezogene Kategorien als Grundlage für die Darstellung wählen (Auswahlfeld Zeitfacette).
Da es Objekte geben kann, die keine Zeitangabe in ihrer Beschreibung enthalten, ist die Zahl der in der Zeitleiste dargestellten Objekte in der Regel kleiner als in der Ergebnisliste. Die Angabe über darstellbare Objekte finden Sie rechts über der Zeitleiste.
Mit der Zeitleiste können Sie die Suchergebnisse weiter eingrenzen. Wählen Sie ein Jahr oder einen Zeitraum durch Klicken und Ziehen und klicken Sie auf die kleine Lupe. Die Ergebnisliste zeigt nur noch die Objekte in diesem Zeitraum. Mehr zur Zeitleiste im Benutzerhandbuch ...",selectTablePageItemsHelp:"Click to select all rows of this page",deselectTablePageItemsHelp:"Click to deselect all rows of this page",selectAllTableItemsHelp:"Click to select all rows of the table",deselectAllTableItemsHelp:"Click to deselect all rows of the table",filter:"Filter",filterSelectedItemsHelp:"Filter the selected items",inverseFilterSelectedItemsHelp:"Apply an inverse filter on the selected items removing them from the views",undoFilterSelection:"Undo the last filter / inverse filter",cancelSelection:"Discard the current selection (all items appear as deselected)",showSelectedHelp:"Show only elements within the selection",selectByTextHelp:"Select elements that contain the given text",showAllElementsHelp:"Show all elements",paginationFirsPageHelp:"Show first page",paginationPreviousPageHelp:"Show previous page",paginationNextPageHelp:"Show next page",paginationLastPageHelp:"Show last page",sortAZHelp:"Sort table elements ascending according this column",sortZAHelp:"Sort table elements descending according this column",paginationDropdownHelp:"Select number of elements per page",selectTimeUnit:"Wähle Zeitinervalle",valueScale:"Value Scale",linearPlot:"Linear Value Scale",logarithmicPlot:"Logarithmic Value Scale",playButton:"Animate Selected Range",pauseButton:"Pause Animation",createNewFromSelectedHelp:"Erstelle neuen Datensatz aus den selektierten Einträgen",removeDatasetHelp:"Diesen Datensatz entfernen",exportDatasetHelp:"Diesen Datensatz in KML Datei exportieren",invertSelectionHelp:"Jetzige Selektion umkehren",colorShapeDatasetHelp:"Farbe oder Form des Datensatzes ändern",lockMap:"Karte in diesem Zustand halten."}};$.fn.cleanWhitespace=function(){textNodes=this.contents().filter(function(){return(this.nodeType==3&&!/\S/.test(this.nodeValue))}).remove();return this};GeoTemConfig={debug:false,incompleteData:true,inverseFilter:true,mouseWheelZoom:true,language:"en",allowFilter:true,highlightEvents:true,selectionEvents:true,tableExportDataset:true,allowCustomColoring:false,allowUserShapeAndColorChange:true,loadColorFromDataset:false,allowColumnRenaming:true,colors:[{r1:255,g1:101,b1:0,r0:253,g0:229,b0:205},{r1:144,g1:26,b1:255,r0:230,g0:225,b0:255},{r1:0,g1:217,b1:0,r0:213,g0:255,b0:213},{r1:240,g1:220,b1:0,r0:247,g0:244,b0:197}]};GeoTemConfig.ie=false;GeoTemConfig.ie8=false;GeoTemConfig.independentMapId=0;GeoTemConfig.independentTimeId=0;if(/MSIE (\d+\.\d+);/.test(navigator.userAgent)){GeoTemConfig.ie=true;var ieversion=new Number(RegExp.$1);if(ieversion==8){GeoTemConfig.ie8=true}}GeoTemConfig.getIndependentId=function(target){if(target=="map"){return ++GeoTemConfig.independentMapId}if(target=="time"){return ++GeoTemConfig.independentTimeId}return 0};GeoTemConfig.setHexColor=function(hex,index,fill){var result=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);if(fill){GeoTemConfig.colors[index].r0=parseInt(result[1],16);GeoTemConfig.colors[index].g0=parseInt(result[2],16);GeoTemConfig.colors[index].b0=parseInt(result[3],16)}else{GeoTemConfig.colors[index].r1=parseInt(result[1],16);GeoTemConfig.colors[index].g1=parseInt(result[2],16);GeoTemConfig.colors[index].b1=parseInt(result[3],16)}};GeoTemConfig.setRgbColor=function(r,g,b,index,fill){if(fill){GeoTemConfig.colors[index].r0=r;GeoTemConfig.colors[index].g0=g;GeoTemConfig.colors[index].b0=b}else{GeoTemConfig.colors[index].r1=r;GeoTemConfig.colors[index].g1=g;GeoTemConfig.colors[index].b1=b}};GeoTemConfig.configure=function(urlPrefix){GeoTemConfig.urlPrefix=urlPrefix;GeoTemConfig.path=GeoTemConfig.urlPrefix+"images/"};GeoTemConfig.applySettings=function(settings){$.extend(this,settings)};GeoTemConfig.assignedColorCount=0;GeoTemConfig.getColor=function(id){if(typeof GeoTemConfig.datasets[id].color==="undefined"){var color;while(true){if(GeoTemConfig.colors.length<=GeoTemConfig.assignedColorCount){color={r1:Math.floor((Math.random()*255)+1),g1:Math.floor((Math.random()*255)+1),b1:Math.floor((Math.random()*255)+1),r0:230,g0:230,b0:230}}else{color=GeoTemConfig.colors[GeoTemConfig.assignedColorCount]}var found=false;for(var i=0;i0){hasContent=true}}else{hasContent=true}}if(hasContent===true){break}}if(hasContent===false){continue}for(var j=0;j/g,"
");$(descriptionRows.split("
")).each(function(){var row=this;if(typeof row==="undefined"){return}var headerAndValue=row.split("=");if(headerAndValue.length!=2){return}var header=$.trim(headerAndValue[0]);var value=$.trim(headerAndValue[1]);if($.inArray(header,descriptionTableHeaders)===-1){descriptionTableHeaders.push(header)}if(tableContent[header]!=null){tableContent[header]+="\n"+value}else{tableContent[header]=value}});tableContent.description=description}catch(e){description=""}try{name=placemark.getElementsByTagName("name")[0].childNodes[0].nodeValue;tableContent.name=name}catch(e){if(typeof tableContent.name!=="undefined"){name=tableContent.name}else{name=""}}try{place=placemark.getElementsByTagName("address")[0].childNodes[0].nodeValue;tableContent.place=place}catch(e){if(typeof tableContent.place!=="undefined"){place=tableContent.place}else{place=""}}try{var coordinates=placemark.getElementsByTagName("Point")[0].getElementsByTagName("coordinates")[0].childNodes[0].nodeValue;var lonlat=coordinates.split(",");lon=lonlat[0];lat=lonlat[1];if(lon==""||lat==""||isNaN(lon)||isNaN(lat)){throw"e"}location.push({longitude:lon,latitude:lat,place:place})}catch(e){if(!GeoTemConfig.incompleteData){continue}}try{var tuple=GeoTemConfig.getTimeData(placemark.getElementsByTagName("TimeStamp")[0].getElementsByTagName("when")[0].childNodes[0].nodeValue);if(tuple!=null){time.push(tuple);timeData=true}else{if(!GeoTemConfig.incompleteData){continue}}}catch(e){try{if((typeof tableContent["TimeSpan:begin"]==="undefined")&&(typeof tableContent["TimeSpan:end"]==="undefined")){var timeStart=$(placemark).find("TimeSpan begin").text();var timeEnd=$(placemark).find("TimeSpan end").text();if((timeStart!="")&&(timeStart!="")){tableContent["TimeSpan:begin"]=timeStart;tableContent["TimeSpan:end"]=timeEnd;timeData=true}}}catch(e){if(!GeoTemConfig.incompleteData){continue}}}var object=new DataObject(name,description,location,time,1,tableContent);object.setIndex(index);index++;mapObjects.push(object)}if(descriptionTableHeaders.length>0){$(mapObjects).each(function(){var object=this;$(descriptionTableHeaders).each(function(){if(typeof object.tableContent[this]==="undefined"){object.tableContent[this]=""}})})}if(GeoTemConfig.loadColorFromDataset){GeoTemConfig.loadDataObjectColoring(mapObjects)}return mapObjects};GeoTemConfig.createKMLfromDataset=function(index){var kmlContent='';function pad(number){var r=String(number);if(r.length===1){r="0"+r}return r}var dateToISOString=function(date,granularity){var ISOString=date.getFullYear();if(granularity<=SimileAjax.DateTime.MONTH){ISOString+="-"+pad(date.getMonth()+1)}if(granularity<=SimileAjax.DateTime.DAY){ISOString+="-"+pad(date.getDate())}if(granularity<=SimileAjax.DateTime.HOUR){ISOString+="T"+pad(date.getHours());if(granularity<=SimileAjax.DateTime.MINUTE){ISOString+=":"+pad(date.getMinutes())}if(granularity<=SimileAjax.DateTime.SECOND){ISOString+=":"+pad(date.getSeconds())}if(granularity<=SimileAjax.DateTime.MILLISECOND){ISOString+="."+String((date.getMilliseconds()/1000).toFixed(3)).slice(2,5)}ISOString+="Z"}return ISOString};$(GeoTemConfig.datasets[index].objects).each(function(){var name=this.name;var description=this.description;var place=this.getPlace(0,0);var lat=this.getLatitude(0);var lon=this.getLongitude(0);var kmlEntry="";kmlEntry+="";kmlEntry+="
";kmlEntry+="";kmlEntry+=""+lon+","+lat+"";if(this.isTemporal){kmlEntry+=""+dateToISOString(this.getDate(0),this.getTimeGranularity(0))+""}else{if(this.isFuzzyTemporal){kmlEntry+=""+dateToISOString(this.TimeSpanBegin.utc().toDate(),this.TimeSpanBeginGranularity)+""+dateToISOString(this.TimeSpanEnd.utc().toDate(),this.TimeSpanEndGranularity)+""}}kmlEntry+="
";kmlContent+=kmlEntry});kmlContent+="
";return(kmlContent)};GeoTemConfig.createCSVfromDataset=function(index){var csvContent="";var header=["name","description","weight"];var tableContent=[];var firstDataObject=GeoTemConfig.datasets[index].objects[0];for(var key in firstDataObject.tableContent){var found=false;$(header).each(function(index,val){if(val===key){found=true;return false}});if(found===true){continue}else{tableContent.push(key)}}var isFirst=true;$(header).each(function(key,val){if(isFirst){isFirst=false}else{csvContent+=","}if(val==="name"){val="Name"}else{if(val==="description"){val="Description"}}csvContent+='"'+val+'"'});$(tableContent).each(function(key,val){if(isFirst){isFirst=false}else{csvContent+=","}csvContent+='"'+val+'"'});csvContent+=',"Address","Latitude","Longitude","TimeStamp"';csvContent+="\n";var isFirstRow=true;$(GeoTemConfig.datasets[index].objects).each(function(){var elem=this;if(isFirstRow){isFirstRow=false}else{csvContent+="\n"}var isFirst=true;$(header).each(function(key,val){if(isFirst){isFirst=false}else{csvContent+=","}csvContent+='"'+elem[val]+'"'});$(tableContent).each(function(key,val){if(isFirst){isFirst=false}else{csvContent+=","}csvContent+='"'+elem.tableContent[val]+'"'});csvContent+=",";csvContent+='"';if(elem.isGeospatial){csvContent+=elem.locations[0].place}csvContent+='"';csvContent+=",";csvContent+='"';if((elem.isGeospatial)&&(typeof elem.getLatitude(0)!=="undefined")){csvContent+=elem.getLatitude(0)}csvContent+='"';csvContent+=",";csvContent+='"';if((elem.isGeospatial)&&(typeof elem.getLongitude(0)!=="undefined")){csvContent+=elem.getLongitude(0)}csvContent+='"';csvContent+=",";csvContent+='"';if((elem.isTemporal)&&(typeof elem.getDate(0)!=="undefined")){csvContent+=elem.getDate(0).toISOString()}csvContent+='"'});return(csvContent)};GeoTemConfig.loadDataObjectColoring=function(dataObjects){$(dataObjects).each(function(){var r0,g0,b0,r1,g1,b1;if((typeof this.tableContent!=="undefined")&&(typeof this.tableContent.color0!=="undefined")){var color=this.tableContent.color0;if((color.indexOf("#")==0)&&(color.length==7)){r0=parseInt("0x"+color.substr(1,2));g0=parseInt("0x"+color.substr(3,2));b0=parseInt("0x"+color.substr(5,2))}}if((typeof this.tableContent!=="undefined")&&(typeof this.tableContent.color1!=="undefined")){var color=this.tableContent.color1;if((color.indexOf("#")==0)&&(color.length==7)){r1=parseInt("0x"+color.substr(1,2));g1=parseInt("0x"+color.substr(3,2));b1=parseInt("0x"+color.substr(5,2))}}if((typeof r0!=="undefined")&&(typeof g0!=="undefined")&&(typeof b0!=="undefined")&&(typeof r1!=="undefined")&&(typeof g1!=="undefined")&&(typeof b1!=="undefined")){this.setColor(r0,g0,b0,r1,g1,b1);delete this.tableContent.color0;delete this.tableContent.color1}else{if((GeoTemConfig.debug)&&(typeof console!==undefined)){console.error("Object '"+this.name+"' has invalid color information")}}})};GeoTemConfig.renameColumns=function(dataset,renames){if(renames.length===0){return}for(var renCnt=0;renCnt0){oldColumObject.type=3;oldColumObject.attribute=attribute.split(".")[1]}}}else{oldColumObject.type=1;oldColumObject.name=oldColumn}var newColumObject={};if(newColumn.indexOf("[")!=-1){newColumObject.name=newColumn.split("[")[0];var IndexAndAttribute=newColumn.split("[")[1];if(IndexAndAttribute.indexOf("]")!=-1){newColumObject.type=2;newColumObject.arrayIndex=IndexAndAttribute.split("]")[0];var attribute=IndexAndAttribute.split("]")[1];if(attribute.length>0){newColumObject.type=3;newColumObject.attribute=attribute.split(".")[1]}}}else{newColumObject.type=1;newColumObject.name=newColumn}for(var i=0;ilevel){maxLevel=level}if(level==0){break}}for(levelOfDetail=0;levelOfDetaillabel2.weight){return -1}return 1};labels.sort(sortBySize);if(map.options.maxPlaceLabels){var ml=map.options.maxPlaceLabels;if(ml==1){labels=[];labels.push({place:"all",elements:elements,weight:weight,index:k})}if(ml==2){ml++}if(ml>2&&labels.length+1>ml){var c=[];var w=0;for(var i=ml-2;i1){labels.push({place:"all",elements:elements,weight:weight,index:k})}this.placeLabels=labels};this.calculatePlacenameTags=function(){var cloud=this;var c=GeoTemConfig.getColor(this.circle.search);if(map.options.useGraphics){c=map.config.getGraphic(this.circle.search).color}var color0="rgb("+c.r0+","+c.g0+","+c.b0+")";var color1="rgb("+c.r1+","+c.g1+","+c.b1+")";var allStyles="",hoverStyle="",highlightStyle="",selectedStyle="",unselectedStyle="";if(GeoTemConfig.ie){highlightStyle+=map.options.ieHighlightLabel.replace(/COLOR1/g,color1).replace(/COLOR0/g,color0)+";";hoverStyle+=map.options.ieHoveredLabel.replace(/COLOR1/g,color1).replace(/COLOR0/g,color0)+";";selectedStyle+=map.options.ieSelectedLabel.replace(/COLOR1/g,color1).replace(/COLOR0/g,color0)+";";unselectedStyle+=map.options.ieUnselectedLabel.replace(/COLOR1/g,color1).replace(/COLOR0/g,color0)+";"}else{highlightStyle+=map.options.highlightLabel.replace(/COLOR1/g,color1).replace(/COLOR0/g,color0)+";";hoverStyle+=map.options.hoveredLabel.replace(/COLOR1/g,color1).replace(/COLOR0/g,color0)+";";selectedStyle+=map.options.selectedLabel.replace(/COLOR1/g,color1).replace(/COLOR0/g,color0)+";";unselectedStyle+=map.options.unselectedLabel.replace(/COLOR1/g,color1).replace(/COLOR0/g,color0)+";"}var clickFunction=function(label){label.div.onclick=function(){cloud.changeLabelSelection(label)}};var maxLabelSize=this.count;for(var i=0;i ("+l.weight+")";l.div=div;clickFunction(l)}if(map.options.labelGrid){this.showPlacelabels()}else{for(var i=0;ilabel2.weight){return -1}return 1};labels.sort(sortBySize);var droppedLabels=[];if(map.options.maxPlaceLabels){var ml=map.options.maxPlaceLabels;if(ml==1){labels=[];labels.push({place:"all",elements:elements,weight:weight,index:k})}if(ml==2){ml++}if(ml>2&&labels.length+1>ml){var c=[];var w=0;for(var i=ml-2;i1){labels.push({place:"all",elements:elements,weight:weight,index:k})}this.placeLabels.push(labels);this.droppedLabels.push(droppedLabels)};this.calculateLabels=function(){var circles=this.circle.circles;this.placeLabels=[];this.droppedLabels=[];this.othersLabels=[];for(var i=0;i ("+l.weight+")";l.div=div;clickFunction(l,k)}for(var i=0;i ("+l.weight+")";l.div=div;div.setAttribute("style",allStyles+""+selectedStyle)}}this.naDiv=document.createElement("div");this.naDiv.setAttribute("class","tagCloudItem");var fontSize=1;div.style.fontSize=fontSize+"em";l.allStyle=allStyles+"font-size: "+fontSize+"em;";l.selectedStyle=selectedStyle;l.unselectedStyle=unselectedStyle;l.hoverStyle=hoverStyle;this.naDiv.innerHTML="Not available";l.div=this.naDiv;if(map.options.labelGrid){this.showPlacelabels()}};this.showPlacelabels=function(){this.leftDiv=document.createElement("div");this.leftDiv.setAttribute("class","tagCloudDiv");this.leftDiv.style.textAlign="right";this.map.gui.mapWindow.appendChild(this.leftDiv);this.centerDiv=document.createElement("div");this.centerDiv.setAttribute("class","tagCloudDiv");this.centerDiv.style.opacity=0.7;this.map.gui.mapWindow.appendChild(this.centerDiv);this.centerDivOl=document.createElement("div");this.centerDivOl.setAttribute("class","tagCloudDiv");this.centerDivOl.style.opacity=0.7;this.map.gui.mapWindow.appendChild(this.centerDivOl);this.rightDiv=document.createElement("div");this.rightDiv.setAttribute("class","tagCloudDiv");this.rightDiv.style.textAlign="left";this.map.gui.mapWindow.appendChild(this.rightDiv);for(var i=0;ithis.rightDiv.offsetTop){y1+=this.leftDiv.offsetTop-this.rightDiv.offsetTop}else{y2+=this.rightDiv.offsetTop-this.leftDiv.offsetTop}ctx.lineCap="round";ctx.lineWidth=5;ctx.beginPath();ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.strokeStyle="#555";ctx.stroke()};this.remove=function(){$(this.leftDiv).remove();$(this.rightDiv).remove();$(this.centerDiv).remove();$(this.centerDivOl).remove()}}function MapConfig(options){this.options={mapWidth:false,mapHeight:"580px",mapTitle:"GeoTemCo Map View",mapIndex:0,alternativeMap:[{name:"Barrington Roman Empire",url:"http://pelagios.org/tilesets/imperium/${z}/${x}/${y}.png",type:"XYZ",attribution:"Digital Atlas of the Roman Empire (c) Johan Åhlfeldt, Pelagios"},{name:"China 1997",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/China_Monograph_Project/wms",layer:"China_Monograph_Project:v5_1997_prov_pgn_utf"},{name:"Maps-for-Free Relief Map",url:"http://maps-for-free.com/layer/relief/z${z}/row${y}/${z}_${x}-${y}.jpg",type:"XYZ",attribution:"(c) Maps for Free"},{name:"Contemporary Map (2010)",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry2010",attribution:"(c) EuroStat"},{name:"Historical Map of 2006",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry2006",attribution:"(c) EuroStat"},{name:"Historical Map of 1994",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1994",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1945",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1945",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1938",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1938",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1920",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1920",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1914",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1914",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1880",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1880",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1815",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1815",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1783",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1783",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1715",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1715",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1650",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1650",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1530",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1530",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1492",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1492",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1279",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1279",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1000",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1000",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 800",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry800",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 600",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry600",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 400",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry400",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1 BC",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1bc",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 200 BC",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry200bc",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 323 BC",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry323bc",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 500 BC",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry500bc",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1000 BC",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1000bc",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 2000 BC",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry2000bc",attribution:"(c) ThinkQuest Team C006628"},{name:"BEHIND Proposition to Register",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/wms",layer:"TOPOI:Werning.BEHIND.prepositions",attribution:"(c) Daniel Werning"}],legend:true,mapMerge:false,useGraphics:false,graphics:[{shape:"circle",rotation:0},{shape:"square",rotation:0},{shape:"triangle",rotation:0},{shape:"square",rotation:45}],googleMaps:false,bingMaps:false,bingApiKey:"none",osmMaps:true,osmMapsMapQuest:true,baseLayer:"Open Street Map",resetMap:true,countrySelect:true,polygonSelect:true,circleSelect:true,squareSelect:true,multiSelection:true,popups:true,olNavigation:false,olLayerSwitcher:false,olMapOverview:false,olKeyboardDefaults:true,olScaleLine:false,geoLocation:true,boundaries:{minLon:-29,minLat:35,maxLon:44,maxLat:67},mapBackground:"#bbd0ed",labelGrid:true,maxPlaceLabels:6,selectDefault:true,maxLabelIncrease:2,labelHover:false,ieHighlightLabel:"color: COLOR1; background-color: COLOR0; filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=80)';-ms-filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=80)';",highlightLabel:"color: COLOR0; text-shadow: 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em COLOR0;",ieSelectedLabel:"color: COLOR1; font-weight: bold;",selectedLabel:"color: COLOR1; font-weight: bold;",ieUnselectedLabel:"color: COLOR1; font-weight: normal;",unselectedLabel:"color: COLOR1; font-weight: normal;",ieHoveredLabel:"color: COLOR1; font-weight: bold;",hoveredLabel:"color: COLOR1; font-weight: bold;",circleGap:0,circleOverlap:{type:"area",overlap:0},minimumRadius:4,circleOutline:2,circleOpacity:"balloon",minTransparency:0.55,maxTransparency:0.8,binning:"generic",noBinningRadii:"dynamic",circlePackings:true,binCount:10,showDescriptions:true,mapSelection:true,binningSelection:false,mapSelectionTools:true,dataInformation:true,overlayVisibility:false,placenameTagsStyle:"value",hideUnselected:false};if(typeof options!="undefined"){$.extend(this.options,options)}if(GeoTemConfig.allowUserShapeAndColorChange){this.options.useGraphics=true}}MapConfig.prototype.getGraphic=function(id){var dataset=GeoTemConfig.datasets[id];var graphic;if(typeof dataset.graphic!=="undefined"){graphic=dataset.graphic}else{graphic=this.options.graphics[id%this.options.graphics.length]}var color;if(typeof dataset.color!=="undefined"){color=dataset.color}else{color=GeoTemConfig.getColor(id)}return{shape:graphic.shape,rotation:graphic.rotation,color:color}};function MapGui(map,div,options,iid){var gui=this;this.map=map;this.container=div;if(options.mapWidth){this.container.style.width=options.mapWidth}if(options.mapHeight){this.container.style.height=options.mapHeight}this.container.style.position="relative";this.mapWindow=document.createElement("div");this.mapWindow.setAttribute("class","mapWindow");this.mapWindow.id="mapWindow"+iid;this.mapWindow.style.background=options.mapBackground;this.container.appendChild(this.mapWindow);this.mapContainer=document.createElement("div");this.mapContainer.setAttribute("class","mapContainer");this.mapContainer.id="mapContainer"+iid;this.mapContainer.style.position="absolute";this.mapContainer.style.zIndex=0;this.mapWindow.appendChild(this.mapContainer);var toolbarTable=document.createElement("table");toolbarTable.setAttribute("class","absoluteToolbar ddbToolbar");this.container.appendChild(toolbarTable);this.mapToolbar=toolbarTable;var titles=document.createElement("tr");toolbarTable.appendChild(titles);var tools=document.createElement("tr");toolbarTable.appendChild(tools);if(options.mapSelection){this.mapTypeTitle=document.createElement("td");titles.appendChild(this.mapTypeTitle);this.mapTypeTitle.innerHTML=GeoTemConfig.getString("mapType");this.mapTypeSelector=document.createElement("td");tools.appendChild(this.mapTypeSelector)}if(options.mapSelectionTools){this.mapSelectorTitle=document.createElement("td");titles.appendChild(this.mapSelectorTitle);this.mapSelectorTitle.innerHTML=GeoTemConfig.getString("mapSelectorTools");var mapSelectorTools=document.createElement("td");var selectorTools=this.map.initSelectorTools();for(var i in selectorTools){mapSelectorTools.appendChild(selectorTools[i].button)}tools.appendChild(mapSelectorTools)}if(options.binningSelection){this.binningTitle=document.createElement("td");titles.appendChild(this.binningTitle);this.binningTitle.innerHTML=GeoTemConfig.getString("binningType");this.binningSelector=document.createElement("td");tools.appendChild(this.binningSelector)}if(GeoTemConfig.allowFilter){this.filterTitle=document.createElement("td");titles.appendChild(this.filterTitle);this.filterTitle.innerHTML=GeoTemConfig.getString("filter");this.filterOptions=document.createElement("td");tools.appendChild(this.filterOptions)}if(options.dataInformation){this.infoTitle=document.createElement("td");this.infoTitle.innerHTML=options.mapTitle;titles.appendChild(this.infoTitle);var mapSum=document.createElement("td");this.mapElements=document.createElement("div");this.mapElements.setAttribute("class","ddbElementsCount");mapSum.appendChild(this.mapElements);tools.appendChild(mapSum)}this.lockTitle=document.createElement("td");titles.appendChild(this.lockTitle);this.lockIcon=document.createElement("td");var lockButton=document.createElement("div");$(lockButton).addClass("mapControl");var activateLock=function(){map.navigation.deactivate()};var deactivateLock=function(){map.navigation.activate()};var lockMapControl=new MapControl(this.map,lockButton,"lock",activateLock,deactivateLock);tools.appendChild(lockMapControl.button);this.fullscreenTitle=document.createElement("td");titles.appendChild(this.fullscreenTitle);this.fullscreenIcon=document.createElement("td");var fullscreenButton=document.createElement("div");$(fullscreenButton).addClass("mapControl");var prevWidth;var prevHeight;var prevParent;var activateFullscreen=function(){$div=$(div);$window=$(window);prevWidth=$div.width();prevHeight=$div.height();prevParent=$div.parent();$div.appendTo("body");$div.css("position","absolute");$div.css("top","0");$div.css("left","0");$div.css("z-Index","10000");$div.width($window.width());$div.height($window.height());gui.resize()};var deactivateFullscreen=function(){$div=$(div);$div.appendTo(prevParent);$div.css("position","relative");$div.width(prevWidth);$div.height(prevHeight);gui.resize()};var fullscreenMapControl=new MapControl(this.map,fullscreenButton,"fullscreen",activateFullscreen,deactivateFullscreen);tools.appendChild(fullscreenMapControl.button);if(navigator.geolocation&&options.geoLocation){this.geoActive=false;this.geoLocation=document.createElement("div");this.geoLocation.setAttribute("class","geoLocationOff");this.geoLocation.title=GeoTemConfig.getString("activateGeoLocation");this.container.appendChild(this.geoLocation);this.geoLocation.style.left="20px";this.geoLocation.onclick=function(){var changeStyle=function(){if(gui.geoActive){gui.geoLocation.setAttribute("class","geoLocationOn");gui.geoLocation.title=GeoTemConfig.getString(GeoTemConfig.language,"deactivateGeoLocation")}else{gui.geoLocation.setAttribute("class","geoLocationOff");gui.geoLocation.title=GeoTemConfig.getString(GeoTemConfig.language,"activateGeoLocation")}};if(!gui.geoActive){if(typeof gui.longitude=="undefined"){navigator.geolocation.getCurrentPosition(function(position){gui.longitude=position.coords.longitude;gui.latitude=position.coords.latitude;gui.map.setMarker(gui.longitude,gui.latitude);gui.geoActive=true;changeStyle()},function(msg){console.log(typeof msg=="string"?msg:"error")})}else{gui.map.setMarker(gui.longitude,gui.latitude);gui.geoActive=true;changeStyle()}}else{gui.map.removeMarker();gui.geoActive=false;changeStyle()}}}if(!options.olNavigation){this.map.zoomSlider=new MapZoomSlider(this.map,"vertical");this.container.appendChild(this.map.zoomSlider.div);this.map.zoomSlider.div.style.left="20px"}if(options.resetMap){this.homeButton=document.createElement("div");this.homeButton.setAttribute("class","mapHome");this.homeButton.title=GeoTemConfig.getString("home");this.container.appendChild(this.homeButton);this.homeButton.style.left="20px";this.homeButton.onclick=function(){if(map.mds.getAllObjects()==null){map.openlayersMap.setCenter(new OpenLayers.LonLat(0,0));map.openlayersMap.zoomTo(0)}gui.map.drawObjectLayer(true)}}if(options.legend){this.legendDiv=document.createElement("div");this.legendDiv.setAttribute("class","mapLegend");this.mapWindow.appendChild(this.legendDiv)}var linkForOsm="http://www.openstreetmap.org/";var linkForLicense="http://creativecommons.org/licenses/by-sa/2.0/";this.osmLink=document.createElement("div");this.osmLink.setAttribute("class","osmLink");this.osmLink.innerHTML="(c) OpenStreetMap contributors, CC-BY-SA";this.mapWindow.appendChild(this.osmLink);this.osmMapQuestLink=document.createElement("div");this.osmMapQuestLink.setAttribute("class","osmLink");this.osmMapQuestLink.innerHTML='(c) Data, imagery and map information provided by MapQuest MapQuest ').appendTo(this.legendDiv);for(var i=0;i").appendTo(table);if(options.useGraphics){var graphic=map.config.getGraphic(i);var fill="rgb("+graphic.color.r0+","+graphic.color.g0+","+graphic.color.b0+")";var stroke="rgb("+graphic.color.r1+","+graphic.color.g1+","+graphic.color.b1+")";var rot=graphic.rotation;var svg;if(graphic.shape=="circle"){svg=''}else{if(graphic.shape=="square"){svg=''}else{if(graphic.shape=="triangle"){svg=''}}}$(""+svg+"").appendTo(row)}else{var c=GeoTemConfig.getColor(i);var fill="rgb("+c.r0+","+c.g0+","+c.b0+")";var stroke="rgb("+c.r1+","+c.g1+","+c.b1+")";var svg='';$(""+svg+"").appendTo(row)}$(""+datasets[i].label+"").appendTo(row)}};this.updateSpaceQuantity=function(count){if(!options.dataInformation){return}this.mapCount=count;if(count!=1){this.mapElements.innerHTML=this.beautifyCount(count)+" "+GeoTemConfig.getString("results")}else{this.mapElements.innerHTML=this.beautifyCount(count)+" "+GeoTemConfig.getString("result")}};this.setMapsDropdown=function(){if(!options.mapSelection){return}$(this.mapTypeSelector).empty();var maps=[];var gui=this;var addMap=function(name,index){var setMap=function(){gui.map.setMap(index)};maps.push({name:name,onclick:setMap})};for(var i=0;i3){p+=3;c=c.substring(0,l-p)+"."+c.substring(l-p);p++;l++}return c}}MapWidget=function(core,div,options){this.core=core;this.core.setWidget(this);this.openlayersMap;this.baseLayers;this.objectLayer;this.drawPolygon;this.drawCircle;this.selectCountry;this.dragArea;this.selectFeature;this.navigation;this.div=div;this.iid=GeoTemConfig.getIndependentId("map");this.config=new MapConfig(options);this.options=this.config.options;this.formerCP=this.options.circlePackings;this.gui=new MapGui(this,this.div,this.options,this.iid);this.initialize()};MapWidget.prototype={initialize:function(){var map=this;if(map.options.proxyHost){OpenLayers.ProxyHost=map.options.proxyHost}this.polygons=[];this.connections=[];this.selection=new Selection();this.wmsOverlays=[];this.layerZIndex=1;this.zIndices=[];var activateDrag=function(){map.dragArea.activate()};var deactivateDrag=function(){map.dragArea.deactivate()};this.dragControl=new MapControl(this,null,"drag",activateDrag,deactivateDrag);this.filterBar=new FilterBar(this,this.gui.filterOptions);this.objectLayer=new OpenLayers.Layer.Vector("Data Objects",{projection:"EPSG:4326",displayInLayerSwitcher:false,rendererOptions:{zIndexing:true}});this.markerLayer=new OpenLayers.Layer.Markers("Markers");this.navigation=new OpenLayers.Control.Navigation({zoomWheelEnabled:GeoTemConfig.mouseWheelZoom});this.navigation.defaultDblClick=function(evt){var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom+1);map.drawObjectLayer(false);if(map.zoomSlider){map.zoomSlider.setValue(map.getZoom())}};this.navigation.wheelUp=function(evt){this.wheelChange(evt,1)};this.navigation.wheelDown=function(evt){this.wheelChange(evt,-1)};this.resolutions=[78271.516953125,39135.7584765625,19567.87923828125,9783.939619140625,4891.9698095703125,2445.9849047851562,1222.9924523925781,611.4962261962891,305.74811309814453,152.87405654907226,76.43702827453613,38.218514137268066,19.109257068634033,9.554628534317017,4.777314267158508,2.388657133579254,1.194328566789627,0.5971642833948135,0.29858214169740677];var options={controls:[this.navigation],projection:new OpenLayers.Projection("EPSG:900913"),displayProjection:new OpenLayers.Projection("EPSG:4326"),resolutions:this.resolutions,units:"meters",maxExtent:new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34)};this.openlayersMap=new OpenLayers.Map("mapContainer"+this.iid,options);if(map.options.navigate){this.activeControl="navigate"}this.openlayersMap.addControl(new OpenLayers.Control.Attribution());this.mds=new MapDataSource(this,this.options);this.openlayersMap.events.register("zoomend",map,function(){map.drawObjectLayer(false);if(map.zoomSlider){map.zoomSlider.setValue(map.getZoom())}map.core.triggerHighlight([])});if(map.options.olNavigation){var zoomPanel=new OpenLayers.Control.PanZoom();zoomPanel.onButtonClick=function(evt){var btn=evt.buttonElement;switch(btn.action){case"panup":this.map.pan(0,-this.getSlideFactor("h"));break;case"pandown":this.map.pan(0,this.getSlideFactor("h"));break;case"panleft":this.map.pan(-this.getSlideFactor("w"),0);break;case"panright":this.map.pan(this.getSlideFactor("w"),0);break;case"zoomin":map.zoom(1);break;case"zoomout":map.zoom(-1);break;case"zoomworld":if(this.map){map.zoom(this.map.zoom*-1)}break}};this.openlayersMap.addControl(zoomPanel)}if(map.options.popups){var panMap=function(){if(map.selectedGlyph){var lonlat=new OpenLayers.LonLat(map.selectedGlyph.lon,map.selectedGlyph.lat);var pixel=map.openlayersMap.getPixelFromLonLat(lonlat);if(map.popup){map.popup.shift(pixel.x,pixel.y)}}};this.openlayersMap.events.register("move",this.openlayersMap,panMap)}if(map.options.olMapOverview){this.openlayersMap.addControl(new OpenLayers.Control.OverviewMap())}if(map.options.olKeyboardDefaults){var keyboardControl=new OpenLayers.Control.KeyboardDefaults();keyboardControl.defaultKeyPress=function(evt){switch(evt.keyCode){case OpenLayers.Event.KEY_LEFT:this.map.pan(-this.slideFactor,0);break;case OpenLayers.Event.KEY_RIGHT:this.map.pan(this.slideFactor,0);break;case OpenLayers.Event.KEY_UP:this.map.pan(0,-this.slideFactor);break;case OpenLayers.Event.KEY_DOWN:this.map.pan(0,this.slideFactor);break;case 33:var size=this.map.getSize();this.map.pan(0,-0.75*size.h);break;case 34:var size=this.map.getSize();this.map.pan(0,0.75*size.h);break;case 35:var size=this.map.getSize();this.map.pan(0.75*size.w,0);break;case 36:var size=this.map.getSize();this.map.pan(-0.75*size.w,0);break;case 43:case 61:case 187:case 107:map.zoom(1);break;case 45:case 109:case 189:case 95:map.zoom(-1);break}};this.openlayersMap.addControl(keyboardControl)}if(map.options.olLayerSwitcher){this.openlayersMap.addControl(new OpenLayers.Control.LayerSwitcher())}if(map.options.olScaleLine){this.openlayersMap.addControl(new OpenLayers.Control.ScaleLine())}this.gui.resize();this.setBaseLayers();this.gui.setMapsDropdown();this.gui.setMap();this.openlayersMap.addLayers([this.objectLayer,this.markerLayer]);if(map.options.boundaries){var boundaries=map.options.boundaries;var bounds=new OpenLayers.Bounds(boundaries.minLon,boundaries.minLat,boundaries.maxLon,boundaries.maxLat);var projectionBounds=bounds.transform(this.openlayersMap.displayProjection,this.openlayersMap.projection);this.openlayersMap.zoomToExtent(projectionBounds)}else{this.openlayersMap.zoomToMaxExtent()}this.drawnPolygonHandler=function(polygon){if(map.mds.getAllObjects()==null){return}var polygonFeature;if(polygon instanceof OpenLayers.Geometry.Polygon){polygonFeature=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPolygon([polygon]))}else{if(polygon instanceof OpenLayers.Geometry.MultiPolygon){polygonFeature=new OpenLayers.Feature.Vector(polygon)}}map.polygons.push(polygonFeature);var style=$.extend(true,{},OpenLayers.Feature.Vector.style["default"]);style.graphicZIndex=0;polygonFeature.style=style;map.objectLayer.addFeatures([polygonFeature]);try{map.activeControl.deactivate()}catch(e){}var circles=map.mds.getObjectsByZoom();for(var i=0;i0&&map.options.overlayVisibility){var map=this;if(typeof this.featureInfo!="undefined"){this.featureInfo.deactivate();this.openlayersMap.removeControl(this.featureInfo)}this.featureInfo=new OpenLayers.Control.WMSGetFeatureInfo({url:"/geoserver/wms",layers:featureInfoLayers,eventListeners:{getfeatureinfo:function(event){if(event.text==""){return}var lonlat=map.openlayersMap.getLonLatFromPixel(new OpenLayers.Pixel(event.xy.x,event.xy.y));map.selectedGlyph={lon:lonlat.lon,lat:lonlat.lat};if(typeof map.popup!="undefined"){map.popup.reset()}map.popup=new MapPopup(map);map.popup.initialize(event.xy.x,event.xy.y);map.popup.setContent(event.text)}}});this.openlayersMap.addControl(this.featureInfo);this.featureInfo.activate();this.activateCountrySelector(this.wmsOverlays[this.wmsOverlays.length-1])}else{this.deactivateCountrySelector();if(this.openlayersMap.baseLayer instanceof OpenLayers.Layer.WMS){this.activateCountrySelector(this.openlayersMap.baseLayer)}}},addBaseLayer:function(layer){this.baseLayers.push(layer);this.openlayersMap.addLayers([layer]);for(var i in this.baseLayers){if(this.baseLayers[i].name==this.options.baseLayer){this.setMap(i)}}},drawObjectLayer:function(zoom){if(typeof this.placenameTags!="undefined"){this.placenameTags.remove()}var points=this.mds.getAllObjects();if(points==null){return}this.objectLayer.removeAllFeatures();if(zoom){var minLat,maxLat,minLon,maxLon;var pointsHighestZoom=points[points.length-1];for(var i=0;imaxLon){maxLon=point.originX}if(minLat==null||point.originYmaxLat){maxLat=point.originY}}}if(minLon==maxLon&&minLat==maxLat){this.openlayersMap.setCenter(new OpenLayers.LonLat(minLon,minLat))}else{var gapX=0.1*(maxLon-minLon);var gapY1=0.1*(maxLat-minLat);var gapY2=(this.gui.headerHeight/this.gui.mapWindow.offsetHeight+0.1)*(maxLat-minLat);this.openlayersMap.zoomToExtent(new OpenLayers.Bounds(minLon-gapX,minLat-gapY1,maxLon+gapX,maxLat+gapY2));this.openlayersMap.zoomTo(Math.floor(this.getZoom()))}if(this.zoomSlider){this.zoomSlider.setValue(this.getZoom())}}var displayPoints=this.mds.getObjectsByZoom();var resolution=this.openlayersMap.getResolution();for(var i=0;i4){this.options.circlePackings=false}else{this.options.circlePackings=this.formerCP}if(typeof mapObjects=="undefined"){return}this.count=0;this.objectCount=0;for(var i=0;imaxRadius){maxRadius=points[i][j][k].radius;area=getArea(maxRadius)}}}var minArea=getArea(this.options.minimumRadius);var areaDiff=area-minArea;for(var j=0;j0){hideEmptyCircles=true}}if(!GeoTemConfig.highlightEvents){return}this.mds.clearOverlay();if(this.selection.valid()){this.mds.setOverlay(GeoTemConfig.mergeObjects(mapObjects,this.selection.getObjects()))}else{this.mds.setOverlay(mapObjects)}var points=this.mds.getObjectsByZoom();var polygon=this.openlayersMap.getExtent().toGeometry();for(var i in points){for(var j in points[i]){var point=points[i][j];if(hideEmptyCircles){point.feature.style.display="none"}else{point.feature.style.display=""}this.updatePoint(points[i][j],polygon)}}this.displayConnections();this.objectLayer.redraw()},selectionChanged:function(selection){if(!GeoTemConfig.selectionEvents){return}this.reset();this.selection=selection;this.highlightChanged(selection.objects)},inPolygon:function(point){for(var i=0;i0&&this.inPolygon(circle)){return}var mapObjects=[];for(var i=0;i=ltm&&ct<=rtm){if(last!=undefined){var line=new OpenLayers.Geometry.LineString(new Array(last,c.first));this.connectionLayer.addFeatures([new OpenLayers.Feature.Vector(line,null,style)])}for(var k=0;k=this.resolutions[zoom]){break}}if(zoom==this.resolutions.length){zoom--}}return(zoom)},setMarker:function(lon,lat){var p=new OpenLayers.Geometry.Point(lon,lat,null);p.transform(this.openlayersMap.displayProjection,this.openlayersMap.projection);this.openlayersMap.setCenter(new OpenLayers.LonLat(p.x,p.y));var size=new OpenLayers.Size(22,33);var offset=new OpenLayers.Pixel(-(size.w/2),-size.h);var icon=new OpenLayers.Icon(GeoTemConfig.path+"marker.png",size,offset);var marker=new OpenLayers.Marker(new OpenLayers.LonLat(p.x,p.y),icon);marker.setOpacity(0.9);this.markerLayer.setZIndex(parseInt(this.objectLayer.getZIndex())+1);this.markerLayer.addMarker(marker);var nearestNeighbor;var points=this.mds.getAllObjects();if(points==null){return}var dist=function(p1,p2){return Math.sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y))};var zoomLevels=this.openlayersMap.getNumZoomLevels();var pointSet=points[zoomLevels-1];var closestDistance=undefined;var closestPoint;for(var i=0;i3){p+=3;c=c.substring(0,l-p)+"."+c.substring(l-p);p++;l++}return c};this.hideTimeUnitSelection=function(){this.timeUnitTitle.style.display="none";this.timeUnitSelector.style.display="none"}}TimeWidget=function(core,div,options){this.core=core;this.core.setWidget(this);this.timeplot;this.dataSources;this.eventSources;this.tds;this.timeGeometry;this.valueGeometry;this.canvas;this.leftFlagPole;this.rightFlagPole;this.rangeBox;this.leftHandle;this.rightHandle;this.leftFlagPos=null;this.leftFlagTime=null;this.rightFlagPos=null;this.rightFlagTime=null;this.mouseDownTime;this.mouseUpTime;this.mouseTempTime;this.mouseDownPos;this.mouseUpPos;this.mouseTempPos;this.status;this.slider;this.iid=GeoTemConfig.getIndependentId("time");this.options=(new TimeConfig(options)).options;this.gui=new TimeGui(this,div,this.options,this.iid);this.initialize()};TimeWidget.prototype={clearTimeplot:function(){this.timeplot._clearCanvas();this.timeGeometry._earliestDate=null;this.timeGeometry._latestDate=null;this.valueGeometry._minValue=0;this.valueGeometry._maxValue=0;this.highlightedSlice=undefined;this.timeGeometry._clearLabels();this.selection=new Selection()},initWidget:function(datasets){this.datasets=datasets;var timeObjects=[];for(var i=0;igranularity){granularity=g}}this.count+=o.weight}}}this.timeGeometry._granularity=granularity;this.timeGeometry._clearLabels();this.timeplot.resetPlots(this.plotInfos);if(this.plotInfos.length==0){this.initLabels(this.timeplot.regularGrid());return}this.timeGeometry.extendedDataSource=this.tds;this.tds.initialize(this.dataSources,this.eventSources,timeObjects,granularity,this.options.timeUnit,this.gui.timeplotDiv.offsetWidth);this.gui.setTimeUnitDropdown(this.tds.availableUnits);this.gui.timeUnitDropdown.setEntry(this.tds.getUnitIndex());var plots=this.timeplot._plots;for(var i=0;i=plot.canvas.width){x=plot.canvas.width}if(isNaN(x)||x<0){x=0}var t=plot.timeGeometry.fromScreen(x);if(t==0){return}return plot.dataSources[0].getClosestValidTime(t)};var getCorrelatedPosition=function(t){var x=plot.timeGeometry.toScreen(t);if(x>=plot.canvas.width){x=plot.canvas.width}if(isNaN(x)||x<0){x=0}return x};var mapPositions=function(pos1,pos2){if(pos1>pos2){plot.leftFlagPos=pos2;plot.rightFlagPos=pos1}else{plot.leftFlagPos=pos1;plot.rightFlagPos=pos2}plot.leftFlagTime=plot.dataSources[0].getClosestValidTime(plot.timeGeometry.fromScreen(plot.leftFlagPos));plot.rightFlagTime=plot.dataSources[0].getClosestValidTime(plot.timeGeometry.fromScreen(plot.rightFlagPos))};var setRangeDivs=function(){plot.leftFlagPole.style.visibility="visible";plot.rightFlagPole.style.visibility="visible";plot.rangeBox.style.visibility="visible";plot.timeplot.placeDiv(plot.leftFlagPole,{left:plot.leftFlagPos,bottom:0,height:plot.canvas.height,display:"block"});plot.timeplot.placeDiv(plot.rightFlagPole,{left:plot.rightFlagPos,bottom:0,height:plot.canvas.height,display:"block"});var boxWidth=plot.rightFlagPos-plot.leftFlagPos;if(plot.popup){plot.popupClickDiv.style.visibility="visible";plot.timeplot.placeDiv(plot.popupClickDiv,{left:plot.leftFlagPos,width:boxWidth+1,height:plot.canvas.height,display:"block"})}plot.timeplot.placeDiv(plot.rangeBox,{left:plot.leftFlagPos,width:boxWidth+1,height:plot.canvas.height,display:"block"});var plots=plot.timeplot._plots;for(i=0;iplot.cancelButton.offsetWidth){plot.cancelButton.style.left=(left+rightPos-plot.cancelButton.offsetWidth)+"px"}else{plot.cancelButton.style.left=(left+rightPos)+"px"}var tW=plot.toolbarAbsoluteDiv.offsetWidth;if(rW>=tW){plot.toolbar.style.left=leftPos+"px";plot.toolbar.style.width=(rW+1)+"px";plot.toolbarAbsoluteDiv.style.left=((rW-tW)/2)+"px"}else{plot.toolbar.style.left=(pL+plot.leftFlagPos*(pW-tW)/(pW-rW))+"px";plot.toolbar.style.width=(tW+2)+"px";plot.toolbarAbsoluteDiv.style.left="0px"}plot.toolbar.style.top=(top+plot.timeplot.getElement().offsetHeight)+"px";plot.toolbar.style.visibility="visible";plot.toolbarAbsoluteDiv.style.visibility="visible"};var getAbsoluteLeft=function(div){var left=0;while(div){left+=div.offsetLeft;div=div.offsetParent}return left};var timeplotLeft=getAbsoluteLeft(plot.timeplot.getElement());var checkPolesForStyle=function(x){if(plot.style=="bars"&&plot.leftFlagTime==plot.rightFlagTime){var index=plot.tds.getSliceIndex(plot.leftFlagTime);var time1=plot.leftFlagTime;var pos1=plot.leftFlagPos;var time2,pos2;if(index==0){time2=plot.tds.getSliceTime(index+1)}else{if(index==plot.tds.getSliceNumber()-1){time2=plot.tds.getSliceTime(index-1)}else{if(x=plot.canvas.width){reset=true;wait=1000}else{reset=false}setTimeout(function(){playIt(start,actual+pixel,reset)},wait)}};var setMultiplier=function(){var rangeWidth=plot.rightFlagPos-plot.leftFlagPos;var toolbarWidth=plot.toolbarAbsoluteDiv.offsetWidth;var plotWidth=plot.canvas.width;if(rangeWidth0){plot.x=Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt,plot.canvas).x);if(plot.status==0){var time=getCorrelatedTime(plot.x);if(plot.leftFlagPos!=null&&plot.popup&&time>=plot.leftFlagTime&&time<=plot.rightFlagTime){var x=plot.leftFlagPos+(plot.rightFlagPos-plot.leftFlagPos)/2;var elements=[];for(var i=0;i2){fs=2}div.style.fontSize=(1+fs)+"em";div.style.textShadow="0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em "+c.hex;if(weight==1){div.innerHTML=weight+" object"}else{div.innerHTML=weight+" objects"}var appendMouseFunctions=function(label,div,color){div.onclick=function(){plot.popup.showLabelContent(label);div.style.textShadow="0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em "+color};div.onmouseover=function(){div.style.textShadow="0 -1px "+color+", 1px 0 "+color+", 0 1px "+color+", -1px 0 "+color};div.onmouseout=function(){div.style.textShadow="0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em "+color}};appendMouseFunctions(label,div,c.hex);labels.push(label)}if(labels.length>0){plot.popup.createPopup(x+20,0,labels)}}else{plot.deselection();plot.status=1;plot.mouseDownTime=time;plot.mouseTempTime=plot.mouseDownTime;plot.mouseDownPos=plot.timeGeometry.toScreen(plot.mouseDownTime);mapPositions(plot.mouseDownPos,plot.mouseDownPos,plot.mouseDownTime,plot.mouseDownTime);document.onmouseup=function(){if(plot.status==1){plot.mouseUpTime=plot.mouseTempTime;plot.mouseUpPos=plot.timeGeometry.toScreen(plot.mouseUpTime);mapPositions(plot.mouseDownPos,plot.mouseUpPos,plot.mouseDownTime,plot.mouseUpTime);checkPolesForStyle(plot.x);setRangeDivs();plot.timeSelection();plot.gui.updateAnimationButtons(1);document.onmouseup=null;plot.status=0}}}}}};var mouseMoveHandler=function(elmt,evt,target){if(plot.dataSources.length>0){plot.x=Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt,plot.canvas).x);if(plot.status==1){plot.mouseTempTime=getCorrelatedTime(plot.x);plot.mouseTempPos=plot.timeGeometry.toScreen(plot.mouseTempTime);mapPositions(plot.mouseDownPos,plot.mouseTempPos,plot.mouseDownTime,plot.mouseTempTime);checkPolesForStyle(plot.x);setRangeDivs()}}};var mouseOutHandler=function(elmt,evt,target){if(plot.dataSources.length>0){var x=Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt,plot.canvas).x);var y=Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt,plot.canvas).y);if(x>plot.canvas.width-2||isNaN(x)||x<2){plot.timeHighlight(true);plot.highlightedSlice=undefined}else{if(y>plot.canvas.height-2||isNaN(y)||y<2){plot.timeHighlight(true);plot.highlightedSlice=undefined}}}};var mouseHoverHandler=function(elmt,evt,target){if(plot.dataSources.length>0){var x=Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt,plot.canvas).x);var time=getCorrelatedTime(x);if(time==undefined){return}var highlightSlice;var slices=plot.tds.timeSlices;var index=plot.tds.getSliceIndex(time);if(plot.style=="graph"){highlightSlice=slices[index]}if(plot.style=="bars"){var pos=plot.timeGeometry.toScreen(time);if(x0){highlightSlice=slices[index-1]}else{highlightSlice=slices[index]}}if(plot.highlightedSlice==undefined||plot.highlightedSlice!=highlightSlice){plot.highlightedSlice=highlightSlice;plot.timeHighlight(false)}}};this.redrawPlot=function(){plot.clearTimeplot();plot.tds.reset(this.timeGeometry);plot.timeplot._prepareCanvas();plot.timeplot.repaint();if(plot.leftFlagPos!=null){plot.leftFlagPos=getCorrelatedPosition(plot.leftFlagTime);plot.rightFlagPos=getCorrelatedPosition(plot.rightFlagTime);setRangeDivs()}else{plot.displayOverlay()}plot.initLabels([]);plot.updateOverview()};this.resetOpacityPlots=function(){var plots=plot.timeplot._plots;for(var i=0;ih){h=height}break}}}ctx.fillStyle="rgb(102,102,102)";ctx.beginPath();ctx.rect(pos-1,this.canvas.height-h,2,h);ctx.fill();for(var j=0;j0){var color=GeoTemConfig.getColor(j);ctx.fillStyle="rgba("+color.r1+","+color.g1+","+color.b1+",0.6)";ctx.beginPath();ctx.arc(pos,this.canvas.height-heights[j],2.5,0,Math.PI*2,true);ctx.closePath();ctx.fill()}}}},highlightChanged:function(timeObjects){if(!GeoTemConfig.highlightEvents){return}this.resetOverlay();if(this.selection.valid()){if(!this.selection.equal(this)){this.tds.setOverlay(GeoTemConfig.mergeObjects(timeObjects,this.selection.getObjects(this)))}else{this.tds.setOverlay(timeObjects)}}else{this.tds.setOverlay(timeObjects)}this.displayOverlay()},selectionChanged:function(selection){if(!GeoTemConfig.selectionEvents){return}this.reset();this.selection=selection;this.tds.setOverlay(selection.objects);this.displayOverlay()},getOverviewLeft:function(time){var w=this.overview.offsetWidth;var s=this.tds.earliest().getTime();var e=this.tds.latest().getTime();var t=time.getTime();return Math.round(w*(t-s)/(e-s))},initOverview:function(){var labels=this.timeGeometry._grid;if(labels.length==0){var plot=this;setTimeout(function(){plot.initOverview()},10);return}this.overview.style.width=this.canvas.width+"px";var left=this.gui.timeplotDiv.offsetLeft;this.overview.innerHTML="";this.overview.style.left=left+"px";this.overviewRange=document.createElement("div");this.overviewRange.setAttribute("class","overviewRange");this.overview.appendChild(this.overviewRange);for(var i=0;i0){this.plotLabels.style.visibility="hidden";this.timeGeometry._hideLabels=false;this.overview.style.visibility="visible";this.shiftLeft.style.visibility="visible";this.shiftRight.style.visibility="visible";var left=this.getOverviewLeft(this.tds.timeSlices[this.tds.leftSlice].date);var right=this.getOverviewLeft(this.tds.timeSlices[this.tds.rightSlice].date);this.overviewRange.style.left=left+"px";this.overviewRange.style.width=(right-left)+"px"}else{this.timeGeometry._hideLabels=true;this.plotLabels.style.visibility="visible";this.overview.style.visibility="hidden";this.shiftLeft.style.visibility="hidden";this.shiftRight.style.visibility="hidden"}},getSlices:function(){return this.tds.timeSlices},timeSelection:function(){var slices=this.tds.timeSlices;var ls,rs;for(var i=0;i=ls&&i<=rs){for(var j in slices[i].stacks){selectedObjects[j]=selectedObjects[j].concat(slices[i].stacks[j].elements)}}}this.selection=new Selection(selectedObjects,this);this.core.triggerSelection(this.selection);this.filterBar.reset(true)},deselection:function(){this.reset();this.selection=new Selection();this.core.triggerSelection(this.selection)},filtering:function(){for(var i=0;i=ls&&i<=rs){continue}for(var j in slices[i].stacks){selectedObjects[j]=selectedObjects[j].concat(slices[i].stacks[j].elements)}}this.selection=new Selection(selectedObjects,this);this.filtering()},timeHighlight:function(undo){if(this.status==0){var s=this.highlightedSlice;var timeObjects=[];for(var i=0;i=this.leftFlagTime&&s.date<=this.rightFlagTime){add=false}if(this.style=="bars"&&s.date>=this.leftFlagTime&&s.date");changeColorShapeSelect.attr("title",GeoTemConfig.getString("colorShapeDatasetHelp"));changeColorShapeSelect.css("font-size","1.5em");var currentOptgroup=$("");var currentOption=$("");var color=GeoTemConfig.getColor(index);currentOption.css("color","rgb("+color.r1+","+color.g1+","+color.b1+")");currentOption.data("color",{r1:color.r1,g1:color.g1,b1:color.b1,r0:color.r0,g0:color.g0,b0:color.b0});if(dataset.graphic.shape=="circle"){currentOption.append("●")}else{if(dataset.graphic.shape=="triangel"){currentOption.append("▲")}else{if(dataset.graphic.shape=="square"){if(dataset.graphic.rotation===0){currentOption.append("■")}else{currentOption.append("◆")}}}}currentOptgroup.append(currentOption);changeColorShapeSelect.append(currentOptgroup);var defaultOptgroup=$("");var defaultOption=$("");var color=GeoTemConfig.colors[index];defaultOption.css("color","rgb("+color.r1+","+color.g1+","+color.b1+")");defaultOption.data("color",{r1:color.r1,g1:color.g1,b1:color.b1,r0:color.r0,g0:color.g0,b0:color.b0});defaultOption.append("●");defaultOptgroup.append(defaultOption);changeColorShapeSelect.append(defaultOptgroup);var shapeOptgroup=$("");shapeOptgroup.append("");shapeOptgroup.append("");shapeOptgroup.append("");shapeOptgroup.append("");changeColorShapeSelect.append(shapeOptgroup);var colorOptgroup=$("");var red=$("");red.data("color",{r1:255,g1:0,b1:0});colorOptgroup.append(red);var green=$("");green.data("color",{r1:0,g1:255,b1:0});colorOptgroup.append(green);var blue=$("");blue.data("color",{r1:0,g1:0,b1:255});colorOptgroup.append(blue);var yellow=$("");yellow.data("color",{r1:255,g1:255,b1:0});colorOptgroup.append(yellow);changeColorShapeSelect.append(colorOptgroup);changeColorShapeSelect.change($.proxy(function(e){var selected=changeColorShapeSelect.find("option:selected");function shadeRGBColor(color,percent){var f=color.split(","),t=percent<0?0:255,p=percent<0?percent*-1:percent,R=parseInt(f[0].slice(4)),G=parseInt(f[1]),B=parseInt(f[2]);return"rgb("+(Math.round((t-R)*p)+R)+","+(Math.round((t-G)*p)+G)+","+(Math.round((t-B)*p)+B)+")"}var color=selected.data("color");if(typeof color!=="undefined"){if((typeof color.r0==="undefined")||(typeof color.g0==="undefined")||(typeof color.b0==="undefined")){var shadedrgb=shadeRGBColor("rgb("+color.r1+","+color.g1+","+color.b1+")",0.7);shadedrgb=shadedrgb.replace("rgb(","").replace(")","");shadedrgb=shadedrgb.split(",");color.r0=parseInt(shadedrgb[0]);color.g0=parseInt(shadedrgb[1]);color.b0=parseInt(shadedrgb[2])}}var shapeText=selected.text();var graphic;if((shapeText=="■")||(shapeText=="□")){graphic={shape:"square",rotation:0}}else{if((shapeText=="●")||(shapeText=="○")){graphic={shape:"circle",rotation:0}}else{if((shapeText=="◆")||(shapeText=="◇")){graphic={shape:"square",rotation:45}}else{if((shapeText=="▲")||(shapeText=="△")){graphic={shape:"triangle",rotation:0}}}}}if(shapeOptgroup.has(selected).length>0){dataset.graphic=graphic}else{if(colorOptgroup.has(selected).length>0){dataset.color=color}else{dataset.graphic=graphic;dataset.color=color}}Publisher.Publish("filterData",GeoTemConfig.datasets,null);e.stopPropagation();return(false)},{index:index}));$(tableTabTableRow).append($(document.createElement("td")).append(changeColorShapeSelect))}return tableTab};tableWidget.addTab=addTab;for(var i in data){this.tableHash.push([]);var tableTab=addTab(data[i].label,i);this.gui.tabs.appendChild(tableTab);this.tableTabs.push(tableTab);var elements=[];for(var j in data[i].objects){elements.push(new TableElement(data[i].objects[j]));this.tableHash[i][data[i].objects[j].index]=elements[elements.length-1]}var table=new Table(elements,this,i);this.tables.push(table);this.tableElements.push(elements)}if(data.length>0){this.selectTable(0)}},getHeight:function(){if(this.options.tableHeight){return this.gui.tableContainer.offsetHeight-this.gui.tabs.offsetHeight}return false},selectTable:function(index){if(this.activeTable!=index){if(typeof this.activeTable!="undefined"){this.tables[this.activeTable].hide();var c=GeoTemConfig.getColor(this.activeTable);this.tableTabs[this.activeTable].style.backgroundColor="rgb("+c.r0+","+c.g0+","+c.b0+")"}this.activeTable=index;this.tables[this.activeTable].show();var c=GeoTemConfig.getColor(this.activeTable);this.tableTabs[this.activeTable].style.backgroundColor="rgb("+c.r1+","+c.g1+","+c.b1+")";this.core.triggerRise(index)}},highlightChanged:function(objects){if(!GeoTemConfig.highlightEvents||(typeof this.tables[this.activeTable]==="undefined")){return}if(this.tables.length>0){return}for(var i=0;i0){this.tables[this.activeTable].resetElements();this.tables[this.activeTable].reset();this.tables[this.activeTable].update()}}};function Table(elements,parent,id){this.elements=elements;this.showElementsLength=elements.length;this.parent=parent;this.id=id;this.options=parent.options;this.validResultsPerPage=[10,20,50,100];this.keyHeaderList=[];this.initialize()}Table.prototype={initToolbar:function(){var table=this;this.toolbar=document.createElement("table");this.toolbar.setAttribute("class","ddbToolbar");this.toolbar.style.overflow="auto";this.tableDiv.appendChild(this.toolbar);var navigation=document.createElement("tr");this.toolbar.appendChild(navigation);var selectors=document.createElement("td");navigation.appendChild(selectors);if(table.options.tableSelectPage){var selectPageItems=true;this.selectPage=document.createElement("div");$(this.selectPage).css("float","left");this.selectPage.setAttribute("class","smallButton selectPage");this.selectPage.title=GeoTemConfig.getString("selectTablePageItemsHelp");selectors.appendChild(this.selectPage);this.selectPage.onclick=function(){selectPageItems=!selectPageItems;if(selectPageItems){var items=0;for(var i=table.first;i0){table.page--;table.update()}};this.pageInfo=document.createElement("div");this.pageInfo.setAttribute("class","pageInfo");pagination.appendChild(this.pageInfo);this.nextPage=document.createElement("div");this.nextPage.setAttribute("class","paginationButton");this.nextPage.title=GeoTemConfig.getString("paginationNextPageHelp");pagination.appendChild(this.nextPage);this.nextPage.onclick=function(){if(table.page0){table.page--;table.update()}};this.bottomFirstPage=document.createElement("div");this.bottomFirstPage.setAttribute("class","paginationButton");this.bottomFirstPage.title=GeoTemConfig.getString("paginationFirsPageHelp");$(this.bottomFirstPage).css("float","right");bottomPagination.appendChild(this.bottomFirstPage);this.bottomFirstPage.onclick=function(){if(table.page!=0){table.page=0;table.update()}};if(typeof(this.elements[0])=="undefined"){return}var ascButtons=[];var descButtons=[];var clearButtons=function(){for(var i in ascButtons){ascButtons[i].setAttribute("class","sort sortAscDeactive")}for(var i in descButtons){descButtons[i].setAttribute("class","sort sortDescDeactive")}};var addSortButton=function(key){table.keyHeaderList.push(key);var cell=document.createElement("th");table.elementListHeader.appendChild(cell);var sortAsc=document.createElement("div");var sortDesc=document.createElement("div");var span=document.createElement("div");span.setAttribute("class","headerLabel");span.innerHTML=key;cell.appendChild(sortDesc);cell.appendChild(span);cell.appendChild(sortAsc);sortAsc.setAttribute("class","sort sortAscDeactive");sortAsc.title=GeoTemConfig.getString("sortAZHelp");sortDesc.setAttribute("class","sort sortDescDeactive");sortDesc.title=GeoTemConfig.getString("sortZAHelp");ascButtons.push(sortAsc);descButtons.push(sortDesc);sortAsc.onclick=function(){clearButtons();sortAsc.setAttribute("class","sort sortAscActive");table.sortAscending(key);table.update()};sortDesc.onclick=function(){clearButtons();sortDesc.setAttribute("class","sort sortDescActive");table.sortDescending(key);table.update()}};for(var key in this.elements[0].object.tableContent){addSortButton(key)}},sortAscending:function(key){var sortFunction=function(e1,e2){if(e1.object.tableContent[key]e2.object.tableContent[key]){return -1}return 1};this.elements.sort(sortFunction)},selectByText:function(text){$(this.elements).each(function(){this.selected=false});var selectedCount=0;$(this.elements).filter(function(index){return this.object.contains(text)}).each(function(){this.selected=true;selectedCount++});this.showSelectedItems=true;this.showElementsLength=selectedCount;this.showSelected.setAttribute("class","smallButton showAll");this.update();this.parent.tableSelection()},setPagesText:function(){var infoText=GeoTemConfig.getString("pageInfo");infoText=infoText.replace("PAGES_ID",this.pages);infoText=infoText.replace("PAGE_ID",this.page+1);this.pageInfo.innerHTML=infoText;this.bottomPageInfo.innerHTML=infoText},setResultsText:function(){if(this.elements.length==0){this.resultsInfo.innerHTML="0 Results"}else{var infoText=GeoTemConfig.getString("resultsInfo");var first=this.page*this.resultsPerPage+1;var last=(this.page+1==this.pages)?this.showElementsLength:first+this.resultsPerPage-1;infoText=infoText.replace("RESULTS_FROM_ID",first);infoText=infoText.replace("RESULTS_TO_ID",last);infoText=infoText.replace("RESULTS_ID",this.showElementsLength);this.resultsInfo.innerHTML=infoText}},updateIndices:function(rpp){if(typeof this.resultsPerPage=="undefined"){this.page=0;this.resultsPerPage=0}var index=this.page*this.resultsPerPage;this.resultsPerPage=rpp;if(this.showSelectedItems){index=0}this.pages=Math.floor(this.showElementsLength/this.resultsPerPage);if(this.showElementsLength%this.resultsPerPage!=0){this.pages++}this.page=Math.floor(index/this.resultsPerPage)},update:function(){var table=this;$(this.elementList).find("tr:gt(0)").remove();if(this.page==0){this.previousPage.setAttribute("class","paginationButton previousPageDisabled");this.firstPage.setAttribute("class","paginationButton firstPageDisabled");this.bottomPreviousPage.setAttribute("class","paginationButton previousPageDisabled");this.bottomFirstPage.setAttribute("class","paginationButton firstPageDisabled")}else{this.previousPage.setAttribute("class","paginationButton previousPageEnabled");this.firstPage.setAttribute("class","paginationButton firstPageEnabled");this.bottomPreviousPage.setAttribute("class","paginationButton previousPageEnabled");this.bottomFirstPage.setAttribute("class","paginationButton firstPageEnabled")}if(this.page==this.pages-1){this.nextPage.setAttribute("class","paginationButton nextPageDisabled");this.lastPage.setAttribute("class","paginationButton lastPageDisabled");this.bottomNextPage.setAttribute("class","paginationButton nextPageDisabled");this.bottomLastPage.setAttribute("class","paginationButton lastPageDisabled")}else{this.nextPage.setAttribute("class","paginationButton nextPageEnabled");this.lastPage.setAttribute("class","paginationButton lastPageEnabled");this.bottomNextPage.setAttribute("class","paginationButton nextPageEnabled");this.bottomLastPage.setAttribute("class","paginationButton lastPageEnabled")}this.setPagesText();this.setResultsText();if(this.showSelectedItems){var start=this.page*this.resultsPerPage;var items=0;for(var i=0;i").appendTo(this.elementList);if(GeoTemConfig.allowFilter){var checkColumn=$("").appendTo(itemRow);var checkbox=$("").appendTo(checkColumn);$(checkbox).attr("checked",e.selected)}var makeSubtext=function(cell,text){var subtext=text.substring(0,table.options.tableContentOffset);subtext=subtext.substring(0,subtext.lastIndexOf(" "));subtext+=" ... ";var textDiv=$("
").appendTo(cell);$(textDiv).html(subtext);var show=false;var fullDiv=$("").appendTo(cell);$(fullDiv).click(function(){show=!show;if(show){$(textDiv).html(text);$(fullDiv).html('<<')}else{$(textDiv).html(subtext);$(fullDiv).html('>>')}})};for(var k=0;k").appendTo(itemRow);if(typeof table.options.verticalAlign!=="undefined"){if(table.options.verticalAlign==="top"){$(cell).attr("valign","top")}else{if(table.options.verticalAlign==="center"){$(cell).attr("valign","center")}else{if(table.options.verticalAlign==="bottom"){$(cell).attr("valign","bottom")}}}}if(table.options.tableContentOffset&&text.length1){fileName=fileName.substr(fileName.lastIndexOf("/")+1)}else{fileName="unnamed dataset"}}return fileName},distributeDataset:function(dataSet){GeoTemConfig.addDataset(dataSet)},distributeDatasets:function(datasets){GeoTemConfig.addDatasets(datasets)},addStaticLoader:function(){if(this.options.staticKML.length>0){$(this.parent.gui.loaderTypeSelect).append("");this.StaticLoaderTab=document.createElement("div");$(this.StaticLoaderTab).attr("id","StaticLoader");this.staticKMLList=document.createElement("select");$(this.StaticLoaderTab).append(this.staticKMLList);var staticKMLList=this.staticKMLList;var isFirstHeader=true;$(this.options.staticKML).each(function(){var label=this.label;var url=this.url;var header=this.header;if(typeof header!=="undefined"){if(!isFirstHeader){$(staticKMLList).append("")}$(staticKMLList).append("");isFirstHeader=false}else{$(staticKMLList).append("")}});if(!isFirstHeader){$(staticKMLList).append("")}this.loadStaticKMLButton=document.createElement("button");$(this.loadStaticKMLButton).text("load");$(this.StaticLoaderTab).append(this.loadStaticKMLButton);$(this.loadStaticKMLButton).click($.proxy(function(){var kmlURL=$(this.staticKMLList).find(":selected").attr("value");if(kmlURL.length===0){return}var origURL=kmlURL;var fileName=this.getFileName(kmlURL);if(typeof GeoTemConfig.proxy!="undefined"){kmlURL=GeoTemConfig.proxy+kmlURL}var kml=GeoTemConfig.getKml(kmlURL);if((typeof kml!=="undefined")&&(kml!=null)){var dataSet=new Dataset(GeoTemConfig.loadKml(kml),fileName,origURL);if(dataSet!=null){this.distributeDataset(dataSet)}}else{alert("Could not load file.")}},this));$(this.parent.gui.loaders).append(this.StaticLoaderTab)}},addKMLLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.KMLLoaderTab=document.createElement("div");$(this.KMLLoaderTab).attr("id","KMLLoader");this.kmlURL=document.createElement("input");$(this.kmlURL).attr("type","text");$(this.KMLLoaderTab).append(this.kmlURL);this.loadKMLButton=document.createElement("button");$(this.loadKMLButton).text("load KML");$(this.KMLLoaderTab).append(this.loadKMLButton);$(this.loadKMLButton).click($.proxy(function(){var kmlURL=$(this.kmlURL).val();if(kmlURL.length===0){return}var origURL=kmlURL;var fileName=this.getFileName(kmlURL);if(typeof GeoTemConfig.proxy!="undefined"){kmlURL=GeoTemConfig.proxy+kmlURL}var kml=GeoTemConfig.getKml(kmlURL);if((typeof kml!=="undefined")&&(kml!=null)){var dataSet=new Dataset(GeoTemConfig.loadKml(kml),fileName,origURL);if(dataSet!=null){this.distributeDataset(dataSet)}}else{alert("Could not load file.")}},this));$(this.parent.gui.loaders).append(this.KMLLoaderTab)},addKMZLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.KMZLoaderTab=document.createElement("div");$(this.KMZLoaderTab).attr("id","KMZLoader");this.kmzURL=document.createElement("input");$(this.kmzURL).attr("type","text");$(this.KMZLoaderTab).append(this.kmzURL);this.loadKMZButton=document.createElement("button");$(this.loadKMZButton).text("load KMZ");$(this.KMZLoaderTab).append(this.loadKMZButton);$(this.loadKMZButton).click($.proxy(function(){var dataLoader=this;var kmzURL=$(this.kmzURL).val();if(kmzURL.length===0){return}var origURL=kmzURL;var fileName=dataLoader.getFileName(kmzURL);if(typeof GeoTemConfig.proxy!="undefined"){kmzURL=GeoTemConfig.proxy+kmzURL}GeoTemConfig.getKmz(kmzURL,function(kmlArray){$(kmlArray).each(function(){var dataSet=new Dataset(GeoTemConfig.loadKml(this),fileName,origURL);if(dataSet!=null){dataLoader.distributeDataset(dataSet)}})})},this));$(this.parent.gui.loaders).append(this.KMZLoaderTab)},addCSVLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.CSVLoaderTab=document.createElement("div");$(this.CSVLoaderTab).attr("id","CSVLoader");this.csvURL=document.createElement("input");$(this.csvURL).attr("type","text");$(this.CSVLoaderTab).append(this.csvURL);this.loadCSVButton=document.createElement("button");$(this.loadCSVButton).text("load CSV");$(this.CSVLoaderTab).append(this.loadCSVButton);$(this.loadCSVButton).click($.proxy(function(){var dataLoader=this;var csvURL=$(this.csvURL).val();if(csvURL.length===0){return}var origURL=csvURL;var fileName=dataLoader.getFileName(csvURL);if(typeof GeoTemConfig.proxy!="undefined"){csvURL=GeoTemConfig.proxy+csvURL}GeoTemConfig.getCsv(csvURL,function(json){if((typeof json!=="undefined")&&(json.length>0)){var dataSet=new Dataset(GeoTemConfig.loadJson(json),fileName,origURL);if(dataSet!=null){dataLoader.distributeDataset(dataSet)}}else{alert("Could not load file.")}})},this));$(this.parent.gui.loaders).append(this.CSVLoaderTab)},addLocalKMLLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.localKMLLoaderTab=document.createElement("div");$(this.localKMLLoaderTab).attr("id","LocalKMLLoader");this.kmlFile=document.createElement("input");$(this.kmlFile).attr("type","file");$(this.localKMLLoaderTab).append(this.kmlFile);this.loadLocalKMLButton=document.createElement("button");$(this.loadLocalKMLButton).text("load KML");$(this.localKMLLoaderTab).append(this.loadLocalKMLButton);$(this.loadLocalKMLButton).click($.proxy(function(){var filelist=$(this.kmlFile).get(0).files;if(filelist.length>0){var file=filelist[0];var fileName=file.name;var reader=new FileReader();reader.onloadend=($.proxy(function(theFile){return function(e){var dataSet=new Dataset(GeoTemConfig.loadKml($.parseXML(reader.result)),fileName);if(dataSet!=null){this.distributeDataset(dataSet)}}}(file),this));reader.readAsText(file)}},this));$(this.parent.gui.loaders).append(this.localKMLLoaderTab)},addLocalCSVLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.localCSVLoaderTab=document.createElement("div");$(this.localCSVLoaderTab).attr("id","LocalCSVLoader");this.csvFile=document.createElement("input");$(this.csvFile).attr("type","file");$(this.localCSVLoaderTab).append(this.csvFile);this.loadLocalCSVButton=document.createElement("button");$(this.loadLocalCSVButton).text("load CSV");$(this.localCSVLoaderTab).append(this.loadLocalCSVButton);$(this.loadLocalCSVButton).click($.proxy(function(){var filelist=$(this.csvFile).get(0).files;if(filelist.length>0){var file=filelist[0];var fileName=file.name;var reader=new FileReader();reader.onloadend=($.proxy(function(theFile){return function(e){var json=GeoTemConfig.convertCsv(reader.result);var dataSet=new Dataset(GeoTemConfig.loadJson(json),fileName);if(dataSet!=null){this.distributeDataset(dataSet)}}}(file),this));reader.readAsText(file)}},this));$(this.parent.gui.loaders).append(this.localCSVLoaderTab)},addLocalStorageLoader:function(){var dataLoader=this;this.localStorageLoaderTab=document.createElement("div");$(this.localStorageLoaderTab).attr("id","LocalStorageLoader");var localDatasets=document.createElement("select");$(this.localStorageLoaderTab).append(localDatasets);var localStorageDatasetCount=0;for(var key in localStorage){if(key.startsWith("GeoBrowser_dataset_")){localStorageDatasetCount++;var label=key.substring("GeoBrowser_dataset_".length);var url=key;$(localDatasets).append("")}}if(localStorageDatasetCount>0){$(this.parent.gui.loaderTypeSelect).append("")}this.loadLocalStorageButton=document.createElement("button");$(this.loadLocalStorageButton).text("load");$(this.localStorageLoaderTab).append(this.loadLocalStorageButton);$(this.loadLocalStorageButton).click($.proxy(function(){var fileKey=$(localDatasets).find(":selected").attr("value");if(fileKey.length===0){return}var csv=$.remember({name:fileKey});var fileName=decodeURIComponent(fileKey.substring("GeoBrowser_dataset_".length));var json=GeoTemConfig.convertCsv(csv);var dataSet=new Dataset(GeoTemConfig.loadJson(json),fileName,fileKey,"local");if(dataSet!=null){dataLoader.distributeDataset(dataSet)}},this));$(this.parent.gui.loaders).append(this.localStorageLoaderTab)},addLocalXLSXLoader:function(){var fixdata=function(data){var o="",l=0,w=10240;for(;llocal XLS/XLSX File");this.LocalXLSXLoader=document.createElement("div");$(this.LocalXLSXLoader).attr("id","LocalXLSXLoader");this.xlsxFile=document.createElement("input");$(this.xlsxFile).attr("type","file");$(this.LocalXLSXLoader).append(this.xlsxFile);this.loadLocalXLSXButton=document.createElement("button");$(this.loadLocalXLSXButton).text("load XLS/XLSX");$(this.LocalXLSXLoader).append(this.loadLocalXLSXButton);$(this.loadLocalXLSXButton).click($.proxy(function(){var filelist=$(this.xlsxFile).get(0).files;if(filelist.length>0){var file=filelist[0];var fileName=file.name;var reader=new FileReader();reader.onloadend=($.proxy(function(theFile){return function(e){var workbook;var json;if(fileName.toLowerCase().indexOf("xlsx")!=-1){workbook=XLSX.read(btoa(fixdata(reader.result)),{type:"base64"});var csv=XLSX.utils.sheet_to_csv(workbook.Sheets[workbook.SheetNames[0]]);var json=GeoTemConfig.convertCsv(csv)}else{workbook=XLS.read(btoa(fixdata(reader.result)),{type:"base64"});var csv=XLS.utils.sheet_to_csv(workbook.Sheets[workbook.SheetNames[0]]);var json=GeoTemConfig.convertCsv(csv)}var dataSet=new Dataset(GeoTemConfig.loadJson(json),fileName);if(dataSet!=null){this.distributeDataset(dataSet)}}}(file),this));reader.readAsArrayBuffer(file)}},this));$(this.parent.gui.loaders).append(this.LocalXLSXLoader)},};function DataloaderConfig(options){this.options={staticKML:[]};if(typeof options!="undefined"){$.extend(this.options,options)}}function DataloaderGui(dataloader,div,options){var dataloaderGui=this;this.dataloaderContainer=div;this.dataloaderContainer.style.position="relative";this.loaderTypeSelect=document.createElement("select");div.appendChild(this.loaderTypeSelect);this.loaders=document.createElement("div");div.appendChild(this.loaders);$(this.loaderTypeSelect).change(function(){var activeLoader=$(this).val();$(dataloaderGui.loaders).find("div").each(function(){if($(this).attr("id")==activeLoader){$(this).show()}else{$(this).hide()}})})}DataloaderWidget=function(core,div,options){this.core=core;this.core.setWidget(this);this.options=(new DataloaderConfig(options)).options;this.gui=new DataloaderGui(this,div,this.options);this.dataLoader=new Dataloader(this);this.datasets=[]};DataloaderWidget.prototype={initWidget:function(){var dataloaderWidget=this},highlightChanged:function(objects){if(!GeoTemConfig.highlightEvents){return}},selectionChanged:function(selection){if(!GeoTemConfig.selectionEvents){return}},triggerHighlight:function(item){},tableSelection:function(){},deselection:function(){},filtering:function(){},inverseFiltering:function(){},triggerRefining:function(){},reset:function(){},loadRenames:function(){var dataLoaderWidget=this;var datasets=dataLoaderWidget.datasets;$.each($.url().param(),function(paramName,paramValue){if(paramName.toLowerCase().startsWith("rename")){var datasetID=parseInt(paramName.replace(/\D/g,""));var dataset;if(isNaN(datasetID)){var dataset;for(datasetID in datasets){break}}dataset=datasets[datasetID];if(typeof dataset==="undefined"){return}var renameFunc=function(index,latAttr,lonAttr,placeAttr,dateAttr,timespanBeginAttr,timespanEndAttr,indexAttr){var renameArray=[];if(typeof index==="undefined"){index=0}if((typeof latAttr!=="undefined")&&(typeof lonAttr!=="undefined")){renameArray.push({oldColumn:latAttr,newColumn:"locations["+index+"].latitude"});renameArray.push({oldColumn:lonAttr,newColumn:"locations["+index+"].longitude"})}if(typeof placeAttr!=="undefined"){renameArray.push({oldColumn:placeAttr,newColumn:"locations["+index+"].place"})}if(typeof dateAttr!=="undefined"){renameArray.push({oldColumn:dateAttr,newColumn:"dates["+index+"]"})}if((typeof timespanBeginAttr!=="undefined")&&(typeof timespanEndAttr!=="undefined")){renameArray.push({oldColumn:timespanBeginAttr,newColumn:"tableContent[TimeSpan:begin]"});renameArray.push({oldColumn:timespanEndAttr,newColumn:"tableContent[TimeSpan:end]"})}if(typeof indexAttr!=="undefined"){renameArray.push({oldColumn:indexAttr,newColumn:"index"})}GeoTemConfig.renameColumns(dataset,renameArray)};var renames=JSON.parse(paramValue);if(renames instanceof Array){for(var i=0;idatasetID){if(typeof datasets[datasetID].color==="undefined"){var color=new Object();var colorsSelectedUnselected=paramValue.split(",");if(colorsSelectedUnselected.length>2){return}var color1=colorsSelectedUnselected[0];if(color1.length!=6){return}color.r1=parseInt(color1.substr(0,2),16);color.g1=parseInt(color1.substr(2,2),16);color.b1=parseInt(color1.substr(4,2),16);if(colorsSelectedUnselected.length==2){var color0=colorsSelectedUnselected[1];if(color0.length!=6){return}color.r0=parseInt(color0.substr(0,2),16);color.g0=parseInt(color0.substr(2,2),16);color.b0=parseInt(color0.substr(4,2),16)}else{color.r0=Math.round(color.r1/2);color.g0=Math.round(color.g1/2);color.b0=Math.round(color.b1/2)}datasets[datasetID].color=color}}}})},loadFromURL:function(){var dataLoaderWidget=this;dataLoaderWidget.datasets=[];var datasets=dataLoaderWidget.datasets;var parametersHash=$.url().param();var parametersArray=[];$.each(parametersHash,function(paramName,paramValue){parametersArray.push({paramName:paramName,paramValue:paramValue})});var parseParam=function(paramNr){if(paramNr==parametersArray.length){dataLoaderWidget.loadRenames();dataLoaderWidget.loadFilters();dataLoaderWidget.loadColors();var tempDatasets=[];for(var index in datasets){if(datasets[index] instanceof Dataset){tempDatasets.push(datasets[index])}}datasets=tempDatasets;if(datasets.length>0){dataLoaderWidget.dataLoader.distributeDatasets(datasets)}return}var paramName=parametersArray[paramNr].paramName;var paramValue=parametersArray[paramNr].paramValue;var datasetID=parseInt(paramName.replace(/\D/g,""));var fileName=dataLoaderWidget.dataLoader.getFileName(paramValue);var origURL=paramValue;if(typeof GeoTemConfig.proxy!="undefined"){paramValue=GeoTemConfig.proxy+paramValue}if(paramName.toLowerCase().startsWith("kml")){GeoTemConfig.getKml(paramValue,function(kmlDoc){var dataSet=new Dataset(GeoTemConfig.loadKml(kmlDoc),fileName,origURL);if(dataSet!=null){if(!isNaN(datasetID)){datasets[datasetID]=dataSet}else{datasets.push(dataSet)}}setTimeout(function(){parseParam(paramNr+1)},1)})}else{if(paramName.toLowerCase().startsWith("csv")){GeoTemConfig.getCsv(paramValue,function(json){var dataSet=new Dataset(GeoTemConfig.loadJson(json),fileName,origURL);if(dataSet!=null){if(!isNaN(datasetID)){datasets[datasetID]=dataSet}else{datasets.push(dataSet)}}setTimeout(function(){parseParam(paramNr+1)},1)})}else{if(paramName.toLowerCase().startsWith("json")){GeoTemConfig.getJson(paramValue,function(json){var dataSet=new Dataset(GeoTemConfig.loadJson(json),fileName,origURL);if(dataSet!=null){if(!isNaN(datasetID)){datasets[datasetID]=dataSet}else{datasets.push(dataSet)}}setTimeout(function(){parseParam(paramNr+1)},1)})}else{if(paramName.toLowerCase().startsWith("local")){var csv=$.remember({name:encodeURIComponent(origURL)});var fileName=origURL.substring("GeoBrowser_dataset_".length);var json=GeoTemConfig.convertCsv(csv);var dataSet=new Dataset(GeoTemConfig.loadJson(json),fileName,origURL,"local");if(dataSet!=null){if(!isNaN(datasetID)){datasets[datasetID]=dataSet}else{datasets.push(dataSet)}}setTimeout(function(){parseParam(paramNr+1)},1)}else{if(paramName.toLowerCase().startsWith("xls")){GeoTemConfig.getBinary(paramValue,function(binaryData){var data=new Uint8Array(binaryData);var arr=new Array();for(var i=0;i!=data.length;++i){arr[i]=String.fromCharCode(data[i])}var workbook;var json;if(paramName.toLowerCase().startsWith("xlsx")){workbook=XLSX.read(arr.join(""),{type:"binary"});var csv=XLSX.utils.sheet_to_csv(workbook.Sheets[workbook.SheetNames[0]]);var json=GeoTemConfig.convertCsv(csv)}else{workbook=XLS.read(arr.join(""),{type:"binary"});var csv=XLS.utils.sheet_to_csv(workbook.Sheets[workbook.SheetNames[0]]);var json=GeoTemConfig.convertCsv(csv)}var dataSet=new Dataset(GeoTemConfig.loadJson(json),fileName,origURL);if(dataSet!=null){if(!isNaN(datasetID)){datasets[datasetID]=dataSet}else{datasets.push(dataSet)}}setTimeout(function(){parseParam(paramNr+1)},1)})}else{setTimeout(function(){parseParam(paramNr+1)},1)}}}}}};if(parametersArray.length>0){parseParam(0)}}};function FuzzyTimelineConfig(options){this.options={maxBars:50,maxDensityTicks:150,timelineMode:"stacking",showRangePiechart:false,backgroundColor:"#EEEEEE",showYAxis:true,showAllPossibleSpans:true,};if(typeof options!="undefined"){$.extend(this.options,options)}}function FuzzyTimelineDensity(parent,div){this.index;this.fuzzyTimeline=this;this.singleTickWidth;this.singleTickCenter=function(){return this.singleTickWidth/2};this.datasetsPlot;this.datasetsHash;this.highlightedDatasetsPlot;this.yValMin;this.yValMax;this.displayType;this.selected=undefined;this.highlighted;this.parent=parent;this.div=div;this.options=parent.options;this.plot;this.maxTickCount=this.options.maxDensityTicks;this.datasets}FuzzyTimelineDensity.prototype={initialize:function(datasets){var density=this;density.datasets=datasets;density.selected=[]},createPlot:function(data){density=this;var chartData=[];chartData.push([density.parent.overallMin,0]);$.each(data,function(name,val){var tickCenterTime=density.parent.overallMin+name*density.singleTickWidth+density.singleTickCenter();var dateObj=moment(tickCenterTime);chartData.push([dateObj,val])});var maxPlotedDate=chartData[chartData.length-1][0];if(density.parent.overallMax>maxPlotedDate){chartData.push([density.parent.overallMax,0])}else{chartData.push([maxPlotedDate+1,0])}return chartData},createUDData:function(datasets){var density=this;var plots=[];var objectHashes=[];$(datasets).each(function(){var chartDataCounter=new Object();var objectHash=new Object();for(var i=0;i0){plots.push(udChartData)}objectHashes.push(objectHash)});return{plots:plots,hashs:objectHashes}},showPlot:function(){var density=this;var plot=density.datasetsPlot;var highlight_select_plot=$.merge([],plot);if(density.highlightedDatasetsPlot instanceof Array){if(plot===density.datasetsPlot){highlight_select_plot=$.merge(highlight_select_plot,density.highlightedDatasetsPlot)}}var axisFormatString="%Y";var tooltipFormatString="YYYY";if(density.singleTickWidth<60*1000){axisFormatString="%Y/%m/%d %H:%M:%S";tooltipFormatString="YYYY/MM/DD HH:mm:ss"}else{if(density.singleTickWidth<60*60*1000){axisFormatString="%Y/%m/%d %H:%M";tooltipFormatString="YYYY/MM/DD HH:mm"}else{if(density.singleTickWidth<24*60*60*1000){axisFormatString="%Y/%m/%d %H";tooltipFormatString="YYYY/MM/DD HH"}else{if(density.singleTickWidth<31*24*60*60*1000){axisFormatString="%Y/%m/%d";tooltipFormatString="YYYY/MM/DD"}else{if(density.singleTickWidth<12*31*24*60*60*1000){axisFormatString="%Y/%m";tooltipFormatString="YYYY/MM"}}}}}function shadeRGBColor(color,percent){var f=color.split(","),t=percent<0?0:255,p=percent<0?percent*-1:percent,R=parseInt(f[0].slice(4)),G=parseInt(f[1]),B=parseInt(f[2]);return"rgb("+(Math.round((t-R)*p)+R)+","+(Math.round((t-G)*p)+G)+","+(Math.round((t-B)*p)+B)+")"}var drawLines=function(plot,ctx){var data=plot.getData();var axes=plot.getAxes();var offset=plot.getPlotOffset();for(var i=0;iGeoTemConfig.datasets.length){color="rgb("+datasetColors.r0+","+datasetColors.g0+","+datasetColors.b0+")"}else{color="rgb("+datasetColors.r1+","+datasetColors.g1+","+datasetColors.b1+")"}}else{var datasetColors=GeoTemConfig.getColor(i-GeoTemConfig.datasets.length);color="rgb("+datasetColors.r1+","+datasetColors.g1+","+datasetColors.b1+")"}highlight_select_plot_colors.push({color:color,data:this});i++});density.plot=$.plot($(density.div),highlight_select_plot_colors,options);density.parent.drawHandles();var rangeBars=density.parent.rangeBars;if(typeof rangeBars!=="undefined"){$(density.div).unbind("plothover",rangeBars.hoverFunction)}$(density.div).unbind("plothover",density.hoverFunction);$(density.div).bind("plothover",density.hoverFunction);density.wasSelection=false;$(density.div).unbind("plotclick");$(density.div).bind("plotclick",density.clickFunction);$(density.div).unbind("plotselected");$(density.div).bind("plotselected",density.selectFuntion)},hoverFunction:function(event,pos,item){var hoverPoint;if((item)&&(item.datapoint[1]!=0)){hoverPoint=item.dataIndex-1}if(density.highlighted!==hoverPoint){density.highlighted=hoverPoint;density.triggerHighlight(hoverPoint)}},clickFunction:function(event,pos,item){if(density.wasSelection){density.wasSelection=false}else{density.parent.clearHandles();var selectPoint;if((item)&&(item.datapoint[1]!=0)){selectPoint=item.dataIndex-1}density.triggerSelection(selectPoint)}},selectFuntion:function(event,ranges){var spanArray=density.parent.getSpanArray(density.singleTickWidth);var startSpan,endSpan;for(var i=0;idensity.maxTickCount)){density.tickCount=density.maxTickCount;density.singleTickWidth=(density.parent.overallMax-density.parent.overallMin)/density.tickCount;if(density.singleTickWidth===0){density.singleTickWidth=1}}var hashAndPlot=density.createUDData(datasets);density.datasetsPlot=hashAndPlot.plots;density.datasetsHash=hashAndPlot.hashs;density.yValMin=0;density.yValMax=0;density.combinedDatasetsPlot=[];for(var i=0;idensity.yValMax){density.yValMax=val}}}density.showPlot()},triggerHighlight:function(hoverPoint){var density=this;var highlightedObjects=[];if(typeof hoverPoint!=="undefined"){$(density.datasetsHash).each(function(){if(typeof this[hoverPoint]!=="undefined"){highlightedObjects.push(this[hoverPoint])}else{highlightedObjects.push([])}})}else{for(var i=0;i0)){emptyHighlight=false;return false}});if(emptyHighlight&&(typeof density.selected==="undefined")){density.highlightedDatasetsPlot=[]}else{density.highlightedDatasetsPlot=density.createUDData(selected_highlighted).plots}density.showPlot()},selectionChanged:function(objects){if(!GeoTemConfig.selectionEvents){return}var density=this;density.selected=objects;density.highlightChanged([])},deselection:function(){},filtering:function(){},inverseFiltering:function(){},triggerRefining:function(){},reset:function(){},show:function(){},hide:function(){}};function FuzzyTimelineGui(fuzzyTimelineWidget,div,options){this.parent=fuzzyTimelineWidget;var fuzzyTimelineGui=this;this.fuzzyTimelineContainer=div;if($(this.fuzzyTimelineContainer).height()===0){$(this.fuzzyTimelineContainer).height($(this.fuzzyTimelineContainer).width()*9/32)}this.sliderTable=document.createElement("table");$(this.sliderTable).addClass("ddbToolbar");$(this.sliderTable).width("100%");$(this.sliderTable).height("49px");div.appendChild(this.sliderTable);this.plotDIVHeight=$(this.fuzzyTimelineContainer).height()-$(this.sliderTable).height();var plotScrollContainer=$("
");plotScrollContainer.css("overflow-x","auto");plotScrollContainer.css("overflow-y","hidden");plotScrollContainer.width("100%");plotScrollContainer.height(this.plotDIVHeight);$(div).append(plotScrollContainer);this.plotDiv=document.createElement("div");$(this.plotDiv).width("100%");$(this.plotDiv).height(this.plotDIVHeight);plotScrollContainer.append(this.plotDiv);if(this.parent.options.showRangePiechart){this.rangePiechartDiv=document.createElement("div");$(this.rangePiechartDiv).css("float","right");$(this.plotDiv).width("75%");$(this.rangePiechartDiv).width("25%");$(this.rangePiechartDiv).height(plotDIVHeight);div.appendChild(this.rangePiechartDiv)}}FuzzyTimelineGui.prototype={};function FuzzyTimelineRangeBars(parent){this.rangeBars=this;this.parent=parent;this.options=parent.options;this.datasets;this.selected=undefined;this.datasetsPlot;this.highlightedDatasetsPlot;this.yValMin;this.yValMax;this.displayType;this.plotDiv=this.parent.gui.plotDiv;this.spanWidth;this.tickSpans;this.plot}FuzzyTimelineRangeBars.prototype={initialize:function(datasets){var rangeBar=this;rangeBar.datasets=datasets;rangeBar.selected=[]},createPlot:function(datasets){var rangeBar=this;var plots=[];var objectHashes=[];var tickCount=rangeBar.tickSpans.length-1;$(datasets).each(function(){var chartDataCounter=[];var objectHash=new Object();for(var i=0;i1)&&(tickLabel.indexOf("0")==0)){tickLabel=tickLabel.substring(1)}ticks[i]=[i,tickLabel]}var options={series:{bars:{show:true}},grid:{hoverable:true,clickable:true,backgroundColor:rangeBar.parent.options.backgroundColor,borderWidth:0,minBorderMargin:0,},xaxis:{ticks:ticks,min:0,max:tickCount,},yaxis:{min:rangeBar.yValMin,max:rangeBar.yValMax*1.05},tooltip:true,tooltipOpts:{content:function(label,xval,yval,flotItem){var fromLabel=rangeBar.tickSpans[xval].format(axisFormatString);while((fromLabel.length>1)&&(fromLabel.indexOf("0")==0)){fromLabel=fromLabel.substring(1)}var toLabel=rangeBar.tickSpans[xval+1].clone().subtract("ms",1).format(axisFormatString);while((toLabel.length>1)&&(toLabel.indexOf("0")==0)){toLabel=toLabel.substring(1)}highlightString=fromLabel+" - "+toLabel+" : ";highlightString+=Math.round(yval*100)/100;return highlightString}},selection:{mode:"x"}};if(!rangeBar.parent.options.showYAxis){options.yaxis.show=false}var highlight_select_plot_colors=[];var i=0;$(highlight_select_plot).each(function(){var color;if(iGeoTemConfig.datasets.length){color="rgb("+datasetColors.r0+","+datasetColors.g0+","+datasetColors.b0+")"}else{color="rgb("+datasetColors.r1+","+datasetColors.g1+","+datasetColors.b1+")"}}else{var datasetColors=GeoTemConfig.getColor(i-GeoTemConfig.datasets.length);color="rgb("+datasetColors.r1+","+datasetColors.g1+","+datasetColors.b1+")"}highlight_select_plot_colors.push({color:color,data:this});i++});$(rangeBar.plotDiv).unbind();rangeBar.plot=$.plot($(rangeBar.plotDiv),highlight_select_plot_colors,options);rangeBar.parent.drawHandles();var density=rangeBar.parent.density;if(typeof density!=="undefined"){$(rangeBar.plotDiv).unbind("plothover",density.hoverFunction)}$(rangeBar.plotDiv).unbind("plothover",rangeBar.hoverFunction);$(rangeBar.plotDiv).bind("plothover",$.proxy(rangeBar.hoverFunction,rangeBar));rangeBar.wasSelection=false;$(rangeBar.plotDiv).unbind("plotclick");$(rangeBar.plotDiv).bind("plotclick",$.proxy(rangeBar.clickFunction,rangeBar));$(rangeBar.plotDiv).unbind("plotselected");$(rangeBar.plotDiv).bind("plotselected",$.proxy(rangeBar.selectFunction,rangeBar))},hoverFunction:function(event,pos,item){var rangeBar=this;var hoverBar;var spans;if(item){hoverBar=item.datapoint[0]}if(rangeBar.highlighted!==hoverBar){rangeBar.highlighted=hoverBar;if(typeof hoverBar==="undefined"){rangeBar.triggerHighlight()}else{rangeBar.triggerHighlight(hoverBar)}}},clickFunction:function(event,pos,item){var rangeBar=this;if(rangeBar.wasSelection){rangeBar.wasSelection=false}else{rangeBar.parent.clearHandles();var clickBar;if(item){clickBar=item.datapoint[0]}if(typeof clickBar==="undefined"){rangeBar.triggerSelection()}else{rangeBar.triggerSelection(clickBar)}wasDataClick=true}},selectFunction:function(event,ranges){var rangeBar=this;startBar=Math.floor(ranges.xaxis.from);endBar=Math.floor(ranges.xaxis.to);rangeBar.triggerSelection(startBar,endBar);rangeBar.wasSelection=true;rangeBar.parent.clearHandles();var xaxis=rangeBar.plot.getAxes().xaxis;var x1=rangeBar.plot.pointOffset({x:ranges.xaxis.from,y:0}).left;var x2=rangeBar.plot.pointOffset({x:ranges.xaxis.to,y:0}).left;rangeBar.parent.addHandle(x1,x2)},selectByX:function(x1,x2){rangeBar=this;var xaxis=rangeBar.plot.getAxes().xaxis;var offset=rangeBar.plot.getPlotOffset().left;var from=Math.floor(xaxis.c2p(x1-offset));var to=Math.floor(xaxis.c2p(x2-offset));rangeBar.triggerSelection(from,to)},drawRangeBarChart:function(datasets,spanWidth){var rangeBar=this;rangeBar.spanWidth=spanWidth;rangeBar.tickSpans=rangeBar.parent.getSpanArray(rangeBar.spanWidth);var tickCount=rangeBar.tickSpans.length-1;if(tickCount>rangeBar.options.maxBars){var zoomFactor=tickCount/rangeBar.options.maxBars;rangeBar.parent.zoomPlot(zoomFactor)}else{rangeBar.parent.zoomPlot(1)}rangeBar.yValMin=0;rangeBar.yValMax=0;var plotAndHash=rangeBar.createPlot(datasets);rangeBar.datasetsPlot=plotAndHash.plots;rangeBar.datasetsHash=plotAndHash.hashs;delete rangeBar.highlightedDatasetsPlot;rangeBar.selectionChanged(rangeBar.selected);for(var i=0;irangeBar.yValMax){rangeBar.yValMax=val}}}}rangeBar.showPlot()},highlightChanged:function(objects){if(!GeoTemConfig.highlightEvents){return}var rangeBar=this;var emptyHighlight=true;var selected_highlighted=objects;if(typeof rangeBar.selected!=="undefined"){var selected_highlighted=GeoTemConfig.mergeObjects(objects,rangeBar.selected)}$(selected_highlighted).each(function(){if((this instanceof Array)&&(this.length>0)){emptyHighlight=false;return false}});if(emptyHighlight&&(typeof rangeBar.selected==="undefined")){rangeBar.highlightedDatasetsPlot=[]}else{rangeBar.highlightedDatasetsPlot=rangeBar.createPlot(selected_highlighted).plots}rangeBar.showPlot()},selectionChanged:function(objects){if(!GeoTemConfig.selectionEvents){return}var rangeBar=this;rangeBar.selected=objects;rangeBar.highlightChanged([])},triggerHighlight:function(hoverPoint){var rangeBar=this;var highlightedObjects=[];if(typeof hoverPoint!=="undefined"){$(rangeBar.datasetsHash).each(function(){if(typeof this[hoverPoint]!=="undefined"){highlightedObjects.push(this[hoverPoint])}else{highlightedObjects.push([])}})}else{for(var i=0;i=0;highlightedSpan--){highlightedObjects=GeoTemConfig.mergeObjects(highlightedObjects,spans[highlightedSpan].objects)}lastHighlighted=highlightedSpan}piechart.triggerHighlight(highlightedObjects)}else{piechart.triggerHighlight([])}};$(piechart.div).bind("plothover",hoverFunction);$(piechart.div).bind("plotclick",function(event,pos,item){$(piechart.div).unbind("plothover");if(item){var selectedSpan=Math.ceil(item.seriesIndex/piechart.datasets.length);var selectedObjects=[];for(;selectedSpan>=0;selectedSpan--){selectedObjects=GeoTemConfig.mergeObjects(selectedObjects,spans[selectedSpan].objects)}piechart.triggerSelection(selectedObjects)}else{$(piechart.div).bind("plothover",hoverFunction);piechart.triggerSelection(piechart.selected);piechart.highlightChanged([])}})}},highlightChanged:function(objects){var piechart=this;if(piechart.parent.showRangePiechart){var emptyHighlight=true;$(objects).each(function(){if((this instanceof Array)&&(this.length>0)){emptyHighlight=false;return false}});if(emptyHighlight===false){piechart.drawPieChart(GeoTemConfig.mergeObjects(piechart.selected,objects))}else{if(piechart.selected.length>0){piechart.drawPieChart(piechart.selected)}else{piechart.drawPieChart(piechart.datasets)}}}},selectionChanged:function(selection){var piechart=this;if(piechart.parent.showRangePiechart){if(!GeoTemConfig.selectionEvents){return}piechart.selected=selection;piechart.highlightChanged([])}},triggerHighlight:function(highlightedObjects){this.parent.triggerHighlight(highlightedObjects)},triggerSelection:function(selectedObjects){this.parent.triggerSelection(selectedObjects)},deselection:function(){},filtering:function(){},inverseFiltering:function(){},triggerRefining:function(){},reset:function(){},show:function(){},hide:function(){}};function FuzzyTimelineRangeSlider(parent){var rangeSlider=this;this.parent=parent;this.options=parent.options;this.spans;this.datasets;this.sliderParentTable=this.parent.gui.sliderTable;var headerRow=$("");var controlsRow=$("");$(this.sliderParentTable).append(headerRow).append(controlsRow);headerRow.append("Time start");this.rangeStart=document.createElement("select");controlsRow.append($("").append(this.rangeStart));headerRow.append("Time unit");this.rangeDropdown=document.createElement("select");controlsRow.append($("").append(this.rangeDropdown));headerRow.append("Scaling");this.scalingDropdown=document.createElement("select");controlsRow.append($("").append(this.scalingDropdown));$(this.scalingDropdown).append("");$(this.scalingDropdown).append("");$(this.scalingDropdown).append("");$(this.scalingDropdown).change(function(eventObject){var scaleMode=$(rangeSlider.scalingDropdown).find("option:selected").text();rangeSlider.parent.changeScaleMode(scaleMode)});headerRow.append("Animation");this.startAnimation=document.createElement("div");$(this.startAnimation).addClass("smallButton playDisabled");this.pauseAnimation=document.createElement("div");$(this.pauseAnimation).addClass("smallButton pauseDisabled");controlsRow.append($("").append(this.startAnimation).append(this.pauseAnimation));headerRow.append("Dated Objects");this.numberDatedObjects=0;this.numberDatedObjectsDIV=document.createElement("div");$(this.numberDatedObjectsDIV).addClass("ddbElementsCount");controlsRow.append($("").append(this.numberDatedObjectsDIV))}FuzzyTimelineRangeSlider.prototype={initialize:function(datasets){var rangeSlider=this;rangeSlider.datasets=datasets;rangeSlider.spans=[];rangeSlider.spanHash=[];var smallestSpan;rangeSlider.numberDatedObjects=0;$(this.datasets).each(function(){$(this.objects).each(function(){var dataObject=this;var span;if(dataObject.isTemporal){rangeSlider.numberDatedObjects++;smallestSpan=moment.duration(1,"milliseconds")}else{if(dataObject.isFuzzyTemporal){rangeSlider.numberDatedObjects++;span=moment.duration(dataObject.TimeSpanEnd-dataObject.TimeSpanBegin);if((typeof smallestSpan==="undefined")||(span(smallestSpan.asMilliseconds()*0.25))&&(fixedSpans[i].asMilliseconds()continuous");var index=0;$(rangeSlider.spans).each(function(){var duration=this;if(duration1){humanizedSpan+="s"}}else{if(duration1){humanizedSpan+="s"}}else{var years=duration.years();humanizedSpan=years+" year";if(years>1){humanizedSpan+="s"}}}}}}}$(rangeSlider.rangeDropdown).append("");index++});$(rangeSlider.rangeDropdown).change(function(eventObject){var handlePosition=$(rangeSlider.rangeDropdown).find("option:selected").first().attr("index");if(typeof handlePosition==="undefined"){rangeSlider.parent.switchViewMode("density")}else{rangeSlider.parent.switchViewMode("barchart")}rangeSlider.parent.slidePositionChanged(rangeSlider.spans[handlePosition])});$(rangeSlider.rangeStart).empty();var starts=[];var overallMin=rangeSlider.parent.overallMin;var last=moment(overallMin).year();starts.push(last);for(i=1;;i++){var date=moment(overallMin).year();date=date/Math.pow(10,i);if(Math.abs(date)<1){break}date=Math.floor(date);date=date*Math.pow(10,i);if(date!=last){starts.push(date)}last=date}$(starts).each(function(){$(rangeSlider.rangeStart).append("")});$(rangeSlider.rangeStart).change(function(eventObject){var handlePosition=rangeSlider.rangeStart.selectedIndex;var start=starts[handlePosition];rangeSlider.parent.overallMin=moment().year(start);$(rangeSlider.rangeDropdown).change()});$(rangeSlider.rangeDropdown).change();$(rangeSlider.startAnimation).click(function(){if($(rangeSlider.startAnimation).hasClass("playEnabled")){$(rangeSlider.startAnimation).removeClass("playEnabled").addClass("playDisabled");$(rangeSlider.pauseAnimation).removeClass("pauseDisabled").addClass("pauseEnabled");rangeSlider.parent.startAnimation()}});$(rangeSlider.pauseAnimation).prop("disabled",true);$(rangeSlider.pauseAnimation).click(function(){if($(rangeSlider.pauseAnimation).hasClass("pauseEnabled")){$(rangeSlider.startAnimation).removeClass("playDisabled").addClass("playEnabled");$(rangeSlider.pauseAnimation).removeClass("pauseEnabled").addClass("pauseDisabled");rangeSlider.parent.pauseAnimation()}})},triggerHighlight:function(columnElement){},triggerSelection:function(columnElement){},deselection:function(){},filtering:function(){},inverseFiltering:function(){},triggerRefining:function(){},reset:function(){},show:function(){},hide:function(){}};FuzzyTimelineWidget=function(core,div,options){this.datasets;this.selected=undefined;this.overallMin;this.overallMax;this.core=core;this.core.setWidget(this);this.options=(new FuzzyTimelineConfig(options)).options;this.gui=new FuzzyTimelineGui(this,div,this.options);this.viewMode;this.density;this.rangeSlider;this.rangeBars;this.rangePiechart;this.spanHash=[];this.handles=[];this.zoomFactor=1;this.scaleMode="normal"};FuzzyTimelineWidget.prototype={initWidget:function(data){var fuzzyTimeline=this;delete fuzzyTimeline.overallMin;delete fuzzyTimeline.overallMax;$(fuzzyTimeline.gui.plotDiv).empty();$(fuzzyTimeline.gui.sliderTable).empty();delete fuzzyTimeline.rangeSlider;$(fuzzyTimeline.gui.rangePiechartDiv).empty();delete fuzzyTimeline.rangePiechart;fuzzyTimeline.switchViewMode("density");if((data instanceof Array)&&(data.length>0)){fuzzyTimeline.datasets=data;$(fuzzyTimeline.datasets).each(function(){$(this.objects).each(function(){var datemin,datemax;if(this.isTemporal){datemin=moment(this.dates[0].date);datemax=datemin}else{if(this.isFuzzyTemporal){datemin=this.TimeSpanBegin;datemax=this.TimeSpanEnd}}if(typeof fuzzyTimeline.overallMin==="undefined"){fuzzyTimeline.overallMin=datemin}if(typeof fuzzyTimeline.overallMax==="undefined"){fuzzyTimeline.overallMax=datemax}if(fuzzyTimeline.overallMin>datemin){fuzzyTimeline.overallMin=datemin}if(fuzzyTimeline.overallMax0){overallCnt+=val}}overallCnt=overallCnt/100;if(overallCnt!=0){for(var index in data){data[index]=(data[index])/overallCnt}}return data}}}},changeScaleMode:function(scaleMode){var fuzzyTimeline=this;fuzzyTimeline.scaleMode=scaleMode;fuzzyTimeline.drawFuzzyTimeline()},slidePositionChanged:function(spanWidth){var fuzzyTimeline=this;fuzzyTimeline.spanWidth=spanWidth;fuzzyTimeline.drawFuzzyTimeline()},drawFuzzyTimeline:function(){var fuzzyTimeline=this;var datasets=fuzzyTimeline.datasets;if(fuzzyTimeline.viewMode==="density"){fuzzyTimeline.density.drawDensityPlot(datasets);fuzzyTimeline.density.selectionChanged(fuzzyTimeline.selected)}else{if(fuzzyTimeline.viewMode==="barchart"){fuzzyTimeline.rangeBars.drawRangeBarChart(datasets,fuzzyTimeline.spanWidth);fuzzyTimeline.rangeBars.selectionChanged(fuzzyTimeline.selected)}}},highlightChanged:function(objects){var fuzzyTimeline=this;if(!GeoTemConfig.highlightEvents){return}if((typeof objects==="undefined")||(objects.length==0)){return}if(fuzzyTimeline.viewMode==="density"){this.density.highlightChanged(objects)}else{if(fuzzyTimeline.viewMode==="barchart"){this.rangeBars.highlightChanged(objects)}}fuzzyTimeline.rangePiechart.highlightChanged(objects)},selectionChanged:function(selection){var fuzzyTimeline=this;if(!GeoTemConfig.selectionEvents){return}if((typeof selection.objects!=="undefined")&&(selection.objects.length==GeoTemConfig.datasets.length)){var objectCount=0;for(var i=0,il=selection.objects.length;i0){fuzzyTimeline.selected=selection.objects}else{delete fuzzyTimeline.selected}}else{delete fuzzyTimeline.selected}if(fuzzyTimeline.viewMode==="density"){this.density.selectionChanged(fuzzyTimeline.selected)}else{if(fuzzyTimeline.viewMode==="barchart"){this.rangeBars.selectionChanged(fuzzyTimeline.selected)}}if(selection.valid()){fuzzyTimeline.rangePiechart.selectionChanged(fuzzyTimeline.selected)}else{fuzzyTimeline.rangePiechart.selectionChanged([])}if(selection.widget!=fuzzyTimeline){fuzzyTimeline.clearHandles()}},buildSpanArray:function(spanWidth){var spanArray=[];var tickStart=moment(this.overallMin);do{spanArray.push(moment(tickStart));tickStart.add(spanWidth)}while(tickStart<=this.overallMax);spanArray.push(moment(tickStart));this.spanHash.push({spanWidth:spanWidth,overallMin:moment(this.overallMin),spanArray:spanArray});return(spanArray)},getSpanArray:function(spanWidth){for(var i=0;i=searchDateStart)){objects.push(this)}}else{if((datemin=searchDateStart)){objects.push(this)}}});datasets.push(objects)});return(datasets)},triggerHighlight:function(highlightedObjects){var fuzzyTimeline=this;if(fuzzyTimeline.viewMode==="density"){fuzzyTimeline.density.highlightChanged(highlightedObjects)}else{if(fuzzyTimeline.viewMode==="barchart"){fuzzyTimeline.rangeBars.highlightChanged(highlightedObjects)}}fuzzyTimeline.core.triggerHighlight(highlightedObjects)},triggerSelection:function(selectedObjects){var fuzzyTimeline=this;fuzzyTimeline.selected=selectedObjects;if(fuzzyTimeline.viewMode==="density"){fuzzyTimeline.density.selectionChanged(selectedObjects)}else{if(fuzzyTimeline.viewMode==="barchart"){fuzzyTimeline.rangeBars.selectionChanged(selectedObjects)}}selection=new Selection(selectedObjects);fuzzyTimeline.core.triggerSelection(selection)},addHandle:function(x1,x2){var fuzzyTimeline=this;if(x2=plotOffset)){x=x-leftHandle.offsetWidth;handle.x1=x+$(leftHandle).width();moveLeftHandle();resizeHandleBox();moveDragButton()}});$(fuzzyTimeline.gui.plotDiv).mouseup(function(eventObj){fuzzyTimeline.selectByX(handle.x1,handle.x2);$(fuzzyTimeline.gui.plotDiv).unbind("mouseup");$(fuzzyTimeline.gui.plotDiv).unbind("mousemove")})});$(rightHandle).mousedown(function(){$(fuzzyTimeline.gui.plotDiv).mousemove(function(eventObj){var x=eventObj.clientX;x+=$(fuzzyTimeline.gui.plotDiv).parent().scrollLeft();x=x-rightHandle.offsetWidth;if((x>handle.x1)&&(x<=plotOffset+plotWidth)){handle.x2=x;moveRightHandle();resizeHandleBox();moveDragButton()}});$(fuzzyTimeline.gui.plotDiv).mouseup(function(eventObj){fuzzyTimeline.selectByX(handle.x1,handle.x2);$(fuzzyTimeline.gui.plotDiv).unbind("mouseup");$(fuzzyTimeline.gui.plotDiv).unbind("mousemove")})});$(dragButton).mousedown(function(){$(fuzzyTimeline.gui.plotDiv).mousemove(function(eventObj){var x=eventObj.clientX;var xdiff=x-$(dragButton).offset().left-$(dragButton).width()/2;handle.x1=handle.x1+xdiff;handle.x2=handle.x2+xdiff;moveLeftHandle();moveRightHandle();resizeHandleBox();moveDragButton()});$(fuzzyTimeline.gui.plotDiv).mouseup(function(eventObj){if(handle.x1plotOffset+plotWidth){handle.x2=plotOffset+plotWidth}moveLeftHandle();moveRightHandle();resizeHandleBox();moveDragButton();fuzzyTimeline.selectByX(handle.x1,handle.x2);$(fuzzyTimeline.gui.plotDiv).unbind("mouseup");$(fuzzyTimeline.gui.plotDiv).unbind("mousemove")})})})},clearHandles:function(){var fuzzyTimeline=this;$(fuzzyTimeline.gui.plotDiv).find(".plotHandle").remove();$(fuzzyTimeline.gui.plotDiv).find(".dragTimeRangeAlt").remove();$(fuzzyTimeline.gui.plotDiv).find(".plotHandleBox").remove();fuzzyTimeline.handles=[];$(fuzzyTimeline.rangeSlider.startAnimation).removeClass("playEnabled").addClass("playDisabled");$(fuzzyTimeline.rangeSlider.pauseAnimation).removeClass("pauseEnabled").addClass("pauseDisabled");fuzzyTimeline.pauseAnimation()},startAnimation:function(){var fuzzyTimeline=this;fuzzyTimeline.loopFunction=function(steps){$(fuzzyTimeline.handles).each(function(){if(typeof steps==="undefined"){steps=1}var handle=this;var x1=handle.x1;var x2=handle.x2;if(typeof handle.width==="undefined"){handle.width=x2-x1}var plotWidth=(fuzzyTimeline.density.plot?fuzzyTimeline.density.plot:fuzzyTimeline.rangeBars.plot).width();var plotOffset=(fuzzyTimeline.density.plot?fuzzyTimeline.density.plot:fuzzyTimeline.rangeBars.plot).getPlotOffset().left;var plotMax=plotWidth+plotOffset;if(!((x1===plotOffset)&&(x2-x1<=handle.width))){x1+=steps}if(x2<=plotMax){x2+=steps;if(x2>plotMax){x2=plotMax}if(x2-x1>handle.width){x1=x2-handle.width}}if(x1>=plotMax){x1=plotOffset;x2=plotOffset}handle.x1=x1;handle.x2=x2;fuzzyTimeline.drawHandles();fuzzyTimeline.selectByX(handle.x1,handle.x2)})};fuzzyTimeline.loopId=setInterval(function(){fuzzyTimeline.loopFunction(10)},100)},pauseAnimation:function(){var fuzzyTimeline=this;clearInterval(fuzzyTimeline.loopId);$(fuzzyTimeline.handles).each(function(){var handle=this;delete handle.width})},zoomPlot:function(zoomFactor){var fuzzyTimeline=this;var oldZoomFactor=fuzzyTimeline.zoomFactor;fuzzyTimeline.zoomFactor=zoomFactor;if(zoomFactor>1){$(fuzzyTimeline.gui.plotDiv).width(zoomFactor*100+"%")}else{$(fuzzyTimeline.gui.plotDiv).width("100%")}$(fuzzyTimeline.gui.plotDiv).height(fuzzyTimeline.gui.plotDIVHeight-20);$(fuzzyTimeline.handles).each(function(){var handle=this;handle.x1=handle.x1*(zoomFactor/oldZoomFactor);handle.x2=handle.x2*(zoomFactor/oldZoomFactor)})}};function Overlayloader(parent){this.overlayLoader=this;this.parent=parent;this.options=parent.options;this.attachedMapWidgets=parent.attachedMapWidgets;this.overlays=[];this.initialize()}Overlayloader.prototype={show:function(){this.overlayloaderDiv.style.display="block"},hide:function(){this.overlayloaderDiv.style.display="none"},initialize:function(){this.addKMLLoader();this.addKMZLoader();this.addArcGISWMSLoader();this.addXYZLoader();this.addRomanEmpireLoader();this.addMapsForFreeWaterLayer();this.addConfigLoader();$(this.parent.gui.loaderTypeSelect).change()},distributeKML:function(kmlURL){var newOverlay=new Object();newOverlay.name=kmlURL;newOverlay.layers=[];$(this.attachedMapWidgets).each(function(){var newLayer=new OpenLayers.Layer.Vector("KML",{projection:this.openlayersMap.displayProjection,strategies:[new OpenLayers.Strategy.Fixed()],protocol:new OpenLayers.Protocol.HTTP({url:kmlURL,format:new OpenLayers.Format.KML({extractStyles:true,extractAttributes:true})})});newOverlay.layers.push({map:this.openlayersMap,layer:newLayer});this.openlayersMap.addLayer(newLayer)});this.overlays.push(newOverlay);this.parent.gui.refreshOverlayList()},distributeKMZ:function(kmzURL){var newOverlay=new Object();newOverlay.name=kmzURL;newOverlay.layers=[];$(this.attachedMapWidgets).each(function(){var newLayer=new OpenLayers.Layer.Vector("KML",{projection:this.openlayersMap.displayProjection,strategies:[new OpenLayers.Strategy.Fixed()],format:OpenLayers.Format.KML,extractAttributes:true});newOverlay.layers.push({map:this.openlayersMap,layer:newLayer});var map=this.openlayersMap;GeoTemConfig.getKmz(kmzURL,function(kmlDoms){$(kmlDoms).each(function(){var kml=new OpenLayers.Format.KML().read(this);newLayer.addFeatures(kml);map.addLayer(newLayer)})})});this.overlays.push(newOverlay);this.parent.gui.refreshOverlayList()},distributeArcGISWMS:function(wmsURL,wmsLayer){var newOverlay=new Object();newOverlay.name=wmsURL+" - "+wmsLayer;newOverlay.layers=[];var newLayer=new OpenLayers.Layer.WMS("ArcGIS WMS label",wmsURL,{layers:wmsLayer,format:"image/png",transparent:"true"},{displayOutsideMaxExtent:true,isBaseLayer:false,projection:"EPSG:3857"});newLayer.setIsBaseLayer(false);$(this.attachedMapWidgets).each(function(){this.openlayersMap.addLayer(newLayer);newOverlay.layers.push({map:this.openlayersMap,layer:newLayer})});this.overlays.push(newOverlay);this.parent.gui.refreshOverlayList()},distributeXYZ:function(xyzURL,zoomOffset){var newOverlay=new Object();newOverlay.name=xyzURL;newOverlay.layers=[];var newLayer=new OpenLayers.Layer.XYZ("XYZ Layer",[xyzURL],{sphericalMercator:true,transitionEffect:"resize",buffer:1,numZoomLevels:12,transparent:true,isBaseLayer:false,zoomOffset:zoomOffset?zoomOffset:0});newLayer.setIsBaseLayer(false);$(this.attachedMapWidgets).each(function(){this.openlayersMap.addLayer(newLayer);newOverlay.layers.push({map:this.openlayersMap,layer:newLayer})});this.overlays.push(newOverlay);this.parent.gui.refreshOverlayList()},addKMLLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.KMLLoaderTab=document.createElement("div");$(this.KMLLoaderTab).attr("id","KMLLoader");this.kmlURL=document.createElement("input");$(this.kmlURL).attr("type","text");$(this.KMLLoaderTab).append(this.kmlURL);this.loadKMLButton=document.createElement("button");$(this.loadKMLButton).text("load KML");$(this.KMLLoaderTab).append(this.loadKMLButton);$(this.loadKMLButton).click($.proxy(function(){var kmlURL=$(this.kmlURL).val();if(kmlURL.length==0){return}if(typeof GeoTemConfig.proxy!="undefined"){kmlURL=GeoTemConfig.proxy+kmlURL}this.distributeKML(kmlURL)},this));$(this.parent.gui.loaders).append(this.KMLLoaderTab)},addKMZLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.KMZLoaderTab=document.createElement("div");$(this.KMZLoaderTab).attr("id","KMZLoader");this.kmzURL=document.createElement("input");$(this.kmzURL).attr("type","text");$(this.KMZLoaderTab).append(this.kmzURL);this.loadKMZButton=document.createElement("button");$(this.loadKMZButton).text("load KMZ");$(this.KMZLoaderTab).append(this.loadKMZButton);$(this.loadKMZButton).click($.proxy(function(){var kmzURL=$(this.kmzURL).val();if(kmzURL.length==0){return}if(typeof GeoTemConfig.proxy!="undefined"){kmzURL=GeoTemConfig.proxy+kmzURL}this.distributeKMZ(kmzURL)},this));$(this.parent.gui.loaders).append(this.KMZLoaderTab)},addArcGISWMSLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.ArcGISWMSLoaderTab=document.createElement("div");$(this.ArcGISWMSLoaderTab).attr("id","ArcGISWMSLoader");$(this.ArcGISWMSLoaderTab).append("URL: ");this.wmsURL=document.createElement("input");$(this.wmsURL).attr("type","text");$(this.ArcGISWMSLoaderTab).append(this.wmsURL);$(this.ArcGISWMSLoaderTab).append("Layer: ");this.wmsLayer=document.createElement("input");$(this.wmsLayer).attr("type","text");$(this.ArcGISWMSLoaderTab).append(this.wmsLayer);this.loadArcGISWMSButton=document.createElement("button");$(this.loadArcGISWMSButton).text("load Layer");$(this.ArcGISWMSLoaderTab).append(this.loadArcGISWMSButton);$(this.loadArcGISWMSButton).click($.proxy(function(){var wmsURL=$(this.wmsURL).val();var wmsLayer=$(this.wmsLayer).val();if(wmsURL.length==0){return}this.distributeArcGISWMS(wmsURL,wmsLayer)},this));$(this.parent.gui.loaders).append(this.ArcGISWMSLoaderTab)},addXYZLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.XYZLoaderTab=document.createElement("div");$(this.XYZLoaderTab).attr("id","XYZLoader");$(this.XYZLoaderTab).append("URL (with x,y,z variables): ");this.xyzURL=document.createElement("input");$(this.xyzURL).attr("type","text");$(this.XYZLoaderTab).append(this.xyzURL);this.loadXYZButton=document.createElement("button");$(this.loadXYZButton).text("load Layer");$(this.XYZLoaderTab).append(this.loadXYZButton);$(this.loadXYZButton).click($.proxy(function(){var xyzURL=$(this.xyzURL).val();if(xyzURL.length==0){return}this.distributeXYZ(xyzURL)},this));$(this.parent.gui.loaders).append(this.XYZLoaderTab)},addRomanEmpireLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.RomanEmpireLoaderTab=document.createElement("div");$(this.RomanEmpireLoaderTab).attr("id","RomanEmpireLoader");this.loadRomanEmpireButton=document.createElement("button");$(this.loadRomanEmpireButton).text("load Layer");$(this.RomanEmpireLoaderTab).append(this.loadRomanEmpireButton);$(this.loadRomanEmpireButton).click($.proxy(function(){this.distributeXYZ("http://pelagios.org/tilesets/imperium/${z}/${x}/${y}.png",1)},this));$(this.parent.gui.loaders).append(this.RomanEmpireLoaderTab)},addMapsForFreeWaterLayer:function(){$(this.parent.gui.loaderTypeSelect).append("");this.MapsForFreeWaterTab=document.createElement("div");$(this.MapsForFreeWaterTab).attr("id","MapsForFreeWaterLayerLoader");this.loadMapsForFreeWaterLayerButton=document.createElement("button");$(this.loadMapsForFreeWaterLayerButton).text("load Layer");$(this.MapsForFreeWaterTab).append(this.loadMapsForFreeWaterLayerButton);$(this.loadMapsForFreeWaterLayerButton).click($.proxy(function(){this.distributeXYZ("http://maps-for-free.com/layer/water/z${z}/row${y}/${z}_${x}-${y}.gif",1)},this));$(this.parent.gui.loaders).append(this.MapsForFreeWaterTab)},addConfigLoader:function(){if((this.parent.options.wms_overlays instanceof Array)&&(this.parent.options.wms_overlays.length>0)){var overlayloader=this;$(this.parent.gui.loaderTypeSelect).append("");this.ConfigLoaderTab=document.createElement("div");$(this.ConfigLoaderTab).attr("id","ConfigLoader");this.ConfigMapSelect=document.createElement("select");$(this.parent.options.wms_overlays).each(function(){var name=this.name,server=this.server,layer=this.layer;$(overlayloader.ConfigMapSelect).append("")});$(this.ConfigLoaderTab).append(this.ConfigMapSelect);this.loadConfigMapButton=document.createElement("button");$(this.loadConfigMapButton).text("load Layer");$(this.ConfigLoaderTab).append(this.loadConfigMapButton);$(this.loadConfigMapButton).click($.proxy(function(){var server=$(this.ConfigMapSelect).find(":selected").attr("server");var layer=$(this.ConfigMapSelect).find(":selected").attr("layer");this.distributeArcGISWMS(server,layer)},this));$(this.parent.gui.loaders).append(this.ConfigLoaderTab)}}};function OverlayloaderConfig(options){this.options={wms_overlays:[],};if(typeof options!="undefined"){$.extend(this.options,options)}}function OverlayloaderGui(overlayloader,div,options){this.parent=overlayloader;var overlayloaderGui=this;this.overlayloaderContainer=div;this.overlayloaderContainer.style.position="relative";this.loaderTypeSelect=document.createElement("select");div.appendChild(this.loaderTypeSelect);this.loaders=document.createElement("div");div.appendChild(this.loaders);this.overlayList=document.createElement("div");div.appendChild(this.overlayList);$(this.loaderTypeSelect).change(function(){var activeLoader=$(this).val();$(overlayloaderGui.loaders).find("div").each(function(){if($(this).attr("id")==activeLoader){$(this).show()}else{$(this).hide()}})});this.refreshOverlayList=function(){var overlayloaderGui=this;$(overlayloaderGui.overlayList).empty();$(this.parent.overlayLoader.overlays).each(function(){var overlay=this;$(overlayloaderGui.overlayList).append(overlay.name);var link=document.createElement("a");$(link).text("(x)");link.href="";$(link).click($.proxy(function(){$(overlay.layers).each(function(){this.map.removeLayer(this.layer)});var overlays=overlayloaderGui.parent.overlayLoader.overlays;overlays=$.grep(overlays,function(value){return overlay!=value});overlayloaderGui.parent.overlayLoader.overlays=overlays;overlayloaderGui.refreshOverlayList();return(false)},{overlay:overlay,overlayloaderGui:overlayloaderGui}));$(overlayloaderGui.overlayList).append(link)})}}OverlayloaderWidget=function(core,div,options){this.core=core;this.core.setWidget(this);this.options=(new OverlayloaderConfig(options)).options;this.gui=new OverlayloaderGui(this,div,this.options);this.attachedMapWidgets=new Array();this.overlayLoader=new Overlayloader(this)};OverlayloaderWidget.prototype={initWidget:function(){var overlayloaderWidget=this},highlightChanged:function(objects){if(!GeoTemConfig.highlightEvents){return}},selectionChanged:function(selection){if(!GeoTemConfig.selectionEvents){return}},triggerHighlight:function(item){},tableSelection:function(){},deselection:function(){},filtering:function(){},inverseFiltering:function(){},triggerRefining:function(){},reset:function(){},attachMapWidget:function(widget){this.attachedMapWidgets.push(widget)}};function PieChart(parent,watchedDataset,watchedColumn,selectionFunction){if((typeof selectionFunction!=="undefined")&&(typeof selectionFunction.type!=="undefined")&&(typeof selectionFunction.categories!=="undefined")){this.type=selectionFunction.type;this.categories=selectionFunction.categories}this.pieChart=this;this.pieChartDiv;this.preHighlightObjects;this.highlightedLabel;this.informationDIV;this.pieChartLabel;this.parent=parent;this.options=parent.options;this.watchedDatasetObject;this.watchedDataset=parseInt(watchedDataset);this.watchColumn=watchedColumn;if(typeof selectionFunction!=="undefined"){this.selectionFunction=selectionFunction}else{this.selectionFunction=function(columnData){return columnData}}}PieChart.prototype={remove:function(){for(var i=0;i");$(this.informationDIV).append(this.pieChartLabel);this.refreshLabel();var removeButton=document.createElement("button");$(this.informationDIV).append(removeButton);$(removeButton).text("remove");$(removeButton).click(function(){pieChart.remove()});if((typeof pieChart.type!=="undefined")&&(typeof pieChart.categories!=="undefined")){var editButton=document.createElement("button");$(this.informationDIV).append(editButton);$(editButton).text("edit");$(editButton).click(function(){var chooser=new PieChartCategoryChooser(pieChart.parent,pieChart.parent.options,pieChart.watchedDataset,pieChart.watchColumn,pieChart.type,pieChart.categories)});if(pieChart.options.allowLocalStorage){var saveButton=document.createElement("button");$(this.informationDIV).append(saveButton);$(saveButton).text("save");$(saveButton).click(function(){$("
pie chart name :
").dialog({width:"auto",buttons:[{text:"save",click:function(){var saveName=$("#saveName").val();var saveObject=new Object();saveObject.type=pieChart.type;saveObject.categories=pieChart.categories;saveObject.columnName=pieChart.watchColumn;$.remember({name:pieChart.options.localStoragePrefix+saveName,value:saveObject,json:true});$(this).dialog("close")}}]});$("#saveName").val(pieChart.watchColumn);$(".ui-dialog").css("z-index",10005)})}}$(this.parent.gui.pieChartsDiv).append(this.informationDIV);this.pieChartDiv=document.createElement("div");$(this.parent.gui.pieChartsDiv).append(this.pieChartDiv);$(this.pieChartDiv).unbind();$(this.pieChartDiv).bind("plothover",function(event,pos,item){var highlightedLabel;if(item){highlightedLabel=item.series.label}if(highlightedLabel!==pieChart.highlightedLabel){pieChart.highlightedLabel=highlightedLabel;pieChart.triggerHighlight(highlightedLabel)}});$(this.pieChartDiv).bind("plotclick",function(event,pos,item){if(item){pieChart.triggerSelection(item.series.label)}else{pieChart.triggerSelection()}})}},checkForDataSet:function(){var datasets=this.parent.datasets;if((typeof datasets!=="undefined")&&(typeof this.watchedDatasetObject!=="undefined")){for(var i=0;i0){$(this.pieChartDiv).empty();var parentHeight=$(this.parent.gui.pieChartsDiv).outerHeight(true)-$(this.parent.gui.columnSelectorDiv).outerHeight(true);var pieChartCount=0;$(this.parent.pieCharts).each(function(){if(this instanceof PieChart){pieChartCount++}});var height=(parentHeight/pieChartCount)-$(this.informationDIV).outerHeight(true);if(pieChart.options.restrictPieChartSize!==false){height=Math.min(height,$(window).height()*pieChart.options.restrictPieChartSize)}$(this.pieChartDiv).height(height);$.plot($(this.pieChartDiv),chartData,{series:{pie:{show:true}},legend:{show:true,position:"se"},grid:{hoverable:true,clickable:true},tooltip:true,tooltipOpts:{content:"%s %p.1%"}})}}},triggerHighlight:function(columnElement){var highlightedObjects=[];for(var i=0;i=0){highlightedObjects[this.watchedDataset]=this.parent.getElementsByValue(columnElement,this.watchedDataset,this.watchColumn,this.selectionFunction)}else{highlightedObjects[this.watchedDataset]=[]}this.parent.core.triggerHighlight(highlightedObjects);var pieChart=this;$(this.parent.pieCharts).each(function(){if(this instanceof PieChart&&(this!==pieChart)){if(this.watchedDataset===pieChart.watchedDataset){this.redrawPieChart(highlightedObjects)}}})},triggerSelection:function(columnElement){var selectedObjects=[];for(var i=0;i
");this.dialog.html("").dialog({modal:true}).dialog("open");$(".ui-front").css("z-index","10001");var allNumeric=this.loadValues(datasetIndex,columnName);if(typeof allNumeric==="undefined"){return}if(allNumeric===true){this.createNumeralBasedChooser(this.chartData,categories)}else{this.createTextBasedChooser(this.chartData,categories)}}PieChartCategoryChooser.prototype={loadValues:function(datasetIndex,columnName){var pieChartCategoryChooser=this;var allNumeric=true;pieChartCategoryChooser.chartData=[];var chartData=pieChartCategoryChooser.chartData;$(GeoTemConfig.datasets[datasetIndex].objects).each(function(){var columnData=pieChartCategoryChooser.parent.getElementData(this,columnName);if(isNaN(parseFloat(columnData))){allNumeric=false}if($.inArray(columnData,chartData)==-1){chartData.push(columnData)}});if(chartData.length===0){return}else{return allNumeric}},createTextBasedChooser:function(chartData,categories){var pieChartCategoryChooser=this;var addCategory=function(name,elements){var newCategoryContainer=document.createElement("fieldset");var newCategoryLegend=document.createElement("legend");var newCategoryName=document.createElement("input");$(newCategoryName).width("80%");newCategoryName.type="text";newCategoryName.value=name;var newCategoryRemove=document.createElement("button");$(newCategoryRemove).text("X");$(newCategoryRemove).click(function(){$(newCategoryContainer).find("li").each(function(){$(this).prependTo(unselected)});$(newCategoryContainer).remove()});$(newCategoryLegend).append(newCategoryName);$(newCategoryLegend).append(newCategoryRemove);$(newCategoryContainer).append(newCategoryLegend);$(newCategoryContainer).width("200px");$(newCategoryContainer).css("float","left");var newCategory=document.createElement("ul");$(newCategory).addClass("connectedSortable");$(newCategory).css("background","#eee");newCategoryContainer.appendChild(newCategory);$(newCategory).append("
");cell.appendChild(newCategoryContainer);if(typeof elements!=="undefined"){$(elements).each(function(){var value=this;$(newCategory).append("
  • "+value+"
  • ");$(unselected).find("li").filter(function(){return($(this).text()===""+value)}).remove()})}$(".connectedSortable").sortable({connectWith:".connectedSortable"}).disableSelection()};var table=document.createElement("table");var row=document.createElement("tr");table.appendChild(row);var cell=document.createElement("td");row.appendChild(cell);cell=document.createElement("td");row.appendChild(cell);var addCategoryButton=document.createElement("button");$(addCategoryButton).text("add new category");cell.appendChild(addCategoryButton);var applyCategoryButton=document.createElement("button");$(applyCategoryButton).text("apply");cell.appendChild(applyCategoryButton);row=document.createElement("tr");table.appendChild(row);cell=document.createElement("td");row.appendChild(cell);var unselected=document.createElement("ul");$(unselected).addClass("connectedSortable");cell.appendChild(unselected);cell=document.createElement("td");$(cell).attr("valign","top");$(cell).width("100%");row.appendChild(cell);this.dialog.append(table);$(".connectedSortable").sortable({connectWith:".connectedSortable"}).disableSelection();$(chartData).each(function(){$(unselected).append("
  • "+this+"
  • ")});if(typeof categories!=="undefined"){$(categories).each(function(){var category=this;addCategory(category.label,category.values)})}$(addCategoryButton).click(function(){addCategory()});$(applyCategoryButton).click(function(){var categories=[];$(cell).children().each(function(){var label=$(this).find("legend > input").val();var values=[];$(this).find("li").each(function(){values.push($(this).text())});categories.push({label:label,values:values})});var values=[];$(unselected).find("li").each(function(){values.push($(this).text())});categories.push({label:"other",values:values});pieChartCategoryChooser.parent.addCategorizedPieChart(pieChartCategoryChooser.datasetIndex,pieChartCategoryChooser.columnName,"text",categories);$(pieChartCategoryChooser.dialog).dialog("close")});var wWidth=$(window).width();var dWidth=wWidth*0.9;var wHeight=$(window).height();var dHeight=wHeight*0.9;$(this.dialog).dialog("option","width",dWidth);$(this.dialog).dialog("option","height",dHeight)},createNumeralBasedChooser:function(chartData,existingCategories){var numericChartData=[];for(var i=0;i"+this+"")});var addCategory=function(boundary){if((handles.length>0)&&(handles[handles.length-1]===max)){return false}if(handles.length>0){$(slider).slider("destroy")}if(typeof boundary==="undefined"){boundary=max}handles.push(boundary);$(slider).slider({min:min,max:max,step:minStep,values:handles});var placeValues=function(){$(unselected).find("li").remove();$(cell).children().find("li").remove();var j=0,i=0;for(;ihandles[j]){j++}if(j==handles.length){break}$(categories[j]).append("
  • "+chartData[i]+"
  • ")}for(;i"+chartData[i]+"")}};$(slider).on("slide",function(event,ui){var last=min;for(var i=0;i<="+boundary+"");$(newCategoryContainer).width("188px");$(newCategoryContainer).css("float","left");var newCategory=document.createElement("ul");$(newCategory).addClass("connectedSortable");$(newCategory).css("background","#eee");newCategoryContainer.appendChild(newCategory);cell.appendChild(newCategoryContainer);categories.push(newCategory);placeValues()};$(addCategoryButton).click(function(){addCategory()});if(typeof existingCategories!=="undefined"){$(existingCategories).each(function(){var boundary=this;addCategory(boundary)})}$(applyCategoryButton).click(function(){var categorieBoundaries=handles;pieChartCategoryChooser.parent.addCategorizedPieChart(pieChartCategoryChooser.datasetIndex,pieChartCategoryChooser.columnName,"numeral",categorieBoundaries);$(pieChartCategoryChooser.dialog).dialog("close")});var wWidth=$(window).width();var dWidth=wWidth*0.9;var wHeight=$(window).height();var dHeight=wHeight*0.9;$(this.dialog).dialog("option","width",dWidth);$(this.dialog).dialog("option","height",dHeight)}};function PieChartConfig(options){this.options={restrictPieChartSize:0.25,localStoragePrefix:"GeoBrowser_PieChart_",allowLocalStorage:true,};if(typeof options!="undefined"){$.extend(this.options,options)}}function PieChartGui(pieChart,div,options){this.parent=pieChart;this.options=options;var pieChartGui=this;this.pieChartContainer=div;this.pieChartContainer.style.position="relative";this.columnSelectorDiv=document.createElement("div");div.appendChild(this.columnSelectorDiv);this.datasetSelect=document.createElement("select");$(this.datasetSelect).change(function(event){if(typeof pieChartGui.parent.datasets!=="undefined"){var dataset=pieChartGui.parent.datasets[$(pieChartGui.datasetSelect).val()];if(dataset.objects.length>0){var firstObject=dataset.objects[0];var firstTableContent=firstObject.tableContent;$(pieChartGui.columnSelect).empty();$(pieChartGui.columnSelect).append("");for(var key in localStorage){var prefix=pieChartGui.options.localStoragePrefix;if(key.startsWith(prefix)){var saveObject=$.remember({name:key,json:true});var label=key.substring(prefix.length);if(typeof firstTableContent[saveObject.columnName]!=="undefined"){$(pieChartGui.columnSelect).append("")}}}$(pieChartGui.columnSelect).append("");$(pieChartGui.columnSelect).append("");for(var attribute in firstTableContent){$(pieChartGui.columnSelect).append("")}if(firstObject.isTemporal){$(pieChartGui.columnSelect).append("")}if(typeof firstObject.locations[0]!=="undefined"){$(pieChartGui.columnSelect).append("");$(pieChartGui.columnSelect).append("")}$(pieChartGui.columnSelect).append("")}}});this.columnSelectorDiv.appendChild(this.datasetSelect);this.columnSelect=document.createElement("select");this.columnSelectorDiv.appendChild(this.columnSelect);this.buttonNewPieChart=document.createElement("button");$(this.buttonNewPieChart).text("add");this.columnSelectorDiv.appendChild(this.buttonNewPieChart);$(this.buttonNewPieChart).click(function(){var isSaved=$(pieChartGui.columnSelect).find("option:selected").first().attr("isSaved");if((typeof isSaved==="undefined")||(isSaved!=1)){pieChartGui.parent.addPieChart($(pieChartGui.datasetSelect).val(),$(pieChartGui.columnSelect).val())}else{var name=pieChartGui.options.localStoragePrefix+$(pieChartGui.columnSelect).val();var saveObject=$.remember({name:name,json:true});if((typeof saveObject!=="undefined")&&(saveObject!=null)){var categories=saveObject.categories;var type=saveObject.type;var columnName=saveObject.columnName;pieChartGui.parent.addCategorizedPieChart($(pieChartGui.datasetSelect).val(),columnName,type,categories)}}});this.buttonPieChartCategoryChooser=document.createElement("button");$(this.buttonPieChartCategoryChooser).text("categorize");this.columnSelectorDiv.appendChild(this.buttonPieChartCategoryChooser);$(this.buttonPieChartCategoryChooser).click(function(){var isSaved=$(pieChartGui.columnSelect).find("option:selected").first().attr("isSaved");if((typeof isSaved==="undefined")||(isSaved!=1)){var chooser=new PieChartCategoryChooser(pieChartGui.parent,pieChartGui.options,$(pieChartGui.datasetSelect).val(),$(pieChartGui.columnSelect).val())}else{alert("Saved datasets can not be categorized again. Try loading and editing instead.")}});this.refreshColumnSelector();this.pieChartsDiv=document.createElement("div");this.pieChartsDiv.id="pieChartsDivID";div.appendChild(this.pieChartsDiv);$(this.pieChartsDiv).height("100%")}PieChartGui.prototype={refreshColumnSelector:function(){$(this.datasetSelect).empty();$(this.columnSelect).empty();if((typeof this.parent.datasets!=="undefined")&&(this.parent.datasets.length>0)){var index=0;var pieChartGui=this;$(this.parent.datasets).each(function(){$(pieChartGui.datasetSelect).append("");index++});$(pieChartGui.datasetSelect).change()}}};var hexcase=0;var b64pad="";function hex_md5(s){return rstr2hex(rstr_md5(str2rstr_utf8(s)))}function b64_md5(s){return rstr2b64(rstr_md5(str2rstr_utf8(s)))}function any_md5(s,e){return rstr2any(rstr_md5(str2rstr_utf8(s)),e)}function hex_hmac_md5(k,d){return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k),str2rstr_utf8(d)))}function b64_hmac_md5(k,d){return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k),str2rstr_utf8(d)))}function any_hmac_md5(k,d,e){return rstr2any(rstr_hmac_md5(str2rstr_utf8(k),str2rstr_utf8(d)),e)}function md5_vm_test(){return hex_md5("abc").toLowerCase()=="900150983cd24fb0d6963f7d28e17f72"}function rstr_md5(s){return binl2rstr(binl_md5(rstr2binl(s),s.length*8))}function rstr_hmac_md5(key,data){var bkey=rstr2binl(key);if(bkey.length>16){bkey=binl_md5(bkey,key.length*8)}var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++){ipad[i]=bkey[i]^909522486;opad[i]=bkey[i]^1549556828}var hash=binl_md5(ipad.concat(rstr2binl(data)),512+data.length*8);return binl2rstr(binl_md5(opad.concat(hash),512+128))}function rstr2hex(input){try{hexcase}catch(e){hexcase=0}var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var output="";var x;for(var i=0;i>>4)&15)+hex_tab.charAt(x&15)}return output}function rstr2b64(input){try{b64pad}catch(e){b64pad=""}var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var output="";var len=input.length;for(var i=0;iinput.length*8){output+=b64pad}else{output+=tab.charAt((triplet>>>6*(3-j))&63)}}}return output}function rstr2any(input,encoding){var divisor=encoding.length;var i,j,q,x,quotient;var dividend=Array(Math.ceil(input.length/2));for(i=0;i0||q>0){quotient[quotient.length]=q}}remainders[j]=x;dividend=quotient}var output="";for(i=remainders.length-1;i>=0;i--){output+=encoding.charAt(remainders[i])}return output}function str2rstr_utf8(input){var output="";var i=-1;var x,y;while(++i>>6)&31),128|(x&63))}else{if(x<=65535){output+=String.fromCharCode(224|((x>>>12)&15),128|((x>>>6)&63),128|(x&63))}else{if(x<=2097151){output+=String.fromCharCode(240|((x>>>18)&7),128|((x>>>12)&63),128|((x>>>6)&63),128|(x&63))}}}}}return output}function str2rstr_utf16le(input){var output="";for(var i=0;i>>8)&255)}return output}function str2rstr_utf16be(input){var output="";for(var i=0;i>>8)&255,input.charCodeAt(i)&255)}return output}function rstr2binl(input){var output=Array(input.length>>2);for(var i=0;i>5]|=(input.charCodeAt(i/8)&255)<<(i%32)}return output}function binl2rstr(input){var output="";for(var i=0;i>5]>>>(i%32))&255)}return output}function binl_md5(x,len){x[len>>5]|=128<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&65535)}function bit_rol(num,cnt){return(num<>>(32-cnt))}PieChartWidget=function(core,div,options){this.datasets;this.selected;this.core=core;this.core.setWidget(this);this.options=(new PieChartConfig(options)).options;this.gui=new PieChartGui(this,div,this.options);this.pieCharts=[]};PieChartWidget.prototype={addCategorizedPieChart:function(watchedDataset,watchedColumn,type,categories){var selectionFunction;if(type==="text"){var selectionFunction=function(columnData){var categoryLabel;$(categories).each(function(){if($.inArray(columnData,this.values)!=-1){categoryLabel=this.label;return false}if(typeof categoryLabel!=="undefined"){return false}});if(typeof categoryLabel==="undefined"){categoryLabel="unknown"}return categoryLabel}}else{if(type==="numeral"){var selectionFunction=function(columnData){var categoryLabel;var columnDataNumeric=parseFloat(columnData);for(var i=0;iwatchedDataset)){newPieChart.initPieChart(GeoTemConfig.datasets)}this.redrawPieCharts(this.selected)},initWidget:function(data){var piechart=this;this.datasets=data;piechart.selected=[];$(this.datasets).each(function(){piechart.selected.push(this.objects)});this.gui.refreshColumnSelector();$(this.pieCharts).each(function(){if(this instanceof PieChart){this.initPieChart(data)}})},redrawPieCharts:function(objects,overwrite){$(this.pieCharts).each(function(){if(this instanceof PieChart){if((typeof overwrite!=="undefined")&&overwrite){this.preHighlightObjects=objects}this.redrawPieChart(objects)}})},highlightChanged:function(objects){if(!GeoTemConfig.highlightEvents){return}if((typeof objects==="undefined")||(objects.length==0)){return}this.redrawPieCharts(objects,false)},selectionChanged:function(selection){if(!GeoTemConfig.selectionEvents){return}if(!selection.valid()){selection.loadAllObjects()}var objects=selection.objects;this.selected=objects;this.redrawPieCharts(objects,true)},getElementData:function(dataObject,watchedColumn,selectionFunction){var columnData;if(watchedColumn.indexOf("[")===-1){columnData=dataObject[watchedColumn];if(typeof columnData==="undefined"){columnData=dataObject.tableContent[watchedColumn]}}else{try{var columnName=watchedColumn.split("[")[0];var IndexAndAttribute=watchedColumn.split("[")[1];if(IndexAndAttribute.indexOf("]")!=-1){var arrayIndex=IndexAndAttribute.split("]")[0];var attribute=IndexAndAttribute.split("]")[1];if(typeof attribute==="undefined"){columnData=dataObject[columnName][arrayIndex]}else{attribute=attribute.split(".")[1];columnData=dataObject[columnName][arrayIndex][attribute]}}}catch(e){if(typeof console!==undefined){console.error(e)}delete columnData}}if((typeof columnData!=="undefined")&&(typeof selectionFunction!=="undefined")){columnData=selectionFunction(columnData)}return(columnData)},getElementsByValue:function(columnValue,watchedDataset,watchedColumn,selectionFunction){var elements=[];var pieChart=this;$(this.datasets[watchedDataset].objects).each(function(){var columnData=pieChart.getElementData(this,watchedColumn,selectionFunction);if(columnData===columnValue){elements.push(this)}});return elements},};function Storytelling(parent){this.index;this.storytelling=this;this.parent=parent;this.options=parent.options;this.initialize()}Storytelling.prototype={remove:function(){},initialize:function(){},triggerHighlight:function(columnElement){},triggerSelection:function(columnElement){},deselection:function(){},filtering:function(){},inverseFiltering:function(){},triggerRefining:function(){},reset:function(){},show:function(){},hide:function(){}};function StorytellingConfig(options){this.options={dariahStorage:false,localStorage:true};if(typeof options!="undefined"){$.extend(this.options,options)}}function StorytellingGui(storytelling,div,options){this.parent=storytelling;var storytellingGui=this;storytellingGui.storytellingContainer=document.createElement("div");$(div).append(storytellingGui.storytellingContainer);storytellingGui.storytellingContainer.style.position="relative"}StorytellingGui.prototype={};StorytellingWidget=function(core,div,options){this.datasets;this.core=core;this.core.setWidget(this);this.currentStatus=new Object();this.options=(new StorytellingConfig(options)).options;this.gui=new StorytellingGui(this,div,this.options);this.datasetLink;Publisher.Subscribe("mapChanged",this,function(mapName){this.client.currentStatus.mapChanged=mapName;this.client.createLink()});var currentStatus=$.url().param("currentStatus");if(typeof currentStatus!=="undefined"){this.currentStatus=$.deparam(currentStatus);$.each(this.currentStatus,function(action,data){Publisher.Publish(action,data,this)})}};StorytellingWidget.prototype={initWidget:function(data){var storytellingWidget=this;var gui=storytellingWidget.gui;storytellingWidget.datasets=data;$(gui.storytellingContainer).empty();var magneticLinkParam="";var datasetIndex=0;var linkCount=1;$(storytellingWidget.datasets).each(function(){var dataset=this;if(magneticLinkParam.length>0){magneticLinkParam+="&"}var paragraph=$("

    ");paragraph.append(dataset.label);if(typeof dataset.url!=="undefined"){var type="csv";if(typeof dataset.type!=="undefined"){type=dataset.type}else{if(dataset.url.toLowerCase().endsWith("kml")){type="kml"}}magneticLinkParam+=type+linkCount+"=";linkCount++;magneticLinkParam+=dataset.url;var tableLinkDiv=document.createElement("a");tableLinkDiv.title=dataset.url;tableLinkDiv.href=dataset.url;tableLinkDiv.target="_";tableLinkDiv.setAttribute("class","externalLink");paragraph.append(tableLinkDiv)}else{if(storytellingWidget.options.dariahStorage){var uploadToDARIAH=document.createElement("a");$(uploadToDARIAH).append("Upload to DARIAH Storage");uploadToDARIAH.title="";uploadToDARIAH.href=dataset.url;var localDatasetIndex=new Number(datasetIndex);$(uploadToDARIAH).click(function(){var csv=GeoTemConfig.createCSVfromDataset(localDatasetIndex);var storageURL="http://ref.dariah.eu/storage/";$.ajax({url:storageURL,type:"POST",contentType:"text/csv",data:csv,success:function(data,status,xhr){var location=xhr.getResponseHeader("Location");dsid=location.substring(location.lastIndexOf("/")+1);storytellingWidget.datasets[localDatasetIndex].url=location;storytellingWidget.datasets[localDatasetIndex].type="csv";storytellingWidget.initWidget(storytellingWidget.datasets)},error:function(data,text,error){alert("error creating new file in dariah storage because "+text);console.log(data);console.log(text);console.log(error)}});return(false)});paragraph.append(uploadToDARIAH)}else{if(storytellingWidget.options.localStorage){var saveToLocalStorage=document.createElement("a");$(saveToLocalStorage).append("Save to Local Storage");saveToLocalStorage.title="";saveToLocalStorage.href=dataset.url;var localDatasetIndex=new Number(datasetIndex);$(saveToLocalStorage).click(function(){var csv=GeoTemConfig.createCSVfromDataset(localDatasetIndex);var storageName="GeoBrowser_dataset_"+GeoTemConfig.datasets[localDatasetIndex].label;$.remember({name:storageName,value:csv});storytellingWidget.datasets[localDatasetIndex].url=storageName;storytellingWidget.datasets[localDatasetIndex].type="local";storytellingWidget.initWidget(storytellingWidget.datasets);return(false)});paragraph.append(saveToLocalStorage)}}}$(gui.storytellingContainer).append(paragraph);datasetIndex++});this.datasetLink=magneticLinkParam;this.createLink()},createLink:function(){$(this.gui.storytellingContainer).find(".magneticLink").remove();var magneticLink=document.createElement("a");magneticLink.setAttribute("class","magneticLink");$(magneticLink).append("Magnetic Link");magneticLink.title="Use this link to reload currently loaded (online) data.";magneticLink.href="?"+this.datasetLink;var currentStatusParam=$.param(this.currentStatus);if(currentStatusParam.length>0){magneticLink.href+="¤tStatus="+currentStatusParam}magneticLink.target="_";$(this.gui.storytellingContainer).prepend(magneticLink)},highlightChanged:function(objects){},selectionChanged:function(selection){},};function LineOverlay(parent){this.lineOverlay=this;this.parent=parent;this.options=parent.options;this.attachedMapWidgets=parent.attachedMapWidgets;this.overlays=[];this.initialize()}LineOverlay.prototype={initialize:function(){}};function LineOverlayConfig(options){this.options={showArrows:true,showLines:"both",onlyShowSelectedOrHighlighted:false,};if(typeof options!="undefined"){$.extend(this.options,options)}}bearing=function(x1,y1,x2,y2){b_x=0;b_y=1;a_x=x2-x1;a_y=y2-y1;angle_rad=Math.acos((a_x*b_x+a_y*b_y)/Math.sqrt(a_x*a_x+a_y*a_y));angle=360/(2*Math.PI)*angle_rad;if(a_x<0){return 360-angle}else{return angle}};LineOverlayWidget=function(core,options){this.core=core;this.core.setWidget(this);this.options=(new LineOverlayConfig(options)).options;this.attachedMapWidgets=new Array();this.lineOverlay=new LineOverlay(this);this.lines=[];this.multiLineFeature;this.selected=[]};function Line(objectStart,objectEnd){this.objectStart=objectStart;this.objectEnd=objectEnd}LineOverlayWidget.prototype={initWidget:function(){var lineOverlayWidget=this;this.drawLines()},highlightChanged:function(objects){if(!GeoTemConfig.highlightEvents){return}this.drawLines(GeoTemConfig.mergeObjects(objects,this.selected))},selectionChanged:function(selection){if(!GeoTemConfig.selectionEvents){return}if(selection.valid()){this.selected=selection.objects}else{this.selected=[]}this.drawLines(this.selected)},triggerHighlight:function(item){},tableSelection:function(){},deselection:function(){},filtering:function(){},inverseFiltering:function(){},triggerRefining:function(){},reset:function(){},getElementData:function(dataObject,watchedColumn,selectionFunction){var columnData;if(watchedColumn.indexOf("[")===-1){columnData=dataObject[watchedColumn];if(typeof columnData==="undefined"){columnData=dataObject.tableContent[watchedColumn]}}else{try{var columnName=watchedColumn.split("[")[0];var IndexAndAttribute=watchedColumn.split("[")[1];if(IndexAndAttribute.indexOf("]")!=-1){var arrayIndex=IndexAndAttribute.split("]")[0];var attribute=IndexAndAttribute.split("]")[1];if(typeof attribute==="undefined"){columnData=dataObject[columnName][arrayIndex]}else{attribute=attribute.split(".")[1];columnData=dataObject[columnName][arrayIndex][attribute]}}}catch(e){if(typeof console!==undefined){console.error(e)}delete columnData}}if((typeof columnData!=="undefined")&&(typeof selectionFunction!=="undefined")){columnData=selectionFunction(columnData)}return(columnData)},matchColumns:function(dataSet1,columnName1,dataSet2,columnName2){var lineOverlayWidget=this;lineOverlayWidget.lines;$(GeoTemConfig.datasets[dataSet1].objects).each(function(){var object1=this;var data1=lineOverlayWidget.getElementData(object1,columnName1);data1=data1.split(",");$(GeoTemConfig.datasets[dataSet2].objects).each(function(){var object2=this;if((columnName1===columnName2)&&(dataSet1===dataSet2)&&(object1.index<=object2.index)){return}var data2=lineOverlayWidget.getElementData(object2,columnName2);data2=data2.split(",");for(var i=0;i0)){$(objects).each(function(){$.merge(flatObjects,this)})}var lineOverlayWidget=this;$(lineOverlayWidget.attachedMapWidgets).each(function(){var mapWidget=this.mapWidget;var lineLayer=this.lineLayer;var map=mapWidget.openlayersMap;var cs=mapWidget.mds.getObjectsByZoom();mapWidget.openlayersMap.setLayerIndex(lineLayer,99);lineLayer.removeAllFeatures();var lineElements=[];var checkIfLineInPreset=function(){return false};if(lineOverlayWidget.options.showLines==="inbound"){checkIfLineInPreset=function(objectStart,objectEnd,flatObjects){return($.inArray(objectEnd,flatObjects)===-1)}}else{if(lineOverlayWidget.options.showLines==="outbound"){checkIfLineInPreset=function(objectStart,objectEnd,flatObjects){return($.inArray(objectStart,flatObjects)===-1)}}else{checkIfLineInPreset=function(objectStart,objectEnd,flatObjects){return(($.inArray(objectStart,flatObjects)===-1)&&($.inArray(objectEnd,flatObjects)===-1))}}}$(lineOverlayWidget.lines).each(function(){var line=this;if((lineOverlayWidget.options.onlyShowSelectedOrHighlighted===true)||(flatObjects.length>0)){if(checkIfLineInPreset(line.objectStart,line.objectEnd,flatObjects)){return}}var xyStart=lineOverlayWidget.getXYofObject(cs,line.objectStart);if((typeof xyStart.x==="undefined")&&(typeof xyStart.y==="undefined")){return}var xyEnd=lineOverlayWidget.getXYofObject(cs,line.objectEnd);if((typeof xyEnd.x==="undefined")&&(typeof xyEnd.y==="undefined")){return}if((xyStart.x===xyEnd.x)&&(xyStart.y===xyEnd.y)){return}var points=new Array(new OpenLayers.Geometry.Point(xyStart.x,xyStart.y),new OpenLayers.Geometry.Point(xyEnd.x,xyEnd.y));var line=new OpenLayers.Geometry.LineString(points);var found=false;$(lineElements).each(function(){var checkLine=this.line;if(((checkLine.components[0].x===line.components[0].x)&&(checkLine.components[0].y===line.components[0].y)&&(checkLine.components[1].x===line.components[1].x)&&(checkLine.components[1].y===line.components[1].y))||((lineOverlayWidget.options.showArrows===false)&&(checkLine.components[0].x===line.components[1].x)&&(checkLine.components[0].y===line.components[1].y)&&(checkLine.components[1].x===line.components[0].x)&&(checkLine.components[1].y===line.components[0].y))){found=true;this.width++;return false}});if(found===true){return}lineElements.push({line:line,width:1})});$(lineElements).each(function(){var line=this.line;var width=this.width;if(lineOverlayWidget.options.showArrows===true){var xyStart=line.components[0];var xyEnd=line.components[1];var arrowFeature=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(xyEnd.x-((xyEnd.x-xyStart.x)*0.03),xyEnd.y-((xyEnd.y-xyStart.y)*0.03)),{type:"triangle",angle:bearing(xyStart.x,xyStart.y,xyEnd.x,xyEnd.y),width:width+1});lineLayer.addFeatures(arrowFeature)}var lineFeature=new OpenLayers.Feature.Vector(line,{width:width});lineLayer.addFeatures(lineFeature)})})},attachMapWidget:function(mapWidget){var styles=new OpenLayers.StyleMap({"default":{graphicName:"${type}",rotation:"${angle}",pointRadius:"${width}",strokeColor:"#0000ff",strokeOpacity:0.5,strokeWidth:"${width}",fillOpacity:1}});var lineOverlayWidget=this;var lineLayer=new OpenLayers.Layer.Vector("Line Layer",{styleMap:styles,isBaseLayer:false});mapWidget.openlayersMap.addLayer(lineLayer);mapWidget.openlayersMap.setLayerIndex(lineLayer,99);this.attachedMapWidgets.push({mapWidget:mapWidget,lineLayer:lineLayer});mapWidget.openlayersMap.events.register("zoomend",lineOverlayWidget,function(){this.drawLines(this.selected)})}};DataObject=function(name,description,locations,dates,weight,tableContent,projection){this.name=$.trim(name);this.description=$.trim(description);this.weight=weight;this.tableContent=new Object();var objectTableContent=this.tableContent;for(key in tableContent){value=tableContent[key];objectTableContent[$.trim(key)]=$.trim(value)}this.percentage=0;this.setPercentage=function(percentage){this.percentage=percentage};this.locations=[];var objectLocations=this.locations;$(locations).each(function(){objectLocations.push({latitude:this.latitude,longitude:this.longitude,place:$.trim(this.place)})});if(!(projection instanceof OpenLayers.Projection)){projection=new OpenLayers.Projection("EPSG:4326")}this.projection=projection;var tempLocations=[];if(typeof this.locations!=="undefined"){$(this.locations).each(function(){this.latitude=parseFloat(this.latitude);this.longitude=parseFloat(this.longitude);if(projection.getCode()==="EPSG:4326"){if((typeof this.latitude==="number")&&(this.latitude>=-90)&&(this.latitude<=90)&&(typeof this.longitude==="number")&&(this.longitude>=-180)&&(this.longitude<=180)){tempLocations.push(this)}else{if((GeoTemConfig.debug)&&(typeof console!==undefined)){console.error("Object "+name+" has no valid coordinate. ("+this.latitude+","+this.longitude+")")}}if(this.longitude==180){this.longitude=179.999}if(this.longitude==-180){this.longitude=-179.999}if(this.latitude==90){this.latitude=89.999}if(this.latitude==-90){this.latitude=-89.999}}});this.locations=tempLocations}this.isGeospatial=false;if((typeof this.locations!=="undefined")&&(this.locations.length>0)){this.isGeospatial=true}this.placeDetails=[];for(var i=0;i=this.placeDetails[locationId].length){return this.placeDetails[locationId][this.placeDetails[locationId].length-1]}return this.placeDetails[locationId][level]};this.dates=dates;this.isTemporal=false;if((typeof this.dates!=="undefined")&&(this.dates.length>0)){this.isTemporal=true;for(var i=0;ithis.TimeSpanEnd){if((GeoTemConfig.debug)&&(typeof console!==undefined)){console.error("Object "+this.name+" has wrong fuzzy dating (twisted start/end?).")}}else{var timeSpanBeginGranularity=formats.indexOf(this.TimeSpanBegin._f);var timeSpanEndGranularity=formats.indexOf(this.TimeSpanEnd._f);var timeSpanGranularity=Math.max(timeSpanBeginGranularity,timeSpanEndGranularity);if(timeSpanGranularity===0){this.TimeSpanGranularity=SimileAjax.DateTime.YEAR}else{if(timeSpanGranularity===1){this.TimeSpanGranularity=SimileAjax.DateTime.MONTH}else{if(timeSpanGranularity===2){this.TimeSpanGranularity=SimileAjax.DateTime.DAY}else{if(timeSpanGranularity===3){this.TimeSpanGranularity=SimileAjax.DateTime.HOUR}else{if(timeSpanGranularity===4){this.TimeSpanGranularity=SimileAjax.DateTime.MINUTE}else{if(timeSpanGranularity===5){this.TimeSpanGranularity=SimileAjax.DateTime.SECOND}else{if(timeSpanGranularity===6){this.TimeSpanGranularity=SimileAjax.DateTime.MILLISECOND}}}}}}}if(timeSpanBeginGranularity===0){this.TimeSpanBeginGranularity=SimileAjax.DateTime.YEAR}else{if(timeSpanBeginGranularity===1){this.TimeSpanBeginGranularity=SimileAjax.DateTime.MONTH}else{if(timeSpanBeginGranularity===2){this.TimeSpanBeginGranularity=SimileAjax.DateTime.DAY}else{if(timeSpanBeginGranularity===3){this.TimeSpanBeginGranularity=SimileAjax.DateTime.HOUR}else{if(timeSpanBeginGranularity===4){this.TimeSpanBeginGranularity=SimileAjax.DateTime.MINUTE}else{if(timeSpanBeginGranularity===5){this.TimeSpanBeginGranularity=SimileAjax.DateTime.SECOND}else{if(timeSpanBeginGranularity===6){this.TimeSpanBeginGranularity=SimileAjax.DateTime.MILLISECOND}}}}}}}if(timeSpanEndGranularity===0){this.TimeSpanEndGranularity=SimileAjax.DateTime.YEAR}else{if(timeSpanEndGranularity===1){this.TimeSpanEndGranularity=SimileAjax.DateTime.MONTH}else{if(timeSpanEndGranularity===2){this.TimeSpanEndGranularity=SimileAjax.DateTime.DAY}else{if(timeSpanEndGranularity===3){this.TimeSpanEndGranularity=SimileAjax.DateTime.HOUR}else{if(timeSpanEndGranularity===4){this.TimeSpanEndGranularity=SimileAjax.DateTime.MINUTE}else{if(timeSpanEndGranularity===5){this.TimeSpanEndGranularity=SimileAjax.DateTime.SECOND}else{if(timeSpanEndGranularity===6){this.TimeSpanEndGranularity=SimileAjax.DateTime.MILLISECOND}}}}}}}if(this.TimeSpanEnd.year()-this.TimeSpanBegin.year()>=1000){this.TimeSpanGranularity=SimileAjax.DateTime.MILLENNIUM}else{if(this.TimeSpanEnd.year()-this.TimeSpanBegin.year()>=100){this.TimeSpanGranularity=SimileAjax.DateTime.CENTURY}else{if(this.TimeSpanEnd.year()-this.TimeSpanBegin.year()>=10){this.TimeSpanGranularity=SimileAjax.DateTime.DECADE}}}if(timeSpanEndGranularity===0){this.TimeSpanEnd.endOf("year")}else{if(timeSpanEndGranularity===1){this.TimeSpanEnd.endOf("month")}else{if(timeSpanEndGranularity===2){this.TimeSpanEnd.endOf("day")}else{if(timeSpanEndGranularity===3){this.TimeSpanEnd.endOf("hour")}else{if(timeSpanEndGranularity===4){this.TimeSpanEnd.endOf("minute")}else{if(timeSpanEndGranularity===5){this.TimeSpanEnd.endOf("second")}else{if(timeSpanEndGranularity===6){}}}}}}}this.isFuzzyTemporal=true}}}}this.getDate=function(dateId){return this.dates[dateId].date};this.getTimeGranularity=function(dateId){return this.dates[dateId].granularity};this.setIndex=function(index){this.index=index};this.getTimeString=function(){if(this.timeStart!=this.timeEnd){return(SimileAjax.DateTime.getTimeString(this.granularity,this.timeStart)+" - "+SimileAjax.DateTime.getTimeString(this.granularity,this.timeEnd))}else{return SimileAjax.DateTime.getTimeString(this.granularity,this.timeStart)+""}};this.contains=function(text){var allCombined=this.name+" "+this.description+" "+this.weight+" ";$.each(this.dates,function(key,value){$.each(value,function(){allCombined+=this+" "})});$.each(this.locations,function(key,value){$.each(value,function(){allCombined+=this+" "})});$.each(this.tableContent,function(key,value){allCombined+=value+" "});return(allCombined.indexOf(text)!=-1)};this.hasColorInformation=false;this.setColor=function(r0,g0,b0,r1,g1,b1){this.hasColorInformation=true;this.color=new Object();this.color.r0=r0;this.color.g0=g0;this.color.b0=b0;this.color.r1=r1;this.color.g1=g1;this.color.b1=b1};this.getColor=function(){if(!this.hasColorInformation){return}color=new Object();color.r0=this.r0;color.g0=this.g0;color.b0=this.b0;color.r1=this.r1;color.g1=this.g1;color.b1=this.b1;return color};Publisher.Publish("dataobjectAfterCreation",this)};Dataset=function(objects,label,url,type){this.objects=objects;this.label=label;this.url=url;this.type=type;this.color;if(GeoTemConfig.allowUserShapeAndColorChange){this.graphic={shape:"circle",rotation:0}}Publisher.Publish("datasetAfterCreation",this)};function TimeDataSource(options){this.options=options;this.timeSlices=[];this.unit;this.minDate;this.maxDate;this.eventSources;this.events;this.leftSlice;this.rightSlice;this.hashMapping}TimeDataSource.prototype={findTimeUnits:function(granularity,timeUnit,pixels){var time=SimileAjax.DateTime;this.availableUnits=[];var givenUnits=SimileAjax.DateTime.gregorianUnitLengths;for(var i=0;ii){continue}var slices=0;var t=new Date(this.minDate.getTime());do{time.roundDownToInterval(t,i,undefined,1,0);slices++;time.incrementByInterval(t,i,undefined)}while(t.getTime()<=this.maxDate.getTime()&&slices0&&slices<=pixels){this.availableUnits.push({unit:i,slices:slices,label:SimileAjax.DateTime.Strings[GeoTemConfig.language][i]})}}var unitDiff200=pixels+1;for(var i=0;ithis.maxDate.getTime()){this.maxDate=time}}}}if(this.minDate==undefined){this.minDate=this.options.defaultMinDate;this.maxDate=this.options.defaultMaxDate}this.findTimeUnits(granularity,timeUnit,pixels);this.initializeSlices()},initializeSlices:function(){for(var i=0;i=t1&&date=t2){stack=this.timeSlices[k+1].getStack(i);projStack=this.timeSlices[k+1].getProjStack(projId)}if(stack!=null){stack.addObject(o);projStack.addObject(o);this.hashMapping[i][o.index]=stack;this.projHashMapping[i][o.index]=projStack;break}}}}}this.events=[];for(var i=0;i0){m=1;if(leftTime!=null){n1=this.getSliceIndex(leftTime)-this.leftSlice;n2=this.rightSlice-this.getSliceIndex(rightTime)}else{slice=this.getSliceIndex(time);if(slice==this.leftSlice||slice==this.rightSlice){return}n1=slice-1-this.leftSlice;n2=this.rightSlice-slice-1}}else{if(delta<0){n1=this.leftSlice;n2=this.timeSlices.length-1-this.rightSlice}}var zoomSlices=2*delta;if(Math.abs(n1+n2)value){value=this.projStacks[i].overlay}}return value}}function TimeStack(){this.overlay=0;this.value=0;this.elements=[];this.addObject=function(object){this.elements.push(object);this.value+=object.weight}}Binning=function(map,options){this.map=map;this.options=options;this.reset()};Binning.prototype={getSet:function(){var type=this.options.binning;if(!type){return this.getExactBinning()}else{if(type=="generic"){return this.getGenericBinning()}else{if(type=="square"){return this.getSquareBinning()}else{if(type=="hexagonal"){return this.getHexagonalBinning()}else{if(type=="triangular"){return this.getTriangularBinning()}}}}}},getExactBinning:function(){if(typeof this.binnings.exact=="undefined"){this.exactBinning()}return this.binnings.exact},getGenericBinning:function(){if(typeof this.binnings.generic=="undefined"){this.genericBinning()}return this.binnings.generic},getSquareBinning:function(){if(typeof this.binnings.square=="undefined"){this.squareBinning()}return this.binnings.square},getHexagonalBinning:function(){if(typeof this.binnings.hexagonal=="undefined"){this.hexagonalBinning()}return this.binnings.hexagonal},getTriangularBinning:function(){if(typeof this.binnings.triangular=="undefined"){this.triangularBinning()}return this.binnings.triangular},reset:function(){this.zoomLevels=this.map.getNumZoomLevels();this.binnings=[];this.minimumRadius=this.options.minimumRadius;this.maximumRadius=this.minimumRadius;this.maximumPoints=0;this.minArea=0;this.maxArea=0},getMaxRadius:function(size){return 4*Math.log(size)/Math.log(2)},setObjects:function(objects){this.objects=objects;for(var i=0;ithis.maximumRadius){this.maximumRadius=r;this.maximumPoints=weight;this.maxArea=Math.PI*this.maximumRadius*this.maximumRadius;this.minArea=Math.PI*this.minimumRadius*this.minimumRadius}}},dist:function(x1,y1,x2,y2){return Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))},exactBinning:function(){var circleSets=[];var hashMaps=[];var selectionHashs=[];var circleAggregates=[];var bins=[];for(var i=0;i0){balls.push({search:k,elements:point.elements[k],radius:point.radii[k],weight:point.weights[k]})}}var orderBalls=function(b1,b2){if(b1.radius>b2.radius){return -1}if(b2.radius>b1.radius){return 1}return 0};var fatherBin={circles:[],length:0,radius:point.radius/resolution,x:point.x,y:point.y};for(var k=0;k1){bins.push(fatherBin)}}circleSets.push(circles);binSets.push(bins);hashMaps.push(hashMap);selectionHashs.push(selectionMap)}circleSets.reverse();binSets.reverse();hashMaps.reverse();selectionHashs.reverse();return{circleSets:circleSets,binSets:binSets,hashMaps:hashMaps,selectionHashs:selectionHashs}},genericBinning:function(){if(this.options.circlePackings||this.objects.length==1){this.binnings.generic=this.genericClustering(this.objects)}else{var circleSets=[];var hashMaps=[];var selectionHashs=[];for(var i=0;idy){sx=bin.x-(x1+bin.r-radius);sy=bin.y-(m*bin.x+n)}else{sy=bin.y-(y1+bin.r-radius);sx=bin.x-(bin.y-n)/m}}return{x:sx,y:sy}},binSize:function(elements){var size=0;for(var i in elements){size+=elements[i].weight}return size},setCircleSet:function(id,binData){var circleSets=[];var hashMaps=[];var selectionHashs=[];for(var i=0;imax){max=bs;radius=binData[i][j].r/resolution}}}for(var j=0;jyMax/xMax*x){triangleIndex=partition}else{triangleIndex=partition+1}}if(typeof bins[k][""+binY][""+triangleIndex]=="undefined"){bins[k][""+binY][""+triangleIndex]=[];for(var z=0;zyMax/xMax*x){triangleIndex=partition}else{triangleIndex=partition+1}}if(typeof bins[k][""+binY][""+triangleIndex]=="undefined"){bins[k][""+binY][""+triangleIndex]=[];for(var z=0;zmax1){if(max1>max2){max2=max1}max1=this.radii[i]}else{if(this.radii[i]>max2){max2=this.radii[i]}}}if(count==1){this.radius=max1*resolution}else{if(count==2){this.radius=(max1+max2)*resolution}else{if(count==3){var d=(2/3*Math.sqrt(3)-1)*max1;this.radius=(d+max1+max2)*resolution}else{if(count==4){var d=(Math.sqrt(2)-1)*max2;this.radius=(d+max1+max2)*resolution}}}}}};Vertex.prototype.addElement=function(e,weight,index){this.elements[index].push(e);this.size+=weight;this.weights[index]+=weight};function Edge(v0,v1){this.v0=v0;this.v1=v1;this.leftFace;this.rightFace;this.legal=true;this.setLength()}Edge.prototype.setLength=function(){var dx=this.v0.x-this.v1.x;var dy=this.v0.y-this.v1.y;this.length=Math.sqrt(dx*dx+dy*dy)};Edge.prototype.contains=function(v){if(this.v0==v||this.v1==v){return true}return false};Edge.prototype.replaceFace=function(f_old,f_new){if(this.leftFace==f_old){this.leftFace=f_new}else{if(this.rightFace==f_old){this.rightFace=f_new}}};Edge.prototype.setFace=function(f){if(f.leftOf(this)){this.leftFace=f}else{this.rightFace=f}};Edge.prototype.setFaces=function(f1,f2){if(f1.leftOf(this)){this.leftFace=f1;this.rightFace=f2}else{this.leftFace=f2;this.rightFace=f1}};Edge.prototype.removeFace=function(f){if(this.leftFace==f){this.leftFace=null}else{this.rightFace=null}};Edge.prototype.equals=function(e){if(this.v0==e.v0&&this.v1==e.v1||this.v0==e.v1&&this.v1==e.v0){return true}return false};function Triangle(edges){this.edges=edges;this.setVertices();this.descendants=[]}Triangle.prototype.getTriple=function(e){var i=arrayIndex(this.edges,e);return{e_s:this.edges[(i+1)%3],e_p:this.edges[(i+2)%3],u:this.vertices[(i+2)%3]}};Triangle.prototype.leftOf=function(e){var i=arrayIndex(this.edges,e);if(this.vertices[i].y!=this.vertices[(i+1)%3].y){return this.vertices[i].y>this.vertices[(i+1)%3].y}return this.vertices[i].y>this.vertices[(i+2)%3].y};Triangle.prototype.getNext=function(v){var i=arrayIndex(this.vertices,v);return this.vertices[(i+1)%3]};Triangle.prototype.oppositeEdge=function(v){var i=arrayIndex(this.vertices,v);return this.edges[(i+1)%3]};Triangle.prototype.contains=function(v){return arrayIndex(this.vertices,v)!=-1};Triangle.prototype.replace=function(e_old,e_new){this.edges[arrayIndex(this.edges,e_old)]=e_new};Triangle.prototype.setVertices=function(){if(this.edges[1].v0==this.edges[0].v0||this.edges[1].v1==this.edges[0].v0){this.vertices=[this.edges[0].v1,this.edges[0].v0]}else{this.vertices=[this.edges[0].v0,this.edges[0].v1]}if(this.edges[2].v0==this.vertices[0]){this.vertices.push(this.edges[2].v1)}else{this.vertices.push(this.edges[2].v0)}};Triangle.prototype.replaceBy=function(triangles){this.descendants=triangles;this.edges[0].replaceFace(this,triangles[0]);this.edges[1].replaceFace(this,triangles[1]);this.edges[2].replaceFace(this,triangles[2])};Triangle.prototype.CalcCircumcircle=function(){var v0=this.vertices[0];var v1=this.vertices[1];var v2=this.vertices[2];var A=v1.x-v0.x;var B=v1.y-v0.y;var C=v2.x-v0.x;var D=v2.y-v0.y;var E=A*(v0.x+v1.x)+B*(v0.y+v1.y);var F=C*(v0.x+v2.x)+D*(v0.y+v2.y);var G=2*(A*(v2.y-v1.y)-B*(v2.x-v1.x));var cx=(D*E-B*F)/G;var cy=(A*F-C*E)/G;this.center=new Vertex(cx,cy);var dx=this.center.x-v0.x;var dy=this.center.y-v0.y;this.radius_squared=dx*dx+dy*dy};Triangle.prototype.inCircumcircle=function(v){if(this.radius_squared==undefined){this.CalcCircumcircle()}var dx=this.center.x-v.x;var dy=this.center.y-v.y;var dist_squared=dx*dx+dy*dy;return(dist_squared<=this.radius_squared)};Triangle.prototype.interior=function(v){var v0=this.vertices[0];var v1=this.vertices[1];var v2=this.vertices[2];var dotAB=(v.x-v0.x)*(v0.y-v1.y)+(v.y-v0.y)*(v1.x-v0.x);var dotBC=(v.x-v1.x)*(v1.y-v2.y)+(v.y-v1.y)*(v2.x-v1.x);var dotCA=(v.x-v2.x)*(v2.y-v0.y)+(v.y-v2.y)*(v0.x-v2.x);if(dotAB>0||dotBC>0||dotCA>0){return null}else{if(dotAB<0&&dotBC<0&&dotCA<0){return this}else{if(dotAB==0){if(dotBC==0){return this.vertices[1]}else{if(dotCA==0){return this.vertices[0]}}return this.edges[0]}else{if(dotBC==0){if(dotCA==0){return this.vertices[2]}return this.edges[1]}else{if(dotCA==0){return this.edges[2]}}}}}};function Clustering(xMin,yMin,xMax,yMax){this.triangles=[];this.newTriangles=[];this.bbox={x1:xMin,y1:yMin,x2:xMax,y2:yMax};this.CreateBoundingTriangle();this.edges=[];this.vertices=[];this.legalizes=0;this.collapses=0}Clustering.prototype.locate=function(v){if(this.boundingTriangle.descendants.length==0){return this.boundingTriangle}var triangles=this.boundingTriangle.descendants;while(true){for(var i=0;i0){var e=this.deleteEdges.pop();if(e.legal){var l=this.edges.length;var newVertex=this.mergeVertices(e);newVertex.CalculateRadius(resolution);for(var k=l;kt2.u.y){console.info("equal y conflict ...");console.info(e);alert();c++}}else{var v1,v2;if(e.v0.y>e.v1.y){v1=e.v0;v2=e.v1}else{v1=e.v1;v2=e.v0}if(!leftOf(v1,v2,t1.u)){console.info("left right conflict ... left is right");console.info(e);alert();c++}if(leftOf(v1,v2,t2.u)){console.info("left right conflict ... right is left");console.info(e);alert();c++}}}for(i in this.edges){if(this.edges[i].legal){var e=this.edges[i];var tr0=e.leftFace.getTriple(e);var tr1=e.rightFace.getTriple(e);if(!tr0.e_p.legal||!tr0.e_s.legal||!tr1.e_p.legal||!tr1.e_s.legal){console.info(e);console.info("conflict in edge continuity");return}}}};function BinaryHeap(scoreFunction){this.content=[];this.scoreFunction=scoreFunction}BinaryHeap.prototype={push:function(element){this.content.push(element);this.bubbleUp(this.content.length-1)},pop:function(){var result=this.content[0];var end=this.content.pop();if(this.content.length>0){this.content[0]=end;this.sinkDown(0)}return result},remove:function(node){var len=this.content.length;for(var i=0;i0){var parentN=Math.floor((n+1)/2)-1,parent=this.content[parentN];if(this.scoreFunction(element)1){dropdownButton.setAttribute("class","dropdownButtonEnabled")}else{dropdownButton.setAttribute("class","dropdownButtonDisabled")}dropdownButton.onclick=function(){if(elements.length>1){dropdown.changeVisibility()}};dropdownButton.title=title;this.getValue=function(){return this.selectedEntry.innerHTML};var entryMenu=document.createElement("div");entryMenu.setAttribute("class","dropdownMenu");this.div.appendChild(entryMenu);if(typeof maxListHeight!=="undefined"){$(entryMenu).height(maxListHeight)}var entries=document.createElement("dl");var addEntry=function(e){var entry=document.createElement("dt");entry.setAttribute("class","dropdownUnselectedEntry");entry.innerHTML=e.name;entry.onclick=function(){e.onclick();dropdown.changeVisibility();dropdown.changeEntries(e)};entries.appendChild(entry);e.entry=entry};for(var i=0;i0){this.changeEntries(elements[0])}}else{this.changeEntries(elements[index])}};this.changeEntries=function(element){if(this.selectedEntry){this.selectedEntry.setAttribute("class","dropdownUnselectedEntry")}this.selectedEntry=element.entry;this.selectedEntry.setAttribute("class","dropdownSelectedEntry");this.selection.innerHTML="
    "+element.name+"
    "};this.changeVisibility=function(){this.visibility=!this.visibility;if(this.visibility){entryMenu.style.display="block"}else{entryMenu.style.display="none"}}}function MapZoomSlider(parent,orientation){this.parent=parent;var zs=this;this.div=document.createElement("div");this.div.setAttribute("class","sliderStyle-"+orientation);var sliderContainer=document.createElement("div");sliderContainer.setAttribute("class","zoomSliderContainer-"+orientation);var sliderDiv=document.createElement("div");sliderDiv.tabIndex=1;var sliderInputDiv=document.createElement("div");sliderDiv.appendChild(sliderInputDiv);sliderContainer.appendChild(sliderDiv);this.slider=new Slider(sliderDiv,sliderInputDiv,orientation);this.div.appendChild(sliderContainer);var zoomIn=document.createElement("img");zoomIn.src=GeoTemConfig.path+"zoom_in.png";zoomIn.setAttribute("class","zoomSliderIn-"+orientation);zoomIn.onclick=function(){zs.parent.zoom(1)};this.div.appendChild(zoomIn);var zoomOut=document.createElement("img");zoomOut.src=GeoTemConfig.path+"zoom_out.png";zoomOut.setAttribute("class","zoomSliderOut-"+orientation);zoomOut.onclick=function(){zs.parent.zoom(-1)};this.div.appendChild(zoomOut);this.slider.onclick=function(){console.info(zs.slider.getValue())};this.slider.handle.onmousedown=function(){var oldValue=zs.slider.getValue();document.onmouseup=function(){if(!zs.parent.zoom((zs.slider.getValue()-oldValue)/zs.max*zs.levels)){zs.setValue(oldValue)}document.onmouseup=null}};this.setValue=function(value){this.slider.setValue(value/this.levels*this.max)};this.setMaxAndLevels=function(max,levels){this.max=max;this.levels=levels;this.slider.setMaximum(max)};this.setLanguage=function(){zoomIn.title=GeoTemConfig.getString("zoomIn");zoomOut.title=GeoTemConfig.getString("zoomOut");this.slider.handle.title=GeoTemConfig.getString("zoomSlider")}}function MapPopup(parent){this.parentDiv=parent.gui.mapWindow;this.initialize=function(x,y,onclose){var popup=this;this.x=x;this.y=y;this.popupDiv=document.createElement("div");this.popupDiv.setAttribute("class","ddbPopupDiv");this.parentDiv.appendChild(this.popupDiv);this.cancel=document.createElement("div");this.cancel.setAttribute("class","ddbPopupCancel");this.cancel.title=GeoTemConfig.getString("close");this.cancel.onclick=function(){if(typeof onclose!="undefined"){onclose()}popup.reset()};this.input=document.createElement("div");this.input.style.maxWidth=Math.floor(this.parentDiv.offsetWidth*0.75)+"px";this.input.style.maxHeight=Math.floor(this.parentDiv.offsetHeight*0.75)+"px";this.input.setAttribute("class","ddbPopupInput");this.popupDiv.appendChild(this.input);this.popupDiv.appendChild(this.cancel);var peak=document.createElement("div");peak.setAttribute("class","popupPeak");this.popupDiv.appendChild(peak);var topRight=document.createElement("div");topRight.setAttribute("class","popupTopRight");this.popupDiv.appendChild(topRight);var bottomRight=document.createElement("div");bottomRight.setAttribute("class","popupBottomRight");this.popupDiv.appendChild(bottomRight);this.popupRight=document.createElement("div");this.popupRight.setAttribute("class","popupRight");this.popupDiv.appendChild(this.popupRight);this.popupBottom=document.createElement("div");this.popupBottom.setAttribute("class","popupBottom");this.popupDiv.appendChild(this.popupBottom)};this.setContent=function(content){$(this.input).empty();this.visible=true;$(this.input).append(content);this.decorate()};this.reset=function(){$(this.popupDiv).remove();this.visible=false};this.decorate=function(){this.popupRight.style.height=(this.popupDiv.offsetHeight-14)+"px";this.popupBottom.style.width=(this.popupDiv.offsetWidth-22)+"px";this.left=this.x+9;this.top=this.y-10-this.popupDiv.offsetHeight;this.popupDiv.style.left=this.left+"px";this.popupDiv.style.top=this.top+"px";var shiftX=0,shiftY=0;if(this.popupDiv.offsetTopparent.gui.headerWidth-10){shiftX=-1*(parent.gui.headerWidth-10-this.popupDiv.offsetLeft-this.popupDiv.offsetWidth)}parent.shift(shiftX,shiftY)};this.shift=function(x,y){this.left=this.left-this.x+x;this.top=this.top-this.y+y;this.x=x;this.y=y;if(this.left+this.popupDiv.offsetWidth>this.parentDiv.offsetWidth){this.popupDiv.style.left="auto";this.popupDiv.style.right=(this.parentDiv.offsetWidth-this.left-this.popupDiv.offsetWidth)+"px"}else{this.popupDiv.style.right="auto";this.popupDiv.style.left=this.left+"px"}this.popupDiv.style.top=this.top+"px"}}function PlacenamePopup(parent){this.parentDiv=parent.gui.mapWindow;this.createPopup=function(x,y,labels){this.labels=labels;var pnPopup=this;var popup=new MapPopup(parent);var onClose=function(){parent.deselection();pnPopup.reset()};popup.initialize(x,y,onClose);$.extend(this,popup);this.content=document.createElement("div");this.inner=document.createElement("div");this.resultsLabel=document.createElement("div");this.resultsLabel.setAttribute("class","popupDDBResults");this.content.appendChild(this.resultsLabel);this.backward=document.createElement("div");this.backward.setAttribute("class","prevItem");this.content.appendChild(this.backward);this.backward.onclick=function(){pnPopup.descriptionIndex--;pnPopup.showDescription()};this.number=document.createElement("div");this.content.appendChild(this.number);this.number.style.display="none";this.number.style.fontSize="13px";this.forward=document.createElement("div");this.forward.setAttribute("class","nextItem");this.content.appendChild(this.forward);this.forward.onclick=function(){pnPopup.descriptionIndex++;pnPopup.showDescription()};if(parent.options.showDescriptions){this.descriptions=document.createElement("div");this.descriptions.setAttribute("class","descriptions");this.descriptions.onclick=function(){pnPopup.switchToDescriptionMode()}}this.back=document.createElement("div");this.back.setAttribute("class","back");this.popupDiv.appendChild(this.back);this.back.onclick=function(){pnPopup.back.style.display="none";pnPopup.backward.style.display="none";pnPopup.forward.style.display="none";pnPopup.number.style.display="none";pnPopup.showLabels()};this.content.appendChild(this.inner);this.listLabels();this.showLabels()};this.switchToDescriptionMode=function(){this.descriptionIndex=0;this.descriptionContents=this.activeLabel.descriptions;this.number.style.display="inline-block";this.inner.style.minWidth="300px";this.showDescription();this.count=this.activeLabel.weight;this.setCount();this.back.style.display="inline-block"};this.showDescription=function(){$(this.inner).empty();this.inner.appendChild(this.descriptionContents[this.descriptionIndex]);this.setContent(this.content);if(this.descriptionContents.length==1){this.backward.style.display="none";this.forward.style.display="none"}else{if(this.descriptionIndex==0){this.backward.style.display="none"}else{this.backward.style.display="inline-block"}if(this.descriptionIndex==this.descriptionContents.length-1){this.forward.style.display="none"}else{this.forward.style.display="inline-block"}}if(this.descriptionContents.length>1){this.number.innerHTML="#"+(this.descriptionIndex+1)}else{this.number.style.display="none"}this.decorate()};this.setCount=function(){var c=this.count;if(c>1){this.resultsLabel.innerHTML=c+" "+GeoTemConfig.getString("results")}else{this.resultsLabel.innerHTML=c+" "+GeoTemConfig.getString("result")}};this.listLabels=function(){var pnPopup=this;this.labelDivs=[];this.labelCount=0;this.labelsWidth=0;for(var i=0;ithis.labelsWidth){this.labelsWidth=this.input.offsetWidth}this.labels[i].div.setAttribute("style",this.labels[i].allStyle+""+this.labels[i].unselectedStyle);this.labelDivs.push(div);var descriptions=[];for(var j=0;j=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent"){break}elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)"){c="transparent"}return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str)){return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10))}if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)){return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]))}if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str)){return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55)}if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str)){return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]))}if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str)){return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16))}if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str)){return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16))}var name=$.trim(str).toLowerCase();if(name=="transparent"){return m(255,255,255,0)}else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);(function($){var hasOwnProperty=Object.prototype.hasOwnProperty;function Canvas(cls,container){var element=container.children("."+cls)[0];if(element==null){element=document.createElement("canvas");element.className=cls;$(element).css({direction:"ltr",position:"absolute",left:0,top:0}).appendTo(container);if(!element.getContext){if(window.G_vmlCanvasManager){element=window.G_vmlCanvasManager.initElement(element)}else{throw new Error("Canvas is not available. If you're using IE with a fall-back such as Excanvas, then there's either a mistake in your conditional include, or the page has no DOCTYPE and is rendering in Quirks Mode.")}}}this.element=element;var context=this.context=element.getContext("2d");var devicePixelRatio=window.devicePixelRatio||1,backingStoreRatio=context.webkitBackingStorePixelRatio||context.mozBackingStorePixelRatio||context.msBackingStorePixelRatio||context.oBackingStorePixelRatio||context.backingStorePixelRatio||1;this.pixelRatio=devicePixelRatio/backingStoreRatio;this.resize(container.width(),container.height());this.textContainer=null;this.text={};this._textCache={}}Canvas.prototype.resize=function(width,height){if(width<=0||height<=0){throw new Error("Invalid dimensions for plot, width = "+width+", height = "+height)}var element=this.element,context=this.context,pixelRatio=this.pixelRatio;if(this.width!=width){element.width=width*pixelRatio;element.style.width=width+"px";this.width=width}if(this.height!=height){element.height=height*pixelRatio;element.style.height=height+"px";this.height=height}context.restore();context.save();context.scale(pixelRatio,pixelRatio)};Canvas.prototype.clear=function(){this.context.clearRect(0,0,this.width,this.height)};Canvas.prototype.render=function(){var cache=this._textCache;for(var layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var layer=this.getTextLayer(layerKey),layerCache=cache[layerKey];layer.hide();for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey];for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var positions=styleCache[key].positions;for(var i=0,position;position=positions[i];i++){if(position.active){if(!position.rendered){layer.append(position.element);position.rendered=true}}else{positions.splice(i--,1);if(position.rendered){position.element.detach()}}}if(positions.length==0){delete styleCache[key]}}}}}layer.show()}}};Canvas.prototype.getTextLayer=function(classes){var layer=this.text[classes];if(layer==null){if(this.textContainer==null){this.textContainer=$("
    ").css({position:"absolute",top:0,left:0,bottom:0,right:0,"font-size":"smaller",color:"#545454"}).insertAfter(this.element)}layer=this.text[classes]=$("
    ").addClass(classes).css({position:"absolute",top:0,left:0,bottom:0,right:0}).appendTo(this.textContainer)}return layer};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){var textStyle,layerCache,styleCache,info;text=""+text;if(typeof font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px/"+font.lineHeight+"px "+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var element=$("
    ").html(text).css({position:"absolute","max-width":width,top:-9999}).appendTo(this.getTextLayer(layer));if(typeof font==="object"){element.css({font:textStyle,color:font.color})}else{if(typeof font==="string"){element.addClass(font)}}info=styleCache[text]={width:element.outerWidth(true),height:element.outerHeight(true),element:element,positions:[]};element.detach()}return info};Canvas.prototype.addText=function(layer,x,y,text,font,angle,width,halign,valign){var info=this.getTextInfo(layer,text,font,angle,width),positions=info.positions;if(halign=="center"){x-=info.width/2}else{if(halign=="right"){x-=info.width}}if(valign=="middle"){y-=info.height/2}else{if(valign=="bottom"){y-=info.height}}for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=true;return}}position={active:true,rendered:false,element:positions.length?info.element.clone():info.element,x:x,y:y};positions.push(position);position.element.css({top:Math.round(y),left:Math.round(x),"text-align":halign})};Canvas.prototype.removeText=function(layer,x,y,text,font,angle){if(text==null){var layerCache=this._textCache[layer];if(layerCache!=null){for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey];for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var positions=styleCache[key].positions;for(var i=0,position;position=positions[i];i++){position.active=false}}}}}}}else{var positions=this.getTextInfo(layer,text,font,angle).positions;for(var i=0,position;position=positions[i];i++){if(position.x==x&&position.y==y){position.active=false}}}};function Plot(placeholder,data_,options_,plugins){var series=[],options={colors:["#edc240","#afd8f8","#cb4b4b","#4da74d","#9440ed"],legend:{show:true,noColumns:1,labelFormatter:null,labelBoxBorderColor:"#ccc",container:null,position:"ne",margin:5,backgroundColor:null,backgroundOpacity:0.85,sorted:null},xaxis:{show:null,position:"bottom",mode:null,font:null,color:null,tickColor:null,transform:null,inverseTransform:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,reserveSpace:null,tickLength:null,alignTicksWithAxis:null,tickDecimals:null,tickSize:null,minTickSize:null},yaxis:{autoscaleMargin:0.02,position:"left"},xaxes:[],yaxes:[],series:{points:{show:false,radius:3,lineWidth:2,fill:true,fillColor:"#ffffff",symbol:"circle"},lines:{lineWidth:2,fill:false,fillColor:null,steps:false},bars:{show:false,lineWidth:2,barWidth:1,fill:true,fillColor:null,align:"left",horizontal:false,zero:true},shadowSize:3,highlightColor:null},grid:{show:true,aboveData:false,color:"#545454",backgroundColor:null,borderColor:null,tickColor:null,margin:0,labelMargin:5,axisMargin:8,borderWidth:2,minBorderMargin:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:false,hoverable:false,autoHighlight:true,mouseActiveRadius:10},interaction:{redrawOverlayInterval:1000/60},hooks:{}},surface=null,overlay=null,eventHolder=null,ctx=null,octx=null,xaxes=[],yaxes=[],plotOffset={left:0,right:0,top:0,bottom:0},plotWidth=0,plotHeight=0,hooks={processOptions:[],processRawData:[],processDatapoints:[],processOffset:[],drawBackground:[],drawSeries:[],draw:[],bindEvents:[],drawOverlay:[],shutdown:[]},plot=this;plot.setData=setData;plot.setupGrid=setupGrid;plot.draw=draw;plot.getPlaceholder=function(){return placeholder};plot.getCanvas=function(){return surface.element};plot.getPlotOffset=function(){return plotOffset};plot.width=function(){return plotWidth};plot.height=function(){return plotHeight};plot.offset=function(){var o=eventHolder.offset();o.left+=plotOffset.left;o.top+=plotOffset.top;return o};plot.getData=function(){return series};plot.getAxes=function(){var res={},i;$.each(xaxes.concat(yaxes),function(_,axis){if(axis){res[axis.direction+(axis.n!=1?axis.n:"")+"axis"]=axis}});return res};plot.getXAxes=function(){return xaxes};plot.getYAxes=function(){return yaxes};plot.c2p=canvasToAxisCoords;plot.p2c=axisToCanvasCoords;plot.getOptions=function(){return options};plot.highlight=highlight;plot.unhighlight=unhighlight;plot.triggerRedrawOverlay=triggerRedrawOverlay;plot.pointOffset=function(point){return{left:parseInt(xaxes[axisNumber(point,"x")-1].p2c(+point.x)+plotOffset.left,10),top:parseInt(yaxes[axisNumber(point,"y")-1].p2c(+point.y)+plotOffset.top,10)}};plot.shutdown=shutdown;plot.destroy=function(){shutdown();placeholder.removeData("plot").empty();series=[];options=null;surface=null;overlay=null;eventHolder=null;ctx=null;octx=null;xaxes=[];yaxes=[];hooks=null;highlights=[];plot=null};plot.resize=function(){var width=placeholder.width(),height=placeholder.height();surface.resize(width,height);overlay.resize(width,height)};plot.hooks=hooks;initPlugins(plot);parseOptions(options_);setupCanvases();setData(data_);setupGrid();draw();bindEvents();function executeHooks(hook,args){args=[plot].concat(args);for(var i=0;imaxIndex){maxIndex=sc}}}if(neededColors<=maxIndex){neededColors=maxIndex+1}var c,colors=[],colorPool=options.colors,colorPoolSize=colorPool.length,variation=0;for(i=0;i=0){if(variation<0.5){variation=-variation-0.2}else{variation=0}}else{variation=-variation}}colors[i]=c.scale("rgb",1+variation)}var colori=0,s;for(i=0;iaxis.datamax&&max!=fakeInfinity){axis.datamax=max}}$.each(allAxes(),function(_,axis){axis.datamin=topSentry;axis.datamax=bottomSentry;axis.used=false});for(i=0;i0&&points[k-ps]!=null&&points[k-ps]!=points[k]&&points[k-ps+1]!=points[k+1]){for(m=0;mxmax){xmax=val}}if(f.y){if(valymax){ymax=val}}}}if(s.bars.show){var delta;switch(s.bars.align){case"left":delta=0;break;case"right":delta=-s.bars.barWidth;break;default:delta=-s.bars.barWidth/2}if(s.bars.horizontal){ymin+=delta;ymax+=delta+s.bars.barWidth}else{xmin+=delta;xmax+=delta+s.bars.barWidth}}updateAxis(s.xaxis,xmin,xmax);updateAxis(s.yaxis,ymin,ymax)}$.each(allAxes(),function(_,axis){if(axis.datamin==topSentry){axis.datamin=null}if(axis.datamax==bottomSentry){axis.datamax=null}})}function setupCanvases(){placeholder.css("padding",0).children().filter(function(){return !$(this).hasClass("flot-overlay")&&!$(this).hasClass("flot-base")}).remove();if(placeholder.css("position")=="static"){placeholder.css("position","relative")}surface=new Canvas("flot-base",placeholder);overlay=new Canvas("flot-overlay",placeholder);ctx=surface.context;octx=overlay.context;eventHolder=$(overlay.element).unbind();var existing=placeholder.data("plot");if(existing){existing.shutdown();overlay.clear()}placeholder.data("plot",plot)}function bindEvents(){if(options.grid.hoverable){eventHolder.mousemove(onMouseMove);eventHolder.bind("mouseleave",onMouseLeave)}if(options.grid.clickable){eventHolder.click(onClick)}executeHooks(hooks.bindEvents,[eventHolder])}function shutdown(){if(redrawTimeout){clearTimeout(redrawTimeout)}eventHolder.unbind("mousemove",onMouseMove);eventHolder.unbind("mouseleave",onMouseLeave);eventHolder.unbind("click",onClick);executeHooks(hooks.shutdown,[eventHolder])}function setTransformationHelpers(axis){function identity(x){return x}var s,m,t=axis.options.transform||identity,it=axis.options.inverseTransform;if(axis.direction=="x"){s=axis.scale=plotWidth/Math.abs(t(axis.max)-t(axis.min));m=Math.min(t(axis.max),t(axis.min))}else{s=axis.scale=plotHeight/Math.abs(t(axis.max)-t(axis.min));s=-s;m=Math.max(t(axis.max),t(axis.min))}if(t==identity){axis.p2c=function(p){return(p-m)*s}}else{axis.p2c=function(p){return(t(p)-m)*s}}if(!it){axis.c2p=function(c){return m+c/s}}else{axis.c2p=function(c){return it(m+c/s)}}}function measureTickLabels(axis){var opts=axis.options,ticks=axis.ticks||[],labelWidth=opts.labelWidth||0,labelHeight=opts.labelHeight||0,maxWidth=labelWidth||(axis.direction=="x"?Math.floor(surface.width/(ticks.length||1)):null),legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=opts.font||"flot-tick-label tickLabel";for(var i=0;i=0;--i){allocateAxisBoxFirstPhase(allocatedAxes[i])}adjustLayoutForThingsStickingOut();$.each(allocatedAxes,function(_,axis){allocateAxisBoxSecondPhase(axis)})}plotWidth=surface.width-plotOffset.left-plotOffset.right;plotHeight=surface.height-plotOffset.bottom-plotOffset.top;$.each(axes,function(_,axis){setTransformationHelpers(axis)});if(showGrid){drawAxisLabels()}insertLegend()}function setRange(axis){var opts=axis.options,min=+(opts.min!=null?opts.min:axis.datamin),max=+(opts.max!=null?opts.max:axis.datamax),delta=max-min;if(delta==0){var widen=max==0?1:0.01;if(opts.min==null){min-=widen}if(opts.max==null||opts.min!=null){max+=widen}}else{var margin=opts.autoscaleMargin;if(margin!=null){if(opts.min==null){min-=delta*margin;if(min<0&&axis.datamin!=null&&axis.datamin>=0){min=0}}if(opts.max==null){max+=delta*margin;if(max>0&&axis.datamax!=null&&axis.datamax<=0){max=0}}}}axis.min=min;axis.max=max}function setupTickGeneration(axis){var opts=axis.options;var noTicks;if(typeof opts.ticks=="number"&&opts.ticks>0){noTicks=opts.ticks}else{noTicks=0.3*Math.sqrt(axis.direction=="x"?surface.width:surface.height)}var delta=(axis.max-axis.min)/noTicks,dec=-Math.floor(Math.log(delta)/Math.LN10),maxDec=opts.tickDecimals;if(maxDec!=null&&dec>maxDec){dec=maxDec}var magn=Math.pow(10,-dec),norm=delta/magn,size;if(norm<1.5){size=1}else{if(norm<3){size=2;if(norm>2.25&&(maxDec==null||dec+1<=maxDec)){size=2.5;++dec}}else{if(norm<7.5){size=5}else{size=10}}}size*=magn;if(opts.minTickSize!=null&&size0){if(opts.min==null){axis.min=Math.min(axis.min,niceTicks[0])}if(opts.max==null&&niceTicks.length>1){axis.max=Math.max(axis.max,niceTicks[niceTicks.length-1])}}axis.tickGenerator=function(axis){var ticks=[],v,i;for(i=0;i1&&/\..*0$/.test((ts[1]-ts[0]).toFixed(extraDec)))){axis.tickDecimals=extraDec}}}}}function setTicks(axis){var oticks=axis.options.ticks,ticks=[];if(oticks==null||(typeof oticks=="number"&&oticks>0)){ticks=axis.tickGenerator(axis)}else{if(oticks){if($.isFunction(oticks)){ticks=oticks(axis)}else{ticks=oticks}}}var i,v;axis.ticks=[];for(i=0;i1){label=t[1]}}else{v=+t}if(label==null){label=axis.tickFormatter(v,axis)}if(!isNaN(v)){axis.ticks.push({v:v,label:label})}}}function snapRangeToTicks(axis,ticks){if(axis.options.autoscaleMargin&&ticks.length>0){if(axis.options.min==null){axis.min=Math.min(axis.min,ticks[0].v)}if(axis.options.max==null&&ticks.length>1){axis.max=Math.max(axis.max,ticks[ticks.length-1].v)}}}function draw(){surface.clear();executeHooks(hooks.drawBackground,[ctx]);var grid=options.grid;if(grid.show&&grid.backgroundColor){drawBackground()}if(grid.show&&!grid.aboveData){drawGrid()}for(var i=0;ito){var tmp=from;from=to;to=tmp}return{from:from,to:to,axis:axis}}function drawBackground(){ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.fillStyle=getColorOrGradient(options.grid.backgroundColor,plotHeight,0,"rgba(255, 255, 255, 0)");ctx.fillRect(0,0,plotWidth,plotHeight);ctx.restore()}function drawGrid(){var i,axes,bw,bc;ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var markings=options.grid.markings;if(markings){if($.isFunction(markings)){axes=plot.getAxes();axes.xmin=axes.xaxis.min;axes.xmax=axes.xaxis.max;axes.ymin=axes.yaxis.min;axes.ymax=axes.yaxis.max;markings=markings(axes)}for(i=0;ixrange.axis.max||yrange.toyrange.axis.max){continue}xrange.from=Math.max(xrange.from,xrange.axis.min);xrange.to=Math.min(xrange.to,xrange.axis.max);yrange.from=Math.max(yrange.from,yrange.axis.min);yrange.to=Math.min(yrange.to,yrange.axis.max);var xequal=xrange.from===xrange.to,yequal=yrange.from===yrange.to;if(xequal&&yequal){continue}xrange.from=Math.floor(xrange.axis.p2c(xrange.from));xrange.to=Math.floor(xrange.axis.p2c(xrange.to));yrange.from=Math.floor(yrange.axis.p2c(yrange.from));yrange.to=Math.floor(yrange.axis.p2c(yrange.to));if(xequal||yequal){var lineWidth=m.lineWidth||options.grid.markingsLineWidth,subPixel=lineWidth%2?0.5:0;ctx.beginPath();ctx.strokeStyle=m.color||options.grid.markingsColor;ctx.lineWidth=lineWidth;if(xequal){ctx.moveTo(xrange.to+subPixel,yrange.from);ctx.lineTo(xrange.to+subPixel,yrange.to)}else{ctx.moveTo(xrange.from,yrange.to+subPixel);ctx.lineTo(xrange.to,yrange.to+subPixel)}ctx.stroke()}else{ctx.fillStyle=m.color||options.grid.markingsColor;ctx.fillRect(xrange.from,yrange.to,xrange.to-xrange.from,yrange.from-yrange.to)}}}axes=allAxes();bw=options.grid.borderWidth;for(var j=0;jaxis.max||(t=="full"&&((typeof bw=="object"&&bw[axis.position]>0)||bw>0)&&(v==axis.min||v==axis.max))){continue}if(axis.direction=="x"){x=axis.p2c(v);yoff=t=="full"?-plotHeight:t;if(axis.position=="top"){yoff=-yoff}}else{y=axis.p2c(v);xoff=t=="full"?-plotWidth:t;if(axis.position=="left"){xoff=-xoff}}if(ctx.lineWidth==1){if(axis.direction=="x"){x=Math.floor(x)+0.5}else{y=Math.floor(y)+0.5}}ctx.moveTo(x,y);ctx.lineTo(x+xoff,y+yoff)}ctx.stroke()}if(bw){bc=options.grid.borderColor;if(typeof bw=="object"||typeof bc=="object"){if(typeof bw!=="object"){bw={top:bw,right:bw,bottom:bw,left:bw}}if(typeof bc!=="object"){bc={top:bc,right:bc,bottom:bc,left:bc}}if(bw.top>0){ctx.strokeStyle=bc.top;ctx.lineWidth=bw.top;ctx.beginPath();ctx.moveTo(0-bw.left,0-bw.top/2);ctx.lineTo(plotWidth,0-bw.top/2);ctx.stroke()}if(bw.right>0){ctx.strokeStyle=bc.right;ctx.lineWidth=bw.right;ctx.beginPath();ctx.moveTo(plotWidth+bw.right/2,0-bw.top);ctx.lineTo(plotWidth+bw.right/2,plotHeight);ctx.stroke()}if(bw.bottom>0){ctx.strokeStyle=bc.bottom;ctx.lineWidth=bw.bottom;ctx.beginPath();ctx.moveTo(plotWidth+bw.right,plotHeight+bw.bottom/2);ctx.lineTo(0,plotHeight+bw.bottom/2);ctx.stroke()}if(bw.left>0){ctx.strokeStyle=bc.left;ctx.lineWidth=bw.left;ctx.beginPath();ctx.moveTo(0-bw.left/2,plotHeight+bw.bottom);ctx.lineTo(0-bw.left/2,0);ctx.stroke()}}else{ctx.lineWidth=bw;ctx.strokeStyle=options.grid.borderColor;ctx.strokeRect(-bw/2,-bw/2,plotWidth+bw,plotHeight+bw)}}ctx.restore()}function drawAxisLabels(){$.each(allAxes(),function(_,axis){var box=axis.box,legacyStyles=axis.direction+"Axis "+axis.direction+axis.n+"Axis",layer="flot-"+axis.direction+"-axis flot-"+axis.direction+axis.n+"-axis "+legacyStyles,font=axis.options.font||"flot-tick-label tickLabel",tick,x,y,halign,valign;surface.removeText(layer);if(!axis.show||axis.ticks.length==0){return}for(var i=0;iaxis.max){continue}if(axis.direction=="x"){halign="center";x=plotOffset.left+axis.p2c(tick.v);if(axis.position=="bottom"){y=box.top+box.padding}else{y=box.top+box.height-box.padding;valign="bottom"}}else{valign="middle";y=plotOffset.top+axis.p2c(tick.v);if(axis.position=="left"){x=box.left+box.width-box.padding;halign="right"}else{x=box.left+box.padding}}surface.addText(layer,x,y,tick.label,font,null,null,halign,valign)}})}function drawSeries(series){if(series.lines.show){drawSeriesLines(series)}if(series.bars.show){drawSeriesBars(series)}if(series.points.show){drawSeriesPoints(series)}}function drawSeriesLines(series){function plotLine(datapoints,xoffset,yoffset,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize,prevx=null,prevy=null;ctx.beginPath();for(var i=ps;i=y2&&y1>axisy.max){if(y2>axisy.max){continue}x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max}else{if(y2>=y1&&y2>axisy.max){if(y1>axisy.max){continue}x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max}}if(x1<=x2&&x1=x2&&x1>axisx.max){if(x2>axisx.max){continue}y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max}else{if(x2>=x1&&x2>axisx.max){if(x1>axisx.max){continue}y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max}}if(x1!=prevx||y1!=prevy){ctx.moveTo(axisx.p2c(x1)+xoffset,axisy.p2c(y1)+yoffset)}prevx=x2;prevy=y2;ctx.lineTo(axisx.p2c(x2)+xoffset,axisy.p2c(y2)+yoffset)}ctx.stroke()}function plotLineArea(datapoints,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize,bottom=Math.min(Math.max(0,axisy.min),axisy.max),i=0,top,areaOpen=false,ypos=1,segmentStart=0,segmentEnd=0;while(true){if(ps>0&&i>points.length+ps){break}i+=ps;var x1=points[i-ps],y1=points[i-ps+ypos],x2=points[i],y2=points[i+ypos];if(areaOpen){if(ps>0&&x1!=null&&x2==null){segmentEnd=i;ps=-ps;ypos=2;continue}if(ps<0&&i==segmentStart+ps){ctx.fill();areaOpen=false;ps=-ps;ypos=1;i=segmentStart=segmentEnd+ps;continue}}if(x1==null||x2==null){continue}if(x1<=x2&&x1=x2&&x1>axisx.max){if(x2>axisx.max){continue}y1=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x1=axisx.max}else{if(x2>=x1&&x2>axisx.max){if(x1>axisx.max){continue}y2=(axisx.max-x1)/(x2-x1)*(y2-y1)+y1;x2=axisx.max}}if(!areaOpen){ctx.beginPath();ctx.moveTo(axisx.p2c(x1),axisy.p2c(bottom));areaOpen=true}if(y1>=axisy.max&&y2>=axisy.max){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.max));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.max));continue}else{if(y1<=axisy.min&&y2<=axisy.min){ctx.lineTo(axisx.p2c(x1),axisy.p2c(axisy.min));ctx.lineTo(axisx.p2c(x2),axisy.p2c(axisy.min));continue}}var x1old=x1,x2old=x2;if(y1<=y2&&y1=axisy.min){x1=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.min}else{if(y2<=y1&&y2=axisy.min){x2=(axisy.min-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.min}}if(y1>=y2&&y1>axisy.max&&y2<=axisy.max){x1=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y1=axisy.max}else{if(y2>=y1&&y2>axisy.max&&y1<=axisy.max){x2=(axisy.max-y1)/(y2-y1)*(x2-x1)+x1;y2=axisy.max}}if(x1!=x1old){ctx.lineTo(axisx.p2c(x1old),axisy.p2c(y1))}ctx.lineTo(axisx.p2c(x1),axisy.p2c(y1));ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));if(x2!=x2old){ctx.lineTo(axisx.p2c(x2),axisy.p2c(y2));ctx.lineTo(axisx.p2c(x2old),axisy.p2c(y2))}}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);ctx.lineJoin="round";var lw=series.lines.lineWidth,sw=series.shadowSize;if(lw>0&&sw>0){ctx.lineWidth=sw;ctx.strokeStyle="rgba(0,0,0,0.1)";var angle=Math.PI/18;plotLine(series.datapoints,Math.sin(angle)*(lw/2+sw/2),Math.cos(angle)*(lw/2+sw/2),series.xaxis,series.yaxis);ctx.lineWidth=sw/2;plotLine(series.datapoints,Math.sin(angle)*(lw/2+sw/4),Math.cos(angle)*(lw/2+sw/4),series.xaxis,series.yaxis)}ctx.lineWidth=lw;ctx.strokeStyle=series.color;var fillStyle=getFillStyle(series.lines,series.color,0,plotHeight);if(fillStyle){ctx.fillStyle=fillStyle;plotLineArea(series.datapoints,series.xaxis,series.yaxis)}if(lw>0){plotLine(series.datapoints,0,0,series.xaxis,series.yaxis)}ctx.restore()}function drawSeriesPoints(series){function plotPoints(datapoints,radius,fillStyle,offset,shadow,axisx,axisy,symbol){var points=datapoints.points,ps=datapoints.pointsize;for(var i=0;iaxisx.max||yaxisy.max){continue}ctx.beginPath();x=axisx.p2c(x);y=axisy.p2c(y)+offset;if(symbol=="circle"){ctx.arc(x,y,radius,0,shadow?Math.PI:Math.PI*2,false)}else{symbol(ctx,x,y,radius,shadow)}ctx.closePath();if(fillStyle){ctx.fillStyle=fillStyle;ctx.fill()}ctx.stroke()}}ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var lw=series.points.lineWidth,sw=series.shadowSize,radius=series.points.radius,symbol=series.points.symbol;if(lw==0){lw=0.0001}if(lw>0&&sw>0){var w=sw/2;ctx.lineWidth=w;ctx.strokeStyle="rgba(0,0,0,0.1)";plotPoints(series.datapoints,radius,null,w+w/2,true,series.xaxis,series.yaxis,symbol);ctx.strokeStyle="rgba(0,0,0,0.2)";plotPoints(series.datapoints,radius,null,w/2,true,series.xaxis,series.yaxis,symbol)}ctx.lineWidth=lw;ctx.strokeStyle=series.color;plotPoints(series.datapoints,radius,getFillStyle(series.points,series.color),0,false,series.xaxis,series.yaxis,symbol);ctx.restore()}function drawBar(x,y,b,barLeft,barRight,fillStyleCallback,axisx,axisy,c,horizontal,lineWidth){var left,right,bottom,top,drawLeft,drawRight,drawTop,drawBottom,tmp;if(horizontal){drawBottom=drawRight=drawTop=true;drawLeft=false;left=b;right=x;top=y+barLeft;bottom=y+barRight;if(rightaxisx.max||topaxisy.max){return}if(leftaxisx.max){right=axisx.max;drawRight=false}if(bottomaxisy.max){top=axisy.max;drawTop=false}left=axisx.p2c(left);bottom=axisy.p2c(bottom);right=axisx.p2c(right);top=axisy.p2c(top);if(fillStyleCallback){c.fillStyle=fillStyleCallback(bottom,top);c.fillRect(left,top,right-left,bottom-top)}if(lineWidth>0&&(drawLeft||drawRight||drawTop||drawBottom)){c.beginPath();c.moveTo(left,bottom);if(drawLeft){c.lineTo(left,top)}else{c.moveTo(left,top)}if(drawTop){c.lineTo(right,top)}else{c.moveTo(right,top)}if(drawRight){c.lineTo(right,bottom)}else{c.moveTo(right,bottom)}if(drawBottom){c.lineTo(left,bottom)}else{c.moveTo(left,bottom)}c.stroke()}}function drawSeriesBars(series){function plotBars(datapoints,barLeft,barRight,fillStyleCallback,axisx,axisy){var points=datapoints.points,ps=datapoints.pointsize;for(var i=0;i")}fragments.push("");rowStarted=true}fragments.push('
    '+entry.label+"")}if(rowStarted){fragments.push("")}if(fragments.length==0){return}var table=''+fragments.join("")+"
    ";if(options.legend.container!=null){$(options.legend.container).html(table)}else{var pos="",p=options.legend.position,m=options.legend.margin;if(m[0]==null){m=[m,m]}if(p.charAt(0)=="n"){pos+="top:"+(m[1]+plotOffset.top)+"px;"}else{if(p.charAt(0)=="s"){pos+="bottom:"+(m[1]+plotOffset.bottom)+"px;"}}if(p.charAt(1)=="e"){pos+="right:"+(m[0]+plotOffset.right)+"px;"}else{if(p.charAt(1)=="w"){pos+="left:"+(m[0]+plotOffset.left)+"px;"}}var legend=$('
    '+table.replace('style="','style="position:absolute;'+pos+";")+"
    ").appendTo(placeholder);if(options.legend.backgroundOpacity!=0){var c=options.legend.backgroundColor;if(c==null){c=options.grid.backgroundColor;if(c&&typeof c=="string"){c=$.color.parse(c)}else{c=$.color.extract(legend,"background-color")}c.a=1;c=c.toString()}var div=legend.children();$('
    ').prependTo(legend).css("opacity",options.legend.backgroundOpacity)}}}var highlights=[],redrawTimeout=null;function findNearbyItem(mouseX,mouseY,seriesFilter){var maxDistance=options.grid.mouseActiveRadius,smallestDistance=maxDistance*maxDistance+1,item=null,foundPoint=false,i,j,ps;for(i=series.length-1;i>=0;--i){if(!seriesFilter(series[i])){continue}var s=series[i],axisx=s.xaxis,axisy=s.yaxis,points=s.datapoints.points,mx=axisx.c2p(mouseX),my=axisy.c2p(mouseY),maxx=maxDistance/axisx.scale,maxy=maxDistance/axisy.scale;ps=s.datapoints.pointsize;if(axisx.options.inverseTransform){maxx=Number.MAX_VALUE}if(axisy.options.inverseTransform){maxy=Number.MAX_VALUE}if(s.lines.show||s.points.show){for(j=0;jmaxx||x-mx<-maxx||y-my>maxy||y-my<-maxy){continue}var dx=Math.abs(axisx.p2c(x)-mouseX),dy=Math.abs(axisy.p2c(y)-mouseY),dist=dx*dx+dy*dy;if(dist=Math.min(b,x)&&my>=y+barLeft&&my<=y+barRight):(mx>=x+barLeft&&mx<=x+barRight&&my>=Math.min(b,y)&&my<=Math.max(b,y))){item=[i,j/ps]}}}}if(item){i=item[0];j=item[1];ps=series[i].datapoints.pointsize;return{datapoint:series[i].datapoints.points.slice(j*ps,(j+1)*ps),dataIndex:j,series:series[i],seriesIndex:i}}return null}function onMouseMove(e){if(options.grid.hoverable){triggerClickHoverEvent("plothover",e,function(s){return s.hoverable!=false})}}function onMouseLeave(e){if(options.grid.hoverable){triggerClickHoverEvent("plothover",e,function(s){return false})}}function onClick(e){triggerClickHoverEvent("plotclick",e,function(s){return s.clickable!=false})}function triggerClickHoverEvent(eventname,event,seriesFilter){var offset=eventHolder.offset(),canvasX=event.pageX-offset.left-plotOffset.left,canvasY=event.pageY-offset.top-plotOffset.top,pos=canvasToAxisCoords({left:canvasX,top:canvasY});pos.pageX=event.pageX;pos.pageY=event.pageY;var item=findNearbyItem(canvasX,canvasY,seriesFilter);if(item){item.pageX=parseInt(item.series.xaxis.p2c(item.datapoint[0])+offset.left+plotOffset.left,10);item.pageY=parseInt(item.series.yaxis.p2c(item.datapoint[1])+offset.top+plotOffset.top,10)}if(options.grid.autoHighlight){for(var i=0;iaxisx.max||yaxisy.max){return}var pointRadius=series.points.radius+series.points.lineWidth/2;octx.lineWidth=pointRadius;octx.strokeStyle=highlightColor;var radius=1.5*pointRadius;x=axisx.p2c(x);y=axisy.p2c(y);octx.beginPath();if(series.points.symbol=="circle"){octx.arc(x,y,radius,0,2*Math.PI,false)}else{series.points.symbol(octx,x,y,radius,false)}octx.closePath();octx.stroke()}function drawBarHighlight(series,point){var highlightColor=(typeof series.highlightColor==="string")?series.highlightColor:$.color.parse(series.color).scale("a",0.5).toString(),fillStyle=highlightColor,barLeft;switch(series.bars.align){case"left":barLeft=0;break;case"right":barLeft=-series.bars.barWidth;break;default:barLeft=-series.bars.barWidth/2}octx.lineWidth=series.bars.lineWidth;octx.strokeStyle=highlightColor;drawBar(point[0],point[1],point[2]||0,barLeft,barLeft+series.bars.barWidth,function(){return fillStyle},series.xaxis,series.yaxis,octx,series.bars.horizontal,series.bars.lineWidth)}function getColorOrGradient(spec,bottom,top,defaultColor){if(typeof spec=="string"){return spec}else{var gradient=ctx.createLinearGradient(0,top,0,bottom);for(var i=0,l=spec.colors.length;i1){options.series.pie.tilt=1}else{if(options.series.pie.tilt<0){options.series.pie.tilt=0}}}});plot.hooks.bindEvents.push(function(plot,eventHolder){var options=plot.getOptions();if(options.series.pie.show){if(options.grid.hoverable){eventHolder.unbind("mousemove").mousemove(onMouseMove)}if(options.grid.clickable){eventHolder.unbind("click").click(onClick)}}});plot.hooks.processDatapoints.push(function(plot,series,data,datapoints){var options=plot.getOptions();if(options.series.pie.show){processDatapoints(plot,series,data,datapoints)}});plot.hooks.drawOverlay.push(function(plot,octx){var options=plot.getOptions();if(options.series.pie.show){drawOverlay(plot,octx)}});plot.hooks.draw.push(function(plot,newCtx){var options=plot.getOptions();if(options.series.pie.show){draw(plot,newCtx)}});function processDatapoints(plot,series,datapoints){if(!processed){processed=true;canvas=plot.getCanvas();target=$(canvas).parent();options=plot.getOptions();plot.setData(combine(plot.getData()))}}function combine(data){var total=0,combined=0,numCombined=0,color=options.series.pie.combine.color,newdata=[];for(var i=0;ioptions.series.pie.combine.threshold){newdata.push($.extend(data[i],{data:[[1,value]],color:data[i].color,label:data[i].label,angle:value*Math.PI*2/total,percent:value/(total/100)}))}}if(numCombined>1){newdata.push({data:[[1,combined]],color:color,label:options.series.pie.combine.label,angle:combined*Math.PI*2/total,percent:combined/(total/100)})}return newdata}function draw(plot,newCtx){if(!target){return}var canvasWidth=plot.getPlaceholder().width(),canvasHeight=plot.getPlaceholder().height(),legendWidth=target.children().filter(".legend").children().width()||0;ctx=newCtx;processed=false;maxRadius=Math.min(canvasWidth,canvasHeight/options.series.pie.tilt)/2;centerTop=canvasHeight/2+options.series.pie.offset.top;centerLeft=canvasWidth/2;if(options.series.pie.offset.left=="auto"){if(options.legend.position.match("w")){centerLeft+=legendWidth/2}else{centerLeft-=legendWidth/2}if(centerLeftcanvasWidth-maxRadius){centerLeft=canvasWidth-maxRadius}}}else{centerLeft+=options.series.pie.offset.left}var slices=plot.getData(),attempts=0;do{if(attempts>0){maxRadius*=REDRAW_SHRINK}attempts+=1;clear();if(options.series.pie.tilt<=0.8){drawShadow()}}while(!drawPie()&&attempts=REDRAW_ATTEMPTS){clear();target.prepend("
    Could not draw pie with labels contained inside canvas
    ")}if(plot.setSeries&&plot.insertLegend){plot.setSeries(slices);plot.insertLegend()}function clear(){ctx.clearRect(0,0,canvasWidth,canvasHeight);target.children().filter(".pieLabel, .pieLabelBackground").remove()}function drawShadow(){var shadowLeft=options.series.pie.shadow.left;var shadowTop=options.series.pie.shadow.top;var edge=10;var alpha=options.series.pie.shadow.alpha;var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius;if(radius>=canvasWidth/2-shadowLeft||radius*options.series.pie.tilt>=canvasHeight/2-shadowTop||radius<=edge){return}ctx.save();ctx.translate(shadowLeft,shadowTop);ctx.globalAlpha=alpha;ctx.fillStyle="#000";ctx.translate(centerLeft,centerTop);ctx.scale(1,options.series.pie.tilt);for(var i=1;i<=edge;i++){ctx.beginPath();ctx.arc(0,0,radius,0,Math.PI*2,false);ctx.fill();radius-=i}ctx.restore()}function drawPie(){var startAngle=Math.PI*options.series.pie.startAngle;var radius=options.series.pie.radius>1?options.series.pie.radius:maxRadius*options.series.pie.radius;ctx.save();ctx.translate(centerLeft,centerTop);ctx.scale(1,options.series.pie.tilt);ctx.save();var currentAngle=startAngle;for(var i=0;i0){ctx.save();ctx.lineWidth=options.series.pie.stroke.width;currentAngle=startAngle;for(var i=0;i1e-9){ctx.moveTo(0,0)}ctx.arc(0,0,radius,currentAngle,currentAngle+angle/2,false);ctx.arc(0,0,radius,currentAngle+angle/2,currentAngle+angle,false);ctx.closePath();currentAngle+=angle;if(fill){ctx.fill()}else{ctx.stroke()}}function drawLabels(){var currentAngle=startAngle;var radius=options.series.pie.label.radius>1?options.series.pie.label.radius:maxRadius*options.series.pie.label.radius;for(var i=0;i=options.series.pie.label.threshold*100){if(!drawLabel(slices[i],currentAngle,i)){return false}}currentAngle+=slices[i].angle}return true;function drawLabel(slice,startAngle,index){if(slice.data[0][1]==0){return true}var lf=options.legend.labelFormatter,text,plf=options.series.pie.label.formatter;if(lf){text=lf(slice.label,slice)}else{text=slice.label}if(plf){text=plf(text,slice)}var halfAngle=((startAngle+slice.angle)+startAngle)/2;var x=centerLeft+Math.round(Math.cos(halfAngle)*radius);var y=centerTop+Math.round(Math.sin(halfAngle)*radius)*options.series.pie.tilt;var html=""+text+"";target.append(html);var label=target.children("#pieLabel"+index);var labelTop=(y-label.height()/2);var labelLeft=(x-label.width()/2);label.css("top",labelTop);label.css("left",labelLeft);if(0-labelTop>0||0-labelLeft>0||canvasHeight-(labelTop+label.height())<0||canvasWidth-(labelLeft+label.width())<0){return false}if(options.series.pie.label.background.opacity!=0){var c=options.series.pie.label.background.color;if(c==null){c=slice.color}var pos="top:"+labelTop+"px;left:"+labelLeft+"px;";$("
    ").css("opacity",options.series.pie.label.background.opacity).insertBefore(label)}return true}}}}function drawDonutHole(layer){if(options.series.pie.innerRadius>0){layer.save();var innerRadius=options.series.pie.innerRadius>1?options.series.pie.innerRadius:maxRadius*options.series.pie.innerRadius;layer.globalCompositeOperation="destination-out";layer.beginPath();layer.fillStyle=options.series.pie.stroke.color;layer.arc(0,0,innerRadius,0,Math.PI*2,false);layer.fill();layer.closePath();layer.restore();layer.save();layer.beginPath();layer.strokeStyle=options.series.pie.stroke.color;layer.arc(0,0,innerRadius,0,Math.PI*2,false);layer.stroke();layer.closePath();layer.restore()}}function isPointInPoly(poly,pt){for(var c=false,i=-1,l=poly.length,j=l-1;++i1?options.series.pie.radius:maxRadius*options.series.pie.radius,x,y;for(var i=0;i1?options.series.pie.radius:maxRadius*options.series.pie.radius;octx.save();octx.translate(centerLeft,centerTop);octx.scale(1,options.series.pie.tilt);for(var i=0;i1e-9){octx.moveTo(0,0)}octx.arc(0,0,radius,series.startAngle,series.startAngle+series.angle/2,false);octx.arc(0,0,radius,series.startAngle+series.angle/2,series.startAngle+series.angle,false);octx.closePath();octx.fill()}}}var options={series:{pie:{show:false,radius:"auto",innerRadius:0,startAngle:3/2,tilt:1,shadow:{left:5,top:15,alpha:0.02},offset:{top:0,left:"auto"},stroke:{color:"#fff",width:1},label:{show:"auto",formatter:function(label,slice){return"
    "+label+"
    "+Math.round(slice.percent)+"%
    "},radius:1,background:{color:null,opacity:0},threshold:0},combine:{threshold:-1,color:null,label:"Other"},highlight:{opacity:0.5}}}};$.plot.plugins.push({init:init,options:options,name:"pie",version:"1.1"})})(jQuery);(function($,t,n){function p(){for(var n=r.length-1;n>=0;n--){var o=$(r[n]);if(o[0]==t||o.is(":visible")){var h=o.width(),d=o.height(),v=o.data(a);!v||h===v.w&&d===v.h?i[f]=i[l]:(i[f]=i[c],o.trigger(u,[v.w=h,v.h=d]))}else{v=o.data(a),v.w=0,v.h=0}}s!==null&&(s=t.requestAnimationFrame(p))}var r=[],i=$.resize=$.extend($.resize,{}),s,o="setTimeout",u="resize",a=u+"-special-event",f="delay",l="pendingDelay",c="activeDelay",h="throttleWindow";i[l]=250,i[c]=20,i[f]=i[l],i[h]=!0,$.event.special[u]={setup:function(){if(!i[h]&&this[o]){return !1}var t=$(this);r.push(this),t.data(a,{w:t.width(),h:t.height()}),r.length===1&&(s=n,p())},teardown:function(){if(!i[h]&&this[o]){return !1}var t=$(this);for(var n=r.length-1;n>=0;n--){if(r[n]==this){r.splice(n,1);break}}t.removeData(a),r.length||(cancelAnimationFrame(s),s=null)},add:function(t){function s(t,i,s){var o=$(this),u=o.data(a);u.w=i!==n?i:o.width(),u.h=s!==n?s:o.height(),r.apply(this,arguments)}if(!i[h]&&this[o]){return !1}var r;if($.isFunction(t)){return r=t,s}r=t.handler,t.handler=s}},t.requestAnimationFrame||(t.requestAnimationFrame=function(){return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||t.msRequestAnimationFrame||function(e,n){return t.setTimeout(e,i[f])}}()),t.cancelAnimationFrame||(t.cancelAnimationFrame=function(){return t.webkitCancelRequestAnimationFrame||t.mozCancelRequestAnimationFrame||t.oCancelRequestAnimationFrame||t.msCancelRequestAnimationFrame||clearTimeout}())})(jQuery,this);(function($){var options={};function init(plot){function onResize(){var placeholder=plot.getPlaceholder();if(placeholder.width()==0||placeholder.height()==0){return}plot.resize();plot.setupGrid();plot.draw()}function bindEvents(plot,eventHolder){plot.getPlaceholder().resize(onResize)}function shutdown(plot,eventHolder){plot.getPlaceholder().unbind("resize",onResize)}plot.hooks.bindEvents.push(bindEvents);plot.hooks.shutdown.push(shutdown)}$.plot.plugins.push({init:init,options:options,name:"resize",version:"1.0"})})(jQuery);(function($){function init(plot){var selection={first:{x:-1,y:-1},second:{x:-1,y:-1},show:false,active:false};var savedhandlers={};var mouseUpHandler=null;function onMouseMove(e){if(selection.active){updateSelection(e);plot.getPlaceholder().trigger("plotselecting",[getSelection()])}}function onMouseDown(e){if(e.which!=1){return}document.body.focus();if(document.onselectstart!==undefined&&savedhandlers.onselectstart==null){savedhandlers.onselectstart=document.onselectstart;document.onselectstart=function(){return false}}if(document.ondrag!==undefined&&savedhandlers.ondrag==null){savedhandlers.ondrag=document.ondrag;document.ondrag=function(){return false}}setSelectionPos(selection.first,e);selection.active=true;mouseUpHandler=function(e){onMouseUp(e)};$(document).one("mouseup",mouseUpHandler)}function onMouseUp(e){mouseUpHandler=null;if(document.onselectstart!==undefined){document.onselectstart=savedhandlers.onselectstart}if(document.ondrag!==undefined){document.ondrag=savedhandlers.ondrag}selection.active=false;updateSelection(e);if(selectionIsSane()){triggerSelectedEvent()}else{plot.getPlaceholder().trigger("plotunselected",[]);plot.getPlaceholder().trigger("plotselecting",[null])}return false}function getSelection(){if(!selectionIsSane()){return null}if(!selection.show){return null}var r={},c1=selection.first,c2=selection.second;$.each(plot.getAxes(),function(name,axis){if(axis.used){var p1=axis.c2p(c1[axis.direction]),p2=axis.c2p(c2[axis.direction]);r[name]={from:Math.min(p1,p2),to:Math.max(p1,p2)}}});return r}function triggerSelectedEvent(){var r=getSelection();plot.getPlaceholder().trigger("plotselected",[r]);if(r.xaxis&&r.yaxis){plot.getPlaceholder().trigger("selected",[{x1:r.xaxis.from,y1:r.yaxis.from,x2:r.xaxis.to,y2:r.yaxis.to}])}}function clamp(min,value,max){return valuemax?max:value)}function setSelectionPos(pos,e){var o=plot.getOptions();var offset=plot.getPlaceholder().offset();var plotOffset=plot.getPlotOffset();pos.x=clamp(0,e.pageX-offset.left-plotOffset.left,plot.width());pos.y=clamp(0,e.pageY-offset.top-plotOffset.top,plot.height());if(o.selection.mode=="y"){pos.x=pos==selection.first?0:plot.width()}if(o.selection.mode=="x"){pos.y=pos==selection.first?0:plot.height()}}function updateSelection(pos){if(pos.pageX==null){return}setSelectionPos(selection.second,pos);if(selectionIsSane()){selection.show=true;plot.triggerRedrawOverlay()}else{clearSelection(true)}}function clearSelection(preventEvent){if(selection.show){selection.show=false;plot.triggerRedrawOverlay();if(!preventEvent){plot.getPlaceholder().trigger("plotunselected",[])}}}function extractRange(ranges,coord){var axis,from,to,key,axes=plot.getAxes();for(var k in axes){axis=axes[k];if(axis.direction==coord){key=coord+axis.n+"axis";if(!ranges[key]&&axis.n==1){key=coord+"axis"}if(ranges[key]){from=ranges[key].from;to=ranges[key].to;break}}}if(!ranges[key]){axis=coord=="x"?plot.getXAxes()[0]:plot.getYAxes()[0];from=ranges[coord+"1"];to=ranges[coord+"2"]}if(from!=null&&to!=null&&from>to){var tmp=from;from=to;to=tmp}return{from:from,to:to,axis:axis}}function setSelection(ranges,preventEvent){var axis,range,o=plot.getOptions();if(o.selection.mode=="y"){selection.first.x=0;selection.second.x=plot.width()}else{range=extractRange(ranges,"x");selection.first.x=range.axis.p2c(range.from);selection.second.x=range.axis.p2c(range.to)}if(o.selection.mode=="x"){selection.first.y=0;selection.second.y=plot.height()}else{range=extractRange(ranges,"y");selection.first.y=range.axis.p2c(range.from);selection.second.y=range.axis.p2c(range.to)}selection.show=true;plot.triggerRedrawOverlay();if(!preventEvent&&selectionIsSane()){triggerSelectedEvent()}}function selectionIsSane(){var minSize=plot.getOptions().selection.minSize;return Math.abs(selection.second.x-selection.first.x)>=minSize&&Math.abs(selection.second.y-selection.first.y)>=minSize}plot.clearSelection=clearSelection;plot.setSelection=setSelection;plot.getSelection=getSelection;plot.hooks.bindEvents.push(function(plot,eventHolder){var o=plot.getOptions();if(o.selection.mode!=null){eventHolder.mousemove(onMouseMove);eventHolder.mousedown(onMouseDown)}});plot.hooks.drawOverlay.push(function(plot,ctx){if(selection.show&&selectionIsSane()){var plotOffset=plot.getPlotOffset();var o=plot.getOptions();ctx.save();ctx.translate(plotOffset.left,plotOffset.top);var c=$.color.parse(o.selection.color);ctx.strokeStyle=c.scale("a",0.8).toString();ctx.lineWidth=1;ctx.lineJoin=o.selection.shape;ctx.fillStyle=c.scale("a",0.4).toString();var x=Math.min(selection.first.x,selection.second.x)+0.5,y=Math.min(selection.first.y,selection.second.y)+0.5,w=Math.abs(selection.second.x-selection.first.x)-1,h=Math.abs(selection.second.y-selection.first.y)-1;ctx.fillRect(x,y,w,h);ctx.strokeRect(x,y,w,h);ctx.restore()}});plot.hooks.shutdown.push(function(plot,eventHolder){eventHolder.unbind("mousemove",onMouseMove);eventHolder.unbind("mousedown",onMouseDown);if(mouseUpHandler){$(document).unbind("mouseup",mouseUpHandler)}})}$.plot.plugins.push({init:init,options:{selection:{mode:null,color:"#e8cfac",shape:"round",minSize:5}},name:"selection",version:"1.1"})})(jQuery);(function($){var options={xaxis:{timezone:null,timeformat:null,twelveHourClock:false,monthNames:null}};function floorInBase(n,base){return base*Math.floor(n/base)}function formatDate(d,fmt,monthNames,dayNames){if(typeof d.strftime=="function"){return d.strftime(fmt)}var leftPad=function(n,pad){n=""+n;pad=""+(pad==null?"0":pad);return n.length==1?pad+n:n};var r=[];var escape=false;var hours=d.getHours();var isAM=hours<12;if(monthNames==null){monthNames=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}if(dayNames==null){dayNames=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]}var hours12;if(hours>12){hours12=hours-12}else{if(hours==0){hours12=12}else{hours12=hours}}for(var i=0;i=minSize){break}}var size=spec[i][0];var unit=spec[i][1];if(unit=="year"){if(opts.minTickSize!=null&&opts.minTickSize[1]=="year"){size=Math.floor(opts.minTickSize[0])}else{var magn=Math.pow(10,Math.floor(Math.log(axis.delta/timeUnitSize.year)/Math.LN10));var norm=(axis.delta/timeUnitSize.year)/magn;if(norm<1.5){size=1}else{if(norm<3){size=2}else{if(norm<7.5){size=5}else{size=10}}}size*=magn}if(size<1){size=1}}axis.tickSize=opts.tickSize||[size,unit];var tickSize=axis.tickSize[0];unit=axis.tickSize[1];var step=tickSize*timeUnitSize[unit];if(unit=="second"){d.setSeconds(floorInBase(d.getSeconds(),tickSize))}else{if(unit=="minute"){d.setMinutes(floorInBase(d.getMinutes(),tickSize))}else{if(unit=="hour"){d.setHours(floorInBase(d.getHours(),tickSize))}else{if(unit=="month"){d.setMonth(floorInBase(d.getMonth(),tickSize))}else{if(unit=="quarter"){d.setMonth(3*floorInBase(d.getMonth()/3,tickSize))}else{if(unit=="year"){d.setFullYear(floorInBase(d.getFullYear(),tickSize))}}}}}}d.setMilliseconds(0);if(step>=timeUnitSize.minute){d.setSeconds(0)}if(step>=timeUnitSize.hour){d.setMinutes(0)}if(step>=timeUnitSize.day){d.setHours(0)}if(step>=timeUnitSize.day*4){d.setDate(1)}if(step>=timeUnitSize.month*2){d.setMonth(floorInBase(d.getMonth(),3))}if(step>=timeUnitSize.quarter*2){d.setMonth(floorInBase(d.getMonth(),6))}if(step>=timeUnitSize.year){d.setMonth(0)}var carry=0;var v=Number.NaN;var prev;do{prev=v;v=d.getTime();ticks.push(v);if(unit=="month"||unit=="quarter"){if(tickSize<1){d.setDate(1);var start=d.getTime();d.setMonth(d.getMonth()+(unit=="quarter"?3:1));var end=d.getTime();d.setTime(v+carry*timeUnitSize.hour+(end-start)*tickSize);carry=d.getHours();d.setHours(0)}else{d.setMonth(d.getMonth()+tickSize*(unit=="quarter"?3:1))}}else{if(unit=="year"){d.setFullYear(d.getFullYear()+tickSize)}else{d.setTime(v+step)}}}while(v>>0;fromIndex=+fromIndex||0;if(Math.abs(fromIndex)===Infinity){fromIndex=0}if(fromIndex<0){fromIndex+=length;if(fromIndex<0){fromIndex=0}}for(;fromIndex0){$tip=$("#flotTip")}else{$tip=$("
    ").attr("id","flotTip");$tip.appendTo("body").hide().css({position:"absolute"});if(this.tooltipOptions.defaultTheme){$tip.css({background:"#fff","z-index":"1040",padding:"0.4em 0.6em","border-radius":"0.5em","font-size":"0.8em",border:"1px solid #111",display:"none","white-space":"nowrap"})}}return $tip};FlotTooltip.prototype.updateTooltipPosition=function(pos){var totalTipWidth=$("#flotTip").outerWidth()+this.tooltipOptions.shifts.x;var totalTipHeight=$("#flotTip").outerHeight()+this.tooltipOptions.shifts.y;if((pos.x-$(window).scrollLeft())>($(window).innerWidth()-totalTipWidth)){pos.x-=totalTipWidth}if((pos.y-$(window).scrollTop())>($(window).innerHeight()-totalTipHeight)){pos.y-=totalTipHeight}this.tipPosition.x=pos.x;this.tipPosition.y=pos.y};FlotTooltip.prototype.stringFormat=function(content,item){var percentPattern=/%p\.{0,1}(\d{0,})/;var seriesPattern=/%s/;var xLabelPattern=/%lx/;var yLabelPattern=/%ly/;var xPattern=/%x\.{0,1}(\d{0,})/;var yPattern=/%y\.{0,1}(\d{0,})/;var xPatternWithoutPrecision="%x";var yPatternWithoutPrecision="%y";var x,y;if(typeof item.series.threshold!=="undefined"){x=item.datapoint[0];y=item.datapoint[1]}else{x=item.series.data[item.dataIndex][0];y=item.series.data[item.dataIndex][1]}if(item.series.label===null&&item.series.originSeries){item.series.label=item.series.originSeries.label}if(typeof(content)==="function"){content=content(item.series.label,x,y,item)}if(typeof(item.series.percent)!=="undefined"){content=this.adjustValPrecision(percentPattern,content,item.series.percent)}if(typeof(item.series.label)!=="undefined"){content=content.replace(seriesPattern,item.series.label)}else{content=content.replace(seriesPattern,"")}if(this.hasAxisLabel("xaxis",item)){content=content.replace(xLabelPattern,item.series.xaxis.options.axisLabel)}else{content=content.replace(xLabelPattern,"")}if(this.hasAxisLabel("yaxis",item)){content=content.replace(yLabelPattern,item.series.yaxis.options.axisLabel)}else{content=content.replace(yLabelPattern,"")}if(this.isTimeMode("xaxis",item)&&this.isXDateFormat(item)){content=content.replace(xPattern,this.timestampToDate(x,this.tooltipOptions.xDateFormat))}if(this.isTimeMode("yaxis",item)&&this.isYDateFormat(item)){content=content.replace(yPattern,this.timestampToDate(y,this.tooltipOptions.yDateFormat))}if(typeof x==="number"){content=this.adjustValPrecision(xPattern,content,x)}if(typeof y==="number"){content=this.adjustValPrecision(yPattern,content,y)}if(typeof item.series.xaxis.ticks!=="undefined"){var ticks;if(this.hasRotatedXAxisTicks(item)){ticks="rotatedTicks"}else{ticks="ticks"}var tickIndex=item.dataIndex+item.seriesIndex;if(item.series.xaxis[ticks].length>tickIndex&&!this.isTimeMode("xaxis",item)){content=content.replace(xPattern,item.series.xaxis[ticks][tickIndex].label)}}if(typeof item.series.yaxis.ticks!=="undefined"){for(var index in item.series.yaxis.ticks){if(item.series.yaxis.ticks.hasOwnProperty(index)){var value=(this.isCategoriesMode("yaxis",item))?item.series.yaxis.ticks[index].label:item.series.yaxis.ticks[index].v;if(value===y){content=content.replace(yPattern,item.series.yaxis.ticks[index].label)}}}}if(typeof item.series.xaxis.tickFormatter!=="undefined"){content=content.replace(xPatternWithoutPrecision,item.series.xaxis.tickFormatter(x,item.series.xaxis).replace(/\$/g,"$$"))}if(typeof item.series.yaxis.tickFormatter!=="undefined"){content=content.replace(yPatternWithoutPrecision,item.series.yaxis.tickFormatter(y,item.series.yaxis).replace(/\$/g,"$$"))}return content};FlotTooltip.prototype.isTimeMode=function(axisName,item){return(typeof item.series[axisName].options.mode!=="undefined"&&item.series[axisName].options.mode==="time")};FlotTooltip.prototype.isXDateFormat=function(item){return(typeof this.tooltipOptions.xDateFormat!=="undefined"&&this.tooltipOptions.xDateFormat!==null)};FlotTooltip.prototype.isYDateFormat=function(item){return(typeof this.tooltipOptions.yDateFormat!=="undefined"&&this.tooltipOptions.yDateFormat!==null)};FlotTooltip.prototype.isCategoriesMode=function(axisName,item){return(typeof item.series[axisName].options.mode!=="undefined"&&item.series[axisName].options.mode==="categories")};FlotTooltip.prototype.timestampToDate=function(tmst,dateFormat){var theDate=new Date(tmst*1);return $.plot.formatDate(theDate,dateFormat,this.tooltipOptions.monthNames,this.tooltipOptions.dayNames)};FlotTooltip.prototype.adjustValPrecision=function(pattern,content,value){var precision;var matchResult=content.match(pattern);if(matchResult!==null){if(RegExp.$1!==""){precision=RegExp.$1;value=value.toFixed(precision);content=content.replace(pattern,value)}}return content};FlotTooltip.prototype.hasAxisLabel=function(axisName,item){return(this.plotPlugins.indexOf("axisLabels")!==-1&&typeof item.series[axisName].options.axisLabel!=="undefined"&&item.series[axisName].options.axisLabel.length>0)};FlotTooltip.prototype.hasRotatedXAxisTicks=function(item){return($.grep($.plot.plugins,function(p){return p.name==="tickRotor"}).length===1&&typeof item.series.xaxis.rotatedTicks!=="undefined")};var init=function(plot){new FlotTooltip(plot)};$.plot.plugins.push({init:init,options:defaultOptions,name:"tooltip",version:"0.6.7"})})(jQuery);String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")};String.prototype.startsWith=function(A){return this.length>=A.length&&this.substr(0,A.length)==A};String.prototype.endsWith=function(A){return this.length>=A.length&&this.substr(this.length-A.length)==A};String.substitute=function(B,D){var A="";var F=0;while(FF&&B.charAt(C-1)=="\\"){A+=B.substring(F,C-1)+"%";F=C+1}else{var E=parseInt(B.charAt(C+1));if(isNaN(E)||E>=D.length){A+=B.substring(F,C+2)}else{A+=B.substring(F,C)+D[E].toString()}F=C+2}}}if(FOrtsfacette) und verschiedene Kartentypen.
    Da es Objekte geben kann, die keine Ortsangabe in ihrer Beschreibung enthalten, ist die Menge der in der Karte dargestellten Objekte in der Regel kleiner als in der Ergebnisliste (Anzahl darstellbarer Objekte siehe rechts oben über der Karte).
    Mit der Karte können Sie die Suchergebnisse weiter eingrenzen, indem Sie auf einen der Punkte klicken. Wählen Sie einen Ort aus und klicken Sie auf die kleine Lupe, um die Ergebnisliste so einzuschränken, dass nur noch die diesem Ort zugeordneten Objekte als Suchergebnis erscheinen. Mehr zur Karte im Benutzerhandbuch ...",timeHelp:"In der Zeitleiste sind die Suchergebnisse nach Jahren geordnet. Sie können verschiedene zeitbezogene Kategorien als Grundlage für die Darstellung wählen (Auswahlfeld Zeitfacette).
    Da es Objekte geben kann, die keine Zeitangabe in ihrer Beschreibung enthalten, ist die Zahl der in der Zeitleiste dargestellten Objekte in der Regel kleiner als in der Ergebnisliste. Die Angabe über darstellbare Objekte finden Sie rechts über der Zeitleiste.
    Mit der Zeitleiste können Sie die Suchergebnisse weiter eingrenzen. Wählen Sie ein Jahr oder einen Zeitraum durch Klicken und Ziehen und klicken Sie auf die kleine Lupe. Die Ergebnisliste zeigt nur noch die Objekte in diesem Zeitraum. Mehr zur Zeitleiste im Benutzerhandbuch ...",selectTablePageItemsHelp:"Click to select all rows of this page",deselectTablePageItemsHelp:"Click to deselect all rows of this page",selectAllTableItemsHelp:"Click to select all rows of the table",deselectAllTableItemsHelp:"Click to deselect all rows of the table",filter:"Filter",filterSelectedItemsHelp:"Filter the selected items",inverseFilterSelectedItemsHelp:"Apply an inverse filter on the selected items removing them from the views",undoFilterSelection:"Undo the last filter / inverse filter",cancelSelection:"Discard the current selection (all items appear as deselected)",showSelectedHelp:"Show only elements within the selection",selectByTextHelp:"Select elements that contain the given text",showAllElementsHelp:"Show all elements",paginationFirsPageHelp:"Show first page",paginationPreviousPageHelp:"Show previous page",paginationNextPageHelp:"Show next page",paginationLastPageHelp:"Show last page",sortAZHelp:"Sort table elements ascending according this column",sortZAHelp:"Sort table elements descending according this column",paginationDropdownHelp:"Select number of elements per page",selectTimeUnit:"Wähle Zeitinervalle",valueScale:"Value Scale",linearPlot:"Linear Value Scale",logarithmicPlot:"Logarithmic Value Scale",playButton:"Animate Selected Range",pauseButton:"Pause Animation",createNewFromSelectedHelp:"Erstelle neuen Datensatz aus den selektierten Einträgen",removeDatasetHelp:"Diesen Datensatz entfernen",exportDatasetHelp:"Diesen Datensatz in KML Datei exportieren",invertSelectionHelp:"Jetzige Selektion umkehren",colorShapeDatasetHelp:"Farbe oder Form des Datensatzes ändern",lockMap:"Karte in diesem Zustand halten."}};$.fn.cleanWhitespace=function(){textNodes=this.contents().filter(function(){return(this.nodeType==3&&!/\S/.test(this.nodeValue))}).remove();return this};GeoTemConfig={debug:false,incompleteData:true,inverseFilter:true,mouseWheelZoom:true,language:"en",allowFilter:true,highlightEvents:true,selectionEvents:true,tableExportDataset:true,allowCustomColoring:false,allowUserShapeAndColorChange:true,loadColorFromDataset:false,allowColumnRenaming:true,colors:[{r1:255,g1:101,b1:0,r0:253,g0:229,b0:205},{r1:144,g1:26,b1:255,r0:230,g0:225,b0:255},{r1:0,g1:217,b1:0,r0:213,g0:255,b0:213},{r1:240,g1:220,b1:0,r0:247,g0:244,b0:197}]};GeoTemConfig.ie=false;GeoTemConfig.ie8=false;GeoTemConfig.independentMapId=0;GeoTemConfig.independentTimeId=0;if(/MSIE (\d+\.\d+);/.test(navigator.userAgent)){GeoTemConfig.ie=true;var ieversion=new Number(RegExp.$1);if(ieversion==8){GeoTemConfig.ie8=true}}GeoTemConfig.getIndependentId=function(target){if(target=="map"){return ++GeoTemConfig.independentMapId}if(target=="time"){return ++GeoTemConfig.independentTimeId}return 0};GeoTemConfig.setHexColor=function(hex,index,fill){var result=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);if(fill){GeoTemConfig.colors[index].r0=parseInt(result[1],16);GeoTemConfig.colors[index].g0=parseInt(result[2],16);GeoTemConfig.colors[index].b0=parseInt(result[3],16)}else{GeoTemConfig.colors[index].r1=parseInt(result[1],16);GeoTemConfig.colors[index].g1=parseInt(result[2],16);GeoTemConfig.colors[index].b1=parseInt(result[3],16)}};GeoTemConfig.setRgbColor=function(r,g,b,index,fill){if(fill){GeoTemConfig.colors[index].r0=r;GeoTemConfig.colors[index].g0=g;GeoTemConfig.colors[index].b0=b}else{GeoTemConfig.colors[index].r1=r;GeoTemConfig.colors[index].g1=g;GeoTemConfig.colors[index].b1=b}};GeoTemConfig.configure=function(urlPrefix){GeoTemConfig.urlPrefix=urlPrefix;GeoTemConfig.path=GeoTemConfig.urlPrefix+"images/"};GeoTemConfig.applySettings=function(settings){$.extend(this,settings)};GeoTemConfig.assignedColorCount=0;GeoTemConfig.getColor=function(id){if(typeof GeoTemConfig.datasets[id].color==="undefined"){var color;while(true){if(GeoTemConfig.colors.length<=GeoTemConfig.assignedColorCount){color={r1:Math.floor((Math.random()*255)+1),g1:Math.floor((Math.random()*255)+1),b1:Math.floor((Math.random()*255)+1),r0:230,g0:230,b0:230}}else{color=GeoTemConfig.colors[GeoTemConfig.assignedColorCount]}var found=false;for(var i=0;i0){hasContent=true}}else{hasContent=true}}if(hasContent===true){break}}if(hasContent===false){continue}for(var j=0;j/g,"
    ");$(descriptionRows.split("
    ")).each(function(){var row=this;if(typeof row==="undefined"){return}var headerAndValue=row.split("=");if(headerAndValue.length!=2){return}var header=$.trim(headerAndValue[0]);var value=$.trim(headerAndValue[1]);if($.inArray(header,descriptionTableHeaders)===-1){descriptionTableHeaders.push(header)}if(tableContent[header]!=null){tableContent[header]+="\n"+value}else{tableContent[header]=value}});tableContent.description=description}catch(e){description=""}try{name=placemark.getElementsByTagName("name")[0].childNodes[0].nodeValue;tableContent.name=name}catch(e){if(typeof tableContent.name!=="undefined"){name=tableContent.name}else{name=""}}try{place=placemark.getElementsByTagName("address")[0].childNodes[0].nodeValue;tableContent.place=place}catch(e){if(typeof tableContent.place!=="undefined"){place=tableContent.place}else{place=""}}try{var coordinates=placemark.getElementsByTagName("Point")[0].getElementsByTagName("coordinates")[0].childNodes[0].nodeValue;var lonlat=coordinates.split(",");lon=lonlat[0];lat=lonlat[1];if(lon==""||lat==""||isNaN(lon)||isNaN(lat)){throw"e"}location.push({longitude:lon,latitude:lat,place:place})}catch(e){if(!GeoTemConfig.incompleteData){continue}}try{var tuple=GeoTemConfig.getTimeData(placemark.getElementsByTagName("TimeStamp")[0].getElementsByTagName("when")[0].childNodes[0].nodeValue);if(tuple!=null){time.push(tuple);timeData=true}else{if(!GeoTemConfig.incompleteData){continue}}}catch(e){try{if((typeof tableContent["TimeSpan:begin"]==="undefined")&&(typeof tableContent["TimeSpan:end"]==="undefined")){var timeStart=$(placemark).find("TimeSpan begin").text();var timeEnd=$(placemark).find("TimeSpan end").text();if((timeStart!="")&&(timeStart!="")){tableContent["TimeSpan:begin"]=timeStart;tableContent["TimeSpan:end"]=timeEnd;timeData=true}}}catch(e){if(!GeoTemConfig.incompleteData){continue}}}var object=new DataObject(name,description,location,time,1,tableContent);object.setIndex(index);index++;mapObjects.push(object)}if(descriptionTableHeaders.length>0){$(mapObjects).each(function(){var object=this;$(descriptionTableHeaders).each(function(){if(typeof object.tableContent[this]==="undefined"){object.tableContent[this]=""}})})}if(GeoTemConfig.loadColorFromDataset){GeoTemConfig.loadDataObjectColoring(mapObjects)}return mapObjects};GeoTemConfig.createKMLfromDataset=function(index){var kmlContent='';function pad(number){var r=String(number);if(r.length===1){r="0"+r}return r}var dateToISOString=function(date,granularity){var ISOString=date.getFullYear();if(granularity<=SimileAjax.DateTime.MONTH){ISOString+="-"+pad(date.getMonth()+1)}if(granularity<=SimileAjax.DateTime.DAY){ISOString+="-"+pad(date.getDate())}if(granularity<=SimileAjax.DateTime.HOUR){ISOString+="T"+pad(date.getHours());if(granularity<=SimileAjax.DateTime.MINUTE){ISOString+=":"+pad(date.getMinutes())}if(granularity<=SimileAjax.DateTime.SECOND){ISOString+=":"+pad(date.getSeconds())}if(granularity<=SimileAjax.DateTime.MILLISECOND){ISOString+="."+String((date.getMilliseconds()/1000).toFixed(3)).slice(2,5)}ISOString+="Z"}return ISOString};$(GeoTemConfig.datasets[index].objects).each(function(){var name=this.name;var description=this.description;var place=this.getPlace(0,0);var lat=this.getLatitude(0);var lon=this.getLongitude(0);var kmlEntry="";kmlEntry+="";kmlEntry+="
    ";kmlEntry+="";kmlEntry+=""+lon+","+lat+"";if(this.isTemporal){kmlEntry+=""+dateToISOString(this.getDate(0),this.getTimeGranularity(0))+""}else{if(this.isFuzzyTemporal){kmlEntry+=""+dateToISOString(this.TimeSpanBegin.utc().toDate(),this.TimeSpanBeginGranularity)+""+dateToISOString(this.TimeSpanEnd.utc().toDate(),this.TimeSpanEndGranularity)+""}}kmlEntry+="
    ";kmlContent+=kmlEntry});kmlContent+="
    ";return(kmlContent)};GeoTemConfig.createCSVfromDataset=function(index){var csvContent="";var header=["name","description","weight"];var tableContent=[];var firstDataObject=GeoTemConfig.datasets[index].objects[0];for(var key in firstDataObject.tableContent){var found=false;$(header).each(function(index,val){if(val===key){found=true;return false}});if(found===true){continue}else{tableContent.push(key)}}var isFirst=true;$(header).each(function(key,val){if(isFirst){isFirst=false}else{csvContent+=","}if(val==="name"){val="Name"}else{if(val==="description"){val="Description"}}csvContent+='"'+val+'"'});$(tableContent).each(function(key,val){if(isFirst){isFirst=false}else{csvContent+=","}csvContent+='"'+val+'"'});csvContent+=',"Address","Latitude","Longitude","TimeStamp"';csvContent+="\n";var isFirstRow=true;$(GeoTemConfig.datasets[index].objects).each(function(){var elem=this;if(isFirstRow){isFirstRow=false}else{csvContent+="\n"}var isFirst=true;$(header).each(function(key,val){if(isFirst){isFirst=false}else{csvContent+=","}csvContent+='"'+elem[val]+'"'});$(tableContent).each(function(key,val){if(isFirst){isFirst=false}else{csvContent+=","}csvContent+='"'+elem.tableContent[val]+'"'});csvContent+=",";csvContent+='"';if(elem.isGeospatial){csvContent+=elem.locations[0].place}csvContent+='"';csvContent+=",";csvContent+='"';if((elem.isGeospatial)&&(typeof elem.getLatitude(0)!=="undefined")){csvContent+=elem.getLatitude(0)}csvContent+='"';csvContent+=",";csvContent+='"';if((elem.isGeospatial)&&(typeof elem.getLongitude(0)!=="undefined")){csvContent+=elem.getLongitude(0)}csvContent+='"';csvContent+=",";csvContent+='"';if((elem.isTemporal)&&(typeof elem.getDate(0)!=="undefined")){csvContent+=elem.getDate(0).toISOString()}csvContent+='"'});return(csvContent)};GeoTemConfig.loadDataObjectColoring=function(dataObjects){$(dataObjects).each(function(){var r0,g0,b0,r1,g1,b1;if((typeof this.tableContent!=="undefined")&&(typeof this.tableContent.color0!=="undefined")){var color=this.tableContent.color0;if((color.indexOf("#")==0)&&(color.length==7)){r0=parseInt("0x"+color.substr(1,2));g0=parseInt("0x"+color.substr(3,2));b0=parseInt("0x"+color.substr(5,2))}}if((typeof this.tableContent!=="undefined")&&(typeof this.tableContent.color1!=="undefined")){var color=this.tableContent.color1;if((color.indexOf("#")==0)&&(color.length==7)){r1=parseInt("0x"+color.substr(1,2));g1=parseInt("0x"+color.substr(3,2));b1=parseInt("0x"+color.substr(5,2))}}if((typeof r0!=="undefined")&&(typeof g0!=="undefined")&&(typeof b0!=="undefined")&&(typeof r1!=="undefined")&&(typeof g1!=="undefined")&&(typeof b1!=="undefined")){this.setColor(r0,g0,b0,r1,g1,b1);delete this.tableContent.color0;delete this.tableContent.color1}else{if((GeoTemConfig.debug)&&(typeof console!==undefined)){console.error("Object '"+this.name+"' has invalid color information")}}})};GeoTemConfig.renameColumns=function(dataset,renames){if(renames.length===0){return}for(var renCnt=0;renCnt0){oldColumObject.type=3;oldColumObject.attribute=attribute.split(".")[1]}}}else{oldColumObject.type=1;oldColumObject.name=oldColumn}var newColumObject={};if(newColumn.indexOf("[")!=-1){newColumObject.name=newColumn.split("[")[0];var IndexAndAttribute=newColumn.split("[")[1];if(IndexAndAttribute.indexOf("]")!=-1){newColumObject.type=2;newColumObject.arrayIndex=IndexAndAttribute.split("]")[0];var attribute=IndexAndAttribute.split("]")[1];if(attribute.length>0){newColumObject.type=3;newColumObject.attribute=attribute.split(".")[1]}}}else{newColumObject.type=1;newColumObject.name=newColumn}for(var i=0;ilevel){maxLevel=level}if(level==0){break}}for(levelOfDetail=0;levelOfDetaillabel2.weight){return -1}return 1};labels.sort(sortBySize);if(map.options.maxPlaceLabels){var ml=map.options.maxPlaceLabels;if(ml==1){labels=[];labels.push({place:"all",elements:elements,weight:weight,index:k})}if(ml==2){ml++}if(ml>2&&labels.length+1>ml){var c=[];var w=0;for(var i=ml-2;i1){labels.push({place:"all",elements:elements,weight:weight,index:k})}this.placeLabels=labels};this.calculatePlacenameTags=function(){var cloud=this;var c=GeoTemConfig.getColor(this.circle.search);if(map.options.useGraphics){c=map.config.getGraphic(this.circle.search).color}var color0="rgb("+c.r0+","+c.g0+","+c.b0+")";var color1="rgb("+c.r1+","+c.g1+","+c.b1+")";var allStyles="",hoverStyle="",highlightStyle="",selectedStyle="",unselectedStyle="";if(GeoTemConfig.ie){highlightStyle+=map.options.ieHighlightLabel.replace(/COLOR1/g,color1).replace(/COLOR0/g,color0)+";";hoverStyle+=map.options.ieHoveredLabel.replace(/COLOR1/g,color1).replace(/COLOR0/g,color0)+";";selectedStyle+=map.options.ieSelectedLabel.replace(/COLOR1/g,color1).replace(/COLOR0/g,color0)+";";unselectedStyle+=map.options.ieUnselectedLabel.replace(/COLOR1/g,color1).replace(/COLOR0/g,color0)+";"}else{highlightStyle+=map.options.highlightLabel.replace(/COLOR1/g,color1).replace(/COLOR0/g,color0)+";";hoverStyle+=map.options.hoveredLabel.replace(/COLOR1/g,color1).replace(/COLOR0/g,color0)+";";selectedStyle+=map.options.selectedLabel.replace(/COLOR1/g,color1).replace(/COLOR0/g,color0)+";";unselectedStyle+=map.options.unselectedLabel.replace(/COLOR1/g,color1).replace(/COLOR0/g,color0)+";"}var clickFunction=function(label){label.div.onclick=function(){cloud.changeLabelSelection(label)}};var maxLabelSize=this.count;for(var i=0;i ("+l.weight+")";l.div=div;clickFunction(l)}if(map.options.labelGrid){this.showPlacelabels()}else{for(var i=0;ilabel2.weight){return -1}return 1};labels.sort(sortBySize);var droppedLabels=[];if(map.options.maxPlaceLabels){var ml=map.options.maxPlaceLabels;if(ml==1){labels=[];labels.push({place:"all",elements:elements,weight:weight,index:k})}if(ml==2){ml++}if(ml>2&&labels.length+1>ml){var c=[];var w=0;for(var i=ml-2;i1){labels.push({place:"all",elements:elements,weight:weight,index:k})}this.placeLabels.push(labels);this.droppedLabels.push(droppedLabels)};this.calculateLabels=function(){var circles=this.circle.circles;this.placeLabels=[];this.droppedLabels=[];this.othersLabels=[];for(var i=0;i ("+l.weight+")";l.div=div;clickFunction(l,k)}for(var i=0;i ("+l.weight+")";l.div=div;div.setAttribute("style",allStyles+""+selectedStyle)}}this.naDiv=document.createElement("div");this.naDiv.setAttribute("class","tagCloudItem");var fontSize=1;div.style.fontSize=fontSize+"em";l.allStyle=allStyles+"font-size: "+fontSize+"em;";l.selectedStyle=selectedStyle;l.unselectedStyle=unselectedStyle;l.hoverStyle=hoverStyle;this.naDiv.innerHTML="Not available";l.div=this.naDiv;if(map.options.labelGrid){this.showPlacelabels()}};this.showPlacelabels=function(){this.leftDiv=document.createElement("div");this.leftDiv.setAttribute("class","tagCloudDiv");this.leftDiv.style.textAlign="right";this.map.gui.mapWindow.appendChild(this.leftDiv);this.centerDiv=document.createElement("div");this.centerDiv.setAttribute("class","tagCloudDiv");this.centerDiv.style.opacity=0.7;this.map.gui.mapWindow.appendChild(this.centerDiv);this.centerDivOl=document.createElement("div");this.centerDivOl.setAttribute("class","tagCloudDiv");this.centerDivOl.style.opacity=0.7;this.map.gui.mapWindow.appendChild(this.centerDivOl);this.rightDiv=document.createElement("div");this.rightDiv.setAttribute("class","tagCloudDiv");this.rightDiv.style.textAlign="left";this.map.gui.mapWindow.appendChild(this.rightDiv);for(var i=0;ithis.rightDiv.offsetTop){y1+=this.leftDiv.offsetTop-this.rightDiv.offsetTop}else{y2+=this.rightDiv.offsetTop-this.leftDiv.offsetTop}ctx.lineCap="round";ctx.lineWidth=5;ctx.beginPath();ctx.moveTo(x1,y1);ctx.lineTo(x2,y2);ctx.strokeStyle="#555";ctx.stroke()};this.remove=function(){$(this.leftDiv).remove();$(this.rightDiv).remove();$(this.centerDiv).remove();$(this.centerDivOl).remove()}}function MapConfig(options){this.options={mapWidth:false,mapHeight:"580px",mapTitle:"GeoTemCo Map View",mapIndex:0,alternativeMap:[{name:"ISAW Modern Terrain",url:"http://{a-d}.tiles.mapbox.com/v3/isawnyu.map-p75u7mnj/${z}/${x}/${y}.png",type:"XYZ",attribution:"Tiles © MapBox | Data © OpenStreetMap and contributors, CC-BY-SA | Tiles and Data © 2014 ISAW CC-BY 3.0"},{name:"Barrington Roman Empire",url:"http://pelagios.org/tilesets/imperium/${z}/${x}/${y}.png",type:"XYZ",attribution:"Digital Atlas of the Roman Empire (c) Johan Åhlfeldt, Pelagios"},{name:"AWMC Base Map",url:"http://{a-d}.tiles.mapbox.com/v3/isawnyu.map-knmctlkh/${z}/${x}/${y}.png",type:"XYZ",attribution:"Tiles © MapBox | Data © OpenStreetMap and contributors, CC-BY-SA | Tiles and Data © 2013 AWMC CC-BY-NC 3.0"},{name:"AWMC Coast Outline",url:"http://{a-d}.tiles.mapbox.com/v3/isawnyu.eoupu8fr/${z}/${x}/${y}.png",type:"XYZ",attribution:"Tiles © MapBox | Data © OpenStreetMap and contributors, CC-BY-SA | Tiles and Data © 2013 AWMC CC-BY-NC 3.0"},{name:"AWMC Roads",url:"http://{a-d}.tiles.mapbox.com/v3/isawnyu.awmc-roads/${z}/${x}/${y}.png",type:"XYZ",attribution:"Tiles © MapBox | Data © OpenStreetMap and contributors, CC-BY-SA | Tiles and Data © 2013 AWMC CC-BY-NC 3.0"},{name:"AWMC Benthos Water",url:"http://{a-d}.tiles.mapbox.com/v3/isawnyu.s5l5l8fr/${z}/${x}/${y}.png",type:"XYZ",attribution:"Tiles © MapBox | Data © OpenStreetMap and contributors, CC-BY-SA | Tiles and Data © 2013 AWMC CC-BY-NC 3.0"},{name:"AWMC Inland Water",url:"http://{a-d}.tiles.mapbox.com/v3/isawnyu.awmc-inland-water/${z}/${x}/${y}.png",type:"XYZ",attribution:"Tiles © MapBox | Data © OpenStreetMap and contributors, CC-BY-SA | Tiles and Data © 2013 AWMC CC-BY-NC 3.0"},{name:"AWMC River Polygons",url:"http://{a-d}.tiles.mapbox.com/v3/isawnyu.9e3lerk9/${z}/${x}/${y}.png",type:"XYZ",attribution:"Tiles © MapBox | Data © OpenStreetMap and contributors, CC-BY-SA | Tiles and Data © 2013 AWMC CC-BY-NC 3.0"},{name:"AWMC Water Course Center Lines",url:"http://{a-d}.tiles.mapbox.com/v3/isawnyu.awmc-water-courses/${z}/${x}/${y}.png",type:"XYZ",attribution:"Tiles © MapBox | Data © OpenStreetMap and contributors, CC-BY-SA | Tiles and Data © 2013 AWMC CC-BY-NC 3.0"},{name:"AWMC Base Open Water Polygons",url:"http://{a-d}.tiles.mapbox.com/v3/isawnyu.h0rdaemi/${z}/${x}/${y}.png",type:"XYZ",attribution:"Tiles © MapBox | Data © OpenStreetMap and contributors, CC-BY-SA | Tiles and Data © 2013 AWMC CC-BY-NC 3.0"},{name:"AWMC Archaic water",url:"http://{a-d}.tiles.mapbox.com/v3/isawnyu.yyuba9k9/${z}/${x}/${y}.png",type:"XYZ",attribution:"Tiles © MapBox | Data © OpenStreetMap and contributors, CC-BY-SA | Tiles and Data © 2013 AWMC CC-BY-NC 3.0"},{name:"AWMC Classical water",url:"http://{a-d}.tiles.mapbox.com/v3/isawnyu.l5xc4n29/${z}/${x}/${y}.png",type:"XYZ",attribution:"Tiles © MapBox | Data © OpenStreetMap and contributors, CC-BY-SA | Tiles and Data © 2013 AWMC CC-BY-NC 3.0"},{name:"AWMC Hellenistic water",url:"http://{a-d}.tiles.mapbox.com/v3/isawnyu.gq0ssjor/${z}/${x}/${y}.png",type:"XYZ",attribution:"Tiles © MapBox | Data © OpenStreetMap and contributors, CC-BY-SA | Tiles and Data © 2013 AWMC CC-BY-NC 3.0"},{name:"AWMC Roman water",url:"http://{a-d}.tiles.mapbox.com/v3/isawnyu.ymnrvn29/${z}/${x}/${y}.png",type:"XYZ",attribution:"Tiles © MapBox | Data © OpenStreetMap and contributors, CC-BY-SA | Tiles and Data © 2013 AWMC CC-BY-NC 3.0"},{name:"AWMC Late Antiquity water",url:"http://{a-d}.tiles.mapbox.com/v3/isawnyu.t12it3xr/${z}/${x}/${y}.png",type:"XYZ",attribution:"Tiles © MapBox | Data © OpenStreetMap and contributors, CC-BY-SA | Tiles and Data © 2013 AWMC CC-BY-NC 3.0"},{name:"China 1997",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/China_Monograph_Project/wms",layer:"China_Monograph_Project:v5_1997_prov_pgn_utf"},{name:"Maps-for-Free Relief Map",url:"http://maps-for-free.com/layer/relief/z${z}/row${y}/${z}_${x}-${y}.jpg",type:"XYZ",attribution:"(c) Maps for Free"},{name:"Contemporary Map (2010)",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry2010",attribution:"(c) EuroStat"},{name:"Historical Map of 2006",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry2006",attribution:"(c) EuroStat"},{name:"Historical Map of 1994",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1994",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1945",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1945",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1938",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1938",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1920",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1920",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1914",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1914",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1880",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1880",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1815",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1815",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1783",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1783",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1715",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1715",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1650",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1650",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1530",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1530",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1492",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1492",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1279",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1279",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1000",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1000",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 800",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry800",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 600",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry600",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 400",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry400",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1 BC",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1bc",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 200 BC",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry200bc",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 323 BC",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry323bc",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 500 BC",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry500bc",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 1000 BC",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry1000bc",attribution:"(c) ThinkQuest Team C006628"},{name:"Historical Map of 2000 BC",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/mpiwg/wms",layer:"historic:cntry2000bc",attribution:"(c) ThinkQuest Team C006628"},{name:"BEHIND Proposition to Register",url:"http://geoserver.mpiwg-berlin.mpg.de/geoserver/wms",layer:"TOPOI:Werning.BEHIND.prepositions",attribution:"(c) Daniel Werning"}],legend:true,mapMerge:false,useGraphics:false,graphics:[{shape:"circle",rotation:0},{shape:"square",rotation:0},{shape:"triangle",rotation:0},{shape:"square",rotation:45}],googleMaps:false,bingMaps:false,bingApiKey:"none",osmMaps:true,osmMapsMapQuest:false,baseLayer:"Open Street Map",resetMap:true,countrySelect:true,polygonSelect:true,circleSelect:true,squareSelect:true,multiSelection:true,popups:true,olNavigation:false,olLayerSwitcher:false,olMapOverview:false,olKeyboardDefaults:true,olScaleLine:false,geoLocation:true,boundaries:{minLon:-29,minLat:35,maxLon:44,maxLat:67},mapBackground:"#bbd0ed",labelGrid:true,maxPlaceLabels:6,selectDefault:true,maxLabelIncrease:2,labelHover:false,ieHighlightLabel:"color: COLOR1; background-color: COLOR0; filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=80)';-ms-filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=80)';",highlightLabel:"color: COLOR0; text-shadow: 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em COLOR0;",ieSelectedLabel:"color: COLOR1; font-weight: bold;",selectedLabel:"color: COLOR1; font-weight: bold;",ieUnselectedLabel:"color: COLOR1; font-weight: normal;",unselectedLabel:"color: COLOR1; font-weight: normal;",ieHoveredLabel:"color: COLOR1; font-weight: bold;",hoveredLabel:"color: COLOR1; font-weight: bold;",circleGap:0,circleOverlap:{type:"area",overlap:0},minimumRadius:4,circleOutline:2,circleOpacity:"balloon",minTransparency:0.55,maxTransparency:0.8,binning:"generic",noBinningRadii:"dynamic",circlePackings:true,binCount:10,showDescriptions:true,mapSelection:true,binningSelection:false,mapSelectionTools:true,dataInformation:true,overlayVisibility:false,placenameTagsStyle:"value",hideUnselected:false};if(typeof options!="undefined"){$.extend(this.options,options)}if(GeoTemConfig.allowUserShapeAndColorChange){this.options.useGraphics=true}}MapConfig.prototype.getGraphic=function(id){var dataset=GeoTemConfig.datasets[id];var graphic;if(typeof dataset.graphic!=="undefined"){graphic=dataset.graphic}else{graphic=this.options.graphics[id%this.options.graphics.length]}var color;if(typeof dataset.color!=="undefined"){color=dataset.color}else{color=GeoTemConfig.getColor(id)}return{shape:graphic.shape,rotation:graphic.rotation,color:color}};function MapGui(map,div,options,iid){var gui=this;this.map=map;this.container=div;if(options.mapWidth){this.container.style.width=options.mapWidth}if(options.mapHeight){this.container.style.height=options.mapHeight}this.container.style.position="relative";this.mapWindow=document.createElement("div");this.mapWindow.setAttribute("class","mapWindow");this.mapWindow.id="mapWindow"+iid;this.mapWindow.style.background=options.mapBackground;this.container.appendChild(this.mapWindow);this.mapContainer=document.createElement("div");this.mapContainer.setAttribute("class","mapContainer");this.mapContainer.id="mapContainer"+iid;this.mapContainer.style.position="absolute";this.mapContainer.style.zIndex=0;this.mapWindow.appendChild(this.mapContainer);var toolbarTable=document.createElement("table");toolbarTable.setAttribute("class","absoluteToolbar ddbToolbar");this.container.appendChild(toolbarTable);this.mapToolbar=toolbarTable;var titles=document.createElement("tr");toolbarTable.appendChild(titles);var tools=document.createElement("tr");toolbarTable.appendChild(tools);if(options.mapSelection){this.mapTypeTitle=document.createElement("td");titles.appendChild(this.mapTypeTitle);this.mapTypeTitle.innerHTML=GeoTemConfig.getString("mapType");this.mapTypeSelector=document.createElement("td");tools.appendChild(this.mapTypeSelector)}if(options.mapSelectionTools){this.mapSelectorTitle=document.createElement("td");titles.appendChild(this.mapSelectorTitle);this.mapSelectorTitle.innerHTML=GeoTemConfig.getString("mapSelectorTools");var mapSelectorTools=document.createElement("td");var selectorTools=this.map.initSelectorTools();for(var i in selectorTools){mapSelectorTools.appendChild(selectorTools[i].button)}tools.appendChild(mapSelectorTools)}if(options.binningSelection){this.binningTitle=document.createElement("td");titles.appendChild(this.binningTitle);this.binningTitle.innerHTML=GeoTemConfig.getString("binningType");this.binningSelector=document.createElement("td");tools.appendChild(this.binningSelector)}if(GeoTemConfig.allowFilter){this.filterTitle=document.createElement("td");titles.appendChild(this.filterTitle);this.filterTitle.innerHTML=GeoTemConfig.getString("filter");this.filterOptions=document.createElement("td");tools.appendChild(this.filterOptions)}if(options.dataInformation){this.infoTitle=document.createElement("td");this.infoTitle.innerHTML=options.mapTitle;titles.appendChild(this.infoTitle);var mapSum=document.createElement("td");this.mapElements=document.createElement("div");this.mapElements.setAttribute("class","ddbElementsCount");mapSum.appendChild(this.mapElements);tools.appendChild(mapSum)}this.lockTitle=document.createElement("td");titles.appendChild(this.lockTitle);this.lockIcon=document.createElement("td");var lockButton=document.createElement("div");$(lockButton).addClass("mapControl");var activateLock=function(){map.navigation.deactivate()};var deactivateLock=function(){map.navigation.activate()};var lockMapControl=new MapControl(this.map,lockButton,"lock",activateLock,deactivateLock);tools.appendChild(lockMapControl.button);this.fullscreenTitle=document.createElement("td");titles.appendChild(this.fullscreenTitle);this.fullscreenIcon=document.createElement("td");var fullscreenButton=document.createElement("div");$(fullscreenButton).addClass("mapControl");var prevWidth;var prevHeight;var prevParent;var activateFullscreen=function(){$div=$(div);$window=$(window);prevWidth=$div.width();prevHeight=$div.height();prevParent=$div.parent();$div.appendTo("body");$div.css("position","absolute");$div.css("top","0");$div.css("left","0");$div.css("z-Index","10000");$div.width($window.width());$div.height($window.height());gui.resize()};var deactivateFullscreen=function(){$div=$(div);$div.appendTo(prevParent);$div.css("position","relative");$div.width(prevWidth);$div.height(prevHeight);gui.resize()};var fullscreenMapControl=new MapControl(this.map,fullscreenButton,"fullscreen",activateFullscreen,deactivateFullscreen);tools.appendChild(fullscreenMapControl.button);if(navigator.geolocation&&options.geoLocation){this.geoActive=false;this.geoLocation=document.createElement("div");this.geoLocation.setAttribute("class","geoLocationOff");this.geoLocation.title=GeoTemConfig.getString("activateGeoLocation");this.container.appendChild(this.geoLocation);this.geoLocation.style.left="20px";this.geoLocation.onclick=function(){var changeStyle=function(){if(gui.geoActive){gui.geoLocation.setAttribute("class","geoLocationOn");gui.geoLocation.title=GeoTemConfig.getString(GeoTemConfig.language,"deactivateGeoLocation")}else{gui.geoLocation.setAttribute("class","geoLocationOff");gui.geoLocation.title=GeoTemConfig.getString(GeoTemConfig.language,"activateGeoLocation")}};if(!gui.geoActive){if(typeof gui.longitude=="undefined"){navigator.geolocation.getCurrentPosition(function(position){gui.longitude=position.coords.longitude;gui.latitude=position.coords.latitude;gui.map.setMarker(gui.longitude,gui.latitude);gui.geoActive=true;changeStyle()},function(msg){console.log(typeof msg=="string"?msg:"error")})}else{gui.map.setMarker(gui.longitude,gui.latitude);gui.geoActive=true;changeStyle()}}else{gui.map.removeMarker();gui.geoActive=false;changeStyle()}}}if(!options.olNavigation){this.map.zoomSlider=new MapZoomSlider(this.map,"vertical");this.container.appendChild(this.map.zoomSlider.div);this.map.zoomSlider.div.style.left="20px"}if(options.resetMap){this.homeButton=document.createElement("div");this.homeButton.setAttribute("class","mapHome");this.homeButton.title=GeoTemConfig.getString("home");this.container.appendChild(this.homeButton);this.homeButton.style.left="20px";this.homeButton.onclick=function(){if(map.mds.getAllObjects()==null){map.openlayersMap.setCenter(new OpenLayers.LonLat(0,0));map.openlayersMap.zoomTo(0)}gui.map.drawObjectLayer(true)}}if(options.legend){this.legendDiv=document.createElement("div");this.legendDiv.setAttribute("class","mapLegend");this.mapWindow.appendChild(this.legendDiv)}var linkForOsm="http://www.openstreetmap.org/";var linkForLicense="http://creativecommons.org/licenses/by-sa/2.0/";this.osmLink=document.createElement("div");this.osmLink.setAttribute("class","osmLink");this.osmLink.innerHTML="(c) OpenStreetMap contributors, CC-BY-SA";this.mapWindow.appendChild(this.osmLink);this.osmMapQuestLink=document.createElement("div");this.osmMapQuestLink.setAttribute("class","osmLink");this.osmMapQuestLink.innerHTML='(c) Data, imagery and map information provided by MapQuest MapQuest ').appendTo(this.legendDiv);for(var i=0;i").appendTo(table);if(options.useGraphics){var graphic=map.config.getGraphic(i);var fill="rgb("+graphic.color.r0+","+graphic.color.g0+","+graphic.color.b0+")";var stroke="rgb("+graphic.color.r1+","+graphic.color.g1+","+graphic.color.b1+")";var rot=graphic.rotation;var svg;if(graphic.shape=="circle"){svg=''}else{if(graphic.shape=="square"){svg=''}else{if(graphic.shape=="triangle"){svg=''}}}$(""+svg+"").appendTo(row)}else{var c=GeoTemConfig.getColor(i);var fill="rgb("+c.r0+","+c.g0+","+c.b0+")";var stroke="rgb("+c.r1+","+c.g1+","+c.b1+")";var svg='';$(""+svg+"").appendTo(row)}$(""+datasets[i].label+"").appendTo(row)}};this.updateSpaceQuantity=function(count){if(!options.dataInformation){return}this.mapCount=count;if(count!=1){this.mapElements.innerHTML=this.beautifyCount(count)+" "+GeoTemConfig.getString("results")}else{this.mapElements.innerHTML=this.beautifyCount(count)+" "+GeoTemConfig.getString("result")}};this.setMapsDropdown=function(){if(!options.mapSelection){return}$(this.mapTypeSelector).empty();var maps=[];var gui=this;var addMap=function(name,index){var setMap=function(){gui.map.setMap(index)};maps.push({name:name,onclick:setMap})};for(var i=0;i3){p+=3;c=c.substring(0,l-p)+"."+c.substring(l-p);p++;l++}return c}}MapWidget=function(core,div,options){this.core=core;this.core.setWidget(this);this.openlayersMap;this.baseLayers;this.objectLayer;this.drawPolygon;this.drawCircle;this.selectCountry;this.dragArea;this.selectFeature;this.navigation;this.div=div;this.iid=GeoTemConfig.getIndependentId("map");this.config=new MapConfig(options);this.options=this.config.options;this.formerCP=this.options.circlePackings;this.gui=new MapGui(this,this.div,this.options,this.iid);this.initialize()};MapWidget.prototype={initialize:function(){var map=this;if(map.options.proxyHost){OpenLayers.ProxyHost=map.options.proxyHost}this.polygons=[];this.connections=[];this.selection=new Selection();this.wmsOverlays=[];this.layerZIndex=1;this.zIndices=[];var activateDrag=function(){map.dragArea.activate()};var deactivateDrag=function(){map.dragArea.deactivate()};this.dragControl=new MapControl(this,null,"drag",activateDrag,deactivateDrag);this.filterBar=new FilterBar(this,this.gui.filterOptions);this.objectLayer=new OpenLayers.Layer.Vector("Data Objects",{projection:"EPSG:4326",displayInLayerSwitcher:false,rendererOptions:{zIndexing:true}});this.markerLayer=new OpenLayers.Layer.Markers("Markers");this.navigation=new OpenLayers.Control.Navigation({zoomWheelEnabled:GeoTemConfig.mouseWheelZoom});this.navigation.defaultDblClick=function(evt){var newCenter=this.map.getLonLatFromViewPortPx(evt.xy);this.map.setCenter(newCenter,this.map.zoom+1);map.drawObjectLayer(false);if(map.zoomSlider){map.zoomSlider.setValue(map.getZoom())}};this.navigation.wheelUp=function(evt){this.wheelChange(evt,1)};this.navigation.wheelDown=function(evt){this.wheelChange(evt,-1)};this.resolutions=[78271.516953125,39135.7584765625,19567.87923828125,9783.939619140625,4891.9698095703125,2445.9849047851562,1222.9924523925781,611.4962261962891,305.74811309814453,152.87405654907226,76.43702827453613,38.218514137268066,19.109257068634033,9.554628534317017,4.777314267158508,2.388657133579254,1.194328566789627,0.5971642833948135,0.29858214169740677];var options={controls:[this.navigation],projection:new OpenLayers.Projection("EPSG:900913"),displayProjection:new OpenLayers.Projection("EPSG:4326"),resolutions:this.resolutions,units:"meters",maxExtent:new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34)};this.openlayersMap=new OpenLayers.Map("mapContainer"+this.iid,options);if(map.options.navigate){this.activeControl="navigate"}this.openlayersMap.addControl(new OpenLayers.Control.Attribution());this.mds=new MapDataSource(this,this.options);this.openlayersMap.events.register("zoomend",map,function(){map.drawObjectLayer(false);if(map.zoomSlider){map.zoomSlider.setValue(map.getZoom())}map.core.triggerHighlight([])});if(map.options.olNavigation){var zoomPanel=new OpenLayers.Control.PanZoom();zoomPanel.onButtonClick=function(evt){var btn=evt.buttonElement;switch(btn.action){case"panup":this.map.pan(0,-this.getSlideFactor("h"));break;case"pandown":this.map.pan(0,this.getSlideFactor("h"));break;case"panleft":this.map.pan(-this.getSlideFactor("w"),0);break;case"panright":this.map.pan(this.getSlideFactor("w"),0);break;case"zoomin":map.zoom(1);break;case"zoomout":map.zoom(-1);break;case"zoomworld":if(this.map){map.zoom(this.map.zoom*-1)}break}};this.openlayersMap.addControl(zoomPanel)}if(map.options.popups){var panMap=function(){if(map.selectedGlyph){var lonlat=new OpenLayers.LonLat(map.selectedGlyph.lon,map.selectedGlyph.lat);var pixel=map.openlayersMap.getPixelFromLonLat(lonlat);if(map.popup){map.popup.shift(pixel.x,pixel.y)}}};this.openlayersMap.events.register("move",this.openlayersMap,panMap)}if(map.options.olMapOverview){this.openlayersMap.addControl(new OpenLayers.Control.OverviewMap())}if(map.options.olKeyboardDefaults){var keyboardControl=new OpenLayers.Control.KeyboardDefaults();keyboardControl.defaultKeyPress=function(evt){switch(evt.keyCode){case OpenLayers.Event.KEY_LEFT:this.map.pan(-this.slideFactor,0);break;case OpenLayers.Event.KEY_RIGHT:this.map.pan(this.slideFactor,0);break;case OpenLayers.Event.KEY_UP:this.map.pan(0,-this.slideFactor);break;case OpenLayers.Event.KEY_DOWN:this.map.pan(0,this.slideFactor);break;case 33:var size=this.map.getSize();this.map.pan(0,-0.75*size.h);break;case 34:var size=this.map.getSize();this.map.pan(0,0.75*size.h);break;case 35:var size=this.map.getSize();this.map.pan(0.75*size.w,0);break;case 36:var size=this.map.getSize();this.map.pan(-0.75*size.w,0);break;case 43:case 61:case 187:case 107:map.zoom(1);break;case 45:case 109:case 189:case 95:map.zoom(-1);break}};this.openlayersMap.addControl(keyboardControl)}if(map.options.olLayerSwitcher){this.openlayersMap.addControl(new OpenLayers.Control.LayerSwitcher())}if(map.options.olScaleLine){this.openlayersMap.addControl(new OpenLayers.Control.ScaleLine())}this.gui.resize();this.setBaseLayers();this.gui.setMapsDropdown();this.gui.setMap();this.openlayersMap.addLayers([this.objectLayer,this.markerLayer]);if(map.options.boundaries){var boundaries=map.options.boundaries;var bounds=new OpenLayers.Bounds(boundaries.minLon,boundaries.minLat,boundaries.maxLon,boundaries.maxLat);var projectionBounds=bounds.transform(this.openlayersMap.displayProjection,this.openlayersMap.projection);this.openlayersMap.zoomToExtent(projectionBounds)}else{this.openlayersMap.zoomToMaxExtent()}this.drawnPolygonHandler=function(polygon){if(map.mds.getAllObjects()==null){return}var polygonFeature;if(polygon instanceof OpenLayers.Geometry.Polygon){polygonFeature=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.MultiPolygon([polygon]))}else{if(polygon instanceof OpenLayers.Geometry.MultiPolygon){polygonFeature=new OpenLayers.Feature.Vector(polygon)}}map.polygons.push(polygonFeature);var style=$.extend(true,{},OpenLayers.Feature.Vector.style["default"]);style.graphicZIndex=0;polygonFeature.style=style;map.objectLayer.addFeatures([polygonFeature]);try{map.activeControl.deactivate()}catch(e){}var circles=map.mds.getObjectsByZoom();for(var i=0;i0&&map.options.overlayVisibility){var map=this;if(typeof this.featureInfo!="undefined"){this.featureInfo.deactivate();this.openlayersMap.removeControl(this.featureInfo)}this.featureInfo=new OpenLayers.Control.WMSGetFeatureInfo({url:"/geoserver/wms",layers:featureInfoLayers,eventListeners:{getfeatureinfo:function(event){if(event.text==""){return}var lonlat=map.openlayersMap.getLonLatFromPixel(new OpenLayers.Pixel(event.xy.x,event.xy.y));map.selectedGlyph={lon:lonlat.lon,lat:lonlat.lat};if(typeof map.popup!="undefined"){map.popup.reset()}map.popup=new MapPopup(map);map.popup.initialize(event.xy.x,event.xy.y);map.popup.setContent(event.text)}}});this.openlayersMap.addControl(this.featureInfo);this.featureInfo.activate();this.activateCountrySelector(this.wmsOverlays[this.wmsOverlays.length-1])}else{this.deactivateCountrySelector();if(this.openlayersMap.baseLayer instanceof OpenLayers.Layer.WMS){this.activateCountrySelector(this.openlayersMap.baseLayer)}}},addBaseLayer:function(layer){this.baseLayers.push(layer);this.openlayersMap.addLayers([layer]);for(var i in this.baseLayers){if(this.baseLayers[i].name==this.options.baseLayer){this.setMap(i)}}},drawObjectLayer:function(zoom){if(typeof this.placenameTags!="undefined"){this.placenameTags.remove()}var points=this.mds.getAllObjects();if(points==null){return}this.objectLayer.removeAllFeatures();if(zoom){var minLat,maxLat,minLon,maxLon;var pointsHighestZoom=points[points.length-1];for(var i=0;imaxLon){maxLon=point.originX}if(minLat==null||point.originYmaxLat){maxLat=point.originY}}}if(minLon==maxLon&&minLat==maxLat){this.openlayersMap.setCenter(new OpenLayers.LonLat(minLon,minLat))}else{var gapX=0.1*(maxLon-minLon);var gapY1=0.1*(maxLat-minLat);var gapY2=(this.gui.headerHeight/this.gui.mapWindow.offsetHeight+0.1)*(maxLat-minLat);this.openlayersMap.zoomToExtent(new OpenLayers.Bounds(minLon-gapX,minLat-gapY1,maxLon+gapX,maxLat+gapY2));this.openlayersMap.zoomTo(Math.floor(this.getZoom()))}if(this.zoomSlider){this.zoomSlider.setValue(this.getZoom())}}var displayPoints=this.mds.getObjectsByZoom();var resolution=this.openlayersMap.getResolution();for(var i=0;i4){this.options.circlePackings=false}else{this.options.circlePackings=this.formerCP}if(typeof mapObjects=="undefined"){return}this.count=0;this.objectCount=0;for(var i=0;imaxRadius){maxRadius=points[i][j][k].radius;area=getArea(maxRadius)}}}var minArea=getArea(this.options.minimumRadius);var areaDiff=area-minArea;for(var j=0;j0){hideEmptyCircles=true}}if(!GeoTemConfig.highlightEvents){return}this.mds.clearOverlay();if(this.selection.valid()){this.mds.setOverlay(GeoTemConfig.mergeObjects(mapObjects,this.selection.getObjects()))}else{this.mds.setOverlay(mapObjects)}var points=this.mds.getObjectsByZoom();var polygon=this.openlayersMap.getExtent().toGeometry();for(var i in points){for(var j in points[i]){var point=points[i][j];if(hideEmptyCircles){point.feature.style.display="none"}else{point.feature.style.display=""}this.updatePoint(points[i][j],polygon)}}this.displayConnections();this.objectLayer.redraw()},selectionChanged:function(selection){if(!GeoTemConfig.selectionEvents){return}this.reset();this.selection=selection;this.highlightChanged(selection.objects)},inPolygon:function(point){for(var i=0;i0&&this.inPolygon(circle)){return}var mapObjects=[];for(var i=0;i=ltm&&ct<=rtm){if(last!=undefined){var line=new OpenLayers.Geometry.LineString(new Array(last,c.first));this.connectionLayer.addFeatures([new OpenLayers.Feature.Vector(line,null,style)])}for(var k=0;k=this.resolutions[zoom]){break}}if(zoom==this.resolutions.length){zoom--}}return(zoom)},setMarker:function(lon,lat){var p=new OpenLayers.Geometry.Point(lon,lat,null);p.transform(this.openlayersMap.displayProjection,this.openlayersMap.projection);this.openlayersMap.setCenter(new OpenLayers.LonLat(p.x,p.y));var size=new OpenLayers.Size(22,33);var offset=new OpenLayers.Pixel(-(size.w/2),-size.h);var icon=new OpenLayers.Icon(GeoTemConfig.path+"marker.png",size,offset);var marker=new OpenLayers.Marker(new OpenLayers.LonLat(p.x,p.y),icon);marker.setOpacity(0.9);this.markerLayer.setZIndex(parseInt(this.objectLayer.getZIndex())+1);this.markerLayer.addMarker(marker);var nearestNeighbor;var points=this.mds.getAllObjects();if(points==null){return}var dist=function(p1,p2){return Math.sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y))};var zoomLevels=this.openlayersMap.getNumZoomLevels();var pointSet=points[zoomLevels-1];var closestDistance=undefined;var closestPoint;for(var i=0;i3){p+=3;c=c.substring(0,l-p)+"."+c.substring(l-p);p++;l++}return c};this.hideTimeUnitSelection=function(){this.timeUnitTitle.style.display="none";this.timeUnitSelector.style.display="none"}}TimeWidget=function(core,div,options){this.core=core;this.core.setWidget(this);this.timeplot;this.dataSources;this.eventSources;this.tds;this.timeGeometry;this.valueGeometry;this.canvas;this.leftFlagPole;this.rightFlagPole;this.rangeBox;this.leftHandle;this.rightHandle;this.leftFlagPos=null;this.leftFlagTime=null;this.rightFlagPos=null;this.rightFlagTime=null;this.mouseDownTime;this.mouseUpTime;this.mouseTempTime;this.mouseDownPos;this.mouseUpPos;this.mouseTempPos;this.status;this.slider;this.iid=GeoTemConfig.getIndependentId("time");this.options=(new TimeConfig(options)).options;this.gui=new TimeGui(this,div,this.options,this.iid);this.initialize()};TimeWidget.prototype={clearTimeplot:function(){this.timeplot._clearCanvas();this.timeGeometry._earliestDate=null;this.timeGeometry._latestDate=null;this.valueGeometry._minValue=0;this.valueGeometry._maxValue=0;this.highlightedSlice=undefined;this.timeGeometry._clearLabels();this.selection=new Selection()},initWidget:function(datasets){this.datasets=datasets;var timeObjects=[];for(var i=0;igranularity){granularity=g}}this.count+=o.weight}}}this.timeGeometry._granularity=granularity;this.timeGeometry._clearLabels();this.timeplot.resetPlots(this.plotInfos);if(this.plotInfos.length==0){this.initLabels(this.timeplot.regularGrid());return}this.timeGeometry.extendedDataSource=this.tds;this.tds.initialize(this.dataSources,this.eventSources,timeObjects,granularity,this.options.timeUnit,this.gui.timeplotDiv.offsetWidth);this.gui.setTimeUnitDropdown(this.tds.availableUnits);this.gui.timeUnitDropdown.setEntry(this.tds.getUnitIndex());var plots=this.timeplot._plots;for(var i=0;i=plot.canvas.width){x=plot.canvas.width}if(isNaN(x)||x<0){x=0}var t=plot.timeGeometry.fromScreen(x);if(t==0){return}return plot.dataSources[0].getClosestValidTime(t)};var getCorrelatedPosition=function(t){var x=plot.timeGeometry.toScreen(t);if(x>=plot.canvas.width){x=plot.canvas.width}if(isNaN(x)||x<0){x=0}return x};var mapPositions=function(pos1,pos2){if(pos1>pos2){plot.leftFlagPos=pos2;plot.rightFlagPos=pos1}else{plot.leftFlagPos=pos1;plot.rightFlagPos=pos2}plot.leftFlagTime=plot.dataSources[0].getClosestValidTime(plot.timeGeometry.fromScreen(plot.leftFlagPos));plot.rightFlagTime=plot.dataSources[0].getClosestValidTime(plot.timeGeometry.fromScreen(plot.rightFlagPos))};var setRangeDivs=function(){plot.leftFlagPole.style.visibility="visible";plot.rightFlagPole.style.visibility="visible";plot.rangeBox.style.visibility="visible";plot.timeplot.placeDiv(plot.leftFlagPole,{left:plot.leftFlagPos,bottom:0,height:plot.canvas.height,display:"block"});plot.timeplot.placeDiv(plot.rightFlagPole,{left:plot.rightFlagPos,bottom:0,height:plot.canvas.height,display:"block"});var boxWidth=plot.rightFlagPos-plot.leftFlagPos;if(plot.popup){plot.popupClickDiv.style.visibility="visible";plot.timeplot.placeDiv(plot.popupClickDiv,{left:plot.leftFlagPos,width:boxWidth+1,height:plot.canvas.height,display:"block"})}plot.timeplot.placeDiv(plot.rangeBox,{left:plot.leftFlagPos,width:boxWidth+1,height:plot.canvas.height,display:"block"});var plots=plot.timeplot._plots;for(i=0;iplot.cancelButton.offsetWidth){plot.cancelButton.style.left=(left+rightPos-plot.cancelButton.offsetWidth)+"px"}else{plot.cancelButton.style.left=(left+rightPos)+"px"}var tW=plot.toolbarAbsoluteDiv.offsetWidth;if(rW>=tW){plot.toolbar.style.left=leftPos+"px";plot.toolbar.style.width=(rW+1)+"px";plot.toolbarAbsoluteDiv.style.left=((rW-tW)/2)+"px"}else{plot.toolbar.style.left=(pL+plot.leftFlagPos*(pW-tW)/(pW-rW))+"px";plot.toolbar.style.width=(tW+2)+"px";plot.toolbarAbsoluteDiv.style.left="0px"}plot.toolbar.style.top=(top+plot.timeplot.getElement().offsetHeight)+"px";plot.toolbar.style.visibility="visible";plot.toolbarAbsoluteDiv.style.visibility="visible"};var getAbsoluteLeft=function(div){var left=0;while(div){left+=div.offsetLeft;div=div.offsetParent}return left};var timeplotLeft=getAbsoluteLeft(plot.timeplot.getElement());var checkPolesForStyle=function(x){if(plot.style=="bars"&&plot.leftFlagTime==plot.rightFlagTime){var index=plot.tds.getSliceIndex(plot.leftFlagTime);var time1=plot.leftFlagTime;var pos1=plot.leftFlagPos;var time2,pos2;if(index==0){time2=plot.tds.getSliceTime(index+1)}else{if(index==plot.tds.getSliceNumber()-1){time2=plot.tds.getSliceTime(index-1)}else{if(x=plot.canvas.width){reset=true;wait=1000}else{reset=false}setTimeout(function(){playIt(start,actual+pixel,reset)},wait)}};var setMultiplier=function(){var rangeWidth=plot.rightFlagPos-plot.leftFlagPos;var toolbarWidth=plot.toolbarAbsoluteDiv.offsetWidth;var plotWidth=plot.canvas.width;if(rangeWidth0){plot.x=Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt,plot.canvas).x);if(plot.status==0){var time=getCorrelatedTime(plot.x);if(plot.leftFlagPos!=null&&plot.popup&&time>=plot.leftFlagTime&&time<=plot.rightFlagTime){var x=plot.leftFlagPos+(plot.rightFlagPos-plot.leftFlagPos)/2;var elements=[];for(var i=0;i2){fs=2}div.style.fontSize=(1+fs)+"em";div.style.textShadow="0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em "+c.hex;if(weight==1){div.innerHTML=weight+" object"}else{div.innerHTML=weight+" objects"}var appendMouseFunctions=function(label,div,color){div.onclick=function(){plot.popup.showLabelContent(label);div.style.textShadow="0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em "+color};div.onmouseover=function(){div.style.textShadow="0 -1px "+color+", 1px 0 "+color+", 0 1px "+color+", -1px 0 "+color};div.onmouseout=function(){div.style.textShadow="0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em black, 0 0 0.4em "+color}};appendMouseFunctions(label,div,c.hex);labels.push(label)}if(labels.length>0){plot.popup.createPopup(x+20,0,labels)}}else{plot.deselection();plot.status=1;plot.mouseDownTime=time;plot.mouseTempTime=plot.mouseDownTime;plot.mouseDownPos=plot.timeGeometry.toScreen(plot.mouseDownTime);mapPositions(plot.mouseDownPos,plot.mouseDownPos,plot.mouseDownTime,plot.mouseDownTime);document.onmouseup=function(){if(plot.status==1){plot.mouseUpTime=plot.mouseTempTime;plot.mouseUpPos=plot.timeGeometry.toScreen(plot.mouseUpTime);mapPositions(plot.mouseDownPos,plot.mouseUpPos,plot.mouseDownTime,plot.mouseUpTime);checkPolesForStyle(plot.x);setRangeDivs();plot.timeSelection();plot.gui.updateAnimationButtons(1);document.onmouseup=null;plot.status=0}}}}}};var mouseMoveHandler=function(elmt,evt,target){if(plot.dataSources.length>0){plot.x=Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt,plot.canvas).x);if(plot.status==1){plot.mouseTempTime=getCorrelatedTime(plot.x);plot.mouseTempPos=plot.timeGeometry.toScreen(plot.mouseTempTime);mapPositions(plot.mouseDownPos,plot.mouseTempPos,plot.mouseDownTime,plot.mouseTempTime);checkPolesForStyle(plot.x);setRangeDivs()}}};var mouseOutHandler=function(elmt,evt,target){if(plot.dataSources.length>0){var x=Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt,plot.canvas).x);var y=Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt,plot.canvas).y);if(x>plot.canvas.width-2||isNaN(x)||x<2){plot.timeHighlight(true);plot.highlightedSlice=undefined}else{if(y>plot.canvas.height-2||isNaN(y)||y<2){plot.timeHighlight(true);plot.highlightedSlice=undefined}}}};var mouseHoverHandler=function(elmt,evt,target){if(plot.dataSources.length>0){var x=Math.round(SimileAjax.DOM.getEventRelativeCoordinates(evt,plot.canvas).x);var time=getCorrelatedTime(x);if(time==undefined){return}var highlightSlice;var slices=plot.tds.timeSlices;var index=plot.tds.getSliceIndex(time);if(plot.style=="graph"){highlightSlice=slices[index]}if(plot.style=="bars"){var pos=plot.timeGeometry.toScreen(time);if(x0){highlightSlice=slices[index-1]}else{highlightSlice=slices[index]}}if(plot.highlightedSlice==undefined||plot.highlightedSlice!=highlightSlice){plot.highlightedSlice=highlightSlice;plot.timeHighlight(false)}}};this.redrawPlot=function(){plot.clearTimeplot();plot.tds.reset(this.timeGeometry);plot.timeplot._prepareCanvas();plot.timeplot.repaint();if(plot.leftFlagPos!=null){plot.leftFlagPos=getCorrelatedPosition(plot.leftFlagTime);plot.rightFlagPos=getCorrelatedPosition(plot.rightFlagTime);setRangeDivs()}else{plot.displayOverlay()}plot.initLabels([]);plot.updateOverview()};this.resetOpacityPlots=function(){var plots=plot.timeplot._plots;for(var i=0;ih){h=height}break}}}ctx.fillStyle="rgb(102,102,102)";ctx.beginPath();ctx.rect(pos-1,this.canvas.height-h,2,h);ctx.fill();for(var j=0;j0){var color=GeoTemConfig.getColor(j);ctx.fillStyle="rgba("+color.r1+","+color.g1+","+color.b1+",0.6)";ctx.beginPath();ctx.arc(pos,this.canvas.height-heights[j],2.5,0,Math.PI*2,true);ctx.closePath();ctx.fill()}}}},highlightChanged:function(timeObjects){if(!GeoTemConfig.highlightEvents){return}this.resetOverlay();if(this.selection.valid()){if(!this.selection.equal(this)){this.tds.setOverlay(GeoTemConfig.mergeObjects(timeObjects,this.selection.getObjects(this)))}else{this.tds.setOverlay(timeObjects)}}else{this.tds.setOverlay(timeObjects)}this.displayOverlay()},selectionChanged:function(selection){if(!GeoTemConfig.selectionEvents){return}this.reset();this.selection=selection;this.tds.setOverlay(selection.objects);this.displayOverlay()},getOverviewLeft:function(time){var w=this.overview.offsetWidth;var s=this.tds.earliest().getTime();var e=this.tds.latest().getTime();var t=time.getTime();return Math.round(w*(t-s)/(e-s))},initOverview:function(){var labels=this.timeGeometry._grid;if(labels.length==0){var plot=this;setTimeout(function(){plot.initOverview()},10);return}this.overview.style.width=this.canvas.width+"px";var left=this.gui.timeplotDiv.offsetLeft;this.overview.innerHTML="";this.overview.style.left=left+"px";this.overviewRange=document.createElement("div");this.overviewRange.setAttribute("class","overviewRange");this.overview.appendChild(this.overviewRange);for(var i=0;i0){this.plotLabels.style.visibility="hidden";this.timeGeometry._hideLabels=false;this.overview.style.visibility="visible";this.shiftLeft.style.visibility="visible";this.shiftRight.style.visibility="visible";var left=this.getOverviewLeft(this.tds.timeSlices[this.tds.leftSlice].date);var right=this.getOverviewLeft(this.tds.timeSlices[this.tds.rightSlice].date);this.overviewRange.style.left=left+"px";this.overviewRange.style.width=(right-left)+"px"}else{this.timeGeometry._hideLabels=true;this.plotLabels.style.visibility="visible";this.overview.style.visibility="hidden";this.shiftLeft.style.visibility="hidden";this.shiftRight.style.visibility="hidden"}},getSlices:function(){return this.tds.timeSlices},timeSelection:function(){var slices=this.tds.timeSlices;var ls,rs;for(var i=0;i=ls&&i<=rs){for(var j in slices[i].stacks){selectedObjects[j]=selectedObjects[j].concat(slices[i].stacks[j].elements)}}}this.selection=new Selection(selectedObjects,this);this.core.triggerSelection(this.selection);this.filterBar.reset(true)},deselection:function(){this.reset();this.selection=new Selection();this.core.triggerSelection(this.selection)},filtering:function(){for(var i=0;i=ls&&i<=rs){continue}for(var j in slices[i].stacks){selectedObjects[j]=selectedObjects[j].concat(slices[i].stacks[j].elements)}}this.selection=new Selection(selectedObjects,this);this.filtering()},timeHighlight:function(undo){if(this.status==0){var s=this.highlightedSlice;var timeObjects=[];for(var i=0;i=this.leftFlagTime&&s.date<=this.rightFlagTime){add=false}if(this.style=="bars"&&s.date>=this.leftFlagTime&&s.date");changeColorShapeSelect.attr("title",GeoTemConfig.getString("colorShapeDatasetHelp"));changeColorShapeSelect.css("font-size","1.5em");var currentOptgroup=$("");var currentOption=$("");var color=GeoTemConfig.getColor(index);currentOption.css("color","rgb("+color.r1+","+color.g1+","+color.b1+")");currentOption.data("color",{r1:color.r1,g1:color.g1,b1:color.b1,r0:color.r0,g0:color.g0,b0:color.b0});if(dataset.graphic.shape=="circle"){currentOption.append("●")}else{if(dataset.graphic.shape=="triangel"){currentOption.append("▲")}else{if(dataset.graphic.shape=="square"){if(dataset.graphic.rotation===0){currentOption.append("■")}else{currentOption.append("◆")}}}}currentOptgroup.append(currentOption);changeColorShapeSelect.append(currentOptgroup);var defaultOptgroup=$("");var defaultOption=$("");var color=GeoTemConfig.colors[index];defaultOption.css("color","rgb("+color.r1+","+color.g1+","+color.b1+")");defaultOption.data("color",{r1:color.r1,g1:color.g1,b1:color.b1,r0:color.r0,g0:color.g0,b0:color.b0});defaultOption.append("●");defaultOptgroup.append(defaultOption);changeColorShapeSelect.append(defaultOptgroup);var shapeOptgroup=$("");shapeOptgroup.append("");shapeOptgroup.append("");shapeOptgroup.append("");shapeOptgroup.append("");changeColorShapeSelect.append(shapeOptgroup);var colorOptgroup=$("");var red=$("");red.data("color",{r1:255,g1:0,b1:0});colorOptgroup.append(red);var green=$("");green.data("color",{r1:0,g1:255,b1:0});colorOptgroup.append(green);var blue=$("");blue.data("color",{r1:0,g1:0,b1:255});colorOptgroup.append(blue);var yellow=$("");yellow.data("color",{r1:255,g1:255,b1:0});colorOptgroup.append(yellow);changeColorShapeSelect.append(colorOptgroup);changeColorShapeSelect.change($.proxy(function(e){var selected=changeColorShapeSelect.find("option:selected");function shadeRGBColor(color,percent){var f=color.split(","),t=percent<0?0:255,p=percent<0?percent*-1:percent,R=parseInt(f[0].slice(4)),G=parseInt(f[1]),B=parseInt(f[2]);return"rgb("+(Math.round((t-R)*p)+R)+","+(Math.round((t-G)*p)+G)+","+(Math.round((t-B)*p)+B)+")"}var color=selected.data("color");if(typeof color!=="undefined"){if((typeof color.r0==="undefined")||(typeof color.g0==="undefined")||(typeof color.b0==="undefined")){var shadedrgb=shadeRGBColor("rgb("+color.r1+","+color.g1+","+color.b1+")",0.7);shadedrgb=shadedrgb.replace("rgb(","").replace(")","");shadedrgb=shadedrgb.split(",");color.r0=parseInt(shadedrgb[0]);color.g0=parseInt(shadedrgb[1]);color.b0=parseInt(shadedrgb[2])}}var shapeText=selected.text();var graphic;if((shapeText=="■")||(shapeText=="□")){graphic={shape:"square",rotation:0}}else{if((shapeText=="●")||(shapeText=="○")){graphic={shape:"circle",rotation:0}}else{if((shapeText=="◆")||(shapeText=="◇")){graphic={shape:"square",rotation:45}}else{if((shapeText=="▲")||(shapeText=="△")){graphic={shape:"triangle",rotation:0}}}}}if(shapeOptgroup.has(selected).length>0){dataset.graphic=graphic}else{if(colorOptgroup.has(selected).length>0){dataset.color=color}else{dataset.graphic=graphic;dataset.color=color}}Publisher.Publish("filterData",GeoTemConfig.datasets,null);e.stopPropagation();return(false)},{index:index}));$(tableTabTableRow).append($(document.createElement("td")).append(changeColorShapeSelect))}return tableTab};tableWidget.addTab=addTab;for(var i in data){this.tableHash.push([]);var tableTab=addTab(data[i].label,i);this.gui.tabs.appendChild(tableTab);this.tableTabs.push(tableTab);var elements=[];for(var j in data[i].objects){elements.push(new TableElement(data[i].objects[j]));this.tableHash[i][data[i].objects[j].index]=elements[elements.length-1]}var table=new Table(elements,this,i);this.tables.push(table);this.tableElements.push(elements)}if(data.length>0){this.selectTable(0)}},getHeight:function(){if(this.options.tableHeight){return this.gui.tableContainer.offsetHeight-this.gui.tabs.offsetHeight}return false},selectTable:function(index){if(this.activeTable!=index){if(typeof this.activeTable!="undefined"){this.tables[this.activeTable].hide();var c=GeoTemConfig.getColor(this.activeTable);this.tableTabs[this.activeTable].style.backgroundColor="rgb("+c.r0+","+c.g0+","+c.b0+")"}this.activeTable=index;this.tables[this.activeTable].show();var c=GeoTemConfig.getColor(this.activeTable);this.tableTabs[this.activeTable].style.backgroundColor="rgb("+c.r1+","+c.g1+","+c.b1+")";this.core.triggerRise(index)}},highlightChanged:function(objects){if(!GeoTemConfig.highlightEvents||(typeof this.tables[this.activeTable]==="undefined")){return}if(this.tables.length>0){return}for(var i=0;i0){this.tables[this.activeTable].resetElements();this.tables[this.activeTable].reset();this.tables[this.activeTable].update()}}};function Table(elements,parent,id){this.elements=elements;this.showElementsLength=elements.length;this.parent=parent;this.id=id;this.options=parent.options;this.validResultsPerPage=[10,20,50,100];this.keyHeaderList=[];this.initialize()}Table.prototype={initToolbar:function(){var table=this;this.toolbar=document.createElement("table");this.toolbar.setAttribute("class","ddbToolbar");this.toolbar.style.overflow="auto";this.tableDiv.appendChild(this.toolbar);var navigation=document.createElement("tr");this.toolbar.appendChild(navigation);var selectors=document.createElement("td");navigation.appendChild(selectors);if(table.options.tableSelectPage){var selectPageItems=true;this.selectPage=document.createElement("div");$(this.selectPage).css("float","left");this.selectPage.setAttribute("class","smallButton selectPage");this.selectPage.title=GeoTemConfig.getString("selectTablePageItemsHelp");selectors.appendChild(this.selectPage);this.selectPage.onclick=function(){selectPageItems=!selectPageItems;if(selectPageItems){var items=0;for(var i=table.first;i0){table.page--;table.update()}};this.pageInfo=document.createElement("div");this.pageInfo.setAttribute("class","pageInfo");pagination.appendChild(this.pageInfo);this.nextPage=document.createElement("div");this.nextPage.setAttribute("class","paginationButton");this.nextPage.title=GeoTemConfig.getString("paginationNextPageHelp");pagination.appendChild(this.nextPage);this.nextPage.onclick=function(){if(table.page0){table.page--;table.update()}};this.bottomFirstPage=document.createElement("div");this.bottomFirstPage.setAttribute("class","paginationButton");this.bottomFirstPage.title=GeoTemConfig.getString("paginationFirsPageHelp");$(this.bottomFirstPage).css("float","right");bottomPagination.appendChild(this.bottomFirstPage);this.bottomFirstPage.onclick=function(){if(table.page!=0){table.page=0;table.update()}};if(typeof(this.elements[0])=="undefined"){return}var ascButtons=[];var descButtons=[];var clearButtons=function(){for(var i in ascButtons){ascButtons[i].setAttribute("class","sort sortAscDeactive")}for(var i in descButtons){descButtons[i].setAttribute("class","sort sortDescDeactive")}};var addSortButton=function(key){table.keyHeaderList.push(key);var cell=document.createElement("th");table.elementListHeader.appendChild(cell);var sortAsc=document.createElement("div");var sortDesc=document.createElement("div");var span=document.createElement("div");span.setAttribute("class","headerLabel");span.innerHTML=key;cell.appendChild(sortDesc);cell.appendChild(span);cell.appendChild(sortAsc);sortAsc.setAttribute("class","sort sortAscDeactive");sortAsc.title=GeoTemConfig.getString("sortAZHelp");sortDesc.setAttribute("class","sort sortDescDeactive");sortDesc.title=GeoTemConfig.getString("sortZAHelp");ascButtons.push(sortAsc);descButtons.push(sortDesc);sortAsc.onclick=function(){clearButtons();sortAsc.setAttribute("class","sort sortAscActive");table.sortAscending(key);table.update()};sortDesc.onclick=function(){clearButtons();sortDesc.setAttribute("class","sort sortDescActive");table.sortDescending(key);table.update()}};for(var key in this.elements[0].object.tableContent){addSortButton(key)}},sortAscending:function(key){var sortFunction=function(e1,e2){if(e1.object.tableContent[key]e2.object.tableContent[key]){return -1}return 1};this.elements.sort(sortFunction)},selectByText:function(text){$(this.elements).each(function(){this.selected=false});var selectedCount=0;$(this.elements).filter(function(index){return this.object.contains(text)}).each(function(){this.selected=true;selectedCount++});this.showSelectedItems=true;this.showElementsLength=selectedCount;this.showSelected.setAttribute("class","smallButton showAll");this.update();this.parent.tableSelection()},setPagesText:function(){var infoText=GeoTemConfig.getString("pageInfo");infoText=infoText.replace("PAGES_ID",this.pages);infoText=infoText.replace("PAGE_ID",this.page+1);this.pageInfo.innerHTML=infoText;this.bottomPageInfo.innerHTML=infoText},setResultsText:function(){if(this.elements.length==0){this.resultsInfo.innerHTML="0 Results"}else{var infoText=GeoTemConfig.getString("resultsInfo");var first=this.page*this.resultsPerPage+1;var last=(this.page+1==this.pages)?this.showElementsLength:first+this.resultsPerPage-1;infoText=infoText.replace("RESULTS_FROM_ID",first);infoText=infoText.replace("RESULTS_TO_ID",last);infoText=infoText.replace("RESULTS_ID",this.showElementsLength);this.resultsInfo.innerHTML=infoText}},updateIndices:function(rpp){if(typeof this.resultsPerPage=="undefined"){this.page=0;this.resultsPerPage=0}var index=this.page*this.resultsPerPage;this.resultsPerPage=rpp;if(this.showSelectedItems){index=0}this.pages=Math.floor(this.showElementsLength/this.resultsPerPage);if(this.showElementsLength%this.resultsPerPage!=0){this.pages++}this.page=Math.floor(index/this.resultsPerPage)},update:function(){var table=this;$(this.elementList).find("tr:gt(0)").remove();if(this.page==0){this.previousPage.setAttribute("class","paginationButton previousPageDisabled");this.firstPage.setAttribute("class","paginationButton firstPageDisabled");this.bottomPreviousPage.setAttribute("class","paginationButton previousPageDisabled");this.bottomFirstPage.setAttribute("class","paginationButton firstPageDisabled")}else{this.previousPage.setAttribute("class","paginationButton previousPageEnabled");this.firstPage.setAttribute("class","paginationButton firstPageEnabled");this.bottomPreviousPage.setAttribute("class","paginationButton previousPageEnabled");this.bottomFirstPage.setAttribute("class","paginationButton firstPageEnabled")}if(this.page==this.pages-1){this.nextPage.setAttribute("class","paginationButton nextPageDisabled");this.lastPage.setAttribute("class","paginationButton lastPageDisabled");this.bottomNextPage.setAttribute("class","paginationButton nextPageDisabled");this.bottomLastPage.setAttribute("class","paginationButton lastPageDisabled")}else{this.nextPage.setAttribute("class","paginationButton nextPageEnabled");this.lastPage.setAttribute("class","paginationButton lastPageEnabled");this.bottomNextPage.setAttribute("class","paginationButton nextPageEnabled");this.bottomLastPage.setAttribute("class","paginationButton lastPageEnabled")}this.setPagesText();this.setResultsText();if(this.showSelectedItems){var start=this.page*this.resultsPerPage;var items=0;for(var i=0;i").appendTo(this.elementList);if(GeoTemConfig.allowFilter){var checkColumn=$("").appendTo(itemRow);var checkbox=$("").appendTo(checkColumn);$(checkbox).attr("checked",e.selected)}var makeSubtext=function(cell,text){var subtext=text.substring(0,table.options.tableContentOffset);subtext=subtext.substring(0,subtext.lastIndexOf(" "));subtext+=" ... ";var textDiv=$("
    ").appendTo(cell);$(textDiv).html(subtext);var show=false;var fullDiv=$("").appendTo(cell);$(fullDiv).click(function(){show=!show;if(show){$(textDiv).html(text);$(fullDiv).html('<<')}else{$(textDiv).html(subtext);$(fullDiv).html('>>')}})};for(var k=0;k").appendTo(itemRow);if(typeof table.options.verticalAlign!=="undefined"){if(table.options.verticalAlign==="top"){$(cell).attr("valign","top")}else{if(table.options.verticalAlign==="center"){$(cell).attr("valign","center")}else{if(table.options.verticalAlign==="bottom"){$(cell).attr("valign","bottom")}}}}if(table.options.tableContentOffset&&text.length1){fileName=fileName.substr(fileName.lastIndexOf("/")+1)}else{fileName="unnamed dataset"}}return fileName},distributeDataset:function(dataSet){GeoTemConfig.addDataset(dataSet)},distributeDatasets:function(datasets){GeoTemConfig.addDatasets(datasets)},addStaticLoader:function(){if(this.options.staticKML.length>0){$(this.parent.gui.loaderTypeSelect).append("");this.StaticLoaderTab=document.createElement("div");$(this.StaticLoaderTab).attr("id","StaticLoader");this.staticKMLList=document.createElement("select");$(this.StaticLoaderTab).append(this.staticKMLList);var staticKMLList=this.staticKMLList;var isFirstHeader=true;$(this.options.staticKML).each(function(){var label=this.label;var url=this.url;var header=this.header;if(typeof header!=="undefined"){if(!isFirstHeader){$(staticKMLList).append("")}$(staticKMLList).append("");isFirstHeader=false}else{$(staticKMLList).append("")}});if(!isFirstHeader){$(staticKMLList).append("")}this.loadStaticKMLButton=document.createElement("button");$(this.loadStaticKMLButton).text("load");$(this.StaticLoaderTab).append(this.loadStaticKMLButton);$(this.loadStaticKMLButton).click($.proxy(function(){var kmlURL=$(this.staticKMLList).find(":selected").attr("value");if(kmlURL.length===0){return}var origURL=kmlURL;var fileName=this.getFileName(kmlURL);if(typeof GeoTemConfig.proxy!="undefined"){kmlURL=GeoTemConfig.proxy+kmlURL}var kml=GeoTemConfig.getKml(kmlURL);if((typeof kml!=="undefined")&&(kml!=null)){var dataSet=new Dataset(GeoTemConfig.loadKml(kml),fileName,origURL);if(dataSet!=null){this.distributeDataset(dataSet)}}else{alert("Could not load file.")}},this));$(this.parent.gui.loaders).append(this.StaticLoaderTab)}},addKMLLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.KMLLoaderTab=document.createElement("div");$(this.KMLLoaderTab).attr("id","KMLLoader");this.kmlURL=document.createElement("input");$(this.kmlURL).attr("type","text");$(this.KMLLoaderTab).append(this.kmlURL);this.loadKMLButton=document.createElement("button");$(this.loadKMLButton).text("load KML");$(this.KMLLoaderTab).append(this.loadKMLButton);$(this.loadKMLButton).click($.proxy(function(){var kmlURL=$(this.kmlURL).val();if(kmlURL.length===0){return}var origURL=kmlURL;var fileName=this.getFileName(kmlURL);if(typeof GeoTemConfig.proxy!="undefined"){kmlURL=GeoTemConfig.proxy+kmlURL}var kml=GeoTemConfig.getKml(kmlURL);if((typeof kml!=="undefined")&&(kml!=null)){var dataSet=new Dataset(GeoTemConfig.loadKml(kml),fileName,origURL);if(dataSet!=null){this.distributeDataset(dataSet)}}else{alert("Could not load file.")}},this));$(this.parent.gui.loaders).append(this.KMLLoaderTab)},addKMZLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.KMZLoaderTab=document.createElement("div");$(this.KMZLoaderTab).attr("id","KMZLoader");this.kmzURL=document.createElement("input");$(this.kmzURL).attr("type","text");$(this.KMZLoaderTab).append(this.kmzURL);this.loadKMZButton=document.createElement("button");$(this.loadKMZButton).text("load KMZ");$(this.KMZLoaderTab).append(this.loadKMZButton);$(this.loadKMZButton).click($.proxy(function(){var dataLoader=this;var kmzURL=$(this.kmzURL).val();if(kmzURL.length===0){return}var origURL=kmzURL;var fileName=dataLoader.getFileName(kmzURL);if(typeof GeoTemConfig.proxy!="undefined"){kmzURL=GeoTemConfig.proxy+kmzURL}GeoTemConfig.getKmz(kmzURL,function(kmlArray){$(kmlArray).each(function(){var dataSet=new Dataset(GeoTemConfig.loadKml(this),fileName,origURL);if(dataSet!=null){dataLoader.distributeDataset(dataSet)}})})},this));$(this.parent.gui.loaders).append(this.KMZLoaderTab)},addCSVLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.CSVLoaderTab=document.createElement("div");$(this.CSVLoaderTab).attr("id","CSVLoader");this.csvURL=document.createElement("input");$(this.csvURL).attr("type","text");$(this.CSVLoaderTab).append(this.csvURL);this.loadCSVButton=document.createElement("button");$(this.loadCSVButton).text("load CSV");$(this.CSVLoaderTab).append(this.loadCSVButton);$(this.loadCSVButton).click($.proxy(function(){var dataLoader=this;var csvURL=$(this.csvURL).val();if(csvURL.length===0){return}var origURL=csvURL;var fileName=dataLoader.getFileName(csvURL);if(typeof GeoTemConfig.proxy!="undefined"){csvURL=GeoTemConfig.proxy+csvURL}GeoTemConfig.getCsv(csvURL,function(json){if((typeof json!=="undefined")&&(json.length>0)){var dataSet=new Dataset(GeoTemConfig.loadJson(json),fileName,origURL);if(dataSet!=null){dataLoader.distributeDataset(dataSet)}}else{alert("Could not load file.")}})},this));$(this.parent.gui.loaders).append(this.CSVLoaderTab)},addLocalKMLLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.localKMLLoaderTab=document.createElement("div");$(this.localKMLLoaderTab).attr("id","LocalKMLLoader");this.kmlFile=document.createElement("input");$(this.kmlFile).attr("type","file");$(this.localKMLLoaderTab).append(this.kmlFile);this.loadLocalKMLButton=document.createElement("button");$(this.loadLocalKMLButton).text("load KML");$(this.localKMLLoaderTab).append(this.loadLocalKMLButton);$(this.loadLocalKMLButton).click($.proxy(function(){var filelist=$(this.kmlFile).get(0).files;if(filelist.length>0){var file=filelist[0];var fileName=file.name;var reader=new FileReader();reader.onloadend=($.proxy(function(theFile){return function(e){var dataSet=new Dataset(GeoTemConfig.loadKml($.parseXML(reader.result)),fileName);if(dataSet!=null){this.distributeDataset(dataSet)}}}(file),this));reader.readAsText(file)}},this));$(this.parent.gui.loaders).append(this.localKMLLoaderTab)},addLocalCSVLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.localCSVLoaderTab=document.createElement("div");$(this.localCSVLoaderTab).attr("id","LocalCSVLoader");this.csvFile=document.createElement("input");$(this.csvFile).attr("type","file");$(this.localCSVLoaderTab).append(this.csvFile);this.loadLocalCSVButton=document.createElement("button");$(this.loadLocalCSVButton).text("load CSV");$(this.localCSVLoaderTab).append(this.loadLocalCSVButton);$(this.loadLocalCSVButton).click($.proxy(function(){var filelist=$(this.csvFile).get(0).files;if(filelist.length>0){var file=filelist[0];var fileName=file.name;var reader=new FileReader();reader.onloadend=($.proxy(function(theFile){return function(e){var json=GeoTemConfig.convertCsv(reader.result);var dataSet=new Dataset(GeoTemConfig.loadJson(json),fileName);if(dataSet!=null){this.distributeDataset(dataSet)}}}(file),this));reader.readAsText(file)}},this));$(this.parent.gui.loaders).append(this.localCSVLoaderTab)},addLocalStorageLoader:function(){var dataLoader=this;this.localStorageLoaderTab=document.createElement("div");$(this.localStorageLoaderTab).attr("id","LocalStorageLoader");var localDatasets=document.createElement("select");$(this.localStorageLoaderTab).append(localDatasets);var localStorageDatasetCount=0;for(var key in localStorage){if(key.startsWith("GeoBrowser_dataset_")){localStorageDatasetCount++;var label=key.substring("GeoBrowser_dataset_".length);var url=key;$(localDatasets).append("")}}if(localStorageDatasetCount>0){$(this.parent.gui.loaderTypeSelect).append("")}this.loadLocalStorageButton=document.createElement("button");$(this.loadLocalStorageButton).text("load");$(this.localStorageLoaderTab).append(this.loadLocalStorageButton);$(this.loadLocalStorageButton).click($.proxy(function(){var fileKey=$(localDatasets).find(":selected").attr("value");if(fileKey.length===0){return}var csv=$.remember({name:fileKey});var fileName=decodeURIComponent(fileKey.substring("GeoBrowser_dataset_".length));var json=GeoTemConfig.convertCsv(csv);var dataSet=new Dataset(GeoTemConfig.loadJson(json),fileName,fileKey,"local");if(dataSet!=null){dataLoader.distributeDataset(dataSet)}},this));$(this.parent.gui.loaders).append(this.localStorageLoaderTab)},addLocalXLSXLoader:function(){var fixdata=function(data){var o="",l=0,w=10240;for(;llocal XLS/XLSX File");this.LocalXLSXLoader=document.createElement("div");$(this.LocalXLSXLoader).attr("id","LocalXLSXLoader");this.xlsxFile=document.createElement("input");$(this.xlsxFile).attr("type","file");$(this.LocalXLSXLoader).append(this.xlsxFile);this.loadLocalXLSXButton=document.createElement("button");$(this.loadLocalXLSXButton).text("load XLS/XLSX");$(this.LocalXLSXLoader).append(this.loadLocalXLSXButton);$(this.loadLocalXLSXButton).click($.proxy(function(){var filelist=$(this.xlsxFile).get(0).files;if(filelist.length>0){var file=filelist[0];var fileName=file.name;var reader=new FileReader();reader.onloadend=($.proxy(function(theFile){return function(e){var workbook;var json;if(fileName.toLowerCase().indexOf("xlsx")!=-1){workbook=XLSX.read(btoa(fixdata(reader.result)),{type:"base64"});var csv=XLSX.utils.sheet_to_csv(workbook.Sheets[workbook.SheetNames[0]]);var json=GeoTemConfig.convertCsv(csv)}else{workbook=XLS.read(btoa(fixdata(reader.result)),{type:"base64"});var csv=XLS.utils.sheet_to_csv(workbook.Sheets[workbook.SheetNames[0]]);var json=GeoTemConfig.convertCsv(csv)}var dataSet=new Dataset(GeoTemConfig.loadJson(json),fileName);if(dataSet!=null){this.distributeDataset(dataSet)}}}(file),this));reader.readAsArrayBuffer(file)}},this));$(this.parent.gui.loaders).append(this.LocalXLSXLoader)},};function DataloaderConfig(options){this.options={staticKML:[]};if(typeof options!="undefined"){$.extend(this.options,options)}}function DataloaderGui(dataloader,div,options){var dataloaderGui=this;this.dataloaderContainer=div;this.dataloaderContainer.style.position="relative";this.loaderTypeSelect=document.createElement("select");div.appendChild(this.loaderTypeSelect);this.loaders=document.createElement("div");div.appendChild(this.loaders);$(this.loaderTypeSelect).change(function(){var activeLoader=$(this).val();$(dataloaderGui.loaders).find("div").each(function(){if($(this).attr("id")==activeLoader){$(this).show()}else{$(this).hide()}})})}DataloaderWidget=function(core,div,options){this.core=core;this.core.setWidget(this);this.options=(new DataloaderConfig(options)).options;this.gui=new DataloaderGui(this,div,this.options);this.dataLoader=new Dataloader(this);this.datasets=[]};DataloaderWidget.prototype={initWidget:function(){var dataloaderWidget=this},highlightChanged:function(objects){if(!GeoTemConfig.highlightEvents){return}},selectionChanged:function(selection){if(!GeoTemConfig.selectionEvents){return}},triggerHighlight:function(item){},tableSelection:function(){},deselection:function(){},filtering:function(){},inverseFiltering:function(){},triggerRefining:function(){},reset:function(){},loadRenames:function(){var dataLoaderWidget=this;var datasets=dataLoaderWidget.datasets;$.each($.url().param(),function(paramName,paramValue){if(paramName.toLowerCase().startsWith("rename")){var datasetID=parseInt(paramName.replace(/\D/g,""));var dataset;if(isNaN(datasetID)){var dataset;for(datasetID in datasets){break}}dataset=datasets[datasetID];if(typeof dataset==="undefined"){return}var renameFunc=function(index,latAttr,lonAttr,placeAttr,dateAttr,timespanBeginAttr,timespanEndAttr,indexAttr){var renameArray=[];if(typeof index==="undefined"){index=0}if((typeof latAttr!=="undefined")&&(typeof lonAttr!=="undefined")){renameArray.push({oldColumn:latAttr,newColumn:"locations["+index+"].latitude"});renameArray.push({oldColumn:lonAttr,newColumn:"locations["+index+"].longitude"})}if(typeof placeAttr!=="undefined"){renameArray.push({oldColumn:placeAttr,newColumn:"locations["+index+"].place"})}if(typeof dateAttr!=="undefined"){renameArray.push({oldColumn:dateAttr,newColumn:"dates["+index+"]"})}if((typeof timespanBeginAttr!=="undefined")&&(typeof timespanEndAttr!=="undefined")){renameArray.push({oldColumn:timespanBeginAttr,newColumn:"tableContent[TimeSpan:begin]"});renameArray.push({oldColumn:timespanEndAttr,newColumn:"tableContent[TimeSpan:end]"})}if(typeof indexAttr!=="undefined"){renameArray.push({oldColumn:indexAttr,newColumn:"index"})}GeoTemConfig.renameColumns(dataset,renameArray)};var renames=JSON.parse(paramValue);if(renames instanceof Array){for(var i=0;idatasetID){if(typeof datasets[datasetID].color==="undefined"){var color=new Object();var colorsSelectedUnselected=paramValue.split(",");if(colorsSelectedUnselected.length>2){return}var color1=colorsSelectedUnselected[0];if(color1.length!=6){return}color.r1=parseInt(color1.substr(0,2),16);color.g1=parseInt(color1.substr(2,2),16);color.b1=parseInt(color1.substr(4,2),16);if(colorsSelectedUnselected.length==2){var color0=colorsSelectedUnselected[1];if(color0.length!=6){return}color.r0=parseInt(color0.substr(0,2),16);color.g0=parseInt(color0.substr(2,2),16);color.b0=parseInt(color0.substr(4,2),16)}else{color.r0=Math.round(color.r1/2);color.g0=Math.round(color.g1/2);color.b0=Math.round(color.b1/2)}datasets[datasetID].color=color}}}})},loadFromURL:function(){var dataLoaderWidget=this;dataLoaderWidget.datasets=[];var datasets=dataLoaderWidget.datasets;var parametersHash=$.url().param();var parametersArray=[];$.each(parametersHash,function(paramName,paramValue){parametersArray.push({paramName:paramName,paramValue:paramValue})});var parseParam=function(paramNr){if(paramNr==parametersArray.length){dataLoaderWidget.loadRenames();dataLoaderWidget.loadFilters();dataLoaderWidget.loadColors();var tempDatasets=[];for(var index in datasets){if(datasets[index] instanceof Dataset){tempDatasets.push(datasets[index])}}datasets=tempDatasets;if(datasets.length>0){dataLoaderWidget.dataLoader.distributeDatasets(datasets)}return}var paramName=parametersArray[paramNr].paramName;var paramValue=parametersArray[paramNr].paramValue;var datasetID=parseInt(paramName.replace(/\D/g,""));var fileName=dataLoaderWidget.dataLoader.getFileName(paramValue);var origURL=paramValue;if(typeof GeoTemConfig.proxy!="undefined"){paramValue=GeoTemConfig.proxy+paramValue}if(paramName.toLowerCase().startsWith("kml")){GeoTemConfig.getKml(paramValue,function(kmlDoc){var dataSet=new Dataset(GeoTemConfig.loadKml(kmlDoc),fileName,origURL);if(dataSet!=null){if(!isNaN(datasetID)){datasets[datasetID]=dataSet}else{datasets.push(dataSet)}}setTimeout(function(){parseParam(paramNr+1)},1)})}else{if(paramName.toLowerCase().startsWith("csv")){GeoTemConfig.getCsv(paramValue,function(json){var dataSet=new Dataset(GeoTemConfig.loadJson(json),fileName,origURL);if(dataSet!=null){if(!isNaN(datasetID)){datasets[datasetID]=dataSet}else{datasets.push(dataSet)}}setTimeout(function(){parseParam(paramNr+1)},1)})}else{if(paramName.toLowerCase().startsWith("json")){GeoTemConfig.getJson(paramValue,function(json){var dataSet=new Dataset(GeoTemConfig.loadJson(json),fileName,origURL);if(dataSet!=null){if(!isNaN(datasetID)){datasets[datasetID]=dataSet}else{datasets.push(dataSet)}}setTimeout(function(){parseParam(paramNr+1)},1)})}else{if(paramName.toLowerCase().startsWith("local")){var csv=$.remember({name:encodeURIComponent(origURL)});var fileName=origURL.substring("GeoBrowser_dataset_".length);var json=GeoTemConfig.convertCsv(csv);var dataSet=new Dataset(GeoTemConfig.loadJson(json),fileName,origURL,"local");if(dataSet!=null){if(!isNaN(datasetID)){datasets[datasetID]=dataSet}else{datasets.push(dataSet)}}setTimeout(function(){parseParam(paramNr+1)},1)}else{if(paramName.toLowerCase().startsWith("xls")){GeoTemConfig.getBinary(paramValue,function(binaryData){var data=new Uint8Array(binaryData);var arr=new Array();for(var i=0;i!=data.length;++i){arr[i]=String.fromCharCode(data[i])}var workbook;var json;if(paramName.toLowerCase().startsWith("xlsx")){workbook=XLSX.read(arr.join(""),{type:"binary"});var csv=XLSX.utils.sheet_to_csv(workbook.Sheets[workbook.SheetNames[0]]);var json=GeoTemConfig.convertCsv(csv)}else{workbook=XLS.read(arr.join(""),{type:"binary"});var csv=XLS.utils.sheet_to_csv(workbook.Sheets[workbook.SheetNames[0]]);var json=GeoTemConfig.convertCsv(csv)}var dataSet=new Dataset(GeoTemConfig.loadJson(json),fileName,origURL);if(dataSet!=null){if(!isNaN(datasetID)){datasets[datasetID]=dataSet}else{datasets.push(dataSet)}}setTimeout(function(){parseParam(paramNr+1)},1)})}else{setTimeout(function(){parseParam(paramNr+1)},1)}}}}}};if(parametersArray.length>0){parseParam(0)}}};function FuzzyTimelineConfig(options){this.options={maxBars:50,maxDensityTicks:150,timelineMode:"stacking",showRangePiechart:false,backgroundColor:"#EEEEEE",showYAxis:true,showAllPossibleSpans:true,};if(typeof options!="undefined"){$.extend(this.options,options)}}function FuzzyTimelineDensity(parent,div){this.index;this.fuzzyTimeline=this;this.singleTickWidth;this.singleTickCenter=function(){return this.singleTickWidth/2};this.datasetsPlot;this.datasetsHash;this.highlightedDatasetsPlot;this.yValMin;this.yValMax;this.displayType;this.selected=undefined;this.highlighted;this.parent=parent;this.div=div;this.options=parent.options;this.plot;this.maxTickCount=this.options.maxDensityTicks;this.datasets}FuzzyTimelineDensity.prototype={initialize:function(datasets){var density=this;density.datasets=datasets;density.selected=[]},createPlot:function(data){density=this;var chartData=[];chartData.push([density.parent.overallMin,0]);$.each(data,function(name,val){var tickCenterTime=density.parent.overallMin+name*density.singleTickWidth+density.singleTickCenter();var dateObj=moment(tickCenterTime);chartData.push([dateObj,val])});var maxPlotedDate=chartData[chartData.length-1][0];if(density.parent.overallMax>maxPlotedDate){chartData.push([density.parent.overallMax,0])}else{chartData.push([maxPlotedDate+1,0])}return chartData},createUDData:function(datasets){var density=this;var plots=[];var objectHashes=[];$(datasets).each(function(){var chartDataCounter=new Object();var objectHash=new Object();for(var i=0;i0){plots.push(udChartData)}objectHashes.push(objectHash)});return{plots:plots,hashs:objectHashes}},showPlot:function(){var density=this;var plot=density.datasetsPlot;var highlight_select_plot=$.merge([],plot);if(density.highlightedDatasetsPlot instanceof Array){if(plot===density.datasetsPlot){highlight_select_plot=$.merge(highlight_select_plot,density.highlightedDatasetsPlot)}}var axisFormatString="%Y";var tooltipFormatString="YYYY";if(density.singleTickWidth<60*1000){axisFormatString="%Y/%m/%d %H:%M:%S";tooltipFormatString="YYYY/MM/DD HH:mm:ss"}else{if(density.singleTickWidth<60*60*1000){axisFormatString="%Y/%m/%d %H:%M";tooltipFormatString="YYYY/MM/DD HH:mm"}else{if(density.singleTickWidth<24*60*60*1000){axisFormatString="%Y/%m/%d %H";tooltipFormatString="YYYY/MM/DD HH"}else{if(density.singleTickWidth<31*24*60*60*1000){axisFormatString="%Y/%m/%d";tooltipFormatString="YYYY/MM/DD"}else{if(density.singleTickWidth<12*31*24*60*60*1000){axisFormatString="%Y/%m";tooltipFormatString="YYYY/MM"}}}}}function shadeRGBColor(color,percent){var f=color.split(","),t=percent<0?0:255,p=percent<0?percent*-1:percent,R=parseInt(f[0].slice(4)),G=parseInt(f[1]),B=parseInt(f[2]);return"rgb("+(Math.round((t-R)*p)+R)+","+(Math.round((t-G)*p)+G)+","+(Math.round((t-B)*p)+B)+")"}var drawLines=function(plot,ctx){var data=plot.getData();var axes=plot.getAxes();var offset=plot.getPlotOffset();for(var i=0;iGeoTemConfig.datasets.length){color="rgb("+datasetColors.r0+","+datasetColors.g0+","+datasetColors.b0+")"}else{color="rgb("+datasetColors.r1+","+datasetColors.g1+","+datasetColors.b1+")"}}else{var datasetColors=GeoTemConfig.getColor(i-GeoTemConfig.datasets.length);color="rgb("+datasetColors.r1+","+datasetColors.g1+","+datasetColors.b1+")"}highlight_select_plot_colors.push({color:color,data:this});i++});density.plot=$.plot($(density.div),highlight_select_plot_colors,options);density.parent.drawHandles();var rangeBars=density.parent.rangeBars;if(typeof rangeBars!=="undefined"){$(density.div).unbind("plothover",rangeBars.hoverFunction)}$(density.div).unbind("plothover",density.hoverFunction);$(density.div).bind("plothover",density.hoverFunction);density.wasSelection=false;$(density.div).unbind("plotclick");$(density.div).bind("plotclick",density.clickFunction);$(density.div).unbind("plotselected");$(density.div).bind("plotselected",density.selectFuntion)},hoverFunction:function(event,pos,item){var hoverPoint;if((item)&&(item.datapoint[1]!=0)){hoverPoint=item.dataIndex-1}if(density.highlighted!==hoverPoint){density.highlighted=hoverPoint;density.triggerHighlight(hoverPoint)}},clickFunction:function(event,pos,item){if(density.wasSelection){density.wasSelection=false}else{density.parent.clearHandles();var selectPoint;if((item)&&(item.datapoint[1]!=0)){selectPoint=item.dataIndex-1}density.triggerSelection(selectPoint)}},selectFuntion:function(event,ranges){var spanArray=density.parent.getSpanArray(density.singleTickWidth);var startSpan,endSpan;for(var i=0;idensity.maxTickCount)){density.tickCount=density.maxTickCount;density.singleTickWidth=(density.parent.overallMax-density.parent.overallMin)/density.tickCount;if(density.singleTickWidth===0){density.singleTickWidth=1}}var hashAndPlot=density.createUDData(datasets);density.datasetsPlot=hashAndPlot.plots;density.datasetsHash=hashAndPlot.hashs;density.yValMin=0;density.yValMax=0;density.combinedDatasetsPlot=[];for(var i=0;idensity.yValMax){density.yValMax=val}}}density.showPlot()},triggerHighlight:function(hoverPoint){var density=this;var highlightedObjects=[];if(typeof hoverPoint!=="undefined"){$(density.datasetsHash).each(function(){if(typeof this[hoverPoint]!=="undefined"){highlightedObjects.push(this[hoverPoint])}else{highlightedObjects.push([])}})}else{for(var i=0;i0)){emptyHighlight=false;return false}});if(emptyHighlight&&(typeof density.selected==="undefined")){density.highlightedDatasetsPlot=[]}else{density.highlightedDatasetsPlot=density.createUDData(selected_highlighted).plots}density.showPlot()},selectionChanged:function(objects){if(!GeoTemConfig.selectionEvents){return}var density=this;density.selected=objects;density.highlightChanged([])},deselection:function(){},filtering:function(){},inverseFiltering:function(){},triggerRefining:function(){},reset:function(){},show:function(){},hide:function(){}};function FuzzyTimelineGui(fuzzyTimelineWidget,div,options){this.parent=fuzzyTimelineWidget;var fuzzyTimelineGui=this;this.fuzzyTimelineContainer=div;if($(this.fuzzyTimelineContainer).height()===0){$(this.fuzzyTimelineContainer).height($(this.fuzzyTimelineContainer).width()*9/32)}this.sliderTable=document.createElement("table");$(this.sliderTable).addClass("ddbToolbar");$(this.sliderTable).width("100%");$(this.sliderTable).height("49px");div.appendChild(this.sliderTable);this.plotDIVHeight=$(this.fuzzyTimelineContainer).height()-$(this.sliderTable).height();var plotScrollContainer=$("
    ");plotScrollContainer.css("overflow-x","auto");plotScrollContainer.css("overflow-y","hidden");plotScrollContainer.width("100%");plotScrollContainer.height(this.plotDIVHeight);$(div).append(plotScrollContainer);this.plotDiv=document.createElement("div");$(this.plotDiv).width("100%");$(this.plotDiv).height(this.plotDIVHeight);plotScrollContainer.append(this.plotDiv);if(this.parent.options.showRangePiechart){this.rangePiechartDiv=document.createElement("div");$(this.rangePiechartDiv).css("float","right");$(this.plotDiv).width("75%");$(this.rangePiechartDiv).width("25%");$(this.rangePiechartDiv).height(plotDIVHeight);div.appendChild(this.rangePiechartDiv)}}FuzzyTimelineGui.prototype={};function FuzzyTimelineRangeBars(parent){this.rangeBars=this;this.parent=parent;this.options=parent.options;this.datasets;this.selected=undefined;this.datasetsPlot;this.highlightedDatasetsPlot;this.yValMin;this.yValMax;this.displayType;this.plotDiv=this.parent.gui.plotDiv;this.spanWidth;this.tickSpans;this.plot}FuzzyTimelineRangeBars.prototype={initialize:function(datasets){var rangeBar=this;rangeBar.datasets=datasets;rangeBar.selected=[]},createPlot:function(datasets){var rangeBar=this;var plots=[];var objectHashes=[];var tickCount=rangeBar.tickSpans.length-1;$(datasets).each(function(){var chartDataCounter=[];var objectHash=new Object();for(var i=0;i1)&&(tickLabel.indexOf("0")==0)){tickLabel=tickLabel.substring(1)}ticks[i]=[i,tickLabel]}var options={series:{bars:{show:true}},grid:{hoverable:true,clickable:true,backgroundColor:rangeBar.parent.options.backgroundColor,borderWidth:0,minBorderMargin:0,},xaxis:{ticks:ticks,min:0,max:tickCount,},yaxis:{min:rangeBar.yValMin,max:rangeBar.yValMax*1.05},tooltip:true,tooltipOpts:{content:function(label,xval,yval,flotItem){var fromLabel=rangeBar.tickSpans[xval].format(axisFormatString);while((fromLabel.length>1)&&(fromLabel.indexOf("0")==0)){fromLabel=fromLabel.substring(1)}var toLabel=rangeBar.tickSpans[xval+1].clone().subtract("ms",1).format(axisFormatString);while((toLabel.length>1)&&(toLabel.indexOf("0")==0)){toLabel=toLabel.substring(1)}highlightString=fromLabel+" - "+toLabel+" : ";highlightString+=Math.round(yval*100)/100;return highlightString}},selection:{mode:"x"}};if(!rangeBar.parent.options.showYAxis){options.yaxis.show=false}var highlight_select_plot_colors=[];var i=0;$(highlight_select_plot).each(function(){var color;if(iGeoTemConfig.datasets.length){color="rgb("+datasetColors.r0+","+datasetColors.g0+","+datasetColors.b0+")"}else{color="rgb("+datasetColors.r1+","+datasetColors.g1+","+datasetColors.b1+")"}}else{var datasetColors=GeoTemConfig.getColor(i-GeoTemConfig.datasets.length);color="rgb("+datasetColors.r1+","+datasetColors.g1+","+datasetColors.b1+")"}highlight_select_plot_colors.push({color:color,data:this});i++});$(rangeBar.plotDiv).unbind();rangeBar.plot=$.plot($(rangeBar.plotDiv),highlight_select_plot_colors,options);rangeBar.parent.drawHandles();var density=rangeBar.parent.density;if(typeof density!=="undefined"){$(rangeBar.plotDiv).unbind("plothover",density.hoverFunction)}$(rangeBar.plotDiv).unbind("plothover",rangeBar.hoverFunction);$(rangeBar.plotDiv).bind("plothover",$.proxy(rangeBar.hoverFunction,rangeBar));rangeBar.wasSelection=false;$(rangeBar.plotDiv).unbind("plotclick");$(rangeBar.plotDiv).bind("plotclick",$.proxy(rangeBar.clickFunction,rangeBar));$(rangeBar.plotDiv).unbind("plotselected");$(rangeBar.plotDiv).bind("plotselected",$.proxy(rangeBar.selectFunction,rangeBar))},hoverFunction:function(event,pos,item){var rangeBar=this;var hoverBar;var spans;if(item){hoverBar=item.datapoint[0]}if(rangeBar.highlighted!==hoverBar){rangeBar.highlighted=hoverBar;if(typeof hoverBar==="undefined"){rangeBar.triggerHighlight()}else{rangeBar.triggerHighlight(hoverBar)}}},clickFunction:function(event,pos,item){var rangeBar=this;if(rangeBar.wasSelection){rangeBar.wasSelection=false}else{rangeBar.parent.clearHandles();var clickBar;if(item){clickBar=item.datapoint[0]}if(typeof clickBar==="undefined"){rangeBar.triggerSelection()}else{rangeBar.triggerSelection(clickBar)}wasDataClick=true}},selectFunction:function(event,ranges){var rangeBar=this;startBar=Math.floor(ranges.xaxis.from);endBar=Math.floor(ranges.xaxis.to);rangeBar.triggerSelection(startBar,endBar);rangeBar.wasSelection=true;rangeBar.parent.clearHandles();var xaxis=rangeBar.plot.getAxes().xaxis;var x1=rangeBar.plot.pointOffset({x:ranges.xaxis.from,y:0}).left;var x2=rangeBar.plot.pointOffset({x:ranges.xaxis.to,y:0}).left;rangeBar.parent.addHandle(x1,x2)},selectByX:function(x1,x2){rangeBar=this;var xaxis=rangeBar.plot.getAxes().xaxis;var offset=rangeBar.plot.getPlotOffset().left;var from=Math.floor(xaxis.c2p(x1-offset));var to=Math.floor(xaxis.c2p(x2-offset));rangeBar.triggerSelection(from,to)},drawRangeBarChart:function(datasets,spanWidth){var rangeBar=this;rangeBar.spanWidth=spanWidth;rangeBar.tickSpans=rangeBar.parent.getSpanArray(rangeBar.spanWidth);var tickCount=rangeBar.tickSpans.length-1;if(tickCount>rangeBar.options.maxBars){var zoomFactor=tickCount/rangeBar.options.maxBars;rangeBar.parent.zoomPlot(zoomFactor)}else{rangeBar.parent.zoomPlot(1)}rangeBar.yValMin=0;rangeBar.yValMax=0;var plotAndHash=rangeBar.createPlot(datasets);rangeBar.datasetsPlot=plotAndHash.plots;rangeBar.datasetsHash=plotAndHash.hashs;delete rangeBar.highlightedDatasetsPlot;rangeBar.selectionChanged(rangeBar.selected);for(var i=0;irangeBar.yValMax){rangeBar.yValMax=val}}}}rangeBar.showPlot()},highlightChanged:function(objects){if(!GeoTemConfig.highlightEvents){return}var rangeBar=this;var emptyHighlight=true;var selected_highlighted=objects;if(typeof rangeBar.selected!=="undefined"){var selected_highlighted=GeoTemConfig.mergeObjects(objects,rangeBar.selected)}$(selected_highlighted).each(function(){if((this instanceof Array)&&(this.length>0)){emptyHighlight=false;return false}});if(emptyHighlight&&(typeof rangeBar.selected==="undefined")){rangeBar.highlightedDatasetsPlot=[]}else{rangeBar.highlightedDatasetsPlot=rangeBar.createPlot(selected_highlighted).plots}rangeBar.showPlot()},selectionChanged:function(objects){if(!GeoTemConfig.selectionEvents){return}var rangeBar=this;rangeBar.selected=objects;rangeBar.highlightChanged([])},triggerHighlight:function(hoverPoint){var rangeBar=this;var highlightedObjects=[];if(typeof hoverPoint!=="undefined"){$(rangeBar.datasetsHash).each(function(){if(typeof this[hoverPoint]!=="undefined"){highlightedObjects.push(this[hoverPoint])}else{highlightedObjects.push([])}})}else{for(var i=0;i=0;highlightedSpan--){highlightedObjects=GeoTemConfig.mergeObjects(highlightedObjects,spans[highlightedSpan].objects)}lastHighlighted=highlightedSpan}piechart.triggerHighlight(highlightedObjects)}else{piechart.triggerHighlight([])}};$(piechart.div).bind("plothover",hoverFunction);$(piechart.div).bind("plotclick",function(event,pos,item){$(piechart.div).unbind("plothover");if(item){var selectedSpan=Math.ceil(item.seriesIndex/piechart.datasets.length);var selectedObjects=[];for(;selectedSpan>=0;selectedSpan--){selectedObjects=GeoTemConfig.mergeObjects(selectedObjects,spans[selectedSpan].objects)}piechart.triggerSelection(selectedObjects)}else{$(piechart.div).bind("plothover",hoverFunction);piechart.triggerSelection(piechart.selected);piechart.highlightChanged([])}})}},highlightChanged:function(objects){var piechart=this;if(piechart.parent.showRangePiechart){var emptyHighlight=true;$(objects).each(function(){if((this instanceof Array)&&(this.length>0)){emptyHighlight=false;return false}});if(emptyHighlight===false){piechart.drawPieChart(GeoTemConfig.mergeObjects(piechart.selected,objects))}else{if(piechart.selected.length>0){piechart.drawPieChart(piechart.selected)}else{piechart.drawPieChart(piechart.datasets)}}}},selectionChanged:function(selection){var piechart=this;if(piechart.parent.showRangePiechart){if(!GeoTemConfig.selectionEvents){return}piechart.selected=selection;piechart.highlightChanged([])}},triggerHighlight:function(highlightedObjects){this.parent.triggerHighlight(highlightedObjects)},triggerSelection:function(selectedObjects){this.parent.triggerSelection(selectedObjects)},deselection:function(){},filtering:function(){},inverseFiltering:function(){},triggerRefining:function(){},reset:function(){},show:function(){},hide:function(){}};function FuzzyTimelineRangeSlider(parent){var rangeSlider=this;this.parent=parent;this.options=parent.options;this.spans;this.datasets;this.sliderParentTable=this.parent.gui.sliderTable;var headerRow=$("");var controlsRow=$("");$(this.sliderParentTable).append(headerRow).append(controlsRow);headerRow.append("Time start");this.rangeStart=document.createElement("select");controlsRow.append($("").append(this.rangeStart));headerRow.append("Time unit");this.rangeDropdown=document.createElement("select");controlsRow.append($("").append(this.rangeDropdown));headerRow.append("Scaling");this.scalingDropdown=document.createElement("select");controlsRow.append($("").append(this.scalingDropdown));$(this.scalingDropdown).append("");$(this.scalingDropdown).append("");$(this.scalingDropdown).append("");$(this.scalingDropdown).change(function(eventObject){var scaleMode=$(rangeSlider.scalingDropdown).find("option:selected").text();rangeSlider.parent.changeScaleMode(scaleMode)});headerRow.append("Animation");this.startAnimation=document.createElement("div");$(this.startAnimation).addClass("smallButton playDisabled");this.pauseAnimation=document.createElement("div");$(this.pauseAnimation).addClass("smallButton pauseDisabled");controlsRow.append($("").append(this.startAnimation).append(this.pauseAnimation));headerRow.append("Dated Objects");this.numberDatedObjects=0;this.numberDatedObjectsDIV=document.createElement("div");$(this.numberDatedObjectsDIV).addClass("ddbElementsCount");controlsRow.append($("").append(this.numberDatedObjectsDIV))}FuzzyTimelineRangeSlider.prototype={initialize:function(datasets){var rangeSlider=this;rangeSlider.datasets=datasets;rangeSlider.spans=[];rangeSlider.spanHash=[];var smallestSpan;rangeSlider.numberDatedObjects=0;$(this.datasets).each(function(){$(this.objects).each(function(){var dataObject=this;var span;if(dataObject.isTemporal){rangeSlider.numberDatedObjects++;smallestSpan=moment.duration(1,"milliseconds")}else{if(dataObject.isFuzzyTemporal){rangeSlider.numberDatedObjects++;span=moment.duration(dataObject.TimeSpanEnd-dataObject.TimeSpanBegin);if((typeof smallestSpan==="undefined")||(span(smallestSpan.asMilliseconds()*0.25))&&(fixedSpans[i].asMilliseconds()continuous");var index=0;$(rangeSlider.spans).each(function(){var duration=this;if(duration1){humanizedSpan+="s"}}else{if(duration1){humanizedSpan+="s"}}else{var years=duration.years();humanizedSpan=years+" year";if(years>1){humanizedSpan+="s"}}}}}}}$(rangeSlider.rangeDropdown).append("");index++});$(rangeSlider.rangeDropdown).change(function(eventObject){var handlePosition=$(rangeSlider.rangeDropdown).find("option:selected").first().attr("index");if(typeof handlePosition==="undefined"){rangeSlider.parent.switchViewMode("density")}else{rangeSlider.parent.switchViewMode("barchart")}rangeSlider.parent.slidePositionChanged(rangeSlider.spans[handlePosition])});$(rangeSlider.rangeStart).empty();var starts=[];var overallMin=rangeSlider.parent.overallMin;var last=moment(overallMin).year();starts.push(last);for(i=1;;i++){var date=moment(overallMin).year();date=date/Math.pow(10,i);if(Math.abs(date)<1){break}date=Math.floor(date);date=date*Math.pow(10,i);if(date!=last){starts.push(date)}last=date}$(starts).each(function(){$(rangeSlider.rangeStart).append("")});$(rangeSlider.rangeStart).change(function(eventObject){var handlePosition=rangeSlider.rangeStart.selectedIndex;var start=starts[handlePosition];rangeSlider.parent.overallMin=moment().year(start);$(rangeSlider.rangeDropdown).change()});$(rangeSlider.rangeDropdown).change();$(rangeSlider.startAnimation).click(function(){if($(rangeSlider.startAnimation).hasClass("playEnabled")){$(rangeSlider.startAnimation).removeClass("playEnabled").addClass("playDisabled");$(rangeSlider.pauseAnimation).removeClass("pauseDisabled").addClass("pauseEnabled");rangeSlider.parent.startAnimation()}});$(rangeSlider.pauseAnimation).prop("disabled",true);$(rangeSlider.pauseAnimation).click(function(){if($(rangeSlider.pauseAnimation).hasClass("pauseEnabled")){$(rangeSlider.startAnimation).removeClass("playDisabled").addClass("playEnabled");$(rangeSlider.pauseAnimation).removeClass("pauseEnabled").addClass("pauseDisabled");rangeSlider.parent.pauseAnimation()}})},triggerHighlight:function(columnElement){},triggerSelection:function(columnElement){},deselection:function(){},filtering:function(){},inverseFiltering:function(){},triggerRefining:function(){},reset:function(){},show:function(){},hide:function(){}};FuzzyTimelineWidget=function(core,div,options){this.datasets;this.selected=undefined;this.overallMin;this.overallMax;this.core=core;this.core.setWidget(this);this.options=(new FuzzyTimelineConfig(options)).options;this.gui=new FuzzyTimelineGui(this,div,this.options);this.viewMode;this.density;this.rangeSlider;this.rangeBars;this.rangePiechart;this.spanHash=[];this.handles=[];this.zoomFactor=1;this.scaleMode="normal"};FuzzyTimelineWidget.prototype={initWidget:function(data){var fuzzyTimeline=this;delete fuzzyTimeline.overallMin;delete fuzzyTimeline.overallMax;$(fuzzyTimeline.gui.plotDiv).empty();$(fuzzyTimeline.gui.sliderTable).empty();delete fuzzyTimeline.rangeSlider;$(fuzzyTimeline.gui.rangePiechartDiv).empty();delete fuzzyTimeline.rangePiechart;fuzzyTimeline.switchViewMode("density");if((data instanceof Array)&&(data.length>0)){fuzzyTimeline.datasets=data;$(fuzzyTimeline.datasets).each(function(){$(this.objects).each(function(){var datemin,datemax;if(this.isTemporal){datemin=moment(this.dates[0].date);datemax=datemin}else{if(this.isFuzzyTemporal){datemin=this.TimeSpanBegin;datemax=this.TimeSpanEnd}}if(typeof fuzzyTimeline.overallMin==="undefined"){fuzzyTimeline.overallMin=datemin}if(typeof fuzzyTimeline.overallMax==="undefined"){fuzzyTimeline.overallMax=datemax}if(fuzzyTimeline.overallMin>datemin){fuzzyTimeline.overallMin=datemin}if(fuzzyTimeline.overallMax0){overallCnt+=val}}overallCnt=overallCnt/100;if(overallCnt!=0){for(var index in data){data[index]=(data[index])/overallCnt}}return data}}}},changeScaleMode:function(scaleMode){var fuzzyTimeline=this;fuzzyTimeline.scaleMode=scaleMode;fuzzyTimeline.drawFuzzyTimeline()},slidePositionChanged:function(spanWidth){var fuzzyTimeline=this;fuzzyTimeline.spanWidth=spanWidth;fuzzyTimeline.drawFuzzyTimeline()},drawFuzzyTimeline:function(){var fuzzyTimeline=this;var datasets=fuzzyTimeline.datasets;if(fuzzyTimeline.viewMode==="density"){fuzzyTimeline.density.drawDensityPlot(datasets);fuzzyTimeline.density.selectionChanged(fuzzyTimeline.selected)}else{if(fuzzyTimeline.viewMode==="barchart"){fuzzyTimeline.rangeBars.drawRangeBarChart(datasets,fuzzyTimeline.spanWidth);fuzzyTimeline.rangeBars.selectionChanged(fuzzyTimeline.selected)}}},highlightChanged:function(objects){var fuzzyTimeline=this;if(!GeoTemConfig.highlightEvents){return}if((typeof objects==="undefined")||(objects.length==0)){return}if(fuzzyTimeline.viewMode==="density"){this.density.highlightChanged(objects)}else{if(fuzzyTimeline.viewMode==="barchart"){this.rangeBars.highlightChanged(objects)}}fuzzyTimeline.rangePiechart.highlightChanged(objects)},selectionChanged:function(selection){var fuzzyTimeline=this;if(!GeoTemConfig.selectionEvents){return}if((typeof selection.objects!=="undefined")&&(selection.objects.length==GeoTemConfig.datasets.length)){var objectCount=0;for(var i=0,il=selection.objects.length;i0){fuzzyTimeline.selected=selection.objects}else{delete fuzzyTimeline.selected}}else{delete fuzzyTimeline.selected}if(fuzzyTimeline.viewMode==="density"){this.density.selectionChanged(fuzzyTimeline.selected)}else{if(fuzzyTimeline.viewMode==="barchart"){this.rangeBars.selectionChanged(fuzzyTimeline.selected)}}if(selection.valid()){fuzzyTimeline.rangePiechart.selectionChanged(fuzzyTimeline.selected)}else{fuzzyTimeline.rangePiechart.selectionChanged([])}if(selection.widget!=fuzzyTimeline){fuzzyTimeline.clearHandles()}},buildSpanArray:function(spanWidth){var spanArray=[];var tickStart=moment(this.overallMin);do{spanArray.push(moment(tickStart));tickStart.add(spanWidth)}while(tickStart<=this.overallMax);spanArray.push(moment(tickStart));this.spanHash.push({spanWidth:spanWidth,overallMin:moment(this.overallMin),spanArray:spanArray});return(spanArray)},getSpanArray:function(spanWidth){for(var i=0;i=searchDateStart)){objects.push(this)}}else{if((datemin=searchDateStart)){objects.push(this)}}});datasets.push(objects)});return(datasets)},triggerHighlight:function(highlightedObjects){var fuzzyTimeline=this;if(fuzzyTimeline.viewMode==="density"){fuzzyTimeline.density.highlightChanged(highlightedObjects)}else{if(fuzzyTimeline.viewMode==="barchart"){fuzzyTimeline.rangeBars.highlightChanged(highlightedObjects)}}fuzzyTimeline.core.triggerHighlight(highlightedObjects)},triggerSelection:function(selectedObjects){var fuzzyTimeline=this;fuzzyTimeline.selected=selectedObjects;if(fuzzyTimeline.viewMode==="density"){fuzzyTimeline.density.selectionChanged(selectedObjects)}else{if(fuzzyTimeline.viewMode==="barchart"){fuzzyTimeline.rangeBars.selectionChanged(selectedObjects)}}selection=new Selection(selectedObjects);fuzzyTimeline.core.triggerSelection(selection)},addHandle:function(x1,x2){var fuzzyTimeline=this;if(x2=plotOffset)){x=x-leftHandle.offsetWidth;handle.x1=x+$(leftHandle).width();moveLeftHandle();resizeHandleBox();moveDragButton()}});$(fuzzyTimeline.gui.plotDiv).mouseup(function(eventObj){fuzzyTimeline.selectByX(handle.x1,handle.x2);$(fuzzyTimeline.gui.plotDiv).unbind("mouseup");$(fuzzyTimeline.gui.plotDiv).unbind("mousemove")})});$(rightHandle).mousedown(function(){$(fuzzyTimeline.gui.plotDiv).mousemove(function(eventObj){var x=eventObj.clientX;x+=$(fuzzyTimeline.gui.plotDiv).parent().scrollLeft();x=x-rightHandle.offsetWidth;if((x>handle.x1)&&(x<=plotOffset+plotWidth)){handle.x2=x;moveRightHandle();resizeHandleBox();moveDragButton()}});$(fuzzyTimeline.gui.plotDiv).mouseup(function(eventObj){fuzzyTimeline.selectByX(handle.x1,handle.x2);$(fuzzyTimeline.gui.plotDiv).unbind("mouseup");$(fuzzyTimeline.gui.plotDiv).unbind("mousemove")})});$(dragButton).mousedown(function(){$(fuzzyTimeline.gui.plotDiv).mousemove(function(eventObj){var x=eventObj.clientX;var xdiff=x-$(dragButton).offset().left-$(dragButton).width()/2;handle.x1=handle.x1+xdiff;handle.x2=handle.x2+xdiff;moveLeftHandle();moveRightHandle();resizeHandleBox();moveDragButton()});$(fuzzyTimeline.gui.plotDiv).mouseup(function(eventObj){if(handle.x1plotOffset+plotWidth){handle.x2=plotOffset+plotWidth}moveLeftHandle();moveRightHandle();resizeHandleBox();moveDragButton();fuzzyTimeline.selectByX(handle.x1,handle.x2);$(fuzzyTimeline.gui.plotDiv).unbind("mouseup");$(fuzzyTimeline.gui.plotDiv).unbind("mousemove")})})})},clearHandles:function(){var fuzzyTimeline=this;$(fuzzyTimeline.gui.plotDiv).find(".plotHandle").remove();$(fuzzyTimeline.gui.plotDiv).find(".dragTimeRangeAlt").remove();$(fuzzyTimeline.gui.plotDiv).find(".plotHandleBox").remove();fuzzyTimeline.handles=[];$(fuzzyTimeline.rangeSlider.startAnimation).removeClass("playEnabled").addClass("playDisabled");$(fuzzyTimeline.rangeSlider.pauseAnimation).removeClass("pauseEnabled").addClass("pauseDisabled");fuzzyTimeline.pauseAnimation()},startAnimation:function(){var fuzzyTimeline=this;fuzzyTimeline.loopFunction=function(steps){$(fuzzyTimeline.handles).each(function(){if(typeof steps==="undefined"){steps=1}var handle=this;var x1=handle.x1;var x2=handle.x2;if(typeof handle.width==="undefined"){handle.width=x2-x1}var plotWidth=(fuzzyTimeline.density.plot?fuzzyTimeline.density.plot:fuzzyTimeline.rangeBars.plot).width();var plotOffset=(fuzzyTimeline.density.plot?fuzzyTimeline.density.plot:fuzzyTimeline.rangeBars.plot).getPlotOffset().left;var plotMax=plotWidth+plotOffset;if(!((x1===plotOffset)&&(x2-x1<=handle.width))){x1+=steps}if(x2<=plotMax){x2+=steps;if(x2>plotMax){x2=plotMax}if(x2-x1>handle.width){x1=x2-handle.width}}if(x1>=plotMax){x1=plotOffset;x2=plotOffset}handle.x1=x1;handle.x2=x2;fuzzyTimeline.drawHandles();fuzzyTimeline.selectByX(handle.x1,handle.x2)})};fuzzyTimeline.loopId=setInterval(function(){fuzzyTimeline.loopFunction(10)},100)},pauseAnimation:function(){var fuzzyTimeline=this;clearInterval(fuzzyTimeline.loopId);$(fuzzyTimeline.handles).each(function(){var handle=this;delete handle.width})},zoomPlot:function(zoomFactor){var fuzzyTimeline=this;var oldZoomFactor=fuzzyTimeline.zoomFactor;fuzzyTimeline.zoomFactor=zoomFactor;if(zoomFactor>1){$(fuzzyTimeline.gui.plotDiv).width(zoomFactor*100+"%")}else{$(fuzzyTimeline.gui.plotDiv).width("100%")}$(fuzzyTimeline.gui.plotDiv).height(fuzzyTimeline.gui.plotDIVHeight-20);$(fuzzyTimeline.handles).each(function(){var handle=this;handle.x1=handle.x1*(zoomFactor/oldZoomFactor);handle.x2=handle.x2*(zoomFactor/oldZoomFactor)})}};function Overlayloader(parent){this.overlayLoader=this;this.parent=parent;this.options=parent.options;this.attachedMapWidgets=parent.attachedMapWidgets;this.overlays=[];this.initialize()}Overlayloader.prototype={show:function(){this.overlayloaderDiv.style.display="block"},hide:function(){this.overlayloaderDiv.style.display="none"},initialize:function(){this.addKMLLoader();this.addKMZLoader();this.addArcGISWMSLoader();this.addXYZLoader();this.addRomanEmpireLoader();this.addMapsForFreeWaterLayer();this.addConfigLoader();$(this.parent.gui.loaderTypeSelect).change()},distributeKML:function(kmlURL){var newOverlay=new Object();newOverlay.name=kmlURL;newOverlay.layers=[];$(this.attachedMapWidgets).each(function(){var newLayer=new OpenLayers.Layer.Vector("KML",{projection:this.openlayersMap.displayProjection,strategies:[new OpenLayers.Strategy.Fixed()],protocol:new OpenLayers.Protocol.HTTP({url:kmlURL,format:new OpenLayers.Format.KML({extractStyles:true,extractAttributes:true})})});newOverlay.layers.push({map:this.openlayersMap,layer:newLayer});this.openlayersMap.addLayer(newLayer)});this.overlays.push(newOverlay);this.parent.gui.refreshOverlayList()},distributeKMZ:function(kmzURL){var newOverlay=new Object();newOverlay.name=kmzURL;newOverlay.layers=[];$(this.attachedMapWidgets).each(function(){var newLayer=new OpenLayers.Layer.Vector("KML",{projection:this.openlayersMap.displayProjection,strategies:[new OpenLayers.Strategy.Fixed()],format:OpenLayers.Format.KML,extractAttributes:true});newOverlay.layers.push({map:this.openlayersMap,layer:newLayer});var map=this.openlayersMap;GeoTemConfig.getKmz(kmzURL,function(kmlDoms){$(kmlDoms).each(function(){var kml=new OpenLayers.Format.KML().read(this);newLayer.addFeatures(kml);map.addLayer(newLayer)})})});this.overlays.push(newOverlay);this.parent.gui.refreshOverlayList()},distributeArcGISWMS:function(wmsURL,wmsLayer){var newOverlay=new Object();newOverlay.name=wmsURL+" - "+wmsLayer;newOverlay.layers=[];var newLayer=new OpenLayers.Layer.WMS("ArcGIS WMS label",wmsURL,{layers:wmsLayer,format:"image/png",transparent:"true"},{displayOutsideMaxExtent:true,isBaseLayer:false,projection:"EPSG:3857"});newLayer.setIsBaseLayer(false);$(this.attachedMapWidgets).each(function(){this.openlayersMap.addLayer(newLayer);newOverlay.layers.push({map:this.openlayersMap,layer:newLayer})});this.overlays.push(newOverlay);this.parent.gui.refreshOverlayList()},distributeXYZ:function(xyzURL,zoomOffset){var newOverlay=new Object();newOverlay.name=xyzURL;newOverlay.layers=[];var newLayer=new OpenLayers.Layer.XYZ("XYZ Layer",[xyzURL],{sphericalMercator:true,transitionEffect:"resize",buffer:1,numZoomLevels:12,transparent:true,isBaseLayer:false,zoomOffset:zoomOffset?zoomOffset:0});newLayer.setIsBaseLayer(false);$(this.attachedMapWidgets).each(function(){this.openlayersMap.addLayer(newLayer);newOverlay.layers.push({map:this.openlayersMap,layer:newLayer})});this.overlays.push(newOverlay);this.parent.gui.refreshOverlayList()},addKMLLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.KMLLoaderTab=document.createElement("div");$(this.KMLLoaderTab).attr("id","KMLLoader");this.kmlURL=document.createElement("input");$(this.kmlURL).attr("type","text");$(this.KMLLoaderTab).append(this.kmlURL);this.loadKMLButton=document.createElement("button");$(this.loadKMLButton).text("load KML");$(this.KMLLoaderTab).append(this.loadKMLButton);$(this.loadKMLButton).click($.proxy(function(){var kmlURL=$(this.kmlURL).val();if(kmlURL.length==0){return}if(typeof GeoTemConfig.proxy!="undefined"){kmlURL=GeoTemConfig.proxy+kmlURL}this.distributeKML(kmlURL)},this));$(this.parent.gui.loaders).append(this.KMLLoaderTab)},addKMZLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.KMZLoaderTab=document.createElement("div");$(this.KMZLoaderTab).attr("id","KMZLoader");this.kmzURL=document.createElement("input");$(this.kmzURL).attr("type","text");$(this.KMZLoaderTab).append(this.kmzURL);this.loadKMZButton=document.createElement("button");$(this.loadKMZButton).text("load KMZ");$(this.KMZLoaderTab).append(this.loadKMZButton);$(this.loadKMZButton).click($.proxy(function(){var kmzURL=$(this.kmzURL).val();if(kmzURL.length==0){return}if(typeof GeoTemConfig.proxy!="undefined"){kmzURL=GeoTemConfig.proxy+kmzURL}this.distributeKMZ(kmzURL)},this));$(this.parent.gui.loaders).append(this.KMZLoaderTab)},addArcGISWMSLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.ArcGISWMSLoaderTab=document.createElement("div");$(this.ArcGISWMSLoaderTab).attr("id","ArcGISWMSLoader");$(this.ArcGISWMSLoaderTab).append("URL: ");this.wmsURL=document.createElement("input");$(this.wmsURL).attr("type","text");$(this.ArcGISWMSLoaderTab).append(this.wmsURL);$(this.ArcGISWMSLoaderTab).append("Layer: ");this.wmsLayer=document.createElement("input");$(this.wmsLayer).attr("type","text");$(this.ArcGISWMSLoaderTab).append(this.wmsLayer);this.loadArcGISWMSButton=document.createElement("button");$(this.loadArcGISWMSButton).text("load Layer");$(this.ArcGISWMSLoaderTab).append(this.loadArcGISWMSButton);$(this.loadArcGISWMSButton).click($.proxy(function(){var wmsURL=$(this.wmsURL).val();var wmsLayer=$(this.wmsLayer).val();if(wmsURL.length==0){return}this.distributeArcGISWMS(wmsURL,wmsLayer)},this));$(this.parent.gui.loaders).append(this.ArcGISWMSLoaderTab)},addXYZLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.XYZLoaderTab=document.createElement("div");$(this.XYZLoaderTab).attr("id","XYZLoader");$(this.XYZLoaderTab).append("URL (with x,y,z variables): ");this.xyzURL=document.createElement("input");$(this.xyzURL).attr("type","text");$(this.XYZLoaderTab).append(this.xyzURL);this.loadXYZButton=document.createElement("button");$(this.loadXYZButton).text("load Layer");$(this.XYZLoaderTab).append(this.loadXYZButton);$(this.loadXYZButton).click($.proxy(function(){var xyzURL=$(this.xyzURL).val();if(xyzURL.length==0){return}this.distributeXYZ(xyzURL)},this));$(this.parent.gui.loaders).append(this.XYZLoaderTab)},addRomanEmpireLoader:function(){$(this.parent.gui.loaderTypeSelect).append("");this.RomanEmpireLoaderTab=document.createElement("div");$(this.RomanEmpireLoaderTab).attr("id","RomanEmpireLoader");this.loadRomanEmpireButton=document.createElement("button");$(this.loadRomanEmpireButton).text("load Layer");$(this.RomanEmpireLoaderTab).append(this.loadRomanEmpireButton);$(this.loadRomanEmpireButton).click($.proxy(function(){this.distributeXYZ("http://pelagios.org/tilesets/imperium/${z}/${x}/${y}.png",1)},this));$(this.parent.gui.loaders).append(this.RomanEmpireLoaderTab)},addMapsForFreeWaterLayer:function(){$(this.parent.gui.loaderTypeSelect).append("");this.MapsForFreeWaterTab=document.createElement("div");$(this.MapsForFreeWaterTab).attr("id","MapsForFreeWaterLayerLoader");this.loadMapsForFreeWaterLayerButton=document.createElement("button");$(this.loadMapsForFreeWaterLayerButton).text("load Layer");$(this.MapsForFreeWaterTab).append(this.loadMapsForFreeWaterLayerButton);$(this.loadMapsForFreeWaterLayerButton).click($.proxy(function(){this.distributeXYZ("http://maps-for-free.com/layer/water/z${z}/row${y}/${z}_${x}-${y}.gif",1)},this));$(this.parent.gui.loaders).append(this.MapsForFreeWaterTab)},addConfigLoader:function(){if((this.parent.options.wms_overlays instanceof Array)&&(this.parent.options.wms_overlays.length>0)){var overlayloader=this;$(this.parent.gui.loaderTypeSelect).append("");this.ConfigLoaderTab=document.createElement("div");$(this.ConfigLoaderTab).attr("id","ConfigLoader");this.ConfigMapSelect=document.createElement("select");$(this.parent.options.wms_overlays).each(function(){var name=this.name,server=this.server,layer=this.layer;$(overlayloader.ConfigMapSelect).append("")});$(this.ConfigLoaderTab).append(this.ConfigMapSelect);this.loadConfigMapButton=document.createElement("button");$(this.loadConfigMapButton).text("load Layer");$(this.ConfigLoaderTab).append(this.loadConfigMapButton);$(this.loadConfigMapButton).click($.proxy(function(){var server=$(this.ConfigMapSelect).find(":selected").attr("server");var layer=$(this.ConfigMapSelect).find(":selected").attr("layer");this.distributeArcGISWMS(server,layer)},this));$(this.parent.gui.loaders).append(this.ConfigLoaderTab)}}};function OverlayloaderConfig(options){this.options={wms_overlays:[],};if(typeof options!="undefined"){$.extend(this.options,options)}}function OverlayloaderGui(overlayloader,div,options){this.parent=overlayloader;var overlayloaderGui=this;this.overlayloaderContainer=div;this.overlayloaderContainer.style.position="relative";this.loaderTypeSelect=document.createElement("select");div.appendChild(this.loaderTypeSelect);this.loaders=document.createElement("div");div.appendChild(this.loaders);this.overlayList=document.createElement("div");div.appendChild(this.overlayList);$(this.loaderTypeSelect).change(function(){var activeLoader=$(this).val();$(overlayloaderGui.loaders).find("div").each(function(){if($(this).attr("id")==activeLoader){$(this).show()}else{$(this).hide()}})});this.refreshOverlayList=function(){var overlayloaderGui=this;$(overlayloaderGui.overlayList).empty();$(this.parent.overlayLoader.overlays).each(function(){var overlay=this;$(overlayloaderGui.overlayList).append(overlay.name);var link=document.createElement("a");$(link).text("(x)");link.href="";$(link).click($.proxy(function(){$(overlay.layers).each(function(){this.map.removeLayer(this.layer)});var overlays=overlayloaderGui.parent.overlayLoader.overlays;overlays=$.grep(overlays,function(value){return overlay!=value});overlayloaderGui.parent.overlayLoader.overlays=overlays;overlayloaderGui.refreshOverlayList();return(false)},{overlay:overlay,overlayloaderGui:overlayloaderGui}));$(overlayloaderGui.overlayList).append(link)})}}OverlayloaderWidget=function(core,div,options){this.core=core;this.core.setWidget(this);this.options=(new OverlayloaderConfig(options)).options;this.gui=new OverlayloaderGui(this,div,this.options);this.attachedMapWidgets=new Array();this.overlayLoader=new Overlayloader(this)};OverlayloaderWidget.prototype={initWidget:function(){var overlayloaderWidget=this},highlightChanged:function(objects){if(!GeoTemConfig.highlightEvents){return}},selectionChanged:function(selection){if(!GeoTemConfig.selectionEvents){return}},triggerHighlight:function(item){},tableSelection:function(){},deselection:function(){},filtering:function(){},inverseFiltering:function(){},triggerRefining:function(){},reset:function(){},attachMapWidget:function(widget){this.attachedMapWidgets.push(widget)}};function PieChart(parent,watchedDataset,watchedColumn,selectionFunction){if((typeof selectionFunction!=="undefined")&&(typeof selectionFunction.type!=="undefined")&&(typeof selectionFunction.categories!=="undefined")){this.type=selectionFunction.type;this.categories=selectionFunction.categories}this.pieChart=this;this.pieChartDiv;this.preHighlightObjects;this.highlightedLabel;this.informationDIV;this.pieChartLabel;this.parent=parent;this.options=parent.options;this.watchedDatasetObject;this.watchedDataset=parseInt(watchedDataset);this.watchColumn=watchedColumn;if(typeof selectionFunction!=="undefined"){this.selectionFunction=selectionFunction}else{this.selectionFunction=function(columnData){return columnData}}}PieChart.prototype={remove:function(){for(var i=0;i");$(this.informationDIV).append(this.pieChartLabel);this.refreshLabel();var removeButton=document.createElement("button");$(this.informationDIV).append(removeButton);$(removeButton).text("remove");$(removeButton).click(function(){pieChart.remove()});if((typeof pieChart.type!=="undefined")&&(typeof pieChart.categories!=="undefined")){var editButton=document.createElement("button");$(this.informationDIV).append(editButton);$(editButton).text("edit");$(editButton).click(function(){var chooser=new PieChartCategoryChooser(pieChart.parent,pieChart.parent.options,pieChart.watchedDataset,pieChart.watchColumn,pieChart.type,pieChart.categories)});if(pieChart.options.allowLocalStorage){var saveButton=document.createElement("button");$(this.informationDIV).append(saveButton);$(saveButton).text("save");$(saveButton).click(function(){$("
    pie chart name :
    ").dialog({width:"auto",buttons:[{text:"save",click:function(){var saveName=$("#saveName").val();var saveObject=new Object();saveObject.type=pieChart.type;saveObject.categories=pieChart.categories;saveObject.columnName=pieChart.watchColumn;$.remember({name:pieChart.options.localStoragePrefix+saveName,value:saveObject,json:true});$(this).dialog("close")}}]});$("#saveName").val(pieChart.watchColumn);$(".ui-dialog").css("z-index",10005)})}}$(this.parent.gui.pieChartsDiv).append(this.informationDIV);this.pieChartDiv=document.createElement("div");$(this.parent.gui.pieChartsDiv).append(this.pieChartDiv);$(this.pieChartDiv).unbind();$(this.pieChartDiv).bind("plothover",function(event,pos,item){var highlightedLabel;if(item){highlightedLabel=item.series.label}if(highlightedLabel!==pieChart.highlightedLabel){pieChart.highlightedLabel=highlightedLabel;pieChart.triggerHighlight(highlightedLabel)}});$(this.pieChartDiv).bind("plotclick",function(event,pos,item){if(item){pieChart.triggerSelection(item.series.label)}else{pieChart.triggerSelection()}})}},checkForDataSet:function(){var datasets=this.parent.datasets;if((typeof datasets!=="undefined")&&(typeof this.watchedDatasetObject!=="undefined")){for(var i=0;i0){$(this.pieChartDiv).empty();var parentHeight=$(this.parent.gui.pieChartsDiv).outerHeight(true)-$(this.parent.gui.columnSelectorDiv).outerHeight(true);var pieChartCount=0;$(this.parent.pieCharts).each(function(){if(this instanceof PieChart){pieChartCount++}});var height=(parentHeight/pieChartCount)-$(this.informationDIV).outerHeight(true);if(pieChart.options.restrictPieChartSize!==false){height=Math.min(height,$(window).height()*pieChart.options.restrictPieChartSize)}$(this.pieChartDiv).height(height);$.plot($(this.pieChartDiv),chartData,{series:{pie:{show:true}},legend:{show:true,position:"se"},grid:{hoverable:true,clickable:true},tooltip:true,tooltipOpts:{content:"%s %p.1%"}})}}},triggerHighlight:function(columnElement){var highlightedObjects=[];for(var i=0;i=0){highlightedObjects[this.watchedDataset]=this.parent.getElementsByValue(columnElement,this.watchedDataset,this.watchColumn,this.selectionFunction)}else{highlightedObjects[this.watchedDataset]=[]}this.parent.core.triggerHighlight(highlightedObjects);var pieChart=this;$(this.parent.pieCharts).each(function(){if(this instanceof PieChart&&(this!==pieChart)){if(this.watchedDataset===pieChart.watchedDataset){this.redrawPieChart(highlightedObjects)}}})},triggerSelection:function(columnElement){var selectedObjects=[];for(var i=0;i
    ");this.dialog.html("").dialog({modal:true}).dialog("open");$(".ui-front").css("z-index","10001");var allNumeric=this.loadValues(datasetIndex,columnName);if(typeof allNumeric==="undefined"){return}if(allNumeric===true){this.createNumeralBasedChooser(this.chartData,categories)}else{this.createTextBasedChooser(this.chartData,categories)}}PieChartCategoryChooser.prototype={loadValues:function(datasetIndex,columnName){var pieChartCategoryChooser=this;var allNumeric=true;pieChartCategoryChooser.chartData=[];var chartData=pieChartCategoryChooser.chartData;$(GeoTemConfig.datasets[datasetIndex].objects).each(function(){var columnData=pieChartCategoryChooser.parent.getElementData(this,columnName);if(isNaN(parseFloat(columnData))){allNumeric=false}if($.inArray(columnData,chartData)==-1){chartData.push(columnData)}});if(chartData.length===0){return}else{return allNumeric}},createTextBasedChooser:function(chartData,categories){var pieChartCategoryChooser=this;var addCategory=function(name,elements){var newCategoryContainer=document.createElement("fieldset");var newCategoryLegend=document.createElement("legend");var newCategoryName=document.createElement("input");$(newCategoryName).width("80%");newCategoryName.type="text";newCategoryName.value=name;var newCategoryRemove=document.createElement("button");$(newCategoryRemove).text("X");$(newCategoryRemove).click(function(){$(newCategoryContainer).find("li").each(function(){$(this).prependTo(unselected)});$(newCategoryContainer).remove()});$(newCategoryLegend).append(newCategoryName);$(newCategoryLegend).append(newCategoryRemove);$(newCategoryContainer).append(newCategoryLegend);$(newCategoryContainer).width("200px");$(newCategoryContainer).css("float","left");var newCategory=document.createElement("ul");$(newCategory).addClass("connectedSortable");$(newCategory).css("background","#eee");newCategoryContainer.appendChild(newCategory);$(newCategory).append("
    ");cell.appendChild(newCategoryContainer);if(typeof elements!=="undefined"){$(elements).each(function(){var value=this;$(newCategory).append("
  • "+value+"
  • ");$(unselected).find("li").filter(function(){return($(this).text()===""+value)}).remove()})}$(".connectedSortable").sortable({connectWith:".connectedSortable"}).disableSelection()};var table=document.createElement("table");var row=document.createElement("tr");table.appendChild(row);var cell=document.createElement("td");row.appendChild(cell);cell=document.createElement("td");row.appendChild(cell);var addCategoryButton=document.createElement("button");$(addCategoryButton).text("add new category");cell.appendChild(addCategoryButton);var applyCategoryButton=document.createElement("button");$(applyCategoryButton).text("apply");cell.appendChild(applyCategoryButton);row=document.createElement("tr");table.appendChild(row);cell=document.createElement("td");row.appendChild(cell);var unselected=document.createElement("ul");$(unselected).addClass("connectedSortable");cell.appendChild(unselected);cell=document.createElement("td");$(cell).attr("valign","top");$(cell).width("100%");row.appendChild(cell);this.dialog.append(table);$(".connectedSortable").sortable({connectWith:".connectedSortable"}).disableSelection();$(chartData).each(function(){$(unselected).append("
  • "+this+"
  • ")});if(typeof categories!=="undefined"){$(categories).each(function(){var category=this;addCategory(category.label,category.values)})}$(addCategoryButton).click(function(){addCategory()});$(applyCategoryButton).click(function(){var categories=[];$(cell).children().each(function(){var label=$(this).find("legend > input").val();var values=[];$(this).find("li").each(function(){values.push($(this).text())});categories.push({label:label,values:values})});var values=[];$(unselected).find("li").each(function(){values.push($(this).text())});categories.push({label:"other",values:values});pieChartCategoryChooser.parent.addCategorizedPieChart(pieChartCategoryChooser.datasetIndex,pieChartCategoryChooser.columnName,"text",categories);$(pieChartCategoryChooser.dialog).dialog("close")});var wWidth=$(window).width();var dWidth=wWidth*0.9;var wHeight=$(window).height();var dHeight=wHeight*0.9;$(this.dialog).dialog("option","width",dWidth);$(this.dialog).dialog("option","height",dHeight)},createNumeralBasedChooser:function(chartData,existingCategories){var numericChartData=[];for(var i=0;i"+this+"")});var addCategory=function(boundary){if((handles.length>0)&&(handles[handles.length-1]===max)){return false}if(handles.length>0){$(slider).slider("destroy")}if(typeof boundary==="undefined"){boundary=max}handles.push(boundary);$(slider).slider({min:min,max:max,step:minStep,values:handles});var placeValues=function(){$(unselected).find("li").remove();$(cell).children().find("li").remove();var j=0,i=0;for(;ihandles[j]){j++}if(j==handles.length){break}$(categories[j]).append("
  • "+chartData[i]+"
  • ")}for(;i"+chartData[i]+"")}};$(slider).on("slide",function(event,ui){var last=min;for(var i=0;i<="+boundary+"");$(newCategoryContainer).width("188px");$(newCategoryContainer).css("float","left");var newCategory=document.createElement("ul");$(newCategory).addClass("connectedSortable");$(newCategory).css("background","#eee");newCategoryContainer.appendChild(newCategory);cell.appendChild(newCategoryContainer);categories.push(newCategory);placeValues()};$(addCategoryButton).click(function(){addCategory()});if(typeof existingCategories!=="undefined"){$(existingCategories).each(function(){var boundary=this;addCategory(boundary)})}$(applyCategoryButton).click(function(){var categorieBoundaries=handles;pieChartCategoryChooser.parent.addCategorizedPieChart(pieChartCategoryChooser.datasetIndex,pieChartCategoryChooser.columnName,"numeral",categorieBoundaries);$(pieChartCategoryChooser.dialog).dialog("close")});var wWidth=$(window).width();var dWidth=wWidth*0.9;var wHeight=$(window).height();var dHeight=wHeight*0.9;$(this.dialog).dialog("option","width",dWidth);$(this.dialog).dialog("option","height",dHeight)}};function PieChartConfig(options){this.options={restrictPieChartSize:0.25,localStoragePrefix:"GeoBrowser_PieChart_",allowLocalStorage:true,};if(typeof options!="undefined"){$.extend(this.options,options)}}function PieChartGui(pieChart,div,options){this.parent=pieChart;this.options=options;var pieChartGui=this;this.pieChartContainer=div;this.pieChartContainer.style.position="relative";this.columnSelectorDiv=document.createElement("div");div.appendChild(this.columnSelectorDiv);this.datasetSelect=document.createElement("select");$(this.datasetSelect).change(function(event){if(typeof pieChartGui.parent.datasets!=="undefined"){var dataset=pieChartGui.parent.datasets[$(pieChartGui.datasetSelect).val()];if(dataset.objects.length>0){var firstObject=dataset.objects[0];var firstTableContent=firstObject.tableContent;$(pieChartGui.columnSelect).empty();$(pieChartGui.columnSelect).append("");for(var key in localStorage){var prefix=pieChartGui.options.localStoragePrefix;if(key.startsWith(prefix)){var saveObject=$.remember({name:key,json:true});var label=key.substring(prefix.length);if(typeof firstTableContent[saveObject.columnName]!=="undefined"){$(pieChartGui.columnSelect).append("")}}}$(pieChartGui.columnSelect).append("");$(pieChartGui.columnSelect).append("");for(var attribute in firstTableContent){$(pieChartGui.columnSelect).append("")}if(firstObject.isTemporal){$(pieChartGui.columnSelect).append("")}if(typeof firstObject.locations[0]!=="undefined"){$(pieChartGui.columnSelect).append("");$(pieChartGui.columnSelect).append("")}$(pieChartGui.columnSelect).append("")}}});this.columnSelectorDiv.appendChild(this.datasetSelect);this.columnSelect=document.createElement("select");this.columnSelectorDiv.appendChild(this.columnSelect);this.buttonNewPieChart=document.createElement("button");$(this.buttonNewPieChart).text("add");this.columnSelectorDiv.appendChild(this.buttonNewPieChart);$(this.buttonNewPieChart).click(function(){var isSaved=$(pieChartGui.columnSelect).find("option:selected").first().attr("isSaved");if((typeof isSaved==="undefined")||(isSaved!=1)){pieChartGui.parent.addPieChart($(pieChartGui.datasetSelect).val(),$(pieChartGui.columnSelect).val())}else{var name=pieChartGui.options.localStoragePrefix+$(pieChartGui.columnSelect).val();var saveObject=$.remember({name:name,json:true});if((typeof saveObject!=="undefined")&&(saveObject!=null)){var categories=saveObject.categories;var type=saveObject.type;var columnName=saveObject.columnName;pieChartGui.parent.addCategorizedPieChart($(pieChartGui.datasetSelect).val(),columnName,type,categories)}}});this.buttonPieChartCategoryChooser=document.createElement("button");$(this.buttonPieChartCategoryChooser).text("categorize");this.columnSelectorDiv.appendChild(this.buttonPieChartCategoryChooser);$(this.buttonPieChartCategoryChooser).click(function(){var isSaved=$(pieChartGui.columnSelect).find("option:selected").first().attr("isSaved");if((typeof isSaved==="undefined")||(isSaved!=1)){var chooser=new PieChartCategoryChooser(pieChartGui.parent,pieChartGui.options,$(pieChartGui.datasetSelect).val(),$(pieChartGui.columnSelect).val())}else{alert("Saved datasets can not be categorized again. Try loading and editing instead.")}});this.refreshColumnSelector();this.pieChartsDiv=document.createElement("div");this.pieChartsDiv.id="pieChartsDivID";div.appendChild(this.pieChartsDiv);$(this.pieChartsDiv).height("100%")}PieChartGui.prototype={refreshColumnSelector:function(){$(this.datasetSelect).empty();$(this.columnSelect).empty();if((typeof this.parent.datasets!=="undefined")&&(this.parent.datasets.length>0)){var index=0;var pieChartGui=this;$(this.parent.datasets).each(function(){$(pieChartGui.datasetSelect).append("");index++});$(pieChartGui.datasetSelect).change()}}};var hexcase=0;var b64pad="";function hex_md5(s){return rstr2hex(rstr_md5(str2rstr_utf8(s)))}function b64_md5(s){return rstr2b64(rstr_md5(str2rstr_utf8(s)))}function any_md5(s,e){return rstr2any(rstr_md5(str2rstr_utf8(s)),e)}function hex_hmac_md5(k,d){return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k),str2rstr_utf8(d)))}function b64_hmac_md5(k,d){return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k),str2rstr_utf8(d)))}function any_hmac_md5(k,d,e){return rstr2any(rstr_hmac_md5(str2rstr_utf8(k),str2rstr_utf8(d)),e)}function md5_vm_test(){return hex_md5("abc").toLowerCase()=="900150983cd24fb0d6963f7d28e17f72"}function rstr_md5(s){return binl2rstr(binl_md5(rstr2binl(s),s.length*8))}function rstr_hmac_md5(key,data){var bkey=rstr2binl(key);if(bkey.length>16){bkey=binl_md5(bkey,key.length*8)}var ipad=Array(16),opad=Array(16);for(var i=0;i<16;i++){ipad[i]=bkey[i]^909522486;opad[i]=bkey[i]^1549556828}var hash=binl_md5(ipad.concat(rstr2binl(data)),512+data.length*8);return binl2rstr(binl_md5(opad.concat(hash),512+128))}function rstr2hex(input){try{hexcase}catch(e){hexcase=0}var hex_tab=hexcase?"0123456789ABCDEF":"0123456789abcdef";var output="";var x;for(var i=0;i>>4)&15)+hex_tab.charAt(x&15)}return output}function rstr2b64(input){try{b64pad}catch(e){b64pad=""}var tab="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var output="";var len=input.length;for(var i=0;iinput.length*8){output+=b64pad}else{output+=tab.charAt((triplet>>>6*(3-j))&63)}}}return output}function rstr2any(input,encoding){var divisor=encoding.length;var i,j,q,x,quotient;var dividend=Array(Math.ceil(input.length/2));for(i=0;i0||q>0){quotient[quotient.length]=q}}remainders[j]=x;dividend=quotient}var output="";for(i=remainders.length-1;i>=0;i--){output+=encoding.charAt(remainders[i])}return output}function str2rstr_utf8(input){var output="";var i=-1;var x,y;while(++i>>6)&31),128|(x&63))}else{if(x<=65535){output+=String.fromCharCode(224|((x>>>12)&15),128|((x>>>6)&63),128|(x&63))}else{if(x<=2097151){output+=String.fromCharCode(240|((x>>>18)&7),128|((x>>>12)&63),128|((x>>>6)&63),128|(x&63))}}}}}return output}function str2rstr_utf16le(input){var output="";for(var i=0;i>>8)&255)}return output}function str2rstr_utf16be(input){var output="";for(var i=0;i>>8)&255,input.charCodeAt(i)&255)}return output}function rstr2binl(input){var output=Array(input.length>>2);for(var i=0;i>5]|=(input.charCodeAt(i/8)&255)<<(i%32)}return output}function binl2rstr(input){var output="";for(var i=0;i>5]>>>(i%32))&255)}return output}function binl_md5(x,len){x[len>>5]|=128<<((len)%32);x[(((len+64)>>>9)<<4)+14]=len;var a=1732584193;var b=-271733879;var c=-1732584194;var d=271733878;for(var i=0;i>16)+(y>>16)+(lsw>>16);return(msw<<16)|(lsw&65535)}function bit_rol(num,cnt){return(num<>>(32-cnt))}PieChartWidget=function(core,div,options){this.datasets;this.selected;this.core=core;this.core.setWidget(this);this.options=(new PieChartConfig(options)).options;this.gui=new PieChartGui(this,div,this.options);this.pieCharts=[]};PieChartWidget.prototype={addCategorizedPieChart:function(watchedDataset,watchedColumn,type,categories){var selectionFunction;if(type==="text"){var selectionFunction=function(columnData){var categoryLabel;$(categories).each(function(){if($.inArray(columnData,this.values)!=-1){categoryLabel=this.label;return false}if(typeof categoryLabel!=="undefined"){return false}});if(typeof categoryLabel==="undefined"){categoryLabel="unknown"}return categoryLabel}}else{if(type==="numeral"){var selectionFunction=function(columnData){var categoryLabel;var columnDataNumeric=parseFloat(columnData);for(var i=0;iwatchedDataset)){newPieChart.initPieChart(GeoTemConfig.datasets)}this.redrawPieCharts(this.selected)},initWidget:function(data){var piechart=this;this.datasets=data;piechart.selected=[];$(this.datasets).each(function(){piechart.selected.push(this.objects)});this.gui.refreshColumnSelector();$(this.pieCharts).each(function(){if(this instanceof PieChart){this.initPieChart(data)}})},redrawPieCharts:function(objects,overwrite){$(this.pieCharts).each(function(){if(this instanceof PieChart){if((typeof overwrite!=="undefined")&&overwrite){this.preHighlightObjects=objects}this.redrawPieChart(objects)}})},highlightChanged:function(objects){if(!GeoTemConfig.highlightEvents){return}if((typeof objects==="undefined")||(objects.length==0)){return}this.redrawPieCharts(objects,false)},selectionChanged:function(selection){if(!GeoTemConfig.selectionEvents){return}if(!selection.valid()){selection.loadAllObjects()}var objects=selection.objects;this.selected=objects;this.redrawPieCharts(objects,true)},getElementData:function(dataObject,watchedColumn,selectionFunction){var columnData;if(watchedColumn.indexOf("[")===-1){columnData=dataObject[watchedColumn];if(typeof columnData==="undefined"){columnData=dataObject.tableContent[watchedColumn]}}else{try{var columnName=watchedColumn.split("[")[0];var IndexAndAttribute=watchedColumn.split("[")[1];if(IndexAndAttribute.indexOf("]")!=-1){var arrayIndex=IndexAndAttribute.split("]")[0];var attribute=IndexAndAttribute.split("]")[1];if(typeof attribute==="undefined"){columnData=dataObject[columnName][arrayIndex]}else{attribute=attribute.split(".")[1];columnData=dataObject[columnName][arrayIndex][attribute]}}}catch(e){if(typeof console!==undefined){console.error(e)}delete columnData}}if((typeof columnData!=="undefined")&&(typeof selectionFunction!=="undefined")){columnData=selectionFunction(columnData)}return(columnData)},getElementsByValue:function(columnValue,watchedDataset,watchedColumn,selectionFunction){var elements=[];var pieChart=this;$(this.datasets[watchedDataset].objects).each(function(){var columnData=pieChart.getElementData(this,watchedColumn,selectionFunction);if(columnData===columnValue){elements.push(this)}});return elements},};function Storytelling(parent){this.index;this.storytelling=this;this.parent=parent;this.options=parent.options;this.initialize()}Storytelling.prototype={remove:function(){},initialize:function(){},triggerHighlight:function(columnElement){},triggerSelection:function(columnElement){},deselection:function(){},filtering:function(){},inverseFiltering:function(){},triggerRefining:function(){},reset:function(){},show:function(){},hide:function(){}};function StorytellingConfig(options){this.options={dariahStorage:false,localStorage:true};if(typeof options!="undefined"){$.extend(this.options,options)}}function StorytellingGui(storytelling,div,options){this.parent=storytelling;var storytellingGui=this;storytellingGui.storytellingContainer=document.createElement("div");$(div).append(storytellingGui.storytellingContainer);storytellingGui.storytellingContainer.style.position="relative"}StorytellingGui.prototype={};StorytellingWidget=function(core,div,options){this.datasets;this.core=core;this.core.setWidget(this);this.currentStatus=new Object();this.options=(new StorytellingConfig(options)).options;this.gui=new StorytellingGui(this,div,this.options);this.datasetLink;Publisher.Subscribe("mapChanged",this,function(mapName){this.client.currentStatus.mapChanged=mapName;this.client.createLink()});var currentStatus=$.url().param("currentStatus");if(typeof currentStatus!=="undefined"){this.currentStatus=$.deparam(currentStatus);$.each(this.currentStatus,function(action,data){Publisher.Publish(action,data,this)})}};StorytellingWidget.prototype={initWidget:function(data){var storytellingWidget=this;var gui=storytellingWidget.gui;storytellingWidget.datasets=data;$(gui.storytellingContainer).empty();var magneticLinkParam="";var datasetIndex=0;var linkCount=1;$(storytellingWidget.datasets).each(function(){var dataset=this;if(magneticLinkParam.length>0){magneticLinkParam+="&"}var paragraph=$("

    ");paragraph.append(dataset.label);if(typeof dataset.url!=="undefined"){var type="csv";if(typeof dataset.type!=="undefined"){type=dataset.type}else{if(dataset.url.toLowerCase().endsWith("kml")){type="kml"}}magneticLinkParam+=type+linkCount+"=";linkCount++;magneticLinkParam+=dataset.url;var tableLinkDiv=document.createElement("a");tableLinkDiv.title=dataset.url;tableLinkDiv.href=dataset.url;tableLinkDiv.target="_";tableLinkDiv.setAttribute("class","externalLink");paragraph.append(tableLinkDiv)}else{if(storytellingWidget.options.dariahStorage){var uploadToDARIAH=document.createElement("a");$(uploadToDARIAH).append("Upload to DARIAH Storage");uploadToDARIAH.title="";uploadToDARIAH.href=dataset.url;var localDatasetIndex=new Number(datasetIndex);$(uploadToDARIAH).click(function(){var csv=GeoTemConfig.createCSVfromDataset(localDatasetIndex);var storageURL="http://ref.dariah.eu/storage/";$.ajax({url:storageURL,type:"POST",contentType:"text/csv",data:csv,success:function(data,status,xhr){var location=xhr.getResponseHeader("Location");dsid=location.substring(location.lastIndexOf("/")+1);storytellingWidget.datasets[localDatasetIndex].url=location;storytellingWidget.datasets[localDatasetIndex].type="csv";storytellingWidget.initWidget(storytellingWidget.datasets)},error:function(data,text,error){alert("error creating new file in dariah storage because "+text);console.log(data);console.log(text);console.log(error)}});return(false)});paragraph.append(uploadToDARIAH)}else{if(storytellingWidget.options.localStorage){var saveToLocalStorage=document.createElement("a");$(saveToLocalStorage).append("Save to Local Storage");saveToLocalStorage.title="";saveToLocalStorage.href=dataset.url;var localDatasetIndex=new Number(datasetIndex);$(saveToLocalStorage).click(function(){var csv=GeoTemConfig.createCSVfromDataset(localDatasetIndex);var storageName="GeoBrowser_dataset_"+GeoTemConfig.datasets[localDatasetIndex].label;$.remember({name:storageName,value:csv});storytellingWidget.datasets[localDatasetIndex].url=storageName;storytellingWidget.datasets[localDatasetIndex].type="local";storytellingWidget.initWidget(storytellingWidget.datasets);return(false)});paragraph.append(saveToLocalStorage)}}}$(gui.storytellingContainer).append(paragraph);datasetIndex++});this.datasetLink=magneticLinkParam;this.createLink()},createLink:function(){$(this.gui.storytellingContainer).find(".magneticLink").remove();var magneticLink=document.createElement("a");magneticLink.setAttribute("class","magneticLink");$(magneticLink).append("Magnetic Link");magneticLink.title="Use this link to reload currently loaded (online) data.";magneticLink.href="?"+this.datasetLink;var currentStatusParam=$.param(this.currentStatus);if(currentStatusParam.length>0){magneticLink.href+="¤tStatus="+currentStatusParam}magneticLink.target="_";$(this.gui.storytellingContainer).prepend(magneticLink)},highlightChanged:function(objects){},selectionChanged:function(selection){},};function LineOverlay(parent){this.lineOverlay=this;this.parent=parent;this.options=parent.options;this.attachedMapWidgets=parent.attachedMapWidgets;this.overlays=[];this.initialize()}LineOverlay.prototype={initialize:function(){}};function LineOverlayConfig(options){this.options={showArrows:true,showLines:"both",onlyShowSelectedOrHighlighted:false,};if(typeof options!="undefined"){$.extend(this.options,options)}}bearing=function(x1,y1,x2,y2){b_x=0;b_y=1;a_x=x2-x1;a_y=y2-y1;angle_rad=Math.acos((a_x*b_x+a_y*b_y)/Math.sqrt(a_x*a_x+a_y*a_y));angle=360/(2*Math.PI)*angle_rad;if(a_x<0){return 360-angle}else{return angle}};LineOverlayWidget=function(core,options){this.core=core;this.core.setWidget(this);this.options=(new LineOverlayConfig(options)).options;this.attachedMapWidgets=new Array();this.lineOverlay=new LineOverlay(this);this.lines=[];this.multiLineFeature;this.selected=[]};function Line(objectStart,objectEnd){this.objectStart=objectStart;this.objectEnd=objectEnd}LineOverlayWidget.prototype={initWidget:function(){var lineOverlayWidget=this;this.drawLines()},highlightChanged:function(objects){if(!GeoTemConfig.highlightEvents){return}this.drawLines(GeoTemConfig.mergeObjects(objects,this.selected))},selectionChanged:function(selection){if(!GeoTemConfig.selectionEvents){return}if(selection.valid()){this.selected=selection.objects}else{this.selected=[]}this.drawLines(this.selected)},triggerHighlight:function(item){},tableSelection:function(){},deselection:function(){},filtering:function(){},inverseFiltering:function(){},triggerRefining:function(){},reset:function(){},getElementData:function(dataObject,watchedColumn,selectionFunction){var columnData;if(watchedColumn.indexOf("[")===-1){columnData=dataObject[watchedColumn];if(typeof columnData==="undefined"){columnData=dataObject.tableContent[watchedColumn]}}else{try{var columnName=watchedColumn.split("[")[0];var IndexAndAttribute=watchedColumn.split("[")[1];if(IndexAndAttribute.indexOf("]")!=-1){var arrayIndex=IndexAndAttribute.split("]")[0];var attribute=IndexAndAttribute.split("]")[1];if(typeof attribute==="undefined"){columnData=dataObject[columnName][arrayIndex]}else{attribute=attribute.split(".")[1];columnData=dataObject[columnName][arrayIndex][attribute]}}}catch(e){if(typeof console!==undefined){console.error(e)}delete columnData}}if((typeof columnData!=="undefined")&&(typeof selectionFunction!=="undefined")){columnData=selectionFunction(columnData)}return(columnData)},matchColumns:function(dataSet1,columnName1,dataSet2,columnName2){var lineOverlayWidget=this;lineOverlayWidget.lines;$(GeoTemConfig.datasets[dataSet1].objects).each(function(){var object1=this;var data1=lineOverlayWidget.getElementData(object1,columnName1);data1=data1.split(",");$(GeoTemConfig.datasets[dataSet2].objects).each(function(){var object2=this;if((columnName1===columnName2)&&(dataSet1===dataSet2)&&(object1.index<=object2.index)){return}var data2=lineOverlayWidget.getElementData(object2,columnName2);data2=data2.split(",");for(var i=0;i0)){$(objects).each(function(){$.merge(flatObjects,this)})}var lineOverlayWidget=this;$(lineOverlayWidget.attachedMapWidgets).each(function(){var mapWidget=this.mapWidget;var lineLayer=this.lineLayer;var map=mapWidget.openlayersMap;var cs=mapWidget.mds.getObjectsByZoom();mapWidget.openlayersMap.setLayerIndex(lineLayer,99);lineLayer.removeAllFeatures();var lineElements=[];var checkIfLineInPreset=function(){return false};if(lineOverlayWidget.options.showLines==="inbound"){checkIfLineInPreset=function(objectStart,objectEnd,flatObjects){return($.inArray(objectEnd,flatObjects)===-1)}}else{if(lineOverlayWidget.options.showLines==="outbound"){checkIfLineInPreset=function(objectStart,objectEnd,flatObjects){return($.inArray(objectStart,flatObjects)===-1)}}else{checkIfLineInPreset=function(objectStart,objectEnd,flatObjects){return(($.inArray(objectStart,flatObjects)===-1)&&($.inArray(objectEnd,flatObjects)===-1))}}}$(lineOverlayWidget.lines).each(function(){var line=this;if((lineOverlayWidget.options.onlyShowSelectedOrHighlighted===true)||(flatObjects.length>0)){if(checkIfLineInPreset(line.objectStart,line.objectEnd,flatObjects)){return}}var xyStart=lineOverlayWidget.getXYofObject(cs,line.objectStart);if((typeof xyStart.x==="undefined")&&(typeof xyStart.y==="undefined")){return}var xyEnd=lineOverlayWidget.getXYofObject(cs,line.objectEnd);if((typeof xyEnd.x==="undefined")&&(typeof xyEnd.y==="undefined")){return}if((xyStart.x===xyEnd.x)&&(xyStart.y===xyEnd.y)){return}var points=new Array(new OpenLayers.Geometry.Point(xyStart.x,xyStart.y),new OpenLayers.Geometry.Point(xyEnd.x,xyEnd.y));var line=new OpenLayers.Geometry.LineString(points);var found=false;$(lineElements).each(function(){var checkLine=this.line;if(((checkLine.components[0].x===line.components[0].x)&&(checkLine.components[0].y===line.components[0].y)&&(checkLine.components[1].x===line.components[1].x)&&(checkLine.components[1].y===line.components[1].y))||((lineOverlayWidget.options.showArrows===false)&&(checkLine.components[0].x===line.components[1].x)&&(checkLine.components[0].y===line.components[1].y)&&(checkLine.components[1].x===line.components[0].x)&&(checkLine.components[1].y===line.components[0].y))){found=true;this.width++;return false}});if(found===true){return}lineElements.push({line:line,width:1})});$(lineElements).each(function(){var line=this.line;var width=this.width;if(lineOverlayWidget.options.showArrows===true){var xyStart=line.components[0];var xyEnd=line.components[1];var arrowFeature=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(xyEnd.x-((xyEnd.x-xyStart.x)*0.03),xyEnd.y-((xyEnd.y-xyStart.y)*0.03)),{type:"triangle",angle:bearing(xyStart.x,xyStart.y,xyEnd.x,xyEnd.y),width:width+1});lineLayer.addFeatures(arrowFeature)}var lineFeature=new OpenLayers.Feature.Vector(line,{width:width});lineLayer.addFeatures(lineFeature)})})},attachMapWidget:function(mapWidget){var styles=new OpenLayers.StyleMap({"default":{graphicName:"${type}",rotation:"${angle}",pointRadius:"${width}",strokeColor:"#0000ff",strokeOpacity:0.5,strokeWidth:"${width}",fillOpacity:1}});var lineOverlayWidget=this;var lineLayer=new OpenLayers.Layer.Vector("Line Layer",{styleMap:styles,isBaseLayer:false});mapWidget.openlayersMap.addLayer(lineLayer);mapWidget.openlayersMap.setLayerIndex(lineLayer,99);this.attachedMapWidgets.push({mapWidget:mapWidget,lineLayer:lineLayer});mapWidget.openlayersMap.events.register("zoomend",lineOverlayWidget,function(){this.drawLines(this.selected)})}};DataObject=function(name,description,locations,dates,weight,tableContent,projection){this.name=$.trim(name);this.description=$.trim(description);this.weight=weight;this.tableContent=new Object();var objectTableContent=this.tableContent;for(key in tableContent){value=tableContent[key];objectTableContent[$.trim(key)]=$.trim(value)}this.percentage=0;this.setPercentage=function(percentage){this.percentage=percentage};this.locations=[];var objectLocations=this.locations;$(locations).each(function(){objectLocations.push({latitude:this.latitude,longitude:this.longitude,place:$.trim(this.place)})});if(!(projection instanceof OpenLayers.Projection)){projection=new OpenLayers.Projection("EPSG:4326")}this.projection=projection;var tempLocations=[];if(typeof this.locations!=="undefined"){$(this.locations).each(function(){this.latitude=parseFloat(this.latitude);this.longitude=parseFloat(this.longitude);if(projection.getCode()==="EPSG:4326"){if((typeof this.latitude==="number")&&(this.latitude>=-90)&&(this.latitude<=90)&&(typeof this.longitude==="number")&&(this.longitude>=-180)&&(this.longitude<=180)){tempLocations.push(this)}else{if((GeoTemConfig.debug)&&(typeof console!==undefined)){console.error("Object "+name+" has no valid coordinate. ("+this.latitude+","+this.longitude+")")}}if(this.longitude==180){this.longitude=179.999}if(this.longitude==-180){this.longitude=-179.999}if(this.latitude==90){this.latitude=89.999}if(this.latitude==-90){this.latitude=-89.999}}});this.locations=tempLocations}this.isGeospatial=false;if((typeof this.locations!=="undefined")&&(this.locations.length>0)){this.isGeospatial=true}this.placeDetails=[];for(var i=0;i=this.placeDetails[locationId].length){return this.placeDetails[locationId][this.placeDetails[locationId].length-1]}return this.placeDetails[locationId][level]};this.dates=dates;this.isTemporal=false;if((typeof this.dates!=="undefined")&&(this.dates.length>0)){this.isTemporal=true;for(var i=0;ithis.TimeSpanEnd){if((GeoTemConfig.debug)&&(typeof console!==undefined)){console.error("Object "+this.name+" has wrong fuzzy dating (twisted start/end?).")}}else{var timeSpanBeginGranularity=formats.indexOf(this.TimeSpanBegin._f);var timeSpanEndGranularity=formats.indexOf(this.TimeSpanEnd._f);var timeSpanGranularity=Math.max(timeSpanBeginGranularity,timeSpanEndGranularity);if(timeSpanGranularity===0){this.TimeSpanGranularity=SimileAjax.DateTime.YEAR}else{if(timeSpanGranularity===1){this.TimeSpanGranularity=SimileAjax.DateTime.MONTH}else{if(timeSpanGranularity===2){this.TimeSpanGranularity=SimileAjax.DateTime.DAY}else{if(timeSpanGranularity===3){this.TimeSpanGranularity=SimileAjax.DateTime.HOUR}else{if(timeSpanGranularity===4){this.TimeSpanGranularity=SimileAjax.DateTime.MINUTE}else{if(timeSpanGranularity===5){this.TimeSpanGranularity=SimileAjax.DateTime.SECOND}else{if(timeSpanGranularity===6){this.TimeSpanGranularity=SimileAjax.DateTime.MILLISECOND}}}}}}}if(timeSpanBeginGranularity===0){this.TimeSpanBeginGranularity=SimileAjax.DateTime.YEAR}else{if(timeSpanBeginGranularity===1){this.TimeSpanBeginGranularity=SimileAjax.DateTime.MONTH}else{if(timeSpanBeginGranularity===2){this.TimeSpanBeginGranularity=SimileAjax.DateTime.DAY}else{if(timeSpanBeginGranularity===3){this.TimeSpanBeginGranularity=SimileAjax.DateTime.HOUR}else{if(timeSpanBeginGranularity===4){this.TimeSpanBeginGranularity=SimileAjax.DateTime.MINUTE}else{if(timeSpanBeginGranularity===5){this.TimeSpanBeginGranularity=SimileAjax.DateTime.SECOND}else{if(timeSpanBeginGranularity===6){this.TimeSpanBeginGranularity=SimileAjax.DateTime.MILLISECOND}}}}}}}if(timeSpanEndGranularity===0){this.TimeSpanEndGranularity=SimileAjax.DateTime.YEAR}else{if(timeSpanEndGranularity===1){this.TimeSpanEndGranularity=SimileAjax.DateTime.MONTH}else{if(timeSpanEndGranularity===2){this.TimeSpanEndGranularity=SimileAjax.DateTime.DAY}else{if(timeSpanEndGranularity===3){this.TimeSpanEndGranularity=SimileAjax.DateTime.HOUR}else{if(timeSpanEndGranularity===4){this.TimeSpanEndGranularity=SimileAjax.DateTime.MINUTE}else{if(timeSpanEndGranularity===5){this.TimeSpanEndGranularity=SimileAjax.DateTime.SECOND}else{if(timeSpanEndGranularity===6){this.TimeSpanEndGranularity=SimileAjax.DateTime.MILLISECOND}}}}}}}if(this.TimeSpanEnd.year()-this.TimeSpanBegin.year()>=1000){this.TimeSpanGranularity=SimileAjax.DateTime.MILLENNIUM}else{if(this.TimeSpanEnd.year()-this.TimeSpanBegin.year()>=100){this.TimeSpanGranularity=SimileAjax.DateTime.CENTURY}else{if(this.TimeSpanEnd.year()-this.TimeSpanBegin.year()>=10){this.TimeSpanGranularity=SimileAjax.DateTime.DECADE}}}if(timeSpanEndGranularity===0){this.TimeSpanEnd.endOf("year")}else{if(timeSpanEndGranularity===1){this.TimeSpanEnd.endOf("month")}else{if(timeSpanEndGranularity===2){this.TimeSpanEnd.endOf("day")}else{if(timeSpanEndGranularity===3){this.TimeSpanEnd.endOf("hour")}else{if(timeSpanEndGranularity===4){this.TimeSpanEnd.endOf("minute")}else{if(timeSpanEndGranularity===5){this.TimeSpanEnd.endOf("second")}else{if(timeSpanEndGranularity===6){}}}}}}}this.isFuzzyTemporal=true}}}}this.getDate=function(dateId){return this.dates[dateId].date};this.getTimeGranularity=function(dateId){return this.dates[dateId].granularity};this.setIndex=function(index){this.index=index};this.getTimeString=function(){if(this.timeStart!=this.timeEnd){return(SimileAjax.DateTime.getTimeString(this.granularity,this.timeStart)+" - "+SimileAjax.DateTime.getTimeString(this.granularity,this.timeEnd))}else{return SimileAjax.DateTime.getTimeString(this.granularity,this.timeStart)+""}};this.contains=function(text){var allCombined=this.name+" "+this.description+" "+this.weight+" ";$.each(this.dates,function(key,value){$.each(value,function(){allCombined+=this+" "})});$.each(this.locations,function(key,value){$.each(value,function(){allCombined+=this+" "})});$.each(this.tableContent,function(key,value){allCombined+=value+" "});return(allCombined.indexOf(text)!=-1)};this.hasColorInformation=false;this.setColor=function(r0,g0,b0,r1,g1,b1){this.hasColorInformation=true;this.color=new Object();this.color.r0=r0;this.color.g0=g0;this.color.b0=b0;this.color.r1=r1;this.color.g1=g1;this.color.b1=b1};this.getColor=function(){if(!this.hasColorInformation){return}color=new Object();color.r0=this.r0;color.g0=this.g0;color.b0=this.b0;color.r1=this.r1;color.g1=this.g1;color.b1=this.b1;return color};Publisher.Publish("dataobjectAfterCreation",this)};Dataset=function(objects,label,url,type){this.objects=objects;this.label=label;this.url=url;this.type=type;this.color;if(GeoTemConfig.allowUserShapeAndColorChange){this.graphic={shape:"circle",rotation:0}}Publisher.Publish("datasetAfterCreation",this)};function TimeDataSource(options){this.options=options;this.timeSlices=[];this.unit;this.minDate;this.maxDate;this.eventSources;this.events;this.leftSlice;this.rightSlice;this.hashMapping}TimeDataSource.prototype={findTimeUnits:function(granularity,timeUnit,pixels){var time=SimileAjax.DateTime;this.availableUnits=[];var givenUnits=SimileAjax.DateTime.gregorianUnitLengths;for(var i=0;ii){continue}var slices=0;var t=new Date(this.minDate.getTime());do{time.roundDownToInterval(t,i,undefined,1,0);slices++;time.incrementByInterval(t,i,undefined)}while(t.getTime()<=this.maxDate.getTime()&&slices0&&slices<=pixels){this.availableUnits.push({unit:i,slices:slices,label:SimileAjax.DateTime.Strings[GeoTemConfig.language][i]})}}var unitDiff200=pixels+1;for(var i=0;ithis.maxDate.getTime()){this.maxDate=time}}}}if(this.minDate==undefined){this.minDate=this.options.defaultMinDate;this.maxDate=this.options.defaultMaxDate}this.findTimeUnits(granularity,timeUnit,pixels);this.initializeSlices()},initializeSlices:function(){for(var i=0;i=t1&&date=t2){stack=this.timeSlices[k+1].getStack(i);projStack=this.timeSlices[k+1].getProjStack(projId)}if(stack!=null){stack.addObject(o);projStack.addObject(o);this.hashMapping[i][o.index]=stack;this.projHashMapping[i][o.index]=projStack;break}}}}}this.events=[];for(var i=0;i0){m=1;if(leftTime!=null){n1=this.getSliceIndex(leftTime)-this.leftSlice;n2=this.rightSlice-this.getSliceIndex(rightTime)}else{slice=this.getSliceIndex(time);if(slice==this.leftSlice||slice==this.rightSlice){return}n1=slice-1-this.leftSlice;n2=this.rightSlice-slice-1}}else{if(delta<0){n1=this.leftSlice;n2=this.timeSlices.length-1-this.rightSlice}}var zoomSlices=2*delta;if(Math.abs(n1+n2)value){value=this.projStacks[i].overlay}}return value}}function TimeStack(){this.overlay=0;this.value=0;this.elements=[];this.addObject=function(object){this.elements.push(object);this.value+=object.weight}}Binning=function(map,options){this.map=map;this.options=options;this.reset()};Binning.prototype={getSet:function(){var type=this.options.binning;if(!type){return this.getExactBinning()}else{if(type=="generic"){return this.getGenericBinning()}else{if(type=="square"){return this.getSquareBinning()}else{if(type=="hexagonal"){return this.getHexagonalBinning()}else{if(type=="triangular"){return this.getTriangularBinning()}}}}}},getExactBinning:function(){if(typeof this.binnings.exact=="undefined"){this.exactBinning()}return this.binnings.exact},getGenericBinning:function(){if(typeof this.binnings.generic=="undefined"){this.genericBinning()}return this.binnings.generic},getSquareBinning:function(){if(typeof this.binnings.square=="undefined"){this.squareBinning()}return this.binnings.square},getHexagonalBinning:function(){if(typeof this.binnings.hexagonal=="undefined"){this.hexagonalBinning()}return this.binnings.hexagonal},getTriangularBinning:function(){if(typeof this.binnings.triangular=="undefined"){this.triangularBinning()}return this.binnings.triangular},reset:function(){this.zoomLevels=this.map.getNumZoomLevels();this.binnings=[];this.minimumRadius=this.options.minimumRadius;this.maximumRadius=this.minimumRadius;this.maximumPoints=0;this.minArea=0;this.maxArea=0},getMaxRadius:function(size){return 4*Math.log(size)/Math.log(2)},setObjects:function(objects){this.objects=objects;for(var i=0;ithis.maximumRadius){this.maximumRadius=r;this.maximumPoints=weight;this.maxArea=Math.PI*this.maximumRadius*this.maximumRadius;this.minArea=Math.PI*this.minimumRadius*this.minimumRadius}}},dist:function(x1,y1,x2,y2){return Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))},exactBinning:function(){var circleSets=[];var hashMaps=[];var selectionHashs=[];var circleAggregates=[];var bins=[];for(var i=0;i0){balls.push({search:k,elements:point.elements[k],radius:point.radii[k],weight:point.weights[k]})}}var orderBalls=function(b1,b2){if(b1.radius>b2.radius){return -1}if(b2.radius>b1.radius){return 1}return 0};var fatherBin={circles:[],length:0,radius:point.radius/resolution,x:point.x,y:point.y};for(var k=0;k1){bins.push(fatherBin)}}circleSets.push(circles);binSets.push(bins);hashMaps.push(hashMap);selectionHashs.push(selectionMap)}circleSets.reverse();binSets.reverse();hashMaps.reverse();selectionHashs.reverse();return{circleSets:circleSets,binSets:binSets,hashMaps:hashMaps,selectionHashs:selectionHashs}},genericBinning:function(){if(this.options.circlePackings||this.objects.length==1){this.binnings.generic=this.genericClustering(this.objects)}else{var circleSets=[];var hashMaps=[];var selectionHashs=[];for(var i=0;idy){sx=bin.x-(x1+bin.r-radius);sy=bin.y-(m*bin.x+n)}else{sy=bin.y-(y1+bin.r-radius);sx=bin.x-(bin.y-n)/m}}return{x:sx,y:sy}},binSize:function(elements){var size=0;for(var i in elements){size+=elements[i].weight}return size},setCircleSet:function(id,binData){var circleSets=[];var hashMaps=[];var selectionHashs=[];for(var i=0;imax){max=bs;radius=binData[i][j].r/resolution}}}for(var j=0;jyMax/xMax*x){triangleIndex=partition}else{triangleIndex=partition+1}}if(typeof bins[k][""+binY][""+triangleIndex]=="undefined"){bins[k][""+binY][""+triangleIndex]=[];for(var z=0;zyMax/xMax*x){triangleIndex=partition}else{triangleIndex=partition+1}}if(typeof bins[k][""+binY][""+triangleIndex]=="undefined"){bins[k][""+binY][""+triangleIndex]=[];for(var z=0;zmax1){if(max1>max2){max2=max1}max1=this.radii[i]}else{if(this.radii[i]>max2){max2=this.radii[i]}}}if(count==1){this.radius=max1*resolution}else{if(count==2){this.radius=(max1+max2)*resolution}else{if(count==3){var d=(2/3*Math.sqrt(3)-1)*max1;this.radius=(d+max1+max2)*resolution}else{if(count==4){var d=(Math.sqrt(2)-1)*max2;this.radius=(d+max1+max2)*resolution}}}}}};Vertex.prototype.addElement=function(e,weight,index){this.elements[index].push(e);this.size+=weight;this.weights[index]+=weight};function Edge(v0,v1){this.v0=v0;this.v1=v1;this.leftFace;this.rightFace;this.legal=true;this.setLength()}Edge.prototype.setLength=function(){var dx=this.v0.x-this.v1.x;var dy=this.v0.y-this.v1.y;this.length=Math.sqrt(dx*dx+dy*dy)};Edge.prototype.contains=function(v){if(this.v0==v||this.v1==v){return true}return false};Edge.prototype.replaceFace=function(f_old,f_new){if(this.leftFace==f_old){this.leftFace=f_new}else{if(this.rightFace==f_old){this.rightFace=f_new}}};Edge.prototype.setFace=function(f){if(f.leftOf(this)){this.leftFace=f}else{this.rightFace=f}};Edge.prototype.setFaces=function(f1,f2){if(f1.leftOf(this)){this.leftFace=f1;this.rightFace=f2}else{this.leftFace=f2;this.rightFace=f1}};Edge.prototype.removeFace=function(f){if(this.leftFace==f){this.leftFace=null}else{this.rightFace=null}};Edge.prototype.equals=function(e){if(this.v0==e.v0&&this.v1==e.v1||this.v0==e.v1&&this.v1==e.v0){return true}return false};function Triangle(edges){this.edges=edges;this.setVertices();this.descendants=[]}Triangle.prototype.getTriple=function(e){var i=arrayIndex(this.edges,e);return{e_s:this.edges[(i+1)%3],e_p:this.edges[(i+2)%3],u:this.vertices[(i+2)%3]}};Triangle.prototype.leftOf=function(e){var i=arrayIndex(this.edges,e);if(this.vertices[i].y!=this.vertices[(i+1)%3].y){return this.vertices[i].y>this.vertices[(i+1)%3].y}return this.vertices[i].y>this.vertices[(i+2)%3].y};Triangle.prototype.getNext=function(v){var i=arrayIndex(this.vertices,v);return this.vertices[(i+1)%3]};Triangle.prototype.oppositeEdge=function(v){var i=arrayIndex(this.vertices,v);return this.edges[(i+1)%3]};Triangle.prototype.contains=function(v){return arrayIndex(this.vertices,v)!=-1};Triangle.prototype.replace=function(e_old,e_new){this.edges[arrayIndex(this.edges,e_old)]=e_new};Triangle.prototype.setVertices=function(){if(this.edges[1].v0==this.edges[0].v0||this.edges[1].v1==this.edges[0].v0){this.vertices=[this.edges[0].v1,this.edges[0].v0]}else{this.vertices=[this.edges[0].v0,this.edges[0].v1]}if(this.edges[2].v0==this.vertices[0]){this.vertices.push(this.edges[2].v1)}else{this.vertices.push(this.edges[2].v0)}};Triangle.prototype.replaceBy=function(triangles){this.descendants=triangles;this.edges[0].replaceFace(this,triangles[0]);this.edges[1].replaceFace(this,triangles[1]);this.edges[2].replaceFace(this,triangles[2])};Triangle.prototype.CalcCircumcircle=function(){var v0=this.vertices[0];var v1=this.vertices[1];var v2=this.vertices[2];var A=v1.x-v0.x;var B=v1.y-v0.y;var C=v2.x-v0.x;var D=v2.y-v0.y;var E=A*(v0.x+v1.x)+B*(v0.y+v1.y);var F=C*(v0.x+v2.x)+D*(v0.y+v2.y);var G=2*(A*(v2.y-v1.y)-B*(v2.x-v1.x));var cx=(D*E-B*F)/G;var cy=(A*F-C*E)/G;this.center=new Vertex(cx,cy);var dx=this.center.x-v0.x;var dy=this.center.y-v0.y;this.radius_squared=dx*dx+dy*dy};Triangle.prototype.inCircumcircle=function(v){if(this.radius_squared==undefined){this.CalcCircumcircle()}var dx=this.center.x-v.x;var dy=this.center.y-v.y;var dist_squared=dx*dx+dy*dy;return(dist_squared<=this.radius_squared)};Triangle.prototype.interior=function(v){var v0=this.vertices[0];var v1=this.vertices[1];var v2=this.vertices[2];var dotAB=(v.x-v0.x)*(v0.y-v1.y)+(v.y-v0.y)*(v1.x-v0.x);var dotBC=(v.x-v1.x)*(v1.y-v2.y)+(v.y-v1.y)*(v2.x-v1.x);var dotCA=(v.x-v2.x)*(v2.y-v0.y)+(v.y-v2.y)*(v0.x-v2.x);if(dotAB>0||dotBC>0||dotCA>0){return null}else{if(dotAB<0&&dotBC<0&&dotCA<0){return this}else{if(dotAB==0){if(dotBC==0){return this.vertices[1]}else{if(dotCA==0){return this.vertices[0]}}return this.edges[0]}else{if(dotBC==0){if(dotCA==0){return this.vertices[2]}return this.edges[1]}else{if(dotCA==0){return this.edges[2]}}}}}};function Clustering(xMin,yMin,xMax,yMax){this.triangles=[];this.newTriangles=[];this.bbox={x1:xMin,y1:yMin,x2:xMax,y2:yMax};this.CreateBoundingTriangle();this.edges=[];this.vertices=[];this.legalizes=0;this.collapses=0}Clustering.prototype.locate=function(v){if(this.boundingTriangle.descendants.length==0){return this.boundingTriangle}var triangles=this.boundingTriangle.descendants;while(true){for(var i=0;i0){var e=this.deleteEdges.pop();if(e.legal){var l=this.edges.length;var newVertex=this.mergeVertices(e);newVertex.CalculateRadius(resolution);for(var k=l;kt2.u.y){console.info("equal y conflict ...");console.info(e);alert();c++}}else{var v1,v2;if(e.v0.y>e.v1.y){v1=e.v0;v2=e.v1}else{v1=e.v1;v2=e.v0}if(!leftOf(v1,v2,t1.u)){console.info("left right conflict ... left is right");console.info(e);alert();c++}if(leftOf(v1,v2,t2.u)){console.info("left right conflict ... right is left");console.info(e);alert();c++}}}for(i in this.edges){if(this.edges[i].legal){var e=this.edges[i];var tr0=e.leftFace.getTriple(e);var tr1=e.rightFace.getTriple(e);if(!tr0.e_p.legal||!tr0.e_s.legal||!tr1.e_p.legal||!tr1.e_s.legal){console.info(e);console.info("conflict in edge continuity");return}}}};function BinaryHeap(scoreFunction){this.content=[];this.scoreFunction=scoreFunction}BinaryHeap.prototype={push:function(element){this.content.push(element);this.bubbleUp(this.content.length-1)},pop:function(){var result=this.content[0];var end=this.content.pop();if(this.content.length>0){this.content[0]=end;this.sinkDown(0)}return result},remove:function(node){var len=this.content.length;for(var i=0;i0){var parentN=Math.floor((n+1)/2)-1,parent=this.content[parentN];if(this.scoreFunction(element)1){dropdownButton.setAttribute("class","dropdownButtonEnabled")}else{dropdownButton.setAttribute("class","dropdownButtonDisabled")}dropdownButton.onclick=function(){if(elements.length>1){dropdown.changeVisibility()}};dropdownButton.title=title;this.getValue=function(){return this.selectedEntry.innerHTML};var entryMenu=document.createElement("div");entryMenu.setAttribute("class","dropdownMenu");this.div.appendChild(entryMenu);if(typeof maxListHeight!=="undefined"){$(entryMenu).height(maxListHeight)}var entries=document.createElement("dl");var addEntry=function(e){var entry=document.createElement("dt");entry.setAttribute("class","dropdownUnselectedEntry");entry.innerHTML=e.name;entry.onclick=function(){e.onclick();dropdown.changeVisibility();dropdown.changeEntries(e)};entries.appendChild(entry);e.entry=entry};for(var i=0;i0){this.changeEntries(elements[0])}}else{this.changeEntries(elements[index])}};this.changeEntries=function(element){if(this.selectedEntry){this.selectedEntry.setAttribute("class","dropdownUnselectedEntry")}this.selectedEntry=element.entry;this.selectedEntry.setAttribute("class","dropdownSelectedEntry");this.selection.innerHTML="
    "+element.name+"
    "};this.changeVisibility=function(){this.visibility=!this.visibility;if(this.visibility){entryMenu.style.display="block"}else{entryMenu.style.display="none"}}}function MapZoomSlider(parent,orientation){this.parent=parent;var zs=this;this.div=document.createElement("div");this.div.setAttribute("class","sliderStyle-"+orientation);var sliderContainer=document.createElement("div");sliderContainer.setAttribute("class","zoomSliderContainer-"+orientation);var sliderDiv=document.createElement("div");sliderDiv.tabIndex=1;var sliderInputDiv=document.createElement("div");sliderDiv.appendChild(sliderInputDiv);sliderContainer.appendChild(sliderDiv);this.slider=new Slider(sliderDiv,sliderInputDiv,orientation);this.div.appendChild(sliderContainer);var zoomIn=document.createElement("img");zoomIn.src=GeoTemConfig.path+"zoom_in.png";zoomIn.setAttribute("class","zoomSliderIn-"+orientation);zoomIn.onclick=function(){zs.parent.zoom(1)};this.div.appendChild(zoomIn);var zoomOut=document.createElement("img");zoomOut.src=GeoTemConfig.path+"zoom_out.png";zoomOut.setAttribute("class","zoomSliderOut-"+orientation);zoomOut.onclick=function(){zs.parent.zoom(-1)};this.div.appendChild(zoomOut);this.slider.onclick=function(){console.info(zs.slider.getValue())};this.slider.handle.onmousedown=function(){var oldValue=zs.slider.getValue();document.onmouseup=function(){if(!zs.parent.zoom((zs.slider.getValue()-oldValue)/zs.max*zs.levels)){zs.setValue(oldValue)}document.onmouseup=null}};this.setValue=function(value){this.slider.setValue(value/this.levels*this.max)};this.setMaxAndLevels=function(max,levels){this.max=max;this.levels=levels;this.slider.setMaximum(max)};this.setLanguage=function(){zoomIn.title=GeoTemConfig.getString("zoomIn");zoomOut.title=GeoTemConfig.getString("zoomOut");this.slider.handle.title=GeoTemConfig.getString("zoomSlider")}}function MapPopup(parent){this.parentDiv=parent.gui.mapWindow;this.initialize=function(x,y,onclose){var popup=this;this.x=x;this.y=y;this.popupDiv=document.createElement("div");this.popupDiv.setAttribute("class","ddbPopupDiv");this.parentDiv.appendChild(this.popupDiv);this.cancel=document.createElement("div");this.cancel.setAttribute("class","ddbPopupCancel");this.cancel.title=GeoTemConfig.getString("close");this.cancel.onclick=function(){if(typeof onclose!="undefined"){onclose()}popup.reset()};this.input=document.createElement("div");this.input.style.maxWidth=Math.floor(this.parentDiv.offsetWidth*0.75)+"px";this.input.style.maxHeight=Math.floor(this.parentDiv.offsetHeight*0.75)+"px";this.input.setAttribute("class","ddbPopupInput");this.popupDiv.appendChild(this.input);this.popupDiv.appendChild(this.cancel);var peak=document.createElement("div");peak.setAttribute("class","popupPeak");this.popupDiv.appendChild(peak);var topRight=document.createElement("div");topRight.setAttribute("class","popupTopRight");this.popupDiv.appendChild(topRight);var bottomRight=document.createElement("div");bottomRight.setAttribute("class","popupBottomRight");this.popupDiv.appendChild(bottomRight);this.popupRight=document.createElement("div");this.popupRight.setAttribute("class","popupRight");this.popupDiv.appendChild(this.popupRight);this.popupBottom=document.createElement("div");this.popupBottom.setAttribute("class","popupBottom");this.popupDiv.appendChild(this.popupBottom)};this.setContent=function(content){$(this.input).empty();this.visible=true;$(this.input).append(content);this.decorate()};this.reset=function(){$(this.popupDiv).remove();this.visible=false};this.decorate=function(){this.popupRight.style.height=(this.popupDiv.offsetHeight-14)+"px";this.popupBottom.style.width=(this.popupDiv.offsetWidth-22)+"px";this.left=this.x+9;this.top=this.y-10-this.popupDiv.offsetHeight;this.popupDiv.style.left=this.left+"px";this.popupDiv.style.top=this.top+"px";var shiftX=0,shiftY=0;if(this.popupDiv.offsetTopparent.gui.headerWidth-10){shiftX=-1*(parent.gui.headerWidth-10-this.popupDiv.offsetLeft-this.popupDiv.offsetWidth)}parent.shift(shiftX,shiftY)};this.shift=function(x,y){this.left=this.left-this.x+x;this.top=this.top-this.y+y;this.x=x;this.y=y;if(this.left+this.popupDiv.offsetWidth>this.parentDiv.offsetWidth){this.popupDiv.style.left="auto";this.popupDiv.style.right=(this.parentDiv.offsetWidth-this.left-this.popupDiv.offsetWidth)+"px"}else{this.popupDiv.style.right="auto";this.popupDiv.style.left=this.left+"px"}this.popupDiv.style.top=this.top+"px"}}function PlacenamePopup(parent){this.parentDiv=parent.gui.mapWindow;this.createPopup=function(x,y,labels){this.labels=labels;var pnPopup=this;var popup=new MapPopup(parent);var onClose=function(){parent.deselection();pnPopup.reset()};popup.initialize(x,y,onClose);$.extend(this,popup);this.content=document.createElement("div");this.inner=document.createElement("div");this.resultsLabel=document.createElement("div");this.resultsLabel.setAttribute("class","popupDDBResults");this.content.appendChild(this.resultsLabel);this.backward=document.createElement("div");this.backward.setAttribute("class","prevItem");this.content.appendChild(this.backward);this.backward.onclick=function(){pnPopup.descriptionIndex--;pnPopup.showDescription()};this.number=document.createElement("div");this.content.appendChild(this.number);this.number.style.display="none";this.number.style.fontSize="13px";this.forward=document.createElement("div");this.forward.setAttribute("class","nextItem");this.content.appendChild(this.forward);this.forward.onclick=function(){pnPopup.descriptionIndex++;pnPopup.showDescription()};if(parent.options.showDescriptions){this.descriptions=document.createElement("div");this.descriptions.setAttribute("class","descriptions");this.descriptions.onclick=function(){pnPopup.switchToDescriptionMode()}}this.back=document.createElement("div");this.back.setAttribute("class","back");this.popupDiv.appendChild(this.back);this.back.onclick=function(){pnPopup.back.style.display="none";pnPopup.backward.style.display="none";pnPopup.forward.style.display="none";pnPopup.number.style.display="none";pnPopup.showLabels()};this.content.appendChild(this.inner);this.listLabels();this.showLabels()};this.switchToDescriptionMode=function(){this.descriptionIndex=0;this.descriptionContents=this.activeLabel.descriptions;this.number.style.display="inline-block";this.inner.style.minWidth="300px";this.showDescription();this.count=this.activeLabel.weight;this.setCount();this.back.style.display="inline-block"};this.showDescription=function(){$(this.inner).empty();this.inner.appendChild(this.descriptionContents[this.descriptionIndex]);this.setContent(this.content);if(this.descriptionContents.length==1){this.backward.style.display="none";this.forward.style.display="none"}else{if(this.descriptionIndex==0){this.backward.style.display="none"}else{this.backward.style.display="inline-block"}if(this.descriptionIndex==this.descriptionContents.length-1){this.forward.style.display="none"}else{this.forward.style.display="inline-block"}}if(this.descriptionContents.length>1){this.number.innerHTML="#"+(this.descriptionIndex+1)}else{this.number.style.display="none"}this.decorate()};this.setCount=function(){var c=this.count;if(c>1){this.resultsLabel.innerHTML=c+" "+GeoTemConfig.getString("results")}else{this.resultsLabel.innerHTML=c+" "+GeoTemConfig.getString("result")}};this.listLabels=function(){var pnPopup=this;this.labelDivs=[];this.labelCount=0;this.labelsWidth=0;for(var i=0;ithis.labelsWidth){this.labelsWidth=this.input.offsetWidth}this.labels[i].div.setAttribute("style",this.labels[i].allStyle+""+this.labels[i].unselectedStyle);this.labelDivs.push(div);var descriptions=[];for(var j=0;jMapBox | " + +"Data © OpenStreetMap and contributors, CC-BY-SA |"+ +" Tiles and Data © 2014 ISAW" + +" CC-BY 3.0" + }, { name: 'Barrington Roman Empire', url: 'http://pelagios.org/tilesets/imperium/${z}/${x}/${y}.png', type:'XYZ', attribution: "Digital Atlas of the Roman Empire (c) Johan Åhlfeldt, Pelagios" }, + { + name: 'AWMC Base Map', + url: 'http://{a-d}.tiles.mapbox.com/v3/isawnyu.map-knmctlkh/${z}/${x}/${y}.png', + type:'XYZ', + attribution: "Tiles © MapBox | " + +"Data © OpenStreetMap and contributors, CC-BY-SA |"+ +" Tiles and Data © 2013 AWMC" + +" CC-BY-NC 3.0" + }, + { + name: 'AWMC Coast Outline', + url: 'http://{a-d}.tiles.mapbox.com/v3/isawnyu.eoupu8fr/${z}/${x}/${y}.png', + type:'XYZ', + attribution: "Tiles © MapBox | " + +"Data © OpenStreetMap and contributors, CC-BY-SA |"+ +" Tiles and Data © 2013 AWMC" + +" CC-BY-NC 3.0" + }, + { + name: 'AWMC Roads', + url: 'http://{a-d}.tiles.mapbox.com/v3/isawnyu.awmc-roads/${z}/${x}/${y}.png', + type:'XYZ', + attribution: "Tiles © MapBox | " + +"Data © OpenStreetMap and contributors, CC-BY-SA |"+ +" Tiles and Data © 2013 AWMC" + +" CC-BY-NC 3.0" + }, + { + name: 'AWMC Benthos Water', + url: 'http://{a-d}.tiles.mapbox.com/v3/isawnyu.s5l5l8fr/${z}/${x}/${y}.png', + type:'XYZ', + attribution: "Tiles © MapBox | " + +"Data © OpenStreetMap and contributors, CC-BY-SA |"+ +" Tiles and Data © 2013 AWMC" + +" CC-BY-NC 3.0" + }, + { + name: 'AWMC Inland Water', + url: 'http://{a-d}.tiles.mapbox.com/v3/isawnyu.awmc-inland-water/${z}/${x}/${y}.png', + type:'XYZ', + attribution: "Tiles © MapBox | " + +"Data © OpenStreetMap and contributors, CC-BY-SA |"+ +" Tiles and Data © 2013 AWMC" + +" CC-BY-NC 3.0" + }, + { + name: 'AWMC River Polygons', + url: 'http://{a-d}.tiles.mapbox.com/v3/isawnyu.9e3lerk9/${z}/${x}/${y}.png', + type:'XYZ', + attribution: "Tiles © MapBox | " + +"Data © OpenStreetMap and contributors, CC-BY-SA |"+ +" Tiles and Data © 2013 AWMC" + +" CC-BY-NC 3.0" + }, + { + name: 'AWMC Water Course Center Lines', + url: 'http://{a-d}.tiles.mapbox.com/v3/isawnyu.awmc-water-courses/${z}/${x}/${y}.png', + type:'XYZ', + attribution: "Tiles © MapBox | " + +"Data © OpenStreetMap and contributors, CC-BY-SA |"+ +" Tiles and Data © 2013 AWMC" + +" CC-BY-NC 3.0" + }, + { + name: 'AWMC Base Open Water Polygons', + url: 'http://{a-d}.tiles.mapbox.com/v3/isawnyu.h0rdaemi/${z}/${x}/${y}.png', + type:'XYZ', + attribution: "Tiles © MapBox | " + +"Data © OpenStreetMap and contributors, CC-BY-SA |"+ +" Tiles and Data © 2013 AWMC" + +" CC-BY-NC 3.0" + }, + { + name: 'AWMC Archaic water', + url: 'http://{a-d}.tiles.mapbox.com/v3/isawnyu.yyuba9k9/${z}/${x}/${y}.png', + type:'XYZ', + attribution: "Tiles © MapBox | " + +"Data © OpenStreetMap and contributors, CC-BY-SA |"+ +" Tiles and Data © 2013 AWMC" + +" CC-BY-NC 3.0" + }, + { + name: 'AWMC Classical water', + url: 'http://{a-d}.tiles.mapbox.com/v3/isawnyu.l5xc4n29/${z}/${x}/${y}.png', + type:'XYZ', + attribution: "Tiles © MapBox | " + +"Data © OpenStreetMap and contributors, CC-BY-SA |"+ +" Tiles and Data © 2013 AWMC" + +" CC-BY-NC 3.0" + }, + { + name: 'AWMC Hellenistic water', + url: 'http://{a-d}.tiles.mapbox.com/v3/isawnyu.gq0ssjor/${z}/${x}/${y}.png', + type:'XYZ', + attribution: "Tiles © MapBox | " + +"Data © OpenStreetMap and contributors, CC-BY-SA |"+ +" Tiles and Data © 2013 AWMC" + +" CC-BY-NC 3.0" + }, + { + name: 'AWMC Roman water', + url: 'http://{a-d}.tiles.mapbox.com/v3/isawnyu.ymnrvn29/${z}/${x}/${y}.png', + type:'XYZ', + attribution: "Tiles © MapBox | " + +"Data © OpenStreetMap and contributors, CC-BY-SA |"+ +" Tiles and Data © 2013 AWMC" + +" CC-BY-NC 3.0" + }, + { + name: 'AWMC Late Antiquity water', + url: 'http://{a-d}.tiles.mapbox.com/v3/isawnyu.t12it3xr/${z}/${x}/${y}.png', + type:'XYZ', + attribution: "Tiles © MapBox | " + +"Data © OpenStreetMap and contributors, CC-BY-SA |"+ +" Tiles and Data © 2013 AWMC" + +" CC-BY-NC 3.0" + }, { name: 'China 1997', url: 'http://geoserver.mpiwg-berlin.mpg.de/geoserver/China_Monograph_Project/wms', @@ -34262,7 +34388,7 @@ function MapConfig(options) { bingMaps : false, // enable/disable Bing maps (you need to set the Bing Maps API key below) bingApiKey : 'none', // bing maps api key, see informations at http://bingmapsportal.com/ osmMaps : true, // enable/disable OSM maps - osmMapsMapQuest : true, // enable/disable OSM maps with MapQuest tiles + osmMapsMapQuest : false, // enable/disable OSM maps with MapQuest tiles baseLayer : 'Open Street Map', // initial layer to show (e.g. 'Google Streets') resetMap : true, // show/hide map reset button countrySelect : true, // show/hide map country selection control button @@ -35353,11 +35479,19 @@ MapWidget.prototype = { for (var i in layers ) { var layer; if (layers[i].type === "XYZ"){ + var layerURL = layers[i].url; + var layerURLArray = []; + if (layerURL.indexOf("{a-d}") != -1){ + layerURLArray.push(layerURL.replace("{a-d}","a")); + layerURLArray.push(layerURL.replace("{a-d}","b")); + layerURLArray.push(layerURL.replace("{a-d}","c")); + layerURLArray.push(layerURL.replace("{a-d}","d")); + } else { + layerURLArray.push(layerURL); + } layer = new OpenLayers.Layer.XYZ( layers[i].name, - [ - layers[i].url - ], + layerURLArray, { sphericalMercator: true, transitionEffect: "resize",