diff --git a/Gruntfile.js b/Gruntfile.js index dab6f5c..6fb76cf 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -33,7 +33,7 @@ module.exports = function(grunt) { 'js/jquery.geo.shingled.js' ], dest: 'dist/jquery.<%= pkg.name %>-<%= pkg.version %>.js' - }, + } }, uglify: { options: { @@ -42,7 +42,7 @@ module.exports = function(grunt) { dist: { src: '<%= concat.dist.dest %>', dest: 'dist/jquery.<%= pkg.name %>-<%= pkg.version %>.min.js' - }, + } }, qunit: { files: ['test/**/*.html'] @@ -59,14 +59,14 @@ module.exports = function(grunt) { jshintrc: '.jshintrc' }, src: ['js/jquery.geo.core.js', 'js/jquery.geo.geographics.js', 'js/jquery.geo.geomap.js', 'js/jquery.geo.shingled.js', 'js/jquery.geo.tiled.js'] - }, + } // test: { // options: { // jshintrc: '.jshintrc' // }, // src: ['test/**/*.js'] // }, - }, + } }); // These plugins provide necessary tasks. diff --git a/dist/jquery.geo-1.0.0-b2.js b/dist/jquery.geo-1.0.0-b2.js index 027f205..dacfafd 100644 --- a/dist/jquery.geo-1.0.0-b2.js +++ b/dist/jquery.geo-1.0.0-b2.js @@ -1,4 +1,4 @@ -/*! jQuery Geo - v1.0.0-b2 - 2013-10-02 +/*! jQuery Geo - v1.0.0-b2 - 2013-10-04 * http://jquerygeo.com * Copyright (c) 2013 Ryan Westphal; Licensed MIT */ // Copyright 2006 Google Inc. @@ -3955,8 +3955,8 @@ $.Widget.prototype = { // create our front & back buffers // though, at any time either one can be in front - this._$canvasSceneFront = $( window.toStaticHTML( '' ) ).load($.proxy(this._canvasSceneLoad, this)); - this._$canvasSceneBack = $( window.toStaticHTML( '' ) ).load($.proxy(this._canvasSceneLoad, this)); + this._$canvasSceneFront = $( window.toStaticHTML( '' ) ); //.load($.proxy(this._canvasSceneLoad, this)); + this._$canvasSceneBack = $( window.toStaticHTML( '' ) ); //.load($.proxy(this._canvasSceneLoad, this)); } else if (_ieVersion <= 8) { this._trueCanvas = false; @@ -4251,9 +4251,10 @@ $.Widget.prototype = { if ( this._trueCanvas ) { if ( this._options.doubleBuffer && this._trueDoubleBuffer ) { + var geographics = this; if ( this._requireFlip ) { - var geographics = this; + geographics._requireFlip = false; var oldCanvasScene = geographics._$canvasSceneFront; @@ -4265,8 +4266,6 @@ $.Widget.prototype = { } ).prop( "src", geographics._$canvas[ 0 ].toDataURL( ) ).prependTo( geographics._$elem ); geographics._$canvasSceneBack = oldCanvasScene.prop( "src", "" ).detach(); - - geographics._requireFlip = false; } // transform a finished scene, can assume no drawing during these calls @@ -4319,6 +4318,7 @@ $.Widget.prototype = { if ( geographics._trueCanvas && geographics._options.doubleBuffer && geographics._trueDoubleBuffer ) { geographics._$canvasSceneBack.prop( "src", geographics._$canvas[ 0 ].toDataURL( ) ); + this._canvasSceneLoad( ); } @@ -4417,7 +4417,7 @@ $.Widget.prototype = { }(jQuery, window)); - (function ($, window, undefined) { +(function ($, window, undefined) { var _widgetIdSeed = 0, _ieVersion = ( function () { var v = 5, div = document.createElement("div"), a = div.all || []; @@ -4621,8 +4621,8 @@ $.Widget.prototype = { this._isTap = this._isDbltap = false; - this._anchor = [ 0, 0 ]; - this._current = [ 0, 0 ]; + this._anchor = [ 0, 0 ]; /* mouse down */ + this._current = [ 0, 0 ]; /* mouse move no matter what */ this._lastMove = [ 0, 0 ]; this._lastDrag = [ 0, 0 ]; this._velocity = [ 0, 0 ]; @@ -6238,13 +6238,14 @@ $.Widget.prototype = { } if (current[0] === this._lastMove[0] && current[1] === this._lastMove[1]) { + e.preventDefault(); if ( this._inOp ) { - e.preventDefault(); if ( doInteractiveTimeout ) { this._setInteractiveTimeout( true ); } - return false; } + // fixes: [bug] highlight pop + return false; } if ( _ieVersion === 7 ) { diff --git a/dist/jquery.geo-1.0.0-b2.min.js b/dist/jquery.geo-1.0.0-b2.min.js index 1ee7e5e..b19cc8e 100644 --- a/dist/jquery.geo-1.0.0-b2.min.js +++ b/dist/jquery.geo-1.0.0-b2.min.js @@ -1,6 +1,6 @@ -/*! jQuery Geo - v1.0.0-b2 - 2013-10-02 +/*! jQuery Geo - v1.0.0-b2 - 2013-10-04 * http://jquerygeo.com * Copyright (c) 2013 Ryan Westphal; Licensed MIT */ -document.createElement("canvas").getContext||function(){function a(){return this.context_||(this.context_=new q(this))}function b(a,b){var c=G.call(arguments,2);return function(){return a.apply(b,c.concat(G.call(arguments)))}}function c(a,b,c){a.namespaces[b]||a.namespaces.add(b,c,"#default#VML")}function d(a){if(c(a,"g_vml_","urn:schemas-microsoft-com:vml"),c(a,"g_o_","urn:schemas-microsoft-com:office:office"),!a.styleSheets.ex_canvas_){var b=a.createStyleSheet();b.owningElement.id="ex_canvas_",b.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}function e(a){var b=a.srcElement;switch(a.propertyName){case"width":b.getContext().clearRect(),b.style.width=b.attributes.width.nodeValue+"px",b.firstChild.style.width=b.clientWidth+"px";break;case"height":b.getContext().clearRect(),b.style.height=b.attributes.height.nodeValue+"px",b.firstChild.style.height=b.clientHeight+"px"}}function f(a){var b=a.srcElement;b.firstChild&&(b.firstChild.style.width=b.clientWidth+"px",b.firstChild.style.height=b.clientHeight+"px")}function g(){return[[1,0,0],[0,1,0],[0,0,1]]}function h(a,b){for(var c=g(),d=0;3>d;d++)for(var e=0;3>e;e++){for(var f=0,h=0;3>h;h++)f+=a[d][h]*b[h][e];c[d][e]=f}return c}function i(a,b){b.fillStyle=a.fillStyle,b.lineCap=a.lineCap,b.lineJoin=a.lineJoin,b.lineWidth=a.lineWidth,b.miterLimit=a.miterLimit,b.shadowBlur=a.shadowBlur,b.shadowColor=a.shadowColor,b.shadowOffsetX=a.shadowOffsetX,b.shadowOffsetY=a.shadowOffsetY,b.strokeStyle=a.strokeStyle,b.globalAlpha=a.globalAlpha,b.font=a.font,b.textAlign=a.textAlign,b.textBaseline=a.textBaseline,b.arcScaleX_=a.arcScaleX_,b.arcScaleY_=a.arcScaleY_,b.lineScale_=a.lineScale_}function j(a){var b=a.indexOf("(",3),c=a.indexOf(")",b+1),d=a.substring(b+1,c).split(",");return(4!=d.length||"a"!=a.charAt(3))&&(d[3]=1),d}function k(a){return parseFloat(a)/100}function l(a,b,c){return Math.min(c,Math.max(b,a))}function m(a){var b,c,d,e,f,g;if(e=parseFloat(a[0])/360%360,0>e&&e++,f=l(k(a[1]),0,1),g=l(k(a[2]),0,1),0==f)b=c=d=g;else{var h=.5>g?g*(1+f):g+f-g*f,i=2*g-h;b=n(i,h,e+1/3),c=n(i,h,e),d=n(i,h,e-1/3)}return"#"+I[Math.floor(255*b)]+I[Math.floor(255*c)]+I[Math.floor(255*d)]}function n(a,b,c){return 0>c&&c++,c>1&&c--,1>6*c?a+6*(b-a)*c:1>2*c?b:2>3*c?a+6*(b-a)*(2/3-c):a}function o(a){if(a in L)return L[a];var b,c=1;if(a=String(a),"#"==a.charAt(0))b=a;else if(/^rgb/.test(a)){for(var d,e=j(a),b="#",f=0;3>f;f++)d=-1!=e[f].indexOf("%")?Math.floor(255*k(e[f])):+e[f],b+=I[l(d,0,255)];c=+e[3]}else if(/^hsl/.test(a)){var e=j(a);b=m(e),c=e[3]}else b=a;return L[a]={color:b,alpha:c}}function p(a){return M[a]||"square"}function q(a){this.m_=g(),this.mStack_=[],this.aStack_=[],this.currentPath_=[],this.strokeStyle="#000",this.fillStyle="#000",this.lineWidth=1,this.lineJoin="miter",this.lineCap="butt",this.miterLimit=1*E,this.globalAlpha=1,this.canvas=a;var b="width:"+a.clientWidth+"px;height:"+a.clientHeight+"px;overflow:hidden;position:absolute",c=a.ownerDocument.createElement("div");c.style.cssText=b,a.appendChild(c);var d=c.cloneNode(!1);d.style.backgroundColor="red",d.style.filter="alpha(opacity=0)",a.appendChild(d),this.element_=c,this.arcScaleX_=1,this.arcScaleY_=1,this.lineScale_=1}function r(a,b,c,d){a.currentPath_.push({type:"bezierCurveTo",cp1x:b.x,cp1y:b.y,cp2x:c.x,cp2y:c.y,x:d.x,y:d.y}),a.currentX_=d.x,a.currentY_=d.y}function s(a,b){var c=o(a.strokeStyle),d=c.color,e=c.alpha*a.globalAlpha,f=a.lineScale_*a.lineWidth;1>f&&(e*=f),b.push("')}function t(a,b,c,d){a.fillStyle,a.arcScaleX_,a.arcScaleY_,d.x-c.x,d.y-c.y;var e=o(a.fillStyle),f=e.color,g=e.alpha*a.globalAlpha;b.push('')}function u(a,b,c){var d=a.m_;return{x:E*(b*d[0][0]+c*d[1][0]+d[2][0])-F,y:E*(b*d[0][1]+c*d[1][1]+d[2][1])-F}}function v(a){return isFinite(a[0][0])&&isFinite(a[0][1])&&isFinite(a[1][0])&&isFinite(a[1][1])&&isFinite(a[2][0])&&isFinite(a[2][1])}function w(a,b,c){if(v(b)&&(a.m_=b,c)){var d=b[0][0]*b[1][1]-b[0][1]*b[1][0];a.lineScale_=D(C(d))}}function x(a){this.code=this[a],this.message=a+": DOM Exception "+this.code}var y=Math,z=y.round,A=y.sin,B=y.cos,C=y.abs,D=y.sqrt,E=10,F=E/2;+navigator.userAgent.match(/MSIE ([\d.]+)?/)[1];var G=Array.prototype.slice;d(document);var H={init:function(a){var c=a||document;c.createElement("canvas"),c.attachEvent("onreadystatechange",b(this.init_,this,c))},init_:function(a){for(var b=a.getElementsByTagName("canvas"),c=0;cJ;J++)for(var K=0;16>K;K++)I[16*J+K]=J.toString(16)+K.toString(16);var L={},M={butt:"flat",round:"round"},N=q.prototype;N.clearRect=function(){this.textMeasureEl_&&(this.textMeasureEl_.removeNode(!0),this.textMeasureEl_=null),this.element_.innerHTML=""},N.beginPath=function(){this.currentPath_=[]},N.moveTo=function(a,b){var c=u(this,a,b);this.currentPath_.push({type:"moveTo",x:c.x,y:c.y}),this.currentX_=c.x,this.currentY_=c.y},N.lineTo=function(a,b){var c=u(this,a,b);this.currentPath_.push({type:"lineTo",x:c.x,y:c.y}),this.currentX_=c.x,this.currentY_=c.y},N.bezierCurveTo=function(a,b,c,d,e,f){var g=u(this,e,f),h=u(this,a,b),i=u(this,c,d);r(this,h,i,g)},N.quadraticCurveTo=function(a,b,c,d){var e=u(this,a,b),f=u(this,c,d),g={x:this.currentX_+2/3*(e.x-this.currentX_),y:this.currentY_+2/3*(e.y-this.currentY_)},h={x:g.x+(f.x-this.currentX_)/3,y:g.y+(f.y-this.currentY_)/3};r(this,g,h,f)},N.arc=function(a,b,c,d,e,f){c*=E;var g=f?"at":"wa",h=a+B(d)*c-F,i=b+A(d)*c-F,j=a+B(e)*c-F,k=b+A(e)*c-F;h!=j||f||(h+=.125);var l=u(this,a,b),m=u(this,h,i),n=u(this,j,k);this.currentPath_.push({type:g,x:l.x,y:l.y,radius:c,xStart:m.x,yStart:m.y,xEnd:n.x,yEnd:n.y})},N.stroke=function(a){var b=[],c=10,d=10;b.push("f.x)&&(f.x=i.x),(null==e.y||i.yf.y)&&(f.y=i.y))}b.push(' ">'),a?t(this,b,e,f):s(this,b),b.push(""),this.element_.insertAdjacentHTML("beforeEnd",b.join(""))},N.fill=function(){this.stroke(!0)},N.closePath=function(){this.currentPath_.push({type:"close"})},N.save=function(){var a={};i(this,a),this.aStack_.push(a),this.mStack_.push(this.m_),this.m_=h(g(),this.m_)},N.restore=function(){this.aStack_.length&&(i(this.aStack_.pop(),this),this.m_=this.mStack_.pop())},N.translate=function(a,b){var c=[[1,0,0],[0,1,0],[a,b,1]];w(this,h(c,this.m_),!1)},N.scale=function(a,b){this.arcScaleX_*=a,this.arcScaleY_*=b;var c=[[a,0,0],[0,b,0],[0,0,1]];w(this,h(c,this.m_),!0)};var O=x.prototype=new Error;O.INDEX_SIZE_ERR=1,O.DOMSTRING_SIZE_ERR=2,O.HIERARCHY_REQUEST_ERR=3,O.WRONG_DOCUMENT_ERR=4,O.INVALID_CHARACTER_ERR=5,O.NO_DATA_ALLOWED_ERR=6,O.NO_MODIFICATION_ALLOWED_ERR=7,O.NOT_FOUND_ERR=8,O.NOT_SUPPORTED_ERR=9,O.INUSE_ATTRIBUTE_ERR=10,O.INVALID_STATE_ERR=11,O.SYNTAX_ERR=12,O.INVALID_MODIFICATION_ERR=13,O.NAMESPACE_ERR=14,O.INVALID_ACCESS_ERR=15,O.VALIDATION_ERR=16,O.TYPE_MISMATCH_ERR=17,G_vmlCanvasManager=H,CanvasRenderingContext2D=q,DOMException=x}(),this.jsviews||this.jQuery&&jQuery.views||function(a,b){function c(a,b){var c="\\"+a.charAt(0),d="\\"+a.charAt(1),e="\\"+b.charAt(0),f="\\"+b.charAt(1);return Q.rTag=u=d+"(?:(?:(\\w+(?=[\\/\\s"+e+"]))|(?:(\\w+)?(:)|(>)|(\\*)))"+"\\s*((?:[^"+e+"]|"+e+"(?!"+f+"))*?)"+"(\\/)?|(?:\\/(\\w+)))"+e,u=new RegExp(c+u+f,"g"),v=new RegExp("<.*>|"+a+".*"+b),this}function d(a){var c=this,d=c.tmpl.helpers||{};return a=(c.ctx[a]!==b?c.ctx:d[a]!==b?d:k[a]!==b?k:{})[a],"function"!=typeof a?a:function(){return a.apply(c,arguments)}}function e(a,b,c){var d=b.tmpl.converters;return a=d&&d[a]||l[a],a?a.call(b,c):c}function f(a,c,d,e,f){f.props=f.props||{};var g,h=f.props.tmpl,k=c.tmpl.tags,l=c.tmpl.templates,n=arguments,o=k&&k[a]||j[a];return o?(e=e&&c.tmpl.tmpls[e-1],h=h||e||b,f.tmpl=""+h===h?l&&l[h]||i[h]||i(h):h,f.isTag=A,f.converter=d,f.view=c,f.renderContent=m,c.ctx&&w(f.ctx,c.ctx),g=o.apply(f,n.length>5?O.call(n,5):[]),g||(g==b?"":g.toString())):""}function g(a,c,e,f,g,h){var i=e.views,j={tmpl:g,path:c,parent:e,data:f,ctx:a,views:t.isArray(f)?[]:{},hlp:d};return t.isArray(i)?i.splice(j.index=h!==b?h:i.length,0,j):i[j.index="_"+I++]=j,j}function h(a,c,d,e,f){var g,h;if(d&&"object"==typeof d&&!d.nodeType){for(g in d)c(g,d[g]);return a}return d&&e!==b?""+d===d&&(null===e?delete c[d]:(e=f?f(d,e):e)&&(c[d]=e)):f&&(e=f(b,e||d)),(h=y.onStoreItem)&&h(c,d,e,f),e}function i(a,b){return h(this,i,a,b,q)}function j(a,b){return h(this,j,a,b)}function k(a,b){return h(this,k,a,b)}function l(a,b){return h(this,l,a,b)}function m(a,c,d,e,f){var h,j,k,l,m,n,o,p,q,r,s={},u=f===A,v=this,x="";if(v.isTag?(q=v.tmpl,c=c||v.ctx,d=d||v.view,e=e||v.path,f=f||v.index,s=v.props):q=v.jquery&&v[0]||v,d=d||Q.topView,p=d.ctx,r=q.layout,a===d&&(a=d.data,r=A),c=c&&c===p?p:p?(p=w({},p),c?w(p,c):p):c||{},s.link===z&&(c.link=z),q.fn||(q=i[q]||i(q)),m=c.link&&y.onRenderItem,n=c.link&&y.onRenderItems,q){if(t.isArray(a)&&!r)for(l=u?d:f!==b&&d||g(c,e,d,a,q,f),h=0,j=a.length;j>h;h++)k=a[h],o=q.fn(k,g(c,e,l,k,q,(f||0)+h),Q),x+=m?m(o,s):o;else l=u?d:g(c,e,d,a,q,f),x+=a||r?q.fn(a,l,Q):"";return d.topKey=l.index,n?n(x,e,l.index,q,s):x}return""}function n(){throw"Syntax error"}function o(a,b,c){function d(b){b-=D,b&&J.push(a.substr(D,b).replace(E,"\\n"))}function e(b,e,g,h,i,j,k,l,m,n){i&&(h=":",g="html");var o="",q="",r=!l&&!h;if(e=e||h,d(n),D=n+b.length,j?y&&J.push(["*",k.replace(F,"$1")]):e?("else"===e&&(K[5]=a.substring(K[5],n),K=I.pop(),J=K[3],r=A),k=k?p(k,c).replace(H,function(a,b,c){return b?q+=c+",":o+=c+",",""}):"",o=o.slice(0,-1),k=k.slice(0,-1),f=[e,g||"",k,r&&[],"{"+(o?"props:{"+o+"},":"")+"path:'"+k+"'"+(q?",ctx:{"+q.slice(0,-1)+"}":"")+"}"],r&&(I.push(K),K=f,K[5]=D),J.push(f)):m&&(K[5]=a.substring(K[5],n),K=I.pop()),!K)throw"Expected block tag";J=K[3]}var f,g,h,i,j,k,l,m,n,q,s,t,v,w,x,y,z=b?{allowCode:y=b.allowCode,debug:b.debug}:{},B=b&&b.tmpls,C=[],D=0,I=[],J=C,K=[,,,C],L=0;for(a=a.replace(G,"\\$1"),a.replace(u,e),d(a.length),i=C.length,j=i?"":'"";',h=0;i>h;h++)g=C[h],"*"===g[0]?j=j.slice(0,h?-1:-3)+";"+g[1]+(i>h+1?"ret+=":""):""+g===g?j+='"'+g+'"+':(s=g[0],t=g[1],v=g[2],J=g[3],w=g[4],a=g[5],J&&(x=r(a,z,b,L++),o(a,x),B.push(x)),q=q||w.indexOf("view")>-1,j+=(":"===s?"html"===t?(l=A,"e("+v):t?(n=A,'c("'+t+'",view,'+v):(m=A,"((v="+v+')!=u?v:""'):(k=A,'t("'+s+'",view,"'+(t||"")+'",'+(J?B.length:'""')+","+w+(v?",":"")+v))+")+");return j=new Function("data, view, j, b, u",M+(m?"v,":"")+(k?"t=j.tag,":"")+(n?"c=j.convert,":"")+(l?"e=j.converters.html,":"")+"ret; try{\n\n"+(z.debug?"debugger;":"")+(y?"ret=":"return ")+j.slice(0,-1)+";\n\n"+(y?"return ret;":"")+"}catch(e){return j.err(e);}"),b&&(b.fn=j,b.useVw=n||q||k),j}function p(a,b){function c(a,c,i,j,k,l,m,o,p,q,r,s,t,u,v,w){function x(a,c,d,e,f,g,h){if(c){var i=(d?'view.hlp("'+d+'")':e?"view":"data")+(h?(f?"."+f:d?"":e?"":"."+c)+(g||""):(h=d?"":e?f||"":c,""));return b&&"("!==p&&(i="b("+i+',"'+h+'")'),i+(h?"."+h:"")}return a}return k=k||"",i=i||c||r,j=j||o,p=p||v||"",k=k||"",l?(n(),void 0):h?(h=!s,h?a:'"'):g?(g=!t,g?a:'"'):(i?(f++,i):"")+(w?f?"":d?(d=z,"\b"):",":m?(f&&n(),d=A,"\b"+j+":"):j?j.replace(C,x)+(p?(e[++f]=A,p):k):k?a:u?(e[f--]=z,u+(p?(e[++f]=A,p):"")):q?(e[f]||n(),","):c?"":(h=s,g=t,'"'))}var d,e={},f=0,g=z,h=z;return a=(a+" ").replace(D,c)}function q(a,c,d,e){function f(b){return""+b===b||b.nodeType>0?(h=b.nodeType>0?b:!v.test(b)&&B&&B(b)[0],h&&h.type&&(b=i[h.getAttribute(L)],b||(a=a||"_"+J++,h.setAttribute(L,a),b=q(a,h.innerHTML,d,e),i[a]=b)),b):void 0}var g,h,j,k,l;if(g=f(c),e=e||(c.markup?c:{}),e.name=a,k=e.templates,!g&&c.markup&&(g=f(c.markup))&&(!g.fn||g.debug===c.debug&&g.allowCode===c.allowCode||(g=g.markup)),g!==b){a&&!d&&(P[a]=function(){return c.render.apply(c,arguments)}),g.fn||c.fn?g.fn&&(c=a&&a!==g.name?w(w({},g),e):g):(c=r(g,e,d,0),o(g,c));for(j in k)l=k[j],l.name!==j&&(k[j]=q(j,l,c));return c}}function r(a,b,c,d){function e(a){c[a]&&(f[a]=w(w({},c[a]),b[a]))}b=b||{};var f={markup:a,tmpls:[],links:[],render:m};return c&&(c.templates&&(f.templates=w(w({},c.templates),b.templates)),f.parent=c,f.name=c.name+"["+d+"]",f.index=d),w(f,b),c&&(e("templates"),e("tags"),e("helpers"),e("converters")),f}function s(a){return K[a]||(K[a]="&#"+a.charCodeAt(0)+";")}var t,u,v,w,x="v1.0pre",y={},z=!1,A=!0,B=a.jQuery,C=/^(?:null|true|false|\d[\d.]*|([\w$]+|~([\w$]+)|#(view|([\w$]+))?)([\w$.]*?)(?:[.[]([\w$]+)\]?)?|(['"]).*\8)$/g,D=/(\()(?=|\s*\()|(?:([([])\s*)?(?:([#~]?[\w$.]+)?\s*((\+\+|--)|\+|-|&&|\|\||===|!==|==|!=|<=|>=|[<>%*!:?\/]|(=))\s*|([#~]?[\w$.]+)([([])?)|(,\s*)|(\(?)\\?(?:(')|("))|(?:\s*([)\]])([([]?))|(\s+)/g,E=/\r?\n/g,F=/\\(['"])/g,G=/\\?(['"])/g,H=/\x08(~)?([^\x08]+)\x08/g,I=0,J=0,K={"&":"&","<":"<",">":">"},L="data-jsv-tmpl",M="var j=j||"+(B?"jQuery.":"js")+"views,",N=/[\x00"&'<>]/g,O=Array.prototype.slice,P={},Q={jsviews:x,sub:y,debugMode:A,err:function(a){return Q.debugMode?"
Error: "+(a.message||a)+". ":'""'},tmplFn:o,render:P,templates:i,tags:j,helpers:k,converters:l,View:g,convert:e,delimiters:c,tag:f};B?(t=B,t.templates=i,t.render=P,t.views=Q,t.fn.render=m):(t=a.jsviews=Q,t.extend=function(a,b){var c;a=a||{};for(c in b)a[c]=b[c];return a},t.isArray=Array&&Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)}),w=t.extend,Q.topView={views:{},tmpl:{},hlp:d,ctx:Q.helpers},j({"if":function(){var a=this,c=a.view;return c.onElse=function(a,d){for(var e=0,f=d.length;f&&!d[e++];)if(e===f)return"";return c.onElse=b,a.path="",a.renderContent(c)},c.onElse(this,arguments)},"else":function(){var a=this.view;return a.onElse?a.onElse(this,arguments):""},"for":function(){var a,b=this,c="",d=arguments,e=d.length;for(b.props.layout&&(b.tmpl.layout=A),a=0;e>a;a++)c+=b.renderContent(d[a]);return c},"=":function(a){return a},"*":function(a){return a}}),l({html:function(a){return a!=b?String(a).replace(N,s):""}}),c("{{","}}")}(this),function(a){function b(b){var c=b||window.event,d=[].slice.call(arguments,1),e=0,f=0,g=0;return b=a.event.fix(c),b.type="mousewheel",c.wheelDelta&&(e=c.wheelDelta/120),c.detail&&(e=-c.detail/3),g=e,void 0!==c.axis&&c.axis===c.HORIZONTAL_AXIS&&(g=0,f=-1*e),void 0!==c.wheelDeltaY&&(g=c.wheelDeltaY/120),void 0!==c.wheelDeltaX&&(f=-1*c.wheelDeltaX/120),d.unshift(b,e,f,g),(a.event.dispatch||a.event.handle).apply(this,d)}var c=["DOMMouseScroll","mousewheel"];if(a.event.fixHooks)for(var d=c.length;d;)a.event.fixHooks[c[--d]]=a.event.mouseHooks;a.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=c.length;a;)this.addEventListener(c[--a],b,!1);else this.onmousewheel=b},teardown:function(){if(this.removeEventListener)for(var a=c.length;a;)this.removeEventListener(c[--a],b,!1);else this.onmousewheel=null}},a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}(jQuery),$.widget||function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d,e=0;null!=(d=b[e]);e++)try{a(d).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){return c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}}),d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e,f=b.split(".")[0];b=b.split(".")[1],e=f+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][e]=function(c){return!!a.data(c,b)},a[f]=a[f]||{},a[f][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[f][b].prototype=a.extend(!0,g,{namespace:f,widgetName:b,widgetEventPrefix:a[f][b].prototype.widgetEventPrefix||b,widgetBaseClass:e},d),a.widget.bridge(b,a[f][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f="string"==typeof e,g=Array.prototype.slice.call(arguments,1),h=this;return e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e,f&&"_"===e.charAt(0)?h:(f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;return f!==d&&f!==b?(h=f,!1):void 0}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))}),h)}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(0===arguments.length)return a.extend({},this.options);if("string"==typeof c){if(d===b)return this.options[c];e={},e[c]=d}return this._setOptions(e),this},_setOptions:function(b){var c=this;return a.each(b,function(a,b){c._setOption(a,b)}),this},_setOption:function(a,b){return this.options[a]=b,"disabled"===a&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];if(d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent)for(e in f)e in c||(c[e]=f[e]);return this.element.trigger(c,d),!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}}(jQuery),function(a,b,c){b.toStaticHTML=b.toStaticHTML||function(a){return a};var d=Number.POSITIVE_INFINITY,e=Number.NEGATIVE_INFINITY;a.geo={_allCoordinates:function(b){for(var c=this._flatten(b),d=0,e=[];d1&&!a.isArray(b[0]))return b[0]>=-180.001&&b[0]<=180.001&&b[1]>=-90.001&&b[1]<=90.001;b=b[0]}return!1},center:function(b,c){var d=!1;!c&&a.geo.proj&&this._isGeodetic(b)&&(d=!0,b=a.geo.proj.fromGeodetic(b));var e=[(b[0]+b[2])/2,(b[1]+b[3])/2];return d?a.geo.proj.toGeodetic(e):e},expandBy:function(b,c,d,e){var f=!1;return!e&&a.geo.proj&&this._isGeodetic(b)&&(f=!0,b=a.geo.proj.fromGeodetic(b)),b=[b[0]-c,b[1]-d,b[2]+c,b[3]+d],f?a.geo.proj.toGeodetic(b):b},height:function(b,c){return!c&&a.geo.proj&&this._isGeodetic(b)&&(b=a.geo.proj.fromGeodetic(b)),b[3]-b[1]},_in:function(a,b){return a[0]<=b[0]&&a[1]<=b[1]&&a[2]>=b[2]&&a[3]>=b[3]},_bboxDisjoint:function(a,b){return b[0]>a[2]||b[2]a[3]||b[3]0&&(h/i>c?(f=h/2,g=f/c):(g=i/2,f=g*c),b=[j[0]-f,j[1]-g,j[0]+f,j[1]+g]),e?a.geo.proj.toGeodetic(b):b},recenter:function(b,c,d){var e=!1;!d&&a.geo.proj&&(this._isGeodetic(b)&&(e=!0,b=a.geo.proj.fromGeodetic(b)),this._isGeodetic(c)&&(c=a.geo.proj.fromGeodetic(c)));var f=(b[2]-b[0])/2,g=(b[3]-b[1])/2;return b=[c[0]-f,c[1]-g,c[0]+f,c[1]+g],e?a.geo.proj.toGeodetic(b):b},scaleBy:function(b,c,d){var e=!1;!d&&a.geo.proj&&this._isGeodetic(b)&&(e=!0,b=a.geo.proj.fromGeodetic(b));var f=this.center(b,!0),g=(b[2]-b[0])*c/2,h=(b[3]-b[1])*c/2;return b=[f[0]-g,f[1]-h,f[0]+g,f[1]+h],e?a.geo.proj.toGeodetic(b):b},width:function(b,c){return!c&&a.geo.proj&&this._isGeodetic(b)&&(b=a.geo.proj.fromGeodetic(b)),b[2]-b[0]},bbox:function(b,f){var g,h=!1;if(!b)return c;if(b.bbox)g=!f&&a.geo.proj&&this._isGeodetic(b.bbox)?a.geo.proj.fromGeodetic(b.bbox):b.bbox;else{g=[d,d,e,e];var i=this._allCoordinates(b),j=0;if(0===i.length)return c;for(!f&&a.geo.proj&&this._isGeodetic(i)&&(h=!0,i=a.geo.proj.fromGeodetic(i));j0?(g[0]=Math.min(Math.max(k[0][0],m[0]),m[2]),g[1]=Math.min(Math.max(k[0][1],m[1]),m[3]),{type:"Point",coordinates:n?a.geo.proj.toGeodetic(g):g}):c:(j*=3,g[0]=Math.min(Math.max(g[0]/j,m[0]),m[2]),g[1]=Math.min(Math.max(g[1]/j,m[1]),m[3]),{type:"Point",coordinates:n?a.geo.proj.toGeodetic(g):g});case"MultiPoint":if(b.coordinates.length>0)return g=b.coordinates[0],{type:"Point",coordinates:[g[0],g[1]]};break;case"MultiLineString":case"MultiPolygon":if(b.coordinates.length>0)return this.centroid({type:b.type.substr(5),coordinates:b.coordinates[0]},f)}return c},contains:function(a,b){if("Polygon"!==a.type)return!1;switch(b.type){case"Point":return this._containsPolygonPoint(a.coordinates,b.coordinates);case"LineString":return this._containsPolygonLineString(a.coordinates,b.coordinates);case"Polygon":return this._containsPolygonLineString(a.coordinates,b.coordinates[0]);default:return!1}},_containsPolygonPoint:function(a,b){if(0===a.length||a[0].length<4)return!1;for(var c,d,e=0,f=a[0][0],g=1;gb[0]&&e++),f=c;return 1===e%2},_containsPolygonLineString:function(a,b){for(var c=0;c0){var e=a[0],f=b[0]-e[0],g=b[1]-e[1];if(1===a.length)return Math.sqrt(f*f+g*g);for(var h=1;hn&&(c=n),e=i,f=l,g=m}}return Math.sqrt(c)},_distanceSegmentPoint:function(a,b,c,d,e,f){var g=a*c+b*d;if(0>=g)return c*c+d*d;var h=a*a+b*b;return g>=h?e*e+f*f:c*c+d*d-g*g/h},_distanceLineStringLineString:function(a,b){for(var c=d,e=0;e=k;k++)h=360*k/j*(Math.PI/180),i.push([g[0]+Math.cos(h)*d,g[1]+Math.sin(h)*d]);return{type:"Polygon",coordinates:[f?a.geo.proj.toGeodetic(i):i]}}return c},_basic:function(a){for(var b,c,d=[],e=0,f=this._flatten(a);eo;q++)n=o,o+=p[q]/m;return e=c-n,k=g[q-1],l=g[q],j=[k[0]+e*(l[0]-k[0]),k[1]+e*(l[1]-k[1])],{type:"Point",coordinates:r?a.geo.proj.toGeodetic(j):j}}},WKT:function(){function b(a){return"POINT "+c(a.coordinates)}function c(a){return a&&a.length?"("+a.join(" ")+")":"EMPTY"}function d(a){return"LINESTRING "+e(a.coordinates)}function e(a){if(a&&a.length){for(var b=[],c=0;c2?{type:"Point",coordinates:[parseFloat(b[1]),parseFloat(b[2])]}:null}function p(a){var b,c,d=a.match(/\s*\((.*)\)/),e=[],f=0;if(d&&d.length>1){for(b=d[1].match(/[\d\.\-]+\s+[\d\.\-]+/g);f1){for(b=d[1].match(/[\d\.\-]+\s+[\d\.\-]+/g);f0){for(;g
";while(c[0]);return a>6?a:!a}();a.widget("geo.geographics",{_$elem:c,_options:{},_trueCanvas:!0,_trueDoubleBuffer:!0,_width:0,_height:0,_$canvas:c,_context:c,_$canvasSceneFront:c,_$canvasSceneBack:c,_timeoutEnd:null,_requireFlip:!1,_blitcanvas:c,_blitcontext:c,_$labelsContainerFront:c,_$labelsContainerBack:c,_labelsHtml:"",options:{style:{borderRadius:"8px",color:"#7f0000",fillOpacity:.2,height:"8px",opacity:1,strokeOpacity:1,strokeWidth:"2px",visibility:"visible",width:"8px"},doubleBuffer:!0},_create:function(){this._$elem=this.element,this._options=this.options,this._$elem.css({webkitTransform:"translateZ(0)",display:"inline-block",overflow:"hidden",textAlign:"left"}),"static"===this._$elem.css("position")&&this._$elem.css("position","relative"),this._$elem.addClass("geo-graphics"),this._width=this._$elem.width(),this._height=this._$elem.height(),this._width&&this._height||(this._width=parseInt(this._$elem.css("width"),10),this._height=parseInt(this._$elem.css("height"),10));var c="position:absolute;left:0;top:0;margin:0;padding:0;",e="width:"+this._width+"px;height:"+this._height+"px;",f='width="'+this._width+'" height="'+this._height+'"';this._blitcanvas=document.createElement("canvas"),this._blitcanvas.getContext?(this._$canvas=a(b.toStaticHTML("')),this._blitcanvas.width=1,this._blitcanvas.height=1,this._trueDoubleBuffer=this._blitcanvas.toDataURL().length>6,this._options.doubleBuffer&&this._trueDoubleBuffer||this._$elem.append(this._$canvas),this._context=this._$canvas[0].getContext("2d"),this._blitcanvas.width=this._width,this._blitcanvas.height=this._height,this._blitcontext=this._blitcanvas.getContext("2d"),this._$canvasSceneFront=a(b.toStaticHTML('')).load(a.proxy(this._canvasSceneLoad,this)),this._$canvasSceneBack=a(b.toStaticHTML('')).load(a.proxy(this._canvasSceneLoad,this))):8>=d&&(this._trueCanvas=!1,this._$elem.append("
'),this._$canvas=this._$elem.children(":last"),G_vmlCanvasManager.initElement(this._$canvas[0]),this._context=this._$canvas[0].getContext("2d"),this._$canvas.children().css({backgroundColor:"transparent",width:this._width,height:this._height})),this._$labelsContainerFront=a(b.toStaticHTML('
')),this._$labelsContainerBack=a(b.toStaticHTML('
'))},_setOption:function(b,c){"style"===b&&(c=a.extend({},this._options.style,c)),a.Widget.prototype._setOption.apply(this,arguments)},destroy:function(){a.Widget.prototype.destroy.apply(this,arguments),this._$elem.html(""),this._$elem.removeClass("geo-graphics")},clear:function(){this._context.clearRect(0,0,this._width,this._height),this._labelsHtml="",this._end()},drawArc:function(a,b,c,d){if(d=this._getGraphicStyle(d),"hidden"!==d.visibility&&d.opacity>0&&d.widthValue>0&&d.heightValue>0){var e=Math.min(d.widthValue,d.heightValue)/2;b=b*Math.PI/180,c=c*Math.PI/180,this._context.save(),this._context.translate(a[0],a[1]),d.widthValue>d.heightValue?this._context.scale(d.widthValue/d.heightValue,1):this._context.scale(1,d.heightValue/d.widthValue),this._context.beginPath(),this._context.arc(0,0,e,b,c,!1),this._trueCanvas&&this._context.restore(),d.doFill&&(this._context.fillStyle=d.fill,this._context.globalAlpha=d.opacity*d.fillOpacity,this._context.fill()),d.doStroke&&(this._context.lineJoin="round",this._context.lineWidth=d.strokeWidthValue,this._context.strokeStyle=d.stroke,this._context.globalAlpha=d.opacity*d.strokeOpacity,this._context.stroke()),this._trueCanvas||this._context.restore()}this._end()},drawPoint:function(a,b){b=this._getGraphicStyle(b),b.widthValue===b.heightValue&&b.heightValue===b.borderRadiusValue?this.drawArc(a,0,360,b):"hidden"!==b.visibility&&b.opacity>0&&(b.borderRadiusValue=Math.min(Math.min(b.widthValue,b.heightValue)/2,b.borderRadiusValue),a[0]-=b.widthValue/2,a[1]-=b.heightValue/2,this._context.beginPath(),this._context.moveTo(a[0]+b.borderRadiusValue,a[1]),this._context.lineTo(a[0]+b.widthValue-b.borderRadiusValue,a[1]),this._context.quadraticCurveTo(a[0]+b.widthValue,a[1],a[0]+b.widthValue,a[1]+b.borderRadiusValue),this._context.lineTo(a[0]+b.widthValue,a[1]+b.heightValue-b.borderRadiusValue),this._context.quadraticCurveTo(a[0]+b.widthValue,a[1]+b.heightValue,a[0]+b.widthValue-b.borderRadiusValue,a[1]+b.heightValue),this._context.lineTo(a[0]+b.borderRadiusValue,a[1]+b.heightValue),this._context.quadraticCurveTo(a[0],a[1]+b.heightValue,a[0],a[1]+b.heightValue-b.borderRadiusValue),this._context.lineTo(a[0],a[1]+b.borderRadiusValue),this._context.quadraticCurveTo(a[0],a[1],a[0]+b.borderRadiusValue,a[1]),this._context.closePath(),b.doFill&&(this._context.fillStyle=b.fill,this._context.globalAlpha=b.opacity*b.fillOpacity,this._context.fill()),b.doStroke&&(this._context.lineJoin="round",this._context.lineWidth=b.strokeWidthValue,this._context.strokeStyle=b.stroke,this._context.globalAlpha=b.opacity*b.strokeOpacity,this._context.stroke()),this._end())},drawLineString:function(a,b){this._drawLines([a],!1,b)},drawPolygon:function(a,b){if(this._trueCanvas&&1!==a.length){if(!a||!a.length||a[0].length<3)return;b=this._getGraphicStyle(b);var c,d,e;if("hidden"!==b.visibility&&b.opacity>0){if(this._blitcontext.clearRect(0,0,this._width,this._height),b.doFill&&a.length>1)for(this._blitcontext.globalCompositeOperation="source-out",this._blitcontext.globalAlpha=1,d=1;d1))for(d=1;d'+b+""},resize:function(a,b){this._width=this._$elem.width(),this._height=this._$elem.height(),this._width&&this._height||(this._width=parseInt(this._$elem.css("width"),10),this._height=parseInt(this._$elem.css("height"),10)),this._trueCanvas?(this._$canvas[0].width=this._width,this._$canvas[0].height=this._height,this._$canvasSceneFront.css({left:a,top:b}),this._$canvasSceneBack.css({width:this._width,height:this._height})):this._$canvas.css({width:this._width,height:this._height});var c=this._$labelsContainerFront.position();this._$labelsContainerFront.css({left:c.left+a,top:c.top+b,width:this._width,height:this._height}),this._$labelsContainerBack.css({width:this._width,height:this._height})},interactiveTransform:function(a,b){if(this._timeoutEnd&&(clearTimeout(this._timeoutEnd),this._timeoutEnd=null),this._trueCanvas)if(this._options.doubleBuffer&&this._trueDoubleBuffer){if(this._requireFlip){var c=this,d=c._$canvasSceneFront;c._$canvasSceneFront=c._$canvasSceneBack.css({left:0,top:0,width:c._width,height:c._height}).prop("src",c._$canvas[0].toDataURL()).prependTo(c._$elem),c._$canvasSceneBack=d.prop("src","").detach(),c._requireFlip=!1}this._$canvasSceneFront.css({left:Math.round(a[0]),top:Math.round(a[1]),width:this._width*b,height:this._height*b})}else this._context.clearRect(0,0,this._width,this._height);else this._context.clearRect(0,0,this._width,this._height);this._$labelsContainerFront.css({left:Math.round(a[0]),top:Math.round(a[1]),width:this._width*b,height:this._height*b})},_canvasSceneLoad:function(){var a=this;if(a._requireFlip){a._requireFlip=!1;var b=a._$canvasSceneFront;a._$canvasSceneFront=a._$canvasSceneBack.css({left:0,top:0,width:a._width,height:a._height}).prependTo(a._$elem),a._$canvasSceneBack=b.prop("src","").detach()}},_endCallback:function(){var a=this;if(a._timeoutEnd){a._trueCanvas&&a._options.doubleBuffer&&a._trueDoubleBuffer&&a._$canvasSceneBack.prop("src",a._$canvas[0].toDataURL()),a._$labelsContainerBack.html(b.toStaticHTML(a._labelsHtml)).find("a").css({position:"relative",zIndex:1,display:"inline-block",webkitTransform:"translateZ(0)"});var c=a._$labelsContainerFront;a._$labelsContainerFront=a._$labelsContainerBack.css({left:0,top:0,width:a._width,height:a._height}).prependTo(a._$elem),a._$labelsContainerBack=c.detach(),a._timeoutEnd=null}},_end:function(){this._timeoutEnd&&(clearTimeout(this._timeoutEnd),this._timeoutEnd=null),this._requireFlip=!0,this._timeoutEnd=setTimeout(a.proxy(this._endCallback,this),20)},_getGraphicStyle:function(b){function c(a){return a=parseInt(a,10),+a+""===a?+a:a}return b=a.extend({},this._options.style,b),b.borderRadiusValue=c(b.borderRadius),b.fill=b.fill||b.color,b.doFill=b.fill&&b.fillOpacity>0,b.stroke=b.stroke||b.color,b.strokeWidthValue=c(b.strokeWidth),b.doStroke=b.stroke&&b.strokeOpacity>0&&b.strokeWidthValue>0,b.widthValue=c(b.width),b.heightValue=c(b.height),b},_drawLines:function(a,b,c){if(a&&a.length&&!(a[0].length<2)){var d,e;if(c=this._getGraphicStyle(c),"hidden"!==c.visibility&&c.opacity>0){for(this._context.beginPath(),d=0;d
";while(c[0]);return a>6?a:!a}(),f={bbox:[-180,-85,180,85],bboxMax:[-180,-85,180,85],center:[0,0],cursors:{"static":"default",pan:"url(data:image/vnd.microsoft.icon;base64,AAACAAEAICACAAgACAAwAQAAFgAAACgAAAAgAAAAQAAAAAEAAQAAAAAAAAEAAAAAAAAAAAAAAgAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8AAAA/AAAAfwAAAP+AAAH/gAAB/8AAA//AAAd/wAAGf+AAAH9gAADbYAAA2yAAAZsAAAGbAAAAGAAAAAAAAA//////////////////////////////////////////////////////////////////////////////////////gH///4B///8Af//+AD///AA///wAH//4AB//8AAf//AAD//5AA///gAP//4AD//8AF///AB///5A////5///8=), move",click:"crosshair",zoom:"crosshair",dragBox:"crosshair",dragCircle:"crosshair",drawPoint:"crosshair",drawLineString:"crosshair",drawPolygon:"crosshair",measureLength:"crosshair",measureArea:"crosshair"},measureLabels:{length:"{{:length.toFixed( 2 )}} m",area:"{{:area.toFixed( 2 )}} sq m"},drawStyle:{},shapeStyle:{},mode:"pan",pannable:!0,scroll:"default",shift:"default",services:[{"class":"osm",type:"tiled",src:function(a){return"http://otile"+(a.index%4+1)+".mqcdn.com/tiles/1.0.0/osm/"+a.zoom+"/"+a.tile.column+"/"+a.tile.row+".png"},attr:"Tiles Courtesy of MapQuest "}],tilingScheme:{tileWidth:256,tileHeight:256,levels:18,basePixelSize:156543.03392799935,origin:[-20037508.342787,20037508.342787]},axisLayout:"map",zoom:0,zoomMin:0,zoomMax:Number.POSITIVE_INFINITY,zoomFactor:2,pixelSize:0};a.widget("geo.geomap",{_$elem:c,_map:c,_created:!1,_createdGraphics:!1,_widgetId:0,_tmplLengthId:"",_tmplAreaId:"",_contentBounds:{},_$resizeContainer:c,_$eventTarget:c,_$contentFrame:c,_$existingChildren:c,_$attrList:c,_$servicesContainer:c,_$shapesContainers:c,_$panContainer:c,_$shapesContainer:c,_$drawContainer:c,_$measureContainer:c,_$measureLabel:c,_dpi:96,_currentServices:[],_center:c,_pixelSize:c,_centerMax:c,_pixelSizeMax:c,_userGeodetic:!0,_centerInteractive:c,_pixelSizeInteractive:c,_timeoutInteractive:null,_triggerInteractive:!1,_timeoutRefreshShapes:null,_loadCount:0,_wheelLevel:0,_fullZoomFactor:2,_partialZoomFactor:1.18920711500273,_mouseDown:c,_inOp:c,_toolPan:c,_shiftDown:c,_anchor:c,_current:c,_downDate:c,_moveDate:c,_clickDate:c,_lastMove:c,_lastDrag:c,_windowHandler:null,_resizeTimeout:null,_panning:c,_velocity:c,_friction:c,_supportTouch:c,_softDblClick:c,_isTap:c,_isDbltap:c,_isMultiTouch:c,_multiTouchAnchor:[],_multiTouchAnchorBbox:c,_multiTouchCurrentBbox:c,_drawTimeout:null,_drawPixels:[],_drawCoords:[],_graphicShapes:[],_initOptions:{},_options:{},options:a.extend({},f),_createWidget:function(b,c){if(this._$elem=a(c),this._$elem.is(".geo-service"))return this._graphicShapes=[],a.Widget.prototype._createWidget.apply(this,arguments),void 0;this._widgetId=d++,this._serviceIdSeed=0,this._tmplLengthId="geoMeasureLength"+this._widgetId,this._tmplAreaId="geoMeasureArea"+this._widgetId,this._$elem.addClass("geo-map").css({webkitTransform:"translateZ(0)"}),this._initOptions=b||{},this._forcePosition(this._$elem),this._$elem.css("text-align","left");var e=this._findMapSize();this._contentBounds={x:parseInt(this._$elem.css("padding-left"),10),y:parseInt(this._$elem.css("padding-top"),10),width:e.width,height:e.height},this._createChildren(),this._center=[0,0],this._centerMax=[0,0],this._centerInteractive=[0,0],this.options.pixelSize=this._pixelSize=this._pixelSizeMax=156543.03392799935,this._mouseDown=this._inOp=this._toolPan=this._shiftDown=this._panning=this._isTap=this._isDbltap=!1,this._anchor=[0,0],this._current=[0,0],this._lastMove=[0,0],this._lastDrag=[0,0],this._velocity=[0,0],this._friction=[.8,.8],this._downDate=this._moveDate=this._clickDate=0,this._drawPixels=[],this._drawCoords=[],this._graphicShapes=[],a.Widget.prototype._createWidget.apply(this,arguments)},_create:function(){if(this._options=this.options,this._$elem.is(".geo-service"))return this._map=this._$elem.data("geoMap"),this._$elem.data("geoService",this),void 0;this._map=this,this._supportTouch="ontouchend"in document,this._softDblClick=this._supportTouch||7===e;var d=this,f=this._supportTouch?"touchstart mousedown":"mousedown",g=this._supportTouch?"touchend touchcancel mouseup":"mouseup",h=this._supportTouch?"touchmove mousemove":"mousemove";a(document).keydown(a.proxy(this._document_keydown,this)),this._$eventTarget.dblclick(a.proxy(this._eventTarget_dblclick,this)),this._$eventTarget.bind(f,a.proxy(this._eventTarget_touchstart,this));var i=this._$eventTarget[0].setCapture?this._$eventTarget:a(document);i.bind(h,a.proxy(this._dragTarget_touchmove,this)),i.bind(g,a.proxy(this._dragTarget_touchstop,this)),this._$eventTarget.mousewheel(a.proxy(this._eventTarget_mousewheel,this)),this._windowHandler=function(){d._resizeTimeout&&clearTimeout(d._resizeTimeout),d._resizeTimeout=setTimeout(function(){d._created&&d._$elem.geomap("resize",!0)},500)},a(b).resize(this._windowHandler),this._$drawContainer.geographics({style:this._initOptions.drawStyle||{},doubleBuffer:!1}),this._options.drawStyle=this._$drawContainer.geographics("option","style"),this._$shapesContainer.geographics({style:this._initOptions.shapeStyle||{}}),this._createdGraphics=!0,this._options.shapeStyle=this._$shapesContainer.geographics("option","style"),this._initOptions&&(this._initOptions.tilingScheme!==c&&this._setOption("tilingScheme",this._initOptions.tilingScheme||null,!1),this._initOptions.services&&(this._options.services=a.merge([],this._initOptions.services)),this._initOptions.bboxMax&&(this._setOption("bboxMax",this._initOptions.bboxMax,!1),this._setOption("bbox",this._initOptions.bboxMax,!1)),this._initOptions.zoomMin!==c&&this._setOption("zoomMin",this._initOptions.zoomMin,!1),this._initOptions.zoomMax!==c&&this._setOption("zoomMax",this._initOptions.zoomMax,!1),this._initOptions.zoomFactor!==c&&(this._setOption("zoomFactor",this._initOptions.zoomFactor,!1),this._fullZoomFactor=this._initOptions.zoomFactor,this._partialZoomFactor=Math.pow(4,1/this._fullZoomFactor)),this._initOptions.bbox&&this._setOption("bbox",this._initOptions.bbox,!1),this._initOptions.center&&this._setOption("center",this._initOptions.center,!1),this._initOptions.zoom!==c&&this._setOption("zoom",this._initOptions.zoom,!1)),a.templates(this._tmplLengthId,this._options.measureLabels.length),a.templates(this._tmplAreaId,this._options.measureLabels.area),this._$eventTarget.css("cursor",this._options.cursors[this._options.mode]),this._createServices(),this._refresh(),this._created=!0},_setOption:function(b,d,e){if("pixelSize"!==b){e=e===c||e,this._$elem.is(".geo-map")&&this._panFinalize();var f,g,h,i;switch(b){case"bbox":this._created&&this._clearInteractiveTimeout(),this._userGeodetic="map"===this._options.axisLayout&&a.geo.proj&&a.geo._isGeodetic(d),this._userGeodetic&&(d=a.geo.proj.fromGeodetic(d)),f=[d[0]+(d[2]-d[0])/2,d[1]+(d[3]-d[1])/2],g=Math.max(a.geo.width(d,!0)/this._contentBounds.width,a.geo.height(d,!0)/this._contentBounds.height),i=this._getZoom(f,g),this._options.tilingScheme?g=this._getPixelSize(Math.min(Math.max(i,this._options.zoomMin),this._options.zoomMax)):ithis._options.zoomMax&&(g=this._getPixelSize(this._options.zoomMax)),this._created?(this._setInteractiveCenterAndSize(f,g),this._setInteractiveTimeout(!1)):this._setCenterAndSize(f,g,!1,e),d=this._getBbox(f,g);break;case"bboxMax":this._userGeodetic="map"===this._options.axisLayout&&a.geo.proj&&a.geo._isGeodetic(d);break;case"center":this._created&&this._clearInteractiveTimeout(),this._userGeodetic="map"===this._options.axisLayout&&a.geo.proj&&a.geo._isGeodetic(d),this._userGeodetic&&(d=a.geo.proj.fromGeodetic(d)),this._created?(this._setInteractiveCenterAndSize(d,this._pixelSizeInteractive),this._interactiveTransform(),this._setInteractiveTimeout(!1)):this._setCenterAndSize(d,this._pixelSize,!1,e);break;case"measureLabels":d=a.extend(this._options.measureLabels,d),a.templates(this._tmplLengthId,this._options.measureLabels.length),a.templates(this._tmplAreaId,this._options.measureLabels.area);break;case"drawStyle":this._$drawContainer&&(this._$drawContainer.geographics("option","style",d),d=this._$drawContainer.geographics("option","style"));break;case"shapeStyle":this._$elem.is(".geo-service")&&!this._createdGraphics&&this._createServiceGraphics(),this._createdGraphics&&(this._$shapesContainer.geographics("option","style",d),d=this._$shapesContainer.geographics("option","style"));break;case"mode":this._resetDrawing(),this._$eventTarget.css("cursor",this._options.cursors[d]);break;case"zoom":this._created?this._setZoom(d,!1,e):(d=Math.max(d,0),this._setCenterAndSize(this._center,this._getPixelSize(d),!1,e))}switch(a.Widget.prototype._setOption.apply(this,arguments),b){case"bbox":case"center":this._userGeodetic&&(this._options.bbox=a.geo.proj.toGeodetic(this._options.bbox),this._options.center=a.geo.proj.toGeodetic(this._center));break;case"tilingScheme":null!==d&&(this._pixelSizeMax=this._getPixelSize(0),this._centerMax=[d.origin[0]+this._pixelSizeMax*d.tileWidth/2,d.origin[1]+this._pixelSizeMax*d.tileHeight/2]);break;case"bboxMax":h=this._userGeodetic?a.geo.proj.fromGeodetic(d):d,this._centerMax=a.geo.center(h),this._pixelSizeMax=Math.max(a.geo.width(h,!0)/this._contentBounds.width,a.geo.height(h,!0)/this._contentBounds.height);break;case"services":this._createServices(),e&&(this._refresh(),this._refreshAllShapes());break;case"shapeStyle":e&&this._createdGraphics&&(this._$shapesContainer.geographics("clear"),this._refreshShapes(this._$shapesContainer,this._graphicShapes,this._graphicShapes,this._graphicShapes))}}},destroy:function(){if(this._$elem.is(".geo-service"))this._createdGraphics&&(this._$shapesContainer.geographics("destroy"),this._$shapesContainer=c,this._createdGraphics=!1);else{clearTimeout(this._timeoutInteractive),this._timeoutInteractive=null,this._created=!1,a(b).unbind("resize",this._windowHandler);for(var d=0;d=0||1>=b)for(var d=0;d0)){this._createdGraphics||this._createServiceGraphics();var d,e,f,g,h,i;for(d=a.isArray(b)?b:"FeatureCollection"===b.type?b.features:[b],f=1;f0)){for(var e,f=a.isArray(b)?b:[b],g=0;g=0&&(e=this._graphicShapes.slice(g+1),this._graphicShapes.length=g,this._graphicShapes.push.apply(this._graphicShapes,e),g--);(d===c||d)&&(this._$elem.is(".geo-service")?this._refresh(!1,this._$elem):this._refresh(),this._refreshAllShapes())}},_getBbox:function(a,b){a=a||this._center,b=b||this._pixelSize;var c=this._contentBounds.width/2*b,d=this._contentBounds.height/2*b;return[a[0]-c,a[1]-d,a[0]+c,a[1]+d]},_setBbox:function(b){var c=[b[0]+(b[2]-b[0])/2,b[1]+(b[3]-b[1])/2],d=Math.max(a.geo.width(b,!0)/this._contentBounds.width,a.geo.height(b,!0)/this._contentBounds.height),e=this._getZoom(c,d);this._options.tilingScheme?d=this._getPixelSize(Math.min(Math.max(e,this._options.zoomMin),this._options.zoomMax)):ethis._options.zoomMax&&(d=this._getPixelSize(this._options.zoomMax)),this._setInteractiveCenterAndSize(c,d),this._interactiveTransform()},_getBboxMax:function(){var a=this._contentBounds.width/2*this._pixelSizeMax,b=this._contentBounds.height/2*this._pixelSizeMax;return[this._centerMax[0]-a,this._centerMax[1]-b,this._centerMax[0]+a,this._centerMax[1]+b]},_getCenter:function(){return this._center},_getContentBounds:function(){return this._contentBounds},_getServicesContainer:function(){return this._$servicesContainer},_getZoom:function(b,c){b=b||this._center,c=c||this._pixelSize;var d=this._options.tilingScheme;if(d){if(d.pixelSizes){for(var e=Math.floor(1e3*c),f=d.pixelSizes.length,g=f-1;g>=0;g--)if(Math.floor(1e3*d.pixelSizes[g])>=e)return g;return 0}return Math.round(Math.log(d.basePixelSize/c)/Math.log(2))}var h=this._contentBounds.width/this._contentBounds.height,i=a.geo.reaspect(this._getBbox(b,c),h,!0),j=a.geo.reaspect(this._getBboxMax(),h,!0);return Math.round(Math.log(a.geo.width(j,!0)/a.geo.width(i,!0))/Math.log(this._fullZoomFactor))},_setZoom:function(a,b){this._clearInteractiveTimeout(),a=Math.min(Math.max(a,this._options.zoomMin),this._options.zoomMax),this._setInteractiveCenterAndSize(this._centerInteractive,this._getPixelSize(a)),this._interactiveTransform(),this._setInteractiveTimeout(b)},_createChildren:function(){this._$existingChildren=this._$elem.children(),this._forcePosition(this._$existingChildren),this._$existingChildren.detach().css({mozUserSelect:"none"});var c="width:"+this._contentBounds.width+"px; height:"+this._contentBounds.height+"px; margin:0; padding:0;",d="position:absolute; left:0; top:0;";this._$elem.prepend(b.toStaticHTML('
')),this._$eventTarget=this._$contentFrame=this._$elem.children(":first"),this._$contentFrame.append('
'),this._$servicesContainer=this._$contentFrame.children(":last"),this._$contentFrame.append('
    '),this._$attrList=this._$contentFrame.children(":last"),this._$contentFrame.append('
    '),this._$drawContainer=this._$contentFrame.children(":last"),this._$contentFrame.append('
    '),this._$measureContainer=this._$contentFrame.children(":last"),this._$measureLabel=this._$measureContainer.children(),this._$contentFrame.append('
    '),this._$shapesContainer=this._$contentFrame.children(":last"),this._$panContainer=a([this._$shapesContainer[0],this._$drawContainer[0],this._$measureContainer[0]]),this._$resizeContainer=a([this._$contentFrame[0],this._$servicesContainer[0],this._$eventTarget[0],this._$measureContainer[0]]),this._$contentFrame.append(this._$existingChildren),a("#geo-measure-style").length||a("head").prepend(b.toStaticHTML('"))},_createServices:function(){var c,d;for(d=0;d';this._$servicesContainer.append(b.toStaticHTML(h)),e=this._$servicesContainer.children(":last"),c.serviceContainer=e,a.geo._serviceTypes[c.type].create(this,e,c,d),e.data("geoMap",this).geomap(),c.attr&&this._$attrList.append("
  • "+c.attr+"
  • ")}this._$shapesContainers=this._$shapesContainer,this._$attrList.find("a").css({position:"relative",zIndex:1,display:"inline-block",webkitTransform:"translateZ(0)"}) -},_createServiceGraphics:function(){var a=this._$elem.closest(".geo-content-frame");this._$elem.append('
    '),this._$shapesContainer=this._$elem.children(":last"),this._map._$shapesContainers=this._map._$shapesContainers.add(this._$shapesContainer),this._$shapesContainer.geographics(),this._createdGraphics=!0,this._options.shapeStyle=this._$shapesContainer.geographics("option","style")},_refreshDrawing:function(){if(this._$drawContainer.geographics("clear"),this._drawPixels.length>0){var b,c,d,e,f,g=this._options.mode,h=this._drawPixels,i=this._drawCoords;switch(g){case"measureLength":g="drawLineString",c={type:"LineString",coordinates:i},b=a.render[this._tmplLengthId]({length:a.geo.length(c,!0)}),d=a.merge([],h[h.length-1]);break;case"measureArea":g="drawPolygon",c={type:"Polygon",coordinates:[a.merge([],i)]},c.coordinates[0].push(i[0]),b=a.render[this._tmplAreaId]({area:a.geo.area(c,!0)}),d=this._toPixel(a.geo.centroid(c).coordinates),h=[h];break;case"drawPolygon":h=[h]}this._$drawContainer.geographics(g,h),b&&(this._$measureLabel.html(b),e=this._contentBounds.width-(this._$measureLabel.outerWidth(!0)+d[0]),f=this._contentBounds.height-(this._$measureLabel.outerHeight(!0)+d[1]),0>e&&(d[0]+=e),0>f&&(d[1]+=f),this._$measureLabel.css({left:Math.max(d[0],0),top:Math.max(d[1],0)}).show())}},_resetDrawing:function(){this._drawPixels=[],this._drawCoords=[],this._$drawContainer.geographics("clear"),this._$measureLabel.hide()},_refreshAllShapes:function(){this._timeoutRefreshShapes=null;for(var a,b,c=0;c0&&b._refreshShapes(b._$shapesContainer,b._graphicShapes,b._graphicShapes,b._graphicShapes));this._createdGraphics&&(this._$shapesContainer.geographics("clear"),this._graphicShapes.length>0&&this._refreshShapes(this._$shapesContainer,this._graphicShapes,this._graphicShapes,this._graphicShapes))},_refreshShapes:function(b,d,e,f,g,h){var i,j,k,l,m,n,o,p,q,r=this._map._getBbox(g,h);for(i=0;i0&&a.height>0);)a={width:b.width(),height:b.height()},(a.width<=0||a.height<=0)&&(a={width:parseInt(b.css("width"),10),height:parseInt(b.css("height"),10)}),b=b.parent();return a},_forcePosition:function(a){var b=a.css("position");"relative"!==b&&"absolute"!==b&&"fixed"!==b&&a.css("position","relative")},_getPixelSize:function(b){var c=this._options.tilingScheme;if(null!==c){if(0===b)return c.pixelSizes?c.pixelSizes[0]:c.basePixelSize;b=Math.round(b),b=Math.max(b,0);var d=c.pixelSizes?c.pixelSizes.length:c.levels;return b=Math.min(b,d-1),c.pixelSizes?c.pixelSizes[b]:c.basePixelSize/Math.pow(2,b)}var e=a.geo.scaleBy(this._getBboxMax(),1/Math.pow(this._fullZoomFactor,b),!0);return Math.max(a.geo.width(e,!0)/this._contentBounds.width,a.geo.height(e,!0)/this._contentBounds.height)},_getZoomCenterAndSize:function(a,b,c){var d=c?this._fullZoomFactor:this._partialZoomFactor,e=Math.pow(d,-b),f=this._pixelSizeInteractive*e,g=this._getZoom(this._centerInteractive,f);c&&this._options.tilingScheme?f=this._getPixelSize(Math.min(Math.max(g,this._options.zoomMin),this._options.zoomMax)):0>b&&g0&&g>this._options.zoomMax&&(f=this._pixelSizeInteractive);var h=f/this._pixelSizeInteractive,i=this._toMap(a,this._centerInteractive,this._pixelSizeInteractive),j=[(this._centerInteractive[0]-i[0])*h,(this._centerInteractive[1]-i[1])*h],k=[i[0]+j[0],i[1]+j[1]];return{pixelSize:f,center:k}},_panFinalize:function(){this._panning&&(this._velocity=[0,0],this._$eventTarget.css("cursor",this._options.cursors[this._options.mode]),this._inOp=!1,this._anchor=this._current,this._mouseDown=this._toolPan=this._panning=!1)},_panMove:function(){if(this._options.pannable){var a=this._current[0]-this._lastDrag[0],b=this._current[1]-this._lastDrag[1];(this._toolPan||a>3||-3>a||b>3||-3>b)&&(this._toolPan||(this._toolPan=!0,this._$eventTarget.css("cursor",this._options.cursors.pan)),this._mouseDown&&(this._velocity=[a,b]),(0!==a||0!==b)&&(this._panning=!0,this._lastDrag=this._current,this._centerInteractive[0]-=a*this._pixelSizeInteractive,this._centerInteractive[1]+=("image"===this._options.axisLayout?-1:1)*b*this._pixelSizeInteractive,this._setInteractiveCenterAndSize(this._centerInteractive,this._pixelSizeInteractive),this._interactiveTransform()))}},_clearInteractiveTimeout:function(){return this._timeoutRefreshShapes&&(clearTimeout(this._timeoutRefreshShapes),this._timeoutRefreshShapes=null),this._timeoutInteractive?(clearTimeout(this._timeoutInteractive),this._timeoutInteractive=null,!0):(this._centerInteractive[0]=this._center[0],this._centerInteractive[1]=this._center[1],this._pixelSizeInteractive=this._pixelSize,!1)},_interactiveTransform:function(){var b,c=this._pixelSize,d=c/this._pixelSizeInteractive;if(c>0){d=Math.round(1e3*d)/1e3;var e=this._toMap([0,0]),f=this._toPixel(e,this._centerInteractive,this._pixelSizeInteractive);this._$shapesContainers.geographics("interactiveTransform",f,d)}for(var g=0;g0&&(this._drawPixels=this._toPixel(this._drawCoords,this._centerInteractive,this._pixelSizeInteractive),this._refreshDrawing())},_interactiveTimeout:function(){this._isMultiTouch?this._timeoutInteractive=setTimeout(a.proxy(this._interactiveTimeout,this),128):this._created&&this._timeoutInteractive&&(this._setCenterAndSize(this._centerInteractive,this._pixelSizeInteractive,this._triggerInteractive,!0),this._timeoutInteractive=null,this._triggerInteractive=!1,this._timeoutRefreshShapes=setTimeout(a.proxy(this._refreshAllShapes,this),128))},_setInteractiveTimeout:function(b){this._timeoutInteractive=setTimeout(a.proxy(this._interactiveTimeout,this),128),this._triggerInteractive|=b},_refresh:function(b,c){for(var d,e=0;ethis._options.zoomMax&&(this._pixelSizeInteractive=d=this._getPixelSize(this._options.zoomMax)),this._center[0]=c[0],this._center[1]=c[1],this._options.pixelSize=this._pixelSize=d,this._userGeodetic?(this._options.bbox=a.geo.proj.toGeodetic(this._getBbox()),this._options.center=a.geo.proj.toGeodetic(this._center)):(this._options.bbox=this._getBbox(),this._options.center=a.merge([],c)),this._options.zoom=g,e&&this._trigger("bboxchange",b.event,{bbox:a.merge([],this._options.bbox)}),f&&(this._refresh(),this._refreshAllShapes(),this._refreshDrawing())}},_requestQueued:function(){0===this._loadCount&&this._trigger("loadstart",b.event),this._loadCount++},_requestComplete:function(){this._loadCount--,this._loadCount<=0&&(this._loadCount=0,this._trigger("loadend",b.event))},_toMap:function(b,c,d){c=c||this._center,d=d||this._pixelSize;var e,f,g,h,i=a.isArray(b[0]),j=i&&a.isArray(b[0][0]),k=j&&a.isArray(b[0][0][0]),l=this._contentBounds.width,m=this._contentBounds.height,n=l/2*d,o=m/2*d,p=[c[0]-n,c[1]-o,c[0]+n,c[1]+o],q=a.geo.width(p,!0)/l,r=a.geo.height(p,!0)/m,s="image"===this._options.axisLayout,t=[];for(k||(j||(i||(b=[b]),b=[b]),b=[b]),f=0;f0&&27===b.which&&(2>=c?(this._resetDrawing(),this._inOp=!1):(this._drawCoords[c-2]=a.merge([],this._drawCoords[c-1]),this._drawPixels[c-2]=a.merge([],this._drawPixels[c-1]),this._drawCoords.length--,this._drawPixels.length--,this._refreshDrawing()))},_eventTarget_dblclick_zoom:function(a){var b=this._clearInteractiveTimeout();if(this._trigger("dblclick",a,{type:"Point",coordinates:this._toMap(this._current,this._centerInteractive,this._pixelSizeInteractive)}),!a.isDefaultPrevented()){var c=this._getZoomCenterAndSize(this._current,1,!0);this._setInteractiveCenterAndSize(c.center,c.pixelSize),this._interactiveTransform(),b=!0}b&&this._setInteractiveTimeout(!0)},_eventTarget_dblclick:function(c){if("static"!==this._options.mode){switch(this._drawTimeout&&(b.clearTimeout(this._drawTimeout),this._drawTimeout=null),this._options.mode){case"drawLineString":case"measureLength":this._drawCoords.length>1&&(this._drawCoords[0][0]!==this._drawCoords[1][0]||this._drawCoords[0][1]!==this._drawCoords[1][1])?(this._drawCoords.length--,this._trigger("shape",c,{type:"LineString",coordinates:this._userGeodetic?a.geo.proj.toGeodetic(this._drawCoords):this._drawCoords})):this._eventTarget_dblclick_zoom(c),this._resetDrawing();break;case"drawPolygon":case"measureArea":if(this._drawCoords.length>1&&(this._drawCoords[0][0]!==this._drawCoords[1][0]||this._drawCoords[0][1]!==this._drawCoords[1][1])){var d=this._drawCoords.length-1;d>2&&(this._drawCoords[d]=a.merge([],this._drawCoords[0]),this._trigger("shape",c,{type:"Polygon",coordinates:[this._userGeodetic?a.geo.proj.toGeodetic(this._drawCoords):this._drawCoords]}))}else this._eventTarget_dblclick_zoom(c);this._resetDrawing();break;default:this._eventTarget_dblclick_zoom(c)}this._inOp=!1}},_eventTarget_touchstart:function(b){if("undefined"!=typeof document.elementFromPoint){var c=document.elementFromPoint(b.pageX,b.pageY);if(c&&"A"===c.nodeName)return}var d=this._options.mode,e=this._options.shift,f="dragBox"===d?"dragBox":"zoom";if("static"!==d&&(this._supportTouch||1===b.which)){var g=this._clearInteractiveTimeout(),h=a(b.currentTarget).offset(),i=b.originalEvent.changedTouches;if(this._supportTouch&&i?(this._multiTouchAnchor=a.merge([],i),this._isMultiTouch=this._multiTouchAnchor.length>1,this._isMultiTouch?(this._multiTouchCurrentBbox=[i[0].pageX-h.left,i[0].pageY-h.top,i[1].pageX-h.left,i[1].pageY-h.top],this._multiTouchAnchorBbox=a.merge([],this._multiTouchCurrentBbox),this._current=a.geo.center(this._multiTouchCurrentBbox,!0)):(this._multiTouchCurrentBbox=[i[0].pageX-h.left,i[0].pageY-h.top,0/0,0/0],this._current=[i[0].pageX-h.left,i[0].pageY-h.top])):this._current=[b.pageX-h.left,b.pageY-h.top],this._softDblClick){var j=a.now();if(j-this._downDate<750){if(this._isTap){var k=this._current[0]-this._anchor[0],l=this._current[1]-this._anchor[1],m=Math.sqrt(k*k+l*l);m>8?this._isTap=!1:this._current=a.merge([],this._anchor)}this._isDbltap=this._isDbltap?!1:this._isTap}else this._isDbltap=!1;this._isTap=!0,this._downDate=j}return this._mouseDown=!0,this._anchor=a.merge([],this._current),!this._inOp&&b.shiftKey&&"off"!==e?(this._shiftDown=!0,this._$eventTarget.css("cursor",this._options.cursors["default"===e?f:e])):this._isMultiTouch||!this._options.pannable&&"dragBox"!==d&&"dragCircle"!==d||(this._inOp=!0,"zoom"!==d&&"dragBox"!==d&&"dragCircle"!==d&&(this._lastDrag=this._current,b.currentTarget.setCapture&&b.currentTarget.setCapture())),b.preventDefault(),g&&this._setInteractiveTimeout(!0),!1}},_dragTarget_touchmove:function(b){if("static"!==this._options.mode){var c=!1;this._mouseDown&&(c=this._clearInteractiveTimeout());var d,f=this._$eventTarget.offset(),g=this._drawCoords.length,h=b.originalEvent.changedTouches,i=0;if(this._supportTouch&&h){if(!this._isMultiTouch&&this._mouseDown&&this._multiTouchAnchor.length>0&&h[0].identifier!==this._multiTouchAnchor[0].identifier)return this._mouseDown=!1,this._isMultiTouch=!0,this._wheelLevel=0,this._multiTouchAnchor.push(h[0]),this._multiTouchCurrentBbox=[this._multiTouchCurrentBbox[0],this._multiTouchCurrentBbox[1],this._multiTouchAnchor[1].pageX-f.left,this._multiTouchAnchor[1].pageY-f.top],this._multiTouchAnchorBbox=a.merge([],this._multiTouchCurrentBbox),this._mouseDown=!0,this._anchor=this._current=a.geo.center(this._multiTouchCurrentBbox,!0),c&&this._setInteractiveTimeout(!0),!1;if(this._isMultiTouch){for(;i0?5:10;var m=l-this._wheelLevel;this._wheelLevel=l;var n=this._getZoomCenterAndSize(this._anchor,m,!1);this._setInteractiveCenterAndSize(n.center,n.pixelSize),this._interactiveTransform(),c=!0,d=a.geo.center(this._multiTouchCurrentBbox,!0)}else d=[b.originalEvent.changedTouches[0].pageX-f.left,b.originalEvent.changedTouches[0].pageY-f.top]}else d=[b.pageX-f.left,b.pageY-f.top];if(d[0]===this._lastMove[0]&&d[1]===this._lastMove[1]&&this._inOp)return b.preventDefault(),c&&this._setInteractiveTimeout(!0),!1;if(7===e&&(this._isDbltap=this._isTap=!1),this._mouseDown&&(this._current=d,this._moveDate=a.now()),this._isMultiTouch)return b.preventDefault(),this._isDbltap=this._isTap=!1,c&&this._setInteractiveTimeout(!0),!1;var o,p,q,r=this._options.mode,s=this._options.shift,t="dragBox"===r?"dragBox":"zoom";switch(this._shiftDown&&(r="default"===s?t:s),r){case"zoom":case"dragBox":this._mouseDown?(this._$drawContainer.geographics("clear"),this._$drawContainer.geographics("drawBbox",[this._anchor[0],this._anchor[1],d[0],d[1]])):this._trigger("move",b,{type:"Point",coordinates:this.toMap(d)});break;case"dragCircle":this._mouseDown?(o=d[0]-this._anchor[0],p=d[1]-this._anchor[1],q=2*Math.sqrt(o*o+p*p),this._$drawContainer.geographics("clear"),this._$drawContainer.geographics("drawArc",this._anchor,0,360,{width:q,height:q})):this._trigger("move",b,{type:"Point",coordinates:this.toMap(d)});break;case"drawLineString":case"drawPolygon":case"measureLength":case"measureArea":this._mouseDown||this._toolPan?(this._panMove(),c=!0):(g>0&&(this._drawCoords[g-1]=this._toMap(d,this._centerInteractive,this._pixelSizeInteractive),this._drawPixels[g-1]=d,this._refreshDrawing()),this._trigger("move",b,{type:"Point",coordinates:this.toMap(d)}));break;default:this._mouseDown||this._toolPan?(this._panMove(),c=!0):this._trigger("move",b,{type:"Point",coordinates:this.toMap(d)})}return this._lastMove=d,c&&this._setInteractiveTimeout(!0),this._inOp?(b.preventDefault(),!1):void 0}},_dragTarget_touchstop:function(c){if("static"!==this._options.mode){if(!this._mouseDown){if(7!==e)return;this._eventTarget_touchstart(c)}var d,f,g,h,i,j,k,l=this._clearInteractiveTimeout(),m=this._mouseDown,n=this._toolPan,o=this._$eventTarget.offset(),p=this._options.mode,q=this._options.shift,r="dragBox"===p?"dragBox":"zoom";if(this._shiftDown&&(p="default"===q?r:q),this._supportTouch&&c.originalEvent.changedTouches?(d=[c.originalEvent.changedTouches[0].pageX-o.left,c.originalEvent.changedTouches[0].pageY-o.top],this._multiTouchAnchor=[],this._inOp=!1):d=[c.pageX-o.left,c.pageY-o.top],this._softDblClick&&this._isTap&&(h=d[0]-this._anchor[0],i=d[1]-this._anchor[1],Math.sqrt(h*h+i*i)<=8&&(d=a.merge([],this._anchor))),h=d[0]-this._anchor[0],i=d[1]-this._anchor[1],this._$eventTarget.css("cursor",this._options.cursors[this._options.mode]),this._shiftDown=this._mouseDown=this._toolPan=!1,this._isMultiTouch)return c.preventDefault(),this._isMultiTouch=!1,this._wheelLevel=0,l&&this._setInteractiveTimeout(!0),void 0;if(document.releaseCapture&&document.releaseCapture(),m){switch(g=a.now(),this._current=d,p){case"zoom":case"dragBox":if(0!==h||0!==i){var s=6*this._pixelSize,t=this._toMap([[Math.min(this._anchor[0],d[0]),Math.max(this._anchor[1],d[1])],[Math.max(this._anchor[0],d[0]),Math.min(this._anchor[1],d[1])]]),u=[t[0][0],t[0][1],t[1][0],t[1][1]];"zoom"===p?(u[2]-u[0]f;f++)v=360*f/y*(Math.PI/180),this._drawPixels[f]=[this._anchor[0]+Math.cos(v)*x,this._anchor[1]+Math.sin(v)*x];this._drawPixels[y]=[this._drawPixels[0][0],this._drawPixels[0][1]],j=this._toMap([[this._anchor[0]-x,this._anchor[1]+(w?-x:x)],[this._anchor[0]+x,this._anchor[1]+(w?x:-x)]]),k={type:"Polygon",coordinates:[this._toMap(this._drawPixels)],bbox:[j[0][0],j[0][1],j[1][0],j[1][1]]},this._userGeodetic&&(k.coordinates=a.geo.proj.toGeodetic(k.coordinates),k.bbox=a.geo.proj.toGeodetic(k.bbox)),this._trigger("shape",c,k),this._resetDrawing()}else j=this._toMap(d),k={type:"Point",coordinates:[j[0],j[1]],bbox:[j[0],j[1],j[0],j[1]]},this._userGeodetic&&(k.coordinates=a.geo.proj.toGeodetic(k.coordinates),k.bbox=a.geo.proj.toGeodetic(k.bbox)),this._trigger("shape",c,k);break;case"drawPoint":if(this._drawTimeout&&(b.clearTimeout(this._drawTimeout),this._drawTimeout=null),n)this._panFinalize();else if(g-this._clickDate>100){var z=this;this._drawTimeout=setTimeout(function(){z._drawTimeout&&(z._trigger("shape",c,{type:"Point",coordinates:z.toMap(d)}),z._inOp=!1,z._drawTimeout=null)},250)}break;case"drawLineString":case"drawPolygon":case"measureLength":case"measureArea":n?this._panFinalize():(f=0===this._drawCoords.length?0:this._drawCoords.length-1,this._drawCoords[f]=this._toMap(d),this._drawPixels[f]=d,(2>f||this._drawCoords[f][0]!==this._drawCoords[f-1][0]||this._drawCoords[f][1]!==this._drawCoords[f-1][1])&&(this._drawCoords[f+1]=this._toMap(d,this._centerInteractive,this._pixelSizeInteractive),this._drawPixels[f+1]=d),this._refreshDrawing());break;default:n?this._panFinalize():g-this._clickDate>100&&(this._trigger("click",c,{type:"Point",coordinates:this.toMap(d)}),this._inOp=!1)}if(this._clickDate=g,this._softDblClick&&this._isDbltap)return this._isDbltap=this._isTap=!1,l&&this._setInteractiveTimeout(!0),this._$eventTarget.trigger("dblclick",c),!1}return l&&this._setInteractiveTimeout(!0),this._inOp?(c.preventDefault(),!1):void 0}},_eventTarget_mousewheel:function(b,c){if("static"!==this._options.mode&&"off"!==this._options.scroll){if(b.preventDefault(),this._mouseDown)return!1;if(0!==c){var d=Math.abs(c)>=1;this._clearInteractiveTimeout(),c=c>0?Math.ceil(c):Math.floor(c);var e=a(b.currentTarget).offset();this._anchor=[b.pageX-e.left,b.pageY-e.top];var f=this._getZoomCenterAndSize(this._anchor,c,null!==this._options.tilingScheme?d:!1);this._setInteractiveCenterAndSize(f.center,f.pixelSize),this._interactiveTransform(),this._setInteractiveTimeout(!0)}return!1}}})}(jQuery,window),function(a,b){a.geo._serviceTypes.tiled=function(){var c=new RegExp("<.*>|{{.*}}");return{_serviceId:0,_tmplGeoSrcId:"",create:function(c,d,e){this._serviceId=c._serviceIdSeed++,this._tmplGeoSrcId="geoSrc"+this._serviceId;var f=a.data(e,"geoServiceState");if(!f){f={loadCount:0,reloadTiles:!1};var g='
    ';d.append(b.toStaticHTML(g)),f.serviceContainer=d.children(":last"),a.data(e,"geoServiceState",f)}return f.serviceContainer},destroy:function(b,c,d){var e=a.data(d,"geoServiceState");e.serviceContainer.remove(),a.removeData(d,"geoServiceState")},interactiveTransform:function(b,c,d,e){var f=a.data(c,"geoServiceState"),g=b.options.tilingScheme;f&&(this._cancelUnloaded(b,c),f.serviceContainer.children().each(function(){var c=a(this),f=c.data("pixelSize"),h=f/e;if(f>0){h=Math.round(1e3*h)/1e3;var i=c.data("scaleOrigin"),j=b._toPixel(i,d,e);c.css({left:Math.round(j[0])+"px",top:Math.round(j[1])+"px",width:g.tileWidth*h,height:g.tileHeight*h})}}))},refresh:function(d,e,f){var g=a.data(e,"geoServiceState");if(this._cancelUnloaded(d,e),g&&f&&(g.reloadTiles=!0),g&&e&&"visible"===e.style.visibility&&!g.serviceContainer.is(":hidden")){var h,i,j=d._getBbox(),k=d._pixelSize,l=this,m=g.serviceContainer,n="image"===d.options.axisLayout,o=n?1:-1,p=d.options.tilingScheme,q=p.tileWidth,r=p.tileHeight,s=Math.floor((j[0]-p.origin[0])/(k*q)),t=Math.max(Math.floor((n?j[1]-p.origin[1]:p.origin[1]-j[3])/(k*r)),0),u=Math.ceil((j[2]-p.origin[0])/(k*q)),v=Math.ceil((n?j[3]-p.origin[1]:p.origin[1]-j[1])/(k*r)),w=d._getBboxMax(),x=d._getPixelSize(0),y=x/k,z=Math.floor((w[0]-p.origin[0])/(x*q))*y,A=Math.floor((p.origin[1]+o*w[3])/(x*r))*y,B=p.origin[0]+z*q*k,C=p.origin[1]+o*A*r*k,D=Math.round((B-j[0])/k),E=Math.round((n?C-j[1]:j[3]-C)/k),F=m.children().show(),G=F.filter("[data-pixel-size='"+k+"']").appendTo(m),H=e.style.opacity,I=function(b){l._loadImage(a.data(this,"img"),b,k,d,g,H)},J=function(){a.data(this,"img").remove(),g.loadCount--,d._requestComplete()};for(g.reloadTiles&&F.find("img").attr("data-dirty","true"),G.size()?(G.css({left:D%q+"px",top:E%r+"px"}).data("scaleOrigin",d._toMap([D%q,E%r])),G.children().each(function(){var b=a(this),c=b.attr("data-tile").split(",");b.css({left:Math.round(100*(parseInt(c[0],10)-z)+100*((D-D%q)/q))+"%",top:Math.round(100*(parseInt(c[1],10)-A)+100*((E-E%r)/r))+"%"}),1>H&&b.fadeTo(0,H)})):(m.append(b.toStaticHTML("
    ")),G=m.children(":last").data("scaleOrigin",d._toMap([D%q,E%r]))),h=s;u>h;h++)for(i=t;v>i;i++){var K=""+h+","+i,L=G.children("[data-tile='"+K+"']").removeAttr("data-dirty");if(0===L.size()||g.reloadTiles){var M,N=[p.origin[0]+h*q*k,p.origin[1]+o*i*r*k],O=[p.origin[0]+((h+1)*q-1)*k,p.origin[1]+o*((i+1)*r-1)*k],P=[N[0],N[1],O[0],O[1]],Q=e.hasOwnProperty("src")?"src":"getUrl",R={bbox:P,width:q,height:r,zoom:d._getZoom(),tile:{row:i,column:h},index:Math.abs(i+h)},S=a.isFunction(e[Q]);if(S?M=e[Q](R):c.test(e[Q])?(a.templates(this._tmplGeoSrcId,e[Q]),M=a.render[this._tmplGeoSrcId](R)):M=e[Q],g.loadCount++,d._requestQueued(),g.reloadTiles&&L.size()>0)L.attr("src",M);else{var T="",G.append(b.toStaticHTML(T)),L=G.children(":last")}"string"==typeof M?l._loadImage(L,M,k,d,g,H):M?(a.data(M,"img",L),M.done(I).fail(J)):L.remove()}}F.find("[data-dirty]").remove(),g.reloadTiles=!1}},resize:function(){},opacity:function(b,c){var d=a.data(c,"geoServiceState");d.serviceContainer.find("img").stop(!0).fadeTo("fast",c.style.opacity)},toggle:function(b,c){var d=a.data(c,"geoServiceState");d.serviceContainer.css("display","visible"===c.style.visibility?"block":"none")},_cancelUnloaded:function(b,c){var d=a.data(c,"geoServiceState");if(d&&d.loadCount>0)for(d.serviceContainer.find("img:hidden").remove();d.loadCount>0;)d.loadCount--,b._requestComplete()},_loadImage:function(b,c,d,e,f,g){var h=f.serviceContainer;b.load(function(b){1>g?a(b.target).fadeTo(0,g):a(b.target).show(),f.loadCount--,e._requestComplete(),f.loadCount<=0&&(h.children(":not([data-pixel-size='"+d+"'])").remove(),f.loadCount=0)}).error(function(b){a(b.target).remove(),f.loadCount--,e._requestComplete(),f.loadCount<=0&&(h.children(":not([data-pixel-size='"+d+"'])").remove(),f.loadCount=0)}).attr("src",c)}}}()}(jQuery,window),function(a,b){a.geo._serviceTypes.shingled=function(){var c=new RegExp("<.*>|{{.*}}");return{_serviceId:0,_tmplGeoSrcId:"",create:function(c,d,e){this._serviceId=c._serviceIdSeed++,this._tmplGeoSrcId="geoSrc"+this._serviceId;var f=a.data(e,"geoServiceState");if(!f){f={loadCount:0};var g='
    ';d.append(b.toStaticHTML(g)),f.serviceContainer=d.children(":last"),a.data(e,"geoServiceState",f)}return f.serviceContainer},destroy:function(b,c,d){var e=a.data(d,"geoServiceState");e.serviceContainer.remove(),a.removeData(d,"geoServiceState")},interactiveTransform:function(b,c,d,e){var f=a.data(c,"geoServiceState"),g=b._getContentBounds(),h=g.width,i=g.height;f&&(this._cancelUnloaded(b,c),f.serviceContainer.children().each(function(){var c=a(this),f=c.data("pixelSize"),g=f/e;if(f>0){g=Math.round(1e3*g)/1e3;var j=c.data("origin"),k=b._toPixel(j,d,e);c.css({left:Math.round(k[0]),top:Math.round(k[1]),width:h*g,height:i*g})}}))},refresh:function(d,e){var f=a.data(e,"geoServiceState");if(this._cancelUnloaded(d,e),f&&e&&"visible"===e.style.visibility&&!f.serviceContainer.is(":hidden")){var g,h=d._getBbox(),i=d._pixelSize,j=this,k=f.serviceContainer,l=d._getContentBounds(),m=l.width,n=l.height,o=k.children('[data-pixel-size="'+i+'"]'),p=e.style.opacity;1>p&&k.find("img").attr("data-keep-alive","0"),o.size()||(k.append(b.toStaticHTML('
    ')),o=k.children(":last"));var q,r=e.hasOwnProperty("src")?"src":"getUrl",s={bbox:h,width:m,height:n,zoom:d._getZoom(),tile:null,index:0},t=a.isFunction(e[r]),u=o.position();u.left=-u.left,u.top=-u.top,t?q=e[r](s):c.test(e[r])?(a.templates(this._tmplGeoSrcId,e[r]),q=a.render[this._tmplGeoSrcId](s)):q=e[r],f.loadCount++,d._requestQueued(),o.append(b.toStaticHTML('')),g=o.children(":last").data("center",d._center),"string"==typeof q?j._loadImage(g,q,i,d,f,p):q.done(function(a){j._loadImage(g,a,i,d,f,p)}).fail(function(){g.remove(),f.loadCount--,d._requestComplete()})}},resize:function(b,c){var d=a.data(c,"geoServiceState");if(d&&c&&"visible"===c.style.visibility){this._cancelUnloaded(b,c);var e=d.serviceContainer,f=b._getContentBounds(),g=f.width,h=f.height,i=e.children();i.attr("data-pixel-size","0"),i.each(function(){var b=a(this),c=b.position();b.css({left:c.left+(g-b.width())/2,top:c.top+(h-b.height())/2})})}},opacity:function(b,c){var d=a.data(c,"geoServiceState");d.serviceContainer.find("img").stop(!0).fadeTo("fast",c.style.opacity)},toggle:function(b,c){var d=a.data(c,"geoServiceState");d.serviceContainer.css("display","visible"===c.style.visibility?"block":"none")},_cancelUnloaded:function(b,c){var d=a.data(c,"geoServiceState");if(d&&d.loadCount>0)for(d.serviceContainer.find("img:hidden").remove();d.loadCount>0;)d.loadCount--,b._requestComplete()},_loadImage:function(b,c,d,e,f,g){var h=f.serviceContainer;b.load(function(b){a.contains(document.body,b.target.jquery?b.target[0]:b.target)&&(1>g?a(b.target).fadeTo(0,g):a(b.target).show(),f.loadCount--,e._requestComplete(),f.loadCount<=0&&(h.children(':not([data-pixel-size="'+d+'"])').remove(),h.find("img[data-keep-alive]").remove(),f.loadCount=0))}).error(function(b){a.contains(document.body,b.target.jquery?b.target[0]:b.target)&&(a(b.target).remove(),f.loadCount--,e._requestComplete(),f.loadCount<=0&&(h.children(":not([data-pixel-size='"+d+"'])").remove(),f.loadCount=0))}).attr("src",c)}}}()}(jQuery,window); \ No newline at end of file +document.createElement("canvas").getContext||function(){function t(){return this.context_||(this.context_=new f(this))}function e(t,e){var i=k.call(arguments,2);return function(){return t.apply(e,i.concat(k.call(arguments)))}}function i(t,e,i){t.namespaces[e]||t.namespaces.add(e,i,"#default#VML")}function s(t){if(i(t,"g_vml_","urn:schemas-microsoft-com:vml"),i(t,"g_o_","urn:schemas-microsoft-com:office:office"),!t.styleSheets.ex_canvas_){var e=t.createStyleSheet();e.owningElement.id="ex_canvas_",e.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}function o(t){var e=t.srcElement;switch(t.propertyName){case"width":e.getContext().clearRect(),e.style.width=e.attributes.width.nodeValue+"px",e.firstChild.style.width=e.clientWidth+"px";break;case"height":e.getContext().clearRect(),e.style.height=e.attributes.height.nodeValue+"px",e.firstChild.style.height=e.clientHeight+"px"}}function n(t){var e=t.srcElement;e.firstChild&&(e.firstChild.style.width=e.clientWidth+"px",e.firstChild.style.height=e.clientHeight+"px")}function r(){return[[1,0,0],[0,1,0],[0,0,1]]}function a(t,e){for(var i=r(),s=0;3>s;s++)for(var o=0;3>o;o++){for(var n=0,a=0;3>a;a++)n+=t[s][a]*e[a][o];i[s][o]=n}return i}function h(t,e){e.fillStyle=t.fillStyle,e.lineCap=t.lineCap,e.lineJoin=t.lineJoin,e.lineWidth=t.lineWidth,e.miterLimit=t.miterLimit,e.shadowBlur=t.shadowBlur,e.shadowColor=t.shadowColor,e.shadowOffsetX=t.shadowOffsetX,e.shadowOffsetY=t.shadowOffsetY,e.strokeStyle=t.strokeStyle,e.globalAlpha=t.globalAlpha,e.font=t.font,e.textAlign=t.textAlign,e.textBaseline=t.textBaseline,e.arcScaleX_=t.arcScaleX_,e.arcScaleY_=t.arcScaleY_,e.lineScale_=t.lineScale_}function c(t){var e=t.indexOf("(",3),i=t.indexOf(")",e+1),s=t.substring(e+1,i).split(",");return(4!=s.length||"a"!=t.charAt(3))&&(s[3]=1),s}function l(t){return parseFloat(t)/100}function _(t,e,i){return Math.min(i,Math.max(e,t))}function u(t){var e,i,s,o,n,r;if(o=parseFloat(t[0])/360%360,0>o&&o++,n=_(l(t[1]),0,1),r=_(l(t[2]),0,1),0==n)e=i=s=r;else{var a=.5>r?r*(1+n):r+n-r*n,h=2*r-a;e=d(h,a,o+1/3),i=d(h,a,o),s=d(h,a,o-1/3)}return"#"+G[Math.floor(255*e)]+G[Math.floor(255*i)]+G[Math.floor(255*s)]}function d(t,e,i){return 0>i&&i++,i>1&&i--,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}function p(t){if(t in D)return D[t];var e,i=1;if(t+="","#"==t.charAt(0))e=t;else if(/^rgb/.test(t)){for(var s,o=c(t),e="#",n=0;3>n;n++)s=-1!=o[n].indexOf("%")?Math.floor(255*l(o[n])):+o[n],e+=G[_(s,0,255)];i=+o[3]}else if(/^hsl/.test(t)){var o=c(t);e=u(o),i=o[3]}else e=t;return D[t]={color:e,alpha:i}}function g(t){return j[t]||"square"}function f(t){this.m_=r(),this.mStack_=[],this.aStack_=[],this.currentPath_=[],this.strokeStyle="#000",this.fillStyle="#000",this.lineWidth=1,this.lineJoin="miter",this.lineCap="butt",this.miterLimit=1*z,this.globalAlpha=1,this.canvas=t;var e="width:"+t.clientWidth+"px;height:"+t.clientHeight+"px;overflow:hidden;position:absolute",i=t.ownerDocument.createElement("div");i.style.cssText=e,t.appendChild(i);var s=i.cloneNode(!1);s.style.backgroundColor="red",s.style.filter="alpha(opacity=0)",t.appendChild(s),this.element_=i,this.arcScaleX_=1,this.arcScaleY_=1,this.lineScale_=1}function m(t,e,i,s){t.currentPath_.push({type:"bezierCurveTo",cp1x:e.x,cp1y:e.y,cp2x:i.x,cp2y:i.y,x:s.x,y:s.y}),t.currentX_=s.x,t.currentY_=s.y}function v(t,e){var i=p(t.strokeStyle),s=i.color,o=i.alpha*t.globalAlpha,n=t.lineScale_*t.lineWidth;1>n&&(o*=n),e.push("')}function x(t,e,i,s){t.fillStyle,t.arcScaleX_,t.arcScaleY_,s.x-i.x,s.y-i.y;var o=p(t.fillStyle),n=o.color,r=o.alpha*t.globalAlpha;e.push('')}function y(t,e,i){var s=t.m_;return{x:z*(e*s[0][0]+i*s[1][0]+s[2][0])-I,y:z*(e*s[0][1]+i*s[1][1]+s[2][1])-I}}function b(t){return isFinite(t[0][0])&&isFinite(t[0][1])&&isFinite(t[1][0])&&isFinite(t[1][1])&&isFinite(t[2][0])&&isFinite(t[2][1])}function w(t,e,i){if(b(e)&&(t.m_=e,i)){var s=e[0][0]*e[1][1]-e[0][1]*e[1][0];t.lineScale_=$(P(s))}}function S(t){this.code=this[t],this.message=t+": DOM Exception "+this.code}var A=Math,C=A.round,T=A.sin,M=A.cos,P=A.abs,$=A.sqrt,z=10,I=z/2;+navigator.userAgent.match(/MSIE ([\d.]+)?/)[1];var k=Array.prototype.slice;s(document);var L={init:function(t){var i=t||document;i.createElement("canvas"),i.attachEvent("onreadystatechange",e(this.init_,this,i))},init_:function(t){for(var e=t.getElementsByTagName("canvas"),i=0;e.length>i;i++)this.initElement(e[i])},initElement:function(e){if(!e.getContext){e.getContext=t,s(e.ownerDocument),e.innerHTML="",e.attachEvent("onpropertychange",o),e.attachEvent("onresize",n);var i=e.attributes;i.width&&i.width.specified?e.style.width=i.width.nodeValue+"px":e.width=e.clientWidth,i.height&&i.height.specified?e.style.height=i.height.nodeValue+"px":e.height=e.clientHeight}return e}};L.init();for(var G=[],O=0;16>O;O++)for(var B=0;16>B;B++)G[16*O+B]=O.toString(16)+B.toString(16);var D={},j={butt:"flat",round:"round"},E=f.prototype;E.clearRect=function(){this.textMeasureEl_&&(this.textMeasureEl_.removeNode(!0),this.textMeasureEl_=null),this.element_.innerHTML=""},E.beginPath=function(){this.currentPath_=[]},E.moveTo=function(t,e){var i=y(this,t,e);this.currentPath_.push({type:"moveTo",x:i.x,y:i.y}),this.currentX_=i.x,this.currentY_=i.y},E.lineTo=function(t,e){var i=y(this,t,e);this.currentPath_.push({type:"lineTo",x:i.x,y:i.y}),this.currentX_=i.x,this.currentY_=i.y},E.bezierCurveTo=function(t,e,i,s,o,n){var r=y(this,o,n),a=y(this,t,e),h=y(this,i,s);m(this,a,h,r)},E.quadraticCurveTo=function(t,e,i,s){var o=y(this,t,e),n=y(this,i,s),r={x:this.currentX_+2/3*(o.x-this.currentX_),y:this.currentY_+2/3*(o.y-this.currentY_)},a={x:r.x+(n.x-this.currentX_)/3,y:r.y+(n.y-this.currentY_)/3};m(this,r,a,n)},E.arc=function(t,e,i,s,o,n){i*=z;var r=n?"at":"wa",a=t+M(s)*i-I,h=e+T(s)*i-I,c=t+M(o)*i-I,l=e+T(o)*i-I;a!=c||n||(a+=.125);var _=y(this,t,e),u=y(this,a,h),d=y(this,c,l);this.currentPath_.push({type:r,x:_.x,y:_.y,radius:i,xStart:u.x,yStart:u.y,xEnd:d.x,yEnd:d.y})},E.stroke=function(t){var e=[],i=10,s=10;e.push("n.x)&&(n.x=h.x),(null==o.y||h.yn.y)&&(n.y=h.y))}e.push(' ">'),t?x(this,e,o,n):v(this,e),e.push(""),this.element_.insertAdjacentHTML("beforeEnd",e.join(""))},E.fill=function(){this.stroke(!0)},E.closePath=function(){this.currentPath_.push({type:"close"})},E.save=function(){var t={};h(this,t),this.aStack_.push(t),this.mStack_.push(this.m_),this.m_=a(r(),this.m_)},E.restore=function(){this.aStack_.length&&(h(this.aStack_.pop(),this),this.m_=this.mStack_.pop())},E.translate=function(t,e){var i=[[1,0,0],[0,1,0],[t,e,1]];w(this,a(i,this.m_),!1)},E.scale=function(t,e){this.arcScaleX_*=t,this.arcScaleY_*=e;var i=[[t,0,0],[0,e,0],[0,0,1]];w(this,a(i,this.m_),!0)};var F=S.prototype=Error();F.INDEX_SIZE_ERR=1,F.DOMSTRING_SIZE_ERR=2,F.HIERARCHY_REQUEST_ERR=3,F.WRONG_DOCUMENT_ERR=4,F.INVALID_CHARACTER_ERR=5,F.NO_DATA_ALLOWED_ERR=6,F.NO_MODIFICATION_ALLOWED_ERR=7,F.NOT_FOUND_ERR=8,F.NOT_SUPPORTED_ERR=9,F.INUSE_ATTRIBUTE_ERR=10,F.INVALID_STATE_ERR=11,F.SYNTAX_ERR=12,F.INVALID_MODIFICATION_ERR=13,F.NAMESPACE_ERR=14,F.INVALID_ACCESS_ERR=15,F.VALIDATION_ERR=16,F.TYPE_MISMATCH_ERR=17,G_vmlCanvasManager=L,CanvasRenderingContext2D=f,DOMException=S}(),this.jsviews||this.jQuery&&jQuery.views||function(t,e){function i(t,e){var i="\\"+t.charAt(0),s="\\"+t.charAt(1),o="\\"+e.charAt(0),n="\\"+e.charAt(1);return V.rTag=y=s+"(?:(?:(\\w+(?=[\\/\\s"+o+"]))|(?:(\\w+)?(:)|(>)|(\\*)))"+"\\s*((?:[^"+o+"]|"+o+"(?!"+n+"))*?)"+"(\\/)?|(?:\\/(\\w+)))"+o,y=RegExp(i+y+n,"g"),b=RegExp("<.*>|"+t+".*"+e),this}function s(t){var i=this,s=i.tmpl.helpers||{};return t=(i.ctx[t]!==e?i.ctx:s[t]!==e?s:l[t]!==e?l:{})[t],"function"!=typeof t?t:function(){return t.apply(i,arguments)}}function o(t,e,i){var s=e.tmpl.converters;return t=s&&s[t]||_[t],t?t.call(e,i):i}function n(t,i,s,o,n){n.props=n.props||{};var r,a=n.props.tmpl,l=i.tmpl.tags,_=i.tmpl.templates,d=arguments,p=l&&l[t]||c[t];return p?(o=o&&i.tmpl.tmpls[o-1],a=a||o||e,n.tmpl=""+a===a?_&&_[a]||h[a]||h(a):a,n.isTag=T,n.converter=s,n.view=i,n.renderContent=u,i.ctx&&w(n.ctx,i.ctx),r=p.apply(n,d.length>5?F.call(d,5):[]),r||(r==e?"":""+r)):""}function r(t,i,o,n,r,a){var h=o.views,c={tmpl:r,path:i,parent:o,data:n,ctx:t,views:x.isArray(n)?[]:{},hlp:s};return x.isArray(h)?h.splice(c.index=a!==e?a:h.length,0,c):h[c.index="_"+G++]=c,c}function a(t,i,s,o,n){var r,a;if(s&&"object"==typeof s&&!s.nodeType){for(r in s)i(r,s[r]);return t}return s&&o!==e?""+s===s&&(null===o?delete i[s]:(o=n?n(s,o):o)&&(i[s]=o)):n&&(o=n(e,o||s)),(a=A.onStoreItem)&&a(i,s,o,n),o}function h(t,e){return a(this,h,t,e,f)}function c(t,e){return a(this,c,t,e)}function l(t,e){return a(this,l,t,e)}function _(t,e){return a(this,_,t,e)}function u(t,i,s,o,n){var a,c,l,_,u,d,p,g,f,m,v={},y=n===T,b=this,S="";if(b.isTag?(f=b.tmpl,i=i||b.ctx,s=s||b.view,o=o||b.path,n=n||b.index,v=b.props):f=b.jquery&&b[0]||b,s=s||V.topView,g=s.ctx,m=f.layout,t===s&&(t=s.data,m=T),i=i&&i===g?g:g?(g=w({},g),i?w(g,i):g):i||{},v.link===C&&(i.link=C),f.fn||(f=h[f]||h(f)),u=i.link&&A.onRenderItem,d=i.link&&A.onRenderItems,f){if(x.isArray(t)&&!m)for(_=y?s:n!==e&&s||r(i,o,s,t,f,n),a=0,c=t.length;c>a;a++)l=t[a],p=f.fn(l,r(i,o,_,l,f,(n||0)+a),V),S+=u?u(p,v):p;else _=y?s:r(i,o,s,t,f,n),S+=t||m?f.fn(t,_,V):"";return s.topKey=_.index,d?d(S,o,_.index,f,v):S}return""}function d(){throw"Syntax error"}function p(t,e,i){function s(e){e-=$,e&&O.push(t.substr($,e).replace(z,"\\n"))}function o(e,o,r,a,h,c,l,_,u,d){h&&(a=":",r="html");var p="",f="",m=!_&&!a;if(o=o||a,s(d),$=d+e.length,c?A&&O.push(["*",l.replace(I,"$1")]):o?("else"===o&&(B[5]=t.substring(B[5],d),B=G.pop(),O=B[3],m=T),l=l?g(l,i).replace(L,function(t,e,i){return e?f+=i+",":p+=i+",",""}):"",p=p.slice(0,-1),l=l.slice(0,-1),n=[o,r||"",l,m&&[],"{"+(p?"props:{"+p+"},":"")+"path:'"+l+"'"+(f?",ctx:{"+f.slice(0,-1)+"}":"")+"}"],m&&(G.push(B),B=n,B[5]=$),O.push(n)):u&&(B[5]=t.substring(B[5],d),B=G.pop()),!B)throw"Expected block tag";O=B[3]}var n,r,a,h,c,l,_,u,d,f,v,x,b,w,S,A,C=e?{allowCode:A=e.allowCode,debug:e.debug}:{},M=e&&e.tmpls,P=[],$=0,G=[],O=P,B=[,,,P],D=0;for(t=t.replace(k,"\\$1"),t.replace(y,o),s(t.length),h=P.length,c=h?"":'"";',a=0;h>a;a++)r=P[a],"*"===r[0]?c=c.slice(0,a?-1:-3)+";"+r[1]+(h>a+1?"ret+=":""):""+r===r?c+='"'+r+'"+':(v=r[0],x=r[1],b=r[2],O=r[3],w=r[4],t=r[5],O&&(S=m(t,C,e,D++),p(t,S),M.push(S)),f=f||w.indexOf("view")>-1,c+=(":"===v?"html"===x?(_=T,"e("+b):x?(d=T,'c("'+x+'",view,'+b):(u=T,"((v="+b+')!=u?v:""'):(l=T,'t("'+v+'",view,"'+(x||"")+'",'+(O?M.length:'""')+","+w+(b?",":"")+b))+")+");return c=Function("data, view, j, b, u",j+(u?"v,":"")+(l?"t=j.tag,":"")+(d?"c=j.convert,":"")+(_?"e=j.converters.html,":"")+"ret; try{\n\n"+(C.debug?"debugger;":"")+(A?"ret=":"return ")+c.slice(0,-1)+";\n\n"+(A?"return ret;":"")+"}catch(e){return j.err(e);}"),e&&(e.fn=c,e.useVw=d||f||l),c}function g(t,i){function s(t,s,c,l,_,u,p,g,f,m,v,x,y,b,w,S){function A(t,e,s,o,n,r,a){if(e){var h=(s?'view.hlp("'+s+'")':o?"view":"data")+(a?(n?"."+n:s?"":o?"":"."+e)+(r||""):(a=s?"":o?n||"":e,""));return i&&"("!==f&&(h="b("+h+',"'+a+'")'),h+(a?"."+a:"")}return t}return _=_||"",c=c||s||v,l=l||g,f=f||w||"",_=_||"",u?(d(),e):h?(h=!x,h?t:'"'):a?(a=!y,a?t:'"'):(c?(r++,c):"")+(S?r?"":o?(o=C,"\b"):",":p?(r&&d(),o=T,"\b"+l+":"):l?l.replace(P,A)+(f?(n[++r]=T,f):_):_?t:b?(n[r--]=C,b+(f?(n[++r]=T,f):"")):m?(n[r]||d(),","):s?"":(h=x,a=y,'"'))}var o,n={},r=0,a=C,h=C;return t=(t+" ").replace($,s)}function f(t,i,s,o){function n(i){return""+i===i||i.nodeType>0?(a=i.nodeType>0?i:!b.test(i)&&M&&M(i)[0],a&&a.type&&(i=h[a.getAttribute(D)],i||(t=t||"_"+O++,a.setAttribute(D,t),i=f(t,a.innerHTML,s,o),h[t]=i)),i):e}var r,a,c,l,_;if(r=n(i),o=o||(i.markup?i:{}),o.name=t,l=o.templates,!r&&i.markup&&(r=n(i.markup))&&(!r.fn||r.debug===i.debug&&r.allowCode===i.allowCode||(r=r.markup)),r!==e){t&&!s&&(R[t]=function(){return i.render.apply(i,arguments)}),r.fn||i.fn?r.fn&&(i=t&&t!==r.name?w(w({},r),o):r):(i=m(r,o,s,0),p(r,i));for(c in l)_=l[c],_.name!==c&&(l[c]=f(c,_,i));return i}}function m(t,e,i,s){function o(t){i[t]&&(n[t]=w(w({},i[t]),e[t]))}e=e||{};var n={markup:t,tmpls:[],links:[],render:u};return i&&(i.templates&&(n.templates=w(w({},i.templates),e.templates)),n.parent=i,n.name=i.name+"["+s+"]",n.index=s),w(n,e),i&&(o("templates"),o("tags"),o("helpers"),o("converters")),n}function v(t){return B[t]||(B[t]="&#"+t.charCodeAt(0)+";")}var x,y,b,w,S="v1.0pre",A={},C=!1,T=!0,M=t.jQuery,P=/^(?:null|true|false|\d[\d.]*|([\w$]+|~([\w$]+)|#(view|([\w$]+))?)([\w$.]*?)(?:[.[]([\w$]+)\]?)?|(['"]).*\8)$/g,$=/(\()(?=|\s*\()|(?:([([])\s*)?(?:([#~]?[\w$.]+)?\s*((\+\+|--)|\+|-|&&|\|\||===|!==|==|!=|<=|>=|[<>%*!:?\/]|(=))\s*|([#~]?[\w$.]+)([([])?)|(,\s*)|(\(?)\\?(?:(')|("))|(?:\s*([)\]])([([]?))|(\s+)/g,z=/\r?\n/g,I=/\\(['"])/g,k=/\\?(['"])/g,L=/\x08(~)?([^\x08]+)\x08/g,G=0,O=0,B={"&":"&","<":"<",">":">"},D="data-jsv-tmpl",j="var j=j||"+(M?"jQuery.":"js")+"views,",E=/[\x00"&'<>]/g,F=Array.prototype.slice,R={},V={jsviews:S,sub:A,debugMode:T,err:function(t){return V.debugMode?"
    Error: "+(t.message||t)+". ":'""'},tmplFn:p,render:R,templates:h,tags:c,helpers:l,converters:_,View:r,convert:o,delimiters:i,tag:n};M?(x=M,x.templates=h,x.render=R,x.views=V,x.fn.render=u):(x=t.jsviews=V,x.extend=function(t,e){var i;t=t||{};for(i in e)t[i]=e[i];return t},x.isArray=Array&&Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)}),w=x.extend,V.topView={views:{},tmpl:{},hlp:s,ctx:V.helpers},c({"if":function(){var t=this,i=t.view;return i.onElse=function(t,s){for(var o=0,n=s.length;n&&!s[o++];)if(o===n)return"";return i.onElse=e,t.path="",t.renderContent(i)},i.onElse(this,arguments)},"else":function(){var t=this.view;return t.onElse?t.onElse(this,arguments):""},"for":function(){var t,e=this,i="",s=arguments,o=s.length;for(e.props.layout&&(e.tmpl.layout=T),t=0;o>t;t++)i+=e.renderContent(s[t]);return i},"=":function(t){return t},"*":function(t){return t}}),_({html:function(t){return t!=e?(t+"").replace(E,v):""}}),i("{{","}}")}(this),function(t){function e(e){var i=e||window.event,s=[].slice.call(arguments,1),o=0,n=0,r=0;return e=t.event.fix(i),e.type="mousewheel",i.wheelDelta&&(o=i.wheelDelta/120),i.detail&&(o=-i.detail/3),r=o,void 0!==i.axis&&i.axis===i.HORIZONTAL_AXIS&&(r=0,n=-1*o),void 0!==i.wheelDeltaY&&(r=i.wheelDeltaY/120),void 0!==i.wheelDeltaX&&(n=-1*i.wheelDeltaX/120),s.unshift(e,o,n,r),(t.event.dispatch||t.event.handle).apply(this,s)}var i=["DOMMouseScroll","mousewheel"];if(t.event.fixHooks)for(var s=i.length;s;)t.event.fixHooks[i[--s]]=t.event.mouseHooks;t.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var t=i.length;t;)this.addEventListener(i[--t],e,!1);else this.onmousewheel=e},teardown:function(){if(this.removeEventListener)for(var t=i.length;t;)this.removeEventListener(i[--t],e,!1);else this.onmousewheel=null}},t.fn.extend({mousewheel:function(t){return t?this.bind("mousewheel",t):this.trigger("mousewheel")},unmousewheel:function(t){return this.unbind("mousewheel",t)}})}(jQuery),$.widget||function(t,e){if(t.cleanData){var i=t.cleanData;t.cleanData=function(e){for(var s,o=0;null!=(s=e[o]);o++)try{t(s).triggerHandler("remove")}catch(n){}i(e)}}else{var s=t.fn.remove;t.fn.remove=function(e,i){return this.each(function(){return i||(!e||t.filter(e,[this]).length)&&t("*",this).add([this]).each(function(){try{t(this).triggerHandler("remove")}catch(e){}}),s.call(t(this),e,i)})}}t.widget=function(e,i,s){var o,n=e.split(".")[0];e=e.split(".")[1],o=n+"-"+e,s||(s=i,i=t.Widget),t.expr[":"][o]=function(i){return!!t.data(i,e)},t[n]=t[n]||{},t[n][e]=function(t,e){arguments.length&&this._createWidget(t,e)};var r=new i;r.options=t.extend(!0,{},r.options),t[n][e].prototype=t.extend(!0,r,{namespace:n,widgetName:e,widgetEventPrefix:t[n][e].prototype.widgetEventPrefix||e,widgetBaseClass:o},s),t.widget.bridge(e,t[n][e])},t.widget.bridge=function(i,s){t.fn[i]=function(o){var n="string"==typeof o,r=Array.prototype.slice.call(arguments,1),a=this;return o=!n&&r.length?t.extend.apply(null,[!0,o].concat(r)):o,n&&"_"===o.charAt(0)?a:(n?this.each(function(){var s=t.data(this,i),n=s&&t.isFunction(s[o])?s[o].apply(s,r):s;return n!==s&&n!==e?(a=n,!1):e}):this.each(function(){var e=t.data(this,i);e?e.option(o||{})._init():t.data(this,i,new s(o,this))}),a)}},t.Widget=function(t,e){arguments.length&&this._createWidget(t,e)},t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(e,i){t.data(i,this.widgetName,this),this.element=t(i),this.options=t.extend(!0,{},this.options,this._getCreateOptions(),e);var s=this;this.element.bind("remove."+this.widgetName,function(){s.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return t.metadata&&t.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(i,s){var o=i;if(0===arguments.length)return t.extend({},this.options);if("string"==typeof i){if(s===e)return this.options[i];o={},o[i]=s}return this._setOptions(o),this},_setOptions:function(e){var i=this;return t.each(e,function(t,e){i._setOption(t,e)}),this},_setOption:function(t,e){return this.options[t]=e,"disabled"===t&&this.widget()[e?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",e),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(e,i,s){var o,n,r=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],n=i.originalEvent)for(o in n)o in i||(i[o]=n[o]);return this.element.trigger(i,s),!(t.isFunction(r)&&r.call(this.element[0],i,s)===!1||i.isDefaultPrevented())}}}(jQuery),function(t,e,i){e.toStaticHTML=e.toStaticHTML||function(t){return t};var s=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY;t.geo={_allCoordinates:function(e){for(var i=this._flatten(e),s=0,o=[];i.length>s;s++){var n,r,a,h=i[s].coordinates,c=h&&t.isArray(h[0]),l=c&&t.isArray(h[0][0]),_=l&&t.isArray(h[0][0][0]);for(_||(l||(c||(h=[h]),h=[h]),h=[h]),n=0;h.length>n;n++)for(r=0;h[n].length>r;r++)for(a=0;h[n][r].length>a;a++)o.push(h[n][r][a])}return o},_isGeodetic:function(e){for(;t.isArray(e);){if(e.length>1&&!t.isArray(e[0]))return e[0]>=-180.001&&180.001>=e[0]&&e[1]>=-90.001&&90.001>=e[1];e=e[0]}return!1},center:function(e,i){var s=!1;!i&&t.geo.proj&&this._isGeodetic(e)&&(s=!0,e=t.geo.proj.fromGeodetic(e));var o=[(e[0]+e[2])/2,(e[1]+e[3])/2];return s?t.geo.proj.toGeodetic(o):o},expandBy:function(e,i,s,o){var n=!1;return!o&&t.geo.proj&&this._isGeodetic(e)&&(n=!0,e=t.geo.proj.fromGeodetic(e)),e=[e[0]-i,e[1]-s,e[2]+i,e[3]+s],n?t.geo.proj.toGeodetic(e):e},height:function(e,i){return!i&&t.geo.proj&&this._isGeodetic(e)&&(e=t.geo.proj.fromGeodetic(e)),e[3]-e[1]},_in:function(t,e){return t[0]<=e[0]&&t[1]<=e[1]&&t[2]>=e[2]&&t[3]>=e[3]},_bboxDisjoint:function(t,e){return e[0]>t[2]||e[2]t[3]||e[3]0&&(a/h>i?(n=a/2,r=n/i):(r=h/2,n=r*i),e=[c[0]-n,c[1]-r,c[0]+n,c[1]+r]),o?t.geo.proj.toGeodetic(e):e},recenter:function(e,i,s){var o=!1;!s&&t.geo.proj&&(this._isGeodetic(e)&&(o=!0,e=t.geo.proj.fromGeodetic(e)),this._isGeodetic(i)&&(i=t.geo.proj.fromGeodetic(i)));var n=(e[2]-e[0])/2,r=(e[3]-e[1])/2;return e=[i[0]-n,i[1]-r,i[0]+n,i[1]+r],o?t.geo.proj.toGeodetic(e):e},scaleBy:function(e,i,s){var o=!1;!s&&t.geo.proj&&this._isGeodetic(e)&&(o=!0,e=t.geo.proj.fromGeodetic(e));var n=this.center(e,!0),r=(e[2]-e[0])*i/2,a=(e[3]-e[1])*i/2;return e=[n[0]-r,n[1]-a,n[0]+r,n[1]+a],o?t.geo.proj.toGeodetic(e):e},width:function(e,i){return!i&&t.geo.proj&&this._isGeodetic(e)&&(e=t.geo.proj.fromGeodetic(e)),e[2]-e[0]},bbox:function(e,n){var r,a=!1;if(!e)return i;if(e.bbox)r=!n&&t.geo.proj&&this._isGeodetic(e.bbox)?t.geo.proj.fromGeodetic(e.bbox):e.bbox;else{r=[s,s,o,o];var h=this._allCoordinates(e),c=0;if(0===h.length)return i;for(!n&&t.geo.proj&&this._isGeodetic(h)&&(a=!0,h=t.geo.proj.fromGeodetic(h));h.length>c;c++)r[0]=Math.min(h[c][0],r[0]),r[1]=Math.min(h[c][1],r[1]),r[2]=Math.max(h[c][0],r[2]),r[3]=Math.max(h[c][1],r[3])}return a?t.geo.proj.toGeodetic(r):r},centroid:function(e,n){var r;switch(e.type){case"Point":return t.extend({},e);case"LineString":case"Polygon":var a,h,c=0,l=t.merge([],"Polygon"===e.type?e.coordinates[0]:e.coordinates),_=1,u=[s,s,o,o];r=[0,0];var d=!1;for(!n&&t.geo.proj&&this._isGeodetic(l)&&(d=!0,l=t.geo.proj.fromGeodetic(l));l.length>=_;_++)a=_%l.length,u[0]=Math.min(l[a][0],u[0]),u[1]=Math.min(l[a][1],u[1]),u[2]=Math.max(l[a][0],u[2]),u[3]=Math.max(l[a][1],u[3]),h=l[_-1][0]*l[a][1]-l[a][0]*l[_-1][1],c+=h,r[0]+=(l[_-1][0]+l[a][0])*h,r[1]+=(l[_-1][1]+l[a][1])*h;return 0===c?l.length>0?(r[0]=Math.min(Math.max(l[0][0],u[0]),u[2]),r[1]=Math.min(Math.max(l[0][1],u[1]),u[3]),{type:"Point",coordinates:d?t.geo.proj.toGeodetic(r):r}):i:(c*=3,r[0]=Math.min(Math.max(r[0]/c,u[0]),u[2]),r[1]=Math.min(Math.max(r[1]/c,u[1]),u[3]),{type:"Point",coordinates:d?t.geo.proj.toGeodetic(r):r});case"MultiPoint":if(e.coordinates.length>0)return r=e.coordinates[0],{type:"Point",coordinates:[r[0],r[1]]};break;case"MultiLineString":case"MultiPolygon":if(e.coordinates.length>0)return this.centroid({type:e.type.substr(5),coordinates:e.coordinates[0]},n)}return i},contains:function(t,e){if("Polygon"!==t.type)return!1;switch(e.type){case"Point":return this._containsPolygonPoint(t.coordinates,e.coordinates);case"LineString":return this._containsPolygonLineString(t.coordinates,e.coordinates);case"Polygon":return this._containsPolygonLineString(t.coordinates,e.coordinates[0]);default:return!1}},_containsPolygonPoint:function(t,e){if(0===t.length||4>t[0].length)return!1;for(var i,s,o=0,n=t[0][0],r=1;t[0].length>r;r++)i=t[0][r],(n[1]<=e[1]&&e[1]e[0]&&o++),n=i;return 1===o%2},_containsPolygonLineString:function(t,e){for(var i=0;e.length>i;i++)if(!this._containsPolygonPoint(t,e[i]))return!1;return!0},distance:function(e,s,o){var n=!o&&t.geo.proj&&this._isGeodetic(e.coordinates)?t.geo.proj.fromGeodetic(e.coordinates):e.coordinates,r=!o&&t.geo.proj&&this._isGeodetic(s.coordinates)?t.geo.proj.fromGeodetic(s.coordinates):s.coordinates;switch(e.type){case"Point":switch(s.type){case"Point":return this._distancePointPoint(r,n);case"LineString":return this._distanceLineStringPoint(r,n);case"Polygon":return this._containsPolygonPoint(r,n)?0:this._distanceLineStringPoint(r[0],n);default:return i}break;case"LineString":switch(s.type){case"Point":return this._distanceLineStringPoint(n,r);case"LineString":return this._distanceLineStringLineString(n,r);case"Polygon":return this._containsPolygonLineString(r,n)?0:this._distanceLineStringLineString(r[0],n);default:return i}break;case"Polygon":switch(s.type){case"Point":return this._containsPolygonPoint(n,r)?0:this._distanceLineStringPoint(n[0],r);case"LineString":return this._containsPolygonLineString(n,r)?0:this._distanceLineStringLineString(n[0],r);case"Polygon":return this._containsPolygonLineString(n,r[0])?0:this._distanceLineStringLineString(n[0],r[0]);default:return i}}},_distancePointPoint:function(t,e){var i=e[0]-t[0],s=e[1]-t[1];return Math.sqrt(i*i+s*s)},_distanceLineStringPoint:function(t,e){var i=s;if(t.length>0){var o=t[0],n=e[0]-o[0],r=e[1]-o[1];if(1===t.length)return Math.sqrt(n*n+r*r);for(var a=1;t.length>a;a++){var h=t[a],c=h[0]-o[0],l=h[1]-o[1],_=e[0]-h[0],u=e[1]-h[1],d=this._distanceSegmentPoint(c,l,n,r,_,u);if(0===d)return 0;i>d&&(i=d),o=h,n=_,r=u}}return Math.sqrt(i)},_distanceSegmentPoint:function(t,e,i,s,o,n){var r=t*i+e*s;if(0>=r)return i*i+s*s;var a=t*t+e*e;return r>=a?o*o+n*n:i*i+s*s-r*r/a},_distanceLineStringLineString:function(t,e){for(var i=s,o=0;e.length>o;o++)i=Math.min(i,this._distanceLineStringPoint(t,e[o]));return i},_buffer:function(e,s,o){var n=!1,r=e.coordinates;if(!o&&t.geo.proj&&this._isGeodetic(e.coordinates)&&(n=!0,r=t.geo.proj.fromGeodetic(e.coordinates)),"Point"===e.type){for(var a,h=[],c=180,l=0;c>=l;l++)a=360*l/c*(Math.PI/180),h.push([r[0]+Math.cos(a)*s,r[1]+Math.sin(a)*s]);return{type:"Polygon",coordinates:[n?t.geo.proj.toGeodetic(h):h]}}return i},_basic:function(t){for(var e,i,s=[],o=0,n=this._flatten(t);n.length>o;o++)if("Multi"===n[o].type.substring(0,5))for(e=n[o].type.substring(5),i=0;n[o].coordinates.length>i;i++)s.push({type:e,coordinates:n[o].coordinates[i]});else s.push(n[o]);return s},_flatten:function(e){var i=[],s=0;switch(e.type){case"Feature":t.merge(i,this._flatten(e.geometry));break;case"FeatureCollection":for(;e.features.length>s;s++)t.merge(i,this._flatten(e.features[s].geometry));break;case"GeometryCollection":for(;e.geometries.length>s;s++)t.merge(i,this._flatten(e.geometries[s]));break;default:i[0]=e}return i},length:function(e,i){var s,o,n,r=0,a=1;switch(e.type){case"Point":return 0;case"LineString":s=e.coordinates;break;case"Polygon":s=e.coordinates[0]}if(s){for(!i&&t.geo.proj&&this._isGeodetic(s)&&(s=t.geo.proj.fromGeodetic(s));s.length>a;a++)o=s[a][0]-s[a-1][0],n=s[a][1]-s[a-1][1],r+=Math.sqrt(o*o+n*n);return r}},area:function(e,i){var s,o,n=0,r=1;switch(e.type){case"Point":case"LineString":return 0;case"Polygon":s=e.coordinates[0]}if(s){for(!i&&t.geo.proj&&this._isGeodetic(s)&&(s=t.geo.proj.fromGeodetic(s));s.length>=r;r++)o=r%s.length,n+=(s[r-1][0]-s[o][0])*(s[r-1][1]+s[o][1])/2;return Math.abs(n)}},pointAlong:function(e,i,s){var o,n,r,a,h,c,l,_,u=0,d=0,p=0,g=[],f=1,m=!1;switch(e.type){case"Point":return t.extend({},e);case"LineString":r=e.coordinates;break;case"Polygon":r=e.coordinates[0]}if(r){if(0===i)return{type:"Point",coordinates:[r[0][0],r[0][1]]};if(1===i)return f=r.length-1,{type:"Point",coordinates:[r[f][0],r[f][1]]};for(!s&&t.geo.proj&&this._isGeodetic(r)&&(m=!0,r=t.geo.proj.fromGeodetic(r));r.length>f;f++)a=r[f][0]-r[f-1][0],h=r[f][1]-r[f-1][1],n=Math.sqrt(a*a+h*h),g.push(n),u+=n;for(f=0;g.length>f&&i>p;f++)d=p,p+=g[f]/u;return o=i-d,l=r[f-1],_=r[f],c=[l[0]+o*(_[0]-l[0]),l[1]+o*(_[1]-l[1])],{type:"Point",coordinates:m?t.geo.proj.toGeodetic(c):c}}},WKT:function(){function e(t){return"POINT "+i(t.coordinates)}function i(t){return t&&t.length?"("+t.join(" ")+")":"EMPTY"}function s(t){return"LINESTRING "+o(t.coordinates)}function o(t){if(t&&t.length){for(var e=[],i=0;t.length>i;i++)e.push(t[i].join(" "));return"("+e+")"}return"EMPTY"}function n(t){return"POLYGON "+r(t.coordinates)}function r(t){if(t&&t.length){for(var e=[],i=0;t.length>i;i++)e.push(o(t[i]));return"("+e+")"}return"EMTPY"}function a(t){return"MULTIPOINT "+o(t.coordinates)}function h(t){return"MULTILINSTRING "+r(t.coordinates)}function c(t){return"MULTIPOLYGON "+l(t.coordinates)}function l(t){if(t&&t.length){for(var e=[],i=0;t.length>i;i++)e.push(r(t[i]));return"("+e+")"}return"EMPTY"}function _(t){return"GEOMETRYCOLLECTION "+u(t.geometries)}function u(t){if(t&&t.length){for(var e=[],i=0;t.length>i;i++)e.push(d(t[i]));return"("+t+")"}return"EMPTY"}function d(t){if(!t||!t.type)return"";switch(t.type){case"Point":return e(t);case"LineString":return s(t);case"Polygon":return n(t);case"MultiPoint":return a(t);case"MultiLineString":return h(t);case"MultiPolygon":return c(t);case"GeometryCollection":return _(t);default:return""}}function p(t){var e=t.match(/\(\s*([\d\.\-]+)\s+([\d\.\-]+)\s*\)/);return e&&e.length>2?{type:"Point",coordinates:[parseFloat(e[1]),parseFloat(e[2])]}:null}function g(t){var e,i,s=t.match(/\s*\((.*)\)/),o=[],n=0;if(s&&s.length>1){for(e=s[1].match(/[\d\.\-]+\s+[\d\.\-]+/g);e.length>n;n++)i=e[n].match(/\s*([\d\.\-]+)\s+([\d\.\-]+)\s*/),o[n]=[parseFloat(i[1]),parseFloat(i[2])];return{type:"LineString",coordinates:o}}return null}function f(t){var e,i,s=t.match(/\s*\(\s*\((.*)\)\s*\)/),o=[],n=0;if(s&&s.length>1){for(e=s[1].match(/[\d\.\-]+\s+[\d\.\-]+/g);e.length>n;n++)i=e[n].match(/\s*([\d\.\-]+)\s+([\d\.\-]+)\s*/),o[n]=[parseFloat(i[1]),parseFloat(i[2])];return{type:"Polygon",coordinates:[o]}}return null}function m(e){var i;return-1===e.indexOf("((")?i=g(e):(i=v(e),i.coordinates=t.geo._allCoordinates(i)),i.type="MultiPoint",i}function v(t){for(var e,i=t.substr(2,t.length-4),s=i.split(/\),\s*\(/),o=0,n={type:"MultiLineString",coordinates:[]};s.length>o;o++)e=g("("+s[o]+")"),e&&n.coordinates.push(e.coordinates);return n}function x(t){for(var e,i=t.substr(1,t.length-2),s=i.split(/\),\s*\(/),o=0,n={type:"MultiPolygon",coordinates:[]};s.length>o;o++)e=f("("+s[o]+")"),e&&n.coordinates.push(e.coordinates);return n}function y(t){var e,i,s=t.substr(1,t.length-2),o=s.match(/\),[a-zA-Z]/g),n={type:"GeometryCollection",geometries:[]},r=0,a=0;if(o&&o.length>0){for(;o.length>r;r++)i=s.indexOf(o[r],a)-a+1,e=b(s.substr(a,i)),e&&n.geometries.push(e),a+=i+1;return e=b(s.substr(a)),e&&n.geometries.push(e),n}return null}function b(e){e=t.trim(e);var i=e.indexOf("("),s=e.substr(i);switch(t.trim(e.substr(0,i)).toUpperCase()){case"POINT":return p(s);case"LINESTRING":return g(s);case"POLYGON":return f(s);case"MULTIPOINT":return m(s);case"MULTILINESTRING":return v(s);case"MULTIPOLYGON":return x(s);case"GEOMETRYCOLLECTION":return y(s);default:return null}}return{stringify:d,parse:b}}(),proj:function(){var e=1.5707963267948966,i=.7853981633974483,s=.017453292519943295,o=57.29577951308232,n=6378137;return{fromGeodeticPos:function(t){return[n*t[0]*s,n*Math.log(Math.tan(i+t[1]*s/2))]},fromGeodetic:function(e){if(!t.geo._isGeodetic(e))return e;var i=t.isArray(e[0]),s=this.fromGeodeticPos;if(i||4!==e.length){var o,n,r,a=i&&t.isArray(e[0][0]),h=a&&t.isArray(e[0][0][0]),c=[];for(h||(a||(i||(e=[e]),e=[e]),e=[e]),o=0;e.length>o;o++)for(c[o]=[],n=0;e[o].length>n;n++)for(c[o][n]=[],r=0;e[o][n].length>r;r++)c[o][n][r]=s(e[o][n][r]);return h?c:a?c[0]:i?c[0][0]:c[0][0][0]}var l=s([e[0],e[1]]),_=s([e[2],e[3]]);return[l[0],l[1],_[0],_[1]]},toGeodeticPos:function(t){return[t[0]/n*o,(e-2*Math.atan(1/Math.exp(t[1]/n)))*o] +},toGeodetic:function(e){if(t.geo._isGeodetic(e))return e;var i=t.isArray(e[0]),s=this.toGeodeticPos;if(i||4!==e.length){var o,n,r,a=i&&t.isArray(e[0][0]),h=a&&t.isArray(e[0][0][0]),c=[];for(h||(a||(i||(e=[e]),e=[e]),e=[e]),o=0;e.length>o;o++)for(c[o]=[],n=0;e[o].length>n;n++)for(c[o][n]=[],r=0;e[o][n].length>r;r++)c[o][n][r]=s(e[o][n][r]);return h?c:a?c[0]:i?c[0][0]:c[0][0][0]}var l=s([e[0],e[1]]),_=s([e[2],e[3]]);return[l[0],l[1],_[0],_[1]]}}}(),_serviceTypes:{}}}(jQuery,this),function(t,e,i){var s=function(){var t=5,e=document.createElement("div"),i=e.all||[];do e.innerHTML="";while(i[0]);return t>6?t:!t}();t.widget("geo.geographics",{_$elem:i,_options:{},_trueCanvas:!0,_trueDoubleBuffer:!0,_width:0,_height:0,_$canvas:i,_context:i,_$canvasSceneFront:i,_$canvasSceneBack:i,_timeoutEnd:null,_requireFlip:!1,_blitcanvas:i,_blitcontext:i,_$labelsContainerFront:i,_$labelsContainerBack:i,_labelsHtml:"",options:{style:{borderRadius:"8px",color:"#7f0000",fillOpacity:.2,height:"8px",opacity:1,strokeOpacity:1,strokeWidth:"2px",visibility:"visible",width:"8px"},doubleBuffer:!0},_create:function(){this._$elem=this.element,this._options=this.options,this._$elem.css({webkitTransform:"translateZ(0)",display:"inline-block",overflow:"hidden",textAlign:"left"}),"static"===this._$elem.css("position")&&this._$elem.css("position","relative"),this._$elem.addClass("geo-graphics"),this._width=this._$elem.width(),this._height=this._$elem.height(),this._width&&this._height||(this._width=parseInt(this._$elem.css("width"),10),this._height=parseInt(this._$elem.css("height"),10));var i="position:absolute;left:0;top:0;margin:0;padding:0;",o="width:"+this._width+"px;height:"+this._height+"px;",n='width="'+this._width+'" height="'+this._height+'"';this._blitcanvas=document.createElement("canvas"),this._blitcanvas.getContext?(this._$canvas=t(e.toStaticHTML("')),this._blitcanvas.width=1,this._blitcanvas.height=1,this._trueDoubleBuffer=this._blitcanvas.toDataURL().length>6,this._options.doubleBuffer&&this._trueDoubleBuffer||this._$elem.append(this._$canvas),this._context=this._$canvas[0].getContext("2d"),this._blitcanvas.width=this._width,this._blitcanvas.height=this._height,this._blitcontext=this._blitcanvas.getContext("2d"),this._$canvasSceneFront=t(e.toStaticHTML('')),this._$canvasSceneBack=t(e.toStaticHTML(''))):8>=s&&(this._trueCanvas=!1,this._$elem.append("
    '),this._$canvas=this._$elem.children(":last"),G_vmlCanvasManager.initElement(this._$canvas[0]),this._context=this._$canvas[0].getContext("2d"),this._$canvas.children().css({backgroundColor:"transparent",width:this._width,height:this._height})),this._$labelsContainerFront=t(e.toStaticHTML('
    ')),this._$labelsContainerBack=t(e.toStaticHTML('
    '))},_setOption:function(e,i){"style"===e&&(i=t.extend({},this._options.style,i)),t.Widget.prototype._setOption.apply(this,arguments)},destroy:function(){t.Widget.prototype.destroy.apply(this,arguments),this._$elem.html(""),this._$elem.removeClass("geo-graphics")},clear:function(){this._context.clearRect(0,0,this._width,this._height),this._labelsHtml="",this._end()},drawArc:function(t,e,i,s){if(s=this._getGraphicStyle(s),"hidden"!==s.visibility&&s.opacity>0&&s.widthValue>0&&s.heightValue>0){var o=Math.min(s.widthValue,s.heightValue)/2;e=e*Math.PI/180,i=i*Math.PI/180,this._context.save(),this._context.translate(t[0],t[1]),s.widthValue>s.heightValue?this._context.scale(s.widthValue/s.heightValue,1):this._context.scale(1,s.heightValue/s.widthValue),this._context.beginPath(),this._context.arc(0,0,o,e,i,!1),this._trueCanvas&&this._context.restore(),s.doFill&&(this._context.fillStyle=s.fill,this._context.globalAlpha=s.opacity*s.fillOpacity,this._context.fill()),s.doStroke&&(this._context.lineJoin="round",this._context.lineWidth=s.strokeWidthValue,this._context.strokeStyle=s.stroke,this._context.globalAlpha=s.opacity*s.strokeOpacity,this._context.stroke()),this._trueCanvas||this._context.restore()}this._end()},drawPoint:function(t,e){e=this._getGraphicStyle(e),e.widthValue===e.heightValue&&e.heightValue===e.borderRadiusValue?this.drawArc(t,0,360,e):"hidden"!==e.visibility&&e.opacity>0&&(e.borderRadiusValue=Math.min(Math.min(e.widthValue,e.heightValue)/2,e.borderRadiusValue),t[0]-=e.widthValue/2,t[1]-=e.heightValue/2,this._context.beginPath(),this._context.moveTo(t[0]+e.borderRadiusValue,t[1]),this._context.lineTo(t[0]+e.widthValue-e.borderRadiusValue,t[1]),this._context.quadraticCurveTo(t[0]+e.widthValue,t[1],t[0]+e.widthValue,t[1]+e.borderRadiusValue),this._context.lineTo(t[0]+e.widthValue,t[1]+e.heightValue-e.borderRadiusValue),this._context.quadraticCurveTo(t[0]+e.widthValue,t[1]+e.heightValue,t[0]+e.widthValue-e.borderRadiusValue,t[1]+e.heightValue),this._context.lineTo(t[0]+e.borderRadiusValue,t[1]+e.heightValue),this._context.quadraticCurveTo(t[0],t[1]+e.heightValue,t[0],t[1]+e.heightValue-e.borderRadiusValue),this._context.lineTo(t[0],t[1]+e.borderRadiusValue),this._context.quadraticCurveTo(t[0],t[1],t[0]+e.borderRadiusValue,t[1]),this._context.closePath(),e.doFill&&(this._context.fillStyle=e.fill,this._context.globalAlpha=e.opacity*e.fillOpacity,this._context.fill()),e.doStroke&&(this._context.lineJoin="round",this._context.lineWidth=e.strokeWidthValue,this._context.strokeStyle=e.stroke,this._context.globalAlpha=e.opacity*e.strokeOpacity,this._context.stroke()),this._end())},drawLineString:function(t,e){this._drawLines([t],!1,e)},drawPolygon:function(t,e){if(this._trueCanvas&&1!==t.length){if(!t||!t.length||3>t[0].length)return;e=this._getGraphicStyle(e);var i,s,o;if("hidden"!==e.visibility&&e.opacity>0){if(this._blitcontext.clearRect(0,0,this._width,this._height),e.doFill&&t.length>1)for(this._blitcontext.globalCompositeOperation="source-out",this._blitcontext.globalAlpha=1,s=1;t.length>s;s++){for(this._blitcontext.beginPath(),this._blitcontext.moveTo(t[s][0][0],t[s][0][1]),o=1;t[s].length>o;o++)this._blitcontext.lineTo(t[s][o][0],t[s][o][1]);this._blitcontext.closePath(),this._blitcontext.fill()}for(this._blitcontext.beginPath(),this._blitcontext.moveTo(t[0][0][0],t[0][0][1]),i=[t[0][0][0]-e.strokeWidthValue,t[0][0][1]-e.strokeWidthValue,t[0][0][0]+e.strokeWidthValue,t[0][0][1]+e.strokeWidthValue],s=1;t[0].length-1>s;s++)this._blitcontext.lineTo(t[0][s][0],t[0][s][1]),i[0]=Math.min(t[0][s][0]-e.strokeWidthValue,i[0]),i[1]=Math.min(t[0][s][1]-e.strokeWidthValue,i[1]),i[2]=Math.max(t[0][s][0]+e.strokeWidthValue,i[2]),i[3]=Math.max(t[0][s][1]+e.strokeWidthValue,i[3]);if(this._blitcontext.closePath(),this._blitcontext.globalCompositeOperation="source-out",e.doFill&&(this._blitcontext.fillStyle=e.fill,this._blitcontext.globalAlpha=e.opacity*e.fillOpacity,this._blitcontext.fill()),this._blitcontext.globalCompositeOperation="source-over",e.doStroke&&(this._blitcontext.lineCap=this._blitcontext.lineJoin="round",this._blitcontext.lineWidth=e.strokeWidthValue,this._blitcontext.strokeStyle=e.stroke,this._blitcontext.globalAlpha=e.opacity*e.strokeOpacity,this._blitcontext.stroke(),t.length>1))for(s=1;t.length>s;s++){for(this._blitcontext.beginPath(),this._blitcontext.moveTo(t[s][0][0],t[s][0][1]),o=1;t[s].length>o;o++)this._blitcontext.lineTo(t[s][o][0],t[s][o][1]);this._blitcontext.closePath(),this._blitcontext.stroke()}i[0]=Math.min(Math.max(i[0],0),this._width),i[1]=Math.min(Math.max(i[1],0),this._height),i[2]=Math.min(Math.max(i[2],0),this._width),i[3]=Math.min(Math.max(i[3],0),this._height),i[0]!==i[2]&&i[1]!==i[3]&&(this._context.drawImage(this._blitcanvas,i[0],i[1],i[2]-i[0],i[3]-i[1],i[0],i[1],i[2]-i[0],i[3]-i[1]),this._end())}}else this._drawLines(t,!0,e)},drawBbox:function(t,e){this._drawLines([[[t[0],t[1]],[t[0],t[3]],[t[2],t[3]],[t[2],t[1]],[t[0],t[1]]]],!0,e)},drawLabel:function(t,e){this._labelsHtml+='
    '+e+"
    "},resize:function(t,e){this._width=this._$elem.width(),this._height=this._$elem.height(),this._width&&this._height||(this._width=parseInt(this._$elem.css("width"),10),this._height=parseInt(this._$elem.css("height"),10)),this._trueCanvas?(this._$canvas[0].width=this._width,this._$canvas[0].height=this._height,this._$canvasSceneFront.css({left:t,top:e}),this._$canvasSceneBack.css({width:this._width,height:this._height})):this._$canvas.css({width:this._width,height:this._height});var i=this._$labelsContainerFront.position();this._$labelsContainerFront.css({left:i.left+t,top:i.top+e,width:this._width,height:this._height}),this._$labelsContainerBack.css({width:this._width,height:this._height})},interactiveTransform:function(t,e){if(this._timeoutEnd&&(clearTimeout(this._timeoutEnd),this._timeoutEnd=null),this._trueCanvas)if(this._options.doubleBuffer&&this._trueDoubleBuffer){var i=this;if(this._requireFlip){i._requireFlip=!1;var s=i._$canvasSceneFront;i._$canvasSceneFront=i._$canvasSceneBack.css({left:0,top:0,width:i._width,height:i._height}).prop("src",i._$canvas[0].toDataURL()).prependTo(i._$elem),i._$canvasSceneBack=s.prop("src","").detach()}this._$canvasSceneFront.css({left:Math.round(t[0]),top:Math.round(t[1]),width:this._width*e,height:this._height*e})}else this._context.clearRect(0,0,this._width,this._height);else this._context.clearRect(0,0,this._width,this._height);this._$labelsContainerFront.css({left:Math.round(t[0]),top:Math.round(t[1]),width:this._width*e,height:this._height*e})},_canvasSceneLoad:function(){var t=this;if(t._requireFlip){t._requireFlip=!1;var e=t._$canvasSceneFront;t._$canvasSceneFront=t._$canvasSceneBack.css({left:0,top:0,width:t._width,height:t._height}).prependTo(t._$elem),t._$canvasSceneBack=e.prop("src","").detach()}},_endCallback:function(){var t=this;if(t._timeoutEnd){t._trueCanvas&&t._options.doubleBuffer&&t._trueDoubleBuffer&&(t._$canvasSceneBack.prop("src",t._$canvas[0].toDataURL()),this._canvasSceneLoad()),t._$labelsContainerBack.html(e.toStaticHTML(t._labelsHtml)).find("a").css({position:"relative",zIndex:1,display:"inline-block",webkitTransform:"translateZ(0)"});var i=t._$labelsContainerFront;t._$labelsContainerFront=t._$labelsContainerBack.css({left:0,top:0,width:t._width,height:t._height}).prependTo(t._$elem),t._$labelsContainerBack=i.detach(),t._timeoutEnd=null}},_end:function(){this._timeoutEnd&&(clearTimeout(this._timeoutEnd),this._timeoutEnd=null),this._requireFlip=!0,this._timeoutEnd=setTimeout(t.proxy(this._endCallback,this),20)},_getGraphicStyle:function(e){function i(t){return t=parseInt(t,10),+t+""===t?+t:t}return e=t.extend({},this._options.style,e),e.borderRadiusValue=i(e.borderRadius),e.fill=e.fill||e.color,e.doFill=e.fill&&e.fillOpacity>0,e.stroke=e.stroke||e.color,e.strokeWidthValue=i(e.strokeWidth),e.doStroke=e.stroke&&e.strokeOpacity>0&&e.strokeWidthValue>0,e.widthValue=i(e.width),e.heightValue=i(e.height),e},_drawLines:function(t,e,i){if(t&&t.length&&!(2>t[0].length)){var s,o;if(i=this._getGraphicStyle(i),"hidden"!==i.visibility&&i.opacity>0){for(this._context.beginPath(),s=0;t.length>s;s++)for(this._context.moveTo(t[s][0][0],t[s][0][1]),o=1;t[s].length>o;o++)this._context.lineTo(t[s][o][0],t[s][o][1]);e&&this._context.closePath(),e&&i.doFill&&(this._context.fillStyle=i.fill,this._context.globalAlpha=i.opacity*i.fillOpacity,this._context.fill()),i.doStroke&&(this._context.lineCap=this._context.lineJoin="round",this._context.lineWidth=i.strokeWidthValue,this._context.strokeStyle=i.stroke,this._context.globalAlpha=i.opacity*i.strokeOpacity,this._context.stroke()),this._end()}}}})}(jQuery,window),function(t,e,i){var s=0,o=function(){var t=5,e=document.createElement("div"),i=e.all||[];do e.innerHTML="";while(i[0]);return t>6?t:!t}(),n={bbox:[-180,-85,180,85],bboxMax:[-180,-85,180,85],center:[0,0],cursors:{"static":"default",pan:"url(data:image/vnd.microsoft.icon;base64,AAACAAEAICACAAgACAAwAQAAFgAAACgAAAAgAAAAQAAAAAEAAQAAAAAAAAEAAAAAAAAAAAAAAgAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8AAAA/AAAAfwAAAP+AAAH/gAAB/8AAA//AAAd/wAAGf+AAAH9gAADbYAAA2yAAAZsAAAGbAAAAGAAAAAAAAA//////////////////////////////////////////////////////////////////////////////////////gH///4B///8Af//+AD///AA///wAH//4AB//8AAf//AAD//5AA///gAP//4AD//8AF///AB///5A////5///8=), move",click:"crosshair",zoom:"crosshair",dragBox:"crosshair",dragCircle:"crosshair",drawPoint:"crosshair",drawLineString:"crosshair",drawPolygon:"crosshair",measureLength:"crosshair",measureArea:"crosshair"},measureLabels:{length:"{{:length.toFixed( 2 )}} m",area:"{{:area.toFixed( 2 )}} sq m"},drawStyle:{},shapeStyle:{},mode:"pan",pannable:!0,scroll:"default",shift:"default",services:[{"class":"osm",type:"tiled",src:function(t){return"http://otile"+(t.index%4+1)+".mqcdn.com/tiles/1.0.0/osm/"+t.zoom+"/"+t.tile.column+"/"+t.tile.row+".png"},attr:"Tiles Courtesy of MapQuest "}],tilingScheme:{tileWidth:256,tileHeight:256,levels:18,basePixelSize:156543.03392799935,origin:[-20037508.342787,20037508.342787]},axisLayout:"map",zoom:0,zoomMin:0,zoomMax:Number.POSITIVE_INFINITY,zoomFactor:2,pixelSize:0};t.widget("geo.geomap",{_$elem:i,_map:i,_created:!1,_createdGraphics:!1,_widgetId:0,_tmplLengthId:"",_tmplAreaId:"",_contentBounds:{},_$resizeContainer:i,_$eventTarget:i,_$contentFrame:i,_$existingChildren:i,_$attrList:i,_$servicesContainer:i,_$shapesContainers:i,_$panContainer:i,_$shapesContainer:i,_$drawContainer:i,_$measureContainer:i,_$measureLabel:i,_dpi:96,_currentServices:[],_center:i,_pixelSize:i,_centerMax:i,_pixelSizeMax:i,_userGeodetic:!0,_centerInteractive:i,_pixelSizeInteractive:i,_timeoutInteractive:null,_triggerInteractive:!1,_timeoutRefreshShapes:null,_loadCount:0,_wheelLevel:0,_fullZoomFactor:2,_partialZoomFactor:1.18920711500273,_mouseDown:i,_inOp:i,_toolPan:i,_shiftDown:i,_anchor:i,_current:i,_downDate:i,_moveDate:i,_clickDate:i,_lastMove:i,_lastDrag:i,_windowHandler:null,_resizeTimeout:null,_panning:i,_velocity:i,_friction:i,_supportTouch:i,_softDblClick:i,_isTap:i,_isDbltap:i,_isMultiTouch:i,_multiTouchAnchor:[],_multiTouchAnchorBbox:i,_multiTouchCurrentBbox:i,_drawTimeout:null,_drawPixels:[],_drawCoords:[],_graphicShapes:[],_initOptions:{},_options:{},options:t.extend({},n),_createWidget:function(e,o){if(this._$elem=t(o),this._$elem.is(".geo-service"))return this._graphicShapes=[],t.Widget.prototype._createWidget.apply(this,arguments),i;this._widgetId=s++,this._serviceIdSeed=0,this._tmplLengthId="geoMeasureLength"+this._widgetId,this._tmplAreaId="geoMeasureArea"+this._widgetId,this._$elem.addClass("geo-map").css({webkitTransform:"translateZ(0)"}),this._initOptions=e||{},this._forcePosition(this._$elem),this._$elem.css("text-align","left");var n=this._findMapSize();this._contentBounds={x:parseInt(this._$elem.css("padding-left"),10),y:parseInt(this._$elem.css("padding-top"),10),width:n.width,height:n.height},this._createChildren(),this._center=[0,0],this._centerMax=[0,0],this._centerInteractive=[0,0],this.options.pixelSize=this._pixelSize=this._pixelSizeMax=156543.03392799935,this._mouseDown=this._inOp=this._toolPan=this._shiftDown=this._panning=this._isTap=this._isDbltap=!1,this._anchor=[0,0],this._current=[0,0],this._lastMove=[0,0],this._lastDrag=[0,0],this._velocity=[0,0],this._friction=[.8,.8],this._downDate=this._moveDate=this._clickDate=0,this._drawPixels=[],this._drawCoords=[],this._graphicShapes=[],t.Widget.prototype._createWidget.apply(this,arguments)},_create:function(){if(this._options=this.options,this._$elem.is(".geo-service"))return this._map=this._$elem.data("geoMap"),this._$elem.data("geoService",this),i;this._map=this,this._supportTouch="ontouchend"in document,this._softDblClick=this._supportTouch||7===o;var s=this,n=this._supportTouch?"touchstart mousedown":"mousedown",r=this._supportTouch?"touchend touchcancel mouseup":"mouseup",a=this._supportTouch?"touchmove mousemove":"mousemove";t(document).keydown(t.proxy(this._document_keydown,this)),this._$eventTarget.dblclick(t.proxy(this._eventTarget_dblclick,this)),this._$eventTarget.bind(n,t.proxy(this._eventTarget_touchstart,this));var h=this._$eventTarget[0].setCapture?this._$eventTarget:t(document);h.bind(a,t.proxy(this._dragTarget_touchmove,this)),h.bind(r,t.proxy(this._dragTarget_touchstop,this)),this._$eventTarget.mousewheel(t.proxy(this._eventTarget_mousewheel,this)),this._windowHandler=function(){s._resizeTimeout&&clearTimeout(s._resizeTimeout),s._resizeTimeout=setTimeout(function(){s._created&&s._$elem.geomap("resize",!0)},500)},t(e).resize(this._windowHandler),this._$drawContainer.geographics({style:this._initOptions.drawStyle||{},doubleBuffer:!1}),this._options.drawStyle=this._$drawContainer.geographics("option","style"),this._$shapesContainer.geographics({style:this._initOptions.shapeStyle||{}}),this._createdGraphics=!0,this._options.shapeStyle=this._$shapesContainer.geographics("option","style"),this._initOptions&&(this._initOptions.tilingScheme!==i&&this._setOption("tilingScheme",this._initOptions.tilingScheme||null,!1),this._initOptions.services&&(this._options.services=t.merge([],this._initOptions.services)),this._initOptions.bboxMax&&(this._setOption("bboxMax",this._initOptions.bboxMax,!1),this._setOption("bbox",this._initOptions.bboxMax,!1)),this._initOptions.zoomMin!==i&&this._setOption("zoomMin",this._initOptions.zoomMin,!1),this._initOptions.zoomMax!==i&&this._setOption("zoomMax",this._initOptions.zoomMax,!1),this._initOptions.zoomFactor!==i&&(this._setOption("zoomFactor",this._initOptions.zoomFactor,!1),this._fullZoomFactor=this._initOptions.zoomFactor,this._partialZoomFactor=Math.pow(4,1/this._fullZoomFactor)),this._initOptions.bbox&&this._setOption("bbox",this._initOptions.bbox,!1),this._initOptions.center&&this._setOption("center",this._initOptions.center,!1),this._initOptions.zoom!==i&&this._setOption("zoom",this._initOptions.zoom,!1)),t.templates(this._tmplLengthId,this._options.measureLabels.length),t.templates(this._tmplAreaId,this._options.measureLabels.area),this._$eventTarget.css("cursor",this._options.cursors[this._options.mode]),this._createServices(),this._refresh(),this._created=!0},_setOption:function(e,s,o){if("pixelSize"!==e){o=o===i||o,this._$elem.is(".geo-map")&&this._panFinalize();var n,r,a,h;switch(e){case"bbox":this._created&&this._clearInteractiveTimeout(),this._userGeodetic="map"===this._options.axisLayout&&t.geo.proj&&t.geo._isGeodetic(s),this._userGeodetic&&(s=t.geo.proj.fromGeodetic(s)),n=[s[0]+(s[2]-s[0])/2,s[1]+(s[3]-s[1])/2],r=Math.max(t.geo.width(s,!0)/this._contentBounds.width,t.geo.height(s,!0)/this._contentBounds.height),h=this._getZoom(n,r),this._options.tilingScheme?r=this._getPixelSize(Math.min(Math.max(h,this._options.zoomMin),this._options.zoomMax)):this._options.zoomMin>h?r=this._getPixelSize(this._options.zoomMin):h>this._options.zoomMax&&(r=this._getPixelSize(this._options.zoomMax)),this._created?(this._setInteractiveCenterAndSize(n,r),this._setInteractiveTimeout(!1)):this._setCenterAndSize(n,r,!1,o),s=this._getBbox(n,r);break;case"bboxMax":this._userGeodetic="map"===this._options.axisLayout&&t.geo.proj&&t.geo._isGeodetic(s);break;case"center":this._created&&this._clearInteractiveTimeout(),this._userGeodetic="map"===this._options.axisLayout&&t.geo.proj&&t.geo._isGeodetic(s),this._userGeodetic&&(s=t.geo.proj.fromGeodetic(s)),this._created?(this._setInteractiveCenterAndSize(s,this._pixelSizeInteractive),this._interactiveTransform(),this._setInteractiveTimeout(!1)):this._setCenterAndSize(s,this._pixelSize,!1,o);break;case"measureLabels":s=t.extend(this._options.measureLabels,s),t.templates(this._tmplLengthId,this._options.measureLabels.length),t.templates(this._tmplAreaId,this._options.measureLabels.area);break;case"drawStyle":this._$drawContainer&&(this._$drawContainer.geographics("option","style",s),s=this._$drawContainer.geographics("option","style"));break;case"shapeStyle":this._$elem.is(".geo-service")&&!this._createdGraphics&&this._createServiceGraphics(),this._createdGraphics&&(this._$shapesContainer.geographics("option","style",s),s=this._$shapesContainer.geographics("option","style"));break;case"mode":this._resetDrawing(),this._$eventTarget.css("cursor",this._options.cursors[s]);break;case"zoom":this._created?this._setZoom(s,!1,o):(s=Math.max(s,0),this._setCenterAndSize(this._center,this._getPixelSize(s),!1,o))}switch(t.Widget.prototype._setOption.apply(this,arguments),e){case"bbox":case"center":this._userGeodetic&&(this._options.bbox=t.geo.proj.toGeodetic(this._options.bbox),this._options.center=t.geo.proj.toGeodetic(this._center));break;case"tilingScheme":null!==s&&(this._pixelSizeMax=this._getPixelSize(0),this._centerMax=[s.origin[0]+this._pixelSizeMax*s.tileWidth/2,s.origin[1]+this._pixelSizeMax*s.tileHeight/2]);break;case"bboxMax":a=this._userGeodetic?t.geo.proj.fromGeodetic(s):s,this._centerMax=t.geo.center(a),this._pixelSizeMax=Math.max(t.geo.width(a,!0)/this._contentBounds.width,t.geo.height(a,!0)/this._contentBounds.height);break;case"services":this._createServices(),o&&(this._refresh(),this._refreshAllShapes());break;case"shapeStyle":o&&this._createdGraphics&&(this._$shapesContainer.geographics("clear"),this._refreshShapes(this._$shapesContainer,this._graphicShapes,this._graphicShapes,this._graphicShapes))}}},destroy:function(){if(this._$elem.is(".geo-service"))this._createdGraphics&&(this._$shapesContainer.geographics("destroy"),this._$shapesContainer=i,this._createdGraphics=!1);else{clearTimeout(this._timeoutInteractive),this._timeoutInteractive=null,this._created=!1,t(e).unbind("resize",this._windowHandler);for(var s=0;this._currentServices.length>s;s++)this._currentServices[s].serviceContainer.geomap("destroy"),t.geo._serviceTypes[this._currentServices[s].type].destroy(this,this._$servicesContainer,this._currentServices[s]);this._$shapesContainer.geographics("destroy"),this._$shapesContainer=i,this._createdGraphics=!1,this._$drawContainer.geographics("destroy"),this._$drawContainer=i,this._$existingChildren.detach(),this._$elem.html(""),this._$elem.append(this._$existingChildren),this._$elem.removeClass("geo-map")}t.Widget.prototype.destroy.apply(this,arguments)},toMap:function(e){return e=this._toMap(e),this._userGeodetic?t.geo.proj.toGeodetic(e):e},toPixel:function(e,i,s){return this._toPixel(t.geo.proj?t.geo.proj.fromGeodetic(e):e,i,s)},opacity:function(e,i){if(this._$elem.is(".geo-service"))this._$elem.closest(".geo-map").geomap("opacity",e,this._$elem);else if(e>=0||1>=e)for(var s=0;this._currentServices.length>s;s++){var o=this._currentServices[s];i&&o.serviceContainer[0]!==i[0]||(o.style.opacity=e,o.serviceObject.style=t.extend({},o.serviceObject.style,o.style),t.geo._serviceTypes[o.type].opacity(this,o))}},toggle:function(e,s){if(this._$elem.is(".geo-service"))this._$elem.closest(".geo-map").geomap("toggle",e,this._$elem);else for(var o=0;this._currentServices.length>o;o++){var n=this._currentServices[o];s&&n.serviceContainer[0]!==s[0]||(e===i&&(e="visible"!==n.style.visibility),n.style.visibility=e?"visible":"hidden",n.serviceObject.style=t.extend({},n.serviceObject.style,n.style),n.serviceContainer.toggle(e),e&&t.geo._serviceTypes[n.type].refresh(this,n))}},zoom:function(t){null!==t&&this._setZoom(this._options.zoom+t,!1,!0)},refresh:function(t,e){this._$elem.is(".geo-service")?this._$elem.closest(".geo-map").geomap("refresh",t,this._$elem):(this._refresh(t,e),this._refreshAllShapes())},resize:function(e){var i,s=this._findMapSize(),o=s.width/2-this._contentBounds.width/2,n=s.height/2-this._contentBounds.height/2;for(this._contentBounds={x:parseInt(this._$elem.css("padding-left"),10),y:parseInt(this._$elem.css("padding-top"),10),width:s.width,height:s.height},this._$resizeContainer.css({width:s.width,height:s.height}),i=0;this._currentServices.length>i;i++)t.geo._serviceTypes[this._currentServices[i].type].resize(this,this._currentServices[i],o,n);for(this._$elem.find(".geo-graphics").css({width:s.width,height:s.height}).geographics("resize",o,n),i=0;this._drawPixels.length>i;i++)this._drawPixels[i][0]+=o,this._drawPixels[i][1]+=n;this._setCenterAndSize(this._center,this._pixelSize,e,!0)},append:function(e){if(e&&(t.isPlainObject(e)||t.isArray(e)&&e.length>0)){this._createdGraphics||this._createServiceGraphics();var s,o,n,r,a,h;for(s=t.isArray(e)?e:"FeatureCollection"===e.type?e.features:[e],n=1;arguments.length>n;n++)o=arguments[n],null!==o&&("object"==typeof o?r=o:"number"==typeof o||"string"==typeof o?a=o:"boolean"==typeof o&&(h=o));for(n=0;s.length>n;n++){if(!t.data(s[n],"geoBbox")){var c=t.geo.bbox(s[n]);t.geo.proj&&t.geo._isGeodetic(c)&&(c=t.geo.proj.fromGeodetic(c)),t.data(s[n],"geoBbox",c)}this._graphicShapes.push({shape:s[n],style:r,label:a})}(h===i||h)&&(this._$elem.is(".geo-service")?this._refresh(!1,this._$elem):this._refresh(),this._refreshAllShapes())}},empty:function(t){this._graphicShapes=[],(t===i||t)&&(this._$elem.is(".geo-service")?this._refresh(!1,this._$elem):this._refresh(),this._refreshAllShapes())},find:function(e,i){for(var s,o,n,r=t.isPlainObject(e),a=this._map._pixelSize*i,h=[],c=0;this._graphicShapes.length>c;c++)if(s=this._graphicShapes[c],r)if("Point"===s.shape.type)a>=t.geo.distance(s.shape,e)&&h.push(s.shape);else{var l=t.data(s.shape,"geoBbox"),_={type:"Polygon",coordinates:[[[l[0],l[1]],[l[0],l[3]],[l[2],l[3]],[l[2],l[1]],[l[0],l[1]]]]},u={type:"Point",coordinates:t.geo.proj&&t.geo._isGeodetic(e.coordinates)?t.geo.proj.fromGeodetic(e.coordinates):e.coordinates};if(a>=t.geo.distance(_,u,!0))for(o=t.geo._basic(s.shape),n=0;o.length>n;n++)if(a>=t.geo.distance(o[n],e)){h.push(s.shape);break}}else h.push(s.shape);return this._$elem.is(".geo-map")&&this._$elem.find(".geo-service").each(function(){h=t.merge(h,t(this).geomap("find",e,i))}),h},remove:function(e,s){if(e&&(t.isPlainObject(e)||t.isArray(e)&&e.length>0)){for(var o,n=t.isArray(e)?e:[e],r=0;this._graphicShapes.length>r;r++)t.inArray(this._graphicShapes[r].shape,n)>=0&&(o=this._graphicShapes.slice(r+1),this._graphicShapes.length=r,this._graphicShapes.push.apply(this._graphicShapes,o),r--);(s===i||s)&&(this._$elem.is(".geo-service")?this._refresh(!1,this._$elem):this._refresh(),this._refreshAllShapes())}},_getBbox:function(t,e){t=t||this._center,e=e||this._pixelSize;var i=this._contentBounds.width/2*e,s=this._contentBounds.height/2*e;return[t[0]-i,t[1]-s,t[0]+i,t[1]+s]},_setBbox:function(e){var i=[e[0]+(e[2]-e[0])/2,e[1]+(e[3]-e[1])/2],s=Math.max(t.geo.width(e,!0)/this._contentBounds.width,t.geo.height(e,!0)/this._contentBounds.height),o=this._getZoom(i,s);this._options.tilingScheme?s=this._getPixelSize(Math.min(Math.max(o,this._options.zoomMin),this._options.zoomMax)):this._options.zoomMin>o?s=this._getPixelSize(this._options.zoomMin):o>this._options.zoomMax&&(s=this._getPixelSize(this._options.zoomMax)),this._setInteractiveCenterAndSize(i,s),this._interactiveTransform()},_getBboxMax:function(){var t=this._contentBounds.width/2*this._pixelSizeMax,e=this._contentBounds.height/2*this._pixelSizeMax;return[this._centerMax[0]-t,this._centerMax[1]-e,this._centerMax[0]+t,this._centerMax[1]+e]},_getCenter:function(){return this._center},_getContentBounds:function(){return this._contentBounds},_getServicesContainer:function(){return this._$servicesContainer},_getZoom:function(e,i){e=e||this._center,i=i||this._pixelSize;var s=this._options.tilingScheme;if(s){if(s.pixelSizes){for(var o=Math.floor(1e3*i),n=s.pixelSizes.length,r=n-1;r>=0;r--)if(Math.floor(1e3*s.pixelSizes[r])>=o)return r;return 0}return Math.round(Math.log(s.basePixelSize/i)/Math.log(2))}var a=this._contentBounds.width/this._contentBounds.height,h=t.geo.reaspect(this._getBbox(e,i),a,!0),c=t.geo.reaspect(this._getBboxMax(),a,!0);return Math.round(Math.log(t.geo.width(c,!0)/t.geo.width(h,!0))/Math.log(this._fullZoomFactor))},_setZoom:function(t,e){this._clearInteractiveTimeout(),t=Math.min(Math.max(t,this._options.zoomMin),this._options.zoomMax),this._setInteractiveCenterAndSize(this._centerInteractive,this._getPixelSize(t)),this._interactiveTransform(),this._setInteractiveTimeout(e)},_createChildren:function(){this._$existingChildren=this._$elem.children(),this._forcePosition(this._$existingChildren),this._$existingChildren.detach().css({mozUserSelect:"none"});var i="width:"+this._contentBounds.width+"px; height:"+this._contentBounds.height+"px; margin:0; padding:0;",s="position:absolute; left:0; top:0;";this._$elem.prepend(e.toStaticHTML('
    ')),this._$eventTarget=this._$contentFrame=this._$elem.children(":first"),this._$contentFrame.append('
    '),this._$servicesContainer=this._$contentFrame.children(":last"),this._$contentFrame.append('
      '),this._$attrList=this._$contentFrame.children(":last"),this._$contentFrame.append('
      '),this._$drawContainer=this._$contentFrame.children(":last"),this._$contentFrame.append('
      '),this._$measureContainer=this._$contentFrame.children(":last"),this._$measureLabel=this._$measureContainer.children(),this._$contentFrame.append('
      '),this._$shapesContainer=this._$contentFrame.children(":last"),this._$panContainer=t([this._$shapesContainer[0],this._$drawContainer[0],this._$measureContainer[0]]),this._$resizeContainer=t([this._$contentFrame[0],this._$servicesContainer[0],this._$eventTarget[0],this._$measureContainer[0]]),this._$contentFrame.append(this._$existingChildren),t("#geo-measure-style").length||t("head").prepend(e.toStaticHTML('"))},_createServices:function(){var i,s;for(s=0;this._currentServices.length>s;s++)this._currentServices[s].serviceContainer.geomap("destroy"),t.geo._serviceTypes[this._currentServices[s].type].destroy(this,this._$servicesContainer,this._currentServices[s]);for(this._currentServices=[],this._$servicesContainer.html(""),this._$attrList.html(""),s=0;this._options.services.length>s;s++){i=this._currentServices[s]=t.extend({},this._options.services[s]),i.serviceObject=this._options.services[s],i.style=t.extend({visibility:"visible",opacity:1},i.style);var o,n=i.id?' id="'+i.id+'"':"",r='class="geo-service '+(i["class"]?i["class"]:"")+'"',a="
      ';this._$servicesContainer.append(e.toStaticHTML(a)),o=this._$servicesContainer.children(":last"),i.serviceContainer=o,t.geo._serviceTypes[i.type].create(this,o,i,s),o.data("geoMap",this).geomap(),i.attr&&this._$attrList.append("
    • "+i.attr+"
    • ")}this._$shapesContainers=this._$shapesContainer,this._$attrList.find("a").css({position:"relative",zIndex:1,display:"inline-block",webkitTransform:"translateZ(0)"}) +},_createServiceGraphics:function(){var t=this._$elem.closest(".geo-content-frame");this._$elem.append('
      '),this._$shapesContainer=this._$elem.children(":last"),this._map._$shapesContainers=this._map._$shapesContainers.add(this._$shapesContainer),this._$shapesContainer.geographics(),this._createdGraphics=!0,this._options.shapeStyle=this._$shapesContainer.geographics("option","style")},_refreshDrawing:function(){if(this._$drawContainer.geographics("clear"),this._drawPixels.length>0){var e,i,s,o,n,r=this._options.mode,a=this._drawPixels,h=this._drawCoords;switch(r){case"measureLength":r="drawLineString",i={type:"LineString",coordinates:h},e=t.render[this._tmplLengthId]({length:t.geo.length(i,!0)}),s=t.merge([],a[a.length-1]);break;case"measureArea":r="drawPolygon",i={type:"Polygon",coordinates:[t.merge([],h)]},i.coordinates[0].push(h[0]),e=t.render[this._tmplAreaId]({area:t.geo.area(i,!0)}),s=this._toPixel(t.geo.centroid(i).coordinates),a=[a];break;case"drawPolygon":a=[a]}this._$drawContainer.geographics(r,a),e&&(this._$measureLabel.html(e),o=this._contentBounds.width-(this._$measureLabel.outerWidth(!0)+s[0]),n=this._contentBounds.height-(this._$measureLabel.outerHeight(!0)+s[1]),0>o&&(s[0]+=o),0>n&&(s[1]+=n),this._$measureLabel.css({left:Math.max(s[0],0),top:Math.max(s[1],0)}).show())}},_resetDrawing:function(){this._drawPixels=[],this._drawCoords=[],this._$drawContainer.geographics("clear"),this._$measureLabel.hide()},_refreshAllShapes:function(){this._timeoutRefreshShapes=null;for(var t,e,i=0;this._currentServices.length>i;i++)t=this._currentServices[i],e=t.serviceContainer.data("geoService"),e._createdGraphics&&(e._$shapesContainer.geographics("clear"),e._graphicShapes.length>0&&e._refreshShapes(e._$shapesContainer,e._graphicShapes,e._graphicShapes,e._graphicShapes));this._createdGraphics&&(this._$shapesContainer.geographics("clear"),this._graphicShapes.length>0&&this._refreshShapes(this._$shapesContainer,this._graphicShapes,this._graphicShapes,this._graphicShapes))},_refreshShapes:function(e,s,o,n,r,a){var h,c,l,_,u,d,p,g,f,m=this._map._getBbox(r,a);for(h=0;s.length>h;h++)if(l=s[h].shape||s[h],l=l.geometry||l,_=t.data(l,"geoBbox"),!_||!t.geo._bboxDisjoint(m,_)){switch(u=t.isArray(o)?o[h].style:o,d=t.isArray(n)?n[h].label:n,p=d!==i,g=i,f=t.geo.centroid(l),l.type){case"Point":g=this._map.toPixel(l.coordinates,r,a),this._$shapesContainer.geographics("drawPoint",g,u);break;case"LineString":this._$shapesContainer.geographics("drawLineString",this._map.toPixel(l.coordinates,r,a),u),p&&(g=this._map.toPixel(t.geo.pointAlong(l,.5).coordinates,r,a));break;case"Polygon":this._$shapesContainer.geographics("drawPolygon",this._map.toPixel(l.coordinates,r,a),u),p&&f&&(g=this._map.toPixel(f.coordinates,r,a));break;case"MultiPoint":for(c=0;l.coordinates.length>c;c++)this._$shapesContainer.geographics("drawPoint",this._map.toPixel(l.coordinates[c],r,a),u);p&&f&&(g=this._map.toPixel(f.coordinates,r,a));break;case"MultiLineString":for(c=0;l.coordinates.length>c;c++)this._$shapesContainer.geographics("drawLineString",this._map.toPixel(l.coordinates[c],r,a),u);p&&f&&(g=this._map.toPixel(f.coordinates,r,a));break;case"MultiPolygon":for(c=0;l.coordinates.length>c;c++)this._$shapesContainer.geographics("drawPolygon",this._map.toPixel(l.coordinates[c],r,a),u);p&&f&&(g=this._map.toPixel(f.coordinates,r,a));break;case"GeometryCollection":this._refreshShapes(e,l.geometries,u,d,r,a)}p&&g&&this._$shapesContainer.geographics("drawLabel",g,d)}},_findMapSize:function(){for(var t={width:0,height:0},e=this._$elem;e.size()&&!(t.width>0&&t.height>0);)t={width:e.width(),height:e.height()},(0>=t.width||0>=t.height)&&(t={width:parseInt(e.css("width"),10),height:parseInt(e.css("height"),10)}),e=e.parent();return t},_forcePosition:function(t){var e=t.css("position");"relative"!==e&&"absolute"!==e&&"fixed"!==e&&t.css("position","relative")},_getPixelSize:function(e){var i=this._options.tilingScheme;if(null!==i){if(0===e)return i.pixelSizes?i.pixelSizes[0]:i.basePixelSize;e=Math.round(e),e=Math.max(e,0);var s=i.pixelSizes?i.pixelSizes.length:i.levels;return e=Math.min(e,s-1),i.pixelSizes?i.pixelSizes[e]:i.basePixelSize/Math.pow(2,e)}var o=t.geo.scaleBy(this._getBboxMax(),1/Math.pow(this._fullZoomFactor,e),!0);return Math.max(t.geo.width(o,!0)/this._contentBounds.width,t.geo.height(o,!0)/this._contentBounds.height)},_getZoomCenterAndSize:function(t,e,i){var s=i?this._fullZoomFactor:this._partialZoomFactor,o=Math.pow(s,-e),n=this._pixelSizeInteractive*o,r=this._getZoom(this._centerInteractive,n);i&&this._options.tilingScheme?n=this._getPixelSize(Math.min(Math.max(r,this._options.zoomMin),this._options.zoomMax)):0>e&&this._options.zoomMin>r?n=this._pixelSizeInteractive:e>0&&r>this._options.zoomMax&&(n=this._pixelSizeInteractive);var a=n/this._pixelSizeInteractive,h=this._toMap(t,this._centerInteractive,this._pixelSizeInteractive),c=[(this._centerInteractive[0]-h[0])*a,(this._centerInteractive[1]-h[1])*a],l=[h[0]+c[0],h[1]+c[1]];return{pixelSize:n,center:l}},_panFinalize:function(){this._panning&&(this._velocity=[0,0],this._$eventTarget.css("cursor",this._options.cursors[this._options.mode]),this._inOp=!1,this._anchor=this._current,this._mouseDown=this._toolPan=this._panning=!1)},_panMove:function(){if(this._options.pannable){var t=this._current[0]-this._lastDrag[0],e=this._current[1]-this._lastDrag[1];(this._toolPan||t>3||-3>t||e>3||-3>e)&&(this._toolPan||(this._toolPan=!0,this._$eventTarget.css("cursor",this._options.cursors.pan)),this._mouseDown&&(this._velocity=[t,e]),(0!==t||0!==e)&&(this._panning=!0,this._lastDrag=this._current,this._centerInteractive[0]-=t*this._pixelSizeInteractive,this._centerInteractive[1]+=("image"===this._options.axisLayout?-1:1)*e*this._pixelSizeInteractive,this._setInteractiveCenterAndSize(this._centerInteractive,this._pixelSizeInteractive),this._interactiveTransform()))}},_clearInteractiveTimeout:function(){return this._timeoutRefreshShapes&&(clearTimeout(this._timeoutRefreshShapes),this._timeoutRefreshShapes=null),this._timeoutInteractive?(clearTimeout(this._timeoutInteractive),this._timeoutInteractive=null,!0):(this._centerInteractive[0]=this._center[0],this._centerInteractive[1]=this._center[1],this._pixelSizeInteractive=this._pixelSize,!1)},_interactiveTransform:function(){var e,i=this._pixelSize,s=i/this._pixelSizeInteractive;if(i>0){s=Math.round(1e3*s)/1e3;var o=this._toMap([0,0]),n=this._toPixel(o,this._centerInteractive,this._pixelSizeInteractive);this._$shapesContainers.geographics("interactiveTransform",n,s)}for(var r=0;this._currentServices.length>r;r++)e=this._currentServices[r],t.geo._serviceTypes[e.type].interactiveTransform(this,e,this._centerInteractive,this._pixelSizeInteractive);this._drawCoords.length>0&&(this._drawPixels=this._toPixel(this._drawCoords,this._centerInteractive,this._pixelSizeInteractive),this._refreshDrawing())},_interactiveTimeout:function(){this._isMultiTouch?this._timeoutInteractive=setTimeout(t.proxy(this._interactiveTimeout,this),128):this._created&&this._timeoutInteractive&&(this._setCenterAndSize(this._centerInteractive,this._pixelSizeInteractive,this._triggerInteractive,!0),this._timeoutInteractive=null,this._triggerInteractive=!1,this._timeoutRefreshShapes=setTimeout(t.proxy(this._refreshAllShapes,this),128))},_setInteractiveTimeout:function(e){this._timeoutInteractive=setTimeout(t.proxy(this._interactiveTimeout,this),128),this._triggerInteractive|=e},_refresh:function(e,i){for(var s,o=0;this._currentServices.length>o;o++)s=this._currentServices[o],i&&s.serviceContainer[0]!==i[0]||t.geo._serviceTypes[s.type].refresh(this,s,e)},_setInteractiveCenterAndSize:function(e,i){this._centerInteractive[0]=e[0],this._centerInteractive[1]=e[1],this._pixelSizeInteractive=i,this._userGeodetic?(this._options.bbox=t.geo.proj.toGeodetic(this._getBbox(e,i)),this._options.center=t.geo.proj.toGeodetic(e)):(this._options.bbox=this._getBbox(e,i),this._options.center[0]=e[0],this._options.center[1]=e[1]),this._options.pixelSize=i,this._options.zoom=this._getZoom(e,i)},_setCenterAndSize:function(i,s,o,n){if(t.isArray(i)&&2===i.length&&"number"==typeof i[0]&&"number"==typeof i[1]){var r=this._getZoom(i,s);this._options.tilingScheme?this._pixelSizeInteractive=s=this._getPixelSize(Math.min(Math.max(r,this._options.zoomMin),this._options.zoomMax)):this._options.zoomMin>r?this._pixelSizeInteractive=s=this._getPixelSize(this._options.zoomMin):r>this._options.zoomMax&&(this._pixelSizeInteractive=s=this._getPixelSize(this._options.zoomMax)),this._center[0]=i[0],this._center[1]=i[1],this._options.pixelSize=this._pixelSize=s,this._userGeodetic?(this._options.bbox=t.geo.proj.toGeodetic(this._getBbox()),this._options.center=t.geo.proj.toGeodetic(this._center)):(this._options.bbox=this._getBbox(),this._options.center=t.merge([],i)),this._options.zoom=r,o&&this._trigger("bboxchange",e.event,{bbox:t.merge([],this._options.bbox)}),n&&(this._refresh(),this._refreshAllShapes(),this._refreshDrawing())}},_requestQueued:function(){0===this._loadCount&&this._trigger("loadstart",e.event),this._loadCount++},_requestComplete:function(){this._loadCount--,0>=this._loadCount&&(this._loadCount=0,this._trigger("loadend",e.event))},_toMap:function(e,i,s){i=i||this._center,s=s||this._pixelSize;var o,n,r,a,h=t.isArray(e[0]),c=h&&t.isArray(e[0][0]),l=c&&t.isArray(e[0][0][0]),_=this._contentBounds.width,u=this._contentBounds.height,d=_/2*s,p=u/2*s,g=[i[0]-d,i[1]-p,i[0]+d,i[1]+p],f=t.geo.width(g,!0)/_,m=t.geo.height(g,!0)/u,v="image"===this._options.axisLayout,x=[];for(l||(c||(h||(e=[e]),e=[e]),e=[e]),n=0;e.length>n;n++)for(x[n]=[],r=0;e[n].length>r;r++)for(x[n][r]=[],a=0;e[n][r].length>a;a++)o=e[n][r][a][1]*m,x[n][r][a]=[g[0]+e[n][r][a][0]*f,v?g[1]+o:g[3]-o];return l?x:c?x[0]:h?x[0][0]:x[0][0][0]},_toPixel:function(e,i,s){i=i||this._center,s=s||this._pixelSize;var o,n,r,a=t.isArray(e[0]),h=a&&t.isArray(e[0][0]),c=h&&t.isArray(e[0][0][0]),l=this._contentBounds.width,_=this._contentBounds.height,u=l/2*s,d=_/2*s,p=[i[0]-u,i[1]-d,i[0]+u,i[1]+d],g=t.geo.width(p,!0),f=t.geo.height(p,!0),m="image"===this._options.axisLayout,v=l/g,x=_/f,y=[];for(c||(h||(a||(e=[e]),e=[e]),e=[e]),o=0;e.length>o;o++)for(y[o]=[],n=0;e[o].length>n;n++)for(y[o][n]=[],r=0;e[o][n].length>r;r++)y[o][n][r]=[Math.round((e[o][n][r][0]-p[0])*v),Math.round((m?e[o][n][r][1]-p[1]:p[3]-e[o][n][r][1])*x)];return c?y:h?y[0]:a?y[0][0]:y[0][0][0]},_document_keydown:function(e){var i=this._drawCoords.length;i>0&&27===e.which&&(2>=i?(this._resetDrawing(),this._inOp=!1):(this._drawCoords[i-2]=t.merge([],this._drawCoords[i-1]),this._drawPixels[i-2]=t.merge([],this._drawPixels[i-1]),this._drawCoords.length--,this._drawPixels.length--,this._refreshDrawing()))},_eventTarget_dblclick_zoom:function(t){var e=this._clearInteractiveTimeout();if(this._trigger("dblclick",t,{type:"Point",coordinates:this._toMap(this._current,this._centerInteractive,this._pixelSizeInteractive)}),!t.isDefaultPrevented()){var i=this._getZoomCenterAndSize(this._current,1,!0);this._setInteractiveCenterAndSize(i.center,i.pixelSize),this._interactiveTransform(),e=!0}e&&this._setInteractiveTimeout(!0)},_eventTarget_dblclick:function(i){if("static"!==this._options.mode){switch(this._drawTimeout&&(e.clearTimeout(this._drawTimeout),this._drawTimeout=null),this._options.mode){case"drawLineString":case"measureLength":this._drawCoords.length>1&&(this._drawCoords[0][0]!==this._drawCoords[1][0]||this._drawCoords[0][1]!==this._drawCoords[1][1])?(this._drawCoords.length--,this._trigger("shape",i,{type:"LineString",coordinates:this._userGeodetic?t.geo.proj.toGeodetic(this._drawCoords):this._drawCoords})):this._eventTarget_dblclick_zoom(i),this._resetDrawing();break;case"drawPolygon":case"measureArea":if(this._drawCoords.length>1&&(this._drawCoords[0][0]!==this._drawCoords[1][0]||this._drawCoords[0][1]!==this._drawCoords[1][1])){var s=this._drawCoords.length-1;s>2&&(this._drawCoords[s]=t.merge([],this._drawCoords[0]),this._trigger("shape",i,{type:"Polygon",coordinates:[this._userGeodetic?t.geo.proj.toGeodetic(this._drawCoords):this._drawCoords]}))}else this._eventTarget_dblclick_zoom(i);this._resetDrawing();break;default:this._eventTarget_dblclick_zoom(i)}this._inOp=!1}},_eventTarget_touchstart:function(e){if(document.elementFromPoint!==i){var s=document.elementFromPoint(e.pageX,e.pageY);if(s&&"A"===s.nodeName)return}var o=this._options.mode,n=this._options.shift,r="dragBox"===o?"dragBox":"zoom";if("static"!==o&&(this._supportTouch||1===e.which)){var a=this._clearInteractiveTimeout(),h=t(e.currentTarget).offset(),c=e.originalEvent.changedTouches;if(this._supportTouch&&c?(this._multiTouchAnchor=t.merge([],c),this._isMultiTouch=this._multiTouchAnchor.length>1,this._isMultiTouch?(this._multiTouchCurrentBbox=[c[0].pageX-h.left,c[0].pageY-h.top,c[1].pageX-h.left,c[1].pageY-h.top],this._multiTouchAnchorBbox=t.merge([],this._multiTouchCurrentBbox),this._current=t.geo.center(this._multiTouchCurrentBbox,!0)):(this._multiTouchCurrentBbox=[c[0].pageX-h.left,c[0].pageY-h.top,0/0,0/0],this._current=[c[0].pageX-h.left,c[0].pageY-h.top])):this._current=[e.pageX-h.left,e.pageY-h.top],this._softDblClick){var l=t.now();if(750>l-this._downDate){if(this._isTap){var _=this._current[0]-this._anchor[0],u=this._current[1]-this._anchor[1],d=Math.sqrt(_*_+u*u);d>8?this._isTap=!1:this._current=t.merge([],this._anchor)}this._isDbltap=this._isDbltap?!1:this._isTap}else this._isDbltap=!1;this._isTap=!0,this._downDate=l}return this._mouseDown=!0,this._anchor=t.merge([],this._current),!this._inOp&&e.shiftKey&&"off"!==n?(this._shiftDown=!0,this._$eventTarget.css("cursor",this._options.cursors["default"===n?r:n])):this._isMultiTouch||!this._options.pannable&&"dragBox"!==o&&"dragCircle"!==o||(this._inOp=!0,"zoom"!==o&&"dragBox"!==o&&"dragCircle"!==o&&(this._lastDrag=this._current,e.currentTarget.setCapture&&e.currentTarget.setCapture())),e.preventDefault(),a&&this._setInteractiveTimeout(!0),!1}},_dragTarget_touchmove:function(e){if("static"!==this._options.mode){var s=!1;this._mouseDown&&(s=this._clearInteractiveTimeout());var n,r=this._$eventTarget.offset(),a=this._drawCoords.length,h=e.originalEvent.changedTouches,c=0;if(this._supportTouch&&h){if(!this._isMultiTouch&&this._mouseDown&&this._multiTouchAnchor.length>0&&h[0].identifier!==this._multiTouchAnchor[0].identifier)return this._mouseDown=!1,this._isMultiTouch=!0,this._wheelLevel=0,this._multiTouchAnchor.push(h[0]),this._multiTouchCurrentBbox=[this._multiTouchCurrentBbox[0],this._multiTouchCurrentBbox[1],this._multiTouchAnchor[1].pageX-r.left,this._multiTouchAnchor[1].pageY-r.top],this._multiTouchAnchorBbox=t.merge([],this._multiTouchCurrentBbox),this._mouseDown=!0,this._anchor=this._current=t.geo.center(this._multiTouchCurrentBbox,!0),s&&this._setInteractiveTimeout(!0),!1;if(this._isMultiTouch){for(;h.length>c;c++)h[c].identifier===this._multiTouchAnchor[0].identifier?(this._multiTouchCurrentBbox[0]=h[c].pageX-r.left,this._multiTouchCurrentBbox[1]=h[c].pageY-r.top):h[c].identifier===this._multiTouchAnchor[1].identifier&&(this._multiTouchCurrentBbox[2]=h[c].pageX-r.left,this._multiTouchCurrentBbox[3]=h[c].pageY-r.top);var l=t.geo._distancePointPoint([this._multiTouchAnchorBbox[0],this._multiTouchAnchorBbox[1]],[this._multiTouchAnchorBbox[2],this._multiTouchAnchorBbox[3]]),_=t.geo._distancePointPoint([this._multiTouchCurrentBbox[0],this._multiTouchCurrentBbox[1]],[this._multiTouchCurrentBbox[2],this._multiTouchCurrentBbox[3]]);n=t.geo.center(this._multiTouchCurrentBbox,!0);var u=(_-l)/l;u*=u>0?5:10;var d=u-this._wheelLevel;this._wheelLevel=u;var p=this._getZoomCenterAndSize(this._anchor,d,!1);this._setInteractiveCenterAndSize(p.center,p.pixelSize),this._interactiveTransform(),s=!0,n=t.geo.center(this._multiTouchCurrentBbox,!0)}else n=[e.originalEvent.changedTouches[0].pageX-r.left,e.originalEvent.changedTouches[0].pageY-r.top]}else n=[e.pageX-r.left,e.pageY-r.top];if(n[0]===this._lastMove[0]&&n[1]===this._lastMove[1])return e.preventDefault(),this._inOp&&s&&this._setInteractiveTimeout(!0),!1;if(7===o&&(this._isDbltap=this._isTap=!1),this._mouseDown&&(this._current=n,this._moveDate=t.now()),this._isMultiTouch)return e.preventDefault(),this._isDbltap=this._isTap=!1,s&&this._setInteractiveTimeout(!0),!1;var g,f,m,v=this._options.mode,x=this._options.shift,y="dragBox"===v?"dragBox":"zoom";switch(this._shiftDown&&(v="default"===x?y:x),v){case"zoom":case"dragBox":this._mouseDown?(this._$drawContainer.geographics("clear"),this._$drawContainer.geographics("drawBbox",[this._anchor[0],this._anchor[1],n[0],n[1]])):this._trigger("move",e,{type:"Point",coordinates:this.toMap(n)});break;case"dragCircle":this._mouseDown?(g=n[0]-this._anchor[0],f=n[1]-this._anchor[1],m=2*Math.sqrt(g*g+f*f),this._$drawContainer.geographics("clear"),this._$drawContainer.geographics("drawArc",this._anchor,0,360,{width:m,height:m})):this._trigger("move",e,{type:"Point",coordinates:this.toMap(n)});break;case"drawLineString":case"drawPolygon":case"measureLength":case"measureArea":this._mouseDown||this._toolPan?(this._panMove(),s=!0):(a>0&&(this._drawCoords[a-1]=this._toMap(n,this._centerInteractive,this._pixelSizeInteractive),this._drawPixels[a-1]=n,this._refreshDrawing()),this._trigger("move",e,{type:"Point",coordinates:this.toMap(n)}));break;default:this._mouseDown||this._toolPan?(this._panMove(),s=!0):this._trigger("move",e,{type:"Point",coordinates:this.toMap(n)})}return this._lastMove=n,s&&this._setInteractiveTimeout(!0),this._inOp?(e.preventDefault(),!1):i}},_dragTarget_touchstop:function(s){if("static"!==this._options.mode){if(!this._mouseDown){if(7!==o)return;this._eventTarget_touchstart(s)}var n,r,a,h,c,l,_,u=this._clearInteractiveTimeout(),d=this._mouseDown,p=this._toolPan,g=this._$eventTarget.offset(),f=this._options.mode,m=this._options.shift,v="dragBox"===f?"dragBox":"zoom";if(this._shiftDown&&(f="default"===m?v:m),this._supportTouch&&s.originalEvent.changedTouches?(n=[s.originalEvent.changedTouches[0].pageX-g.left,s.originalEvent.changedTouches[0].pageY-g.top],this._multiTouchAnchor=[],this._inOp=!1):n=[s.pageX-g.left,s.pageY-g.top],this._softDblClick&&this._isTap&&(h=n[0]-this._anchor[0],c=n[1]-this._anchor[1],8>=Math.sqrt(h*h+c*c)&&(n=t.merge([],this._anchor))),h=n[0]-this._anchor[0],c=n[1]-this._anchor[1],this._$eventTarget.css("cursor",this._options.cursors[this._options.mode]),this._shiftDown=this._mouseDown=this._toolPan=!1,this._isMultiTouch)return s.preventDefault(),this._isMultiTouch=!1,this._wheelLevel=0,u&&this._setInteractiveTimeout(!0),i;if(document.releaseCapture&&document.releaseCapture(),d){switch(a=t.now(),this._current=n,f){case"zoom":case"dragBox":if(0!==h||0!==c){var x=6*this._pixelSize,y=this._toMap([[Math.min(this._anchor[0],n[0]),Math.max(this._anchor[1],n[1])],[Math.max(this._anchor[0],n[0]),Math.min(this._anchor[1],n[1])]]),b=[y[0][0],y[0][1],y[1][0],y[1][1]];"zoom"===f?(x>b[2]-b[0]&&x>b[3]-b[1]&&(b=t.geo.scaleBy(this._getBbox(t.geo.center(b,!0)),.5,!0)),this._setBbox(b,!0,!0),u=!0):(_=t.geo.polygonize(b,!0),_.bbox=b,this._userGeodetic&&(_.coordinates=t.geo.proj.toGeodetic(_.coordinates),_.bbox=t.geo.proj.toGeodetic(_.bbox)),this._trigger("shape",s,_))}else"dragBox"===f&&(l=this._toMap(n),_={type:"Point",coordinates:[l[0],l[1]],bbox:[l[0],l[1],l[0],l[1]]},this._userGeodetic&&(_.coordinates=t.geo.proj.toGeodetic(_.coordinates),_.bbox=t.geo.proj.toGeodetic(_.bbox)),this._trigger("shape",s,_));this._resetDrawing();break;case"dragCircle":if(0!==h||0!==c){var w,S="image"===this._options.axisLayout,A=Math.sqrt(h*h+c*c),C=180;for(this._drawPixels.length=C+1,r=0;C>r;r++)w=360*r/C*(Math.PI/180),this._drawPixels[r]=[this._anchor[0]+Math.cos(w)*A,this._anchor[1]+Math.sin(w)*A];this._drawPixels[C]=[this._drawPixels[0][0],this._drawPixels[0][1]],l=this._toMap([[this._anchor[0]-A,this._anchor[1]+(S?-A:A)],[this._anchor[0]+A,this._anchor[1]+(S?A:-A)]]),_={type:"Polygon",coordinates:[this._toMap(this._drawPixels)],bbox:[l[0][0],l[0][1],l[1][0],l[1][1]]},this._userGeodetic&&(_.coordinates=t.geo.proj.toGeodetic(_.coordinates),_.bbox=t.geo.proj.toGeodetic(_.bbox)),this._trigger("shape",s,_),this._resetDrawing()}else l=this._toMap(n),_={type:"Point",coordinates:[l[0],l[1]],bbox:[l[0],l[1],l[0],l[1]]},this._userGeodetic&&(_.coordinates=t.geo.proj.toGeodetic(_.coordinates),_.bbox=t.geo.proj.toGeodetic(_.bbox)),this._trigger("shape",s,_);break;case"drawPoint":if(this._drawTimeout&&(e.clearTimeout(this._drawTimeout),this._drawTimeout=null),p)this._panFinalize();else if(a-this._clickDate>100){var T=this;this._drawTimeout=setTimeout(function(){T._drawTimeout&&(T._trigger("shape",s,{type:"Point",coordinates:T.toMap(n)}),T._inOp=!1,T._drawTimeout=null)},250)}break;case"drawLineString":case"drawPolygon":case"measureLength":case"measureArea":p?this._panFinalize():(r=0===this._drawCoords.length?0:this._drawCoords.length-1,this._drawCoords[r]=this._toMap(n),this._drawPixels[r]=n,(2>r||this._drawCoords[r][0]!==this._drawCoords[r-1][0]||this._drawCoords[r][1]!==this._drawCoords[r-1][1])&&(this._drawCoords[r+1]=this._toMap(n,this._centerInteractive,this._pixelSizeInteractive),this._drawPixels[r+1]=n),this._refreshDrawing());break;default:p?this._panFinalize():a-this._clickDate>100&&(this._trigger("click",s,{type:"Point",coordinates:this.toMap(n)}),this._inOp=!1)}if(this._clickDate=a,this._softDblClick&&this._isDbltap)return this._isDbltap=this._isTap=!1,u&&this._setInteractiveTimeout(!0),this._$eventTarget.trigger("dblclick",s),!1}return u&&this._setInteractiveTimeout(!0),this._inOp?(s.preventDefault(),!1):i}},_eventTarget_mousewheel:function(e,i){if("static"!==this._options.mode&&"off"!==this._options.scroll){if(e.preventDefault(),this._mouseDown)return!1;if(0!==i){var s=Math.abs(i)>=1;this._clearInteractiveTimeout(),i=i>0?Math.ceil(i):Math.floor(i);var o=t(e.currentTarget).offset();this._anchor=[e.pageX-o.left,e.pageY-o.top];var n=this._getZoomCenterAndSize(this._anchor,i,null!==this._options.tilingScheme?s:!1);this._setInteractiveCenterAndSize(n.center,n.pixelSize),this._interactiveTransform(),this._setInteractiveTimeout(!0)}return!1}}})}(jQuery,window),function(t,e){t.geo._serviceTypes.tiled=function(){var i=RegExp("<.*>|{{.*}}");return{_serviceId:0,_tmplGeoSrcId:"",create:function(i,s,o){this._serviceId=i._serviceIdSeed++,this._tmplGeoSrcId="geoSrc"+this._serviceId;var n=t.data(o,"geoServiceState");if(!n){n={loadCount:0,reloadTiles:!1};var r='
      ';s.append(e.toStaticHTML(r)),n.serviceContainer=s.children(":last"),t.data(o,"geoServiceState",n)}return n.serviceContainer},destroy:function(e,i,s){var o=t.data(s,"geoServiceState");o.serviceContainer.remove(),t.removeData(s,"geoServiceState")},interactiveTransform:function(e,i,s,o){var n=t.data(i,"geoServiceState"),r=e.options.tilingScheme;n&&(this._cancelUnloaded(e,i),n.serviceContainer.children().each(function(){var i=t(this),n=i.data("pixelSize"),a=n/o;if(n>0){a=Math.round(1e3*a)/1e3;var h=i.data("scaleOrigin"),c=e._toPixel(h,s,o);i.css({left:Math.round(c[0])+"px",top:Math.round(c[1])+"px",width:r.tileWidth*a,height:r.tileHeight*a})}}))},refresh:function(s,o,n){var r=t.data(o,"geoServiceState");if(this._cancelUnloaded(s,o),r&&n&&(r.reloadTiles=!0),r&&o&&"visible"===o.style.visibility&&!r.serviceContainer.is(":hidden")){var a,h,c=s._getBbox(),l=s._pixelSize,_=this,u=r.serviceContainer,d="image"===s.options.axisLayout,p=d?1:-1,g=s.options.tilingScheme,f=g.tileWidth,m=g.tileHeight,v=Math.floor((c[0]-g.origin[0])/(l*f)),x=Math.max(Math.floor((d?c[1]-g.origin[1]:g.origin[1]-c[3])/(l*m)),0),y=Math.ceil((c[2]-g.origin[0])/(l*f)),b=Math.ceil((d?c[3]-g.origin[1]:g.origin[1]-c[1])/(l*m)),w=s._getBboxMax(),S=s._getPixelSize(0),A=S/l,C=Math.floor((w[0]-g.origin[0])/(S*f))*A,T=Math.floor((g.origin[1]+p*w[3])/(S*m))*A,M=g.origin[0]+C*f*l,P=g.origin[1]+p*T*m*l,$=Math.round((M-c[0])/l),z=Math.round((d?P-c[1]:c[3]-P)/l),I=u.children().show(),k=I.filter("[data-pixel-size='"+l+"']").appendTo(u),L=o.style.opacity,G=function(e){_._loadImage(t.data(this,"img"),e,l,s,r,L)},O=function(){t.data(this,"img").remove(),r.loadCount--,s._requestComplete()};for(r.reloadTiles&&I.find("img").attr("data-dirty","true"),k.size()?(k.css({left:$%f+"px",top:z%m+"px"}).data("scaleOrigin",s._toMap([$%f,z%m])),k.children().each(function(){var e=t(this),i=e.attr("data-tile").split(",");e.css({left:Math.round(100*(parseInt(i[0],10)-C)+100*(($-$%f)/f))+"%",top:Math.round(100*(parseInt(i[1],10)-T)+100*((z-z%m)/m))+"%"}),1>L&&e.fadeTo(0,L)})):(u.append(e.toStaticHTML("
      ")),k=u.children(":last").data("scaleOrigin",s._toMap([$%f,z%m]))),a=v;y>a;a++)for(h=x;b>h;h++){var B=""+a+","+h,D=k.children("[data-tile='"+B+"']").removeAttr("data-dirty");if(0===D.size()||r.reloadTiles){var j,E=[g.origin[0]+a*f*l,g.origin[1]+p*h*m*l],F=[g.origin[0]+((a+1)*f-1)*l,g.origin[1]+p*((h+1)*m-1)*l],R=[E[0],E[1],F[0],F[1]],V=o.hasOwnProperty("src")?"src":"getUrl",N={bbox:R,width:f,height:m,zoom:s._getZoom(),tile:{row:h,column:a},index:Math.abs(h+a)},H=t.isFunction(o[V]);if(H?j=o[V](N):i.test(o[V])?(t.templates(this._tmplGeoSrcId,o[V]),j=t.render[this._tmplGeoSrcId](N)):j=o[V],r.loadCount++,s._requestQueued(),r.reloadTiles&&D.size()>0)D.attr("src",j);else{var W="",k.append(e.toStaticHTML(W)),D=k.children(":last")}"string"==typeof j?_._loadImage(D,j,l,s,r,L):j?(t.data(j,"img",D),j.done(G).fail(O)):D.remove()}}I.find("[data-dirty]").remove(),r.reloadTiles=!1}},resize:function(){},opacity:function(e,i){var s=t.data(i,"geoServiceState");s.serviceContainer.find("img").stop(!0).fadeTo("fast",i.style.opacity)},toggle:function(e,i){var s=t.data(i,"geoServiceState");s.serviceContainer.css("display","visible"===i.style.visibility?"block":"none")},_cancelUnloaded:function(e,i){var s=t.data(i,"geoServiceState");if(s&&s.loadCount>0)for(s.serviceContainer.find("img:hidden").remove();s.loadCount>0;)s.loadCount--,e._requestComplete()},_loadImage:function(e,i,s,o,n,r){var a=n.serviceContainer;e.load(function(e){1>r?t(e.target).fadeTo(0,r):t(e.target).show(),n.loadCount--,o._requestComplete(),0>=n.loadCount&&(a.children(":not([data-pixel-size='"+s+"'])").remove(),n.loadCount=0)}).error(function(e){t(e.target).remove(),n.loadCount--,o._requestComplete(),0>=n.loadCount&&(a.children(":not([data-pixel-size='"+s+"'])").remove(),n.loadCount=0)}).attr("src",i)}}}()}(jQuery,window),function(t,e){t.geo._serviceTypes.shingled=function(){var i=RegExp("<.*>|{{.*}}");return{_serviceId:0,_tmplGeoSrcId:"",create:function(i,s,o){this._serviceId=i._serviceIdSeed++,this._tmplGeoSrcId="geoSrc"+this._serviceId;var n=t.data(o,"geoServiceState");if(!n){n={loadCount:0};var r='
      ';s.append(e.toStaticHTML(r)),n.serviceContainer=s.children(":last"),t.data(o,"geoServiceState",n)}return n.serviceContainer},destroy:function(e,i,s){var o=t.data(s,"geoServiceState");o.serviceContainer.remove(),t.removeData(s,"geoServiceState")},interactiveTransform:function(e,i,s,o){var n=t.data(i,"geoServiceState"),r=e._getContentBounds(),a=r.width,h=r.height;n&&(this._cancelUnloaded(e,i),n.serviceContainer.children().each(function(){var i=t(this),n=i.data("pixelSize"),r=n/o;if(n>0){r=Math.round(1e3*r)/1e3;var c=i.data("origin"),l=e._toPixel(c,s,o);i.css({left:Math.round(l[0]),top:Math.round(l[1]),width:a*r,height:h*r})}}))},refresh:function(s,o){var n=t.data(o,"geoServiceState");if(this._cancelUnloaded(s,o),n&&o&&"visible"===o.style.visibility&&!n.serviceContainer.is(":hidden")){var r,a=s._getBbox(),h=s._pixelSize,c=this,l=n.serviceContainer,_=s._getContentBounds(),u=_.width,d=_.height,p=l.children('[data-pixel-size="'+h+'"]'),g=o.style.opacity;1>g&&l.find("img").attr("data-keep-alive","0"),p.size()||(l.append(e.toStaticHTML('
      ')),p=l.children(":last"));var f,m=o.hasOwnProperty("src")?"src":"getUrl",v={bbox:a,width:u,height:d,zoom:s._getZoom(),tile:null,index:0},x=t.isFunction(o[m]),y=p.position();y.left=-y.left,y.top=-y.top,x?f=o[m](v):i.test(o[m])?(t.templates(this._tmplGeoSrcId,o[m]),f=t.render[this._tmplGeoSrcId](v)):f=o[m],n.loadCount++,s._requestQueued(),p.append(e.toStaticHTML('')),r=p.children(":last").data("center",s._center),"string"==typeof f?c._loadImage(r,f,h,s,n,g):f.done(function(t){c._loadImage(r,t,h,s,n,g)}).fail(function(){r.remove(),n.loadCount--,s._requestComplete()})}},resize:function(e,i){var s=t.data(i,"geoServiceState");if(s&&i&&"visible"===i.style.visibility){this._cancelUnloaded(e,i);var o=s.serviceContainer,n=e._getContentBounds(),r=n.width,a=n.height,h=o.children();h.attr("data-pixel-size","0"),h.each(function(){var e=t(this),i=e.position();e.css({left:i.left+(r-e.width())/2,top:i.top+(a-e.height())/2})})}},opacity:function(e,i){var s=t.data(i,"geoServiceState");s.serviceContainer.find("img").stop(!0).fadeTo("fast",i.style.opacity)},toggle:function(e,i){var s=t.data(i,"geoServiceState");s.serviceContainer.css("display","visible"===i.style.visibility?"block":"none")},_cancelUnloaded:function(e,i){var s=t.data(i,"geoServiceState");if(s&&s.loadCount>0)for(s.serviceContainer.find("img:hidden").remove();s.loadCount>0;)s.loadCount--,e._requestComplete()},_loadImage:function(e,i,s,o,n,r){var a=n.serviceContainer;e.load(function(e){t.contains(document.body,e.target.jquery?e.target[0]:e.target)&&(1>r?t(e.target).fadeTo(0,r):t(e.target).show(),n.loadCount--,o._requestComplete(),0>=n.loadCount&&(a.children(':not([data-pixel-size="'+s+'"])').remove(),a.find("img[data-keep-alive]").remove(),n.loadCount=0))}).error(function(e){t.contains(document.body,e.target.jquery?e.target[0]:e.target)&&(t(e.target).remove(),n.loadCount--,o._requestComplete(),0>=n.loadCount&&(a.children(":not([data-pixel-size='"+s+"'])").remove(),n.loadCount=0))}).attr("src",i)}}}()}(jQuery,window); \ No newline at end of file diff --git a/docs/examples/test.html b/docs/examples/test.html index 1238bc1..5c0fcf6 100644 --- a/docs/examples/test.html +++ b/docs/examples/test.html @@ -18,24 +18,10 @@ left: 0; } - #info { - background: #fafafa; - border-radius: .5em; - box-shadow: .2em .2em .4em #222; - font-size: .8em; - max-width: 66%; - padding: .25em .5em; - position: absolute; - left: 1em; - top: 1em; - } - -
      -
      Browse to google.com and then click back.
      @@ -52,80 +38,13 @@