(function(){jQuery.color={};jQuery.color.make=function(d,e,g,f){var b={};b.r=d||0;b.g=e||0;b.b=g||0;b.a=f!=null?f:1;b.add=function(h,k){for(var l=0;l<h.length;++l){b[h.charAt(l)]+=k}return b.normalize()};b.scale=function(h,k){for(var l=0;l<h.length;++l){b[h.charAt(l)]*=k}return b.normalize()};b.toString=function(){if(b.a>=1){return"rgb("+[b.r,b.g,b.b].join(",")+")"}else{return"rgba("+[b.r,b.g,b.b,b.a].join(",")+")"}};b.normalize=function(){function h(l,k,m){return k<l?l:(k>m?m:k)}b.r=h(0,parseInt(b.r),255);b.g=h(0,parseInt(b.g),255);b.b=h(0,parseInt(b.b),255);b.a=h(0,b.a,1);return b};b.clone=function(){return jQuery.color.make(b.r,b.b,b.g,b.a)};return b.normalize()};jQuery.color.extract=function(d,e){var b;do{b=d.css(e).toLowerCase();if(b!=""&&b!="transparent"){break}d=d.parent()}while(!jQuery.nodeName(d.get(0),"body"));if(b=="rgba(0, 0, 0, 0)"){b="transparent"}return jQuery.color.parse(b)};jQuery.color.parse=function(b){var d,f=jQuery.color.make;if(d=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b)){return f(parseInt(d[1],10),parseInt(d[2],10),parseInt(d[3],10))}if(d=/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(b)){return f(parseInt(d[1],10),parseInt(d[2],10),parseInt(d[3],10),parseFloat(d[4]))}if(d=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(b)){return f(parseFloat(d[1])*2.55,parseFloat(d[2])*2.55,parseFloat(d[3])*2.55)}if(d=/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(b)){return f(parseFloat(d[1])*2.55,parseFloat(d[2])*2.55,parseFloat(d[3])*2.55,parseFloat(d[4]))}if(d=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b)){return f(parseInt(d[1],16),parseInt(d[2],16),parseInt(d[3],16))}if(d=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b)){return f(parseInt(d[1]+d[1],16),parseInt(d[2]+d[2],16),parseInt(d[3]+d[3],16))}var e=jQuery.trim(b).toLowerCase();if(e=="transparent"){return f(255,255,255,0)}else{d=a[e];return f(d[0],d[1],d[2])}};var a={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]}})();(function(d){function b(N,z,A,f){var r=[],J={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},xaxis:{mode:null,transform:null,inverseTransform:null,min:null,max:null,autoscaleMargin:null,ticks:null,tickFormatter:null,labelWidth:null,labelHeight:null,tickDecimals:null,tickSize:null,minTickSize:null,monthNames:null,timeformat:null,twelveHourClock:false},yaxis:{autoscaleMargin:0.02},x2axis:{autoscaleMargin:null},y2axis:{autoscaleMargin:0.02},series:{points:{show:false,radius:3,lineWidth:2,fill:true,fillColor:"#ffffff"},lines:{lineWidth:2,fill:false,fillColor:null,steps:false},bars:{show:false,lineWidth:2,barWidth:1,fill:true,fillColor:null,align:"left",horizontal:false},shadowSize:3},grid:{show:true,aboveData:false,color:"#545454",backgroundColor:null,tickColor:"rgba(0,0,0,0.15)",labelMargin:5,borderWidth:2,borderColor:null,markings:null,markingsColor:"#f4f4f4",markingsLineWidth:2,clickable:false,hoverable:false,autoHighlight:true,mouseActiveRadius:10},hooks:{}},s=null,ae=null,af=null,B=null,al=null,U={xaxis:{},yaxis:{},x2axis:{},y2axis:{}},H={left:0,right:0,top:0,bottom:0},aa=0,t=0,l=0,V=0,o={processOptions:[],processRawData:[],processDatapoints:[],draw:[],bindEvents:[],drawOverlay:[]},h=this;h.setData=I;h.setupGrid=M;h.draw=aj;h.getPlaceholder=function(){return N};h.getCanvas=function(){return s};h.getPlotOffset=function(){return H};h.width=function(){return l};h.height=function(){return V};h.offset=function(){var am=af.offset();am.left+=H.left;am.top+=H.top;return am};h.getData=function(){return r};h.getAxes=function(){return U};h.getOptions=function(){return J};h.highlight=ag;h.unhighlight=Z;h.triggerRedrawOverlay=S;h.pointOffset=function(am){return{left:parseInt(w(am,"xaxis").p2c(+am.x)+H.left),top:parseInt(w(am,"yaxis").p2c(+am.y)+H.top)}};h.hooks=o;E(h);T(A);F();I(z);M();aj();ai();function C(ao,am){am=[h].concat(am);for(var an=0;an<ao.length;++an){ao[an].apply(this,am)}}function E(){for(var am=0;am<f.length;++am){var an=f[am];an.init(h);if(an.options){d.extend(true,J,an.options)}}}function T(am){d.extend(true,J,am);if(J.grid.borderColor==null){J.grid.borderColor=J.grid.color}if(J.xaxis.noTicks&&J.xaxis.ticks==null){J.xaxis.ticks=J.xaxis.noTicks}if(J.yaxis.noTicks&&J.yaxis.ticks==null){J.yaxis.ticks=J.yaxis.noTicks}if(J.grid.coloredAreas){J.grid.markings=J.grid.coloredAreas}if(J.grid.coloredAreasColor){J.grid.markingsColor=J.grid.coloredAreasColor}if(J.lines){d.extend(true,J.series.lines,J.lines)}if(J.points){d.extend(true,J.series.points,J.points)}if(J.bars){d.extend(true,J.series.bars,J.bars)}if(J.shadowSize){J.series.shadowSize=J.shadowSize}for(var an in o){if(J.hooks[an]&&J.hooks[an].length){o[an]=o[an].concat(J.hooks[an])}}C(o.processOptions,[J])}function I(am){r=p(am);x();O()}function p(ap){var an=[];for(var am=0;am<ap.length;++am){var ao=d.extend(true,{},J.series);if(ap[am].data){ao.data=ap[am].data;delete ap[am].data;d.extend(true,ao,ap[am]);ap[am].data=ao.data}else{ao.data=ap[am]}an.push(ao)}return an}function w(ao,am){var an=ao[am];if(!an||an==1){return U[am]}if(typeof an=="number"){return U[am.charAt(0)+an+am.slice(1)]}return an}function x(){var ar;var ay=r.length,am=[],ap=[];for(ar=0;ar<r.length;++ar){var av=r[ar].color;if(av!=null){--ay;if(typeof av=="number"){ap.push(av)}else{am.push(d.color.parse(r[ar].color))}}}for(ar=0;ar<ap.length;++ar){ay=Math.max(ay,ap[ar]+1)}var an=[],aq=0;ar=0;while(an.length<ay){var au;if(J.colors.length==ar){au=d.color.make(100,100,100)}else{au=d.color.parse(J.colors[ar])}var ao=aq%2==1?-1:1;au.scale("rgb",1+ao*Math.ceil(aq/2)*0.2);an.push(au);++ar;if(ar>=J.colors.length){ar=0;++aq}}var at=0,az;for(ar=0;ar<r.length;++ar){az=r[ar];if(az.color==null){az.color=an[at].toString();++at}else{if(typeof az.color=="number"){az.color=an[az.color].toString()}}if(az.lines.show==null){var ax,aw=true;for(ax in az){if(az[ax].show){aw=false;break}}if(aw){az.lines.show=true}}az.xaxis=w(az,"xaxis");az.yaxis=w(az,"yaxis")}}function O(){var az=Number.POSITIVE_INFINITY,at=Number.NEGATIVE_INFINITY,aF,aD,aC,ay,an,au,aE,aA,ar,aq,am,aL,aI,aw;for(am in U){U[am].datamin=az;U[am].datamax=at;U[am].used=false}function ap(aO,aN,aM){if(aN<aO.datamin){aO.datamin=aN}if(aM>aO.datamax){aO.datamax=aM}}for(aF=0;aF<r.length;++aF){au=r[aF];au.datapoints={points:[]};C(o.processRawData,[au,au.data,au.datapoints])}for(aF=0;aF<r.length;++aF){au=r[aF];var aK=au.data,aH=au.datapoints.format;if(!aH){aH=[];aH.push({x:true,number:true,required:true});aH.push({y:true,number:true,required:true});if(au.bars.show){aH.push({y:true,number:true,required:false,defaultValue:0})}au.datapoints.format=aH}if(au.datapoints.pointsize!=null){continue}if(au.datapoints.pointsize==null){au.datapoints.pointsize=aH.length}aA=au.datapoints.pointsize;aE=au.datapoints.points;insertSteps=au.lines.show&&au.lines.steps;au.xaxis.used=au.yaxis.used=true;for(aD=aC=0;aD<aK.length;++aD,aC+=aA){aw=aK[aD];var ao=aw==null;if(!ao){for(ay=0;ay<aA;++ay){aL=aw[ay];aI=aH[ay];if(aI){if(aI.number&&aL!=null){aL=+aL;if(isNaN(aL)){aL=null}}if(aL==null){if(aI.required){ao=true}if(aI.defaultValue!=null){aL=aI.defaultValue}}}aE[aC+ay]=aL}}if(ao){for(ay=0;ay<aA;++ay){aL=aE[aC+ay];if(aL!=null){aI=aH[ay];if(aI.x){ap(au.xaxis,aL,aL)}if(aI.y){ap(au.yaxis,aL,aL)}}aE[aC+ay]=null}}else{if(insertSteps&&aC>0&&aE[aC-aA]!=null&&aE[aC-aA]!=aE[aC]&&aE[aC-aA+1]!=aE[aC+1]){for(ay=0;ay<aA;++ay){aE[aC+aA+ay]=aE[aC+ay]}aE[aC+1]=aE[aC-aA+1];aC+=aA}}}}for(aF=0;aF<r.length;++aF){au=r[aF];C(o.processDatapoints,[au,au.datapoints])}for(aF=0;aF<r.length;++aF){au=r[aF];aE=au.datapoints.points,aA=au.datapoints.pointsize;var av=az,aB=az,ax=at,aG=at;for(aD=0;aD<aE.length;aD+=aA){if(aE[aD]==null){continue}for(ay=0;ay<aA;++ay){aL=aE[aD+ay];aI=aH[ay];if(!aI){continue}if(aI.x){if(aL<av){av=aL}if(aL>ax){ax=aL}}if(aI.y){if(aL<aB){aB=aL}if(aL>aG){aG=aL}}}}if(au.bars.show){var aJ=au.bars.align=="left"?0:-au.bars.barWidth/2;if(au.bars.horizontal){aB+=aJ;aG+=aJ+au.bars.barWidth}else{av+=aJ;ax+=aJ+au.bars.barWidth}}ap(au.xaxis,av,ax);ap(au.yaxis,aB,aG)}for(am in U){if(U[am].datamin==az){U[am].datamin=null}if(U[am].datamax==at){U[am].datamax=null}}}function F(){function am(ao,an){var ap=document.createElement("canvas");ap.width=ao;ap.height=an;if(d.browser.msie){ap=window.G_vmlCanvasManager.initElement(ap)}return ap}aa=N.width();t=N.height();N.html("");if(N.css("position")=="static"){N.css("position","relative")}if(aa<=0||t<=0){throw"Invalid dimensions for plot, width = "+aa+", height = "+t}if(d.browser.msie){window.G_vmlCanvasManager.init_(document)}s=d(am(aa,t)).appendTo(N).get(0);B=s.getContext("2d");ae=d(am(aa,t)).css({position:"absolute",left:0,top:0}).appendTo(N).get(0);al=ae.getContext("2d");al.stroke()}function ai(){af=d([ae,s]);if(J.grid.hoverable){af.mousemove(e)}if(J.grid.clickable){af.click(G)}C(o.bindEvents,[af])}function M(){function an(aw,ax){function ar(ay){return ay}var av,aq,at=ax.transform||ar,au=ax.inverseTransform;if(aw==U.xaxis||aw==U.x2axis){av=aw.scale=l/(at(aw.max)-at(aw.min));aq=at(aw.min);if(at==ar){aw.p2c=function(ay){return(ay-aq)*av}}else{aw.p2c=function(ay){return(at(ay)-aq)*av}}if(!au){aw.c2p=function(ay){return aq+ay/av}}else{aw.c2p=function(ay){return au(aq+ay/av)}}}else{av=aw.scale=V/(at(aw.max)-at(aw.min));aq=at(aw.max);if(at==ar){aw.p2c=function(ay){return(aq-ay)*av}}else{aw.p2c=function(ay){return(aq-at(ay))*av}}if(!au){aw.c2p=function(ay){return aq-ay/av}}else{aw.c2p=function(ay){return au(aq-ay/av)}}}}function ap(au,aw){var at,av=[],ar;au.labelWidth=aw.labelWidth;au.labelHeight=aw.labelHeight;if(au==U.xaxis||au==U.x2axis){if(au.labelWidth==null){au.labelWidth=aa/(au.ticks.length>0?au.ticks.length:1)}if(au.labelHeight==null){av=[];for(at=0;at<au.ticks.length;++at){ar=au.ticks[at].label;if(ar){av.push('<div class="tickLabel" style="float:left;width:'+au.labelWidth+'px">'+ar+"</div>")}}if(av.length>0){var aq=d('<div style="position:absolute;top:-10000px;width:10000px;font-size:smaller">'+av.join("")+'<div style="clear:left"></div></div>').appendTo(N);au.labelHeight=aq.height();aq.remove()}}}else{if(au.labelWidth==null||au.labelHeight==null){for(at=0;at<au.ticks.length;++at){ar=au.ticks[at].label;if(ar){av.push('<div class="tickLabel">'+ar+"</div>")}}if(av.length>0){var aq=d('<div style="position:absolute;top:-10000px;font-size:smaller">'+av.join("")+"</div>").appendTo(N);if(au.labelWidth==null){au.labelWidth=aq.width()}if(au.labelHeight==null){au.labelHeight=aq.find("div").height()}aq.remove()}}}if(au.labelWidth==null){au.labelWidth=0}if(au.labelHeight==null){au.labelHeight=0}}function ao(){var ar=J.grid.borderWidth;for(i=0;i<r.length;++i){ar=Math.max(ar,2*(r[i].points.radius+r[i].points.lineWidth/2))}H.left=H.right=H.top=H.bottom=ar;var aq=J.grid.labelMargin+J.grid.borderWidth;if(U.xaxis.labelHeight>0){H.bottom=Math.max(ar,U.xaxis.labelHeight+aq)}if(U.yaxis.labelWidth>0){H.left=Math.max(ar,U.yaxis.labelWidth+aq)}if(U.x2axis.labelHeight>0){H.top=Math.max(ar,U.x2axis.labelHeight+aq)}if(U.y2axis.labelWidth>0){H.right=Math.max(ar,U.y2axis.labelWidth+aq)}l=aa-H.left-H.right;V=t-H.bottom-H.top}var am;for(am in U){n(U[am],J[am])}if(J.grid.show){for(am in U){g(U[am],J[am]);R(U[am],J[am]);ap(U[am],J[am])}ao()}else{H.left=H.right=H.top=H.bottom=0;l=aa;V=t}for(am in U){an(U[am],J[am])}if(J.grid.show){K()}ak()}function n(ap,at){var ao=+(at.min!=null?at.min:ap.datamin),am=+(at.max!=null?at.max:ap.datamax),ar=am-ao;if(ar==0){var an=am==0?1:0.01;if(at.min==null){ao-=an}if(at.max==null||at.min!=null){am+=an}}else{var aq=at.autoscaleMargin;if(aq!=null){if(at.min==null){ao-=ar*aq;if(ao<0&&ap.datamin!=null&&ap.datamin>=0){ao=0}}if(at.max==null){am+=ar*aq;if(am>0&&ap.datamax!=null&&ap.datamax<=0){am=0}}}}ap.min=ao;ap.max=am}function g(ar,av){var aq;if(typeof av.ticks=="number"&&av.ticks>0){aq=av.ticks}else{if(ar==U.xaxis||ar==U.x2axis){aq=0.3*Math.sqrt(aa)}else{aq=0.3*Math.sqrt(t)}}var aA=(ar.max-ar.min)/aq,aC,aw,ay,az,au,ao,an;if(av.mode=="time"){var ax={second:1000,minute:60*1000,hour:60*60*1000,day:24*60*60*1000,month:30*24*60*60*1000,year:365.2425*24*60*60*1000};var aB=[[1,"second"],[2,"second"],[5,"second"],[10,"second"],[30,"second"],[1,"minute"],[2,"minute"],[5,"minute"],[10,"minute"],[30,"minute"],[1,"hour"],[2,"hour"],[4,"hour"],[8,"hour"],[12,"hour"],[1,"day"],[2,"day"],[3,"day"],[0.25,"month"],[0.5,"month"],[1,"month"],[2,"month"],[3,"month"],[6,"month"],[1,"year"]];var ap=0;if(av.minTickSize!=null){if(typeof av.tickSize=="number"){ap=av.tickSize}else{ap=av.minTickSize[0]*ax[av.minTickSize[1]]}}for(au=0;au<aB.length-1;++au){if(aA<(aB[au][0]*ax[aB[au][1]]+aB[au+1][0]*ax[aB[au+1][1]])/2&&aB[au][0]*ax[aB[au][1]]>=ap){break}}aC=aB[au][0];ay=aB[au][1];if(ay=="year"){ao=Math.pow(10,Math.floor(Math.log(aA/ax.year)/Math.LN10));an=(aA/ax.year)/ao;if(an<1.5){aC=1}else{if(an<3){aC=2}else{if(an<7.5){aC=5}else{aC=10}}}aC*=ao}if(av.tickSize){aC=av.tickSize[0];ay=av.tickSize[1]}aw=function(aF){var aK=[],aI=aF.tickSize[0],aL=aF.tickSize[1],aJ=new Date(aF.min);var aE=aI*ax[aL];if(aL=="second"){aJ.setUTCSeconds(a(aJ.getUTCSeconds(),aI))}if(aL=="minute"){aJ.setUTCMinutes(a(aJ.getUTCMinutes(),aI))}if(aL=="hour"){aJ.setUTCHours(a(aJ.getUTCHours(),aI))}if(aL=="month"){aJ.setUTCMonth(a(aJ.getUTCMonth(),aI))}if(aL=="year"){aJ.setUTCFullYear(a(aJ.getUTCFullYear(),aI))}aJ.setUTCMilliseconds(0);if(aE>=ax.minute){aJ.setUTCSeconds(0)}if(aE>=ax.hour){aJ.setUTCMinutes(0)}if(aE>=ax.day){aJ.setUTCHours(0)}if(aE>=ax.day*4){aJ.setUTCDate(1)}if(aE>=ax.year){aJ.setUTCMonth(0)}var aN=0,aM=Number.NaN,aG;do{aG=aM;aM=aJ.getTime();aK.push({v:aM,label:aF.tickFormatter(aM,aF)});if(aL=="month"){if(aI<1){aJ.setUTCDate(1);var aD=aJ.getTime();aJ.setUTCMonth(aJ.getUTCMonth()+1);var aH=aJ.getTime();aJ.setTime(aM+aN*ax.hour+(aH-aD)*aI);aN=aJ.getUTCHours();aJ.setUTCHours(0)}else{aJ.setUTCMonth(aJ.getUTCMonth()+aI)}}else{if(aL=="year"){aJ.setUTCFullYear(aJ.getUTCFullYear()+aI)}else{aJ.setTime(aM+aE)}}}while(aM<aF.max&&aM!=aG);return aK};az=function(aD,aG){var aI=new Date(aD);if(av.timeformat!=null){return d.plot.formatDate(aI,av.timeformat,av.monthNames)}var aE=aG.tickSize[0]*ax[aG.tickSize[1]];var aF=aG.max-aG.min;var aH=(av.twelveHourClock)?" %p":"";if(aE<ax.minute){fmt="%h:%M:%S"+aH}else{if(aE<ax.day){if(aF<2*ax.day){fmt="%h:%M"+aH}else{fmt="%b %d %h:%M"+aH}}else{if(aE<ax.month){fmt="%b %d"}else{if(aE<ax.year){if(aF<ax.year){fmt="%b"}else{fmt="%b %y"}}else{fmt="%y"}}}}return d.plot.formatDate(aI,fmt,av.monthNames)}}else{var am=av.tickDecimals;var at=-Math.floor(Math.log(aA)/Math.LN10);if(am!=null&&at>am){at=am}ao=Math.pow(10,-at);an=aA/ao;if(an<1.5){aC=1}else{if(an<3){aC=2;if(an>2.25&&(am==null||at+1<=am)){aC=2.5;++at}}else{if(an<7.5){aC=5}else{aC=10}}}aC*=ao;if(av.minTickSize!=null&&aC<av.minTickSize){aC=av.minTickSize}if(av.tickSize!=null){aC=av.tickSize}ar.tickDecimals=Math.max(0,(am!=null)?am:at);aw=function(aF){var aH=[];var aI=a(aF.min,aF.tickSize),aE=0,aD=Number.NaN,aG;do{aG=aD;aD=aI+aE*aF.tickSize;aH.push({v:aD,label:aF.tickFormatter(aD,aF)});++aE}while(aD<aF.max&&aD!=aG);return aH};az=function(aD,aE){return aD.toFixed(aE.tickDecimals)}}ar.tickSize=ay?[aC,ay]:aC;ar.tickGenerator=aw;if(d.isFunction(av.tickFormatter)){ar.tickFormatter=function(aD,aE){return""+av.tickFormatter(aD,aE)}}else{ar.tickFormatter=az}}function R(aq,at){aq.ticks=[];if(!aq.used){return}if(at.ticks==null){aq.ticks=aq.tickGenerator(aq)}else{if(typeof at.ticks=="number"){if(at.ticks>0){aq.ticks=aq.tickGenerator(aq)}}else{if(at.ticks){var ar=at.ticks;if(d.isFunction(ar)){ar=ar({min:aq.min,max:aq.max})}var ap,am;for(ap=0;ap<ar.length;++ap){var an=null;var ao=ar[ap];if(typeof ao=="object"){am=ao[0];if(ao.length>1){an=ao[1]}}else{am=ao}if(an==null){an=aq.tickFormatter(am,aq)}aq.ticks[ap]={v:am,label:an}}}}}if(at.autoscaleMargin!=null&&aq.ticks.length>0){if(at.min==null){aq.min=Math.min(aq.min,aq.ticks[0].v)}if(at.max==null&&aq.ticks.length>1){aq.max=Math.max(aq.max,aq.ticks[aq.ticks.length-1].v)}}}function aj(){B.clearRect(0,0,aa,t);var an=J.grid;if(an.show&&!an.aboveData){v()}for(var am=0;am<r.length;++am){ac(r[am])}C(o.draw,[B]);if(an.show&&an.aboveData){v()}}function q(an,au){var aq=au+"axis",am=au+"2axis",ap,at,ar,ao;if(an[aq]){ap=U[aq];at=an[aq].from;ar=an[aq].to}else{if(an[am]){ap=U[am];at=an[am].from;ar=an[am].to}else{ap=U[aq];at=an[au+"1"];ar=an[au+"2"]}}if(at!=null&&ar!=null&&at>ar){return{from:ar,to:at,axis:ap}}return{from:at,to:ar,axis:ap}}function v(){var aq;B.save();B.translate(H.left,H.top);if(J.grid.backgroundColor){B.fillStyle=u(J.grid.backgroundColor,V,0,"rgba(255, 255, 255, 0)");B.fillRect(0,0,l,V)}var an=J.grid.markings;if(an){if(d.isFunction(an)){an=an({xmin:U.xaxis.min,xmax:U.xaxis.max,ymin:U.yaxis.min,ymax:U.yaxis.max,xaxis:U.xaxis,yaxis:U.yaxis,x2axis:U.x2axis,y2axis:U.y2axis})}for(aq=0;aq<an.length;++aq){var am=an[aq],at=q(am,"x"),ap=q(am,"y");if(at.from==null){at.from=at.axis.min}if(at.to==null){at.to=at.axis.max}if(ap.from==null){ap.from=ap.axis.min}if(ap.to==null){ap.to=ap.axis.max}if(at.to<at.axis.min||at.from>at.axis.max||ap.to<ap.axis.min||ap.from>ap.axis.max){continue}at.from=Math.max(at.from,at.axis.min);at.to=Math.min(at.to,at.axis.max);ap.from=Math.max(ap.from,ap.axis.min);ap.to=Math.min(ap.to,ap.axis.max);if(at.from==at.to&&ap.from==ap.to){continue}at.from=at.axis.p2c(at.from);at.to=at.axis.p2c(at.to);ap.from=ap.axis.p2c(ap.from);ap.to=ap.axis.p2c(ap.to);if(at.from==at.to||ap.from==ap.to){B.beginPath();B.strokeStyle=am.color||J.grid.markingsColor;B.lineWidth=am.lineWidth||J.grid.markingsLineWidth;B.moveTo(at.from,ap.from);B.lineTo(at.to,ap.to);B.stroke()}else{B.fillStyle=am.color||J.grid.markingsColor;B.fillRect(at.from,ap.to,at.to-at.from,ap.from-ap.to)}}}B.lineWidth=1;B.strokeStyle=J.grid.tickColor;B.beginPath();var ao,ar=U.xaxis;for(aq=0;aq<ar.ticks.length;++aq){ao=ar.ticks[aq].v;if(ao<=ar.min||ao>=U.xaxis.max){continue}B.moveTo(Math.floor(ar.p2c(ao))+B.lineWidth/2,0);B.lineTo(Math.floor(ar.p2c(ao))+B.lineWidth/2,V)}ar=U.yaxis;for(aq=0;aq<ar.ticks.length;++aq){ao=ar.ticks[aq].v;if(ao<=ar.min||ao>=ar.max){continue}B.moveTo(0,Math.floor(ar.p2c(ao))+B.lineWidth/2);B.lineTo(l,Math.floor(ar.p2c(ao))+B.lineWidth/2)}ar=U.x2axis;for(aq=0;aq<ar.ticks.length;++aq){ao=ar.ticks[aq].v;if(ao<=ar.min||ao>=ar.max){continue}B.moveTo(Math.floor(ar.p2c(ao))+B.lineWidth/2,-5);B.lineTo(Math.floor(ar.p2c(ao))+B.lineWidth/2,5)}ar=U.y2axis;for(aq=0;aq<ar.ticks.length;++aq){ao=ar.ticks[aq].v;if(ao<=ar.min||ao>=ar.max){continue}B.moveTo(l-5,Math.floor(ar.p2c(ao))+B.lineWidth/2);B.lineTo(l+5,Math.floor(ar.p2c(ao))+B.lineWidth/2)}B.stroke();if(J.grid.borderWidth){var au=J.grid.borderWidth;B.lineWidth=au;B.strokeStyle=J.grid.borderColor;B.strokeRect(-au/2,-au/2,l+au,V+au)}B.restore()}function K(){N.find(".tickLabels").remove();var am=['<div class="tickLabels" style="font-size:smaller;color:'+J.grid.color+'">'];function ao(ar,at){for(var aq=0;aq<ar.ticks.length;++aq){var ap=ar.ticks[aq];if(!ap.label||ap.v<ar.min||ap.v>ar.max){continue}am.push(at(ap,ar))}}var an=J.grid.labelMargin+J.grid.borderWidth;ao(U.xaxis,function(ap,aq){return'<div style="position:absolute;top:'+(H.top+V+an)+"px;left:"+Math.round(H.left+aq.p2c(ap.v)-aq.labelWidth/2)+"px;width:"+aq.labelWidth+'px;text-align:center" class="tickLabel">'+ap.label+"</div>"});ao(U.yaxis,function(ap,aq){return'<div style="position:absolute;top:'+Math.round(H.top+aq.p2c(ap.v)-aq.labelHeight/2)+"px;right:"+(H.right+l+an)+"px;width:"+aq.labelWidth+'px;text-align:right" class="tickLabel">'+ap.label+"</div>"});ao(U.x2axis,function(ap,aq){return'<div style="position:absolute;bottom:'+(H.bottom+V+an)+"px;left:"+Math.round(H.left+aq.p2c(ap.v)-aq.labelWidth/2)+"px;width:"+aq.labelWidth+'px;text-align:center" class="tickLabel">'+ap.label+"</div>"});ao(U.y2axis,function(ap,aq){return'<div style="position:absolute;top:'+Math.round(H.top+aq.p2c(ap.v)-aq.labelHeight/2)+"px;left:"+(H.left+l+an)+"px;width:"+aq.labelWidth+'px;text-align:left" class="tickLabel">'+ap.label+"</div>"});am.push("</div>");N.append(am.join(""))}function ac(am){if(am.lines.show){D(am)}if(am.bars.show){P(am)}if(am.points.show){Q(am)}}function D(ap){function ao(aB,aC,au,aG,aF){var aH=aB.points,av=aB.pointsize,az=null,ay=null;B.beginPath();for(var aA=av;aA<aH.length;aA+=av){var ax=aH[aA-av],aE=aH[aA-av+1],aw=aH[aA],aD=aH[aA+1];if(ax==null||aw==null){continue}if(aE<=aD&&aE<aF.min){if(aD<aF.min){continue}ax=(aF.min-aE)/(aD-aE)*(aw-ax)+ax;aE=aF.min}else{if(aD<=aE&&aD<aF.min){if(aE<aF.min){continue}aw=(aF.min-aE)/(aD-aE)*(aw-ax)+ax;aD=aF.min}}if(aE>=aD&&aE>aF.max){if(aD>aF.max){continue}ax=(aF.max-aE)/(aD-aE)*(aw-ax)+ax;aE=aF.max}else{if(aD>=aE&&aD>aF.max){if(aE>aF.max){continue}aw=(aF.max-aE)/(aD-aE)*(aw-ax)+ax;aD=aF.max}}if(ax<=aw&&ax<aG.min){if(aw<aG.min){continue}aE=(aG.min-ax)/(aw-ax)*(aD-aE)+aE;ax=aG.min}else{if(aw<=ax&&aw<aG.min){if(ax<aG.min){continue}aD=(aG.min-ax)/(aw-ax)*(aD-aE)+aE;aw=aG.min}}if(ax>=aw&&ax>aG.max){if(aw>aG.max){continue}aE=(aG.max-ax)/(aw-ax)*(aD-aE)+aE;ax=aG.max}else{if(aw>=ax&&aw>aG.max){if(ax>aG.max){continue}aD=(aG.max-ax)/(aw-ax)*(aD-aE)+aE;aw=aG.max}}if(ax!=az||aE!=ay){B.moveTo(aG.p2c(ax)+aC,aF.p2c(aE)+au)}az=aw;ay=aD;B.lineTo(aG.p2c(aw)+aC,aF.p2c(aD)+au)}B.stroke()}function aq(aA,aH,aF){var aI=aA.points,au=aA.pointsize,av=Math.min(Math.max(0,aF.min),aF.max),aD,ay=0,aG=false;for(var az=au;az<aI.length;az+=au){var ax=aI[az-au],aE=aI[az-au+1],aw=aI[az],aC=aI[az+1];if(aG&&ax!=null&&aw==null){B.lineTo(aH.p2c(ay),aF.p2c(av));B.fill();aG=false;continue}if(ax==null||aw==null){continue}if(ax<=aw&&ax<aH.min){if(aw<aH.min){continue}aE=(aH.min-ax)/(aw-ax)*(aC-aE)+aE;ax=aH.min}else{if(aw<=ax&&aw<aH.min){if(ax<aH.min){continue}aC=(aH.min-ax)/(aw-ax)*(aC-aE)+aE;aw=aH.min}}if(ax>=aw&&ax>aH.max){if(aw>aH.max){continue}aE=(aH.max-ax)/(aw-ax)*(aC-aE)+aE;ax=aH.max}else{if(aw>=ax&&aw>aH.max){if(ax>aH.max){continue}aC=(aH.max-ax)/(aw-ax)*(aC-aE)+aE;aw=aH.max}}if(!aG){B.beginPath();B.moveTo(aH.p2c(ax),aF.p2c(av));aG=true}if(aE>=aF.max&&aC>=aF.max){B.lineTo(aH.p2c(ax),aF.p2c(aF.max));B.lineTo(aH.p2c(aw),aF.p2c(aF.max));ay=aw;continue}else{if(aE<=aF.min&&aC<=aF.min){B.lineTo(aH.p2c(ax),aF.p2c(aF.min));B.lineTo(aH.p2c(aw),aF.p2c(aF.min));ay=aw;continue}}var aJ=ax,aB=aw;if(aE<=aC&&aE<aF.min&&aC>=aF.min){ax=(aF.min-aE)/(aC-aE)*(aw-ax)+ax;aE=aF.min}else{if(aC<=aE&&aC<aF.min&&aE>=aF.min){aw=(aF.min-aE)/(aC-aE)*(aw-ax)+ax;aC=aF.min}}if(aE>=aC&&aE>aF.max&&aC<=aF.max){ax=(aF.max-aE)/(aC-aE)*(aw-ax)+ax;aE=aF.max}else{if(aC>=aE&&aC>aF.max&&aE<=aF.max){aw=(aF.max-aE)/(aC-aE)*(aw-ax)+ax;aC=aF.max}}if(ax!=aJ){if(aE<=aF.min){aD=aF.min}else{aD=aF.max}B.lineTo(aH.p2c(aJ),aF.p2c(aD));B.lineTo(aH.p2c(ax),aF.p2c(aD))}B.lineTo(aH.p2c(ax),aF.p2c(aE));B.lineTo(aH.p2c(aw),aF.p2c(aC));if(aw!=aB){if(aC<=aF.min){aD=aF.min}else{aD=aF.max}B.lineTo(aH.p2c(aw),aF.p2c(aD));B.lineTo(aH.p2c(aB),aF.p2c(aD))}ay=Math.max(aw,aB)}if(aG){B.lineTo(aH.p2c(ay),aF.p2c(av));B.fill()}}B.save();B.translate(H.left,H.top);B.lineJoin="round";var ar=ap.lines.lineWidth,am=ap.shadowSize;if(ar>0&&am>0){B.lineWidth=am;B.strokeStyle="rgba(0,0,0,0.1)";var at=Math.PI/18;ao(ap.datapoints,Math.sin(at)*(ar/2+am/2),Math.cos(at)*(ar/2+am/2),ap.xaxis,ap.yaxis);B.lineWidth=am/2;ao(ap.datapoints,Math.sin(at)*(ar/2+am/4),Math.cos(at)*(ar/2+am/4),ap.xaxis,ap.yaxis)}B.lineWidth=ar;B.strokeStyle=ap.color;var an=y(ap.lines,ap.color,0,V);if(an){B.fillStyle=an;aq(ap.datapoints,ap.xaxis,ap.yaxis)}if(ar>0){ao(ap.datapoints,0,0,ap.xaxis,ap.yaxis)}B.restore()}function Q(ap){function ar(ax,aw,aE,au,ay,aC,aB){var aD=ax.points,at=ax.pointsize;for(var av=0;av<aD.length;av+=at){var aA=aD[av],az=aD[av+1];if(aA==null||aA<aC.min||aA>aC.max||az<aB.min||az>aB.max){continue}B.beginPath();B.arc(aC.p2c(aA),aB.p2c(az)+au,aw,0,ay,false);if(aE){B.fillStyle=aE;B.fill()}B.stroke()}}B.save();B.translate(H.left,H.top);var aq=ap.lines.lineWidth,an=ap.shadowSize,am=ap.points.radius;if(aq>0&&an>0){var ao=an/2;B.lineWidth=ao;B.strokeStyle="rgba(0,0,0,0.1)";ar(ap.datapoints,am,null,ao+ao/2,Math.PI,ap.xaxis,ap.yaxis);B.strokeStyle="rgba(0,0,0,0.2)";ar(ap.datapoints,am,null,ao/2,Math.PI,ap.xaxis,ap.yaxis)}B.lineWidth=aq;B.strokeStyle=ap.color;ar(ap.datapoints,am,y(ap.points,ap.color),0,2*Math.PI,ap.xaxis,ap.yaxis);B.restore()}function ad(ay,ax,aG,at,aB,ap,an,aw,av,aF,aC){var ao,aE,au,aA,aq,am,az,ar,aD;if(aC){ar=am=az=true;aq=false;ao=aG;aE=ay;aA=ax+at;au=ax+aB;if(aE<ao){aD=aE;aE=ao;ao=aD;aq=true;am=false}}else{aq=am=az=true;ar=false;ao=ay+at;aE=ay+aB;au=aG;aA=ax;if(aA<au){aD=aA;aA=au;au=aD;ar=true;az=false}}if(aE<aw.min||ao>aw.max||aA<av.min||au>av.max){return}if(ao<aw.min){ao=aw.min;aq=false}if(aE>aw.max){aE=aw.max;am=false}if(au<av.min){au=av.min;ar=false}if(aA>av.max){aA=av.max;az=false}ao=aw.p2c(ao);au=av.p2c(au);aE=aw.p2c(aE);aA=av.p2c(aA);if(an){aF.beginPath();aF.moveTo(ao,au);aF.lineTo(ao,aA);aF.lineTo(aE,aA);aF.lineTo(aE,au);aF.fillStyle=an(au,aA);aF.fill()}if(aq||am||az||ar){aF.beginPath();aF.moveTo(ao,au+ap);if(aq){aF.lineTo(ao,aA+ap)}else{aF.moveTo(ao,aA+ap)}if(az){aF.lineTo(aE,aA+ap)}else{aF.moveTo(aE,aA+ap)}if(am){aF.lineTo(aE,au+ap)}else{aF.moveTo(aE,au+ap)}if(ar){aF.lineTo(ao,au+ap)}else{aF.moveTo(ao,au+ap)}aF.stroke()}}function P(ao){function an(av,au,ax,ar,aw,az,ay){var aA=av.points,aq=av.pointsize;for(var at=0;at<aA.length;at+=aq){if(aA[at]==null){continue}ad(aA[at],aA[at+1],aA[at+2],au,ax,ar,aw,az,ay,B,ao.bars.horizontal)}}B.save();B.translate(H.left,H.top);B.lineWidth=ao.bars.lineWidth;B.strokeStyle=ao.color;var am=ao.bars.align=="left"?0:-ao.bars.barWidth/2;var ap=ao.bars.fill?function(aq,ar){return y(ao.bars,ao.color,aq,ar)}:null;an(ao.datapoints,am,am+ao.bars.barWidth,0,ap,ao.xaxis,ao.yaxis);B.restore()}function y(ao,am,an,aq){var ap=ao.fill;if(!ap){return null}if(ao.fillColor){return u(ao.fillColor,an,aq,am)}var ar=d.color.parse(am);ar.a=typeof ap=="number"?ap:0.4;ar.normalize();return ar.toString()}function ak(){N.find(".legend").remove();if(!J.legend.show){return}var ar=[],ap=false,ay=J.legend.labelFormatter,ax,au;for(i=0;i<r.length;++i){ax=r[i];au=ax.label;if(!au){continue}if(i%J.legend.noColumns==0){if(ap){ar.push("</tr>")}ar.push("<tr>");ap=true}if(ay){au=ay(au,ax)}ar.push('<td class="legendColorBox"><div style="border:1px solid '+J.legend.labelBoxBorderColor+';padding:1px"><div style="width:4px;height:0;border:5px solid '+ax.color+';overflow:hidden"></div></div></td><td class="legendLabel">'+au+"</td>")}if(ap){ar.push("</tr>")}if(ar.length==0){return}var aw='<table style="font-size:smaller;color:'+J.grid.color+'">'+ar.join("")+"</table>";if(J.legend.container!=null){d(J.legend.container).html(aw)}else{var at="",an=J.legend.position,ao=J.legend.margin;if(ao[0]==null){ao=[ao,ao]}if(an.charAt(0)=="n"){at+="top:"+(ao[1]+H.top)+"px;"}else{if(an.charAt(0)=="s"){at+="bottom:"+(ao[1]+H.bottom)+"px;"}}if(an.charAt(1)=="e"){at+="right:"+(ao[0]+H.right)+"px;"}else{if(an.charAt(1)=="w"){at+="left:"+(ao[0]+H.left)+"px;"}}var av=d('<div class="legend">'+aw.replace('style="','style="position:absolute;'+at+";")+"</div>").appendTo(N);if(J.legend.backgroundOpacity!=0){var aq=J.legend.backgroundColor;if(aq==null){aq=J.grid.backgroundColor;if(aq&&typeof aq=="string"){aq=d.color.parse(aq)}else{aq=d.color.extract(av,"background-color")}aq.a=1;aq=aq.toString()}var am=av.children();d('<div style="position:absolute;width:'+am.width()+"px;height:"+am.height()+"px;"+at+"background-color:"+aq+';"> </div>').prependTo(av).css("opacity",J.legend.backgroundOpacity)}}}var Y=[],m=null;function ah(au,ar,ao){var aA=J.grid.mouseActiveRadius,aM=aA*aA+1,aK=null,aD=false,aI,aG;for(aI=0;aI<r.length;++aI){if(!ao(r[aI])){continue}var aB=r[aI],at=aB.xaxis,aq=aB.yaxis,aH=aB.datapoints.points,aF=aB.datapoints.pointsize,aC=at.c2p(au),az=aq.c2p(ar),an=aA/at.scale,am=aA/aq.scale;if(aB.lines.show||aB.points.show){for(aG=0;aG<aH.length;aG+=aF){var aw=aH[aG],av=aH[aG+1];if(aw==null){continue}if(aw-aC>an||aw-aC<-an||av-az>am||av-az<-am){continue}var ay=Math.abs(at.p2c(aw)-au),ax=Math.abs(aq.p2c(av)-ar),aE=ay*ay+ax*ax;if(aE<=aM){aM=aE;aK=[aI,aG/aF]}}}if(aB.bars.show&&!aK){var ap=aB.bars.align=="left"?0:-aB.bars.barWidth/2,aJ=ap+aB.bars.barWidth;for(aG=0;aG<aH.length;aG+=aF){var aw=aH[aG],av=aH[aG+1],aL=aH[aG+2];if(aw==null){continue}if(r[aI].bars.horizontal?(aC<=Math.max(aL,aw)&&aC>=Math.min(aL,aw)&&az>=av+ap&&az<=av+aJ):(aC>=aw+ap&&aC<=aw+aJ&&az>=Math.min(aL,av)&&az<=Math.max(aL,av))){aK=[aI,aG/aF]}}}}if(aK){aI=aK[0];aG=aK[1];aF=r[aI].datapoints.pointsize;return{datapoint:r[aI].datapoints.points.slice(aG*aF,(aG+1)*aF),dataIndex:aG,series:r[aI],seriesIndex:aI}}return null}function e(am){if(J.grid.hoverable){k("plothover",am,function(an){return an.hoverable!=false})}}function G(am){k("plotclick",am,function(an){return an.clickable!=false})}function k(an,am,ao){var ap=af.offset(),av={pageX:am.pageX,pageY:am.pageY},at=am.pageX-ap.left-H.left,aq=am.pageY-ap.top-H.top;if(U.xaxis.used){av.x=U.xaxis.c2p(at)}if(U.yaxis.used){av.y=U.yaxis.c2p(aq)}if(U.x2axis.used){av.x2=U.x2axis.c2p(at)}if(U.y2axis.used){av.y2=U.y2axis.c2p(aq)}var aw=ah(at,aq,ao);if(aw){aw.pageX=parseInt(aw.series.xaxis.p2c(aw.datapoint[0])+ap.left+H.left);aw.pageY=parseInt(aw.series.yaxis.p2c(aw.datapoint[1])+ap.top+H.top)}if(J.grid.autoHighlight){for(var ar=0;ar<Y.length;++ar){var au=Y[ar];if(au.auto==an&&!(aw&&au.series==aw.series&&au.point==aw.datapoint)){Z(au.series,au.point)}}if(aw){ag(aw.series,aw.datapoint,an)}}N.trigger(an,[av,aw])}function S(){if(!m){m=setTimeout(X,30)}}function X(){m=null;al.save();al.clearRect(0,0,aa,t);al.translate(H.left,H.top);var an,am;for(an=0;an<Y.length;++an){am=Y[an];if(am.series.bars.show){ab(am.series,am.point)}else{W(am.series,am.point)}}al.restore();C(o.drawOverlay,[al])}function ag(ao,am,ap){if(typeof ao=="number"){ao=r[ao]}if(typeof am=="number"){am=ao.data[am]}var an=L(ao,am);if(an==-1){Y.push({series:ao,point:am,auto:ap});S()}else{if(!ap){Y[an].auto=false}}}function Z(ao,am){if(ao==null&&am==null){Y=[];S()}if(typeof ao=="number"){ao=r[ao]}if(typeof am=="number"){am=ao.data[am]}var an=L(ao,am);if(an!=-1){Y.splice(an,1);S()}}function L(ao,ap){for(var am=0;am<Y.length;++am){var an=Y[am];if(an.series==ao&&an.point[0]==ap[0]&&an.point[1]==ap[1]){return am}}return -1}function W(ap,ao){var an=ao[0],au=ao[1],at=ap.xaxis,ar=ap.yaxis;if(an<at.min||an>at.max||au<ar.min||au>ar.max){return}var aq=ap.points.radius+ap.points.lineWidth/2;al.lineWidth=aq;al.strokeStyle=d.color.parse(ap.color).scale("a",0.5).toString();var am=1.5*aq;al.beginPath();al.arc(at.p2c(an),ar.p2c(au),am,0,2*Math.PI,false);al.stroke()}function ab(ap,am){al.lineWidth=ap.bars.lineWidth;al.strokeStyle=d.color.parse(ap.color).scale("a",0.5).toString();var ao=d.color.parse(ap.color).scale("a",0.5).toString();var an=ap.bars.align=="left"?0:-ap.bars.barWidth/2;ad(am[0],am[1],am[2]||0,an,an+ap.bars.barWidth,0,function(){return ao},ap.xaxis,ap.yaxis,al,ap.bars.horizontal)}function u(ao,an,at,aq){if(typeof ao=="string"){return ao}else{var ar=B.createLinearGradient(0,at,0,an);for(var ap=0,am=ao.colors.length;ap<am;++ap){var au=ao.colors[ap];if(typeof au!="string"){au=d.color.parse(aq).scale("rgb",au.brightness);au.a*=au.opacity;au=au.toString()}ar.addColorStop(ap/(am-1),au)}return ar}}}d.plot=function(h,f,e){var g=new b(d(h),f,e,d.plot.plugins);return g};d.plot.plugins=[];d.plot.formatDate=function(k,f,h){var o=function(q){q=""+q;return q.length==1?"0"+q:q};var e=[];var p=false;var n=k.getUTCHours();var l=n<12;if(h==null){h=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}if(f.search(/%p|%P/)!=-1){if(n>12){n=n-12}else{if(n==0){n=12}}}for(var g=0;g<f.length;++g){var m=f.charAt(g);if(p){switch(m){case"h":m=""+n;break;case"H":m=o(n);break;case"M":m=o(k.getUTCMinutes());break;case"S":m=o(k.getUTCSeconds());break;case"d":m=""+k.getUTCDate();break;case"m":m=""+(k.getUTCMonth()+1);break;case"y":m=""+k.getUTCFullYear();break;case"b":m=""+h[k.getUTCMonth()];break;case"p":m=(l)?("am"):("pm");break;case"P":m=(l)?("AM"):("PM");break}e.push(m);p=false}else{if(m=="%"){p=true}else{e.push(m)}}}return e.join("")};function a(f,e){return e*Math.floor(f/e)}})(jQuery);(function(b){b.fn.ajaxSubmit=function(t){if(!this.length){a("ajaxSubmit: skipping submit process - no element selected");return this}if(typeof t=="function"){t={success:t}}var f=this.attr("action")||window.location.href;f=(f.match(/^([^#]+)/)||[])[1];f=f||"";t=b.extend({url:f,type:this.attr("method")||"GET"},t||{});var v={};this.trigger("form-pre-serialize",[this,t,v]);if(v.veto){a("ajaxSubmit: submit vetoed via form-pre-serialize trigger");return this}if(t.beforeSerialize&&t.beforeSerialize(this,t)===false){a("ajaxSubmit: submit aborted via beforeSerialize callback");return this}var o=this.formToArray(t.semantic);if(t.data){t.extraData=t.data;for(var g in t.data){if(t.data[g] instanceof Array){for(var h in t.data[g]){o.push({name:g,value:t.data[g][h]})}}else{o.push({name:g,value:t.data[g]})}}}if(t.beforeSubmit&&t.beforeSubmit(o,this,t)===false){a("ajaxSubmit: submit aborted via beforeSubmit callback");return this}this.trigger("form-submit-validate",[o,this,t,v]);if(v.veto){a("ajaxSubmit: submit vetoed via form-submit-validate trigger");return this}var e=b.param(o);if(t.type.toUpperCase()=="GET"){t.url+=(t.url.indexOf("?")>=0?"&":"?")+e;t.data=null}else{t.data=e}var u=this,m=[];if(t.resetForm){m.push(function(){u.resetForm()})}if(t.clearForm){m.push(function(){u.clearForm()})}if(!t.dataType&&t.target){var r=t.success||function(){};m.push(function(k){b(t.target).html(k).each(r,arguments)})}else{if(t.success){m.push(t.success)}}t.success=function(w,n){for(var q=0,k=m.length;q<k;q++){m[q].apply(t,[w,n,u])}};var d=b("input:file",this).fieldValue();var s=false;for(var l=0;l<d.length;l++){if(d[l]){s=true}}if(t.iframe||s){if(t.closeKeepAlive){b.get(t.closeKeepAlive,p)}else{p()}}else{b.ajax(t)}this.trigger("form-submit-notify",[this,t]);return this;function p(){var y=u[0];if(b(":input[name=submit]",y).length){alert('Error: Form elements must not be named "submit".');return}var w=b.extend({},b.ajaxSettings,t);var I=b.extend(true,{},b.extend(true,{},b.ajaxSettings),w);var x="jqFormIO"+(new Date().getTime());var E=b('<iframe id="'+x+'" name="'+x+'" src="about:blank" />');var G=E[0];E.css({position:"absolute",top:"-1000px",left:"-1000px"});var H={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(){this.aborted=1;E.attr("src","about:blank")}};var F=w.global;if(F&&!b.active++){b.event.trigger("ajaxStart")}if(F){b.event.trigger("ajaxSend",[H,w])}if(I.beforeSend&&I.beforeSend(H,I)===false){I.global&&b.active--;return}if(H.aborted){return}var q=0;var A=0;var k=y.clk;if(k){var z=k.name;if(z&&!k.disabled){t.extraData=t.extraData||{};t.extraData[z]=k.value;if(k.type=="image"){t.extraData[name+".x"]=y.clk_x;t.extraData[name+".y"]=y.clk_y}}}setTimeout(function(){var L=u.attr("target"),J=u.attr("action");y.setAttribute("target",x);if(y.getAttribute("method")!="POST"){y.setAttribute("method","POST")}if(y.getAttribute("action")!=w.url){y.setAttribute("action",w.url)}if(!t.skipEncodingOverride){u.attr({encoding:"multipart/form-data",enctype:"multipart/form-data"})}if(w.timeout){setTimeout(function(){A=true;B()},w.timeout)}var K=[];try{if(t.extraData){for(var M in t.extraData){K.push(b('<input type="hidden" name="'+M+'" value="'+t.extraData[M]+'" />').appendTo(y)[0])}}E.appendTo("body");G.attachEvent?G.attachEvent("onload",B):G.addEventListener("load",B,false);y.submit()}finally{y.setAttribute("action",J);L?y.setAttribute("target",L):u.removeAttr("target");b(K).remove()}},10);var C=0;function B(){if(q++){return}G.detachEvent?G.detachEvent("onload",B):G.removeEventListener("load",B,false);var J=true;try{if(A){throw"timeout"}var K,M;M=G.contentWindow?G.contentWindow.document:G.contentDocument?G.contentDocument:G.document;if((M.body==null||M.body.innerHTML=="")&&!C){C=1;q--;setTimeout(B,100);return}H.responseText=M.body?M.body.innerHTML:null;H.responseXML=M.XMLDocument?M.XMLDocument:M;H.getResponseHeader=function(O){var N={"content-type":w.dataType};return N[O]};if(w.dataType=="json"||w.dataType=="script"){var n=M.getElementsByTagName("textarea")[0];H.responseText=n?n.value:H.responseText}else{if(w.dataType=="xml"&&!H.responseXML&&H.responseText!=null){H.responseXML=D(H.responseText)}}K=b.httpData(H,w.dataType)}catch(L){J=false;b.handleError(w,H,"error",L)}if(J){w.success(K,"success");if(F){b.event.trigger("ajaxSuccess",[H,w])}}if(F){b.event.trigger("ajaxComplete",[H,w])}if(F&&!--b.active){b.event.trigger("ajaxStop")}if(w.complete){w.complete(H,J?"success":"error")}setTimeout(function(){E.remove();H.responseXML=null},100)}function D(n,J){if(window.ActiveXObject){J=new ActiveXObject("Microsoft.XMLDOM");J.async="false";J.loadXML(n)}else{J=(new DOMParser()).parseFromString(n,"text/xml")}return(J&&J.documentElement&&J.documentElement.tagName!="parsererror")?J:null}}};b.fn.ajaxForm=function(d){return this.ajaxFormUnbind().bind("submit.form-plugin",function(){b(this).ajaxSubmit(d);return false}).each(function(){b(":submit,input:image",this).bind("click.form-plugin",function(g){var f=this.form;f.clk=this;if(this.type=="image"){if(g.offsetX!=undefined){f.clk_x=g.offsetX;f.clk_y=g.offsetY}else{if(typeof b.fn.offset=="function"){var h=b(this).offset();f.clk_x=g.pageX-h.left;f.clk_y=g.pageY-h.top}else{f.clk_x=g.pageX-this.offsetLeft;f.clk_y=g.pageY-this.offsetTop}}}setTimeout(function(){f.clk=f.clk_x=f.clk_y=null},10)})})};b.fn.ajaxFormUnbind=function(){this.unbind("submit.form-plugin");return this.each(function(){b(":submit,input:image",this).unbind("click.form-plugin")})};b.fn.formToArray=function(r){var q=[];if(this.length==0){return q}var e=this[0];var k=r?e.getElementsByTagName("*"):e.elements;if(!k){return q}for(var l=0,o=k.length;l<o;l++){var f=k[l];var g=f.name;if(!g){continue}if(r&&e.clk&&f.type=="image"){if(!f.disabled&&e.clk==f){q.push({name:g+".x",value:e.clk_x},{name:g+".y",value:e.clk_y})}continue}var s=b.fieldValue(f,true);if(s&&s.constructor==Array){for(var h=0,d=s.length;h<d;h++){q.push({name:g,value:s[h]})}}else{if(s!==null&&typeof s!="undefined"){q.push({name:g,value:s})}}}if(!r&&e.clk){var m=e.getElementsByTagName("input");for(var l=0,o=m.length;l<o;l++){var p=m[l];var g=p.name;if(g&&!p.disabled&&p.type=="image"&&e.clk==p){q.push({name:g+".x",value:e.clk_x},{name:g+".y",value:e.clk_y})}}}return q};b.fn.formSerialize=function(d){return b.param(this.formToArray(d))};b.fn.fieldSerialize=function(e){var d=[];this.each(function(){var k=this.name;if(!k){return}var g=b.fieldValue(this,e);if(g&&g.constructor==Array){for(var h=0,f=g.length;h<f;h++){d.push({name:k,value:g[h]})}}else{if(g!==null&&typeof g!="undefined"){d.push({name:this.name,value:g})}}});return b.param(d)};b.fn.fieldValue=function(k){for(var h=[],f=0,d=this.length;f<d;f++){var g=this[f];var e=b.fieldValue(g,k);if(e===null||typeof e=="undefined"||(e.constructor==Array&&!e.length)){continue}e.constructor==Array?b.merge(h,e):h.push(e)}return h};b.fieldValue=function(d,l){var f=d.name,r=d.type,s=d.tagName.toLowerCase();if(typeof l=="undefined"){l=true}if(l&&(!f||d.disabled||r=="reset"||r=="button"||(r=="checkbox"||r=="radio")&&!d.checked||(r=="submit"||r=="image")&&d.form&&d.form.clk!=d||s=="select"&&d.selectedIndex==-1)){return null}if(s=="select"){var m=d.selectedIndex;if(m<0){return null}var p=[],e=d.options;var h=(r=="select-one");var o=(h?m+1:e.length);for(var g=(h?m:0);g<o;g++){var k=e[g];if(k.selected){var q=k.value;if(!q){q=(k.attributes&&k.attributes.value&&!(k.attributes.value.specified))?k.text:k.value}if(h){return q}p.push(q)}}return p}return d.value};b.fn.clearForm=function(){return this.each(function(){b("input,select,textarea",this).clearFields()})};b.fn.clearFields=b.fn.clearInputs=function(){return this.each(function(){var e=this.type,d=this.tagName.toLowerCase();if(e=="text"||e=="password"||d=="textarea"){this.value=""}else{if(e=="checkbox"||e=="radio"){this.checked=false}else{if(d=="select"){this.selectedIndex=-1}}}})};b.fn.resetForm=function(){return this.each(function(){if(typeof this.reset=="function"||(typeof this.reset=="object"&&!this.reset.nodeType)){this.reset()}})};b.fn.enable=function(d){if(d==undefined){d=true}return this.each(function(){this.disabled=!d})};b.fn.selected=function(d){if(d==undefined){d=true}return this.each(function(){var e=this.type;if(e=="checkbox"||e=="radio"){this.checked=d}else{if(this.tagName.toLowerCase()=="option"){var f=b(this).parent("select");if(d&&f[0]&&f[0].type=="select-one"){f.find("option").selected(false)}this.selected=d}}})};function a(){if(b.fn.ajaxSubmit.debug&&window.console&&window.console.log){window.console.log("[jquery.form] "+Array.prototype.join.call(arguments,""))}}})(jQuery);(function(a){a.fn.lavaLamp=function(b){b=a.extend({fx:"linear",speed:500,click:function(){}},b||{});return this.each(function(){var d=a(this),g=function(){},k=a('<li class="back"><div class="left"></div></li>').appendTo(d),l=a("li",this),h=a("li.current",this)[0]||a(l[0]).addClass("current")[0];l.not(".back").hover(function(){e(this)},g);a(this).hover(g,function(){e(h)});l.click(function(m){f(this);return b.click.apply(this,[m,this])});f(h);function f(m){k.css({left:m.offsetLeft+"px",width:m.offsetWidth+"px"});h=m}function e(m){k.each(function(){a(this).dequeue()}).animate({width:m.offsetWidth,left:m.offsetLeft},b.speed,b.fx)}})}})(jQuery);jQuery.fn.selectToUISlider=function(g){var m=jQuery(this);var s=jQuery.extend({labels:3,tooltip:true,tooltipSrc:"text",labelSrc:"value",sliderOptions:null},g);var k=(function(){var t=[];m.each(function(){t.push("handle_"+jQuery(this).attr("id"))});return t})();var a=(function(){var t=[];m.eq(0).find("option").each(function(){t.push({value:jQuery(this).attr("value"),text:jQuery(this).text()})});return t})();var b=(function(){if(m.eq(0).find("optgroup").size()>0){var t=[];m.eq(0).find("optgroup").each(function(u){t[u]={};t[u].label=jQuery(this).attr("label");t[u].options=[];jQuery(this).find("option").each(function(){t[u].options.push({text:jQuery(this).text(),value:jQuery(this).attr("value")})})});return t}else{return null}})();function l(t){return t.constructor==Array}function o(t){return(s.tooltipSrc=="text")?a[t].text:a[t].value}var r={step:1,min:0,orientation:"horizontal",max:a.length-1,range:m.length>1,slide:function(x,w){var v=jQuery(w.handle);var u=o(w.value);v.attr("aria-valuetext",u).attr("aria-valuenow",w.value).find(".ui-slider-tooltip .ttContent").text(u);var t=jQuery("#"+v.attr("id").split("handle_")[1]);t.find("option").eq(w.value).attr("selected","selected")},values:(function(){var t=[];m.each(function(){t.push(jQuery(this).get(0).selectedIndex)});return t})()};s.sliderOptions=(g)?jQuery.extend(r,g.sliderOptions):r;m.bind("change keyup click",function(){var u=jQuery(this).get(0).selectedIndex;var t=jQuery("#handle_"+jQuery(this).attr("id"));var v=t.data("handleNum");t.parents(".ui-slider:eq(0)").slider("values",v,u)});var e=jQuery("<div></div>");m.each(function(u){var v="";var x=jQuery("label[for="+jQuery(this).attr("id")+"]");var w=(x.size()>0)?"Slider control for "+x.text()+"":"";var t=x.attr("id")||x.attr("id","label_"+k[u]).attr("id");if(s.tooltip==false){v=' style="display: none;"'}jQuery('<a href="#" tabindex="0" id="'+k[u]+'" class="ui-slider-handle" role="slider" aria-labelledby="'+t+'" aria-valuemin="'+s.sliderOptions.min+'" aria-valuemax="'+s.sliderOptions.max+'" aria-valuenow="'+s.sliderOptions.values[u]+'" aria-valuetext="'+o(s.sliderOptions.values[u])+'" ><span class="screenReaderContext">'+w+'</span><span class="ui-slider-tooltip ui-widget-content ui-corner-all"'+v+'><span class="ttContent"></span><span class="ui-tooltip-pointer-down ui-widget-content"><span class="ui-tooltip-pointer-down-inner"></span></span></span></a>').data("handleNum",u).appendTo(e)});if(b){var d=0;var f=e.append('<dl class="ui-slider-scale ui-helper-reset" role="presentation"></dl>').find(".ui-slider-scale:eq(0)");jQuery(b).each(function(u){f.append('<dt style="width: '+(100/b.length).toFixed(2)+"%; left:"+(u/(b.length-1)*100).toFixed(2)+'%"><span>'+this.label+"</span></dt>");var t=this.options;jQuery(this.options).each(function(v){var w=(d==a.length-1||d==0)?'style="display: none;"':"";var x=(s.labelSrc=="text")?t[v].text:t[v].value;f.append('<dd style="left:'+p(d)+'"><span class="ui-slider-label">'+x+'</span><span class="ui-slider-tic ui-widget-content"'+w+"></span></dd>");d++})})}else{var f=e.append('<ol class="ui-slider-scale ui-helper-reset" role="presentation"></ol>').find(".ui-slider-scale:eq(0)");jQuery(a).each(function(t){var u=(t==a.length-1||t==0)?'style="display: none;"':"";var v=(s.labelSrc=="text")?this.text:this.value;f.append('<li style="left:'+p(t)+'"><span class="ui-slider-label">'+v+'</span><span class="ui-slider-tic ui-widget-content"'+u+"></span></li>")})}function p(t){return(t/(a.length-1)*100).toFixed(2)+"%"}if(s.labels>1){e.find(".ui-slider-scale li:last span.ui-slider-label, .ui-slider-scale dd:last span.ui-slider-label").addClass("ui-slider-label-show")}var n=Math.max(1,Math.round(a.length/s.labels));for(var h=0;h<a.length;h+=n){if((a.length-h)>n){e.find(".ui-slider-scale li:eq("+h+") span.ui-slider-label, .ui-slider-scale dd:eq("+h+") span.ui-slider-label").addClass("ui-slider-label-show")}}e.find(".ui-slider-scale dt").each(function(t){jQuery(this).css({left:((100/(b.length))*t).toFixed(2)+"%"})});e.insertAfter(jQuery(this).eq(this.length-1)).slider(s.sliderOptions).attr("role","application").find(".ui-slider-label").each(function(){jQuery(this).css("marginLeft",-jQuery(this).width()/2)});e.find(".ui-tooltip-pointer-down-inner").each(function(){var u=jQuery(".ui-tooltip-pointer-down-inner").css("borderTopWidth");var t=jQuery(this).parents(".ui-slider-tooltip").css("backgroundColor");jQuery(this).css("border-top",u+" solid "+t)});var q=e.slider("values");if(l(q)){jQuery(q).each(function(t){e.find(".ui-slider-tooltip .ttContent").eq(t).text(o(this))})}else{e.find(".ui-slider-tooltip .ttContent").eq(0).text(o(q))}return this};if(!this.JSON){JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z"};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==="string"){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}})();function jsonT(self,rules){var T={output:false,init:function(){for(var rule in rules){if(rule.substr(0,4)!="self"){rules["self."+rule]=rules[rule]}}return this},apply:function(expr){var trf=function(s){return s.replace(/{([A-Za-z0-9_\$\.\[\]\'@\(\)]+)}/g,function($0,$1){return T.processArg($1,expr)})},x=expr.replace(/\[[0-9]+\]/g,"[*]"),res;if(x in rules){if(typeof(rules[x])=="string"){res=trf(rules[x])}else{if(typeof(rules[x])=="function"){res=trf(rules[x](eval(expr)).toString())}}}else{res=T.eval(expr)}return res},processArg:function(arg,parentExpr){var expand=function(a,e){return(e=a.replace(/^\$/,e)).substr(0,4)!="self"?("self."+e):e},res="";T.output=true;if(arg.charAt(0)=="@"){res=eval(arg.replace(/@([A-za-z0-9_]+)\(([A-Za-z0-9_\$\.\[\]\']+)\)/,function($0,$1,$2){return"rules['self."+$1+"']("+expand($2,parentExpr)+")"}))}else{if(arg!="$"){res=T.apply(expand(arg,parentExpr))}else{res=T.eval(parentExpr)}}T.output=false;return res},eval:function(expr){var v=eval(expr),res="";if(typeof(v)!="undefined"){if(v instanceof Array){for(var i=0;i<v.length;i++){if(typeof(v[i])!="undefined"){res+=T.apply(expr+"["+i+"]")}}}else{if(typeof(v)=="object"){for(var m in v){if(typeof(v[m])!="undefined"){res+=T.apply(expr+"."+m)}}}else{if(T.output){res+=v}}}}return res}};return T.init().apply("self")}function OffsetableMarker(b,h,g,a,f,e,d){this.poi=b;this.color=g||"";this.width=a||1;this.opacity=f||1;this.offsetx=e||0;this.offsety=d||0;this.line=null;if(!h){h={}}h.bouncy=false;h.dragCrossMove=true;h.bounceGravity=10000;GMarker.call(this,b,h)}OffsetableMarker.prototype=new GMarker(new GLatLng(0,0));OffsetableMarker.prototype.initialize=function(d){GMarker.prototype.initialize.call(this,d);this.map=d;if((this.offsetx!=0)||(this.offsety!=0)){var b=d.fromLatLngToDivPixel(this.poi);b.x+=this.offsetx;b.y+=this.offsety;this.setLatLng(d.fromDivPixelToLatLng(b))}var a=this;GEvent.addListener(this,"dragstart",this.onDragStart);GEvent.addListener(this,"drag",this.onDrag);GEvent.addListener(this,"dragend",this.onDrag);GEvent.addListener(this,"dblclick",this.onDblclick);GEvent.addListener(this.map,"zoomend",function(e,g){var f=d.fromLatLngToDivPixel(a.poi);f.x+=a.offsetx;f.y+=a.offsety;a.setLatLng(d.fromDivPixelToLatLng(f));a.redraw.call(a)})};OffsetableMarker.prototype.onDragStart=function(){if(!this.map.getInfoWindow().isHidden()){this.map.closeInfoWindow()}};OffsetableMarker.prototype.onDrag=function(){var a=this.map.fromLatLngToDivPixel(this.getPoint());var b=this.map.fromLatLngToDivPixel(this.poi);this.offsetx=a.x-b.x;this.offsety=a.y-b.y;this.redraw()};OffsetableMarker.prototype.onDblclick=function(){if(!this.map.getInfoWindow().isHidden()){this.map.closeInfoWindow()}this.setLatLng(this.poi);this.remLine();this.offsetx=0;this.offsety=0;var a=this;window.setTimeout(function(){a.onDragStart.call(a)},100);return false};OffsetableMarker.prototype.remove=function(){this.remLine();GMarker.prototype.remove.call(this)};OffsetableMarker.prototype.hide=function(){this.remLine();GMarker.prototype.hide.call(this)};OffsetableMarker.prototype.remLine=function(){if(this.line!=null){this.map.removeOverlay(this.line);this.line=null}};OffsetableMarker.prototype.copy=function(){return new OffsetableMarker(this.poi,this.opts,this.color,this.width,this.opacity,this.dx,this.offsety)};OffsetableMarker.prototype.redraw=function(a){GMarker.prototype.redraw.call(this,a)};function createCookie(d,e,f){if(f){var b=new Date();b.setTime(b.getTime()+(f*24*60*60*1000));var a="; expires="+b.toGMTString()}else{var a=""}document.cookie=d+"="+e+a+"; path=/"}function readCookie(b){var e=b+"=";var a=document.cookie.split(";");for(var d=0;d<a.length;d++){var f=a[d];while(f.charAt(0)==" "){f=f.substring(1,f.length)}if(f.indexOf(e)==0){return f.substring(e.length,f.length)}}return null}function eraseCookie(a){createCookie(a,"",-1)}function geoIP(a){$.getJSON("http://api.ipinfodb.com/v2/ip_query.php?key=db610ce2f79cf81e5f0082e81c1cb4822fafdfa510518a1f8e78ec8127851cb9&output=json&callback=?",function(b){var d=b.Latitude;var e=b.Longitude;a({lat:d,lon:e})})}function getLocation(d){var a=readCookie("location");if(a){var b=a.replace(/"/g,"").split(",");log("latlng",b);d({lat:new Number(b[0]),lon:new Number(b[1])})}else{geoIP(function(e){createCookie("location",e.lat+","+e.lon,7);d(e)})}}function setLocation(a){createCookie("location",a.lat+","+a.lon,7)}if(!this.WLW){WLW={}}WLW.time={};WLW.time.time_difference=function(a,d){var f=new Date(a);var b=new Date(d);var e=f-b;e/=1000;e/=3600;return e};WLW.time.date_difference=function(b,a){b=new Date(b);a=new Date(a);b.setHours(0);a.setHours(0);var d=b-a;d/=86400000;return Math.round(d)};WLW.time.add_hours=function(g,e){var a=new Number(g.getTime());var f=e*1000*3600;var d=a+f;var b=new Date(d);return b};Date.prototype.local_time=function(){var e=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];var a=this.getHours();if(a<10){a="0"+a}var d=this.getMinutes();if(d<10){d="0"+d}var b=e[this.getDay()];return b+", "+a+":"+d};Date.prototype.setISO8601=function(b){var e="([0-9]{4})(-([0-9]{2})(-([0-9]{2})(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(.([0-9]+))?)?(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";var g=b.match(new RegExp(e));var f=0;var a=new Date(g[1],0,1);if(g[3]){a.setMonth(g[3]-1)}if(g[5]){a.setDate(g[5])}if(g[7]){a.setHours(g[7])}if(g[8]){a.setMinutes(g[8])}if(g[10]){a.setSeconds(g[10])}if(g[12]){a.setMilliseconds(Number("0."+g[12])*1000)}if(g[14]){f=(Number(g[16])*60)+Number(g[17]);f*=((g[15]=="-")?1:-1)}f-=a.getTimezoneOffset();time=(Number(a)+(f*60*1000));this.setTime(Number(time));return this};function MarkerManager(e,f){var b=this;b.map_=e;b.mapZoom_=e.getZoom();b.projection_=e.getCurrentMapType().getProjection();f=f||{};b.tileSize_=MarkerManager.DEFAULT_TILE_SIZE_;var a=MarkerManager.DEFAULT_MAX_ZOOM_;if(f.maxZoom!=undefined){a=f.maxZoom}b.maxZoom_=a;b.trackMarkers_=f.trackMarkers;var d;if(typeof f.borderPadding=="number"){d=f.borderPadding}else{d=MarkerManager.DEFAULT_BORDER_PADDING_}b.swPadding_=new GSize(-d,d);b.nePadding_=new GSize(d,-d);b.borderPadding_=d;b.gridWidth_=[];b.grid_=[];b.grid_[a]=[];b.numMarkers_=[];b.numMarkers_[a]=0;GEvent.bind(e,"moveend",b,b.onMapMoveEnd_);b.removeOverlay_=function(g){e.removeOverlay(g);b.shownMarkers_--};b.addOverlay_=function(g){e.addOverlay(g);b.shownMarkers_++};b.resetManager_();b.shownMarkers_=0;b.shownBounds_=b.getMapGridBounds_()}MarkerManager.DEFAULT_TILE_SIZE_=1024;MarkerManager.DEFAULT_MAX_ZOOM_=17;MarkerManager.DEFAULT_BORDER_PADDING_=100;MarkerManager.MERCATOR_ZOOM_LEVEL_ZERO_RANGE=256;MarkerManager.prototype.resetManager_=function(){var d=this;var a=MarkerManager.MERCATOR_ZOOM_LEVEL_ZERO_RANGE;for(var b=0;b<=d.maxZoom_;++b){d.grid_[b]=[];d.numMarkers_[b]=0;d.gridWidth_[b]=Math.ceil(a/d.tileSize_);a<<=1}};MarkerManager.prototype.clearMarkers=function(){var a=this;a.processAll_(a.shownBounds_,a.removeOverlay_);a.resetManager_()};MarkerManager.prototype.getTilePoint_=function(e,b,d){var a=this.projection_.fromLatLngToPixel(e,b);return new GPoint(Math.floor((a.x+d.width)/this.tileSize_),Math.floor((a.y+d.height)/this.tileSize_))};MarkerManager.prototype.addMarkerBatch_=function(d,h,b){var g=d.getPoint();if(this.trackMarkers_){GEvent.bind(d,"changed",this,this.onMarkerMoved_)}var e=this.getTilePoint_(g,b,GSize.ZERO);for(var f=b;f>=h;f--){var a=this.getGridCellCreate_(e.x,e.y,f);a.push(d);e.x=e.x>>1;e.y=e.y>>1}};MarkerManager.prototype.isGridPointVisible_=function(b){var g=this;var e=g.shownBounds_.minY<=b.y&&b.y<=g.shownBounds_.maxY;var a=g.shownBounds_.minX;var d=a<=b.x&&b.x<=g.shownBounds_.maxX;if(!d&&a<0){var f=g.gridWidth_[g.shownBounds_.z];d=a+f<=b.x&&b.x<=f-1}return e&&d};MarkerManager.prototype.onMarkerMoved_=function(f,a,d){var h=this;var l=h.maxZoom_;var e=false;var b=h.getTilePoint_(a,l,GSize.ZERO);var g=h.getTilePoint_(d,l,GSize.ZERO);while(l>=0&&(b.x!=g.x||b.y!=g.y)){var k=h.getGridCellNoCreate_(b.x,b.y,l);if(k){if(h.removeFromArray(k,f)){h.getGridCellCreate_(g.x,g.y,l).push(f)}}if(l==h.mapZoom_){if(h.isGridPointVisible_(b)){if(!h.isGridPointVisible_(g)){h.removeOverlay_(f);e=true}}else{if(h.isGridPointVisible_(g)){h.addOverlay_(f);e=true}}}b.x=b.x>>1;b.y=b.y>>1;g.x=g.x>>1;g.y=g.y>>1;--l}if(e){h.notifyListeners_()}};MarkerManager.prototype.removeMarker=function(d){var g=this;var f=g.maxZoom_;var h=false;var b=d.getPoint();var e=g.getTilePoint_(b,f,GSize.ZERO);while(f>=0){var a=g.getGridCellNoCreate_(e.x,e.y,f);if(a){g.removeFromArray(a,d)}if(f==g.mapZoom_){if(g.isGridPointVisible_(e)){g.removeOverlay_(d);h=true}}e.x=e.x>>1;e.y=e.y>>1;--f}if(h){g.notifyListeners_()}};MarkerManager.prototype.addMarkers=function(e,f,d){var a=this.getOptMaxZoom_(d);for(var b=e.length-1;b>=0;b--){this.addMarkerBatch_(e[b],f,a)}this.numMarkers_[f]+=e.length};MarkerManager.prototype.getOptMaxZoom_=function(a){return a!=undefined?a:this.maxZoom_};MarkerManager.prototype.getMarkerCount=function(b){var a=0;for(var d=0;d<=b;d++){a+=this.numMarkers_[d]}return a};MarkerManager.prototype.addMarker=function(b,g,e){var f=this;var a=this.getOptMaxZoom_(e);f.addMarkerBatch_(b,g,a);var d=f.getTilePoint_(b.getPoint(),f.mapZoom_,GSize.ZERO);if(f.isGridPointVisible_(d)&&g<=f.shownBounds_.z&&f.shownBounds_.z<=a){f.addOverlay_(b);f.notifyListeners_()}this.numMarkers_[g]++};GBounds.prototype.containsPoint=function(a){var b=this;return(b.minX<=a.x&&b.maxX>=a.x&&b.minY<=a.y&&b.maxY>=a.y)};MarkerManager.prototype.getGridCellCreate_=function(a,g,f){var d=this.grid_[f];if(a<0){a+=this.gridWidth_[f]}var b=d[a];if(!b){b=d[a]=[];return b[g]=[]}var e=b[g];if(!e){return b[g]=[]}return e};MarkerManager.prototype.getGridCellNoCreate_=function(a,f,e){var d=this.grid_[e];if(a<0){a+=this.gridWidth_[e]}var b=d[a];return b?b[f]:undefined};MarkerManager.prototype.getGridBounds_=function(a,l,k,g){l=Math.min(l,this.maxZoom_);var b=a.getSouthWest();var f=a.getNorthEast();var h=this.getTilePoint_(b,l,k);var e=this.getTilePoint_(f,l,g);var m=this.gridWidth_[l];if(f.lng()<b.lng()||e.x<h.x){h.x-=m}if(e.x-h.x+1>=m){h.x=0;e.x=m-1}var d=new GBounds([h,e]);d.z=l;return d};MarkerManager.prototype.getMapGridBounds_=function(){var a=this;return a.getGridBounds_(a.map_.getBounds(),a.mapZoom_,a.swPadding_,a.nePadding_)};MarkerManager.prototype.onMapMoveEnd_=function(){var a=this;a.objectSetTimeout_(this,this.updateMarkers_,0)};MarkerManager.prototype.objectSetTimeout_=function(b,d,a){return window.setTimeout(function(){d.call(b)},a)};MarkerManager.prototype.refresh=function(){var a=this;if(a.shownMarkers_>0){a.processAll_(a.shownBounds_,a.removeOverlay_)}a.processAll_(a.shownBounds_,a.addOverlay_);a.notifyListeners_()};MarkerManager.prototype.updateMarkers_=function(){var a=this;a.mapZoom_=this.map_.getZoom();var b=a.getMapGridBounds_();if(b.equals(a.shownBounds_)&&b.z==a.shownBounds_.z){return}if(b.z!=a.shownBounds_.z){a.processAll_(a.shownBounds_,a.removeOverlay_);a.processAll_(b,a.addOverlay_)}else{a.rectangleDiff_(a.shownBounds_,b,a.removeCellMarkers_);a.rectangleDiff_(b,a.shownBounds_,a.addCellMarkers_)}a.shownBounds_=b;a.notifyListeners_()};MarkerManager.prototype.notifyListeners_=function(){GEvent.trigger(this,"changed",this.shownBounds_,this.shownMarkers_)};MarkerManager.prototype.processAll_=function(b,e){for(var a=b.minX;a<=b.maxX;a++){for(var d=b.minY;d<=b.maxY;d++){this.processCellMarkers_(a,d,b.z,e)}}};MarkerManager.prototype.processCellMarkers_=function(b,g,e,f){var a=this.getGridCellNoCreate_(b,g,e);if(a){for(var d=a.length-1;d>=0;d--){f(a[d])}}};MarkerManager.prototype.removeCellMarkers_=function(a,d,b){this.processCellMarkers_(a,d,b,this.removeOverlay_)};MarkerManager.prototype.addCellMarkers_=function(a,d,b){this.processCellMarkers_(a,d,b,this.addOverlay_)};MarkerManager.prototype.rectangleDiff_=function(b,a,e){var d=this;d.rectangleDiffCoords(b,a,function(f,g){e.apply(d,[f,g,b.z])})};MarkerManager.prototype.rectangleDiffCoords=function(b,a,o){var g=b.minX;var p=b.minY;var k=b.maxX;var e=b.maxY;var f=a.minX;var n=a.minY;var h=a.maxX;var d=a.maxY;for(var m=g;m<=k;m++){for(var l=p;l<=e&&l<n;l++){o(m,l)}for(var l=Math.max(d+1,p);l<=e;l++){o(m,l)}}for(var l=Math.max(p,n);l<=Math.min(e,d);l++){for(var m=Math.min(k+1,f)-1;m>=g;m--){o(m,l)}for(var m=Math.max(g,h+1);m<=k;m++){o(m,l)}}};MarkerManager.prototype.removeFromArray=function(f,d,e){var a=0;for(var b=0;b<f.length;++b){if(f[b]===d||(e&&f[b]==d)){f.splice(b--,1);a++}}return a};if(!this.WLW){WLW={}}WLW.Form=function(h,e,d,k,f){var b="#"+h;var a=b+"-message";var g=function(m){$(b+" input[type=submit]").attr("disabled",m)};$(b+" input[type=submit]").bind("click enter",function(m){$(a).removeClass().addClass("loading").html(f).fadeIn()});var l={dataType:"text",beforeSubmit:function(){if(typeof e=="function"&&!e()){return false}g(true)},success:function(m){g(false);var o=$(a);var n=WLW.parseJSON(m,"form response");if(n.type!="success"){o.fadeOut(function(){o.removeClass();o.addClass("ui-state-error ui-corner-all").html('<p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: 0.3em;"/><strong>Error:</strong>	'+n.message+"</p>").fadeIn("slow");$(b).attr("disabled",true);if(k){k(n)}})}else{$(a).fadeOut(function(){o.removeClass();o.addClass("ui-state-success ui-corner-all").html('<p><span class="ui-icon ui-icon-check" style="float: left; margin-right: 0.3em;"/><strong>Sucess:</strong>	'+n.message+"</p>").fadeIn("slow");$(b).clearForm();if(d){d(n)}})}},error:function(m,o,n){log("form submit error "+m);if(m.status===401){window.location.href=m.responseText}}};$(b).ajaxForm(l)};BITS=[16,8,4,2,1];BASE32="0123456789bcdefghjkmnpqrstuvwxyz";NEIGHBORS={right:{even:"bc01fg45238967deuvhjyznpkmstqrwx"},left:{even:"238967debc01fg45kmstqrwxuvhjyznp"},top:{even:"p0r21436x8zb9dcf5h7kjnmqesgutwvy"},bottom:{even:"14365h7k9dcfesgujnmqp0r2twvyx8zb"}};BORDERS={right:{even:"bcfguvyz"},left:{even:"0145hjnp"},top:{even:"prxz"},bottom:{even:"028b"}};NEIGHBORS.bottom.odd=NEIGHBORS.left.even;NEIGHBORS.top.odd=NEIGHBORS.right.even;NEIGHBORS.left.odd=NEIGHBORS.bottom.even;NEIGHBORS.right.odd=NEIGHBORS.top.even;BORDERS.bottom.odd=BORDERS.left.even;BORDERS.top.odd=BORDERS.right.even;BORDERS.left.odd=BORDERS.bottom.even;BORDERS.right.odd=BORDERS.top.even;function refine_interval(b,d,a){if(d&a){b[0]=(b[0]+b[1])/2}else{b[1]=(b[0]+b[1])/2}}function calculateProximityArea(a){var d=calculateAdjacent(a,"left");var b=calculateAdjacent(a,"right");return[a,calculateAdjacent(a,"top"),calculateAdjacent(b,"top"),b,calculateAdjacent(b,"bottom"),calculateAdjacent(a,"bottom"),calculateAdjacent(d,"bottom"),d,calculateAdjacent(d,"top")]}function calculateAdjacent(f,b){f=f.toLowerCase();var a=f.charAt(f.length-1);var d=(f.length%2)?"odd":"even";var e=f.substring(0,f.length-1);if(BORDERS[b][d].indexOf(a)!=-1){if(!e.length==0){e=calculateAdjacent(e,b)}}return e+BASE32.charAt([NEIGHBORS[b][d].indexOf(a)])}function decodeGeoHash(b){var a=1;var d=[];var e=[];d[0]=-90;d[1]=90;e[0]=-180;e[1]=180;lat_err=90;lon_err=180;for(i=0;i<b.length;i++){c=b.charAt(i);cd=BASE32.indexOf(c);for(j=0;j<5;j++){mask=BITS[j];if(a){lon_err/=2;refine_interval(e,cd,mask)}else{lat_err/=2;refine_interval(d,cd,mask)}a=!a}}d[2]=(d[0]+d[1])/2;e[2]=(e[0]+e[1])/2;return{latitude:d,longitude:e}}function encodeGeoHash(k,a){var e=1;var f=0;var h=[];var d=[];var l=0;var b=0;var g=12;geohash="";h[0]=-90;h[1]=90;d[0]=-180;d[1]=180;while(geohash.length<g){if(e){mid=(d[0]+d[1])/2;if(a>mid){b|=BITS[l];d[0]=mid}else{d[1]=mid}}else{mid=(h[0]+h[1])/2;if(k>mid){b|=BITS[l];h[0]=mid}else{h[1]=mid}}e=!e;if(l<4){l++}else{geohash+=BASE32.charAt(b);l=0;b=0}}return geohash}function geohash_cluster(d){var a={};a.types={};a.points_tree=geohash_tree();var b={1:2,2:2,3:2,4:2,5:2,6:2,7:2,8:2,9:3,10:3,11:3,12:3,13:3,14:3,15:3};a.add_point=function(e){a.points_tree.insert(e);a.show_point(e)};a.show_point=function(f){var k=a.get_prefix_length();var h=f.get_geohash();var g=h.substr(0,k);var e=a.is_inside(g,a.cells);var l=f.get_markers();$.each(l,function(o,n){d.addOverlay(n);e?null:n.hide()})};a.in_grid=function(e,f){var k=a.get_prefix_length();var h=e.get_geohash();var g=h.substr(0,k);return $.inArray(g,f)};a.is_inside=function(e,f){return $.inArray(e,f)===-1?false:true};a.hide_points_outside=function(e,f){$.each(f,function(g,k){if(!a.is_inside(k,e)){var h=a.points_tree.search(k);$.each(h,function(m,l){$.each(l.get_markers(),function(o,n){n.hide()})})}})};a.show_points_inside=function(e){$.each(e,function(g,f){var h=a.points_tree.search(f);$.each(h,function(l,k){$.each(k.get_markers(),function(m,n){n.show()})})})};a.on_move_end=function(){var e=a.get_neighbors();a.hide_points_outside(e,a.cells);a.show_points_inside(e);a.cells=e};a.get_neighbors=function(){var e=d.getCenter();var k=encodeGeoHash(e.lat(),e.lng());var h=a.get_prefix_length();var g=k.substr(0,h);var f=calculateProximityArea(g);return f};a.get_prefix_length=function(){var f=d.getZoom();var e=b[f];return e};GEvent.bind(d,"moveend",a,a.on_move_end);a.cells=a.get_neighbors();return a}function geohash_tree(){var a={};a.tree={};a.HEIGHT=4;a.insert=function(b){var e=b.get_geohash();var d=e.charAt(0);var f=e.substr(1,e.length);if(!a.tree[d]){a.tree[d]={}}a.sub_tree_insert(a.tree[d],b,e,f)};a.sub_tree_insert=function(f,b,e,g){if(a.height(g)>=a.HEIGHT){a.insert_point(f,b,g);return}var d=g.charAt(0);if(!f[d]){f[d]={}}g=g.substr(1,e.length);a.sub_tree_insert(f[d],b,e,g)};a.insert_point=function(d,b,e){d[e]=b};a.height=function(b){return 12-b.length};a.search=function(e){if(!e){return a.to_array(a.tree)}var d=a.tree;for(var b=0;b<e.length;b++){d=d[e.charAt(b)];if(!d){return[]}}return a.to_array(d)};a.to_array=function(b){var e=[];function d(f){$.each(f,function(g,h){if(h.geohash){e.push(h)}else{d(h)}})}d(b);return e};return a}WLW.reverseGeocode=(function(){var b=new GClientGeocoder();function a(d){if(d.latlng!=null){b.getLocations(d.latlng,function(e){if(!e||e.Status.code!=200){error("WLW.reverseGeocode error");if(e.Status.code===602){d.error("No corresponding geographic location could be found for the specified address, possibly because the address is relatively new, or because it may be incorrect.")}else{if(e.Status.code===500){d.error("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is unknown.")}else{d.error("Error Status Code:"+e.Status.code)}}}else{var g=e.Placemark[0];log(g.AddressDetails);var f=(g.AddressDetails.Country?g.AddressDetails.Country.CountryNameCode:null);d.success({point:WLW.point(d.latlng.lat(),d.latlng.lng(),g.address),address:g.address,country_code:f})}});log("after getLocations")}}return a})();var geomath={destination:function(m,n,a){var f=6367;var k=a/f;var l=m.lngRadians();var e=m.latRadians();var b=Math.asin(Math.sin(e)*Math.cos(k)+Math.cos(e)*Math.sin(k)*Math.cos(n));var g=(Math.cos(k)-Math.sin(e)*Math.sin(b))/(Math.cos(e)*Math.cos(b));if(g>=1){g=1}if(n>Math.PI){var h=l-Math.acos(g)}else{var h=l+Math.acos(g)}b=b*(180/Math.PI);h=h*(180/Math.PI);return new GLatLng(b,h)},distance:function(b,a){return b.distanceFrom(a)}};function circleControl(o){if(!o.map||!o.radius||!o.center){throw"All args are not supplied!"}var n={};var g=o.radius,b=o.map,f=true,a=[],m=new GMarker(o.center,{icon:WLW.icon("/images/cross2.png",{size:16,anchor:8}),draggable:true}),d=new GMarker(geomath.destination(o.center,Math.PI/2,g/1000),{icon:WLW.icon("/images/carat_e_w.png",{size:16,anchor:8}),draggable:true}),h=[],e="#EB8F00",l=null,k=null;n.getCompassPositions=function(){var q=[];for(var p=0;p<2*Math.PI;p=p+Math.PI/8){q.push(geomath.destination(n.getCenter(),p,g/1000))}return q};n.getCenter=function(){return m.getLatLng()};n.getRadius=function(){return g};n.dragSizeHandle=function(){b.removeOverlay(k);g=geomath.distance(m.getLatLng(),d.getLatLng());n.render()};n.dragCenterHandle=function(){b.removeOverlay(k);n.render();d.setLatLng(l[16])};n.addClickListener=function(){function p(q,r){if(r&&!q){b.removeOverlay(k);m.setLatLng(r);n.render();d.setLatLng(l[16]);n.publish()}}GEvent.addListener(b,"click",p)};n.addSizeHandleListeners=function(){GEvent.addListener(d,"dragend",function(){n.dragSizeHandle();n.publish()});GEvent.addListener(d,"drag",function(){n.dragSizeHandle()})};n.addCenterHandleListners=function(){GEvent.addListener(m,"dragend",function(p){n.dragCenterHandle();n.publish()});GEvent.addListener(m,"drag",function(p){n.dragCenterHandle()})};n.render=function(){l=[];var q=n.getCenter();var r=g/1000;for(i=0;i<10*(2*Math.PI);i++){l.push(geomath.destination(q,i/10,r))}l.push(geomath.destination(q,0,r));k=new GPolygon(l,e,0.5,0.8,e,0.1);b.addOverlay(k);var p=n.getCompassPositions();$.each(h,function(t,s){s.setLatLng(p[t])})};n.subscribe=function(p){a.push(p);p(n)};n.publish=function(){for(var p=0;p<a.length;p++){a[p](n)}};n.info_as_html=function(){var q="Displaying Surfability Graphs in radius ";if(f){if(g<1000){q+=g.toFixed(1)+"m"}else{q+=(g/1000).toFixed(1)+"km"}}else{var p=g*3.2808399;if(p<5280){q+="in feet : "+p.toFixed(1)}else{q+="in miles : "+(p/5280).toFixed(1)}}return q};n.init=function(){b.addOverlay(d);b.addOverlay(m);$.each(n.getCompassPositions(),function(q,r){var p=new GMarker(r,{icon:WLW.icon("/images/disc.png",{size:4,anchor:2})});h.push(p);b.addOverlay(p)});n.addCenterHandleListners();n.addSizeHandleListeners();n.addClickListener();n.render();return n};return n.init()}function CircleInfoControl(){}CircleInfoControl.prototype=new GControl();CircleInfoControl.prototype.initialize=function(d){var a=document.createElement("div");a.setAttribute("class","ui-state-active ui-corner-all");a.id="GCircleInfoControl";var b=document.createElement("div");b.id="GCircleInfoControl";b.innerHTML="initializing...";a.appendChild(b);d.getContainer().appendChild(a);return a};CircleInfoControl.prototype.setHTML=function(a){$("#GCircleInfoControl").html(a)};CircleInfoControl.prototype.getDefaultPosition=function(){return new GControlPosition(G_ANCHOR_TOP_LEFT,new GSize(50,10))};if(!this.WLW){var WLW={}}if(!this.WLW.geohash){WLW.geohash={}}if(!this.WLW.geohash.publisher){WLW.geohash.publisher={}}WLW.geohash.publisher={init:function(a){this.geohashes=[];this.subscribers={};this.map=a.map||console.error("gmap not defined");this.prefix_length=a.prefix_length||2;this.map_movement_listener(a.map);return this},subscribe:function(a){var e=a.uri||console.error("controller must contain property uri");var d=a.new_geohash_location||console.error("controller must contain property new_geohash_location");this.subscribers[e]=d;for(var b=0;b<this.geohashes.length;b++){d(this.geohashes[b])}},unsubscribe:function(a){delete (this.unsubscribe[a])},proximity_geohashes:function(){var a=this.map.getCenter();var f=encodeGeoHash(a.lat(),a.lng());f=f.substr(0,this.prefix_length);var h=calculateProximityArea(f);var d=[];for(var e=0;e<h.length;e++){if(jQuery.inArray(h[e],WLW.geohash.publisher.geohashes)==-1){WLW.geohash.publisher.geohashes.push(h[e]);d.push(h[e])}}var b=this;function g(k,l){for(var m in b.subscribers){b.subscribers[m](l)}}jQuery.each(d,g)},map_movement_listener:function(b){var a=this;GEvent.addListener(a.map,"moveend",function(){a.proximity_geohashes()})}};if(!this.WLW){var WLW={}}WLW.map_control=function(b){function a(){}a.prototype=new GControl();a.prototype.initialize=function(f){var d=document.createElement("div");d.setAttribute("class","controls-container");var e=document.createElement("div");e.setAttribute("class","sidebarshow ui-corner-all");this.setButtonStyle_(e);e.appendChild(document.createTextNode("Icon description"));GEvent.addDomListener(e,"click",function(){$.ajax({type:"GET",url:"/snippets/legend.xhtml",dataType:"html",success:function(h){var g=170;b.showSideBar(h,g)}})});d.appendChild(e);$(function(){$(".sidebarhide").click(function(){b.hide_side_bar()})});f.getContainer().appendChild(d);return d};a.prototype.getDefaultPosition=function(){return new GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(7,7))};a.prototype.setButtonStyle_=function(d){d.style.color="#EB8F00";d.style.backgroundColor="white";d.style.border="1px solid #FBD850";d.style.padding="2px";d.style.marginBottom="3px";d.style.textAlign="center";d.style.width="6em";d.style.cursor="pointer"};return new a()};WLW.map=function(b){var a={};a.gmap=null;a.location=null;a.cluster=null;a.hide_side_bar=function(){a.marker=null;$("#sidebar").fadeOut("fast",function(){$(".controls-container").fadeIn()})};a.showSideBar=function(d,e){e=e||280;if($("#sidebar").is(":visible")){$("#sidebar").animate({width:e});$("#sidebar-content").fadeOut("fast",function(){$("#sidebar-content").html(d).fadeIn("fast")})}else{$("#sidebar-content").html(d);$("#sidebar").width(e).height($("#map").height()-10).fadeIn();$(".sidebarhide").fadeIn();$(".controls-container").fadeOut("fast")}};a.addMarker=function(d){var e=d.get_markers();jQuery.each(e,function(g,f){a.gmap.addOverlay(f)});return e[0]};a.addMarkers=function(e){var f=[];for(var d in e){a.addMarker(e[d])}return f};a.removeMarker=function(d){$.each(d.get_markers(),function(f,e){a.gmap.removeOverlay(e)})};a.removeMarkers=function(f){for(var e in f){var d=f[e];if(d.markers!==null){a.removeMarker(d)}}};a.init=function(f){if(GBrowserIsCompatible()){window.onunload=GUnload;var d=new GMap2(document.getElementById("map"));d.addControl(new GSmallMapControl());d.setCenter(f,8);var e=WLW.map_control(a);d.addControl(e);d.enableScrollWheelZoom();d.setMapType(G_PHYSICAL_MAP);a.cluster=geohash_cluster(d);a.gmap=d}else{alert("Browser cannot display Google Maps")}return a};return a.init(b)};WLW.point=function(b){var a=new GLatLng(b.lat,b.lon);delete b.lat;delete b.lon;a.get_geohash=function(){if(this.geohash!=null){return this.geohash}this.geohash=encodeGeoHash(this.lat,this.lon);return this.geohash};a.get_markers=function(){if(this.marker!=null){return this.marker}this.markers=[new GMarker(this)];return this.markers};jQuery.extend(a,b);return a};WLW.forecast=function(b,a){b=jQuery.extend({symbol:null,speed:null,direction:null,temp:null},b);if(b.speed!=null){b.speed=new Number(b.speed)}if(b.direction!=null){b.direction=new Number(b.direction)}if(b.temp!=null){b.temp=new Number(b.temp)}b.time=b.time?new Date().setISO8601(b.time):null;b.local_time=b.time&&b.time.local_time();b.owner=a;function d(h){if(h>20){var f=20}else{var f=parseInt(h);var g=f%2;if(g){f-=1}}return f+"to"+(f+2)}function e(g){var f="";if(g>21&&g<67){f="NE"}else{if(g>66&&g<112){f="E"}else{if(g>111&&g<157){f="SE"}else{if(g>156&&g<202){f="S"}else{if(g>201&&g<247){f="SW"}else{if(g>246&&g<292){f="W"}else{if(g>291&&g<337){f="NW"}else{f="N"}}}}}}}return f}b.get_weather_icon_uri=function(){return(b.symbol!==null)?"/images/weathersymbols/"+b.symbol+".png":"/images/wind_arrows/calm.png"};b.get_wind_icon_uri=function(){var g=b.speed?d(b.speed):null;var f=b.direction?e(b.direction):null;return(g!==null&&f!==null)?"/images/wind_arrows/"+f+"_"+g+".png":"/images/wind_arrows/calm.png"};b.get_wind_icon=function(){return WLW.icon(b.get_wind_icon_uri(),{size:26,anchor:13})};b.get_weather_icon=function(){return WLW.icon(b.get_weather_icon_uri(),{size:20,anchor:10})};return b};WLW.points={};WLW.points=function(){var a={};a.entities={};a.geohash_to_entities={};a.uri=null;a.on_map=false;a.subscribers=[];a.cluster=true;a.init=function(){return a};a.deserializer=function(){console.error("abstract method")};a.subscribe=function(b,d){d=d||[];a.subscribers.push({callback:b,dependencies:d});$.each(d,function(f,e){e.subscribers.push({callback:b,dependencies:d})});$.each(a.geohash_to_entities,function(e,f){a.publish(b,e,d)})};a.geohash_loaded=function(b){return a.geohash_to_entities[b]?true:false};a.dependencies_loaded=function(e,d){var b=true;$.each(d,function(g,f){if(!d[g].geohash_loaded(e)){b=false;return}});return b};a.publish=function(g,e){for(var b=0;b<a.subscribers.length;b++){var f=a.subscribers[b].dependencies;var h=a.subscribers[b].callback;var d=a.dependencies_loaded(g,f);if(!d){continue}h({points:a.geohash_to_entities[g],geohash:g})}};a.add_entity=function(b){var d=a.deserializer(b,a);a.entities[b.uri]=d;return d};a.get_entities_by_geohash=function(b){var d=a.geohash_to_entities[b];if(d===undefined){console.error("points not loaded yet")}return d};a.new_geohash_location=function(b){a.ajax_load({gh_prefix:b})};a.ajax_success=function(d,b){var f=WLW.parseJSON(d,"Points");if(f.next){$.ajax({url:f.next,dataType:"text",success:function(h){a.ajax_success(h,b)}})}var g=[];for(var e=0;e<f.items.length;e++){g.push(a.add_entity(f.items[e]))}a.geohash_to_entities[b]=g;a.publish(b,g)};a.ajax_options=function(b){return{type:"GET",url:a.uri,data:b,dataType:"text",success:function(d){a.ajax_success(d,b.gh_prefix)}}};a.ajax_load=function(b){b.gh_prefix=b.gh_prefix;var d=$.ajax(a.ajax_options(b))};a.init();return a};if(!this.WLW){WLW={}}WLW.forecastSelect=function(b){var f=new Date();f.setMinutes(0);var e=null;b=jQuery.extend({min:0,max:72,startTime:f,selectedTime:f},b);e=parseInt(WLW.time.time_difference(b.selectedTime,b.startTime));var g=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];function d(h){return WLW.time.add_hours(b.startTime,h)}function a(){var k=0,m=0,o=[];function l(q){o[k++]='<option value="'+q+'"';if(m===e){o[k++]=' selected="selected"'}o[k++]=">";o[k++]=q;o[k++]="</option>"}function n(r){for(var q=r.getHours();q<24;q++){l(r.local_time());r=WLW.time.add_hours(r,1);m++}return r}while(m<=b.max){var p=d(m);var h=n(p)}o=o.join("");return"<select>"+o+"</select>"}return a()};WLW.forecast_point=function(e,a){var b=WLW.point({lat:e.lat,lon:e.lon});b.uri=e.uri;b.forecasts={};b.calculation_time=new Date(e.calculation_time);b.next_run_time=new Date(e.next_run_time);b.get_current_forecast=function(){forecast=b.forecasts[a.current_time_delta];if(!forecast){return WLW.forecast({},b)}return forecast};b.get_weather_marker=function(){if(b.weather_marker){return b.weather_marker}b.weather_marker=new OffsetableMarker(b,{icon:b.get_current_forecast().get_weather_icon()},"",0,0,15,0);b.add_markers_click_listener([b.weather_marker]);return b.weather_marker};b.get_wind_marker=function(){if(b.wind_marker){return b.wind_marker}b.wind_marker=new OffsetableMarker(b,{icon:b.get_current_forecast().get_wind_icon()},"",0,0,0,15);b.add_markers_click_listener([b.wind_marker]);return b.wind_marker};b.get_markers=function(){if(b.weather_marker&&b.wind_marker){return[b.weather_marker,b.wind_marker]}var f=[];f.push(b.get_wind_marker());if(WLW.include_weather_symbols){f.push(b.get_weather_marker())}return f};b.add_markers=function(){a.map.addMarker(b)};b.update_markers=function(){var f=b.get_current_forecast();var h=f.get_wind_icon_uri();var g=f.get_weather_icon_uri();b.get_wind_marker().setImage(h);if(WLW.include_weather_symbols){if(!b.weather_marker){b.get_weather_marker();a.map.gmap.addOverlay(b.weather_marker)}b.weather_marker.setImage(g);b.weather_marker.show()}else{if(b.weather_marker){a.map.gmap.removeOverlay(b.weather_marker);b.weather_marker=null}}};var d=function(){var m=WLW.time.time_difference(a.current_forecast_time,a.normalized_calculation_time);for(var k=0;k<e.forecasts.length;k++){var g=WLW.forecast(e.forecasts[k],b);for(var h=0;h<g.span;h++){var l=$.extend(false,{},g);l.time=new Date(g.time.getTime()+3600000*h);var n=WLW.time.time_difference(l.time,a.normalized_calculation_time);b.forecasts[n]=l;if(n>100+m){break}}}return null};d();b.add_markers_click_listener=function(f){$.each(f,function(h,g){GEvent.addListener(g,"click",function(){if($.inArray(a.map.marker,f)!==-1){a.map.hide_side_bar();a.map.marker=null}else{var k=b.forecasts_as_html();a.map.showSideBar(k);a.map.marker=g}})})};b.forecasts_as_html=function(){var g=$('<div id="forecast-container">');var t=$('<table width="100%">');t.append($('<caption style="color: #EB8F00">Forecast at ('+b.lat()+"&deg;,"+b.lng()+"&deg;)</caption>"));var p=[];var m=0;var s=["today","tomorrow","two days"];var k=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var o=0;var h=new Date();for(var n in b.forecasts){var q=b.forecasts[n];var r=WLW.time.date_difference(q.time,h);if(r>o){p[m++]='<tr><td style="color: #EB8F00">'+k[q.time.getDay()]+"</td></tr>";o++}p[m++]="<tr><td>";var l=new Date(q.time);p[m++]=l.local_time();p[m++]='</td><td><img src="'+q.get_weather_icon_uri()+'" height="20" width="20"></img>';p[m++]='</td><td><img src="'+q.get_wind_icon_uri()+'" align="center" height="20px" width="20px" /></td><td>';p[m++]=(q.direction?(q.direction.toFixed()+"&deg;"):"");p[m++]="</td><td>";p[m++]=(q.speed?(q.speed.toFixed(1)+"m/s"):"")+"</td><td>";p[m++]=(q.temp?(q.temp.toFixed(1)+"&deg;C"):"");p[m++]="</td></tr>"}t.append(p.join(""));g.append(t);g.append($("<p>Last update: "+b.calculation_time+"</p>"));return g};return b};WLW.forecast_points=function(b){var d=WLW.points();d.callback=b.loaded;d.map=b.map;var a=$("#forecast_points_version").text();d.uri="/api/forecast_points/?include_forecasts=true&time_format=ietf&version="+new Number(a);d.calculation_time=null;d.current_forecast_time=null;d.current_time_delta=null;d.are_points_stale=false;d.deserializer=WLW.forecast_point;d.set_current_forecast_time=function(e){d.current_forecast_time=WLW.time.add_hours(d.normalized_calculation_time,e);d.current_time_delta=e};d.get_current_forecast_time=function(e){$.ajax({url:"/api/forecast_points/info/",dataType:"json",success:function(f){d.calculation_time=new Date(f.calculation_time);d.normalized_calculation_time=new Date(d.calculation_time);d.normalized_calculation_time.setMinutes(0);d.normalized_calculation_time.setSeconds(0);var g=WLW.time.time_difference(f.current_forecast_time,d.normalized_calculation_time);d.set_current_forecast_time(g);e(d)},error:function(f){alert("error loading forecast points: "+f.status+" "+f.statusText)}})};d.get_current_forecast_time(d.callback)};if(!this.WLW){var WLW={}}WLW.spot=function(b,a){var d=WLW.point({lat:b.lat,lon:b.lon,uri:b.uri,name:b.name,wind_diagram:b.wind_diagram,forecast_point_uri:b.forecast_point,forecast_point:null,weather_station_uri:b.weather_stations?b.weather_stations[0]:null,weather_station:null,are_forecasts_loaded:function(){return this.forecast_point?true:false},get_forecast_point:function(){if(this.forecast_point){return this.forecast_point}},set_forecast_point:function(e){this.forecast_point=e},set_weather_station:function(e){this.weather_station=e},get_weather_station:function(){return this.weather_station},get_direction_string:function(e){if(e>21&&e<67){return"NE"}if(e>66&&e<112){return"E"}if(e>111&&e<157){return"SE"}if(e>156&&e<202){return"S"}if(e>201&&e<247){return"SW"}if(e>246&&e<292){return"W"}if(e>291&&e<337){return"NW"}if(e>=337||e<=21){return"N"}throw"get_direction_string: Direction is not valid is:"+e},is_direction_surfable:function(f){var e=this.get_direction_string(f);if(this.wind_diagram[e]&&this.wind_diagram[e]==="YES"){return true}return false},is_speed_surfable:function(e){if(e>=7){return true}return false},is_surfable:function(){var e=this.get_current_forecast();if(e&&this.is_direction_surfable(e.direction)&&this.is_speed_surfable(e.speed)){return true}return false},get_image_uri:function(){if(this.are_forecasts_loaded()){if(this.is_surfable()){return"/images/surfable_spot.png"}}else{}return"/images/spot.png"},_get_icon:function(){return WLW.icon(this.get_image_uri(),{size:12,anchor:6})},get_current_forecast:function(){var e=this.get_forecast_point();var g=a.forecast_points_c;var f=g.current_time_delta;if(e&&e.forecasts[f]){return e.forecasts[g.current_time_delta]}else{return null}},get_markers:function(){if(this.marker){return[this.marker]}this.marker=new GMarker(this,{icon:this._get_icon()});this.add_click_listener(this.marker);return[this.marker]},add_markers:function(){a.map.addMarker(this)},update_markers:function(){if(this.marker){var e=this.get_image_uri();this.marker.setImage(e)}},add_click_listener:function(f){var g=this;function e(){if(a.map.marker===f){a.map.hide_side_bar();a.map.marker=null}else{g.show_spot()}}GEvent.addListener(f,"click",e)},show_spot:function(){var e=this.spot_as_html();a.map.showSideBar(e);a.map.marker=this.marker},spot_as_html:function(){var e=$('<div id="spot-container">');var h=[];var f=0;h[f++]="<p>Spot "+this.name+"</p>";h[f++]="<p>Surfable directions: ";var m=[];var g=0;for(var l in this.wind_diagram){m[g++]=l}m=m.join(",");h[f++]=m+"</p>";var k=this.uri.substring(4,this.uri.length);h[f++]='<a href="'+k+'edit">Edit</a>';e.append($(h.join("")));return e}});return d};if(!this.WLW){var WLW={}}WLW.spots=function(b){var a=WLW.points();a.map=b.map;a.spots_version=$("#spots_version").text();a.uri="/api/spots/?version="+new Number(a.spots_version);a.deserializer=WLW.spot;a.weather_stations_c=b.weather_stations_c;a.forecast_points_c=b.forecast_points_c;a.spots=a;a.name_2_controller=function(d){var e={spots:a,forecast_points:a.forecast_points_c,weather_stations:a.weather_stations_c};return e[d]||console.error("cannot find controller")};a.init=function(){if(a.weather_stations_c){a.weather_stations_c.subscribe(a.weather_stations_loaded,[a])}if(a.forecast_points_c){a.forecast_points_c.subscribe(a.forecast_points_loaded,[a])}};a.set_forecast_points_c=function(d){a.forecast_points_c=d;a.forecast_points_c.subscribe(a.forecast_points_loaded)};a.set_weather_stations_c=function(d){a.weather_stations_c=d;a.weather_stations_c.subscribe(a.weather_stations_loaded)};a.forecast_points_loaded=function(e){var d=a.get_entities_by_geohash(e.geohash);$.each(d,function(g,h){var f=a.forecast_points_c.entities[h.forecast_point_uri];h.set_forecast_point(f)})};a.weather_stations_loaded=function(e){var d=a.get_entities_by_geohash(e.geohash);$.each(d,function(g,h){var f=a.weather_stations_c.entities[h.weather_station_uri];h.set_weather_station(f)})};a.spots_subscribe=function(g,e){var f=[];jQuery.each(e,function(k,h){f.push(a.name_2_controller(h))});function d(l){var k=l.geohash;var h=a.get_entities_by_geohash(k);jQuery.each(h,function(m,n){g(n)})}a.subscribe(d,f)};a.init();return a};if(!this.WLW.controllers){WLW.controllers={}}WLW.points_dependencies_controller=function(b){var a={};a.subscribers=[];a.on_load=b.on_load||function(){console.error("on_load must be implemented")};a.geohashes_touched=[];a.spots_controller=b.spots_c||console.error("spots_controller must be given in args");a.forecast_points_c=b.forecast_points_c||console.error("forecast_points controller must be given in args");a.dependency={spots:a.spots_c,forecast_points:a.forecast_points_c};a.entities_loaded=function(f){var e=f.geohash;var d=a.spots_controller.get_entities_by_geohash(e);$.each(d,function(h,k){var g=a.forecast_points_controller.entities[k.forecast_point_uri];k.set_forecast_point(g);a.on_load(k)})};a.spots_controller.subscribe(a.entities_loaded,a.dependency);a.forecast_points_controller.subscribe(a.entities_loaded,a.dependency);return a};WLW.weather_station=function(b,a){var d=WLW.point({lat:b.lat,lon:b.lon});d.latest=b.latest;if(d.latest){d.latest.time=new Date(d.latest.time);d.latest.speed=d.latest.speed.toFixed(1)}d.uri_extern=b.uri_extern;d.uri_observations=b.uri_observations||console.error("uri_observations not defined");d.type=b.type||console.error("type not defined");d.name=b.name||console.error("name not defined");d.get_icon=function(){var e;if(d.latest){e=WLW.icon(d.latest.wind_icon,{size:44,anchor:22})}else{e=WLW.icon("/images/wind_arrows/calm.png",{size:10,anchor:5})}return e};d.getTypeIcon=function(){switch(d.type){case ("WeatherBugWeatherStation"):return"/images/weatherbug.ico";case ("DMIWeatherStation"):return"/images/dmi.ico";case ("DCAWeatherStation"):return"/images/kyst.png";default:error("[model.weather_station] type:",d.type)}};d.fetch_observations=function(f,g){var e=$.ajax({type:"GET",url:d.uri_observations,dataType:"json",success:g,error:function(h){alert("couldn't get observations from server, message: "+h.toString())}})};d.observations_as_html=function(t,q){var e=$('<div id="weather-observations-container">');var s=$('<table width="100%">');s.append($('<caption><a href="'+d.uri_extern+'" target="_blank">'+d.name+'<img src="'+d.getTypeIcon()+'" style="border: none" width="20px" height="20px" /></a>'));var f=t.items||[];html=[];var l=0;for(var m=0;m<f.length;m++){html[l++]="<tr><td>";var g=f[m];var h=new Date(g.time);html[l++]=h.local_time();html[l++]='</td><td><img src="'+f[m].wind_icon+'" align="center" height="30px" width="30px" /></td><td>';html[l++]=g.direction+"&deg;</td><td>";html[l++]=(g.speed?(g.speed.toFixed(1)+"m/s"):"")+"</td><td>";html[l++]=(g.temp?(g.temp.toFixed(1)+"&deg;C"):"");html[l++]="</td></tr>"}s.append(html.join(""));var r=$('<table width="100%">');var p=$('<td align="center">');if(t.page>1){p.append($('<a id="previous_observations" href="#"><span class="ui-icon ui-icon-circle-triangle-w">Previous</span></a>').click(function(){d.show_observations(--q)}))}var n=$('<td align="center">');if(t.has_next){n.append($('<a id="next_observations" href="#"><span class="ui-icon ui-icon-circle-triangle-e">Next</span></a>').click(function(){d.show_observations(++q)}))}r.append(p);r.append(n);e.append(s);e.append(r);if(t.items.length>0){var k=new Date(t.items[0].time);e.append($("<p>Last update: "+k+"</p>"))}else{e.append($("<p>No observations</p>"))}return e};d.show_observations=function(e){d.fetch_observations(e,function(h,g){var f=d.observations_as_html(h,e);a.map.showSideBar(f)})};d.update_markers=function(){if(WLW.include_observation_symbols){a.map.addMarker(d)}else{a.map.removeMarker(d)}};d.add_markers=function(){a.map.addMarker(d)};d.get_markers=function(){if(d.marker){return[d.marker]}d.marker=new GMarker(d,{icon:d.get_icon()});GEvent.addListener(d.marker,"click",function(){if(a.map.marker===d.marker){a.map.hide_side_bar();a.map.marker=null}else{var f=1;var e=d.show_observations(f);a.map.marker=d.marker}});return[d.marker]};return d};WLW.weather_stations=function(b){var d=WLW.points();var a=$("#weather_stations_version").text();d.map=b.map||console.error("args map must be given");d.uri="/api/weather_stations/?time_format=ietf&version="+new Number(a);d.deserializer=WLW.weather_station;return d};if(!WLW.graph){WLW.graph={}}WLW.graph.sort_forecasts=function(b,a){var e={length:0,negative:[],d_0_2:[],d_2_4:[],d_4_6:[],d_6_8:[],d_8_10:[],d_10_12:[],d_12_14:[],d_14_16:[],d_16_18:[],d_18_20:[],d_20:[]};function h(n){var k=n.time.getTime()+n.time.getTimezoneOffset()*(-1)*60*1000;var m=n.speed;var l=a.is_direction_surfable(n.direction);if(!l){m*=-1}if(m<0){e.negative.push([k,m,n]);return}switch(parseInt(n.speed)){case (0):case (1):e.d_0_2.push([k,m,n]);break;case (2):case (3):e.d_2_4.push([k,m,n]);break;case (4):case (5):e.d_4_6.push([k,m,n]);break;case (6):case (7):e.d_6_8.push([k,m,n]);break;case (8):case (9):e.d_8_10.push([k,m,n]);break;case (10):case (11):e.d_10_12.push([k,m,n]);break;case (12):case (13):e.d_12_14.push([k,m,n]);break;case (14):case (15):e.d_14_16.push([k,m,n]);break;case (16):case (17):e.d_16_18.push([k,m,n]);break;case (18):case (19):e.d_18_20.push([k,m,n]);break;default:e.d_20.push([k,m,n]);break}e.negative.push([k,m,n])}for(var g in b.forecasts){if(g>=100){continue}var d=b.forecasts[g];h(d)}return e};WLW.graph.hover_previous_point=null;WLW.graph.hover_listener=function(b){function a(e,g,d){d.weather_icon=d.get_weather_icon_uri();d.icon=d.get_wind_icon_uri();var f='<div id="tooltip"><table><tr><td colspan="4">${local_time}</td></tr><tr><td><img src="${weather_icon}" height="38" width="38"></img></td></div>            <td>${temp}&deg;C</td>            <td><img src="${icon}" height="40" width="40" style="vertical-align:middle"></img></td>            <td>${speed}m/s ${direction}&deg;</td></tr></table>';f=f.substitute(d);$(f).css({position:"absolute",display:"none",top:g+25,left:e+5,border:"1px solid #fdd",padding:"2px","background-color":"#fee",opacity:0.8}).appendTo("body").fadeIn(200)}$("#"+b).bind("plothover",function(g,k,f){log("hover:",b);$("#x").text(k.x.toFixed(2));$("#y").text(k.y.toFixed(2));if(f){if(WLW.graph.hover_previous_point!=f.datapoint){WLW.graph.hover_previous_point=f.datapoint;$("#tooltip").remove();var e=f.datapoint[0].toFixed(2),h=f.datapoint[1].toFixed(2);var d=f.series.data[f.dataIndex][2];a(f.pageX,f.pageY,d)}}else{$("#tooltip").remove();previousPoint=null}})};WLW.graph.render=function(e,b){var d=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];var a={bars:{show:true,lineWidth:0,align:"left",barWidth:1000*3600},grid:{borderWidth:0,tickColor:"#FFF",hoverable:true,clickable:true},xaxis:{mode:"time",tickSize:[2,"hour"],tickFormatter:function(h,f){var g=new Date(h);if(g.getUTCHours()==0){return d[g.getDay()]}return $.plot.formatDate(g,"%H")}},yaxis:{tickFormatter:function(g,f){if(g<0){g*=-1}return g.toFixed(f.tickDecimals)+"m/s"},min:-18,max:18,ticks:[[6,"6m/s"],[-6,"6m/s"],[0,"0m/s"],[12,"12m/s"],[-12,"12m/s"]]}};$.plot($("#"+e),[{data:b.negative,bars:{fillColor:"#546c72"}},{data:b.d_0_2,bars:{fillColor:"#dce6d7"}},{data:b.d_2_4,bars:{fillColor:"#abefff"}},{data:b.d_4_6,bars:{fillColor:"#00b7ff"}},{data:b.d_6_8,bars:{fillColor:"#72ff00"}},{data:b.d_8_10,bars:{fillColor:"#06c300"}},{data:b.d_10_12,bars:{fillColor:"#f4ff1e"}},{data:b.d_12_14,bars:{fillColor:"#dfba00"}},{data:b.d_14_16,bars:{fillColor:"#fb8005"}},{data:b.d_16_18,bars:{fillColor:"#fe0000"}},{data:b.d_18_20,bars:{fillColor:"#a10021"}},{data:b.d_20,bars:{fillColor:"#000"}}],a)};WLW.icons={};WLW.icon=function(d,b){if(WLW.icons.uri){return WLW.icons.uri}size=b?b.size:26;anchor=b?b.anchor:13;var a=new GIcon();a.image=d;a.iconSize=new GSize(size,size);a.iconAnchor=new GPoint(anchor,anchor);a.infoWindowAnchor=new GPoint(anchor,anchor);WLW.icons[d]=a;return a};WLW.spot_forecast_graphs=function(b){var a={};a.spots_c=b.spots_c||console.error("args missing");a.graphs_in_page={};a.get_id=function(d){return"forecast-graph"+d.uri.replace(new RegExp("/","g"),"-")};a.add_spot_forecast_graph=function(h){var l=a.get_id(h);var d=h.get_weather_station();var k='<div><img src="${icon}" height="30" width="30" style="vertical-align:middle"></img>${speed}m/s ${direction}&deg; from ${name} at ${time} ';k=d?k.substitute({name:d.name,time:d.latest.time.local_time(),icon:d.latest.wind_icon,temp:d.latest.temp,speed:d.latest.speed,direction:d.latest.direction}):"";var g='<div id="frame-${id}"><h3>${name}</h3><div>${weather_station_div}</div><div>Forecast Calculated: ${calculation_time}, Estimated Update: ${next_run_time}</div><div id="${id}" style="width:800px;height:130px">Loading ...</div></div>';var f=h.get_forecast_point();g=g.substitute({id:l,weather_station_div:k,calculation_time:f.calculation_time.local_time(),next_run_time:f.next_run_time.local_time(),name:h.name});if(h.is_surfable()){$("#extra").prepend(g)}else{$("#extra").append(g)}var e=WLW.graph.sort_forecasts(f,h);WLW.graph.render(l,e);WLW.graph.hover_listener(l)};a.remove_spot_forecast_graph=function(d){var e=a.get_id(d);$("#frame-"+e).remove();a.graphs_in_page[d.uri]=false};a.refresh=function(){for(var e in a.graphs_in_page){var d=a.spots_c.entities[e];a.spot_loaded(d)}};a.spot_loaded=function(d){var e=WLW.user_location.distanceFrom(d);if(e>WLW.circle_radius){if(a.graphs_in_page[d.uri]){a.remove_spot_forecast_graph(d);a.graphs_in_page[d.uri]=false}else{a.graphs_in_page[d.uri]=false}}else{if(!a.graphs_in_page[d.uri]){a.add_spot_forecast_graph(d);a.graphs_in_page[d.uri]=true}else{}}};a.spots_c.spots_subscribe(a.spot_loaded,["spots","forecast_points","weather_stations"]);return a};var forms={};forms.spots=function(b){var a={};a.spots_c=b||console.error("spots controller is undefined");a.map=b.map;a.submit_success=function(d){var e=a.spots_c.add_entity(d.spot);if(a.point){a.map.removeMarker(a.point)}a.map.addMarker(e)};a.map_click_listener=function(e,h){if(!h){return}var f=h.lat();var g=h.lng();$("#id_lat").val(f);$("#id_lon").val(g);if(a.marker!=null){a.marker.setLatLng(h)}else{var d=new GMarker(h);a.map.gmap.addOverlay(d);a.marker=d}a.reverse_geocode(h,a.marker)};a.reverse_geocode=function(e,d){WLW.reverseGeocode({latlng:e,error:function(f){$("#spot-form-message").addClass("ui-state-error ui-corner-all").html('<p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: 0.3em;"/><strong>Error:</strong>	Error geocoding: '+f+"</p>").fadeIn("slow")},success:function(g){$("#spot-form-message").hide().removeClass();$("#id_address").val(g.address);$("#id_country_code").val(g.country_code);var f=$('<p>Location ok? <a id="location-ok" href="#">Goto spot information</a></p>');d.openInfoWindowHtml("<p>Location address: "+g.address+"</p>"+f.html());GEvent.addListener(d,"infowindowopen",function(){$("#location-ok").click(function(){$("#accordion").accordion("activate",1)})})}})};a.init=function(){WLW.Form("spot-form",null,a.submit_success,null,"Saving spot... Adding forecast and weather stations in the proximity.");GEvent.addListener(a.map.gmap,"click",a.map_click_listener)};a.init();return a};if(!this.WLW.controllers){WLW.controllers={}}WLW.controllers.map=function(e){var a={};var f={};var b={};var d=[];a.init=function(g){};a.add_points_controller=function(g,h){if(!f[g.uri]){f[g.uri]=g;g.subscribe(a.add_points,h)}};a.subscribe=function(g){d.push(g)};a.remove_point_model=function(g){a.remove_from_map(g);delete (f[g.uri])};a.refresh_map=function(g){$.each(g.entities,function(k,h){h.update_markers()})};a.add_points=function(g){e.addMarkers(g.points)};a.remove_from_map=function(g){e.removeMarkers(g.entities);e.mgr.refresh()};a.init(e);return a};if(!this.WLW){WLW={}}if(!this.WLW.controllers){WLW.controllers={}}WLW.controllers.circle=function(b){if(!b.map||!b.radius||!b.center){console.error("All args are not supplied")}var a={};a.map=b.map;a.radius=b.radius;a.center=b.center;a.info_control=new CircleInfoControl();a.map.addControl(a.info_control);a.model=circleControl({radius:a.radius,center:a.center,map:a.map});a.model.subscribe(function(d){a.info_control.setHTML(d.info_as_html())});return a};if(!this.WLW){WLW={}}WLW.createSlider=function(e){e=jQuery.extend({withId:null,andContent:null,insertInto:null,onSlide:null,valueOffset:0},e);var g=e.withId,b=e.andContent,d=e.insertInto,a=e.onSlide,f=e.valueOffset;b=$(b).attr("id",g).hide();$("#"+d).append(b);$("#"+g).selectToUISlider({labels:16});if(a){$(".ui-slider").bind("slide",function(h,k){var l=k.value;l+=f;a(l)})}$("#"+d).fadeIn()};if(!this.WLW.main){WLW.main={}}if(WLW.firebug){log=window.console.log}else{log=function(){}}if(WLW.firebug){error=window.console.error}else{error=function(){}}String.prototype.substitute=function(a){return this.replace(/\$\{([^\s}]+)\}/g,function(b,d){var e=a[d]||"";return e})};WLW.user_location=null;WLW.circle_radius=40000;WLW.include_weather_symbols=false;WLW.include_observation_symbols=true;WLW.main.spots=null;WLW.main.forecast_points=null;WLW.main.weather_stations=null;WLW.main.map_controller=null;WLW.main.spot_forecasts_graph_controller=null;WLW.main.geohash_publisher=null;WLW.main.map_controller=null;if(window.console&&window.console.firebug){WLW.firebug=true;$("#message").addClass("ui-state-error ui-corner-all").html('<p><span class="ui-icon ui-icon-alert" style="float: left; margin-left: 0.3em;"/><strong>Firebug slows down welovewind. Please disable it for a better experience.</strong></p>').fadeIn("slow")}$(function(){var a=$("#ajax_loader");a.ajaxSend(function(){a.css("display","inline")});a.ajaxStop(function(){a.css("display","none")})});var main=function(){var a=this;a.init=function(d){var b=d.location;var e=d.onComplete;a.user_location=WLW.user_location=WLW.point(b);a.map=WLW.map(a.user_location);a.geohash_publisher=WLW.geohash.publisher.init({map:a.map.gmap,prefix_length:3});a.map_controller=WLW.controllers.map(a.map);e?e():null;a.geohash_publisher.proximity_geohashes()};a.init_by_fixed=function(b,d,e){a.init({location:{lat:b,lon:d},onComplete:e})};a.init_by_user_location=function(d){var b=this;getLocation(function(e){b.init({location:e,onComplete:d})})};return a};WLW.observation_page=function(){var a=main();$("#map-header").html("Weather Observations Map");WLW.menu.init("menu_observations");$("#accordion").accordion({header:"h3",collapsible:true}).show();a.init_by_user_location(function(){a.spots_c.set_weather_stations_c(a.weather_stations_c);a.geohash_publisher.subscribe(a.weather_stations_c);a.map_controller.add_points_controller(a.weather_stations_c)})};WLW.forecast_page=function(){$("#map-header").html("Spots and Forecasts Map");WLW.menu.init("menu_forecasts");$("#accordion").accordion({header:"h3",collapsible:true}).show();$("#slider-container").show();WLW.forecast_map()};WLW.forecast_map=function(){var a=main();a.goon=function(f){a.weather_stations_c=WLW.weather_stations({map:a.map});a.forecast_points_c=WLW.main.forecast_points=f;a.spots_c=WLW.spots({map:a.map,weather_stations_c:a.weather_stations_c,forecast_points_c:a.forecast_points_c});a.spots_c.spots_subscribe(function(g){g.add_markers();g.forecast_point.add_markers()},["spots","forecast_points"]);a.weather_stations_c.subscribe(function(h){var g=a.weather_stations_c.get_entities_by_geohash(h.geohash);$.each(g,function(l,k){k.add_markers()})});a.geohash_publisher.subscribe(a.spots_c);a.geohash_publisher.subscribe(a.weather_stations_c);a.geohash_publisher.subscribe(a.forecast_points_c);function d(){return{spots_c:a.spots_c,forecast_points_c:a.forecast_points_c,weather_stations_c:a.weather_stations_c}}var b=WLW.spot_forecast_graphs(d());WLW.createSlider({withId:"slider",andContent:WLW.forecastSelect(),insertInto:"slider-container",onSlide:function(g){a.forecast_points_c.set_current_forecast_time(g);$.each(a.spots_c.entities,function(h,k){k.forecast_point&&k.forecast_point.update_markers()});a.map_controller.refresh_map(a.spots_c)},valueOffset:WLW.time.time_difference(a.forecast_points_c.current_forecast_time,a.forecast_points_c.normalized_calculation_time)});var e=WLW.controllers.circle({map:a.map.gmap,center:a.user_location,radius:WLW.circle_radius});e.model.subscribe(function(h){var g=h.getCenter();WLW.user_location=WLW.point({lat:g.lat(),lon:g.lng()});WLW.circle_radius=h.getRadius();setLocation({lat:g.lat(),lon:g.lng()});b.refresh()});$("#show_weather_symbols").click(function(){WLW.include_weather_symbols=this.checked;$.each(a.spots_c.entities,function(g,h){h.forecast_point.update_markers()})});$("#show_observation_symbols").click(function(){WLW.include_observation_symbols=this.checked;a.map_controller.refresh_map(a.weather_stations_c)});$.ajax({type:"GET",url:"/snippets/legend.xhtml",dataType:"html",success:function(h){var g=170;a.map.showSideBar(h,g)}})};a.init_by_user_location(function(){WLW.forecast_points({map:a.map,loaded:goon})})};WLW.spot_page=function(){$("#map-header").html("Spots and Forecasts Map");WLW.menu.init("menu_new_spot");$("#accordion").accordion({header:"h3",collapsible:true}).show();$("#slider-container").show();WLW.forecast_map();WLW.menu.init("menu_new_spot")};WLW.spot_form_page=function(){var b=main();var e=$("#id_lat").val();var f=$("#id_lon").val();function a(){b.spots_c=WLW.spots({map:b.map});forms.spots(b.spots_c)}function d(){b.spots_c=WLW.spots({map:b.map});var k=$("#id_name").val();var m=forms.spots(b.spots_c);var g=WLW.point({lat:e,lon:f});var h=new GMarker(g);b.map.gmap.addOverlay(h);m.marker=h;var l='<p>Location ok? <a id="location-ok" href="#">Goto spot information</a></p>';h.openInfoWindowHtml("<p>Spot: "+k+" (Click on map to move)</p>"+l);GEvent.addListener(h,"infowindowopen",function(){$("#location-ok").click(function(){$("#accordion").accordion("activate",1)})})}e&&f?b.init_by_fixed(e,f,d):b.init_by_user_location(a);WLW.menu.init("menu_new_spot");$("#accordion").accordion({header:"h3",collapsible:true}).show()};WLW.about_page=function(){WLW.menu.init("menu_about")};WLW.menu={created:null,init:function(a){$("#"+a).addClass("current");if(this.created===null){this.created=true;$("#menu").lavaLamp({fx:"swing",speed:500})}}};WLW.parseJSON=function(d,a){var b;try{b=JSON.parse(d)}catch(e){alert("Error parsing JSON"+a+"\n"+d)}return b};function show(e,b){var a="";for(var d in e){a+=b+"."+d+" = "+e[d]+"\n"}return a};
