// Copyright (c) 2008-2009 Blom asa. 
// Copyright (c) 2005-2008 MetaCarta, Inc. 
var Urbex={singleFile:true};(function(){var a=(typeof Urbex=="object"&&Urbex.singleFile);window.Urbex={_scriptName:(!a)?"lib/Urbex.js":"Urbex.js",_getScriptLocation:function(){return"http://"+Urbex.Map.SERVER+"/api/"+Urbex.Map.VERSION+"/"}}})();Urbex.String={startsWith:function(b,a){return(b.indexOf(a)==0)},contains:function(b,a){return(b.indexOf(a)!=-1)},trim:function(a){return a.replace(/^\s*(.*?)\s*$/,"$1")},camelize:function(e){var c=e.split("-");var a=c[0];for(var b=1;b<c.length;b++){var d=c[b];a+=d.charAt(0).toUpperCase()+d.substring(1)}return a},format:function(e,c,a){if(!c){c=window}var k=e.split("${");var g,f,d;for(var b=1;b<k.length;b++){g=k[b];f=g.indexOf("}");if(f>0){d=c[g.substring(0,f)];if(typeof d=="function"){d=a?d.apply(null,a):d()}k[b]=d+g.substring(++f)}else{k[b]="${"+g}}return k.join("")}};if(!String.prototype.startsWith){String.prototype.startsWith=function(a){Urbex.Console.warn(Urbex.i18n("methodDeprecated",{newMethod:"Urbex.String.startsWith"}));return Urbex.String.startsWith(this,a)
}}if(!String.prototype.contains){String.prototype.contains=function(a){Urbex.Console.warn(Urbex.i18n("methodDeprecated",{newMethod:"Urbex.String.contains"}));return Urbex.String.contains(this,a)}}if(!String.prototype.trim){String.prototype.trim=function(){Urbex.Console.warn(Urbex.i18n("methodDeprecated",{newMethod:"Urbex.String.trim"}));return Urbex.String.trim(this)}}if(!String.prototype.camelize){String.prototype.camelize=function(){Urbex.Console.warn(Urbex.i18n("methodDeprecated",{newMethod:"Urbex.String.camelize"}));return Urbex.String.camelize(this)}}Urbex.Number={decimalSeparator:".",thousandsSeparator:",",limitSigDigs:function(a,c){var b=0;if(c>0){b=parseFloat(a.toPrecision(c))}return b},format:function(c,a,g,l){a=(typeof a!="undefined")?a:0;g=(typeof g!="undefined")?g:Urbex.Number.thousandsSeparator;l=(typeof l!="undefined")?l:Urbex.Number.decimalSeparator;if(a!=null){c=parseFloat(c.toFixed(a))}var b=c.toString().split(".");if(b.length==1&&a==null){a=0}var d=b[0];if(g){var e=/(-?[0-9]+)([0-9]{3})/;
while(e.test(d)){d=d.replace(e,"$1"+g+"$2")}}var f;if(a==0){f=d}else{var k=b.length>1?b[1]:"0";if(a!=null){k=k+new Array(a-k.length+1).join("0")}f=d+l+k}return f}};if(!Number.prototype.limitSigDigs){Number.prototype.limitSigDigs=function(a){Urbex.Console.warn(Urbex.i18n("methodDeprecated",{newMethod:"Urbex.String.limitSigDigs"}));return Urbex.Number.limitSigDigs(this,a)}}Urbex.Function={bind:function(c,b){var a=Array.prototype.slice.apply(arguments,[2]);return function(){var d=a.concat(Array.prototype.slice.apply(arguments,[0]));return c.apply(b,d)}},bindAsEventListener:function(b,a){return function(c){return b.call(a,c||window.event)}}};if(!Function.prototype.bind){Function.prototype.bind=function(){Urbex.Console.warn(Urbex.i18n("methodDeprecated",{newMethod:"Urbex.String.bind"}));Array.prototype.unshift.apply(arguments,[this]);return Urbex.Function.bind.apply(null,arguments)}}if(!Function.prototype.bindAsEventListener){Function.prototype.bindAsEventListener=function(a){Urbex.Console.warn(Urbex.i18n("methodDeprecated",{newMethod:"Urbex.String.bindAsEventListener"}));
return Urbex.Function.bindAsEventListener(this,a)}}Urbex.Array={filter:function(g,f,b){var d=[];if(Array.prototype.filter){d=g.filter(f,b)}else{var a=g.length;if(typeof f!="function"){throw new TypeError()}for(var c=0;c<a;c++){if(c in g){var e=g[c];if(f.call(b,e,c,g)){d.push(e)}}}}return d}};Urbex.Util={};Urbex.Util.getElement=function(){var c=[];for(var b=0;b<arguments.length;b++){var a=arguments[b];if(typeof a=="string"){a=document.getElementById(a)}if(arguments.length==1){return a}c.push(a)}return c};if($==null){var $=Urbex.Util.getElement}Urbex.Util.extend=function(a,e){if(a&&e){for(var d in e){var c=e[d];if(c!==undefined){a[d]=c}}var b=typeof window.Event=="function"&&e instanceof window.Event;if(!b&&e.hasOwnProperty&&e.hasOwnProperty("toString")){a.toString=e.toString}}return a};Urbex.Util.removeItem=function(c,b){for(var a=c.length-1;a>=0;a--){if(c[a]==b){c.splice(a,1)}}return c};Urbex.Util.clearArray=function(a){Urbex.Console.warn(Urbex.i18n("methodDeprecated",{newMethod:"array = []"}));
a.length=0};Urbex.Util.indexOf=function(c,b){for(var a=0;a<c.length;a++){if(c[a]==b){return a}}return -1};Urbex.Util.modifyDOMElement=function(e,k,d,f,a,c,g,b){if(k){e.id=k}if(d){e.style.left=d.x+"px";e.style.top=d.y+"px"}if(f){e.style.width=f.w+"px";e.style.height=f.h+"px"}if(a){e.style.position=a}if(c){e.style.border=c}if(g){e.style.overflow=g}if(parseFloat(b)>=0&&parseFloat(b)<1){e.style.filter="alpha(opacity="+(b*100)+")";e.style.opacity=b}else{if(parseFloat(b)==1){e.style.filter="";e.style.opacity=""}}};Urbex.Util.modifyElement=function(d,a,k,g,l,e,c,b,f){if(a){d.id=a}if(k){d.style.left=k.x+"px";d.style.top=k.y+"px"}if(g){d.style.width=g.w+"px";d.style.height=g.h+"px"}if(l){d.childNodes[0].src=l}if(e){d.style.position=e}if(c){d.style.border=c}if(b){d.style.overflow=b}if(parseFloat(f)>=0&&parseFloat(f)<1){d.style.filter="alpha(opacity="+(f*100)+")";d.style.opacity=f}else{if(parseFloat(f)==1){d.style.filter="";d.style.opacity=""}}};Urbex.Util.createDiv=function(a,l,k,f,e,c,b,g){var d=document.createElement("div");
if(f){d.style.backgroundImage="url("+f+")"}if(!a){a=Urbex.Util.createUniqueID("UrbexDiv")}if(!e){e="absolute"}Urbex.Util.modifyDOMElement(d,a,l,k,e,c,b,g);return d};Urbex.Util.createImage=function(a,k,g,e,d,c,f,l){var b=document.createElement("img");if(!a){a=Urbex.Util.createUniqueID("UrbexDiv")}if(!d){d="relative"}Urbex.Util.modifyDOMElement(b,a,k,g,d,c,null,f);if(l){b.style.display="none";Urbex.Event.observe(b,"load",Urbex.Function.bind(Urbex.Util.onImageLoad,b));Urbex.Event.observe(b,"error",Urbex.Function.bind(Urbex.Util.onImageLoadError,b))}b.style.alt=a;b.galleryImg="no";if(e){b.src=e}return b};Urbex.Util.setOpacity=function(b,a){Urbex.Util.modifyDOMElement(b,null,null,null,null,null,null,a)};Urbex.Util.onImageLoad=function(){if(!this.viewRequestID||(this.map&&this.viewRequestID==this.map.viewRequestID)){this.style.backgroundColor=null;this.style.display=""}};Urbex.Util.onImageLoadErrorColor="transparent";Urbex.IMAGE_RELOAD_ATTEMPTS=3;Urbex.Util.onImageLoadError=function(){this._attempts=(this._attempts)?(this._attempts+1):1;
if(this._attempts<=Urbex.IMAGE_RELOAD_ATTEMPTS){this.src=this.src}else{this.style.backgroundColor=Urbex.Util.onImageLoadErrorColor}this.style.display=""};Urbex.Util.alphaHack=function(){var d=navigator.appVersion.split("MSIE");var a=parseFloat(d[1]);var b=false;try{b=!!(document.body.filters)}catch(c){}return(b&&(a>=5.5)&&(a<7))};Urbex.Util.modifyAlphaImageDiv=function(a,b,m,l,g,f,c,d,k){Urbex.Util.modifyDOMElement(a,b,m,l,null,null,null,k);var e=a.childNodes[0];if(g){e.src=g}Urbex.Util.modifyDOMElement(e,a.id+"_innerImage",null,l,"relative",c);if(Urbex.Util.alphaHack()){a.style.display="inline-block";if(d==null){d="scale"}a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+e.src+"', sizingMethod='"+d+"')";if(parseFloat(a.style.opacity)>=0&&parseFloat(a.style.opacity)<1){a.style.filter+=" alpha(opacity="+a.style.opacity*100+")"}e.style.filter="alpha(opacity=0)"}};Urbex.Util.createAlphaImageDiv=function(b,m,l,g,f,c,d,k,n){var a=Urbex.Util.createDiv();var e=Urbex.Util.createImage(null,null,null,null,null,null,null,false);
a.appendChild(e);if(n){e.style.display="none";Urbex.Event.observe(e,"load",Urbex.Function.bind(Urbex.Util.onImageLoad,a));Urbex.Event.observe(e,"error",Urbex.Function.bind(Urbex.Util.onImageLoadError,a))}Urbex.Util.modifyAlphaImageDiv(a,b,m,l,g,f,c,d,k);return a};Urbex.Util.upperCaseObject=function(b){var a={};for(var c in b){a[c.toUpperCase()]=b[c]}return a};Urbex.Util.applyDefaults=function(d,c){var b=typeof window.Event=="function"&&c instanceof window.Event;for(var a in c){if(d[a]===undefined||(!b&&c.hasOwnProperty&&c.hasOwnProperty(a)&&!d.hasOwnProperty(a))){d[a]=c[a]}}if(!b&&c.hasOwnProperty&&c.hasOwnProperty("toString")&&!d.hasOwnProperty("toString")){d.toString=c.toString}return d};Urbex.Util.getParameterString=function(g){var f=[];for(var b in g){var d=g[b];if((d!=null)&&(typeof d!="function")){var a;if(typeof d=="object"&&d.constructor==Array){var e=[];for(var c=0;c<d.length;c++){e.push(encodeURIComponent(d[c]))}a=e.join(",")}else{a=encodeURIComponent(d)}f.push(encodeURIComponent(b)+"="+a)
}}return f.join("&")};Urbex.ImgPath="";Urbex.Util.getImagesLocation=function(){return Urbex.ImgPath||(Urbex._getScriptLocation()+"img/")};Urbex.Util.Try=function(){var c=null;for(var b=0;b<arguments.length;b++){var a=arguments[b];try{c=a();break}catch(d){}}return c};Urbex.Util.getNodes=function(c,b){var a=Urbex.Util.Try(function(){return Urbex.Util._getNodes(c.documentElement.childNodes,b)},function(){return Urbex.Util._getNodes(c.childNodes,b)});return a};Urbex.Util._getNodes=function(b,d){var a=[];for(var c=0;c<b.length;c++){if(b[c].nodeName==d){a.push(b[c])}}return a};Urbex.Util.getTagText=function(c,d,b){var a=Urbex.Util.getNodes(c,d);if(a&&(a.length>0)){if(!b){b=0}if(a[b].childNodes.length>1){return a.childNodes[1].nodeValue}else{if(a[b].childNodes.length==1){return a[b].firstChild.nodeValue}}}else{return""}};Urbex.Util.getXmlNodeValue=function(a){var b=null;Urbex.Util.Try(function(){b=a.text;if(!b){b=a.textContent}if(!b){b=a.firstChild.nodeValue}},function(){b=a.textContent});return b
};Urbex.Util.mouseLeft=function(a,c){var b=(a.relatedTarget)?a.relatedTarget:a.toElement;while(b!=c&&b!=null){b=b.parentNode}return(b!=c)};Urbex.Util.rad=function(a){return a*Math.PI/180};Urbex.Util.distVincenty=function(g,c){var O=6378137,N=6356752.3142,I=1/298.257223563;var p=Urbex.Util.rad(c.x-g.x);var M=Math.atan((1-I)*Math.tan(Urbex.Util.rad(g.y)));var K=Math.atan((1-I)*Math.tan(Urbex.Util.rad(c.y)));var o=Math.sin(M),l=Math.cos(M);var n=Math.sin(K),k=Math.cos(K);var u=p,q=2*Math.PI;var t=20;while(Math.abs(u-q)>1e-12&&--t>0){var E=Math.sin(u),e=Math.cos(u);var P=Math.sqrt((k*E)*(k*E)+(l*n-o*k*e)*(l*n-o*k*e));if(P==0){return 0}var G=o*n+l*k*e;var D=Math.atan2(P,G);var m=Math.asin(l*k*E/P);var H=Math.cos(m)*Math.cos(m);var r=G-2*o*n/H;var x=I/16*H*(4+I*(4-3*H));q=u;u=p+(1-x)*I*Math.sin(m)*(D+x*P*(r+x*G*(-1+2*r*r)))}if(t==0){return NaN}var w=H*(O*O-N*N)/(N*N);var z=1+w/16384*(4096+w*(-768+w*(320-175*w)));var y=w/1024*(256+w*(-128+w*(74-47*w)));var F=y*P*(r+y/4*(G*(-1+2*r*r)-y/6*r*(-3+4*P*P)*(-3+4*r*r)));
var v=N*z*(D-F);var J=v.toFixed(3)/1000;return J};Urbex.Util.getParameters=function(b){b=b||window.location.href;var a="";if(Urbex.String.contains(b,"?")){var c=b.indexOf("?")+1;var e=Urbex.String.contains(b,"#")?b.indexOf("#"):b.length;a=b.substring(c,e)}var n={};var d=a.split(/[&;]/);for(var k=0;k<d.length;++k){var g=d[k].split("=");if(g[0]){var m=decodeURIComponent(g[0]);var l=g[1]||"";l=l.split(",");for(var f=0;f<l.length;f++){l[f]=decodeURIComponent(l[f])}if(l.length==1){l=l[0]}n[m]=l}}return n};Urbex.Util.lastSeqID=0;Urbex.Util.createUniqueID=function(a){if(a==null){a="id_"}Urbex.Util.lastSeqID+=1;return a+Urbex.Util.lastSeqID};Urbex.INCHES_PER_UNIT={inches:1,ft:12,mi:63360,m:39.3701,km:39370.1,dd:4374754,yd:36};Urbex.INCHES_PER_UNIT["in"]=Urbex.INCHES_PER_UNIT.inches;Urbex.INCHES_PER_UNIT.degrees=Urbex.INCHES_PER_UNIT.dd;Urbex.INCHES_PER_UNIT.nmi=1852*Urbex.INCHES_PER_UNIT.m;Urbex.DOTS_PER_INCH=72;Urbex.Util.normalizeScale=function(b){var a=(b>1)?(1/b):b;return a};Urbex.Util.getResolutionFromScale=function(d,a){if(a==null){a="degrees"
}var c=Urbex.Util.normalizeScale(d);var b=1/(c*Urbex.INCHES_PER_UNIT[a]*Urbex.DOTS_PER_INCH);return b};Urbex.Util.getScaleFromResolution=function(b,a){if(a==null){a="degrees"}var c=b*Urbex.INCHES_PER_UNIT[a]*Urbex.DOTS_PER_INCH;return c};Urbex.Util.safeStopPropagation=function(a){Urbex.Event.stop(a,true)};Urbex.Util.pagePosition=function(f){var a=0,d=0;var b=f;var g=f;while(b){if(b==document.body){if(g&&g.style&&Urbex.Element.getStyle(g,"position")=="absolute"){break}}a+=b.offsetTop||0;d+=b.offsetLeft||0;g=b;try{b=b.offsetParent}catch(c){Urbex.Console.error(Urbex.i18n("pagePositionFailed",{elemId:b.id}));break}}b=f;while(b){a-=b.scrollTop||0;d-=b.scrollLeft||0;b=b.parentNode}return[d,a]};Urbex.Util.isEquivalentUrl=function(k,g,c){c=c||{};Urbex.Util.applyDefaults(c,{ignoreCase:true,ignorePort80:true,ignoreHash:true});var b=Urbex.Util.createUrlObject(k,c);var a=Urbex.Util.createUrlObject(g,c);for(var d in b){if(c.test){alert(d+"\n1:"+b[d]+"\n2:"+a[d])}var f=b[d];var e=a[d];switch(d){case"args":break;
case"host":case"port":case"protocol":if((f=="")||(e=="")){break}default:if((d!="args")&&(b[d]!=a[d])){return false}break}}for(var d in b.args){if(b.args[d]!=a.args[d]){return false}delete a.args[d]}for(var d in a.args){return false}return true};Urbex.Util.createUrlObject=function(f,d){d=d||{};var u={};if(d.ignoreCase){f=f.toLowerCase()}var w=document.createElement("a");w.href=f;u.host=w.host;var n=w.port;if(n.length<=0){var r=u.host.length-(n.length);u.host=u.host.substring(0,r)}u.protocol=w.protocol;u.port=((n=="80")&&(d.ignorePort80))?"":n;u.hash=(d.ignoreHash)?"":w.hash;var c=w.search;if(!c){var l=f.indexOf("?");c=(l!=-1)?f.substr(l):""}u.args=Urbex.Util.getParameters(c);if(((u.protocol=="file:")&&(f.indexOf("file:")!=-1))||((u.protocol!="file:")&&(u.host!=""))){u.pathname=w.pathname;var o=u.pathname.indexOf("?");if(o!=-1){u.pathname=u.pathname.substring(0,o)}}else{var m=Urbex.Util.removeTail(f);var t=0;do{var g=m.indexOf("../");if(g==0){t++;m=m.substr(3)}else{if(g>=0){var p=m.substr(0,g-1);
var s=p.indexOf("/");p=(s!=-1)?p.substr(0,s+1):"";var v=m.substr(g+3);m=p+v}}}while(g!=-1);var e=document.createElement("a");var q=window.location.href;if(d.ignoreCase){q=q.toLowerCase()}e.href=q;u.protocol=e.protocol;var b=(e.pathname.indexOf("/")!=-1)?"/":"\\";var k=e.pathname.split(b);k.pop();while((t>0)&&(k.length>0)){k.pop();t--}m=k.join("/")+"/"+m;u.pathname=m}if((u.protocol=="file:")||(u.protocol=="")){u.host="localhost"}return u};Urbex.Util.removeTail=function(b){var c=null;var a=b.indexOf("?");var d=b.indexOf("#");if(a==-1){c=(d!=-1)?b.substr(0,d):b}else{c=(d!=-1)?b.substr(0,Math.min(a,d)):b.substr(0,a)}return c};Urbex.Util.getBrowserName=function(){var b="";var a=navigator.userAgent.toLowerCase();if(a.indexOf("opera")!=-1){b="opera"}else{if(a.indexOf("msie")!=-1){b="msie"}else{if(a.indexOf("safari")!=-1){b="safari"}else{if(a.indexOf("mozilla")!=-1){if(a.indexOf("firefox")!=-1){b="firefox"}else{b="mozilla"}}else{if(a.indexOf("chrome")!=-1){b="chrome"}}}}}return b};Urbex.Util.getIEBrowserVersion=function(){var b=navigator.appVersion.split(";");
var a=Urbex.String.trim(b[1]).split(" ")[1];return parseFloat(a)};Urbex.Util.getRenderedDimensions=function(e,c){var b=h=null;var a=document.createElement("div");a.style.overflow="";a.style.position="absolute";a.style.left="-9999px";if(c){if(c.w){b=a.style.width=c.w}else{if(c.h){h=a.style.height=c.h}}}var d=document.createElement("div");d.innerHTML=e;a.appendChild(d);document.body.appendChild(a);if(!b){b=parseInt(d.scrollWidth);a.style.width=b+"px"}if(!h){h=parseInt(d.scrollHeight)}a.removeChild(d);document.body.removeChild(a);return new Urbex.Size(b,h)};Urbex.Util.getRenderedDimensionsForDOMElement=function(b){var a=h=null;domElement=b.cloneNode(true);domElement.id="testDomElement";domElement.style.overflow="";domElement.style.position="absolute";domElement.style.left="-9999px";document.body.appendChild(domElement);if(!a){a=parseInt(domElement.scrollWidth);domElement.style.width=a+"px"}if(!h){h=parseInt(domElement.scrollHeight)}document.body.removeChild(domElement);return new Urbex.Size(a,h)
};Urbex.Util.getScrollbarWidth=function(){var c=Urbex.Util._scrollbarWidth;if(c==null){var e=null;var d=null;var a=0;var b=0;e=document.createElement("div");e.style.position="absolute";e.style.top="-1000px";e.style.left="-1000px";e.style.width="100px";e.style.height="50px";e.style.overflow="hidden";d=document.createElement("div");d.style.width="100%";d.style.height="200px";e.appendChild(d);document.body.appendChild(e);a=d.offsetWidth;e.style.overflow="scroll";b=d.offsetWidth;document.body.removeChild(document.body.lastChild);Urbex.Util._scrollbarWidth=(a-b);c=Urbex.Util._scrollbarWidth}return c};Urbex.Util.tileToQuadkey=function(d,b,e){var g="";for(var f=e;f>0;f--){var c=1<<(f-1);var a=0;if((d&c)!=0){a++}if((b&c)!=0){a+=2}g+=a}return g};Urbex.Util.WGS84ToSphericalMercator=function(b,k){var l=6378137;var e;var f;var c;var g;var m=[];var d=l;var f=b;var e=k;var c=f;var g=e;var f=d*((Math.PI/180)*((c)-0));var e=d*Math.log(Math.tan((Math.PI/4)+(Math.PI/180)*g*0.5));m[0]=f;m[1]=e;return m};Urbex.Util.SphericalMercatorToWGS84=function(l,g){var k=6378137;
var c=k;var d;var e;var b;var f;var m=[];b=l;f=g;e=(180/Math.PI)*(b/c+0);d=(180/Math.PI)*(Math.atan(Math.exp(f/c))-(Math.PI/4))/0.5;m[0]=e;m[1]=d;return m};Urbex.Util.WGS84ToUtm=function(c,e,g){var z=0;var a=0;z=c/0.9;a=e/0.9;var k=0.08209443779496;var f=k*k;var y=[];var B=4*Math.atan(1);var A=(g*6)-183;var p=(A)/0.9;var s=B/200;var t=z*s;var v=a*s;var x=p*s;var l=Math.cos(v);var d=t-x;var r=l*(Math.sin(d));r=0.5*(Math.log(((1)+r)/((1)-r)));var m=Math.atan2(Math.sin(v),(l*Math.cos(d)))-v;var q=6399593.6258;var u=q/Math.sqrt(1+(f*l*l));var b=(f*(l*r)*(l*r));var o=u*r*(1+(b/6));var n=u*m*(1+(b/2));var w=0.9996;y[0]=500000+(w*o);y[1]=w*(n+Urbex.Util.arcme(v));if(a==1){y[1]=(y[1]+10000000)}return y};Urbex.Util.UtmToWGS84=function(m,k,P,b){var G=[];var O=4*Math.atan(1);var N=(parseFloat(P)*6)-183;var z=parseFloat(N)/0.9;var F=O/200;var K=z*F;var L=k;var J=0.9996;if(b==null){b=1}if(b==1){L=L/J}else{L=10000000-L;L=L/J}var E=b*L*O*5e-8;var e=Math.cos(E);var I=E*b;var f=0.08209443779496;var d=f*f;
var A=d*e*e;var D=6399593.6258;var B=D/Math.sqrt(1+A);L=L-Urbex.Util.arcme(I);var t=(m-500000)/J/B;var o=A*t*t;var C=L/B*(1-(o/2));t=t*(1-(o/6));E=I+C;var n=Math.exp(t);var H=Math.atan((n*n-1)/(2*n*Math.cos(E)));o=Math.sin(E)/Math.cos(E);var M=Math.atan(o*Math.cos(H));o=1+A-(1.5*Math.sin(I)*d*(M-I)*Math.cos(I));var a=H+K;var c=I+o*(M-I);a=(H+K)/F;c=c/F*b;a=a*(360/400);c=c*(360/400);G[0]=a;G[1]=c;return G};Urbex.Util.arcme=function(e){var k=0.08209443779496;var g=k*k;var d=g*(3/4);var q=g*g*(15/16);var f=g*g*g*(35/64);var c=g*g*g*g*(315/512);var o=Math.sin(e)*Math.cos(e);var n=Math.cos(e)*Math.cos(e);var a=e+o;var p=((a*3)+(o*n*2))/4;var m=((p*5)+(2*o*n*n))/3;var l=((m*7)+(4*o*n*n*n))/8;var b=6399593.6258;return(b*(e-d*a+q*p-f*m+c*l))};Urbex.Util.UtmToSphericalMercator=function(b,a,c){var d=[];var e=[];d=Urbex.Util.UtmToWGS84(b,a,c,1);e=Urbex.Util.WGS84ToSphericalMercator(d[0],d[1]);return e};Urbex.Util.sphericalMercatorToUtm=function(b,a,c){var d=[];var e=[];d=Urbex.Util.SphericalMercatorToWGS84(b,a);
e=Urbex.Util.WGS84ToUtm(d[0],d[1],c);return e};Urbex.Util.getHuso=function(b){var a=0;a=parseInt((b/6)+31);return a};Urbex.Util.coordinateConversion=function(d,a,g,f,e,c){var b=a+","+g;d.requestTransform(b,f,e,c)};Urbex.Util.getObliquePolygon=function(c){for(var b=0;b<c.length;b++){var a=c[b];a=a+","+c[b+1];a=a+","+c[b+2];a=a+","+c[b+3];a=a+","+c[b+4];a=a+","+c[b+5];a=a+","+c[b+6];a=a+","+c[b+7];a=a+","+c[b];a=a+","+c[b+1];break}return a};Urbex.Util.transformObliquePolygon=function(a){var b=[{x:parseFloat(a[0]),y:parseFloat(a[1])},{x:parseFloat(a[2]),y:parseFloat(a[3])},{x:parseFloat(a[6]),y:parseFloat(a[7])},{x:parseFloat(a[4]),y:parseFloat(a[5])},{x:parseFloat(a[0]),y:parseFloat(a[1])}];return b};Urbex.Util.polygonContainsPoint=function(e,f){if(e&&f){for(var g=false,d=-1,a=e.length,b=a-1;++d<a;b=d){((e[d].y<=f.y&&f.y<e[b].y)||(e[b].y<=f.y&&f.y<e[d].y))&&(f.x<(e[b].x-e[d].x)*(f.y-e[d].y)/(e[b].y-e[d].y)+e[d].x)&&(g=!g)}return g}else{return false}};Urbex.Util.rotateFirefox=function(m,a,b,g){if(g==null){g=0
}var f=document.getElementById(b);if(!f||f.src==null||f.src==""){return true}if(!f.complete){var d="Urbex.Util.rotateFirefox("+m+",'"+a+"','"+b+"')";setTimeout(d,100);return true}var c=document.getElementById(a);var k=c.getContext("2d");if(k){k.clearRect(0,0,c.width,c.height);k.save();c.setAttribute("width",f.height);c.setAttribute("height",f.width);k.scale((f.width)/256,(f.height)/256);try{switch(m){default:case 0:k.drawImage(f,0,0);break;case 90:k.rotate(m*Math.PI/180);k.drawImage(f,0,-f.height);break;case 180:k.rotate(m*Math.PI/180);k.drawImage(f,-f.width,-f.height);break;case 270:case -90:k.rotate(m*Math.PI/180);k.drawImage(f,-f.width,0);break}}catch(l){if(g<3){setTimeout("Urbex.Util.rotateFirefox("+m+", '"+a+"', '"+b+"', "+g+1+")",500)}}k.restore()}return true};Urbex.Util.Pause=function(c){var b=new Date();var a=null;do{a=new Date()}while(a-b<c)};Urbex.Util.LatLonBearing=function(f,d,e,c){f=Urbex.Util.ToRad(f);e=Urbex.Util.ToRad(e);var b=Urbex.Util.ToRad((c-d));var g=Math.sin(b)*Math.cos(e);
var a=Math.cos(f)*Math.sin(e)-Math.sin(f)*Math.cos(e)*Math.cos(b);return Urbex.Util.ToBrng(Math.atan2(g,a))};Urbex.Util.ToBrng=function(a){return(Urbex.Util.ToDeg(a)+360)%360};Urbex.Util.ToRad=function(a){return a*Math.PI/180};Urbex.Util.ToDeg=function(a){return a*180/Math.PI};Urbex.Util.GetWorldCoordinates=function(map,xyList,callback){var lonlatList=[];for(var i=0;i<xyList.length;i++){lonlatList[i]=map.getLonLatFromViewPortPx(xyList[i])}if(map.activeView=="ORTHO"){for(var i=0;i<lonlatList.length;i++){lonlatList[i]=new Urbex.XY(lonlatList[i].x.toFixed(5),lonlatList[i].y.toFixed(5))}callback(lonlatList)}else{var coords="";for(var i=0;i<lonlatList.length;i++){coords+=(i==0?"":",")+lonlatList[i].x+","+(-lonlatList[i].y)}var id=Urbex.Util.createUniqueID("GetWorldCoordinates");var urlParams="TransformPoints?usertoken="+map.usertoken+"&srs="+map.projection+"&id="+map.idOblique+"&points="+coords+"&function="+id+"&type=TOWORLD&format=js&dtm=yes";var url=Urbex.Proxy.getUrl(map,Urbex.Map.SERVER,Urbex.Proxy.TRANSFORM_POINTS,urlParams);
var oScript=map.createOScript(id,url);var responsePoints=function(id){var result=eval(id+"()");map.deleteOScript(id);if(result.indexOf("ERROR")!=-1){callback([])}var points=result.split(",");if(points!=null){lonlatList=[];for(var i=0;i*2+1<points.length;i++){lonlatList[i]=new Urbex.XY(parseFloat(points[i*2+0]).toFixed(5),parseFloat(points[i*2+1]).toFixed(5))}callback(lonlatList)}};if(navigator.appName=="Microsoft Internet Explorer"){if(oScript.readyState=="loaded"){responsePoints(id);oScript.onreadystatechange=null}else{oScript.onreadystatechange=function(){if(oScript.readyState=="loaded"){responsePoints(id);oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(event){responsePoints(id)},false)}}};Urbex.Util.GetScreenCoordinatesFromWorldCoordinates=function(e,a,f){if(e.activeView=="ORTHO"){var d=[];for(var b=0;b<a.length;b++){d[b]=e.getViewPortPxFromLonLat(a[b])}f(d)}else{var c=function(g){var l=[];for(var k=0;k<g.length;k++){l[k]=e.getViewPortPxFromLonLat(new Urbex.XY(g[k].x,-g[k].y))
}f(l)};Urbex.Util.GetObliqueCoordinatesFromWorldCoordinates(e,a,c)}};Urbex.Util.GetObliqueCoordinatesFromWorldCoordinates=function(map,lonlatList,callback){if(map.activeView=="ORTHO"){for(var i=0;i<lonlatList.length;i++){lonlatList[i]=new Urbex.XY(lonlatList[i].x.toFixed(5),lonlatList[i].y.toFixed(5))}callback(lonlatList)}else{var coords="";for(var i=0;i<lonlatList.length;i++){coords+=(i==0?"":",")+lonlatList[i].x+","+(lonlatList[i].y)}var id=Urbex.Util.createUniqueID("GetObliqueCoordinatesFromWorldCoordinates");var urlParams="TransformPoints?usertoken="+map.usertoken+"&srs="+map.projection+"&id="+map.idOblique+"&points="+coords+"&function="+id+"&type=TOOBLIQUE&format=js&dtm=yes";var url=Urbex.Proxy.getUrl(map,Urbex.Map.SERVER,Urbex.Proxy.TRANSFORM_POINTS,urlParams);var oScript=map.createOScript(id,url);var responsePoints=function(id){var result=eval(id+"()");map.deleteOScript(id);if(result.indexOf("ERROR")!=-1){callback([])}var points=result.split(",");if(points!=null){lonlatList=[];for(var i=0;
i*2+1<points.length;i++){lonlatList[i]=new Urbex.XY(parseFloat(points[i*2+0]).toFixed(5),parseFloat(points[i*2+1]).toFixed(5))}callback(lonlatList)}};if(navigator.appName=="Microsoft Internet Explorer"){if(oScript.readyState=="loaded"){responsePoints(id);oScript.onreadystatechange=null}else{oScript.onreadystatechange=function(){if(oScript.readyState=="loaded"){responsePoints(id);oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(event){responsePoints(id)},false)}}};Urbex.Util.GetUserAvailableExtents=function(map,type,callback){var id=Urbex.Util.createUniqueID("GetUserAvailableExtents");var urlParams="GetUserExtents?usertoken="+map.usertoken+"&user="+map.usertoken+"&srs="+map.projection+"&function="+id+"&types="+type+"&format=js";var url=Urbex.Proxy.getUrl(map,Urbex.Map.SERVER,Urbex.Proxy.TRANSFORM_POINTS,urlParams);var oScript=map.createOScript(id,url);var responseExtents=function(id){var result=eval(id+"()");map.deleteOScript(id);if(result.indexOf("ERROR")!=-1){callback([]);
return}var resultArray=result.split("#");callback(resultArray)};if(navigator.appName=="Microsoft Internet Explorer"){if(oScript.readyState=="loaded"){responseExtents(id);oScript.onreadystatechange=null}else{oScript.onreadystatechange=function(){if(oScript.readyState=="loaded"){responseExtents(id);oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(event){responseExtents(id)},false)}};Urbex.Util.GetUserAvailableData=function(map,x,y,zoom,type,callback){var id=Urbex.Util.createUniqueID("GetUserAvailableExtents");var urlParams="GetUserAvailableData?usertoken="+map.usertoken+"&user="+map.usertoken+"&srs="+map.projection+"&x="+x+"&y="+y+"&function="+id+"&zoom="+zoom+"&types="+type+"&format=js";var url=Urbex.Proxy.getUrl(map,Urbex.Map.SERVER,Urbex.Proxy.TRANSFORM_POINTS,urlParams);var oScript=map.createOScript(id,url);var responseData=function(id){var result=eval(id+"()");map.deleteOScript(id);if(result.indexOf("ERROR")!=-1){callback([]);return}var resultArray=result.split("#");
callback(resultArray)};if(navigator.appName=="Microsoft Internet Explorer"){if(oScript.readyState=="loaded"){responseData(id);oScript.onreadystatechange=null}else{oScript.onreadystatechange=function(){if(oScript.readyState=="loaded"){responseData(id);oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(event){responseData(id)},false)}};Urbex.Util.GetCenterAndZoomFromTile=function(m,e){var r=m.length;var n=Urbex.Layer.Ortho.ProyectionInfo[e].ZoomL0;var a=Urbex.Layer.Ortho.ProyectionInfo[e].ResolutionL0;var d=Urbex.Layer.Ortho.ProyectionInfo[e].OffsetX;var c=Urbex.Layer.Ortho.ProyectionInfo[e].OffsetY;var l=(a*Math.pow(2,n-r));var k=0;var g=0;for(var b=0;b<r;b++){var f=parseInt(m.charAt(b));switch(f){case 3:k+=Math.pow(2,r-1-b);g+=Math.pow(2,r-1-b);break;case 2:g+=Math.pow(2,r-1-b);break;case 1:k+=Math.pow(2,r-1-b);break}}var p=k*256*l-d;var o=c-(g)*256*l;var s=p+128*l;var q=o-128*l;return new Array(s,q,r)};Base64={};Base64._tab_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
Base64.encode=function(e){var c="",f,b,a,m,l,k,g;for(var d=0;d<e.length;){f=e.charCodeAt(d++);b=e.charCodeAt(d++);a=e.charCodeAt(d++);m=f>>2;l=((f&3)<<4)+(b>>4);k=((b&15)<<2)+(a>>6);g=a&63;if(isNaN(b)){k=g=64}else{if(isNaN(a)){g=64}}c+=this._tab_.charAt(m)+this._tab_.charAt(l)+this._tab_.charAt(k)+this._tab_.charAt(g)}return c};Urbex.Proxy=function(a,b){this.url=a;this.level=b};Urbex.Proxy.getUrl=function(e,d,a,f){var c=null;if(!e||!e.proxy||a>e.proxy.level){c="http://"+d+/v02/+f}else{var b=/([?&])(userToken)=([^&]*)(&)?/i.exec(f);f=f.replace(b[0],(b[4]?b[1]:""));c="http://"+e.proxy.url+"?proxy_url="+Base64.encode(/v02/+f)}return c};Urbex.Proxy.DUMMY_TOKEN="_dummy_";Urbex.Proxy.LEVEL0_PROXY=100;Urbex.Proxy.LEVEL1_PROXY=200;Urbex.Proxy.LEVEL2_PROXY=300;Urbex.Proxy.LEVEL3_PROXY=400;Urbex.Proxy.LEVEL1_SERVICE=150;Urbex.Proxy.LEVEL2_SERVICE=250;Urbex.Proxy.LEVEL3_SERVICE=350;Urbex.Proxy.LEVEL4_SERVICE=450;Urbex.Proxy.NO_PROXY=Urbex.Proxy.LEVEL0_PROXY;Urbex.Proxy.DOWNLOAD_PROXY=Urbex.Proxy.LEVEL1_PROXY;
Urbex.Proxy.NO_TILE_PROXY=Urbex.Proxy.LEVEL2_PROXY;Urbex.Proxy.FULL_PROXY=Urbex.Proxy.LEVEL3_PROXY;Urbex.Proxy.GET_MAP=Urbex.Proxy.LEVEL1_SERVICE;Urbex.Proxy.EXTRACT_OBLIQUE=Urbex.Proxy.LEVEL1_SERVICE;Urbex.Proxy.MEASUREMENT=Urbex.Proxy.LEVEL2_SERVICE;Urbex.Proxy.FIND_OBLIQUE=Urbex.Proxy.LEVEL2_SERVICE;Urbex.Proxy.TRANSFORM_POINTS=Urbex.Proxy.LEVEL2_SERVICE;Urbex.Proxy.PROJECT_COORDINATES=Urbex.Proxy.LEVEL2_SERVICE;Urbex.Proxy.GET_TILE=Urbex.Proxy.LEVEL3_SERVICE;Urbex.Class=function(){var b=function(){if(arguments&&arguments[0]!=Urbex.Class.isPrototype){this.initialize.apply(this,arguments)}};var a={};var d;for(var c=0;c<arguments.length;++c){if(typeof arguments[c]=="function"){d=arguments[c].prototype}else{d=arguments[c]}Urbex.Util.extend(a,d)}b.prototype=a;return b};Urbex.Class.isPrototype=function(){};Urbex.Class.create=function(){return function(){if(arguments&&arguments[0]!=Urbex.Class.isPrototype){this.initialize.apply(this,arguments)}}};Urbex.Class.inherit=function(){var c=arguments[0];
var d=new c(Urbex.Class.isPrototype);for(var b=1;b<arguments.length;b++){if(typeof arguments[b]=="function"){var a=arguments[b];arguments[b]=new a(Urbex.Class.isPrototype)}Urbex.Util.extend(d,arguments[b])}return d};Urbex.Bounds=Urbex.Class({left:null,bottom:null,right:null,top:null,initialize:function(d,a,b,c){if(d!=null){this.left=parseFloat(d)}if(a!=null){this.bottom=parseFloat(a)}if(b!=null){this.right=parseFloat(b)}if(c!=null){this.top=parseFloat(c)}},clone:function(){return new Urbex.Bounds(this.left,this.bottom,this.right,this.top)},equals:function(b){var a=false;if(b!=null){a=((this.left==b.left)&&(this.right==b.right)&&(this.top==b.top)&&(this.bottom==b.bottom))}return a},toString:function(){return("left-bottom=("+this.left+","+this.bottom+") right-top=("+this.right+","+this.top+")")},toArray:function(){return[this.left,this.bottom,this.right,this.top]},toBBOX:function(a){if(a==null){a=6}var b=Math.pow(10,a);var c=Math.round(this.left*b)/b+","+Math.round(this.bottom*b)/b+","+Math.round(this.right*b)/b+","+Math.round(this.top*b)/b;
return c},toGeometry:function(){return new Urbex.Geometry.Polygon([new Urbex.Geometry.LinearRing([new Urbex.Geometry.Point(this.left,this.bottom),new Urbex.Geometry.Point(this.right,this.bottom),new Urbex.Geometry.Point(this.right,this.top),new Urbex.Geometry.Point(this.left,this.top)])])},getWidth:function(){return(this.right-this.left)},getHeight:function(){return(this.top-this.bottom)},getSize:function(){return new Urbex.Size(this.getWidth(),this.getHeight())},getCenterPixel:function(){return new Urbex.Pixel((this.left+this.right)/2,(this.bottom+this.top)/2)},getCenterLonLat:function(){return new Urbex.XY((this.left+this.right)/2,(this.bottom+this.top)/2)},add:function(a,c){if((a==null)||(c==null)){var b=Urbex.i18n("boundsAddError");Urbex.Console.error(b);return null}return new Urbex.Bounds(this.left+a,this.bottom+c,this.right+a,this.top+c)},extend:function(a){var b=null;if(a){switch(a.CLASS_NAME){case"Urbex.XY":b=new Urbex.Bounds(a.x,a.y,a.x,a.y);break;case"Urbex.Geometry.Point":b=new Urbex.Bounds(a.x,a.y,a.x,a.y);
break;case"Urbex.Bounds":b=a;break}if(b){if((this.left==null)||(b.left<this.left)){this.left=b.left}if((this.bottom==null)||(b.bottom<this.bottom)){this.bottom=b.bottom}if((this.right==null)||(b.right>this.right)){this.right=b.right}if((this.top==null)||(b.top>this.top)){this.top=b.top}}}},containsLonLat:function(b,a){return this.contains(b.x,b.y,a)},containsPixel:function(b,a){return this.contains(b.x,b.y,a)},contains:function(b,d,a){if(a==null){a=true}var c=false;if(a){c=((b>=this.left)&&(b<=this.right)&&(d>=this.bottom)&&(d<=this.top))}else{c=((b>this.left)&&(b<this.right)&&(d>this.bottom)&&(d<this.top))}return c},intersectsBounds:function(d,b){if(b==null){b=true}var f=(d.bottom==this.bottom&&d.top==this.top)?true:(((d.bottom>this.bottom)&&(d.bottom<this.top))||((this.bottom>d.bottom)&&(this.bottom<d.top)));var e=(d.bottom==this.bottom&&d.top==this.top)?true:(((d.top>this.bottom)&&(d.top<this.top))||((this.top>d.bottom)&&(this.top<d.top)));var a=(d.right==this.right&&d.left==this.left)?true:(((d.right>this.left)&&(d.right<this.right))||((this.right>d.left)&&(this.right<d.right)));
var c=(d.right==this.right&&d.left==this.left)?true:(((d.left>this.left)&&(d.left<this.right))||((this.left>d.left)&&(this.left<d.right)));return(this.containsBounds(d,true,b)||d.containsBounds(this,true,b)||((e||f)&&(c||a)))},containsBounds:function(e,d,b){if(d==null){d=false}if(b==null){b=true}var c;var g;var a;var f;if(b){c=(e.left>=this.left)&&(e.left<=this.right);g=(e.top>=this.bottom)&&(e.top<=this.top);a=(e.right>=this.left)&&(e.right<=this.right);f=(e.bottom>=this.bottom)&&(e.bottom<=this.top)}else{c=(e.left>this.left)&&(e.left<this.right);g=(e.top>this.bottom)&&(e.top<this.top);a=(e.right>this.left)&&(e.right<this.right);f=(e.bottom>this.bottom)&&(e.bottom<this.top)}return(d)?(g||f)&&(c||a):(g&&c&&f&&a)},determineQuadrant:function(c){var b="";var a=this.getCenterLonLat();b+=(c.y<a.y)?"b":"t";b+=(c.x<a.x)?"l":"r";return b},transform:function(d,b){var e=Urbex.Projection.transform({x:this.left,y:this.bottom},d,b);var a=Urbex.Projection.transform({x:this.right,y:this.bottom},d,b);var c=Urbex.Projection.transform({x:this.left,y:this.top},d,b);
var f=Urbex.Projection.transform({x:this.right,y:this.top},d,b);this.left=Math.min(e.x,c.x);this.bottom=Math.min(e.y,a.y);this.right=Math.max(a.x,f.x);this.top=Math.max(c.y,f.y);return this},wrapDateLine:function(a,c){c=c||{};var d=c.leftTolerance||0;var b=c.rightTolerance||0;var e=this.clone();if(a){while(e.left<a.left&&(e.right-b)<=a.left){e=e.add(a.getWidth(),0)}while((e.left+d)>=a.right&&e.right>a.right){e=e.add(-a.getWidth(),0)}}return e},CLASS_NAME:"Urbex.Bounds"});Urbex.Bounds.fromString=function(b){var a=b.split(",");return Urbex.Bounds.fromArray(a)};Urbex.Bounds.fromArray=function(a){return new Urbex.Bounds(parseFloat(a[0]),parseFloat(a[1]),parseFloat(a[2]),parseFloat(a[3]))};Urbex.Bounds.fromSize=function(a){return new Urbex.Bounds(0,a.h,a.w,0)};Urbex.Bounds.oppositeQuadrant=function(a){var b="";b+=(a.charAt(0)=="t")?"b":"t";b+=(a.charAt(1)=="l")?"r":"l";return b};Urbex.XY=Urbex.Class({x:0,y:0,initialize:function(a,b){this.x=parseFloat(a);this.y=parseFloat(b)},toString:function(){return("x="+this.x+",y="+this.y)
},toShortString:function(){return(this.x+", "+this.y)},clone:function(){return new Urbex.XY(this.x,this.y)},add:function(a,c){if((a==null)||(c==null)){var b=Urbex.i18n("XYAddError");Urbex.Console.error(b);return null}return new Urbex.XY(this.x+a,this.y+c)},equals:function(b){var a=false;if(b!=null){a=((this.x==b.x&&this.y==b.y)||(isNaN(this.x)&&isNaN(this.y)&&isNaN(b.x)&&isNaN(b.y)))}return a},transform:function(c,b){var a=Urbex.Projection.transform({x:this.x,y:this.y},c,b);this.x=a.x;this.y=a.y;return this},wrapDateLine:function(b){var a=this.clone();if(b){while(a.x<b.left){a.x+=b.getWidth()}while(a.x>b.right){a.x-=b.getWidth()}}return a},CLASS_NAME:"Urbex.XY"});Urbex.XY.fromString=function(b){var a=b.split(",");return new Urbex.XY(parseFloat(a[0]),parseFloat(a[1]))};Urbex.Pixel=Urbex.Class({x:0,y:0,initialize:function(a,b){this.x=parseFloat(a);this.y=parseFloat(b)},toString:function(){return("x="+this.x+",y="+this.y)},clone:function(){return new Urbex.Pixel(this.x,this.y)},equals:function(a){var b=false;
if(a!=null){b=((this.x==a.x&&this.y==a.y)||(isNaN(this.x)&&isNaN(this.y)&&isNaN(a.x)&&isNaN(a.y)))}return b},add:function(a,c){if((a==null)||(c==null)){var b=Urbex.i18n("pixelAddError");Urbex.Console.error(b);return null}return new Urbex.Pixel(this.x+a,this.y+c)},offset:function(a){var b=this.clone();if(a){b=this.add(a.x,a.y)}return b},CLASS_NAME:"Urbex.Pixel"});Urbex.Size=Urbex.Class({w:0,h:0,initialize:function(a,b){this.w=parseFloat(a);this.h=parseFloat(b)},toString:function(){return("w="+this.w+",h="+this.h)},clone:function(){return new Urbex.Size(this.w,this.h)},equals:function(b){var a=false;if(b!=null){a=((this.w==b.w&&this.h==b.h)||(isNaN(this.w)&&isNaN(this.h)&&isNaN(b.w)&&isNaN(b.h)))}return a},CLASS_NAME:"Urbex.Size"});Urbex.Element={visible:function(a){return Urbex.Util.getElement(a).style.display!="none"},toggle:function(){for(var b=0;b<arguments.length;b++){var a=Urbex.Util.getElement(arguments[b]);var c=Urbex.Element.visible(a)?"hide":"show";Urbex.Element[c](a)}},hide:function(){for(var b=0;
b<arguments.length;b++){var a=Urbex.Util.getElement(arguments[b]);a.style.display="none"}},show:function(){for(var b=0;b<arguments.length;b++){var a=Urbex.Util.getElement(arguments[b]);a.style.display=""}},remove:function(a){a=Urbex.Util.getElement(a);a.parentNode.removeChild(a)},getHeight:function(a){a=Urbex.Util.getElement(a);return a.offsetHeight},getDimensions:function(b){b=Urbex.Util.getElement(b);if(Urbex.Element.getStyle(b,"display")!="none"){return{width:b.offsetWidth,height:b.offsetHeight}}var a=b.style;var e=a.visibility;var c=a.position;a.visibility="hidden";a.position="absolute";a.display="";var f=b.clientWidth;var d=b.clientHeight;a.display="none";a.position=c;a.visibility=e;return{width:f,height:d}},getStyle:function(c,d){c=Urbex.Util.getElement(c);var e=c.style[Urbex.String.camelize(d)];if(!e){if(document.defaultView&&document.defaultView.getComputedStyle){var b=document.defaultView.getComputedStyle(c,null);e=b?b.getPropertyValue(d):null}else{if(c.currentStyle){e=c.currentStyle[Urbex.String.camelize(d)]
}}}var a=["left","top","right","bottom"];if(window.opera&&(Urbex.Util.indexOf(a,d)!=-1)&&(Urbex.Element.getStyle(c,"position")=="static")){e="auto"}return e=="auto"?null:e}};Urbex.AffineTransformation=Urbex.Class({_ulx:null,_uly:null,_urx:null,_ury:null,_llx:null,_lly:null,_lrx:null,_lry:null,_width:0,_height:0,_a1:null,_a2:null,_a3:null,_b1:null,_b2:null,_b3:null,_c1:null,_c2:null,_c3:null,_ai1:null,_ai2:null,_ai3:null,_bi1:null,_bi2:null,_bi3:null,_ci1:null,_ci2:null,_ci3:null,_initialized:false,map:null,initialize:function(a){this.map=a},setValues:function(k,f,d,b,l,g,e,c,a,m){this._ulx=k;this._uly=f;this._urx=d;this._ury=b;this._llx=l;this._lly=g;this._lrx=e;this._lry=c;this._width=parseFloat(a);this._height=parseFloat(m);this.calculateInverseParameters();this._initialized=true},calculateInverseParameters:function(){var o=[[this._ulx,this._uly],[this._urx,this._ury],[this._lrx,this._lry],[this._llx,this._lly]];var g=[[0,this._height],[this._width,this._height],[this._width,0],[0,0]];
var n=[[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]];var c=[this._ulx,this._uly,this._urx,this._ury,this._lrx,this._lry,this._llx,this._lly];var b=[[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]];var q=[[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]];var l=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]];var a=[[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0]];var p=[0,0,0,0,0,0,0,0];var m=0;var f,e,d;for(f=0;f<4;f++){e=f*2;n[e][0]=g[f][0];n[e][1]=0;n[e][2]=-g[f][0]*o[f][0];n[e][3]=g[f][1];n[e][4]=0;
n[e][5]=-g[f][1]*o[f][0];n[e][6]=1;n[e][7]=0}for(f=0;f<4;f++){e=(f*2)+1;n[e][0]=0;n[e][1]=g[f][0];n[e][2]=-g[f][0]*o[f][1];n[e][3]=0;n[e][4]=g[f][1];n[e][5]=-g[f][1]*o[f][1];n[e][6]=0;n[e][7]=1}for(f=0;f<8;f++){for(e=0;e<8;e++){b[e][f]=n[f][e]}}for(f=0;f<8;f++){for(e=0;e<8;e++){q[f][e]=0}}for(f=0;f<8;f++){for(e=0;e<8;e++){for(d=0;d<8;d++){q[f][e]=q[f][e]+(b[f][d]*n[d][e])}l[f][e]=q[f][e]}}for(f=0;f<8;f++){for(e=0;e<8;e++){l[e][8]=0;l[f][8]=1}m=l[f][f];for(e=0;e<9;e++){l[f][e]=l[f][e]/m}for(e=0;e<8;e++){if(f!=e){m=l[e][f];for(d=0;d<9;d++){l[e][d]=l[e][d]-(l[f][d]*m)}}}for(e=0;e<8;e++){l[e][f]=l[e][8]}}for(f=0;f<8;f++){for(e=0;e<8;e++){for(d=0;d<8;d++){a[f][e]=a[f][e]+(l[f][d]*b[d][e])}}}for(f=0;f<8;f++){for(e=0;e<8;e++){p[f]=p[f]+(a[f][e]*c[e])}}this._ai1=p[0];this._ai2=p[1];this._ai3=p[2];this._bi1=p[3];this._bi2=p[4];this._bi3=p[5];this._ci1=p[6];this._ci2=p[7];this._ci3=1},transformFromPixelToWorld:function(e){e.y=e.y+this._height;var d=(this._ai1*e.x)+(this._bi1*e.y)+this._ci1;var c=(this._ai2*e.x)+(this._bi2*e.y)+this._ci2;
var b=(this._ai3*e.x)+(this._bi3*e.y)+this._ci3;var a=[];a[0]=d/b;a[1]=c/b;return a},CLASS_NAME:"Urbex.AffineTransformation"});Urbex.Tween=Urbex.Class({INTERVAL:10,easing:null,begin:null,finish:null,duration:null,callbacks:null,time:null,interval:null,playing:false,initialize:function(a){this.easing=(a)?a:Urbex.Easing.Expo.easeOut},start:function(c,b,d,a){this.playing=true;this.begin=c;this.finish=b;this.duration=d;this.callbacks=a.callbacks;this.time=0;if(this.interval){window.clearInterval(this.interval);this.interval=null}if(this.callbacks&&this.callbacks.start){this.callbacks.start.call(this,this.begin)}this.interval=window.setInterval(Urbex.Function.bind(this.play,this),this.INTERVAL)},stop:function(){if(!this.playing){return}if(this.callbacks&&this.callbacks.done){this.callbacks.done.call(this,this.finish)}window.clearInterval(this.interval);this.interval=null;this.playing=false},play:function(){var g={};for(var d=0;d<this.begin.length;d++){var a=this.begin[d];var e=this.finish[d];
if(a==null||e==null||isNaN(a)||isNaN(e)){Urbex.Console.error("invalid value for Tween")}var k=e-a;g[d]=this.easing.apply(this,[this.time,a,k,this.duration])}this.time++;if(this.callbacks&&this.callbacks.eachStep){this.callbacks.eachStep.call(this,g)}if(this.time>this.duration){if(this.callbacks&&this.callbacks.done){this.callbacks.done.call(this,this.finish);this.playing=false}window.clearInterval(this.interval);this.interval=null}},CLASS_NAME:"Urbex.Tween"});Urbex.Easing={CLASS_NAME:"Urbex.Easing"};Urbex.Easing.Linear={easeIn:function(e,a,g,f){return g*e/f+a},easeOut:function(e,a,g,f){return g*e/f+a},easeInOut:function(e,a,g,f){return g*e/f+a},CLASS_NAME:"Urbex.Easing.Linear"};Urbex.Easing.Expo={easeIn:function(e,a,g,f){return(e==0)?a:g*Math.pow(2,10*(e/f-1))+a},easeOut:function(e,a,g,f){return(e==f)?a+g:g*(-Math.pow(2,-10*e/f)+1)+a},easeInOut:function(e,a,g,f){if(e==0){return a}if(e==f){return a+g}if((e/=f/2)<1){return g/2*Math.pow(2,10*(e-1))+a}return g/2*(-Math.pow(2,-10*--e)+2)+a},CLASS_NAME:"Urbex.Easing.Expo"};
Urbex.Easing.Quad={easeIn:function(e,a,g,f){return g*(e/=f)*e+a},easeOut:function(e,a,g,f){return -g*(e/=f)*(e-2)+a},easeInOut:function(e,a,g,f){if((e/=f/2)<1){return g/2*e*e+a}return -g/2*((--e)*(e-2)-1)+a},CLASS_NAME:"Urbex.Easing.Quad"};Urbex.Event={observers:false,KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,element:function(a){return a.target||a.srcElement},isLeftClick:function(a){return(((a.which)&&(a.which==1))||((a.button)&&(a.button==1)))},stop:function(b,a){if(!a){if(b.preventDefault){b.preventDefault()}else{b.returnValue=false}}if(b.stopPropagation){b.stopPropagation()}else{b.cancelBubble=true}},findElement:function(c,b){var a=Urbex.Event.element(c);while(a.parentNode&&(!a.tagName||(a.tagName.toUpperCase()!=b.toUpperCase()))){a=a.parentNode}return a},observe:function(b,d,c,a){var e=Urbex.Util.getElement(b);a=a||false;if(d=="keypress"&&(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||e.attachEvent)){d="keydown"
}if(!this.observers){this.observers={}}if(!e._eventCacheID){var f="eventCacheID_";if(e.id){f=e.id+"_"+f}e._eventCacheID=Urbex.Util.createUniqueID(f)}var g=e._eventCacheID;if(!this.observers[g]){this.observers[g]=[]}this.observers[g].push({element:e,name:d,observer:c,useCapture:a});if(e.addEventListener){e.addEventListener(d,c,a)}else{if(e.attachEvent){e.attachEvent("on"+d,c)}}},stopObservingElement:function(a){var b=Urbex.Util.getElement(a);var c=b._eventCacheID;this._removeElementObservers(Urbex.Event.observers[c])},_removeElementObservers:function(e){if(e){for(var b=e.length-1;b>=0;b--){var c=e[b];var a=new Array(c.element,c.name,c.observer,c.useCapture);var d=Urbex.Event.stopObserving.apply(this,a)}}},stopObserving:function(k,a,g,b){b=b||false;var f=Urbex.Util.getElement(k);var d=f._eventCacheID;if(a=="keypress"){if(navigator.appVersion.match(/Konqueror|Safari|KHTML/)||f.detachEvent){a="keydown"}}var m=false;var c=Urbex.Event.observers[d];if(c){var e=0;while(!m&&e<c.length){var l=c[e];
if((l.name==a)&&(l.observer==g)&&(l.useCapture==b)){c.splice(e,1);if(c.length==0){delete Urbex.Event.observers[d]}m=true;break}e++}}if(m){if(f.removeEventListener){f.removeEventListener(a,g,b)}else{if(f&&f.detachEvent){f.detachEvent("on"+a,g)}}}return m},unloadCache:function(){if(Urbex.Event&&Urbex.Event.observers){for(var a in Urbex.Event.observers){var b=Urbex.Event.observers[a];Urbex.Event._removeElementObservers.apply(this,[b])}Urbex.Event.observers=false}},CLASS_NAME:"Urbex.Event"};Urbex.Event.observe(window,"unload",Urbex.Event.unloadCache,false);if(window.Event){Urbex.Util.applyDefaults(window.Event,Urbex.Event)}else{var Event=Urbex.Event}Urbex.Events=Urbex.Class({BROWSER_EVENTS:["mouseover","mouseout","mousedown","mouseup","mousemove","click","dblclick","resize","focus","blur"],listeners:null,object:null,element:null,eventTypes:null,eventHandler:null,fallThrough:null,initialize:function(a,c,e,d){this.object=a;this.element=c;this.eventTypes=e;this.fallThrough=d;this.listeners={};
this.eventHandler=Urbex.Function.bindAsEventListener(this.handleBrowserEvent,this);if(this.eventTypes!=null){for(var b=0;b<this.eventTypes.length;b++){this.addEventType(this.eventTypes[b])}}if(this.element!=null){this.attachToElement(c)}},destroy:function(){if(this.element){Urbex.Event.stopObservingElement(this.element)}this.element=null;this.listeners=null;this.object=null;this.eventTypes=null;this.fallThrough=null;this.eventHandler=null},addEventType:function(a){if(!this.listeners[a]){this.listeners[a]=[]}},attachToElement:function(c){for(var b=0;b<this.BROWSER_EVENTS.length;b++){var a=this.BROWSER_EVENTS[b];this.addEventType(a);Urbex.Event.observe(c,a,this.eventHandler)}Urbex.Event.observe(c,"dragstart",Urbex.Event.stop)},on:function(a){for(var b in a){if(b!="scope"&&b!="inheritsFrom"){this.register(b,a.scope,a[b])}}},register:function(b,d,c){if(c!=null&&((this.eventTypes&&Urbex.Util.indexOf(this.eventTypes,b)!=-1)||Urbex.Util.indexOf(this.BROWSER_EVENTS,b)!=-1)){if(d==null){d=this.object
}var a=this.listeners[b];if(a!=null){a.push({obj:d,func:c})}}},registerPriority:function(b,d,c){if(c!=null){if(d==null){d=this.object}var a=this.listeners[b];if(a!=null){a.unshift({obj:d,func:c})}}},un:function(a){for(var b in a){if(b!="scope"&&b!="inheritsFrom"){this.unregister(b,a.scope,a[b])}}},unregister:function(c,e,d){if(e==null){e=this.object}var b=this.listeners[c];if(b!=null){for(var a=0;a<b.length;a++){if(b[a].obj==e&&b[a].func==d){b.splice(a,1);break}}}},remove:function(a){if(this.listeners[a]!=null){this.listeners[a]=[]}},triggerEvent:function(d,a){if(a==null){a={}}a.object=this.object;a.element=this.element;if(!a.type){a.type=d}var c=(this.listeners[d])?this.listeners[d].slice():null;if((c!=null)&&(c.length>0)){var e;for(var b=0;b<c.length;b++){var f=c[b];e=f.func.apply(f.obj,[a]);if((e!=undefined)&&(e==false)){break}}if(!this.fallThrough){Urbex.Event.stop(a,true)}}return e},handleBrowserEvent:function(a){a.xy=this.getMousePosition(a);this.triggerEvent(a.type,a)},getMousePosition:function(a){if(!this.element.offsets){this.element.offsets=Urbex.Util.pagePosition(this.element);
this.element.offsets[0]+=(document.documentElement.scrollLeft||document.body.scrollLeft);this.element.offsets[1]+=(document.documentElement.scrollTop||document.body.scrollTop)}return new Urbex.Pixel((a.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft))-this.element.offsets[0]-(document.documentElement.clientLeft||0),(a.clientY+(document.documentElement.scrollTop||document.body.scrollTop))-this.element.offsets[1]-(document.documentElement.clientTop||0))},CLASS_NAME:"Urbex.Events"});Urbex.Projection=Urbex.Class({proj:null,projCode:null,initialize:function(b,a){Urbex.Util.extend(this,a);this.projCode=b;if(window.Proj4js){this.proj=new Proj4js.Proj(b)}},getCode:function(){return this.proj?this.proj.srsCode:this.projCode},getUnits:function(){return this.proj?this.proj.units:null},toString:function(){return this.getCode()},equals:function(a){if(a&&a.getCode){return this.getCode()==a.getCode()}else{return false}},destroy:function(){delete this.proj;delete this.projCode},CLASS_NAME:"Urbex.Projection"});
Urbex.Projection.transforms={};Urbex.Projection.addTransform=function(c,b,a){if(!Urbex.Projection.transforms[c]){Urbex.Projection.transforms[c]={}}Urbex.Projection.transforms[c][b]=a};Urbex.Projection.transform=function(a,c,b){if(c&&b){if(c.projCode=="EPSG:4326"&&b.projCode=="EPSG:3785"){var d=Urbex.Util.WGS84ToSphericalMercator(a.x,a.y);a.x=d[0];a.y=d[1];a.wx=a.x;a.wy=a.y;return a}}if(c.proj&&b.proj){a=Proj4js.transform(c.proj,b.proj,a)}else{if(c&&b&&Urbex.Projection.transforms[c.getCode()]&&Urbex.Projection.transforms[c.getCode()][b.getCode()]){Urbex.Projection.transforms[c.getCode()][b.getCode()](a)}}return a};Urbex.MapBase=Urbex.Class({Z_INDEX_BASE:{BaseLayer:1000,Overlay:2000,Features:3000,Feature_Popup:4000,Markers:5000,Popup:6000,Control:7000},EVENT_TYPES:["preaddlayer","addlayer","removelayer","changelayer","movestart","move","moveend","zoomend","zoomlimitschanged","mouseover","mouseout","mousemove","dragstart","drag","dragend","changebaselayer"],id:null,fractionalZoom:false,events:null,div:null,dragging:false,size:null,viewPortDiv:null,layerContainerOrigin:null,layerContainerDiv:null,layers:null,controls:null,popups:null,baseLayer:null,center:null,resolution:null,zoom:17,viewRequestID:0,intelligentMove:null,tileSize:null,projection:"EPSG:3785",units:"m",resolutions:null,maxResolution:156543.0339,minResolution:null,maxScale:null,minScale:null,maxExtent:null,minExtent:null,restrictedExtent:null,numZoomLevels:21,theme:null,displayProjection:null,fallThrough:true,panTween:null,eventListeners:null,panMethod:Urbex.Easing.Expo.easeOut,paddingForPopups:null,initialize:function(b,a){},unloadDestroy:null,updateSizeDestroy:null,destroy:function(){if(!this.unloadDestroy){return false
}Urbex.Event.stopObserving(window,"unload",this.unloadDestroy);this.unloadDestroy=null;if(this.updateSizeDestroy){Urbex.Event.stopObserving(window,"resize",this.updateSizeDestroy)}else{this.events.unregister("resize",this,this.updateSize)}this.paddingForPopups=null;if(this.controls!=null){for(var a=this.controls.length-1;a>=0;--a){if(this.controls[a]){this.controls[a].destroy()}}this.controls=null}if(this.layers!=null){for(var a=this.layers.length-1;a>=0;--a){this.layers[a].destroy(false)}this.layers=null}if(this.viewPortDiv){this.div.removeChild(this.viewPortDiv)}this.viewPortDiv=null;if(this.eventListeners){this.events.un(this.eventListeners);this.eventListeners=null}this.events.destroy();this.events=null},setOptions:function(a){Urbex.Util.extend(this,a)},getTileSize:function(){return this.tileSize},getBy:function(e,c,a){var d=(typeof a.test=="function");var b=Urbex.Array.filter(this[e],function(f){return f[c]==a||(d&&a.test(f[c]))});return b},getLayersBy:function(b,a){return this.getBy("layers",b,a)
},getLayersByName:function(a){return this.getLayersBy("name",a)},getLayersByClass:function(a){return this.getLayersBy("CLASS_NAME",a)},getControlsBy:function(b,a){return this.getBy("controls",b,a)},getControlsByClass:function(a){return this.getControlsBy("CLASS_NAME",a)},getLayer:function(d){var a=null;for(var c=0;c<this.layers.length;c++){var b=this.layers[c];if(b.id==d){a=b;break}}return a},setLayerZIndex:function(b,a){switch(b.CLASS_NAME){case"Urbex.Layer.Ortho":case"Urbex.Layer.Oblique":b.setZIndex(this.Z_INDEX_BASE.BaseLayer+a);break;case"Urbex.Layer.Overlay":b.setZIndex(this.Z_INDEX_BASE.Overlay+a);break;case"Urbex.Layer.Vector":b.setZIndex(this.Z_INDEX_BASE.Features+a);break;case"Urbex.Layer.Texts":case"Urbex.Layer.Markers":case"Urbex.Layer.TextMarkers":default:b.setZIndex(this.Z_INDEX_BASE.Markers+a);break}},resetLayersZIndex:function(){for(var b=0;b<this.layers.length;b++){var a=this.layers[b];this.setLayerZIndex(a,b)}},addLayer:function(b){for(var a=0;a<this.layers.length;a++){if(this.layers[a]==b){var c=Urbex.i18n("layerAlreadyAdded",{layerName:b.name});
Urbex.Console.warn(c);return false}}this.events.triggerEvent("preaddlayer",{layer:b});b.div.className="olLayerDiv";b.div.style.overflow="";this.setLayerZIndex(b,this.layers.length);if(b.isFixed){this.viewPortDiv.appendChild(b.div)}else{this.layerContainerDiv.appendChild(b.div)}this.layers.push(b);b.setMap(this);if(b.isBaseLayer){if(this.baseLayer==null){}else{b.setVisibility(false)}}else{b.redraw()}this.events.triggerEvent("addlayer",{layer:b})},addLayers:function(b){for(var a=0;a<b.length;a++){this.addLayer(b[a])}},removeLayer:function(b,d){if(d==null){d=true}if(b.isFixed){this.viewPortDiv.removeChild(b.div)}else{this.layerContainerDiv.removeChild(b.div)}Urbex.Util.removeItem(this.layers,b);b.removeMap(this);b.map=null;if(this.baseLayer==b){this.baseLayer=null;if(d){for(var a=0;a<this.layers.length;a++){var c=this.layers[a];if(c.isBaseLayer){this.setBaseLayer(c);break}}}}this.resetLayersZIndex();this.events.triggerEvent("removelayer",{layer:b})},getNumLayers:function(){return this.layers.length
},getLayerIndex:function(a){return Urbex.Util.indexOf(this.layers,a)},setLayerIndex:function(c,a){var d=this.getLayerIndex(c);if(a<0){a=0}else{if(a>this.layers.length){a=this.layers.length}}if(d!=a){this.layers.splice(d,1);this.layers.splice(a,0,c);for(var b=0;b<this.layers.length;b++){this.setLayerZIndex(this.layers[b],b)}this.events.triggerEvent("changelayer",{layer:c,property:"order"})}},raiseLayer:function(b,c){var a=this.getLayerIndex(b)+c;this.setLayerIndex(b,a)},setBaseLayer:function(e,f){var d=this.baseLayer?this.baseLayer.getExtent():null;if(e!=this.baseLayer){if(Urbex.Util.indexOf(this.layers,e)!=-1){if(this.baseLayer!=null){this.baseLayer.setVisibility(false)}this.baseLayer=e;this.viewRequestID++;this.baseLayer.visibility=true;if(!f){var a=this.getCenter();if(a!=null){var b=(d)?d.getCenterLonLat():a;if(this.zoom==null){var c=(d)?this.getZoomForExtent(d,true):this.getZoomForResolution(this.resolution,true)}else{var c=this.zoom}this.setCenter(b,c,false,true)}}this.events.triggerEvent("changebaselayer",{layer:this.baseLayer})
}}},addControl:function(b,a){this.controls.push(b);this.addControlToMap(b,a)},addControls:function(a){for(var b=0;b<a.length;b++){this.controls.push(a[b]);this.addControlToMap(a[b])}},addControlToMap:function(b,a){b.outsideViewport=(b.div!=null);if(this.displayProjection&&!b.displayProjection){b.displayProjection=this.displayProjection}b.setMap(this);var c=b.draw(a);if(c){if(!b.outsideViewport){c.style.zIndex=this.Z_INDEX_BASE.Control+this.controls.length;this.viewPortDiv.appendChild(c)}}},getControl:function(d){var a=null;for(var b=0;b<this.controls.length;b++){var c=this.controls[b];if(c.id==d){a=c;break}}return a},removeControl:function(a){if((a)&&(a==this.getControl(a.id))){if(a.div&&(a.div.parentNode==this.viewPortDiv)){this.viewPortDiv.removeChild(a.div)}Urbex.Util.removeItem(this.controls,a)}},addPopup:function(a,d){if(d){for(var b=this.popups.length-1;b>=0;--b){this.removePopup(this.popups[b])}}a.map=this;this.popups.push(a);var c=a.draw();if(c){c.style.zIndex=this.Z_INDEX_BASE.Popup+this.popups.length;
this.layerContainerDiv.appendChild(c)}},removePopup:function(a){Urbex.Util.removeItem(this.popups,a);if(a.div){try{this.layerContainerDiv.removeChild(a.div)}catch(b){}}a.map=null},getSize:function(){var a=null;if(this.size!=null){a=this.size.clone()}return a},updateSize:function(){this.events.element.offsets=null;var b=this.getCurrentSize();var e=this.getSize();if(e==null){this.size=e=b}if(!b.equals(e)){this.size=b;for(var c=0;c<this.layers.length;c++){this.layers[c].onMapResize()}for(var g=0;g<this.controls.length;g++){this.controls[g].onMapResize()}if(this.baseLayer!=null){var a=new Urbex.Pixel(b.w/2,b.h/2);var f=this.getLonLatFromViewPortPx(a);var d=this.getZoom();this.zoom=null;this.setCenter(this.getCenter(),d)}}},getCurrentSize:function(){var a=new Urbex.Size(this.div.clientWidth,this.div.clientHeight);if(a.w==0&&a.h==0||isNaN(a.w)&&isNaN(a.h)){var b=Urbex.Element.getDimensions(this.div);a.w=b.width;a.h=b.height}if(a.w==0&&a.h==0||isNaN(a.w)&&isNaN(a.h)){a.w=parseInt(this.div.style.width);
a.h=parseInt(this.div.style.height)}return a},calculateBounds:function(b,c){var f=null;if(b==null){b=this.getCenter()}if(c==null){c=this.getResolution()}if((b!=null)&&(c!=null)){var e=this.getSize();var g=e.w*c;var d=e.h*c;if((this.activeView=="ORTHO")&&((this.orientation=="EAST")||(this.orientation=="WEST"))){var a=g;g=d;d=a}f=new Urbex.Bounds(b.x-g/2,b.y-d/2,b.x+g/2,b.y+d/2)}return f},getCenter:function(){return this.center},getZoom:function(){return this.zoom},centerLayerContainer:function(b){var a=this.getViewPortPxFromLonLat(this.layerContainerOrigin);var e=this.getViewPortPxFromLonLat(b);var d=Math.round(a.y-e.y);var c=Math.round(a.x-e.x);if((a!=null)&&(e!=null)){this.layerContainerDiv.style.left=c+"px";this.layerContainerDiv.style.top=d+"px"}},setZoomLimits:function(k,a,e,d){var g=this.minZoom;var c=this.maxZoom;var f=this.minObliqueZoom;var b=this.maxObliqueZoom;this.minZoom=Math.max(1,k);if(a>Urbex.Layer.Ortho.ProyectionInfo[this.projection].ZoomLevels){Urbex.Layer.Ortho.ProyectionInfo[this.projection].ZoomLevels=a;
this.maxZoom=a}else{this.maxZoom=Math.max(this.minZoom,a)}this.minObliqueZoom=Math.max(1,e);this.maxObliqueZoom=Math.max(this.minObliqueZoom,d);if(this.minZoom!=g||this.maxZoom!=c||this.minObliqueZoom!=f||this.maxObliqueZoom!=b){this.events.triggerEvent("zoomlimitschanged",{min:this.minZoom,max:this.maxZoom,minOblique:this.minObliqueZoom,maxOblique:this.maxObliqueZoom})}},getMinZoom:function(){var a=(this.getActiveView()=="OBLIQUE")?this.minObliqueZoom:this.minZoom;if(a){return Math.max(a,1)}else{return 1}},getMaxZoom:function(){var a=(this.getActiveView()=="OBLIQUE")?this.maxObliqueZoom:this.maxZoom;if(a){return Math.min(a,this.getNumZoomLevels())}else{return this.getNumZoomLevels()}},isValidZoomLevel:function(a){return((a!=null)&&(a>=this.getMinZoom())&&(a<=this.getMaxZoom()))},isValidLonLat:function(c){var b=false;if(c!=null){var a=this.getMaxExtent();b=a.containsLonLat(c)}return b},getProjection:function(){var a=this.getProjectionObject();return a?a.getCode():null},getProjectionObject:function(){var a=null;
if(this.baseLayer!=null){a=this.baseLayer.projection}return a},getMaxResolution:function(){var a=null;if(this.baseLayer!=null){a=this.baseLayer.maxResolution}return a},getMaxExtent:function(){var a=null;if(this.baseLayer!=null){a=this.baseLayer.maxExtent}return a},getNumZoomLevels:function(){var a=null;if(this.baseLayer!=null){a=this.baseLayer.numZoomLevels}return a},getExtent:function(){var a=null;if(this.baseLayer!=null){a=this.baseLayer.getExtent()}return a},getResolution:function(){var a=null;if(this.baseLayer!=null){a=this.baseLayer.getResolution()}return a},getScale:function(){var c=null;if(this.baseLayer!=null){var b=this.getResolution();var a=this.baseLayer.units;c=Urbex.Util.getScaleFromResolution(b,a)}return c},getZoomForExtent:function(c,b){var a=null;if(this.baseLayer!=null){a=this.baseLayer.getZoomForExtent(c,b)}return a},getResolutionForZoom:function(b){var a=null;if(this.baseLayer){a=this.baseLayer.getResolutionForZoom(b)}return a},getZoomForResolution:function(a,c){var b=null;
if(this.baseLayer!=null){b=this.baseLayer.getZoomForResolution(a,c)}return b},zoomTo:function(a){if(this.isValidZoomLevel(a)){this.setCenter(null,a)}},zoomIn:function(){this.zoomTo(this.getZoom()+1)},zoomOut:function(){this.zoomTo(this.getZoom()-1)},zoomToExtent:function(c){var b=c.getCenterLonLat();if(this.baseLayer.wrapDateLine){var a=this.getMaxExtent();c=c.clone();while(c.right<c.left){c.right+=a.getWidth()}b=c.getCenterLonLat().wrapDateLine(a)}this.setCenter(b,this.getZoomForExtent(c))},zoomToMaxExtent:function(){this.zoomToExtent(this.getMaxExtent())},zoomToScale:function(g){var d=Urbex.Util.getResolutionFromScale(g,this.baseLayer.units);var c=this.getSize();var f=c.w*d;var b=c.h*d;var a=this.getCenter();var e=new Urbex.Bounds(a.x-f/2,a.y-b/2,a.x+f/2,a.y+b/2);this.zoomToExtent(e)},getLonLatFromViewPortPx:function(a){var b=null;if(this.baseLayer!=null){b=this.baseLayer.getLonLatFromViewPortPx(a)}return b},getViewPortPxFromLonLat:function(b){var a=null;if(this.baseLayer!=null){a=this.baseLayer.getViewPortPxFromLonLat(b)
}return a},getLonLatFromPixel:function(a){return this.getLonLatFromViewPortPx(a)},getPixelFromLonLat:function(b){var a=this.getViewPortPxFromLonLat(b);a.x=Math.round(a.x);a.y=Math.round(a.y);return a},getViewPortPxFromLayerPx:function(d){var c=null;if(d!=null){var b=parseInt(this.layerContainerDiv.style.left);var a=parseInt(this.layerContainerDiv.style.top);c=d.add(b,a)}return c},getLayerPxFromViewPortPx:function(c){var d=null;if(c!=null){var b=-parseInt(this.layerContainerDiv.style.left);var a=-parseInt(this.layerContainerDiv.style.top);d=c.add(b,a);if(isNaN(d.x)||isNaN(d.y)){d=null}}return d},getLonLatFromLayerPx:function(a){a=this.getViewPortPxFromLayerPx(a);return this.getLonLatFromViewPortPx(a)},getLayerPxFromLonLat:function(b){var a=this.getPixelFromLonLat(b);return this.getLayerPxFromViewPortPx(a)},CLASS_NAME:"Urbex.MapBase"});Urbex.MapBase.TILE_WIDTH=256;Urbex.MapBase.TILE_HEIGHT=256;Urbex.Map=Urbex.Class(Urbex.MapBase,{usertoken:null,x:null,y:null,projection:"EPSG:3785",proxy:null,view:"ORTHO",activeView:null,orientation:null,zoom:17,worldCenter:null,worldMaxExtent:null,worldNumZoomLevels:null,worldZoom:null,idOblique:null,polyOblique:null,wOblique:null,hOblique:null,buffer:10,loadcontrols:"full",firstcontrol:true,changeOrientation:null,TIME:"2009",BASELAYER:"",EVENT_TYPES:["areameasured","bearingmeasured","lengthmeasured","elevationmeasured","heightmeasured","locationmeasured","obliqueloaded","viewchanged","orientationchanged","extentchanged"],isIntelligent:false,measureObj:null,affineTransform:null,multiObliqueMode:false,initEventsRegistered:null,scale:1,initialize:function(k,d){this.EVENT_TYPES=Urbex.Map.prototype.EVENT_TYPES.concat(Urbex.MapBase.prototype.EVENT_TYPES);
Urbex.Util.extend(this,d);if(this.view!=null){this.view=this.view.toUpperCase()}if(this.orientation!=null){this.orientation=this.orientation.toUpperCase()}if(this.scale>3){this.scale=3}this.paddingForPopups=new Urbex.Bounds(15,15,15,15);this.theme=Urbex._getScriptLocation()+"style.css";this.id=Urbex.Util.createUniqueID("Urbex.Map_");this.div=Urbex.Util.getElement(k);var g=this.div.id+"_Urbex_ViewPort";this.viewPortDiv=Urbex.Util.createDiv(g,null,null,null,"relative",null,"hidden");this.viewPortDiv.style.width="100%";this.viewPortDiv.style.height="100%";this.viewPortDiv.className="olMapViewport";this.div.appendChild(this.viewPortDiv);g=this.div.id+"_Urbex_Container";this.layerContainerDiv=Urbex.Util.createDiv(g);this.layerContainerDiv.style.zIndex=this.Z_INDEX_BASE.Popup-1;this.viewPortDiv.appendChild(this.layerContainerDiv);this.events=new Urbex.Events(this,this.div,this.EVENT_TYPES,this.fallThrough);this.updateSize();if(this.eventListeners instanceof Object){this.events.on(this.eventListeners)
}this.events.register("movestart",this,this.updateSize);if(Urbex.String.contains(navigator.appName,"Microsoft")){this.events.register("resize",this,this.updateSize)}else{this.updateSizeDestroy=Urbex.Function.bind(this.updateSize,this);Urbex.Event.observe(window,"resize",this.updateSizeDestroy)}if(this.initEventsRegistered){for(var e=0;e<this.initEventsRegistered.length;e++){var a=this.initEventsRegistered[e];this.events.register(a.eventName,a.object,a.callback)}}if(this.theme){var f=true;var c=document.getElementsByTagName("link");for(var e=0;e<c.length;++e){if(Urbex.Util.isEquivalentUrl(c.item(e).href,this.theme)){f=false;break}}if(f){var b=document.createElement("link");b.setAttribute("rel","stylesheet");b.setAttribute("type","text/css");b.setAttribute("href",this.theme);document.getElementsByTagName("head")[0].appendChild(b)}}this.layers=[];if(this.controls!=null){for(var e=0;e<this.controls.length;e++){this.addControlToMap(this.controls[e])}}else{this.controls=[]}this.addControl(new Urbex.Control.Logo());
this.popups=[];this.unloadDestroy=Urbex.Function.bind(this.destroy,this);Urbex.Event.observe(window,"unload",this.unloadDestroy);this.affineTransform=new Urbex.AffineTransformation(this);this.center=new Urbex.XY(this.x,this.y);this.setView(this.center,this.view,this.orientation,this.zoom)},cleanMap:function(){if(this.layers!=null){for(var a=this.layers.length-1;a>=0;--a){if(this.layers[a].isBaseLayer){this.layers[a].destroy(false)}else{}}this.layers=this.layers}if(this.measureObj!=null){this.measureObj.offMeasureControls()}},loadExtent:function(a){if(a=="ORTHO"){this.maxExtent=new Urbex.Bounds(-Urbex.Layer.Ortho.ProyectionInfo[this.projection].OffsetX,-Urbex.Layer.Ortho.ProyectionInfo[this.projection].OffsetY,Urbex.Layer.Ortho.ProyectionInfo[this.projection].OffsetX,Urbex.Layer.Ortho.ProyectionInfo[this.projection].OffsetY)}else{if(a=="OBLIQUE"){this.maxExtent=new Urbex.Bounds(-8192,-16384,16384,8192)}}},activeControls:function(b){if(this.firstcontrol!=true){return}if(!Urbex||!Urbex.Control){return
}switch(this.loadcontrols){case"full":case"all":if(Urbex.Control.Length&&this.getControlByMatch("Conrol.Length")==null){this.addControl(new Urbex.Control.Length())}if(Urbex.Control.GroundLength&&this.getControlByMatch("Conrol.GroundLength")==null){this.addControl(new Urbex.Control.GroundLength())}if(Urbex.Control.Area&&this.getControlByMatch("Conrol.Area")==null){this.addControl(new Urbex.Control.Area())}if(Urbex.Control.Height&&this.getControlByMatch("Conrol.Height")==null){this.addControl(new Urbex.Control.Height())}if(Urbex.Control.Bearing&&this.getControlByMatch("Conrol.Bearing")==null){this.addControl(new Urbex.Control.Bearing())}if(Urbex.Control.Elevation&&this.getControlByMatch("Conrol.Elevation")==null){this.addControl(new Urbex.Control.Elevation())}if(Urbex.Control.Eraser&&this.getControlByMatch("Conrol.Eraser")==null){this.addControl(new Urbex.Control.Eraser())}case"navigation":if(Urbex.Control.ChangeOrientation&&this.getControlByMatch("ChangeOrientation")==null){this.addControl(new Urbex.Control.ChangeOrientation())
}if(Urbex.Control.ChangeView2&&this.getControlByMatch("ChangeView")==null&&this.getControlByMatch("ChangeView2")==null){this.addControl(new Urbex.Control.ChangeView2())}var d;if(Urbex.Control.ZoomIn&&this.getControlByMatch("ZoomIn")==null){d=new Urbex.Control.ZoomIn();this.addControl(d)}else{d=this.getControlByMatch("ZoomIn")}var a;if(Urbex.Control.ZoomOut&&this.getControlByMatch("ZoomOut")==null){a=new Urbex.Control.ZoomOut();this.addControl(a)}else{a=this.getControlByMatch("ZoomOut")}if(Urbex.Control.ZoomBar&&this.getControlByMatch("ZoomBar")==null){var c=new Urbex.Control.ZoomBar();c.controlZoomIn=d;c.controlZoomOut=a;this.addControl(c)}else{c=this.getControlByMatch("ZoomBar")}case"lite":if(Urbex.Control.Navigation&&this.getControlByMatch("Navigation")==null){this.addControl(new Urbex.Control.Navigation())}if(Urbex.Control.ArgParser&&this.getControlByMatch("ArgParser")==null){this.addControl(new Urbex.Control.ArgParser())}if(Urbex.Control.Attribution&&this.getControlByMatch("Attribution")==null){this.addControl(new Urbex.Control.Attribution())
}}this.firstcontrol=false},getControlByMatch:function(b){var e=this.controls;for(var c=0;c<e.length;c++){var d=e[c].id;if(d.toUpperCase().indexOf(b.toUpperCase())!=-1){var a=this.getControl(d);if(a!=null){return a}}}},setView:function(a,k,c,n,m){var o=this;var l=function(){o.setView(a,k,c,n,m)};if(!this.sleepWhileRemoteRequest(l)){return}var d={};if(k==null){k=this.activeView}if(c==null){c=this.orientation;if(c==null){c="ORTHO"}}d.view=k;d.orientation=c;d.zoom=n;d.center=(a!=null)?a:this.center;this.cleanMap();this.loadExtent(k);for(var f=0;f<this.layers.length;f++){if(this.layers[f].CLASS_NAME=="Urbex.Layer.Overlay"){this.layers[f].maxExtent=this.maxExtent}}if((this.activeView=="OBLIQUE"&&a==null)||m){var g=m?a:d.center;if(g==null){g=this.center}var e=g.x+","+-g.y;if(this.$$$_mouse_wheel_xy_fromOblique){e+=","+(g.x+(this.$$$_mouse_wheel_xy_fromOblique.x-this.size.w/2)*this.resolution)+","+(-g.y+(this.$$$_mouse_wheel_xy_fromOblique.y-this.size.h/2)*this.resolution)}this.requestPointsToSetView(e,"TOWORLD",d)
}else{var b=Urbex.Util.createUniqueID("RequestPointsToSetViewScr");this.responsePointsToSetView(b,d)}},pan:function(d,c,e){if(!e){e={}}Urbex.Util.applyDefaults(e,{animate:true,dragging:false});var f=this.getViewPortPxFromLonLat(this.getCenter());var b=f.add(d,c);if(!e.dragging||!b.equals(f)){var a=this.getLonLatFromViewPortPx(b);if(e.animate){this.panTo(a)}else{this.setCenter(a,null,e.dragging)}}},panTo:function(b){if(this.panMethod&&this.getExtent().containsLonLat(b)){if(!this.panTween){this.panTween=new Urbex.Tween(this.panMethod)}var a=this.getCenter();var d={x:a.x,y:a.y};var c={x:b.x,y:b.y};this.panTween.start(d,c,50,{callbacks:{start:Urbex.Function.bind(function(e){this.events.triggerEvent("movestart")},this),eachStep:Urbex.Function.bind(function(e){e=new Urbex.XY(e.x,e.y);this.moveTo(e,this.zoom,{dragging:true,noEvent:true})},this),done:Urbex.Function.bind(function(n){n=new Urbex.XY(n.x,n.y);this.moveTo(n,this.zoom,{noEvent:true});var g=this.getExtent();if(this.activeView=="ORTHO"){var m=this.getCenter();
this.events.triggerEvent("moveend",{ulx:g.left,uly:g.top,urx:g.right,ury:g.top,llx:g.left,lly:g.bottom,lrx:g.right,lry:g.bottom,x:m.x,y:m.y})}else{if(this.activeView=="OBLIQUE"){var k=this.getCenter();var o=this.affineTransform.transformFromPixelToWorld(new Urbex.Pixel(g.left,g.top));var f=this.affineTransform.transformFromPixelToWorld(new Urbex.Pixel(g.right,g.top));var p=this.affineTransform.transformFromPixelToWorld(new Urbex.Pixel(g.left,g.bottom));var l=this.affineTransform.transformFromPixelToWorld(new Urbex.Pixel(g.right,g.bottom));var e=this.affineTransform.transformFromPixelToWorld(new Urbex.Pixel(k.x,k.y));this.events.triggerEvent("moveend",{ulx:o[0],uly:o[1],urx:f[0],ury:f[1],llx:p[0],lly:p[1],lrx:l[0],lry:l[1],x:e[0],y:e[1]})}}},this)}})}else{this.setCenter(b)}},setCenter:function(c,a,b,d){this.moveTo(c,a,{dragging:b,forceZoomChange:d,caller:"setCenter"})},dz:0,maximumDigitalZoom:2,setMaximumDigitalZoom:function(a){if(this.activeView=="ORTHO"){this.maximumDigitalZoom=a}},getMaximumDigitalZoom:function(){return this.maximumDigitalZoom
},moveTo:function(p,a,f){if((this.intelligentMove!=null)&&(this.intelligentMove(p,a)==false)){return}if(!this.baseLayer){return}var s=0;if(a){if(this.activeView=="OBLIQUE"&&a>this.numZoomLevels-this.maximumDigitalZoom){s=a-(this.numZoomLevels-this.maximumDigitalZoom)}else{s=0}}else{s=this.dz}if(this.activeView=="OBLIQUE"){this.tileSize=new Urbex.Size(Urbex.MapBase.TILE_WIDTH*Math.pow(2,s),Urbex.MapBase.TILE_HEIGHT*Math.pow(2,s))}else{this.tileSize=new Urbex.Size(this.tileSize.w*Math.pow(2,s),this.tileSize.h*Math.pow(2,s))}this.baseLayer.tileSize=this.tileSize;this.baseLayer.imageSize=this.tileSize;for(var x=0;x<this.layers.length;x++){if(this.layers[x].CLASS_NAME=="Urbex.Layer.Overlay"){this.layers[x].tileSize=this.tileSize;this.layers[x].imageSize=this.tileSize}}if(!f){f={}}var v=f.dragging;var q=f.forceZoomChange;var c=f.noEvent;if(this.panTween&&f.caller=="setCenter"){this.panTween.stop()}if(!this.center&&!this.isValidLonLat(p)){p=this.maxExtent.getCenterLonLat()}if(this.restrictedExtent!=null){if(p==null){p=this.getCenter()
}if(a==null){a=this.getZoom()}var w=this.getResolutionForZoom(a);var t=this.calculateBounds(p,w);if(!this.restrictedExtent.containsBounds(t)){var z=this.restrictedExtent.getCenterLonLat();if(t.getWidth()>this.restrictedExtent.getWidth()){p=new Urbex.XY(z.x,p.y)}else{if(t.left<this.restrictedExtent.left){p=p.add(this.restrictedExtent.left-t.left,0)}else{if(t.right>this.restrictedExtent.right){p=p.add(this.restrictedExtent.right-t.right,0)}}}if(t.getHeight()>this.restrictedExtent.getHeight()){p=new Urbex.XY(p.x,z.y)}else{if(t.bottom<this.restrictedExtent.bottom){p=p.add(0,this.restrictedExtent.bottom-t.bottom)}else{if(t.top>this.restrictedExtent.top){p=p.add(0,this.restrictedExtent.top-t.top)}}}}}var r=q||((this.isValidZoomLevel(a))&&(a!=this.getZoom()))||(this.dz!=s);this.dz=s;var o=(this.isValidLonLat(p))&&(!p.equals(this.center));if(r||o||!v){if(!this.dragging&&!c){this.events.triggerEvent("movestart")}if(o){if((!r)&&(this.center)){this.centerLayerContainer(p)}this.center=p.clone()}if((r)||(this.layerContainerOrigin==null)){this.layerContainerOrigin=this.center.clone();
this.layerContainerDiv.style.left="0px";this.layerContainerDiv.style.top="0px"}if(r){this.zoom=a;this.resolution=this.getResolutionForZoom(a);this.viewRequestID++}var m=this.getExtent();this.baseLayer.moveTo(m,r,v);m=this.baseLayer.getExtent();for(var x=0;x<this.layers.length;x++){var A=this.layers[x];if(!A.isBaseLayer){var b=A.calculateInRange();if(A.inRange!=b){A.inRange=b;if(!b){A.display(false)}this.events.triggerEvent("changelayer",{layer:A,property:"visibility"})}if(b&&A.visibility){A.moveTo(m,r,v)}}}if(r){for(var x=0;x<this.popups.length;x++){this.popups[x].updatePosition()}if(this.measureObj!=null){for(var x=0;x<this.measureObj.measurePopups.length;x++){if(this.activeView=="ORTHO"){this.measureObj.measurePopups[x].div.style.display=""}this.measureObj.measurePopups[x].updatePosition()}}}var u=this.getExtent();if(this.activeView=="ORTHO"){var y=this.getCenter();this.events.triggerEvent("extentchanged",{ulx:u.left,uly:u.top,urx:u.right,ury:u.top,llx:u.left,lly:u.bottom,lrx:u.right,lry:u.bottom,x:y.x,y:y.y})
}else{if(this.activeView=="OBLIQUE"){var g=this.getCenter();var l=this.affineTransform.transformFromPixelToWorld(new Urbex.Pixel(u.left,u.top));var e=this.affineTransform.transformFromPixelToWorld(new Urbex.Pixel(u.right,u.top));var k=this.affineTransform.transformFromPixelToWorld(new Urbex.Pixel(u.left,u.bottom));var d=this.affineTransform.transformFromPixelToWorld(new Urbex.Pixel(u.right,u.bottom));var n=this.affineTransform.transformFromPixelToWorld(new Urbex.Pixel(g.x,g.y));this.events.triggerEvent("extentchanged",{ulx:l[0],uly:l[1],urx:e[0],ury:e[1],llx:k[0],lly:k[1],lrx:d[0],lry:d[1],x:n[0],y:n[1]})}}this.events.triggerEvent("move");if(r){this.events.triggerEvent("zoomend")}}if(!v&&!c){var u=this.getExtent();if(this.activeView=="ORTHO"){var y=this.getCenter();this.events.triggerEvent("moveend",{ulx:u.left,uly:u.top,urx:u.right,ury:u.top,llx:u.left,lly:u.bottom,lrx:u.right,lry:u.bottom,x:y.x,y:y.y})}else{if(this.activeView=="OBLIQUE"){var g=this.getCenter();var l=this.affineTransform.transformFromPixelToWorld(new Urbex.Pixel(u.left,u.top));
var e=this.affineTransform.transformFromPixelToWorld(new Urbex.Pixel(u.right,u.top));var k=this.affineTransform.transformFromPixelToWorld(new Urbex.Pixel(u.left,u.bottom));var d=this.affineTransform.transformFromPixelToWorld(new Urbex.Pixel(u.right,u.bottom));var n=this.affineTransform.transformFromPixelToWorld(new Urbex.Pixel(g.x,g.y));this.events.triggerEvent("moveend",{ulx:l[0],uly:l[1],urx:e[0],ury:e[1],llx:k[0],lly:k[1],lrx:d[0],lry:d[1],x:n[0],y:n[1]})}}}this.dragging=!!v;this.updateView()},updateView:function(){if(this.activeView=="OBLIQUE"&&!this.dragging&&!this.multiObliqueMode){var x=this.center.x;var y=-this.center.y;var x1=0+((this.wOblique*10)/100);var x2=this.wOblique-((this.wOblique*10)/100);var y1=0+((this.hOblique*10)/100);var y2=this.hOblique-((this.hOblique*10)/100);if(((x>=x2)||(x<=x1)||(y>=y2)||(y<=y1))&&(Urbex.Map.UpdateObliqueView==true)){if(this.$$$_mouse_xy==null&&this.$$$_mouse_wheel_xy==null){Urbex.Map.UpdateObliqueView=false;this.getWorldCenter(this.updateViewOrientation)
}else{Urbex.Map.UpdateObliqueView=false;var mouse_xy=this.$$$_mouse_xy||this.$$$_mouse_wheel_xy_fromOrtho;var coords=this.getLonLatFromViewPortPx(mouse_xy);var self=this;var requestOblique=null;if(navigator.appName=="Microsoft Internet Explorer"){this.$$$_updateViewOptions=null}var response0=function(id){var res=eval("F"+id+"()");self.deleteOScript(id);if(res.indexOf("ERROR")!=-1){Urbex.Map.UpdateObliqueView=true;if(self.$$$_ortho_to_oblique){Urbex.Map.UpdateObliqueView=true;self.setView(self.center,"ORTHO",self.orientation,this.zoom+15)}return}var points=res.split(",");if(points!=null){var worldX=parseFloat(points[0]).toFixed(5);var worldY=parseFloat(points[1]).toFixed(5);var worldCenter=new Urbex.XY(worldX,worldY);options={mouse_xy:mouse_xy,mouse_coord:coords,mouse_world:worldCenter};if(navigator.appName=="Microsoft Internet Explorer"){self.$$$_updateViewOptions={mouse_xy:mouse_xy,mouse_coord:coords,mouse_world:worldCenter}}request0(self.center.x+","+-self.center.y,"TOWORLD",response1)
}};var response1=function(id){var res=eval("F"+id+"()");self.deleteOScript(id);if(res.indexOf("ERROR")!=-1){Urbex.Map.UpdateObliqueView=true;if(self.$$$_ortho_to_oblique){Urbex.Map.UpdateObliqueView=true;self.setView(self.center,"ORTHO",self.orientation,this.zoom+15)}return}var points=res.split(",");if(points!=null){var worldX=parseFloat(points[0]).toFixed(5);var worldY=parseFloat(points[1]).toFixed(5);var worldCenter=new Urbex.XY(worldX,worldY);Urbex.Map.UpdateObliqueView=false;if(navigator.appName=="Microsoft Internet Explorer"){self.requestOblique(worldCenter,self.orientation,self.$$$_updateViewOptions)}else{self.requestOblique(worldCenter,self.orientation,options)}}};var request0=function(coords,type,callback){var id=Urbex.Util.createUniqueID("Map_UpdateView_0");var urlParams="TransformPoints?usertoken="+self.usertoken+"&srs="+self.projection+"&id="+self.idOblique+"&points="+coords+"&function=F"+id+"&type="+type+"&format=js&dtm=yes";var url=Urbex.Proxy.getUrl(self,Urbex.Map.SERVER,Urbex.Proxy.TRANSFORM_POINTS,urlParams);
oScript=self.createOScript(id,url);if(navigator.appName=="Microsoft Internet Explorer"){var busyWaiting=function(){if(oScript.readyState=="loaded"){callback(id)}else{window.setTimeout(arguments.callee,50)}};window.setTimeout(busyWaiting,50)}else{oScript.addEventListener("load",function(event){callback(id)},false)}};request0((coords.x)+","+(-coords.y),"TOWORLD",response0)}}}this.$$$_mouse_xy=null},updateViewOrientation:function(c,a){var b={};b.orientation=c.orientation;b.center=a;b.zoom=c.getZoom();c.setObliqueOrientation(null,null,null,b)},requestPointsToSetView:function(f,d,b){var k=Urbex.Util.createUniqueID("RequestPointsToSetViewScr");var a="TransformPoints?usertoken="+this.usertoken+"&srs="+this.projection+"&id="+this.idOblique+"&points="+f+"&function=F"+k+"&type="+d+"&format=js&dtm=yes";var c=Urbex.Proxy.getUrl(this,Urbex.Map.SERVER,Urbex.Proxy.TRANSFORM_POINTS,a);var e=this.createOScript(k,c);var g=this;if(navigator.appName=="Microsoft Internet Explorer"){if((e.readyState=="loaded")||(e.readyState=="complete")){g.responsePointsToSetView(k,b);
e.onreadystatechange=null}else{e.onreadystatechange=function(){if((e.readyState=="loaded")||(e.readyState=="complete")){g.responsePointsToSetView(k,b);e.onreadystatechange=null}}}}else{e.addEventListener("load",function(l){g.responsePointsToSetView(k,b)},false)}},$$$_ortho_to_oblique:false,responsePointsToSetView:function(id,targetOptions){if(targetOptions.view.toUpperCase()=="ORTHO"){this.numZoomLevels=Urbex.Layer.Ortho.ProyectionInfo[this.projection].ZoomLevels;this.maxResolution=Urbex.Layer.Ortho.ProyectionInfo[this.projection].ResolutionL0*Math.pow(2,Urbex.Layer.Ortho.ProyectionInfo[this.projection].ZoomL0);if(targetOptions.zoom==null){if(this.activeView="ORTHO"){targetOptions.zoom=this.zoom?this.zoom:this.numZoomLevels-3}else{targetOptions.zoom=this.zoom?this.zoom+15:this.numZoomLevels-3}}if(targetOptions.zoom>this.numZoomLevels){targetOptions.zoom=this.numZoomLevels}if(targetOptions.zoom<1){targetOptions.zoom=1}if(this.activeView=="OBLIQUE"&&!this.$$$_ortho_to_oblique){var res;try{res=eval("F"+id+"()")
}catch(err){res="NOTDEFINED"}if((res.indexOf("ERROR")==-1)&&(res.indexOf("NOTDEFINED")==-1)){var points=res.split(",");if(points!=null){if(points.length==2){targetOptions.center=targetOptions.worldCenter=new Urbex.XY(parseFloat(points[0]),parseFloat(points[1]))}else{var resolution=Urbex.Layer.Ortho.ProyectionInfo[this.projection].ResolutionL0*Math.pow(2,Urbex.Layer.Ortho.ProyectionInfo[this.projection].ZoomL0-targetOptions.zoom);if(targetOptions.orientation=="NORTH"){targetOptions.center=targetOptions.worldCenter=new Urbex.XY((parseFloat(points[2])-(this.$$$_mouse_wheel_xy_fromOblique.x-this.size.w/2)*resolution),(parseFloat(points[3])+(this.$$$_mouse_wheel_xy_fromOblique.y-this.size.h/2)*resolution))}else{if(targetOptions.orientation=="SOUTH"){targetOptions.center=targetOptions.worldCenter=new Urbex.XY((parseFloat(points[2])+(this.$$$_mouse_wheel_xy_fromOblique.x-this.size.w/2)*resolution),(parseFloat(points[3])-(this.$$$_mouse_wheel_xy_fromOblique.y-this.size.h/2)*resolution))}else{if(targetOptions.orientation=="EAST"){targetOptions.center=targetOptions.worldCenter=new Urbex.XY((parseFloat(points[2])+(this.$$$_mouse_wheel_xy_fromOblique.y-this.size.h/2)*resolution),(parseFloat(points[3])+(this.$$$_mouse_wheel_xy_fromOblique.x-this.size.w/2)*resolution))
}else{if(targetOptions.orientation=="WEST"){targetOptions.center=targetOptions.worldCenter=new Urbex.XY((parseFloat(points[2])-(this.$$$_mouse_wheel_xy_fromOblique.y-this.size.h/2)*resolution),(parseFloat(points[3])-(this.$$$_mouse_wheel_xy_fromOblique.x-this.size.w/2)*resolution))}}}}this.$$$_mouse_wheel_xy_fromOblique=null}}}}else{if(targetOptions.zoom==null){targetOptions.zoom=this.zoom}}this.$$$_ortho_to_oblique=false;targetOptions.activeView="ORTHO";this.setOrthoOrientation(null,null,null,targetOptions)}else{if(targetOptions.view.toUpperCase()=="OBLIQUE"){if((targetOptions.orientation==null)||(targetOptions.orientation.toUpperCase()=="ORTHO")){targetOptions.orientation="NORTH"}targetOptions.orientation=targetOptions.orientation.toUpperCase();targetOptions.numZoomLevels=4+this.maximumDigitalZoom;targetOptions.maxResolution=16;if(this.activeView=="ORTHO"){this.$$$_ortho_to_oblique=true;targetOptions.worldCenter=targetOptions.center;targetOptions.worldZoom=targetOptions.zoom}else{var res;
try{res=eval("F"+id+"()")}catch(err){res="NOTDEFINED"}if((res.indexOf("ERROR")==-1)&&(res.indexOf("NOTDEFINED")==-1)){var points=res.split(",");if(points!=null){if(points.length==2){targetOptions.center=targetOptions.worldCenter=new Urbex.XY(parseFloat(points[0]),parseFloat(points[1]))}else{var resolution=Urbex.Layer.Ortho.ProyectionInfo[this.projection].ResolutionL0*Math.pow(2,Urbex.Layer.Ortho.ProyectionInfo[this.projection].ZoomL0-targetOptions.zoom);if(targetOptions.orientation=="NORTH"){targetOptions.center=targetOptions.worldCenter=new Urbex.XY((parseFloat(points[2])-(this.$$$_mouse_wheel_xy_fromOblique.x-this.size.w/2)*resolution),(parseFloat(points[3])+(this.$$$_mouse_wheel_xy_fromOblique.y-this.size.h/2)*resolution))}else{if(targetOptions.orientation=="SOUTH"){targetOptions.center=targetOptions.worldCenter=new Urbex.XY((parseFloat(points[2])+(this.$$$_mouse_wheel_xy_fromOblique.x-this.size.w/2)*resolution),(parseFloat(points[3])-(this.$$$_mouse_wheel_xy_fromOblique.y-this.size.h/2)*resolution))
}else{if(targetOptions.orientation=="EAST"){targetOptions.center=targetOptions.worldCenter=new Urbex.XY((parseFloat(points[2])+(this.$$$_mouse_wheel_xy_fromOblique.y-this.size.h/2)*resolution),(parseFloat(points[3])+(this.$$$_mouse_wheel_xy_fromOblique.x-this.size.w/2)*resolution))}else{if(targetOptions.orientation=="WEST"){targetOptions.center=targetOptions.worldCenter=new Urbex.XY((parseFloat(points[2])-(this.$$$_mouse_wheel_xy_fromOblique.y-this.size.h/2)*resolution),(parseFloat(points[3])-(this.$$$_mouse_wheel_xy_fromOblique.x-this.size.w/2)*resolution))}}}}this.$$$_mouse_wheel_xy_fromOblique=null}}}this.$$$_ortho_to_oblique=false}if(targetOptions.zoom==null){if(this.activeView="OBLIQUE"){targetOptions.zoom=this.zoom?this.zoom:targetOptions.numZoomLevels-1}else{targetOptions.zoom=this.zoom?this.zoom-15:targetOptions.numZoomLevels-1}}if(targetOptions.zoom>targetOptions.numZoomLevels){targetOptions.zoom=targetOptions.numZoomLevels}if(targetOptions.zoom<1){targetOptions.zoom=1}if(this.$$$_mouse_wheel_xy_fromOrtho){var mWorld=null;
if(targetOptions.orientation=="NORTH"){mWorld=new Urbex.XY((targetOptions.center.x+(this.$$$_mouse_wheel_xy_fromOrtho.x-this.size.w/2)*this.resolution),(targetOptions.center.y-(this.$$$_mouse_wheel_xy_fromOrtho.y-this.size.h/2)*this.resolution))}else{if(targetOptions.orientation=="SOUTH"){mWorld=new Urbex.XY((targetOptions.center.x-(this.$$$_mouse_wheel_xy_fromOrtho.x-this.size.w/2)*this.resolution),(targetOptions.center.y+(this.$$$_mouse_wheel_xy_fromOrtho.y-this.size.h/2)*this.resolution))}else{if(targetOptions.orientation=="EAST"){mWorld=new Urbex.XY((targetOptions.center.x-(this.$$$_mouse_wheel_xy_fromOrtho.y-this.size.h/2)*this.resolution),(targetOptions.center.y-(this.$$$_mouse_wheel_xy_fromOrtho.x-this.size.w/2)*this.resolution))}else{if(targetOptions.orientation=="WEST"){mWorld=new Urbex.XY((targetOptions.center.x+(this.$$$_mouse_wheel_xy_fromOrtho.y-this.size.h/2)*this.resolution),(targetOptions.center.y+(this.$$$_mouse_wheel_xy_fromOrtho.x-this.size.w/2)*this.resolution))}}}}this.$$$_updateViewOptions={mouse_world:mWorld,mouse_xy:this.$$$_mouse_wheel_xy_fromOrtho};
this.$$$_mouse_wheel_xy_fromOrtho=null}else{if(this.$$$_mouse_dblclick_xy_fromOrtho){targetOptions.center=targetOptions.worldCenter=this.$$$_mouse_dblclick_xy_fromOrtho;this.$$$_mouse_dblclick_xy_fromOrtho=null}}targetOptions.activeView="OBLIQUE";this.setObliqueOrientation(null,null,null,targetOptions,{force:true})}}this.activeControls(targetOptions.view);if(this.measureObj!=null){this.measureObj.offMeasureControls()}this.deleteOScript(id);this.events.triggerEvent("viewchanged",{view:targetOptions.view})},setOrthoOrientation:function(c,a,d,b){if(!b){b={}}if(!b.orientation){b.orientation=c?c:this.orientation}if(!b.center){b.center=a}if(!b.zoom){b.zoom=d?d:this.zoom}if(b.zoom!=null){Urbex.Map.Zoom=b.zoom}if(b.center==null){this.getWorldCenter(this.setOrthoOrientationCenter,b)}else{this.setOrthoOrientationCenter(this,b.center,b.zoom,b)}},setOrthoOrientationCenter:function(f,a,d,b){this.tileSize=new Urbex.Size(Urbex.MapBase.TILE_WIDTH*Math.pow(2,1-this.scale),Urbex.MapBase.TILE_HEIGHT*Math.pow(2,1-this.scale));
var e=this.baseLayer;f=Urbex.Util.extend(f,b);var c=new Urbex.Layer.Ortho(f.orientation,Urbex.Map.TILE_SERVERS,{userToken:f.usertoken,Srs:f.projection,layer:f.orientation},{transitionEffect:"resize"});f.idOblique=null;f.addLayer(c);if(e!=null){e.destroy()}f.setBaseLayer(c);f.events.triggerEvent("orientationchanged",{orientation:f.orientation})},setObliqueOrientation:function(c,a,f,b,d){if(b==null){b={}}var e=this.activeView;if(b.activeView){e=b.activeView}if(e!="OBLIQUE"){return}if(b.orientation==null){b.orientation=c!=null?c:this.orientation}if(b.zoom==null){b.zoom=f?f:this.zoom}if(b.center==null){b.center=a}if(b.center==null){this.getWorldCenter(this.setObliqueOrientationCenter,b)}else{this.setObliqueOrientationCenter(this,b.center,d,b)}},setObliqueOrientationCenter:function(d,a,c,b){this.tileSize=new Urbex.Size(Urbex.MapBase.TILE_WIDTH,Urbex.MapBase.TILE_HEIGHT);d.requestOblique(a,b.orientation,c,b)},requestOblique:function(a,e,l,f){if(!f){f={}}f.center=a;f.orientation=e;var d=Urbex.Util.createUniqueID("RequestObliqueScr");
var g="FindOblique?usertoken="+this.usertoken+"&x="+a.x+"&y="+a.y+"&srs="+this.projection+"&orient="+e.substring(0,1)+"&time="+this.TIME+"&format=js&function=F"+d;var c=Urbex.Proxy.getUrl(this,Urbex.Map.SERVER,Urbex.Proxy.FIND_OBLIQUE,g);var k=this.createOScript(d,c);var b=this;if(navigator.appName=="Microsoft Internet Explorer"){if((k.readyState=="loaded")||(k.readyState=="complete")){b.responseOblique(d,e,l,f);k.onreadystatechange=null}else{k.onreadystatechange=function(){if((k.readyState=="loaded")||(k.readyState=="complete")){b.responseOblique(d,e,l,f);k.onreadystatechange=null}}}}else{k.addEventListener("load",function(m){b.responseOblique(d,e,l,f)},false)}},responseOblique:function(id,orientation,options,targetOptions){var res=eval("F"+id+"()");this.deleteOScript(id);if(res.indexOf("ERROR")!=-1){Urbex.Map.UpdateObliqueView=true;if(this.$$$_ortho_to_oblique){Urbex.Map.UpdateObliqueView=true}if(this.activeView=="OBLIQUE"&&this.orientation==targetOptions.orientation){this.setView(targetOptions.center,"ORTHO","ORTHO",this.zoom+15)
}else{if(this.isIntelligent&&this.activeView=="ORTHO"){this.setView(this.center,"ORTHO","ORTHO",this.zoom)}else{this.setView()}}}else{var result=res.split(",");this.changeOrientation(orientation,result,options,targetOptions)}},changeOrientation:function(orientation,oblique,options,targetOptions){var continueLoad=true;var oldBaseLayer=this.baseLayer;var points=null;if(oblique!=null){var i=0;if((this.idOblique!=oblique[0]||(options&&options.force))&&oblique[0]!=null){Urbex.Util.extend(this,targetOptions);if((options&&!options.force)||this.$$$_updateViewOptions){var self=this;var response0=function(id){var res=eval("F"+id+"()");self.deleteOScript(id);if(res.indexOf("ERROR")!=-1){Urbex.Map.UpdateObliqueView=true;if(self.$$$_ortho_to_oblique){Urbex.Map.UpdateObliqueView=true;self.setView(self.center,"ORTHO","ORTHO",this.zoom+15)}return}var points=res.split(",");if(points!=null){var mouse_coord=new Urbex.XY(parseFloat(points[0]).toFixed(5),-parseFloat(points[1]).toFixed(5));var resolution=self.getResolution();
if(!resolution){resolution=Math.pow(2,self.zoom)}if(!options.mouse_world&&!options.mouse_xy){options=self.$$$_updateViewOptions}self.$$$_updateViewOptions=null;mouse_coord.x-=(options.mouse_xy.x-self.size.w/2)*resolution;mouse_coord.y+=(options.mouse_xy.y-self.size.h/2)*resolution;self.idOblique=oblique[0];self.center=mouse_coord;self.wOblique=oblique[3];self.hOblique=oblique[4];points=[];points[0]=oblique[5];points[1]=oblique[6];points[2]=oblique[7];points[3]=oblique[8];points[4]=oblique[9];points[5]=oblique[10];points[6]=oblique[11];points[7]=oblique[12];var obliquelayer=new Urbex.Layer.Oblique(orientation,Urbex.Map.TILE_SERVERS,{userToken:self.usertoken,id:self.idOblique},{transitionEffect:"resize"});self.addLayer(obliquelayer);if(oldBaseLayer!=null){oldBaseLayer.destroy()}self.setBaseLayer(obliquelayer);self.affineTransform.setValues(parseFloat(points[0]),parseFloat(points[1]),parseFloat(points[2]),parseFloat(points[3]),parseFloat(points[4]),parseFloat(points[5]),parseFloat(points[6]),parseFloat(points[7]),parseFloat(self.wOblique),parseFloat(self.hOblique));
self.$$$_ortho_to_oblique=false;self.events.triggerEvent("obliqueloaded",{id:self.idOblique,width:self.wOblique,height:self.hOblique,center:self.center,ulx:parseFloat(points[0]),uly:parseFloat(points[1]),urx:parseFloat(points[2]),ury:parseFloat(points[3]),llx:parseFloat(points[4]),lly:parseFloat(points[5]),lrx:parseFloat(points[6]),lry:parseFloat(points[7])});self.events.triggerEvent("orientationchanged",{orientation:orientation});Urbex.Map.UpdateObliqueView=true}};var request0=function(coords,type,callback){var id=Urbex.Util.createUniqueID("Map_ChangeOrientation_0");var urlParams="TransformPoints?usertoken="+self.usertoken+"&srs="+self.projection+"&id="+oblique[0]+"&points="+coords+"&function=F"+id+"&type="+type+"&format=js&dtm=yes";var url=Urbex.Proxy.getUrl(self,Urbex.Map.SERVER,Urbex.Proxy.TRANSFORM_POINTS,urlParams);oScript=self.createOScript(id,url);var result=[];if(navigator.appName=="Microsoft Internet Explorer"){if(oScript.readyState=="loaded"){response0(id);oScript.onreadystatechange=null
}else{oScript.onreadystatechange=function(){if(oScript.readyState=="loaded"){response0(id);oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(event){callback(id)},false)}};if(!options.mouse_world&&!options.mouse_xy){options=this.$$$_updateViewOptions}request0((options.mouse_world.x)+","+(options.mouse_world.y),"TOOBLIQUE",response0);continueLoad=false}else{this.idOblique=oblique[i];this.center=new Urbex.XY(oblique[i+1],-oblique[i+2]);this.wOblique=oblique[i+3];this.hOblique=oblique[i+4];points=[];points[0]=oblique[i+5];points[1]=oblique[i+6];points[2]=oblique[i+7];points[3]=oblique[i+8];points[4]=oblique[i+9];points[5]=oblique[i+10];points[6]=oblique[i+11];points[7]=oblique[i+12]}}else{continueLoad=false}if(continueLoad){var obliquelayer=new Urbex.Layer.Oblique(orientation,Urbex.Map.TILE_SERVERS,{userToken:this.usertoken,id:this.idOblique},{transitionEffect:"resize"});this.addLayer(obliquelayer);this.affineTransform.setValues(parseFloat(points[0]),parseFloat(points[1]),parseFloat(points[2]),parseFloat(points[3]),parseFloat(points[4]),parseFloat(points[5]),parseFloat(points[6]),parseFloat(points[7]),this.wOblique,this.hOblique);
this.events.triggerEvent("obliqueloaded",{id:this.idOblique,width:this.wOblique,height:this.hOblique,center:this.center,ulx:parseFloat(points[0]),uly:parseFloat(points[1]),urx:parseFloat(points[2]),ury:parseFloat(points[3]),llx:parseFloat(points[4]),lly:parseFloat(points[5]),lrx:parseFloat(points[6]),lry:parseFloat(points[7])});if(points!=null){this.polyOblique=Urbex.Util.transformObliquePolygon(points);if(oldBaseLayer!=null){oldBaseLayer.destroy()}this.setBaseLayer(obliquelayer);this.events.triggerEvent("orientationchanged",{orientation:orientation})}}Urbex.Map.UpdateObliqueView=true}this.$$$_ortho_to_oblique=false},requestTransform:function(points,fromEPSG,toEPSG,listener){var id=Urbex.Util.createUniqueID("RequestTransformSrc");var urlParams="ProjectCoordinates?usertoken="+this.usertoken+"&points="+points+"&srs1="+fromEPSG+"&srs2="+toEPSG+"&function=F"+id+"&format=js";var url=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.PROJECT_COORDINATES,urlParams);var map=this;var oScript=map.createOScript(id,url);
var res;var result=[];if(navigator.appName=="Microsoft Internet Explorer"){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");result=res.split(",");map.deleteOScript(id);if(result!=null){listener(map,result)}oScript.onreadystatechange=null}else{oScript.onreadystatechange=function(){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");result=res.split(",");map.deleteOScript(id);if(result!=null){listener(map,result)}oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(event){res=eval("F"+id+"()");result=res.split(",");map.deleteOScript(id);if(result!=null){listener(map,result)}},false)}},getWorldZoom:function(){if(this.activeView=="ORTHO"){return this.zoom}else{if(this.activeView=="OBLIQUE"){return this.zoom+15}}},getWorldCenter:function(d,b){var a=this.center;if(b){a=b.center!=null?b.center:a}else{b={}}b.center=a;if(this.activeView=="ORTHO"){d(this,b.center,b.zoom,b)}else{if(this.activeView=="OBLIQUE"){var c=a.x+","+-a.y;
this.requestPointsToGetWorldCenter(c,"TOWORLD",d,b)}}},requestPointsToGetWorldCenter:function(coords,type,listener,targetOptions){var id=Urbex.Util.createUniqueID("RequestPointsToGetWorldCenterScr");var urlParams="TransformPoints?usertoken="+this.usertoken+"&srs="+this.projection+"&id="+this.idOblique+"&points="+coords+"&function=F"+id+"&type="+type+"&format=js&dtm=yes";var url=Urbex.Proxy.getUrl(this,Urbex.Map.SERVER,Urbex.Proxy.TRANSFORM_POINTS,urlParams);var oScript=this.createOScript(id,url);var map=this;var res;if(navigator.appName=="Microsoft Internet Explorer"){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");points=res.split(",");map.deleteOScript(id);if(points!=null){targetOptions.worldCenter=new Urbex.XY(points[0],points[1]);listener(map,targetOptions.worldCenter,null,targetOptions)}oScript.onreadystatechange=null}else{oScript.onreadystatechange=function(){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");
points=res.split(",");map.deleteOScript(id);if(points!=null){targetOptions.worldCenter=new Urbex.XY(points[0],points[1]);listener(map,targetOptions.worldCenter,null,targetOptions)}oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(event){res=eval("F"+id+"()");points=res.split(",");map.deleteOScript(id);if(points!=null){targetOptions.worldCenter=new Urbex.XY(points[0],points[1]);listener(map,targetOptions.worldCenter,null,targetOptions)}},false)}},setWorldCenter:function(a,c){if(c==null){c=this.getWorldZoom()}if(this.activeView=="OBLIQUE"){c=c-15}if(c<1){c=1}if(c>this.numZoomLevels){c=this.numZoomLevels}if(a==null){this.zoomTo(c)}else{var b={};b.center=a;b.zoom=c;b.orientation=this.orientation;if(this.activeView=="ORTHO"){this.setCenter(a,c,null,true)}else{this.setObliqueOrientation(null,null,null,b,{force:true})}}},getMap:function(){if(this.activeView=="ORTHO"){this.getMapCenter(this,this.center)}else{if(this.activeView=="OBLIQUE"){this.getWorldCenter(this.getMapCenter)
}}},getMapCenter:function(g,e){var c=g.calculateBounds(e,g.getResolution());var a=c.left+","+c.bottom+","+c.right+","+c.top;var d=g.getCurrentSize();var f=5-g.zoom;if(f<1){f=1}var b=g.baseLayer.name;if(g.activeView=="ORTHO"){g.requestGetMap(a,d,b)}else{if(g.activeView=="OBLIQUE"){g.requestExtractOblique(e,f,d,b.substring(0,1))}}},requestGetMap:function(e,d,c){var a="GetMap?usertoken="+this.usertoken+"&srs="+this.projection+"&height="+d.h+"&width="+d.w+"&layers="+c+"&time="+this.TIME+"&baselayer="+this.BASELAYER+"&bbox="+e+"&request=GetMap&version=1.1.1&format=image/jpeg&styles=";var b=Urbex.Proxy.getUrl(this,Urbex.Map.SERVER,Urbex.Proxy.GET_MAP,a);window.open(b)},requestExtractOblique:function(a,f,e,d){var b="ExtractOblique?usertoken="+this.usertoken+"&srs="+this.projection+"&height="+e.h+"&orient="+d+"&width="+e.w+"&x="+a.x+"&y="+a.y+"&zoom="+f;var c=Urbex.Proxy.getUrl(this,Urbex.Map.SERVER,Urbex.Proxy.EXTRACT_OBLIQUE,b);window.open(c)},getActiveView:function(){return this.activeView},getMeasurementObj:function(){if(this.measureObj==null){this.measureObj=new Urbex.Measures(this)
}return this.measureObj},getOrientation:function(){return this.orientation},addOverlay:function(b,a){this.addLayer(new Urbex.Layer.Overlay(b,a,this.baseLayer,this))},sleepWhileRemoteRequest:function(a){if(this.$$$_remote_request_count>0){setTimeout(a,100);return false}return true},$$$_remote_request_count:0,$$$_timeout_map:{},createOScript:function(f,b){this.$$$_remote_request_count++;var a=this;var e=function(){delete a.$$$_timeout_map[f];a.$$$_remote_request_count--};this.$$$_timeout_map[f]=setTimeout(e,10*1000);var d=document.getElementById(f);var c=document.getElementsByTagName("head").item(0);if(d){c.removeChild(d)}d=document.createElement("script");wholeurl=b;this.requestedServer=true;d.setAttribute("src",wholeurl);d.setAttribute("id",f);c.appendChild(d);return d},deleteOScript:function(c){var b=document.getElementById(c);var a=document.getElementsByTagName("head").item(0);if(b){a.removeChild(b)}b=null;a=null;if(typeof(this.$$$_timeout_map[c])!="undefined"){clearTimeout(this.$$$_timeout_map[c]);
this.$$$_remote_request_count--}},intelligentMove:function(a,c){var b=this.isIntelligent&&((this.maxZoom==null||this.maxZoom>16)&&(this.minObliqueZoom==null||this.minObliqueZoom<2));if(b==true&&c!=null){if(this.activeView=="ORTHO"&&this.orientation!="ORTHO"){if(c>16){this.$$$_mouse_wheel_xy_fromOrtho=this.$$$_mouse_wheel_xy;this.$$$_mouse_wheel_xy=null;this.setView(a,"OBLIQUE",this.orientation,c-15);return false}}if(this.activeView=="OBLIQUE"){if(c<2){this.$$$_mouse_wheel_xy_fromOblique=this.$$$_mouse_wheel_xy;this.$$$_mouse_wheel_xy=null;this.setView(a,"ORTHO",this.orientation,15+c,true);return false}}}this.$$$_mouse_wheel_xy=null;return true},setProjection:function(a){var b=function(l,e,d){var g=null;if(l.projection.match(/^EPSG:326\d{2}$/)){var m=parseInt(l.projection.substring(8));g=Urbex.Util.UtmToWGS84(e.x,e.y,m)}else{if(l.projection.match(/^EPSG:3785$/)){g=Urbex.Util.SphericalMercatorToWGS84(e.x,e.y)}else{return false}}var f=null;if(d.match(/^EPSG:326$/)){var m=Urbex.Util.getHuso(g[0]);
f=Urbex.Util.WGS84ToUtm(g[0],g[1],m);d+=m<10?"0"+m.toString():m.toString()}else{if(d.match(/^EPSG:326\d{2}$/)){var m=parseInt(d.substring(8));f=Urbex.Util.WGS84ToUtm(g[0],g[1],m)}else{if(d.match(/^EPSG:3785$/)){f=Urbex.Util.WGS84ToSphericalMercator(g[0],g[1])}else{return false}}}var k=l.getZoom();if(l.projection.match(/^EPSG:3785$/)&&d.match(/^EPSG:326\d{2}$/)){k--}else{if(l.projection.match(/^EPSG:326\d{2}$/)&&d.match(/^EPSG:3785$/)){k++}}l.projection=d;l.setCenter(new Urbex.XY(f[0],f[1]),k);return true};var c=function(e,d){b(e,d,a)};if(!Urbex.Layer.Ortho.ProyectionInfo[a]){alert("proyection not supported: "+a);return false}this.getWorldCenter(c);return true},CLASS_NAME:"Urbex.Map"});Urbex.Map.TILE_SERVERS=["www.blomurbex.com"];Urbex.Map.SERVER="www.blomurbex.com";Urbex.Map.VERSION="4.0";Urbex.Map.Zoom=17;Urbex.Map.UpdateObliqueView=true;document.oncontextmenu=function(c){var a=null;if(c==null){c=window.event}var b=c.target!=null?c.target:c.srcElement;if((b)&&(b.nodeType)){a=b.nodeType==1?b:b.parentNode
}if((a!=null)&&(a.map!=null)){return false}else{return true}};Urbex.Layer=Urbex.Class({id:null,name:null,div:null,opacity:null,EVENT_TYPES:["loadstart","loadend","loadcancel","visibilitychanged"],events:null,map:null,isBaseLayer:false,alpha:false,displayInLayerSwitcher:true,visibility:true,attribution:null,inRange:false,imageSize:null,imageOffset:null,options:null,eventListeners:null,gutter:0,projection:null,units:null,scales:null,resolutions:null,maxExtent:null,minExtent:null,maxResolution:null,minResolution:null,numZoomLevels:null,minScale:null,maxScale:null,displayOutsideMaxExtent:false,wrapDateLine:false,transitionEffect:null,SUPPORTED_TRANSITIONS:["resize"],lastView:null,initialize:function(b,a){this.addOptions(a);this.name=b;if(this.id==null){this.id=Urbex.Util.createUniqueID(this.CLASS_NAME+"_");this.div=Urbex.Util.createDiv(this.id);this.div.style.width="100%";this.div.style.height="100%";this.div.style.left="0px";this.div.style.top="0px";this.div.align="left";this.events=new Urbex.Events(this,this.div,this.EVENT_TYPES);
if(this.eventListeners instanceof Object){this.events.on(this.eventListeners)}}if(this.wrapDateLine){this.displayOutsideMaxExtent=true}},destroy:function(a){if(a==null){a=true}if(this.map!=null){this.map.removeLayer(this,a)}this.projection=null;this.map=null;this.name=null;this.div=null;this.options=null;if(this.events){if(this.eventListeners){this.events.un(this.eventListeners)}this.events.destroy()}this.eventListeners=null;this.events=null},clone:function(a){if(a==null){a=new Urbex.Layer(this.name,this.options)}Urbex.Util.applyDefaults(a,this);a.map=null;return a},setName:function(a){if(a!=this.name){this.name=a;if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"name"})}}},addOptions:function(a){if(this.options==null){this.options={}}Urbex.Util.extend(this.options,a);Urbex.Util.extend(this,a)},onMapResize:function(){},redraw:function(){var a=false;if(this.map){this.inRange=this.calculateInRange();var b=this.getExtent();if(b&&this.inRange&&this.visibility){this.moveTo(b,true,false);
a=true}}return a},moveTo:function(b,a,c){var d=this.visibility;if(!this.isBaseLayer){d=d&&this.inRange}this.display(d)},setMap:function(b){if(this.map==null){this.map=b;this.maxExtent=this.maxExtent||this.map.maxExtent;this.projection=this.projection||this.map.projection;if(this.projection&&typeof this.projection=="string"){this.projection=new Urbex.Projection(this.projection)}this.units=this.projection.getUnits()||this.units||this.map.units;this.initResolutions();if(!this.isBaseLayer){this.inRange=this.calculateInRange();var a=((this.visibility)&&(this.inRange));this.div.style.display=a?"":"none"}this.setTileSize();this.lastView=this.map.activeView}},removeMap:function(a){},getImageSize:function(){return(this.imageSize||this.tileSize)},setTileSize:function(a){var b=(a)?a:((this.tileSize)?this.tileSize:this.map.getTileSize());this.tileSize=b;if(this.gutter){this.imageOffset=new Urbex.Pixel(-this.gutter,-this.gutter);this.imageSize=new Urbex.Size(b.w+(2*this.gutter),b.h+(2*this.gutter))}},getVisibility:function(){return this.visibility
},setVisibility:function(a){if(a!=this.visibility){this.visibility=a;this.display(a);this.redraw();if(this.map!=null){this.map.events.triggerEvent("changelayer",{layer:this,property:"visibility"})}this.events.triggerEvent("visibilitychanged")}},display:function(a){var b=this.calculateInRange();if(a!=(this.div.style.display!="none")){this.div.style.display=(a&&b)?"block":"none"}},calculateInRange:function(){var b=false;if(this.map){var a=this.map.getResolution();b=((a>=this.minResolution)&&(a<=this.maxResolution))}return b},setIsBaseLayer:function(a){if(a!=this.isBaseLayer){this.isBaseLayer=a;if(this.map!=null){this.map.events.triggerEvent("changebaselayer",{layer:this})}}},initResolutions:function(){var m=new Array("projection","units","scales","resolutions","maxScale","minScale","maxResolution","minResolution","minExtent","maxExtent","numZoomLevels","maxZoomLevel");var c={};for(var d=0;d<m.length;d++){var o=m[d];c[o]=this.options[o]||this.map[o]}if(this.options.minScale!=null&&this.options.maxScale!=null&&this.options.scales==null){c.scales=null
}if(this.options.minResolution!=null&&this.options.maxResolution!=null&&this.options.resolutions==null){c.resolutions=null}if((!c.numZoomLevels)&&(c.maxZoomLevel)){c.numZoomLevels=c.maxZoomLevel+1}if((c.scales!=null)||(c.resolutions!=null)){if(c.scales!=null){c.resolutions=[];for(var d=0;d<c.scales.length;d++){var b=c.scales[d];c.resolutions[d]=Urbex.Util.getResolutionFromScale(b,c.units)}}c.numZoomLevels=c.resolutions.length}else{if(c.minScale){c.maxResolution=Urbex.Util.getResolutionFromScale(c.minScale,c.units)}else{if(c.maxResolution=="auto"){var n=this.map.getSize();var l=c.maxExtent.getWidth()/n.w;var f=c.maxExtent.getHeight()/n.h;c.maxResolution=Math.max(l,f)}}if(c.maxScale!=null){c.minResolution=Urbex.Util.getResolutionFromScale(c.maxScale,c.units)}else{if((c.minResolution=="auto")&&(c.minExtent!=null)){var n=this.map.getSize();var l=c.minExtent.getWidth()/n.w;var f=c.minExtent.getHeight()/n.h;c.minResolution=Math.max(l,f)}}if(c.minResolution!=null&&this.options.numZoomLevels==undefined){var k=c.maxResolution/c.minResolution;
c.numZoomLevels=Math.floor(Math.log(k)/Math.log(2))+1}c.resolutions=new Array(c.numZoomLevels);var a=2;if(typeof c.minResolution=="number"&&c.numZoomLevels>1){a=Math.pow((c.maxResolution/c.minResolution),(1/(c.numZoomLevels-1)))}for(var d=0;d<=c.numZoomLevels;d++){var g=c.maxResolution/Math.pow(a,d);c.resolutions[d]=g}}c.resolutions.sort(function(q,p){return(p-q)});this.resolutions=c.resolutions;this.maxResolution=c.resolutions[0];var e=c.resolutions.length-1;this.minResolution=c.resolutions[e];this.scales=[];for(var d=0;d<c.resolutions.length;d++){this.scales[d]=Urbex.Util.getScaleFromResolution(c.resolutions[d],c.units)}this.minScale=this.scales[0];this.maxScale=this.scales[this.scales.length-1];this.numZoomLevels=c.numZoomLevels},getResolution:function(){var a=this.map.getZoom();return this.getResolutionForZoom(a)},getExtent:function(){return this.map.calculateBounds()},getZoomForExtent:function(b,c){var d=this.map.getSize();if((this.map.activeView=="ORTHO")&&((this.map.orientation=="WEST")||(this.map.orientation=="EAST"))){var a=Math.max(b.getWidth()/d.h,b.getHeight()/d.w)
}else{var a=Math.max(b.getWidth()/d.w,b.getHeight()/d.h)}return this.getZoomForResolution(a,c)},getDataExtent:function(){},getResolutionForZoom:function(c){c=Math.max(0,Math.min(c,this.resolutions.length-1));var b;if(this.map.fractionalZoom){var a=Math.floor(c);var d=Math.ceil(c);b=this.resolutions[d]+((c-a)*(this.resolutions[a]-this.resolutions[d]))}else{b=this.resolutions[Math.round(c)]}return b},getZoomForResolution:function(e,a){var o;if(this.map.fractionalZoom){var l=0;var c=this.resolutions.length-1;var d=this.resolutions[l];var b=this.resolutions[c];var k;for(var f=0;f<this.resolutions.length;++f){k=this.resolutions[f];if(k>=e){d=k;l=f}if(k<=e){b=k;c=f;break}}var g=d-b;if(g>0){o=l+((e-b)/g)}else{o=l}}else{var m;var n=Number.POSITIVE_INFINITY;for(var f=0;f<this.resolutions.length;f++){if(a){m=Math.abs(this.resolutions[f]-e);if(m>n){break}n=m}else{if(this.resolutions[f]<e){break}}}o=Math.max(0,f-1)}return o},getLonLatFromViewPortPx:function(b){var e=null;if(b!=null){var d=this.map.getSize();
var a=this.map.getCenter();if(a){var c=this.map.getResolution();if((this.map.activeView=="ORTHO")&&(this.map.orientation=="SOUTH")){var g=-b.x+(d.w/2);var f=-b.y+(d.h/2)}else{if((this.map.activeView=="ORTHO")&&(this.map.orientation=="WEST")){var f=-b.x+(d.w/2);var g=b.y-(d.h/2)}else{if((this.map.activeView=="ORTHO")&&(this.map.orientation=="EAST")){var f=b.x-(d.w/2);var g=-b.y+(d.h/2)}else{var g=b.x-(d.w/2);var f=b.y-(d.h/2)}}}e=new Urbex.XY(a.x+g*c,a.y-f*c);if(this.wrapDateLine){e=e.wrapDateLine(this.maxExtent)}}}return e},getViewPortPxFromLonLat:function(d){var b=null;if(d!=null){var a=this.map.getResolution();var c=this.map.getExtent();if((this.map.activeView=="ORTHO")&&(this.map.orientation=="SOUTH")){b=new Urbex.Pixel((1/a*(c.right-d.x)),(1/a*(d.y-c.bottom)))}else{if((this.map.activeView=="ORTHO")&&(this.map.orientation=="WEST")){b=new Urbex.Pixel((1/a*(d.y-c.bottom)),(1/a*(d.x-c.left)))}else{if((this.map.activeView=="ORTHO")&&(this.map.orientation=="EAST")){b=new Urbex.Pixel((1/a*(c.top-d.y)),(1/a*(c.right-d.x)))
}else{b=new Urbex.Pixel((1/a*(d.x-c.left)),(1/a*(c.top-d.y)))}}}}return b},setOpacity:function(a){if(a!=this.opacity){this.opacity=a;for(var c=0;c<this.div.childNodes.length;++c){var b=this.div.childNodes[c].firstChild;Urbex.Util.modifyDOMElement(b,null,null,null,null,null,null,a)}}},setZIndex:function(a){this.div.style.zIndex=a},adjustBounds:function(b){if(this.gutter){var a=this.gutter*this.map.getResolution();b=new Urbex.Bounds(b.left-a,b.bottom-a,b.right+a,b.top+a)}if(this.wrapDateLine){var c={rightTolerance:this.getResolution()};b=b.wrapDateLine(this.maxExtent,c)}return b},CLASS_NAME:"Urbex.Layer"});Urbex.Tile=Urbex.Class({EVENT_TYPES:["loadstart","loadend","reload","unload"],events:null,id:null,layer:null,url:null,bounds:null,size:null,position:null,isLoading:false,isBackBuffer:false,lastRatio:1,isFirstDraw:true,backBufferTile:null,initialize:function(d,a,e,b,c){this.layer=d;this.position=a.clone();this.bounds=e.clone();this.url=b;this.size=c.clone();this.id=Urbex.Util.createUniqueID("Tile_");
this.events=new Urbex.Events(this,null,this.EVENT_TYPES)},unload:function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("unload")}},destroy:function(){if(Urbex.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1){this.layer.events.unregister("loadend",this,this.resetBackBuffer);this.events.unregister("loadend",this,this.resetBackBuffer)}else{this.events.unregister("loadend",this,this.showTile)}this.layer=null;this.bounds=null;this.size=null;this.position=null;this.events.destroy();this.events=null;if(this.backBufferTile){this.backBufferTile.destroy();this.backBufferTile=null}},clone:function(a){if(a==null){a=new Urbex.Tile(this.layer,this.position,this.bounds,this.url,this.size)}Urbex.Util.applyDefaults(a,this);return a},draw:function(){var a=this.layer.maxExtent;var c=(a&&this.bounds.intersectsBounds(a,false));var b=(c||this.layer.displayOutsideMaxExtent);if(Urbex.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1){if(b){if(!this.backBufferTile){this.backBufferTile=this.clone();
this.backBufferTile.hide();this.backBufferTile.isBackBuffer=true;this.events.register("loadend",this,this.resetBackBuffer);this.layer.events.register("loadend",this,this.resetBackBuffer)}this.startTransition()}else{if(this.backBufferTile){this.backBufferTile.clear()}}}else{if(b&&this.isFirstDraw){this.events.register("loadend",this,this.showTile);this.isFirstDraw=false}}this.shouldDraw=b;this.clear();return b},moveTo:function(b,a,c){if(c==null){c=true}this.bounds=b.clone();this.position=a.clone();if(c){this.draw()}},clear:function(){},getBoundsFromBaseLayer:function(a){var f=Urbex.i18n("reprojectDeprecated",{layerName:this.layer.name});Urbex.Console.warn(f);var d=this.layer.map.getLonLatFromLayerPx(a);var c=a.clone();c.x+=this.size.w;c.y+=this.size.h;var b=this.layer.map.getLonLatFromLayerPx(c);if(d.x>b.x){if(d.x<0){d.x=-180-(d.x+180)}else{b.x=180+b.x+180}}var e=new Urbex.Bounds(d.x,b.y,b.x,d.y);return e},startTransition:function(){},resetBackBuffer:function(){this.showTile();if(this.backBufferTile&&(this.isFirstDraw||!this.layer.numLoadingTiles)){this.isFirstDraw=false;
var a=this.layer.maxExtent;var b=(a&&this.bounds.intersectsBounds(a,false));if(b){this.backBufferTile.position=this.position;this.backBufferTile.bounds=this.bounds;this.backBufferTile.size=this.size;this.backBufferTile.imageSize=this.layer.imageSize||this.size;this.backBufferTile.imageOffset=this.layer.imageOffset;this.backBufferTile.resolution=this.layer.getResolution();this.backBufferTile.renderTile()}}},showTile:function(){if(this.shouldDraw){this.show()}},show:function(){},hide:function(){},CLASS_NAME:"Urbex.Tile"});Urbex.Tile.Image=Urbex.Class(Urbex.Tile,{url:null,imgDiv:null,frame:null,layerAlphaHack:null,useCanvas:null,aCanvas:null,rotation:0,initialize:function(d,a,e,b,c){Urbex.Tile.prototype.initialize.apply(this,arguments);this.url=b;this.frame=document.createElement("div");this.frame.style.overflow="hidden";this.frame.style.position="absolute";this.layerAlphaHack=this.layer.alpha&&Urbex.Util.alphaHack();this.useCanvas=(Urbex.Util.getBrowserName()!=="msie")&&(this.layer.map.activeView=="ORTHO")&&(this.layer.map.orientation!=="ORTHO")&&(this.layer.map.orientation!=="NORTH");
if((this.layer.map.activeView=="ORTHO")&&(this.layer.map.orientation=="SOUTH")){this.rotation=180}else{if((this.layer.map.activeView=="ORTHO")&&(this.layer.map.orientation=="EAST")){this.rotation=270}else{if((this.layer.map.activeView=="ORTHO")&&(this.layer.map.orientation=="WEST")){this.rotation=90}else{this.rotation=0}}}},destroy:function(){if(this.imgDiv!=null){if(this.layerAlphaHack){Urbex.Event.stopObservingElement(this.imgDiv.childNodes[0].id)}else{Urbex.Event.stopObservingElement(this.imgDiv.id)}if(this.imgDiv.parentNode==this.frame){this.frame.removeChild(this.imgDiv);this.imgDiv.map=null;if(this.useCanvas){this.frame.removeChild(this.aCanvas)}}}this.imgDiv=null;if((this.frame!=null)&&(this.frame.parentNode==this.layer.div)){this.layer.div.removeChild(this.frame)}this.frame=null;Urbex.Tile.prototype.destroy.apply(this,arguments)},clone:function(a){if(a==null){a=new Urbex.Tile.Image(this.layer,this.position,this.bounds,this.url,this.size)}a=Urbex.Tile.prototype.clone.apply(this,[a]);
a.imgDiv=null;return a},draw:function(){if(this.layer!=this.layer.map.baseLayer&&this.layer.reproject){this.bounds=this.getBoundsFromBaseLayer(this.position)}if(!Urbex.Tile.prototype.draw.apply(this,arguments)){return false}if(this.isLoading){this.events.triggerEvent("reload")}else{this.isLoading=true;this.events.triggerEvent("loadstart")}return this.renderTile()},renderTile:function(){if(this.backBufferTile){this.backBufferTile.hide()}var b=(Urbex.Util.getBrowserName()!=="msie")&&(this.layer.map.activeView=="ORTHO")&&(this.layer.map.orientation!=="ORTHO")&&(this.layer.map.orientation!=="NORTH");if(this.imgDiv==null){this.initImgDiv()}this.imgDiv.viewRequestID=this.layer.map.viewRequestID;this.url=this.layer.getURL(this.bounds);this.size=this.layer.tileSize;Urbex.Util.modifyDOMElement(this.frame,null,this.position,this.size);if(this.aCanvas){Urbex.Util.modifyDOMElement(this.aCanvas,null,this.position,this.size)}var a=this.layer.getImageSize();if(!this.useCanvas){if(this.layer.map.activeView=="ORTHO"&&this.layer.map.orientation=="SOUTH"){this.imgDiv.style.filter="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"
}else{if(this.layer.map.activeView=="ORTHO"&&this.layer.map.orientation=="EAST"){this.imgDiv.style.filter="progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"}else{if(this.layer.map.activeView=="ORTHO"&&this.layer.map.orientation=="WEST"){this.imgDiv.style.filter="progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"}else{this.imgDiv.style.filter=""}}}}else{if(this.aCanvas){if(this.layer.map.activeView=="ORTHO"&&this.layer.map.orientation=="SOUTH"){this.rotation=180}else{if(this.layer.map.activeView=="ORTHO"&&this.layer.map.orientation=="EAST"){this.rotation=270}else{if(this.layer.map.activeView=="ORTHO"&&this.layer.map.orientation=="WEST"){this.rotation=90}else{this.rotation=0}}}Urbex.Util.rotateFirefox(this.rotation,this.aCanvas.id,this.imgDiv.id)}}if(this.layerAlphaHack){Urbex.Util.modifyAlphaImageDiv(this.imgDiv,null,null,a,this.url)}else{Urbex.Util.modifyDOMElement(this.imgDiv,null,null,a);this.imgDiv.src=this.url}return true},clear:function(){if(this.imgDiv){this.hide();
if(Urbex.Tile.Image.useBlankTile){this.imgDiv.src=Urbex.Util.getImagesLocation()+"blank.gif"}}},initImgDiv:function(){var d=this.layer.imageOffset;var b=this.layer.getImageSize();if(this.layerAlphaHack){this.imgDiv=Urbex.Util.createAlphaImageDiv(null,d,b,null,"relative",null,null,null,true)}else{this.imgDiv=Urbex.Util.createImage(null,d,b,null,"relative",null,null,true)}this.imgDiv.className="olTileImage";this.frame.style.zIndex=this.isBackBuffer?0:1;if(this.useCanvas){this.imgDiv.style.visibility="hidden";this.aCanvas=document.createElement("canvas");this.aCanvas.id="Canvas"+this.imgDiv.id;this.frame.appendChild(this.aCanvas)}this.frame.appendChild(this.imgDiv);this.layer.div.appendChild(this.frame);if(this.layer.opacity!=null){Urbex.Util.modifyDOMElement(this.imgDiv,null,null,null,null,null,null,this.layer.opacity)}this.imgDiv.map=this.layer.map;var c=function(){if(this.isLoading){this.isLoading=false;this.events.triggerEvent("loadend");if(this.useCanvas){Urbex.Util.rotateFirefox(this.rotation,this.aCanvas.id,this.imgDiv.id)
}}};if(this.layerAlphaHack){Urbex.Event.observe(this.imgDiv.childNodes[0],"load",Urbex.Function.bind(c,this))}else{Urbex.Event.observe(this.imgDiv,"load",Urbex.Function.bind(c,this))}var a=function(){if(this.imgDiv._attempts>Urbex.IMAGE_RELOAD_ATTEMPTS){c.call(this)}};Urbex.Event.observe(this.imgDiv,"error",Urbex.Function.bind(a,this))},checkImgURL:function(){if(this.layer){var a=this.layerAlphaHack?this.imgDiv.firstChild.src:this.imgDiv.src;if(!Urbex.Util.isEquivalentUrl(a,this.url)){this.hide()}}},startTransition:function(){if(!this.backBufferTile||!this.backBufferTile.imgDiv){return}var d=1;if(this.backBufferTile.resolution){d=this.backBufferTile.resolution/this.layer.getResolution()}if(d!=this.lastRatio){if(this.layer.transitionEffect=="resize"){if(navigator.appName=="Microsoft Internet Explorer"){if((this.layer.map.activeView=="ORTHO")&&(this.layer.map.orientation=="SOUTH")){var c=new Urbex.XY(this.backBufferTile.bounds.right,this.backBufferTile.bounds.bottom)}else{if((this.layer.map.activeView=="ORTHO")&&(this.layer.map.orientation=="EAST")){var c=new Urbex.XY(this.backBufferTile.bounds.right,this.backBufferTile.bounds.top)
}else{if((this.layer.map.activeView=="ORTHO")&&(this.layer.map.orientation=="WEST")){var c=new Urbex.XY(this.backBufferTile.bounds.left,this.backBufferTile.bounds.bottom)}else{var c=new Urbex.XY(this.backBufferTile.bounds.left,this.backBufferTile.bounds.top)}}}}else{var c=new Urbex.XY(this.backBufferTile.bounds.left,this.backBufferTile.bounds.top)}var b=new Urbex.Size(this.backBufferTile.size.w*d,this.backBufferTile.size.h*d);var a=this.layer.map.getLayerPxFromLonLat(c);Urbex.Util.modifyDOMElement(this.backBufferTile.frame,null,a,b);var e=this.backBufferTile.imageSize;e=new Urbex.Size(e.w*d,e.h*d);var f=this.backBufferTile.imageOffset;if(f){f=new Urbex.Pixel(f.x*d,f.y*d)}Urbex.Util.modifyDOMElement(this.backBufferTile.imgDiv,null,f,e);if((this.layer.map.activeView=="ORTHO")&&(this.layer.map.orientation=="SOUTH")){this.backBufferTile.imgDiv.style.filter="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"}else{if((this.layer.map.activeView=="ORTHO")&&(this.layer.map.orientation=="EAST")){this.backBufferTile.imgDiv.style.filter="progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"
}else{if((this.layer.map.activeView=="ORTHO")&&(this.layer.map.orientation=="WEST")){this.backBufferTile.imgDiv.style.filter="progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"}}}this.backBufferTile.show()}}else{if(this.layer.singleTile){this.backBufferTile.show()}else{this.backBufferTile.hide()}}this.lastRatio=d},show:function(){this.frame.style.display="";if(Urbex.Util.indexOf(this.layer.SUPPORTED_TRANSITIONS,this.layer.transitionEffect)!=-1){if(navigator.userAgent.toLowerCase().indexOf("gecko")!=-1){this.frame.scrollLeft=this.frame.scrollLeft}}},hide:function(){this.frame.style.display="none"},CLASS_NAME:"Urbex.Tile.Image"});Urbex.Tile.Image.useBlankTile=(Urbex.Util.getBrowserName()=="safari"||Urbex.Util.getBrowserName()=="opera");Urbex.Layer.HTTPRequest=Urbex.Class(Urbex.Layer,{URL_HASH_FACTOR:(Math.sqrt(5)-1)/2,url:null,params:null,reproject:false,initialize:function(d,c,e,b){var a=arguments;a=[d,b];Urbex.Layer.prototype.initialize.apply(this,a);this.url=c;this.params=Urbex.Util.extend({},e)
},destroy:function(){this.url=null;this.params=null;Urbex.Layer.prototype.destroy.apply(this,arguments)},clone:function(a){if(a==null){a=new Urbex.Layer.HTTPRequest(this.name,this.url,this.params,this.options)}a=Urbex.Layer.prototype.clone.apply(this,[a]);return a},setUrl:function(a){this.url=a},mergeNewParams:function(a){this.params=Urbex.Util.extend(this.params,a);return this.redraw()},redraw:function(a){if(a){return this.mergeNewParams({_olSalt:Math.random()})}else{return Urbex.Layer.prototype.redraw.apply(this,[])}},selectUrl:function(d,c){var b=1;for(var a=0;a<d.length;a++){b*=d.charCodeAt(a)*this.URL_HASH_FACTOR;b-=Math.floor(b)}return c[Math.floor(b*c.length)]},getFullRequestString:function(e,b){var a=b||this.url;var d=Urbex.Util.extend({},this.params);d=Urbex.Util.extend(d,e);var c="?"+Urbex.Util.getParameterString(d);if(a instanceof Array){a=this.selectUrl(c,a)}return Urbex.Proxy.getUrl(this.map,a,Urbex.Proxy.GET_TILE,this.serviceName+c)},CLASS_NAME:"Urbex.Layer.HTTPRequest"});
Urbex.Layer.Grid=Urbex.Class(Urbex.Layer.HTTPRequest,{tileSize:null,grid:null,singleTile:false,ratio:1.5,buffer:0,numLoadingTiles:0,initialize:function(c,b,d,a){Urbex.Layer.HTTPRequest.prototype.initialize.apply(this,arguments);this.events.addEventType("tileloaded");this.grid=[]},destroy:function(){this.clearGrid();this.grid=null;this.tileSize=null;Urbex.Layer.HTTPRequest.prototype.destroy.apply(this,arguments)},clearGrid:function(){if(this.grid){for(var d=0;d<this.grid.length;d++){var c=this.grid[d];for(var a=0;a<c.length;a++){var b=c[a];this.removeTileMonitoringHooks(b);b.destroy()}}this.grid=[]}},clone:function(a){if(a==null){a=new Urbex.Layer.Grid(this.name,this.url,this.params,this.options)}a=Urbex.Layer.HTTPRequest.prototype.clone.apply(this,[a]);if(this.tileSize!=null){a.tileSize=this.tileSize.clone()}a.grid=[];return a},moveTo:function(d,a,e){Urbex.Layer.HTTPRequest.prototype.moveTo.apply(this,arguments);d=d||this.map.getExtent();if(d!=null){var c=!this.grid.length||a;var b=this.getTilesBounds();
if(this.singleTile){if(c||(!e&&!b.containsBounds(d))){this.initSingleTile(d)}}else{if(c||!b.containsBounds(d,true)){this.initGriddedTiles(d)}else{this.moveGriddedTiles(d)}}}},setTileSize:function(a){if(this.singleTile){a=this.map.getSize().clone();a.h=parseInt(a.h*this.ratio);a.w=parseInt(a.w*this.ratio)}Urbex.Layer.HTTPRequest.prototype.setTileSize.apply(this,[a])},getGridBounds:function(){var a="The getGridBounds() function is deprecated. It will be removed in 3.0. Please use getTilesBounds() instead.";alert(a);return this.getTilesBounds()},getTilesBounds:function(){var e=null;if(this.grid.length){var a=this.grid.length-1;var d=this.grid[a][0];var b=this.grid[0].length-1;var c=this.grid[0][b];e=new Urbex.Bounds(d.bounds.left,d.bounds.bottom,c.bounds.right,c.bounds.top)}return e},initSingleTile:function(f){this.clearGrid();var a=f.getCenterLonLat();var k=f.getWidth()*this.ratio;var b=f.getHeight()*this.ratio;var g=new Urbex.Bounds(a.x-(k/2),a.y-(b/2),a.x+(k/2),a.y+(b/2));var d=new Urbex.XY(g.left,g.top);
var c=this.map.getLayerPxFromLonLat(d);if(!this.grid.length){this.grid[0]=[]}var e=this.grid[0][0];if(!e){e=this.addTile(g,c);this.addTileMonitoringHooks(e);e.draw();this.grid[0][0]=e}else{e.moveTo(g,c)}this.removeExcessTiles(1,1)},calculateGridLayout:function(a,r,e){var n=e*this.tileSize.w;var c=e*this.tileSize.h;var l=a.left-r.left;var o=Math.floor(l/n)-this.buffer;var m=l/n-o;var f=-m*this.tileSize.w;var p=r.left+o*n;var b=a.top-(r.bottom+c);var k=Math.ceil(b/c)+this.buffer;var q=k-b/c;var d=-q*this.tileSize.h;var g=r.bottom+k*c;return{tilelon:n,tilelat:c,tileoffsetlon:p,tileoffsetlat:g,tileoffsetx:f,tileoffsety:d}},initGriddedTiles:function(l){this.clearGrid();if(!this.isBaseLayer){if(this.map.activeView=="ORTHO"){if(this.urlortho==""){this.urlortho=this.map.baseLayer.url}this.url=this.urlortho}else{if(this.urlobliq==""){this.urlobliq=this.map.baseLayer.url}this.url=this.urlobliq}}var g=this.map.getSize();var E=Math.ceil(g.h/this.tileSize.h)+Math.max(1,2*this.buffer);var G=Math.ceil(g.w/this.tileSize.w)+Math.max(1,2*this.buffer);
if((this.map.activeView=="ORTHO")&&((this.map.orientation=="EAST")||(this.map.orientation=="WEST"))){var H=E;E=G;G=H}var s=this.map.getMaxExtent();var w=this.map.getResolution();var u=this.calculateGridLayout(l,s,w);var f=Math.round(u.tileoffsetx);var c=Math.round(u.tileoffsety);var n=u.tileoffsetlon;var q=u.tileoffsetlat;var e=u.tilelon;var m=u.tilelat;this.origin=new Urbex.Pixel(f,c);var D=f;var F=n;var B=0;var a=parseInt(this.map.layerContainerDiv.style.left);var A=parseInt(this.map.layerContainerDiv.style.top);var z=a+(g.w/2);var v=A+(g.h/2);do{var k=this.grid[B++];if(!k){k=[];this.grid.push(k)}n=F;f=D;var d=0;do{var b=new Urbex.Bounds(n,q,n+e,q+m);var p=f;p-=a;var o=c;o-=A;if((this.map.activeView=="ORTHO")&&(this.map.orientation=="SOUTH")){var r=p;var C=o;p=z+(z-r)-this.tileSize.w;o=v+(v-C)-this.tileSize.h}else{if((this.map.activeView=="ORTHO")&&(this.map.orientation=="WEST")){var r=p;var C=o;o=r;p=g.w-C-this.tileSize.w}else{if((this.map.activeView=="ORTHO")&&(this.map.orientation=="EAST")){var r=p;
var C=o;p=C;o=g.h-r-this.tileSize.w}}}var t=new Urbex.Pixel(p,o);var I=k[d++];if(!I){I=this.addTile(b,t);this.addTileMonitoringHooks(I);k.push(I)}else{I.moveTo(b,t,false)}n+=e;f+=this.tileSize.w}while((n<=l.right+e*this.buffer)||d<G);q-=m;c+=this.tileSize.h}while((q>=l.bottom-m*this.buffer)||B<E);this.removeExcessTiles(B,d);this.spiralTileLoad()},spiralTileLoad:function(){var b=[];var g=["right","down","left","up"];var f=0;var a=-1;var l=Urbex.Util.indexOf(g,"right");var m=0;while(m<g.length){var k=f;var c=a;switch(g[l]){case"right":c++;break;case"down":k++;break;case"left":c--;break;case"up":k--;break}var e=null;if((k<this.grid.length)&&(k>=0)&&(c<this.grid[0].length)&&(c>=0)){e=this.grid[k][c]}if((e!=null)&&(!e.queued)){b.unshift(e);e.queued=true;m=0;f=k;a=c}else{l=(l+1)%4;m++}}for(var d=0;d<b.length;d++){var e=b[d];e.draw();e.queued=false}},addTile:function(b,a){},addTileMonitoringHooks:function(a){a.onLoadStart=function(){if(this.numLoadingTiles==0){this.events.triggerEvent("loadstart")
}this.numLoadingTiles++};a.events.register("loadstart",this,a.onLoadStart);a.onLoadEnd=function(){this.numLoadingTiles--;this.events.triggerEvent("tileloaded");if(this.numLoadingTiles==0){this.events.triggerEvent("loadend")}};a.events.register("loadend",this,a.onLoadEnd);a.events.register("unload",this,a.onLoadEnd)},removeTileMonitoringHooks:function(a){a.unload();a.events.un({loadstart:a.onLoadStart,loadend:a.onLoadEnd,unload:a.onLoadEnd,scope:this})},moveGriddedTiles:function(c){var e=this.map.getSize();var b=this.buffer||1;if((this.map.activeView=="ORTHO")&&(this.map.orientation=="SOUTH")){while(true){var a=this.grid[0][0].position;var d=this.map.getViewPortPxFromLayerPx(a);if(d.x<(e.w-this.tileSize.w*b)){this.shiftColumn(true)}else{if(d.x>(e.w+this.tileSize.w*(b-1))){this.shiftColumn(false)}else{if(d.y<(e.h-this.tileSize.h*(2-b))){this.shiftRow(true)}else{if(d.y>(e.h+this.tileSize.h*(b-1))){this.shiftRow(false)}else{break}}}}}}else{if((this.map.activeView=="ORTHO")&&(this.map.orientation=="WEST")){while(true){var a=this.grid[0][0].position;
var d=this.map.getViewPortPxFromLayerPx(a);if(d.x<(e.w-this.tileSize.w*(2-b))){this.shiftRow2(true)}else{if(d.x>(e.w+this.tileSize.w*(b-1))){this.shiftRow2(false)}else{if(d.y<(-this.tileSize.h*b)){this.shiftColumn2(false)}else{if(d.y>(this.tileSize.h*(b-1))){this.shiftColumn2(true)}else{break}}}}}}else{if((this.map.activeView=="ORTHO")&&(this.map.orientation=="EAST")){while(true){var a=this.grid[0][0].position;var d=this.map.getViewPortPxFromLayerPx(a);if(d.x>-this.tileSize.w*(b-1)){this.shiftRow2(true)}else{if(d.x<-this.tileSize.w*b){this.shiftRow2(false)}else{if(d.y>(e.h+this.tileSize.h*(b-1))){this.shiftColumn2(false)}else{if(d.y<(e.h-this.tileSize.h*(2-b))){this.shiftColumn2(true)}else{break}}}}}}else{while(true){var a=this.grid[0][0].position;var d=this.map.getViewPortPxFromLayerPx(a);if(d.x>-this.tileSize.w*(b-1)){this.shiftColumn(true)}else{if(d.x<-this.tileSize.w*b){this.shiftColumn(false)}else{if(d.y>-this.tileSize.h*(b-1)){this.shiftRow(true)}else{if(d.y<-this.tileSize.h*b){this.shiftRow(false)
}else{break}}}}}}}}},shiftRow:function(o){var c=(o)?0:(this.grid.length-1);var b=this.grid;var f=b[c];if((this.map.activeView=="ORTHO")&&(this.map.orientation=="SOUTH")){var e=this.map.getResolution();var k=(o)?this.tileSize.h:-this.tileSize.h;var g=e*k}else{var e=this.map.getResolution();var k=(o)?-this.tileSize.h:this.tileSize.h;var g=e*-k}var n=(o)?b.pop():b.shift();for(var l=0;l<f.length;l++){var d=f[l];var a=d.bounds.clone();var m=d.position.clone();a.bottom=a.bottom+g;a.top=a.top+g;m.y=m.y+k;n[l].moveTo(a,m)}if(o){b.unshift(n)}else{b.push(n)}},shiftColumn:function(n){if((this.map.activeView=="ORTHO")&&(this.map.orientation=="SOUTH")){var d=(n)?this.tileSize.w:-this.tileSize.w;var c=this.map.getResolution();var l=-c*d}else{var d=(n)?-this.tileSize.w:this.tileSize.w;var c=this.map.getResolution();var l=c*d}for(var e=0;e<this.grid.length;e++){var m=this.grid[e];var k=(n)?0:(m.length-1);var b=m[k];var a=b.bounds.clone();var f=b.position.clone();a.left=a.left+l;a.right=a.right+l;f.x=f.x+d;
var g=n?this.grid[e].pop():this.grid[e].shift();g.moveTo(a,f);if(n){m.unshift(g)}else{m.push(g)}}},shiftRow2:function(o){var c=(o)?0:(this.grid.length-1);var b=this.grid;var f=b[c];if((this.map.activeView=="ORTHO")&&(this.map.orientation=="WEST")){var e=this.map.getResolution();var k=(o)?this.tileSize.w:-this.tileSize.w;var g=e*k}else{var e=this.map.getResolution();var k=(o)?-this.tileSize.h:this.tileSize.h;var g=e*-k}var n=(o)?b.pop():b.shift();for(var l=0;l<f.length&&n[l];l++){var d=f[l];var a=d.bounds.clone();var m=d.position.clone();a.bottom=a.bottom+g;a.top=a.top+g;m.x=m.x+k;n[l].moveTo(a,m)}if(o){b.unshift(n)}else{b.push(n)}},shiftColumn2:function(n){if((this.map.activeView=="ORTHO")&&(this.map.orientation=="WEST")){var d=(n)?-this.tileSize.w:this.tileSize.w;var c=this.map.getResolution();var l=c*d}else{var d=(n)?this.tileSize.w:-this.tileSize.w;var c=this.map.getResolution();var l=-c*d}for(var e=0;e<this.grid.length;e++){var m=this.grid[e];var k=(n)?0:(m.length-1);var b=m[k];var a=b.bounds.clone();
var f=b.position.clone();a.left=a.left+l;a.right=a.right+l;f.y=f.y+d;var g=n?this.grid[e].pop():this.grid[e].shift();g.moveTo(a,f);if(n){m.unshift(g)}else{m.push(g)}}},removeExcessTiles:function(e,c){while(this.grid.length>e){var f=this.grid.pop();for(var b=0,a=f.length;b<a;b++){var d=f[b];this.removeTileMonitoringHooks(d);d.destroy()}}while(this.grid[0].length>c){for(var b=0,a=this.grid.length;b<a;b++){var f=this.grid[b];var d=f.pop();this.removeTileMonitoringHooks(d);d.destroy()}}},onMapResize:function(){if(this.singleTile){this.clearGrid();this.setTileSize()}},getTileBounds:function(d){var c=this.map.getMaxExtent();var f=this.getResolution();var e=f*this.tileSize.w;var b=f*this.tileSize.h;var k=this.getLonLatFromViewPortPx(d);var a=c.left+(e*Math.floor((k.x-c.left)/e));var g=c.bottom+(b*Math.floor((k.y-c.bottom)/b));return new Urbex.Bounds(a,g,a+e,g+b)},CLASS_NAME:"Urbex.Layer.Grid"});Urbex.Layer.Ortho=Urbex.Class(Urbex.Layer.Grid,{reproject:false,isBaseLayer:true,encodeBBOX:false,initialize:function(d,c,e,b){var a=[];
e=Urbex.Util.upperCaseObject(e);a.push(d,c,e,b);Urbex.Layer.Grid.prototype.initialize.apply(this,a);if(this.params.TRANSPARENT&&this.params.TRANSPARENT.toString().toLowerCase()=="true"){if((b==null)||(!b.isBaseLayer)){this.isBaseLayer=false}if(this.params.FORMAT=="image/jpeg"){this.params.FORMAT=Urbex.Util.alphaHack()?"image/gif":"image/png"}}this.serviceName="GetTile"},destroy:function(){Urbex.Layer.Grid.prototype.destroy.apply(this,arguments)},clone:function(a){if(a==null){a=new Urbex.Layer.Ortho(this.name,this.url,this.params,this.options)}a=Urbex.Layer.Grid.prototype.clone.apply(this,[a]);return a},getURL:function(b){b=this.adjustBounds(b);var a;var c=this.getImageSize();if((this.map.getZoom()<15)&&(this.map.getActiveView()=="ORTHO")&&((this.map.getOrientation()=="NORTH")||(this.map.getOrientation()=="SOUTH")||(this.map.getOrientation()=="EAST")||(this.map.getOrientation()=="WEST"))){a="ORTHO"}else{a=this.params.layer}var d={USERTOKEN:this.params.Token,LAYER:a,ID:this.getBboxToIdTile(b,this.map.projection),SRS:this.params.srs,TIME:this.map.TIME,BASELAYER:this.map.BASELAYER};
return this.getFullRequestString(d)},getBboxToIdTile:function(a,g){var o=Urbex.Layer.Ortho.ProyectionInfo[g].ZoomL0;var b=Urbex.Layer.Ortho.ProyectionInfo[g].ResolutionL0;var f=Urbex.Layer.Ortho.ProyectionInfo[g].OffsetX;var d=Urbex.Layer.Ortho.ProyectionInfo[g].OffsetY;var e=Urbex.Layer.Ortho.ProyectionInfo[g].ZoomLevels;var p=this.map.getZoom()+(this.map.scale-1);var l=(b*Math.pow(2,o-p));var n=256*l;var c=Math.floor((a.left+f+n/2)/n);var m=Math.floor((d-a.top+n/2)/n);var k=Urbex.Util.tileToQuadkey(c,m,p);return k},addTile:function(b,a){return new Urbex.Tile.Image(this,a,b,null,this.tileSize)},mergeNewParams:function(c){var b=Urbex.Util.upperCaseObject(c);var a=[b];return Urbex.Layer.Grid.prototype.mergeNewParams.apply(this,a)},getFullRequestString:function(c,b){var a=this.map.getProjection();this.params.SRS=(a=="none")?null:a;return Urbex.Layer.Grid.prototype.getFullRequestString.apply(this,arguments)},CLASS_NAME:"Urbex.Layer.Ortho"});Urbex.Layer.Ortho.ProyectionInfo={"EPSG:3785":{ZoomL0:0,ResolutionL0:156543.0339,OffsetX:20037508.34,OffsetY:20037508.34,ZoomLevels:20},"EPSG:32628":{ZoomL0:19,ResolutionL0:0.1,OffsetX:6710886.4,OffsetY:13421772.8,ZoomLevels:19},"EPSG:32629":{ZoomL0:19,ResolutionL0:0.1,OffsetX:6710886.4,OffsetY:13421772.8,ZoomLevels:19},"EPSG:32630":{ZoomL0:19,ResolutionL0:0.1,OffsetX:6710886.4,OffsetY:13421772.8,ZoomLevels:19},"EPSG:32631":{ZoomL0:19,ResolutionL0:0.1,OffsetX:6710886.4,OffsetY:13421772.8,ZoomLevels:19},"EPSG:32632":{ZoomL0:19,ResolutionL0:0.1,OffsetX:6710886.4,OffsetY:13421772.8,ZoomLevels:19},"EPSG:32633":{ZoomL0:19,ResolutionL0:0.1,OffsetX:6710886.4,OffsetY:13421772.8,ZoomLevels:19},"EPSG:32634":{ZoomL0:19,ResolutionL0:0.1,OffsetX:6710886.4,OffsetY:13421772.8,ZoomLevels:19},"EPSG:32635":{ZoomL0:19,ResolutionL0:0.1,OffsetX:6710886.4,OffsetY:13421772.8,ZoomLevels:19}};
Urbex.Layer.Oblique=Urbex.Class(Urbex.Layer.Grid,{reproject:false,isBaseLayer:true,encodeBBOX:false,initialize:function(d,c,e,b){var a=[];e=Urbex.Util.upperCaseObject(e);a.push(d,c,e,b);Urbex.Layer.Grid.prototype.initialize.apply(this,a);if(this.params.TRANSPARENT&&this.params.TRANSPARENT.toString().toLowerCase()=="true"){if((b==null)||(!b.isBaseLayer)){this.isBaseLayer=false}if(this.params.FORMAT=="image/jpeg"){this.params.FORMAT=Urbex.Util.alphaHack()?"image/gif":"image/png"}}this.serviceName="GetObliqueTile"},destroy:function(){Urbex.Layer.Grid.prototype.destroy.apply(this,arguments)},clone:function(a){if(a==null){a=new Urbex.Layer.Oblique(this.name,this.url,this.params,this.options)}a=Urbex.Layer.Grid.prototype.clone.apply(this,[a]);return a},getURL:function(b){b=this.adjustBounds(b);var c=this.getImageSize();var d={USERTOKEN:this.params.Token,ID:this.params.id,TILE:this.getBboxToIdTile(b)};var a=this.getFullRequestString(d);return a},getBboxToIdTile:function(d){var b=this.map.numZoomLevels-(this.map.getZoom()+this.map.maximumDigitalZoom)+1;
if(b<1){b=1}var a=256*Math.pow(2,b-1);var f=Math.floor(((d.left+d.right)/2)/a);var c=Math.floor(((-d.bottom-d.top)/2)/a);var e=b+"_"+c+"_"+f;return e},addTile:function(b,a){return new Urbex.Tile.Image(this,a,b,null,this.tileSize)},mergeNewParams:function(c){var b=Urbex.Util.upperCaseObject(c);var a=[b];return Urbex.Layer.Grid.prototype.mergeNewParams.apply(this,a)},CLASS_NAME:"Urbex.Layer.Oblique"});Urbex.Layer.Overlay=Urbex.Class(Urbex.Layer.Grid,{reproject:false,isBaseLayer:false,encodeBBOX:false,overlay:"",urlortho:"",urlobliq:"",initialize:function(c,b,d,e){var a=[];this.overlay=b;a.push(c,d.url,d.params,d.options);Urbex.Layer.Grid.prototype.initialize.apply(this,a);this.params.TRANSPARENT="true";this.isBaseLayer=false;if(this.params.FORMAT=="image/jpeg"){this.params.FORMAT=Urbex.Util.alphaHack()?"image/gif":"image/png"}if(e.getActiveView()=="ORTHO"){this.urlobliq="";this.urlortho=d.url;this.serviceName="GetTile"}else{this.urlortho="";this.urlobliq=d.url;this.serviceName="GetObliqueTile"
}},destroy:function(){Urbex.Layer.Grid.prototype.destroy.apply(this,arguments)},clone:function(a){if(a==null){a=new Urbex.Layer.Overlay(this.name,this.url,this.params,this.options)}a=Urbex.Layer.Grid.prototype.clone.apply(this,[a]);return a},getURL:function(e){e=this.adjustBounds(e);var d;var b=[];var f=this.getImageSize();if(this.map.activeView=="ORTHO"){this.serviceName="GetTile";newParams={LAYER:this.map.orientation,ID:this.getBboxToIdTile(e,this.map.projection),SRS:this.map.projection,OVERLAY:this.overlay};var c=this.map.getProjection();newParams.SRS=(c=="none")?null:c}else{this.serviceName="GetObliqueTile";newParams={ID:this.map.idOblique,TILE:this.getBboxToIdTileObl(e),OVERLAY:this.overlay,TIME:this.map.TIME};delete this.params.layer}var a=this.getFullRequestString(newParams);return a},getBboxToIdTile:function(a,g){var o=Urbex.Layer.Ortho.ProyectionInfo[g].ZoomL0;var b=Urbex.Layer.Ortho.ProyectionInfo[g].ResolutionL0;var f=Urbex.Layer.Ortho.ProyectionInfo[g].OffsetX;var d=Urbex.Layer.Ortho.ProyectionInfo[g].OffsetY;
var e=Urbex.Layer.Ortho.ProyectionInfo[g].ZoomLevels;var p=this.map.getZoom();var l=(b*Math.pow(2,o-p));var n=256*l;var c=Math.floor((a.left+f+n/2)/n);var m=Math.floor((d-a.top+n/2)/n);var k=Urbex.Util.tileToQuadkey(c,m,p);return k},getBboxToIdTileObl:function(d){var b=5-(this.map.getZoom());if(b<1){b=1}var a=256*Math.pow(2,b-1);var f=Math.floor(((d.left+d.right)/2)/a);var c=Math.floor(((-d.bottom-d.top)/2)/a);var e=b+"_"+c+"_"+f;return e},addTile:function(b,a){return new Urbex.Tile.Image(this,a,b,null,this.tileSize)},mergeNewParams:function(b){var a=Urbex.Util.upperCaseObject(b);return Urbex.Layer.Grid.prototype.mergeNewParams.apply(this,[a])},getFullRequestString:function(b,a){return Urbex.Layer.Grid.prototype.getFullRequestString.apply(this,arguments)},CLASS_NAME:"Urbex.Layer.Overlay"});Urbex.Layer.Overlay.ZOOML0=0;Urbex.Layer.Overlay.RES0_3785=156543.0339;Urbex.Layer.Overlay.OFFSETX_3785=20037508.34;Urbex.Layer.Overlay.OFFSETY_3785=20037508.34;Urbex.Layer.Overlay.ZOOMLEVELS_3785=20;
Urbex.Control=Urbex.Class({id:null,map:null,type:null,active:null,handler:null,events:null,eventListeners:null,div:null,displayClass:"",allowSelection:false,controlPosition:null,controlSize:null,controlTitle:null,titles:null,sizes:null,positions:null,imagesOn:null,imagesOff:null,buttons:null,EVENT_TYPES:["activate","deactivate"],initialize:function(a){this.displayClass=this.CLASS_NAME.replace("Urbex.","ol").replace(/\./g,"");Urbex.Util.extend(this,a);this.id=Urbex.Util.createUniqueID(this.CLASS_NAME+"_");this.events=new Urbex.Events(this,null,this.EVENT_TYPES);if(this.eventListeners instanceof Object){this.events.on(this.eventListeners)}},destroy:function(){if(this.events){if(this.eventListeners){this.events.un(this.eventListeners)}this.events.destroy();this.events=null}this.events=null;this.eventListeners=null;if(this.handler){this.handler.destroy()}this.handler=null;if(this.handlers){for(var b in this.handlers){if(this.handlers.hasOwnProperty(b)&&typeof this.handlers[b].destroy=="function"){this.handlers[b].destroy()
}}}this.handlers=null;if(this.map){this.map.removeControl(this)}this.map=null;if(this.buttons){while(this.buttons.length){var a=this.buttons.shift();Urbex.Event.stopObservingElement(a);a.map=null}}this.buttons=null},setMap:function(a){this.map=a;if(this.handler){this.handler.setMap(a)}},draw:function(){if(this.div==null){this.div=Urbex.Util.createDiv(this.id);this.div.style.textAlign="left";if(!this.allowSelection){this.div.className="olControlNoSelect";this.div.setAttribute("unselectable","on",0);this.div.onselectstart=function(){return(false)}}if(this.title!=""){this.div.title=this.title}}return this.div},activate:function(){if(this.active){return false}if(this.handler){this.handler.activate()}this.active=true;this.events.triggerEvent("activate");return true},deactivate:function(){if(this.active){if(this.handler){this.handler.deactivate()}this.active=false;this.events.triggerEvent("deactivate");return true}return false},hide:function(){this.div.style.display="none"},show:function(){this.div.style.display=""
},onMapResize:function(){this.refresh()},setControlSize:function(a){this.controlSize=a;this.refresh()},setControlPosition:function(a){this.controlPosition=a;this.refresh()},setControlTitle:function(a){this.controlTitle=a;this.refresh()},setTitles:function(a){this.titles=a;this.refresh()},setSizes:function(a){this.sizes=a;this.refresh()},setPositions:function(a){this.positions=a;this.refresh()},setImagesOn:function(a){this.imagesOn=a;this.refresh()},setImagesOff:function(a){this.imagesOff=a;this.refresh()},refresh:function(){if(this.div&&this.controlSize&&this.controlPosition){var e=this.map.getSize();var d=this.controlPosition.x>=0?this.controlPosition.x:e.w-(this.controlSize.w-this.controlPosition.x)+1;var c=this.controlPosition.y>=0?this.controlPosition.y:e.h-(this.controlSize.h-this.controlPosition.y)+1;this.div.style.left=d+"px";this.div.style.top=c+"px";this.div.style.width=this.controlSize.w+"px";this.div.style.height=this.controlSize.h+"px";if(this.controlTitle){this.div.title=this.controlTitle
}else{this.div.title=""}var a=[];for(var b in this.positions){a[b]=new Urbex.Pixel(this.positions[b].x>=0?this.positions[b].x:this.controlSize.w-(this.sizes[b].w-this.positions[b].x)+1,this.positions[b].y>=0?this.positions[b].y:this.controlSize.h-(this.sizes[b].h-this.positions[b].y)+1)}this.customRefresh(this.buttons,a,this.sizes,this.titles,this.imagesOn,this.imagesOff)}},customRefresh:function(c,a,b,f,e,d){},addImageButton:function(f,e,d,c,b){var a=Urbex.Util.createAlphaImageDiv(f,c,b,d,"relative");this.div.appendChild(a);a.title=e;a.map=this.map;if(this.slideFactor){a.slideFactor=this.slideFactor}this.buttons.push(a);return a},addDivButton:function(e,d,c,b){var a=Urbex.Util.createDiv(e,c,b,null,"relative",null,null,null);this.div.appendChild(a);a.title=d;a.map=this.map;if(this.slideFactor){a.slideFactor=this.slideFactor}this.buttons.push(a);return a},CLASS_NAME:"Urbex.Control"});Urbex.Control.TYPE_BUTTON=1;Urbex.Control.TYPE_TOGGLE=2;Urbex.Control.TYPE_TOOL=3;Urbex.Control.Logo=Urbex.Class(Urbex.Control,{TextDiv:null,copyright:"",datemin:"",datemax:"",year:"",initialize:function(a){Urbex.Util.extend(this,a);
Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(289,25);this.controlPosition=new Urbex.Pixel(0,-1);this.titles=[];this.titles[0]="";this.sizes=[];this.sizes[0]=this.size?this.size:new Urbex.Size(60,25);this.positions=[];this.positions[0]=this.position?this.position:new Urbex.Pixel(0,-1);this.imagesOn=[];this.imagesOn[0]=this.imageon?this.imageon:Urbex.Util.getImagesLocation()+"logo.png";this.imagesOff=[];this.imagesOff[0]=this.imageoff?this.imageoff:Urbex.Util.getImagesLocation()+"logo.png";year=new Date().getFullYear()},destroy:function(){Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);this.buttons=[];var a=this.addImageButton("Urbex_Control_Logo_Logo",this.titles[0],this.imagesOn[0],this.positions[0],this.sizes[0]);this.TextDiv=document.createElement("div");this.TextDiv.style.cssText="position:absolute; left:63px; top: 16px;";this.TextDiv.style.textAlign="center";
this.TextDiv.style.font="normal normal normal 8px Verdana";this.div.style.color="white";this.TextDiv.innerHTML=this.copyright;this.div.appendChild(this.TextDiv);this.map.events.register("moveend",this,this.requestCopyright);this.refresh();return this.div},refresh:function(a){aux="";if(this.map.activeView=="ORTHO"){}if(this.copyright!=""){this.copyright=this.copyright+". "}this.TextDiv.innerHTML="&copy 2004-"+year+" Blom ASA. "+this.copyright+"All rights reserved.";Urbex.Control.prototype.refresh.apply(this,arguments)},customRefresh:function(c,a,b,f,e,d){Urbex.Util.modifyAlphaImageDiv(c[0],c[0].id,a[0],b[0],e[0],null,null,null,null);this.div.style.width="100%"},eventResponse:function(a){this.requestCopyright(a)},requestCopyright:function(d){if(d!=null&&d.view=="OBLIQUE"){this.copyright="";this.dateMin="";this.dateMax="";this.refresh()}else{if(this.map.activeView.toUpperCase()!="ORTHO"){this.copyright="";this.dateMin="";this.dateMax="";this.refresh()}else{var g=Urbex.Util.createUniqueID("RequestCopyrightScr");
var b=this.map.orientation;if(this.map.zoom<15){b="ORTHO"}var a="GetOrthoInformation?usertoken="+this.map.usertoken+"&srs="+this.map.projection+"&x="+this.map.center.x+"&y="+this.map.center.y+"&layer="+b+"&zoom="+this.map.zoom+"&time="+this.map.TIME+"&baselayer="+this.map.BASELAYER+"&function=F"+g+"&format=js";if(this.map.activeView=="OBLIQUE"){a=a+"&overlay=oblique"}var c=Urbex.Proxy.getUrl(this,Urbex.Map.SERVER,Urbex.Proxy.MEASUREMENT,a);var e=this.map.createOScript(g,c);var f=this;if(navigator.appName=="Microsoft Internet Explorer"){if((e.readyState=="loaded")||(e.readyState=="complete")){f.responseCopyright(g,d);e.onreadystatechange=null}else{e.onreadystatechange=function(){if((e.readyState=="loaded")||(e.readyState=="complete")){f.responseCopyright(g,d);e.onreadystatechange=null}}}}else{e.addEventListener("load",function(k){f.responseCopyright(g,d)},false)}}}},responseCopyright:function(id){var res;try{res=eval("F"+id+"()")}catch(err){res="NOTDEFINED"}this.map.deleteOScript(id);if(res.length==3){var res_copyright=res[0];
var res_dateMin=res[1].split(" ")[0];var res_dateMax=res[2].split(" ")[0];if(res_copyright!="NoData"&&res_copyright!="?"){this.copyright=res_copyright}else{this.copyright=""}if(res_dateMin!=this.dateMin||res_dateMax!=this.dateMax){for(var i=0;i<this.map.controls.length;i++){if(this.map.controls[i].CLASS_NAME=="Urbex.Control.Metadata"){this.map.controls[i].div.style.visibility="hidden";this.map.controls[i].updateOrtho(res_dateMin,res_dateMax);break}}}this.dateMin=res_dateMin;this.dateMax=res_dateMax}else{this.copyright="";for(var i=0;i<this.map.controls.length;i++){if(this.map.controls[i].CLASS_NAME=="Urbex.Control.Metadata"){this.map.controls[i].div.style.visibility="hidden";break}}this.dateMin="";this.dateMax=""}this.refresh();for(var i=0;i<this.map.layers.length;i++){if(this.map.layers[i].CLASS_NAME=="Urbex.Layer.Overlay"){this.requestOverlayCopyright(this.map.layers[i].overlay)}}},requestOverlayCopyright:function(c){var f=Urbex.Util.createUniqueID("RequestCopyrightScr");var a="GetOrthoInformation?usertoken="+this.map.usertoken+"&srs="+this.map.projection+"&x="+this.map.center.x+"&y="+this.map.center.y+"&layer="+this.map.orientation+"&zoom="+this.map.zoom+"&time="+this.map.TIME+"&overlay="+c+"&function=F"+f+"&format=js";
var b=Urbex.Proxy.getUrl(this,Urbex.Map.SERVER,Urbex.Proxy.MEASUREMENT,a);var d=this.map.createOScript(f,b);var e=this;if(navigator.appName=="Microsoft Internet Explorer"){if((d.readyState=="loaded")||(d.readyState=="complete")){e.responseOverlayCopyright(f,ev);d.onreadystatechange=null}else{d.onreadystatechange=function(){if((d.readyState=="loaded")||(d.readyState=="complete")){e.responseOverlayCopyright(f);d.onreadystatechange=null}}}}else{d.addEventListener("load",function(g){e.responseOverlayCopyright(f)},false)}},responseOverlayCopyright:function(id){var res;try{res=eval("F"+id+"()")}catch(err){res="NOTDEFINED"}this.map.deleteOScript(id);if(res.length==3){var res_copyright=res[0];var res_dateMin=res[1].split(" ")[0];var res_dateMax=res[2].split(" ")[0];if(res_copyright!="NoData"&&res_copyright!="?"&&res_copyright!=""){this.copyright=this.copyright+" "+res_copyright}}this.refresh()},CLASS_NAME:"Urbex.Control.Logo"});Urbex.Handler=Urbex.Class({id:null,control:null,map:null,keyMask:null,active:false,evt:null,initialize:function(c,b,a){Urbex.Util.extend(this,a);
this.control=c;this.callbacks=b;if(c.map){this.setMap(c.map)}Urbex.Util.extend(this,a);this.id=Urbex.Util.createUniqueID(this.CLASS_NAME+"_")},setMap:function(a){this.map=a},checkModifiers:function(a){if(this.keyMask==null){return true}var b=(a.shiftKey?Urbex.Handler.MOD_SHIFT:0)|(a.ctrlKey?Urbex.Handler.MOD_CTRL:0)|(a.altKey?Urbex.Handler.MOD_ALT:0);return(b==this.keyMask)},activate:function(){if(this.active){return false}var b=Urbex.Events.prototype.BROWSER_EVENTS;for(var a=0;a<b.length;a++){if(this[b[a]]){this.register(b[a],this[b[a]])}}this.active=true;return true},deactivate:function(){if(!this.active){return false}var b=Urbex.Events.prototype.BROWSER_EVENTS;for(var a=0;a<b.length;a++){if(this[b[a]]){this.unregister(b[a],this[b[a]])}}this.active=false;return true},callback:function(b,a){if(b&&this.callbacks[b]){this.callbacks[b].apply(this.control,a)}},register:function(a,b){this.map.events.registerPriority(a,this,b);this.map.events.registerPriority(a,this,this.setEvent)},unregister:function(a,b){this.map.events.unregister(a,this,b);
this.map.events.unregister(a,this,this.setEvent)},setEvent:function(a){this.evt=a;return true},destroy:function(){this.deactivate();this.control=this.map=null},CLASS_NAME:"Urbex.Handler"});Urbex.Handler.MOD_NONE=0;Urbex.Handler.MOD_SHIFT=1;Urbex.Handler.MOD_CTRL=2;Urbex.Handler.MOD_ALT=4;Urbex.Handler.Click=Urbex.Class(Urbex.Handler,{delay:300,single:true,"double":false,pixelTolerance:0,stopSingle:false,stopDouble:false,timerId:null,down:null,initialize:function(c,b,a){Urbex.Handler.prototype.initialize.apply(this,arguments);if(this.pixelTolerance!=null){this.mousedown=function(d){this.down=d.xy;return true}}},mousedown:null,dblclick:function(a){if(this.passesTolerance(a)){if(this["double"]){this.callback("dblclick",[a])}this.clearTimer()}return !this.stopDouble},click:function(b){if(this.passesTolerance(b)){if(this.timerId!=null){this.clearTimer()}else{var a=this.single?Urbex.Util.extend({},b):null;this.timerId=window.setTimeout(Urbex.Function.bind(this.delayedCall,this,a),this.delay)}}return !this.stopSingle
},passesTolerance:function(b){var c=true;if(this.pixelTolerance!=null&&this.down){var a=Math.sqrt(Math.pow(this.down.x-b.xy.x,2)+Math.pow(this.down.y-b.xy.y,2));if(a>this.pixelTolerance){c=false}}return c},clearTimer:function(){if(this.timerId!=null){window.clearTimeout(this.timerId);this.timerId=null}},delayedCall:function(a){this.timerId=null;if(a){this.callback("click",[a])}},deactivate:function(){var a=false;if(Urbex.Handler.prototype.deactivate.apply(this,arguments)){this.clearTimer();this.down=null;a=true}return a},CLASS_NAME:"Urbex.Handler.Click"});Urbex.Handler.Drag=Urbex.Class(Urbex.Handler,{started:false,stopDown:true,dragging:false,last:null,start:null,oldOnselectstart:null,initialize:function(c,b,a){Urbex.Handler.prototype.initialize.apply(this,arguments)},down:function(a){},move:function(a){},up:function(a){},out:function(a){},mousedown:function(b){var a=true;this.dragging=false;if(this.checkModifiers(b)&&Urbex.Event.isLeftClick(b)){this.started=true;this.start=b.xy;this.last=b.xy;
this.map.div.style.cursor="move";this.down(b);this.callback("down",[b.xy]);Urbex.Event.stop(b);if(!this.oldOnselectstart){this.oldOnselectstart=(document.onselectstart)?document.onselectstart:function(){return true};document.onselectstart=function(){return false}}a=!this.stopDown}else{this.started=false;this.start=null;this.last=null}return a},mousemove:function(a){if(this.started){if(a.xy.x!=this.last.x||a.xy.y!=this.last.y){this.dragging=true;this.move(a);this.callback("move",[a.xy]);if(!this.oldOnselectstart){this.oldOnselectstart=document.onselectstart;document.onselectstart=function(){return false}}this.last=a.xy}}return true},mouseup:function(b){if(this.started){var a=(this.start!=this.last);this.started=false;this.dragging=false;this.map.div.style.cursor="";this.up(b);this.callback("up",[b.xy]);if(a){this.callback("done",[b.xy])}document.onselectstart=this.oldOnselectstart}return true},mouseout:function(b){if(this.started&&Urbex.Util.mouseLeft(b,this.map.div)){var a=(this.start!=this.last);
this.started=false;this.dragging=false;this.map.div.style.cursor="";this.out(b);this.callback("out",[]);if(a){this.callback("done",[b.xy])}if(document.onselectstart){document.onselectstart=this.oldOnselectstart}}return true},click:function(a){return(this.start==this.last)},activate:function(){var a=false;if(Urbex.Handler.prototype.activate.apply(this,arguments)){this.dragging=false;a=true}return a},deactivate:function(){var a=false;if(Urbex.Handler.prototype.deactivate.apply(this,arguments)){this.started=false;this.dragging=false;this.start=null;this.last=null;a=true}return a},CLASS_NAME:"Urbex.Handler.Drag"});Urbex.Handler.Box=Urbex.Class(Urbex.Handler,{dragHandler:null,boxDivClassName:"olHandlerBoxZoomBox",initialize:function(c,b,a){Urbex.Handler.prototype.initialize.apply(this,arguments);var b={down:this.startBox,move:this.moveBox,out:this.removeBox,up:this.endBox};this.dragHandler=new Urbex.Handler.Drag(this,b,{keyMask:this.keyMask})},setMap:function(a){Urbex.Handler.prototype.setMap.apply(this,arguments);
if(this.dragHandler){this.dragHandler.setMap(a)}},startBox:function(a){this.zoomBox=Urbex.Util.createDiv("zoomBox",this.dragHandler.start);this.zoomBox.className=this.boxDivClassName;this.zoomBox.style.zIndex=this.map.Z_INDEX_BASE.Popup-1;this.map.viewPortDiv.appendChild(this.zoomBox);this.map.div.style.cursor="crosshair"},moveBox:function(c){var b=Math.abs(this.dragHandler.start.x-c.x);var a=Math.abs(this.dragHandler.start.y-c.y);this.zoomBox.style.width=Math.max(1,b)+"px";this.zoomBox.style.height=Math.max(1,a)+"px";if(c.x<this.dragHandler.start.x){this.zoomBox.style.left=c.x+"px"}if(c.y<this.dragHandler.start.y){this.zoomBox.style.top=c.y+"px"}},endBox:function(b){var a;if(Math.abs(this.dragHandler.start.x-b.x)>5||Math.abs(this.dragHandler.start.y-b.y)>5){var g=this.dragHandler.start;var f=Math.min(g.y,b.y);var c=Math.max(g.y,b.y);var e=Math.min(g.x,b.x);var d=Math.max(g.x,b.x);a=new Urbex.Bounds(e,c,d,f)}else{a=this.dragHandler.start.clone()}this.removeBox();this.map.div.style.cursor="";
this.callback("done",[a])},removeBox:function(){this.map.viewPortDiv.removeChild(this.zoomBox);this.zoomBox=null},activate:function(){if(Urbex.Handler.prototype.activate.apply(this,arguments)){this.dragHandler.activate();return true}else{return false}},deactivate:function(){if(Urbex.Handler.prototype.deactivate.apply(this,arguments)){this.dragHandler.deactivate();return true}else{return false}},CLASS_NAME:"Urbex.Handler.Box"});Urbex.Handler.MouseWheel=Urbex.Class(Urbex.Handler,{wheelListener:null,mousePosition:null,initialize:function(c,b,a){Urbex.Handler.prototype.initialize.apply(this,arguments);this.wheelListener=Urbex.Function.bindAsEventListener(this.onWheelEvent,this)},destroy:function(){Urbex.Handler.prototype.destroy.apply(this,arguments);this.wheelListener=null},onWheelEvent:function(l){if(!this.map||!this.checkModifiers(l)){return}var g=false;var m=false;var f=false;var b=Urbex.Event.element(l);while((b!=null)&&!f&&!g){if(!g){try{if(b.currentStyle){c=b.currentStyle.overflow}else{var a=document.defaultView.getComputedStyle(b,null);
var c=a.getPropertyValue("overflow")}g=(c&&(c=="auto")||(c=="scroll"))}catch(d){}}if(!m){for(var k=0;k<this.map.layers.length;k++){if(b==this.map.layers[k].div||b==this.map.layers[k].pane){m=true;break}}}f=(b==this.map.div);b=b.parentNode}if(!g&&f){if(m){this.wheelZoom(l)}Urbex.Event.stop(l)}},wheelZoom:function(a){var b=0;if(!a){a=window.event}if(a.wheelDelta){b=a.wheelDelta/120;if(window.opera&&window.opera.version()<9.2){b=-b}}else{if(a.detail){b=-a.detail/3}}if(b){if(this.mousePosition){a.xy=this.mousePosition}if(!a.xy){a.xy=this.map.getPixelFromLonLat(this.map.getCenter())}if(b<0){this.callback("down",[a,b])}else{this.callback("up",[a,b])}}},mousemove:function(a){this.mousePosition=a.xy},activate:function(a){if(Urbex.Handler.prototype.activate.apply(this,arguments)){var b=this.wheelListener;Urbex.Event.observe(window,"DOMMouseScroll",b);Urbex.Event.observe(window,"mousewheel",b);Urbex.Event.observe(document,"mousewheel",b);return true}else{return false}},deactivate:function(a){if(Urbex.Handler.prototype.deactivate.apply(this,arguments)){var b=this.wheelListener;
Urbex.Event.stopObserving(window,"DOMMouseScroll",b);Urbex.Event.stopObserving(window,"mousewheel",b);Urbex.Event.stopObserving(document,"mousewheel",b);return true}else{return false}},CLASS_NAME:"Urbex.Handler.MouseWheel"});Urbex.Control.ArgParser=Urbex.Class(Urbex.Control,{center:null,zoom:null,layers:null,displayProjection:null,initialize:function(a){Urbex.Control.prototype.initialize.apply(this,arguments)},setMap:function(d){Urbex.Control.prototype.setMap.apply(this,arguments);for(var b=0;b<this.map.controls.length;b++){var c=this.map.controls[b];if((c!=this)&&(c.CLASS_NAME=="Urbex.Control.ArgParser")){if(c.displayProjection!=this.displayProjection){this.displayProjection=c.displayProjection}break}}if(b==this.map.controls.length){var a=Urbex.Util.getParameters();if(a.layers){this.layers=a.layers;this.map.events.register("addlayer",this,this.configureLayers);this.configureLayers()}if(a.y&&a.x){this.center=new Urbex.XY(parseFloat(a.x),parseFloat(a.y));if(a.zoom){this.zoom=parseInt(a.zoom)
}this.map.events.register("changebaselayer",this,this.setCenter);this.setCenter()}}},setCenter:function(){if(this.map.baseLayer){this.map.events.unregister("changebaselayer",this,this.setCenter);if(this.displayProjection){this.center.transform(this.displayProjection,this.map.getProjectionObject())}this.map.setCenter(this.center,this.zoom)}},configureLayers:function(){if(this.layers.length==this.map.layers.length){this.map.events.unregister("addlayer",this,this.configureLayers);for(var b=0;b<this.layers.length;b++){var a=this.map.layers[b];var d=this.layers.charAt(b);if(d=="B"){this.map.setBaseLayer(a)}else{if((d=="T")||(d=="F")){a.setVisibility(d=="T")}}}}},CLASS_NAME:"Urbex.Control.ArgParser"});Urbex.Control.Attribution=Urbex.Class(Urbex.Control,{separator:", ",initialize:function(a){Urbex.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.map.events.un({removelayer:this.updateAttribution,addlayer:this.updateAttribution,changelayer:this.updateAttribution,changebaselayer:this.updateAttribution,scope:this});
Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(){Urbex.Control.prototype.draw.apply(this,arguments);this.map.events.on({changebaselayer:this.updateAttribution,changelayer:this.updateAttribution,addlayer:this.updateAttribution,removelayer:this.updateAttribution,scope:this});this.updateAttribution();return this.div},updateAttribution:function(){var c=[];if(this.map&&this.map.layers){for(var b=0;b<this.map.layers.length;b++){var a=this.map.layers[b];if(a.attribution&&a.getVisibility()){c.push(a.attribution)}}this.div.innerHTML=c.join(this.separator)}},CLASS_NAME:"Urbex.Control.Attribution"});Urbex.Control.ChangeView=Urbex.Class(Urbex.Control,{slideFactor:50,initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(48,16);this.controlPosition=new Urbex.Pixel(70,19);this.titles=[];this.titles[0]="Change view type";this.sizes=[];this.sizes[0]=this.size?this.size:new Urbex.Size(48,16);this.positions=[];
this.positions[0]=this.position?this.position:new Urbex.Pixel(0,0);this.imagesOn=[];this.imagesOn[0]=this.imageortho?this.imageortho:Urbex.Util.getImagesLocation()+"ortho_on.png";this.imagesOn[1]=this.imageoblique?this.imageoblique:Urbex.Util.getImagesLocation()+"oblique_on.png";this.imagesOff=[]},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);this.buttons=[];var a=this.addImageButton("Urbex_Control_CangeView_Button",this.titles[0],this.imagesOn[0],this.positions[0],this.sizes[0]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDown,this));Urbex.Event.observe(a,"dblclick",this.doubleClick);Urbex.Event.observe(a,"click",this.doubleClick);this.map.events.register("orientationchanged",this,this.OriChanged);this.refresh();return this.div},OriChanged:function(){this.refresh();return true},doubleClick:function(a){Urbex.Event.stop(a);return false},buttonDown:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)
}if(this.map.activeView=="OBLIQUE"){this.map.setView(null,"ORTHO",null,this.map.zoom+15)}else{this.map.setView(null,"OBLIQUE",null,this.map.zoom-15)}},setPosition:function(a){this.setControlPosition(a)},setSize:function(a){this.sizes[0]=a;this.setControlSize(a)},setImageOrtho:function(a){this.imagesOn[0]=a;this.imagesOff[0]=a;this.refresh()},setImageOblique:function(a){this.imagesOn[1]=a;this.imagesOff[1]=a;this.refresh()},setTitle:function(a){this.titles[0]=a;this.refresh()},customRefresh:function(d,b,c,g,f,e){var a=this.map.activeView;if(a=="ORTHO"){d[0].title=g[0];Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],f[0],null,null,null,null)}else{if(a=="OBLIQUE"){d[0].title=g[1];Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],f[1],null,null,null,null)}}},CLASS_NAME:"Urbex.Control.ChangeView"});Urbex.Control.ChangeView2=Urbex.Class(Urbex.Control,{slideFactor:50,initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(48,36);
this.controlPosition=new Urbex.Pixel(70,19);this.titles=[];this.titles[0]="Change view to ortho";this.titles[1]="Change view to oblique";this.sizes=[];this.sizes[0]=this.sizeortho?this.sizeortho:new Urbex.Size(48,16);this.sizes[1]=this.sizeoqlique?this.sizeoqlique:new Urbex.Size(48,16);this.positions=[];this.positions[0]=this.positionortho?this.positionortho:new Urbex.Pixel(0,0);this.positions[1]=this.positionoblique?this.positionoblique:new Urbex.Pixel(0,-1);this.imagesOn=[];this.imagesOn[0]=this.selortho?this.selortho:Urbex.Util.getImagesLocation()+"ortho_on.png";this.imagesOn[1]=this.seloblique?this.seloblique:Urbex.Util.getImagesLocation()+"oblique_on.png";this.imagesOff=[];this.imagesOff[0]=this.imageortho?this.imageortho:Urbex.Util.getImagesLocation()+"ortho.png";this.imagesOff[1]=this.imageoblique?this.imageoblique:Urbex.Util.getImagesLocation()+"oblique.png"},destroy:function(){Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);
this.buttons=[];var a=this.addImageButton("Urbex_Control_ChangeView2_viewortho",this.titles[0],this.imagesOn[0],this.positions[0],this.sizes[0]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDownOrtho,this));Urbex.Event.observe(a,"dblclick",Urbex.Function.bindAsEventListener(this.doubleClick,this));Urbex.Event.observe(a,"click",Urbex.Function.bindAsEventListener(this.doubleClick,this));a=this.addImageButton("Urbex_Control_ChangeView2_viewoblique",this.titles[1],this.imagesOff[1],this.positions[1],this.sizes[1]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDownOblique,this));Urbex.Event.observe(a,"dblclick",Urbex.Function.bindAsEventListener(this.doubleClick,this));Urbex.Event.observe(a,"click",Urbex.Function.bindAsEventListener(this.doubleClick,this));this.map.events.register("orientationchanged",this,this.OriChanged);this.refresh();return this.div},OriChanged:function(){this.refresh();return true},doubleClick:function(a){Urbex.Event.stop(a);
return false},buttonDownOrtho:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}if(this.map.activeView=="OBLIQUE"){this.map.setView(null,"ORTHO",null,this.map.zoom+15)}},buttonDownOblique:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}if(this.map.activeView=="ORTHO"){this.map.setView(null,"OBLIQUE",null,this.map.zoom-15)}},setPosition:function(a){this.setControlPosition(a)},setSize:function(a){this.setControlSize(a)},setPositionOrtho:function(a){this.positions[0]=a;this.refresh(this.map.activeView)},setPositionOblique:function(a){this.positions[1]=a;this.refresh(this.map.activeView)},setSizeOrtho:function(a){this.sizes[0]=a;this.refresh(this.map.activeView)},setSizeOblique:function(a){this.sizes[1]=a;this.refresh(this.map.activeView)},setImageOrtho:function(a){this.imagesOff[0]=a;this.refresh(this.map.activeView)},setImageOblique:function(a){this.imagesOff[1]=a;this.refresh(this.map.activeView)},setSelectionOrtho:function(a){this.imagesOn[0]=a;
this.refresh(this.map.activeView)},setSelectionOblique:function(a){this.imagesOn[1]=a;this.refresh(this.map.activeView)},setTitleOrtho:function(a){this.titles[0]=a;this.refresh()},setTitleOblique:function(a){this.titles[1]=a;this.refresh()},customRefresh:function(d,b,c,g,f,e){var a=this.map.activeView;this.buttons[0].title=g[0];this.buttons[1].title=g[1];if(a=="ORTHO"){Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],f[0],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[1],d[1].id,b[1],c[1],e[1],null,null,null,null)}else{Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],e[0],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[1],d[1].id,b[1],c[1],f[1],null,null,null,null)}},CLASS_NAME:"Urbex.Control.ChangeView2"});Urbex.Control.ChangeOrientation=Urbex.Class(Urbex.Control,{slideFactor:50,initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(122,66);this.controlPosition=new Urbex.Pixel(4,4);
this.titles=[];this.titles[0]="";this.titles[1]="Change orientation to ortho";this.titles[2]="Change orientation to north";this.titles[3]="Change orientation to south";this.titles[4]="Change orientation to east";this.titles[5]="Change orientation to west";this.sizes=[];this.sizes[0]=this.sizeGround?this.sizeGround:new Urbex.Size(122,66);this.sizes[1]=this.sizeOrtho?this.sizeOrtho:new Urbex.Size(17,17);this.sizes[2]=this.sizeNorth?this.sizeNorth:new Urbex.Size(17,17);this.sizes[3]=this.sizeSouth?this.sizeSouth:new Urbex.Size(17,17);this.sizes[4]=this.sizeEast?this.sizeEast:new Urbex.Size(17,17);this.sizes[5]=this.sizeWest?this.sizeWest:new Urbex.Size(17,17);this.positions=[];this.positions[0]=this.imgGround?this.imgGround:new Urbex.Pixel(0,0);this.positions[1]=this.posOrtho?this.posOrtho:new Urbex.Pixel(24,25);this.positions[2]=this.posNorth?this.posNorth:new Urbex.Pixel(24,8);this.positions[3]=this.posSouth?this.posSouth:new Urbex.Pixel(24,42);this.positions[4]=this.posEast?this.posEast:new Urbex.Pixel(40,25);
this.positions[5]=this.posWest?this.posWest:new Urbex.Pixel(8,25);this.imagesOn=[];this.imagesOn[0]=this.imgGround?this.imgGround:Urbex.Util.getImagesLocation()+"grnd.png";this.imagesOn[1]=this.selOrtho?this.selOrtho:Urbex.Util.getImagesLocation()+"arrow_O_on.png";this.imagesOn[2]=this.selNorth?this.selNorth:Urbex.Util.getImagesLocation()+"arrow_N_on.png";this.imagesOn[3]=this.selSouth?this.selSouth:Urbex.Util.getImagesLocation()+"arrow_S_on.png";this.imagesOn[4]=this.selEast?this.selEast:Urbex.Util.getImagesLocation()+"arrow_E_on.png";this.imagesOn[5]=this.selWest?this.selWest:Urbex.Util.getImagesLocation()+"arrow_W_on.png";this.imagesOff=[];this.imagesOff[0]=this.imgGround?this.imgGround:Urbex.Util.getImagesLocation()+"grnd.png";this.imagesOff[1]=this.imgOrtho?this.imgOrtho:Urbex.Util.getImagesLocation()+"arrow_O.png";this.imagesOff[2]=this.imgNorth?this.imgNorth:Urbex.Util.getImagesLocation()+"arrow_N.png";this.imagesOff[3]=this.imgSouth?this.imgSouth:Urbex.Util.getImagesLocation()+"arrow_S.png";
this.imagesOff[4]=this.imgEast?this.imgEast:Urbex.Util.getImagesLocation()+"arrow_E.png";this.imagesOff[5]=this.imgWest?this.imgWest:Urbex.Util.getImagesLocation()+"arrow_W.png"},destroy:function(){Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);this.buttons=[];var a=this.addImageButton("Urbex_Control_ChangeOrientation_ground",this.titles[0],this.imagesOn[0],this.positions[0],this.sizes[0]);a=this.addImageButton("Urbex_Control_ChangeOrientation_ortho",this.titles[1],this.imagesOn[1],this.positions[1],this.sizes[1]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDownOrtho,this));Urbex.Event.observe(a,"dblclick",Urbex.Function.bindAsEventListener(this.doubleClick,this));Urbex.Event.observe(a,"click",Urbex.Function.bindAsEventListener(this.doubleClick,this));a=this.addImageButton("Urbex_Control_ChangeOrientation_north",this.titles[2],this.imagesOn[2],this.positions[2],this.sizes[2]);
Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDownNorth,this));Urbex.Event.observe(a,"dblclick",Urbex.Function.bindAsEventListener(this.doubleClick,this));Urbex.Event.observe(a,"click",Urbex.Function.bindAsEventListener(this.doubleClick,this));a=this.addImageButton("Urbex_Control_ChangeOrientation_south",this.titles[3],this.imagesOn[3],this.positions[3],this.sizes[3]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDownSouth,this));Urbex.Event.observe(a,"dblclick",Urbex.Function.bindAsEventListener(this.doubleClick,this));Urbex.Event.observe(a,"click",Urbex.Function.bindAsEventListener(this.doubleClick,this));a=this.addImageButton("Urbex_Control_ChangeOrientation_east",this.titles[4],this.imagesOn[4],this.positions[4],this.sizes[4]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDownEast,this));Urbex.Event.observe(a,"dblclick",Urbex.Function.bindAsEventListener(this.doubleClick,this));Urbex.Event.observe(a,"click",Urbex.Function.bindAsEventListener(this.doubleClick,this));
a=this.addImageButton("Urbex_Control_ChangeOrientation_west",this.titles[5],this.imagesOn[5],this.positions[5],this.sizes[5]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDownWest,this));Urbex.Event.observe(a,"dblclick",Urbex.Function.bindAsEventListener(this.doubleClick,this));Urbex.Event.observe(a,"click",Urbex.Function.bindAsEventListener(this.doubleClick,this));this.map.events.register("orientationchanged",this,this.OriChanged);this.refresh();return this.div},OriChanged:function(){this.refresh();return true},doubleClick:function(a){Urbex.Event.stop(a);return false},buttonDownNorth:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}}if(this.map.multiObliqueMode){for(var c=0;c<this.map.controls.length;c++){if(this.map.controls[c].CLASS_NAME=="Urbex.Control.MultiOblique"){this.map.orientation="NORTH";this.map.controls[c].prepareMap();this.refresh();break}}}else{if(this.map.activeView=="ORTHO"){var b={};b.center=this.map.center;b.zoom=this.map.zoom;
b.orientation="NORTH";this.map.setOrthoOrientation(null,null,null,b)}else{this.map.getWorldCenter(this.callOrientationNorth)}}Urbex.Event.stop(a)},callOrientationNorth:function(c,a,b){if(!b){b={}}b.center=a;b.orientation="NORTH";b.zoom=c.zoom;c.setObliqueOrientation(null,null,null,b)},buttonDownSouth:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}}if(this.map.multiObliqueMode){for(var c=0;c<this.map.controls.length;c++){if(this.map.controls[c].CLASS_NAME=="Urbex.Control.MultiOblique"){this.map.orientation="SOUTH";this.map.controls[c].prepareMap();this.refresh();break}}}else{if(this.map.activeView=="ORTHO"){var b={};b.center=this.map.center;b.zoom=this.map.zoom;b.orientation="SOUTH";this.map.setOrthoOrientation(null,null,null,b)}else{this.map.getWorldCenter(this.callOrientationSouth)}}Urbex.Event.stop(a)},callOrientationSouth:function(c,a,b){if(!b){b={}}b.center=a;b.orientation="SOUTH";b.zoom=c.zoom;c.setObliqueOrientation(null,null,null,b)},buttonDownOrtho:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return
}}if(this.map.multiObliqueMode){}else{if(this.map.activeView=="ORTHO"){var b={};b.center=this.map.center;b.zoom=this.map.zoom;b.orientation="ORTHO";this.map.setOrthoOrientation(null,null,null,b)}else{var c=this.map.zoom+15;this.map.setView(null,"ORTHO","ORTHO",c)}}Urbex.Event.stop(a)},buttonDownEast:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}}if(this.map.multiObliqueMode){for(var c=0;c<this.map.controls.length;c++){if(this.map.controls[c].CLASS_NAME=="Urbex.Control.MultiOblique"){this.map.orientation="EAST";this.map.controls[c].prepareMap();this.refresh();break}}}else{if(this.map.activeView=="ORTHO"){var b={};b.center=this.map.center;b.zoom=this.map.zoom;b.orientation="EAST";this.map.setOrthoOrientation(null,null,null,b)}else{this.map.getWorldCenter(this.callOrientationEast)}}Urbex.Event.stop(a)},callOrientationEast:function(c,a,b){if(!b){b={}}b.center=a;b.orientation="EAST";b.zoom=c.zoom;c.setObliqueOrientation(null,null,null,b)},buttonDownWest:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return
}}if(this.map.multiObliqueMode){for(var c=0;c<this.map.controls.length;c++){if(this.map.controls[c].CLASS_NAME=="Urbex.Control.MultiOblique"){this.map.orientation="WEST";this.map.controls[c].prepareMap();this.refresh();break}}}else{if(this.map.activeView=="ORTHO"){var b={};b.center=this.map.center;b.zoom=this.map.zoom;b.orientation="WEST";this.map.setOrthoOrientation(null,null,null,b)}else{this.map.getWorldCenter(this.callOrientationWest)}}Urbex.Event.stop(a)},callOrientationWest:function(c,a,b){if(!b){b={}}b.center=a;b.orientation="WEST";b.zoom=c.zoom;c.setObliqueOrientation(null,null,null,b)},setPosition:function(e,c,a,d,b,f){if(e!=null){this.positions[0]=e}if(d!=null){this.positions[1]=d}if(c!=null){this.positions[2]=c}if(a!=null){this.positions[3]=a}if(b!=null){this.positions[4]=b}if(f!=null){this.positions[5]=f}this.refresh()},setSize:function(e,c,a,d,b,f){if(e!=null){this.sizes[0]=e;this.controlSize=e}if(d!=null){this.sizes[1]=d}if(c!=null){this.sizes[2]=c}if(a!=null){this.sizes[3]=a
}if(b!=null){this.sizes[4]=b}if(f!=null){this.sizes[5]=f}this.refresh()},setImage:function(e,c,a,d,b,f){if(e!=null){this.imagesOn[0]=e;this.imagesOff[0]=e}if(d!=null){this.imagesOff[1]=d}if(c!=null){this.imagesOff[2]=c}if(a!=null){this.imagesOff[3]=a}if(b!=null){this.imagesOff[4]=b}if(f!=null){this.imagesOff[5]=f}this.refresh()},setImageSelect:function(c,a,d,b,e){if(d!=null){this.imagesOn[1]=d}if(c!=null){this.imagesOn[2]=c}if(a!=null){this.imagesOn[3]=a}if(b!=null){this.imagesOn[4]=b}if(e!=null){this.imagesOn[5]=e}this.refresh()},setTitle:function(c,a,d,b,e){if(d!=null){this.titles[1]=d}if(c!=null){this.titles[2]=c}if(a!=null){this.titles[3]=a}if(b!=null){this.titles[4]=b}if(e!=null){this.titles[5]=e}this.refresh()},customRefresh:function(d,a,c,g,f,e){var b=this.map.orientation;Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,a[0],c[0],e[0],null,null,null,null);if(b=="ORTHO"){Urbex.Util.modifyAlphaImageDiv(d[1],d[1].id,a[1],c[1],f[1],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[2],d[2].id,a[2],c[2],e[2],null,null,null,null);
Urbex.Util.modifyAlphaImageDiv(d[3],d[3].id,a[3],c[3],e[3],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[4],d[4].id,a[4],c[4],e[4],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[5],d[5].id,a[5],c[5],e[5],null,null,null,null)}else{if(b=="NORTH"){Urbex.Util.modifyAlphaImageDiv(d[1],d[1].id,a[1],c[1],e[1],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[2],d[2].id,a[2],c[2],f[2],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[3],d[3].id,a[3],c[3],e[3],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[4],d[4].id,a[4],c[4],e[4],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[5],d[5].id,a[5],c[5],e[5],null,null,null,null)}else{if(b=="SOUTH"){Urbex.Util.modifyAlphaImageDiv(d[1],d[1].id,a[1],c[1],e[1],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[2],d[2].id,a[2],c[2],e[2],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[3],d[3].id,a[3],c[3],f[3],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[4],d[4].id,a[4],c[4],e[4],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[5],d[5].id,a[5],c[5],e[5],null,null,null,null)
}else{if(b=="EAST"){Urbex.Util.modifyAlphaImageDiv(d[1],d[1].id,a[1],c[1],e[1],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[2],d[2].id,a[2],c[2],e[2],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[3],d[3].id,a[3],c[3],e[3],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[4],d[4].id,a[4],c[4],f[4],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[5],d[5].id,a[5],c[5],e[5],null,null,null,null)}else{if(b=="WEST"){Urbex.Util.modifyAlphaImageDiv(d[1],d[1].id,a[1],c[1],e[1],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[2],d[2].id,a[2],c[2],e[2],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[3],d[3].id,a[3],c[3],e[3],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[4],d[4].id,a[4],c[4],e[4],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(d[5],d[5].id,a[5],c[5],f[5],null,null,null,null)}}}}}d[1].title=g[1];d[2].title=g[2];d[3].title=g[3];d[4].title=g[4];d[5].title=g[5]},CLASS_NAME:"Urbex.Control.ChangeOrientation"});Urbex.Control.ZoomIn=Urbex.Class(Urbex.Control,{slideFactor:50,initialize:function(a){Urbex.Util.extend(this,a);
Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(20,20);this.controlPosition=new Urbex.Pixel(25,76);this.titles=[];this.titles[0]="Increase the zoom on the map";this.sizes=[];this.sizes[0]=this.size?this.size:new Urbex.Size(22,20);this.positions=[];this.positions[0]=this.position?this.position:new Urbex.Pixel(0,0);this.imagesOn=[];this.imagesOn[0]=this.imageon?this.imageon:Urbex.Util.getImagesLocation()+"zoom-in.png";this.imagesOff=[];this.imagesOff[0]=this.imageoff?this.imageoff:Urbex.Util.getImagesLocation()+"zoom-in.png"},destroy:function(){Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);this.buttons=[];var a=this.addImageButton("Urbex_Control_Area_Area",this.titles[0],this.imagesOn[0],this.positions[0],this.sizes[0]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDown,this));Urbex.Event.observe(a,"dblclick",Urbex.Function.bindAsEventListener(this.doubleClick,this));
Urbex.Event.observe(a,"click",Urbex.Function.bindAsEventListener(this.doubleClick,this));this.refresh();return this.div},doubleClick:function(a){Urbex.Event.stop(a);return false},buttonDown:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}this.map.zoomIn()},setPosition:function(a){this.setControlPosition(a)},setSize:function(a){this.sizes[0]=a;this.setControlSize(a)},setImage:function(a){this.imagesOn[0]=a;this.imagesOff[0]=a;this.refresh()},setTitle:function(a){this.titles[0]=a;this.refresh()},customRefresh:function(c,a,b,f,e,d){Urbex.Util.modifyAlphaImageDiv(c[0],c[0].id,a[0],b[0],e[0],null,null,null,null);c[0].title=f[0]},CLASS_NAME:"Urbex.Control.ZoomIn"});Urbex.Control.ZoomOut=Urbex.Class(Urbex.Control,{slideFactor:50,initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(20,20);this.controlPosition=new Urbex.Pixel(25,247);this.titles=[];this.titles[0]="Increase the zoom on the map";
this.sizes=[];this.sizes[0]=this.size?this.size:new Urbex.Size(22,20);this.positions=[];this.positions[0]=this.position?this.position:new Urbex.Pixel(0,0);this.imagesOn=[];this.imagesOn[0]=this.imageon?this.imageon:Urbex.Util.getImagesLocation()+"zoom-out.png";this.imagesOff=[];this.imagesOff[0]=this.imageoff?this.imageoff:Urbex.Util.getImagesLocation()+"zoom-out.png"},destroy:function(){Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);this.buttons=[];var a=this.addImageButton("Urbex_Control_Area_Area",this.titles[0],this.imagesOn[0],this.positions[0],this.sizes[0]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDown,this));Urbex.Event.observe(a,"dblclick",Urbex.Function.bindAsEventListener(this.doubleClick,this));Urbex.Event.observe(a,"click",Urbex.Function.bindAsEventListener(this.doubleClick,this));this.refresh();return this.div},doubleClick:function(a){Urbex.Event.stop(a);
return false},buttonDown:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}this.map.zoomOut()},setPosition:function(a){this.setControlPosition(a)},setSize:function(a){this.sizes[0]=a;this.setControlSize(a)},setImage:function(a){this.imagesOn[0]=a;this.imagesOff[0]=a;this.refresh()},setTitle:function(a){this.titles[0]=a;this.refresh()},customRefresh:function(c,a,b,f,e,d){Urbex.Util.modifyAlphaImageDiv(c[0],c[0].id,a[0],b[0],e[0],null,null,null,null);c[0].title=f[0]},CLASS_NAME:"Urbex.Control.ZoomOut"});Urbex.Control.ZoomBar=Urbex.Class(Urbex.Control,{slideFactor:50,isIntelligent:false,isAutoZoomLimit:false,isVisible:true,controlZoomOut:null,initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(20,152);this.controlPosition=new Urbex.Pixel(25,96);this.titles=[];this.titles[0]=this.titlebar?this.titlebar:"Click to change the zoom on the map";this.titles[1]=this.titleslider?this.titleslider:"Move up or down to change the zoom on the map";
this.sizes=[];this.sizes[0]=this.sizebar?this.sizebar:new Urbex.Size(20,8);this.sizes[1]=this.sizeslider?this.sizeslider:new Urbex.Size(16,7);this.positions=[];this.positions[0]=this.positionbar?this.positionbar:new Urbex.Pixel(0,0);this.positions[1]=this.positionsslider?this.positionsslider:new Urbex.Pixel(4,0);this.imagesOn=[];this.imagesOn[0]=this.imagebar?this.imagebar:Urbex.Util.getImagesLocation()+"zoombar.png";this.imagesOn[1]=this.imageslider?this.imageslider:Urbex.Util.getImagesLocation()+"slider.png";this.imagesOff=[]},draw:function(){Urbex.Control.prototype.draw.apply(this,arguments);var b=this.map.getSize();if(this.isIntelligent&&b.h<300){this.setVisible(false)}else{this.setVisible(true)}this.buttons=[];var a=this.addDivButton("Urbex_Control_ZoomBar_Bar",this.titles[0],this.positions[0],this.sizes[0]);a.style.background="transparent url("+this.imagesOn[0]+") repeat-y";this.barEvents=new Urbex.Events(this,a,null,true);this.barEvents.on({mousedown:this.mouseDownOnBar,mousemove:this.passEventToSlider,mouseup:this.doubleClick,dblclick:this.doubleClick,click:this.doubleClick});
a=this.addImageButton("Urbex_Control_ZoomBar_Slider",this.titles[1],this.imagesOn[1],this.positions[1],this.sizes[1]);this.sliderEvents=new Urbex.Events(this,a,null,false);this.sliderEvents.on({mousedown:this.mouseSliderDown,mousemove:this.mouseSliderDrag,mouseup:this.mouseSliderUp,dblclick:this.doubleClick,click:this.doubleClick});this.map.events.register("zoomlimitschanged",this,this.updateZoomLimits);this.map.events.register("viewchanged",this,this.updateZoomLimits);this.map.events.register("zoomend",this,this.updateZoomLimits);this.updateSlider();this.refresh();return this.div},updateZoomLimits:function(){if(!this.map.getMaxZoom()){var a=this;setTimeout(function(){a.updateZoomLimits()},100);return}this.updateZoomLimits_()},updateZoomLimits_:function(){if(!this.map.maxZoom){this.map.maxZoom=20}var a=this.map.getMaxZoom()-this.map.getMinZoom();this.controlSize.h=this.sizes[0].h*a;this.updateSlider();this.refresh();if(this.isVisible){if(this.controlZoomOut){this.controlZoomOut.controlPosition.y=this.controlPosition.y+this.controlSize.h;
this.controlZoomOut.refresh()}}var b=this.map.getZoom();if(b>this.map.getMaxZoom()){this.map.zoomTo(this.map.getMaxZoom())}else{if(b<this.map.getMinZoom()){this.map.zoomTo(this.map.getMinZoom())}}},onMapResize:function(){Urbex.Control.prototype.draw.apply(this,arguments);var a=this.map.getSize();if(this.isIntelligent&&a.h<300){this.setVisible(false)}else{this.setVisible(true)}},doubleClick:function(a){Urbex.Event.stop(a);return false},mouseDownOnBar:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}var b=Math.floor((a.xy.y+this.sizes[0].h/2)/this.sizes[0].h)*this.sizes[0].h;if(!isNaN(b)&&isFinite(b)){this.positions[1].y=b}this.updateZoom()},passEventToSlider:function(a){this.sliderEvents.handleBrowserEvent(a)},mouseSliderDown:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}this.map.events.on({mousemove:this.passEventToSlider,mouseup:this.passEventToSlider,scope:this});this.mouseDragStart=a.xy.clone();this.div.style.cursor="move"
},mouseSliderDrag:function(a){if(this.mouseDragStart){Urbex.Event.stop(a);this.positions[1].y-=this.mouseDragStart.y-a.xy.y;if(this.positions[1].y<0){this.positions[1].y=0}if(this.positions[1].y>this.controlSize.h){this.positions[1].y=this.controlSize.h}this.mouseDragStart=a.xy.clone();this.refresh()}},mouseSliderUp:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}if(this.mouseDragStart){this.div.style.cursor="";this.map.events.un({mousemove:this.passEventToSlider,mouseup:this.passEventToSlider,scope:this});var b=Math.floor((this.positions[1].y+this.sizes[0].h/2)/this.sizes[0].h)*this.sizes[0].h;if(!isNaN(b)&&isFinite(b)){this.positions[1].y=b}this.mouseDragStart=null;this.updateZoom();Urbex.Event.stop(a)}},updateZoom:function(){var a=Math.floor((this.positions[1].y+this.sizes[0].h/2)/(this.sizes[0].h));this.map.zoomTo(this.map.getMaxZoom()-a)},updateSlider:function(){var a=(this.map.getMaxZoom()-this.map.getZoom())*this.sizes[0].h;if(!isNaN(a)&&isFinite(a)){this.positions[1].y=a
}this.refresh()},setVisible:function(a){this.isVisible=!!a;if(this.isVisible){this.div.style.display="block";if(this.controlZoomOut){this.controlZoomOut.controlPosition.y=this.controlPosition.y+this.controlSize.h;this.controlZoomOut.refresh()}}else{this.div.style.display="none";if(this.controlZoomOut){this.controlZoomOut.controlPosition.y=this.controlPosition.y;this.controlZoomOut.refresh()}}},setPosition:function(a){this.setControlPosition(a)},setControlSize:function(b){var a={message:"This control set its size itself. Use setSizeBar to adjust the size of one step and the width of the control.",cause:null};throw a},setSize:function(b){var a={message:"This control set its size itself. Use setSizeBar to adjust the size of one step and the width of the control.",cause:null};throw a},setSizeBar:function(b){this.sizes[0]=b;var a=this.getMaximumZoom()-this.getMinimumZoom();this.controlSize.h=this.sizes[0].h*a;this.refresh()},setSizeSlider:function(a){this.sizes[1]=a;this.refresh()},setImageBar:function(a){this.imagesOn[0]=a;
this.refresh()},setImageSlider:function(a){this.imagesOn[1]=a;this.refresh()},setTitleBar:function(a){this.titles[0]=a;this.refresh()},setTitleSlider:function(a){this.titles[1]=a;this.refresh()},customRefresh:function(c,a,b,f,e,d){a[1].y-=4;if(navigator.userAgent.search("MSIE 6")!=-1){e[0]=e[0].replace(/\.png$/i,".gif")}Urbex.Util.modifyElement(c[0],c[0].id,a[0],this.controlSize,null,null,null,null,null);Urbex.Util.modifyAlphaImageDiv(c[1],c[1].id,a[1],b[1],e[1],null,null,null,null);c[0].title=f[0];c[1].title=f[1];c[0].style.background="transparent url("+e[0]+") repeat-y"},CLASS_NAME:"Urbex.Control.ZoomBar"});Urbex.Control.ZoomBox=Urbex.Class(Urbex.Control,{type:Urbex.Control.TYPE_TOOL,out:false,draw:function(){this.handler=new Urbex.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask})},zoomBox:function(k){if(k instanceof Urbex.Bounds){if(!this.out){var l=this.map.getLonLatFromPixel(new Urbex.Pixel(k.left,k.bottom));var o=this.map.getLonLatFromPixel(new Urbex.Pixel(k.right,k.top));
var b=new Urbex.Bounds(l.x,l.y,o.x,o.y)}else{var g=Math.abs(k.right-k.left);var m=Math.abs(k.top-k.bottom);var e=Math.min((this.map.size.h/m),(this.map.size.w/g));var p=this.map.getExtent();var a=this.map.getLonLatFromPixel(k.getCenterPixel());var c=a.x-(p.getWidth()/2)*e;var f=a.x+(p.getWidth()/2)*e;var n=a.y-(p.getHeight()/2)*e;var d=a.y+(p.getHeight()/2)*e;var b=new Urbex.Bounds(c,n,f,d)}this.map.zoomToExtent(b)}else{if(!this.out){this.map.setCenter(this.map.getLonLatFromPixel(k),this.map.getZoom()+1)}else{this.map.setCenter(this.map.getLonLatFromPixel(k),this.map.getZoom()-1)}}},CLASS_NAME:"Urbex.Control.ZoomBox"});Urbex.Control.DragPan=Urbex.Class(Urbex.Control,{type:Urbex.Control.TYPE_TOOL,panned:false,draw:function(){this.handler=new Urbex.Handler.Drag(this,{move:this.panMap,done:this.panMapDone})},panMap:function(a){this.panned=true;this.map.$$$_mouse_xy=a;this.map.pan(this.handler.last.x-a.x,this.handler.last.y-a.y,{dragging:this.handler.dragging,animate:false})},panMapDone:function(a){if(this.panned){this.panMap(a);
this.panned=false}},CLASS_NAME:"Urbex.Control.DragPan"});Urbex.Control.Navigation=Urbex.Class(Urbex.Control,{dragPan:null,zoomBox:null,zoomWheelEnabled:true,initialize:function(a){this.handlers={};Urbex.Control.prototype.initialize.apply(this,arguments)},destroy:function(){this.deactivate();if(this.dragPan){this.dragPan.destroy()}this.dragPan=null;if(this.zoomBox){this.zoomBox.destroy()}this.zoomBox=null;Urbex.Control.prototype.destroy.apply(this,arguments)},activate:function(){this.dragPan.activate();if(this.zoomWheelEnabled){this.handlers.wheel.activate()}this.handlers.click.activate();this.zoomBox.activate();return Urbex.Control.prototype.activate.apply(this,arguments)},deactivate:function(){this.zoomBox.deactivate();this.dragPan.deactivate();this.handlers.click.deactivate();this.handlers.wheel.deactivate();return Urbex.Control.prototype.deactivate.apply(this,arguments)},draw:function(){this.handlers.click=new Urbex.Handler.Click(this,{dblclick:this.defaultDblClick},{"double":true,stopDouble:true});
this.dragPan=new Urbex.Control.DragPan({map:this.map});this.zoomBox=new Urbex.Control.ZoomBox({map:this.map,keyMask:Urbex.Handler.MOD_SHIFT});this.handlers.wheel=new Urbex.Handler.MouseWheel(this,{up:this.wheelUp,down:this.wheelDown},null);this.dragPan.draw();this.zoomBox.draw();this.activate()},defaultDblClick:function(b){var c=this.map.getZoom();var a=this.map.getLonLatFromViewPortPx(b.xy);this.map.$$$_mouse_dblclick_xy_fromOrtho=a;if(c<this.maxZoom){this.map.setCenter(a,c+1)}else{this.map.setCenter(a,c)}},wheelChange:function(k,c){var f=this.map.getZoom()+c;if(f>this.map.getMaxZoom()){f=this.map.getMaxZoom()}else{if(f<this.map.getMinZoom()){f=this.map.getMinZoom()}}if(!this.map.isValidZoomLevel(f)){return}var l=this.map.getSize();var e=null;var d=null;if(this.map.activeView=="ORTHO"){if(this.map.orientation=="NORTH"||this.map.orientation=="ORTHO"){e=-k.xy.x+l.w/2;d=k.xy.y-l.h/2}else{if(this.map.orientation=="SOUTH"){e=k.xy.x-l.w/2;d=-k.xy.y+l.h/2}else{if(this.map.orientation=="EAST"){e=k.xy.y-l.h/2;
d=k.xy.x-l.w/2}else{if(this.map.orientation=="WEST"){e=-k.xy.y+l.h/2;d=-k.xy.x+l.w/2}}}}}else{e=-k.xy.x+l.w/2;d=k.xy.y-l.h/2}var g=this.map.baseLayer.getResolutionForZoom(f);var a=this.map.getLonLatFromPixel(k.xy);var b=new Urbex.XY(a.x+e*g,a.y+d*g);this.map.$$$_mouse_xy=this.map.$$$_mouse_wheel_xy=k.xy;this.map.setCenter(b,f)},wheelUp:function(a){this.wheelChange(a,1)},wheelDown:function(a){this.wheelChange(a,-1)},disableZoomWheel:function(){this.zoomWheelEnabled=false;this.handlers.wheel.deactivate()},enableZoomWheel:function(){this.zoomWheelEnabled=true;if(this.active){this.handlers.wheel.activate()}},CLASS_NAME:"Urbex.Control.Navigation"});Urbex.Rico=new Object();Urbex.Rico.Corner={round:function(d,b){d=Urbex.Util.getElement(d);this._setOptions(b);var a=this.options.color;if(this.options.color=="fromElement"){a=this._background(d)}var c=this.options.bgColor;if(this.options.bgColor=="fromParent"){c=this._background(d.offsetParent)}this._roundCornersImpl(d,a,c)},changeColor:function(c,b){c.style.backgroundColor=b;
var a=c.parentNode.getElementsByTagName("span");for(var d=0;d<a.length;d++){a[d].style.backgroundColor=b}},changeOpacity:function(c,f){var d=f;var a="alpha(opacity="+f*100+")";c.style.opacity=d;c.style.filter=a;var b=c.parentNode.getElementsByTagName("span");for(var e=0;e<b.length;e++){b[e].style.opacity=d;b[e].style.filter=a}},reRound:function(d,c){var b=d.parentNode.childNodes[0];var a=d.parentNode.childNodes[2];d.parentNode.removeChild(b);d.parentNode.removeChild(a);this.round(d.parentNode,c)},_roundCornersImpl:function(c,a,b){if(this.options.border){this._renderBorder(c,b)}if(this._isTopRounded()){this._roundTopCorners(c,a,b)}if(this._isBottomRounded()){this._roundBottomCorners(c,a,b)}},_renderBorder:function(d,e){var b="1px solid "+this._borderColor(e);var a="border-left: "+b;var f="border-right: "+b;var c="style='"+a+";"+f+"'";d.innerHTML="<div "+c+">"+d.innerHTML+"</div>"},_roundTopCorners:function(c,a,e){var d=this._createCorner(e);for(var b=0;b<this.options.numSlices;b++){d.appendChild(this._createCornerSlice(a,e,b,"top"))
}c.style.paddingTop=0;c.insertBefore(d,c.firstChild)},_roundBottomCorners:function(c,a,e){var d=this._createCorner(e);for(var b=(this.options.numSlices-1);b>=0;b--){d.appendChild(this._createCornerSlice(a,e,b,"bottom"))}c.style.paddingBottom=0;c.appendChild(d)},_createCorner:function(b){var a=document.createElement("div");a.style.backgroundColor=(this._isTransparent()?"transparent":b);return a},_createCornerSlice:function(c,d,g,a){var e=document.createElement("span");var b=e.style;b.backgroundColor=c;b.display="block";b.height="1px";b.overflow="hidden";b.fontSize="1px";var f=this._borderColor(c,d);if(this.options.border&&g==0){b.borderTopStyle="solid";b.borderTopWidth="1px";b.borderLeftWidth="0px";b.borderRightWidth="0px";b.borderBottomWidth="0px";b.height="0px";b.borderColor=f}else{if(f){b.borderColor=f;b.borderStyle="solid";b.borderWidth="0px 1px"}}if(!this.options.compact&&(g==(this.options.numSlices-1))){b.height="2px"}this._setMargin(e,g,a);this._setBorder(e,g,a);return e},_setOptions:function(a){this.options={corners:"all",color:"fromElement",bgColor:"fromParent",blend:true,border:false,compact:false};
Urbex.Util.extend(this.options,a||{});this.options.numSlices=this.options.compact?2:4;if(this._isTransparent()){this.options.blend=false}},_whichSideTop:function(){if(this._hasString(this.options.corners,"all","top")){return""}if(this.options.corners.indexOf("tl")>=0&&this.options.corners.indexOf("tr")>=0){return""}if(this.options.corners.indexOf("tl")>=0){return"left"}else{if(this.options.corners.indexOf("tr")>=0){return"right"}}return""},_whichSideBottom:function(){if(this._hasString(this.options.corners,"all","bottom")){return""}if(this.options.corners.indexOf("bl")>=0&&this.options.corners.indexOf("br")>=0){return""}if(this.options.corners.indexOf("bl")>=0){return"left"}else{if(this.options.corners.indexOf("br")>=0){return"right"}}return""},_borderColor:function(a,b){if(a=="transparent"){return b}else{if(this.options.border){return this.options.border}else{if(this.options.blend){return this._blend(b,a)}else{return""}}}},_setMargin:function(d,e,b){var c=this._marginSize(e);var a=b=="top"?this._whichSideTop():this._whichSideBottom();
if(a=="left"){d.style.marginLeft=c+"px";d.style.marginRight="0px"}else{if(a=="right"){d.style.marginRight=c+"px";d.style.marginLeft="0px"}else{d.style.marginLeft=c+"px";d.style.marginRight=c+"px"}}},_setBorder:function(d,e,b){var c=this._borderSize(e);var a=b=="top"?this._whichSideTop():this._whichSideBottom();if(a=="left"){d.style.borderLeftWidth=c+"px";d.style.borderRightWidth="0px"}else{if(a=="right"){d.style.borderRightWidth=c+"px";d.style.borderLeftWidth="0px"}else{d.style.borderLeftWidth=c+"px";d.style.borderRightWidth=c+"px"}}if(this.options.border!=false){d.style.borderLeftWidth=c+"px";d.style.borderRightWidth=c+"px"}},_marginSize:function(e){if(this._isTransparent()){return 0}var d=[5,3,2,1];var a=[3,2,1,0];var c=[2,1];var b=[1,0];if(this.options.compact&&this.options.blend){return b[e]}else{if(this.options.compact){return c[e]}else{if(this.options.blend){return a[e]}else{return d[e]}}}},_borderSize:function(e){var d=[5,3,2,1];var b=[2,1,1,1];var a=[1,0];var c=[0,2,0,0];if(this.options.compact&&(this.options.blend||this._isTransparent())){return 1
}else{if(this.options.compact){return a[e]}else{if(this.options.blend){return b[e]}else{if(this.options.border){return c[e]}else{if(this._isTransparent()){return d[e]}}}}}return 0},_hasString:function(b){for(var a=1;a<arguments.length;a++){if(b.indexOf(arguments[a])>=0){return true}}return false},_blend:function(c,a){var b=Urbex.Rico.Color.createFromHex(c);b.blend(Urbex.Rico.Color.createFromHex(a));return b},_background:function(a){try{return Urbex.Rico.Color.createColorFromBackground(a).asHex()}catch(b){return"#ffffff"}},_isTransparent:function(){return this.options.color=="transparent"},_isTopRounded:function(){return this._hasString(this.options.corners,"all","top","tl","tr")},_isBottomRounded:function(){return this._hasString(this.options.corners,"all","bottom","bl","br")},_hasSingleTextChild:function(a){return a.childNodes.length==1&&a.childNodes[0].nodeType==3}};Urbex.Icon=Urbex.Class({url:null,size:null,offset:null,calculateOffset:null,imageDiv:null,px:null,initialize:function(a,b,d,c){this.url=a;
this.size=(b)?b:new Urbex.Size(20,20);this.offset=d?d:new Urbex.Pixel(-(this.size.w/2),-(this.size.h/2));this.calculateOffset=c;var e=Urbex.Util.createUniqueID("OL_Icon_");this.imageDiv=Urbex.Util.createAlphaImageDiv(e)},destroy:function(){Urbex.Event.stopObservingElement(this.imageDiv.firstChild);this.imageDiv.innerHTML="";this.imageDiv=null},clone:function(){return new Urbex.Icon(this.url,this.size,this.offset,this.calculateOffset)},setSize:function(a){if(a!=null){this.size=a}this.draw()},setUrl:function(a){if(a!=null){this.url=a}this.draw()},draw:function(a){Urbex.Util.modifyAlphaImageDiv(this.imageDiv,null,null,this.size,this.url,"absolute");this.moveTo(a);return this.imageDiv},setOpacity:function(a){Urbex.Util.modifyAlphaImageDiv(this.imageDiv,null,null,null,null,null,null,null,a)},moveTo:function(a){if(a!=null){this.px=a}if(this.imageDiv!=null){if(this.px==null){this.display(false)}else{if(this.calculateOffset){this.offset=this.calculateOffset(this.size)}var b=this.px.offset(this.offset);
Urbex.Util.modifyAlphaImageDiv(this.imageDiv,null,b)}}},display:function(a){this.imageDiv.style.display=(a)?"":"none"},CLASS_NAME:"Urbex.Icon"});Urbex.Popup=Urbex.Class({events:null,id:"",lonlat:null,div:null,size:null,contentHTML:"",backgroundColor:"",opacity:"",border:"",contentDiv:null,groupDiv:null,closeDiv:null,autoSize:true,minSize:null,maxSize:null,offsetX:null,offsetY:null,padding:0,fixPadding:function(){if(typeof this.padding=="number"){this.padding=new Urbex.Bounds(this.padding,this.padding,this.padding,this.padding)}},panMapIfOutOfView:false,map:null,initialize:function(c,f,l,d,a,k,g,e){if(c==null){c=Urbex.Util.createUniqueID(this.CLASS_NAME+"_")}this.id=c;this.lonlat=f;this.size=(l!=null)?l:new Urbex.Size(Urbex.Popup.WIDTH,Urbex.Popup.HEIGHT);if(d!=null){this.contentHTML=d}if(g!=null){this.offsetX=g}if(e!=null){this.offsetY=e}this.backgroundColor=Urbex.Popup.COLOR;this.opacity=Urbex.Popup.OPACITY;this.border=Urbex.Popup.BORDER;this.div=Urbex.Util.createDiv(this.id,null,null,null,null,null,"hidden");
this.div.style.maxHeight=this.size.h+"px";this.div.style.maxWidth=this.size.w+"px";var b=this.id+"_GroupDiv";this.groupDiv=Urbex.Util.createDiv(b,null,null,null,"relative",null,"hidden");var c=this.div.id+"_contentDiv";this.contentDiv=Urbex.Util.createDiv(c,null,null,null,"relative");this.contentDiv.className="olPopupContent";this.groupDiv.appendChild(this.contentDiv);this.div.appendChild(this.groupDiv);if(a){this.addCloseBox(k);this.contentDiv.style.marginRight="15px"}this.registerEvents()},destroy:function(){this.id=null;this.lonlat=null;this.size=null;this.contentHTML=null;this.backgroundColor=null;this.opacity=null;this.border=null;this.events.destroy();this.events=null;if(this.closeDiv){Urbex.Event.stopObservingElement(this.closeDiv);this.groupDiv.removeChild(this.closeDiv)}this.closeDiv=null;this.div.removeChild(this.groupDiv);this.groupDiv=null;if(this.map!=null){this.map.removePopup(this)}this.map=null;this.div=null;this.autoSize=null;this.minSize=null;this.maxSize=null;this.padding=null;
this.panMapIfOutOfView=null},draw:function(a){if(a==null){if((this.lonlat!=null)&&(this.map!=null)){a=this.map.getLayerPxFromLonLat(this.lonlat);if(this.offsetX!=null||this.offsetY!=null){a=new Urbex.Pixel(a.y+(this.offsetY?this.offsetY:0),a.x+(this.offsetX?this.offsetX:0))}}}if(Urbex.Util.getBrowserName()=="firefox"){this.map.events.register("movestart",this,function(){var b=document.defaultView.getComputedStyle(this.contentDiv,null);var c=b.getPropertyValue("overflow");if(c!="hidden"){this.contentDiv._oldOverflow=c;this.contentDiv.style.overflow="hidden"}});this.map.events.register("moveend",this,function(){var b=this.contentDiv._oldOverflow;if(b){this.contentDiv.style.overflow=b;this.contentDiv._oldOverflow=null}})}this.moveTo(a);if(!this.autoSize){this.setSize(this.size)}this.setBackgroundColor();this.setOpacity();this.setBorder();this.setContentHTML();if(this.panMapIfOutOfView){this.panIntoView()}return this.div},updatePosition:function(){if((this.lonlat)&&(this.map)){var a=this.map.getLayerPxFromLonLat(this.lonlat);
if(a){this.moveTo(a)}}},moveTo:function(a){if((a!=null)&&(this.div!=null)){this.div.style.left=a.x+(this.offsetX?this.offsetX:0)+"px";this.div.style.top=a.y+(this.offsetY?this.offsetY:0)+"px"}},visible:function(){return Urbex.Element.visible(this.div)},toggle:function(){if(this.visible()){this.hide()}else{this.show()}},show:function(){Urbex.Element.show(this.div);if(this.panMapIfOutOfView){this.panIntoView()}},hide:function(){Urbex.Element.hide(this.div)},setSize:function(a){this.size=a;var b=this.size.clone();if(this.div!=null){this.div.style.width=this.size.w+"px";this.div.style.height=this.size.h+"px"}},setBackgroundColor:function(a){if(a!=undefined){this.backgroundColor=a}if(this.div!=null){this.div.style.backgroundColor=this.backgroundColor}},setOpacity:function(a){if(a!=undefined){this.opacity=a}if(this.div!=null){if(this.opacity!=1){this.div.style.opacity=this.opacity;this.div.style.filter="alpha(opacity="+this.opacity*100+")"}}},setBorder:function(a){if(a!=undefined){this.border=a
}if(this.div!=null){this.div.style.border=this.border}},setContentHTML:function(e){if(e!=null){this.contentHTML=e}if(this.contentDiv!=null){this.contentDiv.innerHTML=this.contentHTML}var m;var f;if(this.autoSize){var l=this.div.style.fontSize;var g=this.div.style.fontFamily;if(Urbex.Util.getBrowserName()=="msie"&&Urbex.Util.getIEBrowserVersion()<7){m=Urbex.Util.getRenderedDimensionsForDOMElement(this.div)}else{m=Urbex.Util.getRenderedDimensionsForDOMElement(this.div)}if(m.h>this.size.h){m.h=this.size.h}var k=this.getSafeContentSize(m);if(k.equals(m)){f=m}else{var b=new Urbex.Size();b.w=(k.w<m.w)?k.w:null;b.h=(k.h<m.h)?k.h:null;if(b.w&&b.h){f=k}else{var d=Urbex.Util.getRenderedDimensions(this.contentHTML,b);var c=Urbex.Element.getStyle(this.contentDiv,"overflow");if((c!="hidden")&&(d.equals(k))){var a=Urbex.Util.getScrollbarWidth();if(b.w){d.h+=a}else{d.w+=a}}f=this.getSafeContentSize(d)}}this.setSize(f)}},getSafeContentSize:function(b){var e=b.clone();var d=this.getContentDivPadding();var a=d.left+d.right;
var g=d.top+d.bottom;this.fixPadding();a+=this.padding.left+this.padding.right;g+=this.padding.top+this.padding.bottom;if(this.minSize){e.w=Math.max(e.w,(this.minSize.w-a));e.h=Math.max(e.h,(this.minSize.h-g))}if(this.maxSize){e.w=Math.min(e.w,(this.maxSize.w-a));e.h=Math.min(e.h,(this.maxSize.h-g))}if(this.map&&this.map.size){var c=this.map.size.h-this.map.paddingForPopups.top-this.map.paddingForPopups.bottom-g;var f=this.map.size.w-this.map.paddingForPopups.left-this.map.paddingForPopups.right-a;e.w=Math.min(e.w,f);e.h=Math.min(e.h,c)}return e},getContentDivPadding:function(){var a=this._contentDivPadding;if(!a){this.div.style.display="none";document.body.appendChild(this.div);a=new Urbex.Bounds(Urbex.Element.getStyle(this.contentDiv,"padding-left"),Urbex.Element.getStyle(this.contentDiv,"padding-bottom"),Urbex.Element.getStyle(this.contentDiv,"padding-right"),Urbex.Element.getStyle(this.contentDiv,"padding-top"));this._contentDivPadding=a;document.body.removeChild(this.div);this.div.style.display=""
}return a},addCloseBox:function(c){this.closeDiv=Urbex.Util.createDiv(this.id+"_close",null,new Urbex.Size(17,17));this.closeDiv.className="olPopupCloseBox";var b=this.getContentDivPadding();this.closeDiv.style.right=b.right+"px";this.closeDiv.style.top=b.top+"px";this.groupDiv.appendChild(this.closeDiv);var a=c||function(d){this.destroy();Urbex.Event.stop(d)};Urbex.Event.observe(this.closeDiv,"click",Urbex.Function.bindAsEventListener(a,this))},addInnerCloseBox:function(b){if(this.closeDiv){this.groupDiv.removeChild(this.closeDiv)}this.closeDiv=Urbex.Util.createDiv(this.id+"_close",null,new Urbex.Size(17,17));this.closeDiv.className="olPopupCloseBox";this.closeDiv.style.position="";if(Urbex.Util.getBrowserName()=="msie"){}else{this.closeDiv.style.cssFloat="right"}this.contentDiv.insertBefore(this.closeDiv,this.contentDiv.firstChild);var a=b||function(c){this.destroy();Urbex.Event.stop(c)};Urbex.Event.observe(this.closeDiv,"click",Urbex.Function.bindAsEventListener(a,this))},panIntoView:function(){var e=this.map.getSize();
var d=this.map.getViewPortPxFromLayerPx(new Urbex.Pixel(parseInt(this.div.style.left),parseInt(this.div.style.top)));var c=d.clone();if(d.x<this.map.paddingForPopups.left){c.x=this.map.paddingForPopups.left}else{if((d.x+this.size.w)>(e.w-this.map.paddingForPopups.right)){c.x=e.w-this.map.paddingForPopups.right-this.size.w}}if(d.y<this.map.paddingForPopups.top){c.y=this.map.paddingForPopups.top}else{if((d.y+this.size.h)>(e.h-this.map.paddingForPopups.bottom)){c.y=e.h-this.map.paddingForPopups.bottom-this.size.h}}var b=d.x-c.x;var a=d.y-c.y;this.map.pan(b,a)},registerEvents:function(){this.events=new Urbex.Events(this,this.div,null,true);this.events.on({mousedown:this.onmousedown,mousemove:this.onmousemove,mouseup:this.onmouseup,click:this.onclick,mouseout:this.onmouseout,dblclick:this.ondblclick,scope:this})},onmousedown:function(a){this.mousedown=true;Urbex.Event.stop(a,true)},onmousemove:function(a){if(this.mousedown){Urbex.Event.stop(a,true)}},onmouseup:function(a){if(this.mousedown){this.mousedown=false;
Urbex.Event.stop(a,true)}},onclick:function(a){Urbex.Event.stop(a,true)},onmouseout:function(a){this.mousedown=false},ondblclick:function(a){Urbex.Event.stop(a,true)},getDOMElement:function(){return this.div},CLASS_NAME:"Urbex.Popup"});Urbex.Popup.WIDTH=200;Urbex.Popup.HEIGHT=200;Urbex.Popup.COLOR="white";Urbex.Popup.OPACITY=1;Urbex.Popup.BORDER="0px";Urbex.Popup.Anchored=Urbex.Class(Urbex.Popup,{relativePosition:null,anchor:null,initialize:function(c,k,n,e,g,a,m,l,f,d){var b=new Array(c,k,n,e,a,m,l,f,d);Urbex.Popup.prototype.initialize.apply(this,b);if(d!=null){this.relativePosition=d;this.fixRelativePosition=true}else{this.fixRelativePosition=false}this.anchor=(g!=null)?g:{size:new Urbex.Size(0,0),offset:new Urbex.Pixel(0,0)}},destroy:function(){this.anchor=null;this.relativePosition=null;Urbex.Popup.prototype.destroy.apply(this,arguments)},show:function(){this.updatePosition();Urbex.Popup.prototype.show.apply(this,arguments)},moveTo:function(c){var b=this.relativePosition;this.relativePosition=this.calculateRelativePosition(c);
var d=this.calculateNewPx(c);var a=new Array(d);Urbex.Popup.prototype.moveTo.apply(this,a);if(this.relativePosition!=b){this.updateRelativePosition()}},setSize:function(b){Urbex.Popup.prototype.setSize.apply(this,arguments);if((this.lonlat)&&(this.map)){var a=this.map.getLayerPxFromLonLat(this.lonlat);this.moveTo(a)}},calculateRelativePosition:function(b){if(this.fixRelativePosition){return this.relativePosition}var d=this.map.getLonLatFromLayerPx(b);var c=this.map.getExtent();var a=c.determineQuadrant(d);return a},updateRelativePosition:function(){},calculateNewPx:function(a){var b=a.offset(this.anchor.offset);switch(this.relativePosition.charAt(0)){case"l":case"b":b.y+=-this.size.h;break;case"u":case"t":b.y+=this.anchor.size.h;break;case"m":b.y+=-this.size.h/2;break}switch(this.relativePosition.charAt(1)){case"l":b.x+=this.anchor.size.w;break;case"r":b.x+=-this.size.w;break;case"m":b.x+=-this.size.w/2;break}return b},CLASS_NAME:"Urbex.Popup.Anchored"});Urbex.Popup.AnchoredBubble=Urbex.Class(Urbex.Popup.Anchored,{rounded:false,initialize:function(b,g,m,d,f,a,l,k,e,c){this.padding=new Urbex.Bounds(0,Urbex.Popup.AnchoredBubble.CORNER_SIZE,0,Urbex.Popup.AnchoredBubble.CORNER_SIZE);
Urbex.Popup.Anchored.prototype.initialize.apply(this,arguments)},draw:function(a){Urbex.Popup.Anchored.prototype.draw.apply(this,arguments);this.setContentHTML();this.div.style.height="";this.contentDiv.style.height="";this.setBackgroundColor();this.setOpacity();return this.div},updateRelativePosition:function(){this.setRicoCorners()},setSize:function(a){Urbex.Popup.Anchored.prototype.setSize.apply(this,arguments);this.setRicoCorners()},setBackgroundColor:function(a){if(a!=undefined){this.backgroundColor=a}if(this.div!=null){if(this.contentDiv!=null){this.div.style.background="transparent";Urbex.Rico.Corner.changeColor(this.groupDiv,this.backgroundColor)}}},setOpacity:function(a){Urbex.Popup.Anchored.prototype.setOpacity.call(this,a);if(this.div!=null){if(this.groupDiv!=null){Urbex.Rico.Corner.changeOpacity(this.groupDiv,this.opacity)}}},setBorder:function(a){this.border=0},setRicoCorners:function(){var a=this.getCornersToRound(this.relativePosition);var b={corners:a,color:this.backgroundColor,bgColor:"transparent",blend:false};
if(!this.rounded){Urbex.Rico.Corner.round(this.div,b);this.rounded=true}else{Urbex.Rico.Corner.reRound(this.groupDiv,b);this.setBackgroundColor();this.setOpacity()}},getCornersToRound:function(){var a=["tl","tr","bl","br"];Urbex.Util.removeItem(a,this.relativePosition);return a.join(" ")},CLASS_NAME:"Urbex.Popup.AnchoredBubble"});Urbex.Popup.AnchoredBubble.CORNER_SIZE=5;Urbex.Marker=Urbex.Class({id:null,description:null,url:null,icon:null,title:null,offsetX:null,offsetY:null,popActive:false,minZoom:null,maxZoom:null,lonlat:null,wlonlat:null,events:null,map:null,popupClass:Urbex.Popup.AnchoredBubble,popup:null,initialize:function(c,d,b){this.lonlat=c;this.wlonlat=this.lonlat;this.id=d;this.addOptions(b);if(this.description!=null){this.popActive=true}var a=(this.icon)?this.icon:Urbex.Marker.defaultIcon();if(this.icon==null){this.icon=a;if(this.title!=null){this.icon.imageDiv.title=this.title}}else{this.icon.url=a.url;this.icon.size=a.size;this.icon.offset=a.offset;this.icon.calculateOffset=a.calculateOffset;
if(this.title!=null){this.icon.imageDiv.title=this.title}}this.events=new Urbex.Events(this,this.icon.imageDiv,null);if(this.description!=null){this.events.register("mousedown",this,function(e){this.openPopup();Urbex.Event.stop(e)})}},openPopup:function(){if((this.lonlat!=null)&&(this.popActive!=false)){var a=this.id+"_popup";this.closePopups();this.popup=new this.popupClass(a,this.lonlat,null,this.description,{size:this.icon.size,offset:this.icon.offset},true,null,this.offsetX,this.offsetY);this.map.addPopup(this.popup)}},isPopup:function(b){var a=false;for(i=0;i<this.map.popups.length;i++){if(this.map.popups[i].id==b){a=true}}return a},closePopup:function(){var b=this.id+"_popup";for(i=0;i<this.map.popups.length;i++){var a=this.map.popups[i];if(a.id==b){a.feature=null;a.destroy();a=null}}},closePopups:function(){for(i=0;i<this.map.popups.length;i++){var a=this.map.popups[i];a.feature=null;a.destroy();a=null}},destroy:function(){this.map=null;this.events.destroy();this.events=null;if(this.icon!=null){this.icon.destroy();
this.icon=null}},addOptions:function(a){if(this.options==null){this.options={}}Urbex.Util.extend(this.options,a);Urbex.Util.extend(this,a)},draw:function(a){return this.icon.draw(a)},moveTo:function(a){if((a!=null)&&(this.icon!=null)){this.icon.moveTo(a)}this.lonlat=this.map.getLonLatFromLayerPx(a)},onScreen:function(){var b=false;if(this.map){var a=this.map.getExtent();b=a.containsLonLat(this.lonlat)}return b},inflate:function(b){if(this.icon){var a=new Urbex.Size(this.icon.size.w*b,this.icon.size.h*b);this.icon.setSize(a)}},setOpacity:function(a){this.icon.setOpacity(a)},setUrl:function(a){this.icon.setUrl(a)},display:function(a){this.icon.display(!!a)},setTitle:function(a){this.title=a;this.icon.imageDiv.title=this.title==null?"":this.title},setOffsetX:function(a){this.offsetX=isNaN(a)?null:this.offset=a},setOffsetY:function(a){this.offsetY=isNaN(a)?null:this.offset=a},setPopActive:function(a){this.popActive=!!a},setMinZoom:function(a){this.minZoom=isNaN(a)?0:a},setMaxZoom:function(a){this.maxZoom=isNaN(a)?1000:a
},CLASS_NAME:"Urbex.Marker"});Urbex.Marker.defaultIcon=function(){var a=Urbex.Util.getImagesLocation()+"marker.png";var b=new Urbex.Size(21,25);var c=function(d){return new Urbex.Pixel(-(d.w/2),-d.h)};return new Urbex.Icon(a,b,null,c)};Urbex.Text=Urbex.Class({id:null,description:null,url:null,lonlat:null,wlonlat:null,events:null,map:null,popupClass:Urbex.Popup.AnchoredBubble,popup:null,size:null,contentHTML:"",fontFamily:"",fontWeight:"",fontSize:"",color:"",backgroundColor:"",opacity:"",border:"",autoSize:true,minSize:null,maxSize:null,padding:0,relativePosition:"tl",offsetX:0,offsetY:0,fixPadding:function(){if(typeof this.padding=="number"){this.padding=new Urbex.Bounds(this.padding,this.padding,this.padding,this.padding)}},initialize:function(c,e,d,a){this.id=e;this.lonlat=c;this.wlonlat=c;if(d!=null){this.contentHTML=d}this.addOptions(a);if(this.fontFamily==""){this.fontFamily="Arial"}if(this.fontWeight==""){this.fontWeight="400"}if(this.fontSize==""){this.fontSize="10pt"}if(this.color==""){this.color="rgb(0,0,0)"
}if(this.backgroundColor==""){this.backgroundColor="transparent"}if(this.opacity==""){this.opacity="1"}this.border="0px";this.div=Urbex.Util.createDiv(this.id,null,null,null,null,null,"hidden");this.div.className="olPopup";var b=this.id+"_GroupDiv";this.groupDiv=Urbex.Util.createDiv(b,null,null,null,"relative",null,"hidden");var e=this.div.id+"_contentDiv";this.size=new Urbex.Size(1,1);this.contentDiv=Urbex.Util.createDiv(e,null,null,null,"relative");this.contentDiv.className="olPopupContent";this.groupDiv.appendChild(this.contentDiv);this.div.appendChild(this.groupDiv);this.events=new Urbex.Events(this,this.div,null);if(this.description!=null){this.events.register("mouseover",this,function(f){this.openPopup();Urbex.Event.stop(f)})}if(this.url!=null){this.events.register("mousedown",this,function(f){window.open(this.url);Urbex.Event.stop(f)})}},openPopup:function(){if(this.lonlat!=null){var a=this.id+"_popup";this.popup=new this.popupClass(a,this.lonlat,null,this.description,null,true);
this.map.addPopup(this.popup)}},closePopup:function(){if(this.popup){this.popup.feature=null;this.popup.destroy();this.popup=null}},destroy:function(){this.map=null;this.id=null;this.lonlat=null;this.size=null;this.contentHTML=null;this.backgroundColor=null;this.opacity=null;this.border=null;this.events.destroy();this.events=null;if(this.closeDiv){Urbex.Event.stopObservingElement(this.closeDiv);this.groupDiv.removeChild(this.closeDiv)}this.closeDiv=null;this.div.removeChild(this.groupDiv);this.div.parentNode.removeChild(this.div);this.groupDiv=null;this.div=null;this.autoSize=null;this.minSize=null;this.maxSize=null;this.padding=null},addOptions:function(a){if(this.options==null){this.options={}}Urbex.Util.extend(this.options,a);Urbex.Util.extend(this,a)},draw:function(a){if(a==null){if((this.lonlat!=null)&&(this.map!=null)){a=this.map.getLayerPxFromLonLat(this.lonlat)}}a=new Urbex.Pixel(a.x+(this.offsetX?this.offsetX:0),a.y+(this.offsetY?this.offsetY:0));if(Urbex.Util.getBrowserName()=="firefox"){this.map.events.register("movestart",this,function(){var b=document.defaultView.getComputedStyle(this.contentDiv,null);
var c=b.getPropertyValue("overflow");if(c!="hidden"){this.contentDiv._oldOverflow=c;this.contentDiv.style.overflow="hidden"}});this.map.events.register("moveend",this,function(){var b=this.contentDiv._oldOverflow;if(b){this.contentDiv.style.overflow=b;this.contentDiv._oldOverflow=null}})}if(!this.autoSize){this.setSize(this.size)}this.div.style.padding=0;this.contentDiv.style.padding=3;this.setFontFamily();this.setFontWeight();this.setFontSize();this.setColor();this.setBackgroundColor();this.setOpacity();this.setBorder();this.setContentHTML();this.moveTo(a);if(this.panMapIfOutOfView){this.panIntoView()}return this.div},updatePosition:function(){if((this.lonlat)&&(this.map)){var a=this.map.getLayerPxFromLonLat(this.lonlat);if(a){this.moveTo(a)}}},moveTo:function(a){if((a!=null)&&(this.div!=null)){var b=this.calculateNewPx(a);this.div.style.left=b.x+"px";this.div.style.top=b.y+"px"}},visible:function(){return Urbex.Element.visible(this.div)},toggle:function(){if(this.visible()){this.hide()
}else{this.show()}},show:function(){Urbex.Element.show(this.div);if(this.panMapIfOutOfView){this.panIntoView()}},hide:function(){Urbex.Element.hide(this.div)},onScreen:function(){var b=false;if(this.map){var a=this.map.getExtent();b=a.containsLonLat(this.lonlat)}return b},setSize:function(b){this.size=b;var d=this.size.clone();var c=this.getContentDivPadding();var a=c.left+c.right;var e=c.top+c.bottom;this.fixPadding();a+=this.padding.left+this.padding.right;e+=this.padding.top+this.padding.bottom;this.size.w+=a;if(this.div!=null){this.div.style.width=this.size.w+"px";this.div.style.height=this.size.h+"px"}if(this.contentDiv!=null){this.contentDiv.style.width=d.w+"px";this.contentDiv.style.height=d.h+"px"}},setFontFamily:function(a){if(a!=undefined){this.fontFamily=a}if(this.div!=null){this.div.style.fontFamily=this.fontFamily;this.contentDiv.style.fontFamily=this.fontFamily}},setFontWeight:function(a){if(a!=undefined){this.fontFamily=a}if(this.div!=null){this.div.style.fontWeight=this.fontWeight;
this.contentDiv.style.fontWeight=this.fontWeight}},setFontSize:function(a){if(a!=undefined){this.fontSize=a}if(this.div!=null){this.div.style.fontSize=this.fontSize;this.contentDiv.style.fontSize=this.fontSize}},setColor:function(a){if(a!=undefined){this.color=a}if(this.div!=null){this.div.style.color=this.color}},setBackgroundColor:function(a){if(a!=undefined){this.backgroundColor=a}if(this.div!=null){this.div.style.backgroundColor=this.backgroundColor}},setOpacity:function(a){if(a!=undefined){this.opacity=a}if(this.div!=null){this.div.style.opacity=this.opacity;this.div.style.filter="alpha(opacity="+this.opacity*100+")"}},setBorder:function(a){if(a!=undefined){this.border=a}if(this.div!=null){this.div.style.border=this.border}},setContentHTML:function(k){if(k!=null){this.contentHTML=k;this.contentDiv.innerHTML=this.contentHTML}else{this.contentDiv.innerHTML=this.contentHTML}this.contentDiv.style.width="";this.contentDiv.style.height="";if(this.autoSize){var d=Urbex.Util.getRenderedDimensions(this.groupDiv.innerHTML);
var b=this.getSafeContentSize(d);var c=null;if(b.equals(d)){c=d}else{var g=new Urbex.Size();g.w=(b.w<d.w)?b.w:null;g.h=(b.h<d.h)?b.h:null;if(g.w&&g.h){c=b}else{var a=Urbex.Util.getRenderedDimensions(this.contentHTML,g);var f=Urbex.Element.getStyle(this.contentDiv,"overflow");if((f!="hidden")&&(a.equals(b))){var e=Urbex.Util.getScrollbarWidth();if(g.w){a.h+=e}else{a.w+=e}}c=this.getSafeContentSize(a)}}this.setSize(c)}if(this.contentDiv!=null){this.contentDiv.innerHTML=this.contentHTML}},getSafeContentSize:function(b){var e=b.clone();var d=this.getContentDivPadding();var a=d.left+d.right;var k=d.top+d.bottom;this.fixPadding();a+=this.padding.left+this.padding.right;k+=this.padding.top+this.padding.bottom;if(this.closeDiv){var g=parseInt(this.closeDiv.style.width);a+=g+d.right}if(this.minSize){e.w=Math.max(e.w,(this.minSize.w-a));e.h=Math.max(e.h,(this.minSize.h-k))}if(this.maxSize){e.w=Math.min(e.w,(this.maxSize.w-a));e.h=Math.min(e.h,(this.maxSize.h-k))}if(this.map&&this.map.size){var c=this.map.size.h-this.map.paddingForPopups.top-this.map.paddingForPopups.bottom-k;
var f=this.map.size.w-this.map.paddingForPopups.left-this.map.paddingForPopups.right-a;e.w=Math.min(e.w,f);e.h=Math.min(e.h,c)}return e},getContentDivPadding:function(){var a=this._contentDivPadding;if(!a){this.div.style.display="none";document.body.appendChild(this.div);a=new Urbex.Bounds(Urbex.Element.getStyle(this.contentDiv,"padding-left"),Urbex.Element.getStyle(this.contentDiv,"padding-bottom"),Urbex.Element.getStyle(this.contentDiv,"padding-right"),Urbex.Element.getStyle(this.contentDiv,"padding-top"));this._contentDivPadding=a;document.body.removeChild(this.div);this.div.style.display=""}return a},panIntoView:function(){var e=this.map.getSize();var d=this.map.getViewPortPxFromLayerPx(new Urbex.Pixel(parseInt(this.div.style.left),parseInt(this.div.style.top)));var c=d.clone();if(d.x<this.map.paddingForPopups.left){c.x=this.map.paddingForPopups.left}else{if((d.x+this.size.w)>(e.w-this.map.paddingForPopups.right)){c.x=e.w-this.map.paddingForPopups.right-this.size.w}}if(d.y<this.map.paddingForPopups.top){c.y=this.map.paddingForPopups.top
}else{if((d.y+this.size.h)>(e.h-this.map.paddingForPopups.bottom)){c.y=e.h-this.map.paddingForPopups.bottom-this.size.h}}var b=d.x-c.x;var a=d.y-c.y;this.map.pan(b,a)},calculateNewPx:function(a){var b=a;switch(this.relativePosition.charAt(0)){case"l":b.y+=-this.size.h;break;case"t":break;case"m":b.y+=-this.size.h/2;break}switch(this.relativePosition.charAt(1)){case"l":break;case"r":b.x+=-this.size.w;break;case"m":b.x+=-this.size.w/2;break}return b},CLASS_NAME:"Urbex.Text"});Urbex.Layer.Markers=Urbex.Class(Urbex.Layer,{isBaseLayer:false,markers:null,minZoomLevel:15,maxZoomLevel:20,drawn:false,iterator:null,initialize:function(b,a){Urbex.Layer.prototype.initialize.apply(this,arguments);if(this.minZoomLevel==null){if(this.maxZoomLevel==null){this.minZoomLevel=15}else{this.minZoomLevel=Math.min(15,this.maxZoomLevel)}}if(this.maxZoomLevel==null){this.maxZoomLevel=Math.max(this.minZoomLevel,20)}this.markers=[]},destroy:function(){this.clearMarkers();this.markers=null;this.iterator=null;Urbex.Layer.prototype.destroy.apply(this,arguments)
},setOpacity:function(a){if(a!=this.opacity){this.opacity=a;for(var b=0;b<this.markers.length;b++){this.markers[b].setOpacity(this.opacity)}}},setMap:function(a){Urbex.Layer.prototype.setMap.apply(this,arguments);this.map.events.register("orientationchanged",this,this.OriChanged)},removeMap:function(a){this.map.events.unregister("orientationchanged",this,this.OriChanged);Urbex.Layer.prototype.removeMap.apply(this,arguments)},OriChanged:function(){if(this.map.activeView=="ORTHO"){if(this.lastView!="ORTHO"){this.markersToWorld()}if(this.visibility==true){this.setVisibility(true);this.redraw()}this.lastView="ORTHO"}else{this.markersToOblique();this.lastView="OBLIQUE"}return true},markersToWorld:function(b){for(var a=0;a<this.markers.length;a++){this.markers[a].lonlat=this.markers[a].wlonlat}},markersToOblique:function(){var b=0;this.iterator=0;while(b<this.markers.length){this.markers[b].lonlat=this.markers[b].wlonlat;if(Urbex.Util.polygonContainsPoint(this.map.polyOblique,this.markers[b].wlonlat)){var a=this.markers[b].wlonlat.x+","+this.markers[b].wlonlat.y;
this.iterator++;this.requestPointsToMarkersToOblique(a,"TOOBLIQUE",this.markers[b])}b++}if(b==this.markers.length){if(this.visibility==true){this.setVisibility(true);this.redraw()}}},requestPointsToMarkersToOblique:function(l,k,f,m){var c=Urbex.Util.createUniqueID("SrcMarkersOblique");var d="TransformPoints?usertoken="+this.map.usertoken+"&srs="+this.map.projection+"&id="+this.map.idOblique+"&points="+l+"&function=F"+c+"&type="+k+"&format=js&dtm=yes";var b=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.TRANSFORM_POINTS,d);var e=this.map.createOScript(c,b);var a=this.map;var g=this;if(navigator.appName=="Microsoft Internet Explorer"){if((e.readyState=="loaded")||(e.readyState=="complete")){g.responsePointsToMarkersToOblique(g,f,c,m);e.onreadystatechange=null}else{e.onreadystatechange=function(){if((e.readyState=="loaded")||(e.readyState=="complete")){g.responsePointsToMarkersToOblique(g,f,c,m);e.onreadystatechange=null}}}}else{e.addEventListener("load",function(n){g.responsePointsToMarkersToOblique(g,f,c,m)
},false)}setTimeout(function(o,n,p){return function(){o.responsePointsToMarkersToOblique(o,n,p,m)}}(g,f,c),500)},responsePointsToMarkersToOblique:function(layer,marker,id,options){if(document.getElementById(id)==null){return}if(eval("typeof F"+id+" != 'function'")){timer=setTimeout(function(layer,marker,id){return function(){layer.responsePointsToMarkersToOblique(layer,marker,id)}}(layer,marker,id),100);return false}var res=eval("F"+id+"()");this.map.deleteOScript(id);if(res.indexOf("ERROR")!=-1){return}var points=res.split(",");if(points!=null){marker.lonlat=new Urbex.XY(points[0],-points[1])}if(options&&options.recentlyAdded){if(options.callback){options.callback(layer,marker)}}else{layer.iterator--;if(layer.iterator==0){if(layer.visibility==true){layer.setVisibility(true);layer.redraw()}}}return true},moveTo:function(c,a,d){Urbex.Layer.prototype.moveTo.apply(this,arguments);if(a||!this.drawn){for(var b=0;b<this.markers.length;b++){this.drawMarker(this.markers[b])}this.drawn=true}},addMarker:function(a,f,e){if(!e){e={}
}if(e.offset==null){Urbex.Util.extend(e,{offsetX:this.offsetX,offsetY:this.offsetY})}var b=new Urbex.Marker(a,f,e);this.markers.push(b);if(this.opacity!=null){b.setOpacity(this.opacity)}if(this.map&&this.map.getExtent()){b.map=this.map;if(this.map.activeView=="OBLIQUE"){var d=b.lonlat.x+","+b.lonlat.y;var c=this;var e={};e.recentlyAdded=true;e.callback=function(k,g){k.drawMarker(g)};this.requestPointsToMarkersToOblique(d,"TOOBLIQUE",b,e)}else{this.drawMarker(b)}}return b},addMarkers:function(f,g,e){var a=[];if(!e){e={}}if(e.offset==null){Urbex.Util.extend(e,{offset:this.offset})}for(i=0;i<f.length;i++){var b=new Urbex.Marker(f[i],g,e);a.push(b);this.markers.push(b);if(this.opacity!=null){b.setOpacity(this.opacity)}if(this.map&&this.map.getExtent()){b.map=this.map;if(this.map.activeView=="OBLIQUE"){var d=b.lonlat.x+","+b.lonlat.y;var c=this;var e={};e.recentlyAdded=true;e.callback=function(l,k){l.drawMarker(k)};this.requestPointsToMarkersToOblique(d,"TOOBLIQUE",b,e)}else{this.drawMarker(b)
}}}return a},removeMarker:function(d){if(this.markers&&this.markers.length){var b=[];for(var c=0;c<this.markers.length;c++){if(d!=this.markers[c].id){b.push(this.markers[c])}else{var a=this.markers[c];if((a.icon!=null)&&(a.icon.imageDiv!=null)&&(a.icon.imageDiv.parentNode==this.div)){this.div.removeChild(a.icon.imageDiv);a.drawn=false}}}this.markers=b}},clearMarkers:function(){if(this.markers!=null){while(this.markers.length>0){this.removeMarker(this.markers[0].id)}}},drawMarker:function(a){if(this.markers&&this.markers.length){for(var c=0;c<this.markers.length;c++){if((this.markers[c].id==a.id)&&(this.markers[c].lonlat.x==a.lonlat.x)&&(this.markers[c].lonlat.y==a.lonlat.y)){var b=this.map.getLayerPxFromLonLat(a.lonlat);if(b==null){a.display(false)}else{var d=a.draw(b);if(!a.drawn){this.div.appendChild(d);a.drawn=true}}if(this.map.activeView=="ORTHO"){if((this.map.zoom<this.minZoomLevel)||(this.map.zoom>this.maxZoomLevel)){a.display(false)}else{if((a.minZoom!=null)&&(a.maxZoom!=null)){if((this.map.zoom<a.minZoom)||(this.map.zoom>a.maxZoom)){a.display(false)
}else{a.display(true)}}else{a.display(true)}}}break}}}},getDataExtent:function(){var a=null;if(this.markers&&(this.markers.length>0)){var a=new Urbex.Bounds();for(var c=0;c<this.markers.length;c++){var b=this.markers[c];a.extend(b.lonlat)}}return a},getMarkersById:function(c){var a=[];for(var b in this.markers){if(this.markers[b].id.search(c)!=-1){a.push(this.markers[b])}}return a},CLASS_NAME:"Urbex.Layer.Markers"});Urbex.Layer.Texts=Urbex.Class(Urbex.Layer,{isBaseLayer:false,texts:null,drawn:false,initialize:function(b,a){Urbex.Layer.prototype.initialize.apply(this,arguments);this.texts=[]},destroy:function(){this.clearTexts();this.texts=null;Urbex.Layer.prototype.destroy.apply(this,arguments)},setMap:function(a){Urbex.Layer.prototype.setMap.apply(this,arguments);this.map.events.register("orientationchanged",this,this.OriChanged)},removeMap:function(a){this.map.events.unregister("orientationchanged",this,this.OriChanged);Urbex.Layer.prototype.removeMap.apply(this,arguments)},OriChanged:function(){if(this.map.activeView=="ORTHO"){if(this.lastView!="ORTHO"){this.textsToWorld()
}if(this.visibility==true){this.setVisibility(true);this.redraw()}this.lastView="ORTHO"}else{this.textsToOblique();this.lastView="OBLIQUE"}return true},textsToOblique:function(){var b=0;this.iterator=0;var a="";while(b<this.texts.length){if(Urbex.Util.polygonContainsPoint(this.map.polyOblique,this.texts[b].wlonlat)){a=this.texts[b].wlonlat.x+","+this.texts[b].wlonlat.y;this.requestPointsToTextsToOblique(a,"TOOBLIQUE",this.texts[b])}b++}this.iterator=b;if(this.visibility==true){this.setVisibility(true);this.redraw()}},requestPointsToTextsToOblique:function(k,g,l){var c=Urbex.Util.createUniqueID("SrcTextsOblique");var d="TransformPoints?usertoken="+this.map.usertoken+"&srs="+this.map.projection+"&id="+this.map.idOblique+"&points="+k+"&function=F"+c+"&type="+g+"&format=js&dtm=yes";var b=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.TRANSFORM_POINTS,d);var e=this.map.createOScript(c,b);var a=this.map;var f=this;if(navigator.appName=="Microsoft Internet Explorer"){if((e.readyState=="loaded")||(e.readyState=="complete")){f.responsePointsToTextsToOblique(c,f,l);
e.onreadystatechange=null}else{e.onreadystatechange=function(){if((e.readyState=="loaded")||(e.readyState=="complete")){f.responsePointsToTextsToOblique(c,f,l);e.onreadystatechange=null}}}}else{e.addEventListener("load",function(m){f.responsePointsToTextsToOblique(c,f,l)},false)}setTimeout(function(o,m,n){return function(){m.responsePointsToTextsToOblique(o,m,n)}}(c,f,l),500)},responsePointsToTextsToOblique:function(id,layer,text){if(document.getElementById(id)==null){return}if(eval("typeof F"+id+" != 'function'")){setTimeout(function(layer,text){return function(){layer.responsePointsToTextsToOblique(id,layer,text)}}(layer,text),100);return false}var res=eval("F"+id+"()");this.map.deleteOScript(id);if(res.indexOf("ERROR")!=-1){return}var points=res.split(",");if(points!=null){text.lonlat=new Urbex.XY(points[0],-points[1])}this.iterator--;if(this.iterator==0){if(this.visibility==true){this.setVisibility(true);this.redraw()}}},textsToWorld:function(){for(var a=0;a<this.texts.length;a++){this.texts[a].lonlat=this.texts[a].wlonlat
}},setOpacity:function(a){if(a!=this.opacity){this.opacity=a;for(var b=0;b<this.texts.length;b++){this.texts[b].setOpacity(this.opacity)}}},moveTo:function(c,a,d){Urbex.Layer.prototype.moveTo.apply(this,arguments);if(a||!this.drawn){for(var b=0;b<this.texts.length;b++){this.drawText(this.texts[b])}this.drawn=true}},addText:function(a,e,d,b){var c=new Urbex.Text(a,e,d,b);this.texts.push(c);if(this.opacity!=null){c.setOpacity(this.opacity)}if(this.map&&this.map.getExtent()){c.map=this.map;this.drawText(c)}},removeText:function(c){if(this.texts&&this.texts.length){for(var b=0;b<this.texts.length;b++){if(c==this.texts[b].id){var a=this.texts[b];Urbex.Util.removeItem(this.texts,this.texts[b]);a.destroy()}}}},getText:function(b){if(this.texts&&this.texts.length){for(var a=0;a<this.texts.length;a++){if(b==this.texts[a].id){return this.texts[a]}}}},clearTexts:function(){if(this.texts!=null){while(this.texts.length>0){this.removeText(this.texts[0].id)}}},drawText:function(c){var b=this.map.getLayerPxFromLonLat(c.lonlat);
if(b==null){}else{var a=c.draw(b);if(!c.drawn){this.div.appendChild(a);c.drawn=true}}},getDataExtent:function(){var a=null;if(this.texts&&(this.texts.length>0)){var a=new Urbex.Bounds();for(var b=0;b<this.texts.length;b++){var c=this.texts[b];a.extend(c.lonlat)}}return a},CLASS_NAME:"Urbex.Layer.Texts"});Urbex.Feature=Urbex.Class({layer:null,id:null,lonlat:null,data:null,marker:null,popupClass:Urbex.Popup.AnchoredBubble,popup:null,initialize:function(a,c,b){this.layer=a;this.lonlat=c;this.data=(b!=null)?b:{};this.id=Urbex.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){if((this.layer!=null)&&(this.layer.map!=null)){if(this.popup!=null){this.layer.map.removePopup(this.popup)}}this.layer=null;this.id=null;this.lonlat=null;this.data=null;if(this.marker!=null){this.destroyMarker(this.marker);this.marker=null}if(this.popup!=null){this.destroyPopup(this.popup);this.popup=null}},onScreen:function(){var b=false;if((this.layer!=null)&&(this.layer.map!=null)){var a=this.layer.map.getExtent();
b=a.containsLonLat(this.lonlat)}return b},createMarker:function(){if(this.lonlat!=null){this.marker=new Urbex.Marker(this.lonlat,this.data.icon)}return this.marker},destroyMarker:function(){this.marker.destroy()},createPopup:function(b){if(this.lonlat!=null){var c=this.id+"_popup";var a=(this.marker)?this.marker.icon:null;if(!this.popup){this.popup=new this.popupClass(c,this.lonlat,this.data.popupSize,this.data.popupContentHTML,a,b)}if(this.data.overflow!=null){this.popup.contentDiv.style.overflow=this.data.overflow}this.popup.feature=this}return this.popup},destroyPopup:function(){if(this.popup){this.popup.feature=null;this.popup.destroy();this.popup=null}},CLASS_NAME:"Urbex.Feature"});Urbex.State={UNKNOWN:"Unknown",INSERT:"Insert",UPDATE:"Update",DELETE:"Delete"};Urbex.Feature.Vector=Urbex.Class(Urbex.Feature,{fid:null,geometry:null,attributes:null,state:null,style:null,renderIntent:"default",oblique:false,initialize:function(c,a,b){Urbex.Feature.prototype.initialize.apply(this,[null,null,a]);
this.lonlat=null;this.geometry=c;this.state=null;this.attributes={};if(a){this.attributes=Urbex.Util.extend(this.attributes,a)}this.style=b?b:null},destroy:function(){if(this.layer){this.layer.removeFeatures(this);this.layer=null}this.geometry=null;Urbex.Feature.prototype.destroy.apply(this,arguments)},clone:function(){return new Urbex.Feature.Vector(this.geometry.clone(),this.attributes,this.style)},onScreen:function(d){var c=false;if(this.layer&&this.layer.map){var a=this.layer.map.getExtent();if(d){var b=this.geometry.getBounds();c=a.intersectsBounds(b)}else{var e=a.toGeometry();c=e.intersects(this.geometry)}}return c},createMarker:function(){return null},destroyMarker:function(){},createPopup:function(){return null},atPoint:function(b,d,c){var a=false;if(this.geometry){a=this.geometry.atPoint(b,d,c)}return a},destroyPopup:function(){},toState:function(a){if(a==Urbex.State.UPDATE){switch(this.state){case Urbex.State.UNKNOWN:case Urbex.State.DELETE:this.state=a;break;case Urbex.State.UPDATE:case Urbex.State.INSERT:break
}}else{if(a==Urbex.State.INSERT){switch(this.state){case Urbex.State.UNKNOWN:break;default:this.state=a;break}}else{if(a==Urbex.State.DELETE){switch(this.state){case Urbex.State.INSERT:break;case Urbex.State.DELETE:break;case Urbex.State.UNKNOWN:case Urbex.State.UPDATE:this.state=a;break}}else{if(a==Urbex.State.UNKNOWN){this.state=a}}}}},setStyle:function(a){this.style=a},CLASS_NAME:"Urbex.Feature.Vector"});Urbex.Feature.Vector.style={"default":{fillColor:"#00FFFF",fillOpacity:0.2,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"#00FFFF",strokeOpacity:1,strokeWidth:1.4,strokeLinecap:"round",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"crosshair"},select:{fillColor:"blue",fillOpacity:0.4,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"blue",strokeOpacity:1,strokeWidth:2,strokeLinecap:"round",hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:"pointer"},temporary:{fillColor:"yellow",fillOpacity:0.2,hoverFillColor:"white",hoverFillOpacity:0.8,strokeColor:"yellow",strokeOpacity:1,strokeLinecap:"round",strokeWidth:4,hoverStrokeColor:"red",hoverStrokeOpacity:1,hoverStrokeWidth:0.2,pointRadius:6,hoverPointRadius:1,hoverPointUnit:"%",pointerEvents:"visiblePainted",cursor:""}};
Urbex.Format=Urbex.Class({externalProjection:null,internalProjection:null,initialize:function(a){Urbex.Util.extend(this,a)},read:function(a){alert(Urbex.i18n("readNotImplemented"))},write:function(a){alert(Urbex.i18n("writeNotImplemented"))},CLASS_NAME:"Urbex.Format"});Urbex.Format.WKT=Urbex.Class(Urbex.Format,{initialize:function(a){this.regExes={typeStr:/^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/,spaces:/\s+/,parenComma:/\)\s*,\s*\(/,doubleParenComma:/\)\s*\)\s*,\s*\(\s*\(/,trimParens:/^\s*\(?(.*?)\)?\s*$/};Urbex.Format.prototype.initialize.apply(this,[a])},read:function(e){var d,c,g;var f=this.regExes.typeStr.exec(e);if(f){c=f[1].toLowerCase();g=f[2];if(this.parse[c]){d=this.parse[c].apply(this,[g])}if(this.internalProjection&&this.externalProjection){if(d&&d.CLASS_NAME=="Urbex.Feature.Vector"){d.geometry.transform(this.externalProjection,this.internalProjection)}else{if(d&&typeof d=="object"){for(var b=0;b<d.length;b++){var a=d[b];a.geometry.transform(this.externalProjection,this.internalProjection)
}}}}}return d},write:function(c){var k,g,b,f,e;if(c.constructor==Array){k=c;e=true}else{k=[c];e=false}var d=[];if(e){d.push("GEOMETRYCOLLECTION(")}for(var a=0;a<k.length;++a){if(e&&a>0){d.push(",")}g=k[a].geometry;b=g.CLASS_NAME.split(".")[2].toLowerCase();if(!this.extract[b]){return null}if(this.internalProjection&&this.externalProjection){g=g.clone();g.transform(this.internalProjection,this.externalProjection)}f=this.extract[b].apply(this,[g]);d.push(b.toUpperCase()+"("+f+")")}if(e){d.push(")")}return d.join("")},extract:{point:function(a){return a.x+" "+a.y},multipoint:function(b){var c=[];for(var a=0;a<b.components.length;++a){c.push(this.extract.point.apply(this,[b.components[a]]))}return c.join(",")},linestring:function(a){var c=[];for(var b=0;b<a.components.length;++b){c.push(this.extract.point.apply(this,[a.components[b]]))}return c.join(",")},multilinestring:function(b){var c=[];for(var a=0;a<b.components.length;++a){c.push("("+this.extract.linestring.apply(this,[b.components[a]])+")")
}return c.join(",")},polygon:function(b){var c=[];for(var a=0;a<b.components.length;++a){c.push("("+this.extract.linestring.apply(this,[b.components[a]])+")")}return c.join(",")},multipolygon:function(c){var b=[];for(var a=0;a<c.components.length;++a){b.push("("+this.extract.polygon.apply(this,[c.components[a]])+")")}return b.join(",")}},parse:{point:function(b){var a=Urbex.String.trim(b).split(this.regExes.spaces);return new Urbex.Feature.Vector(new Urbex.Geometry.Point(a[0],a[1]))},multipoint:function(d){var b=Urbex.String.trim(d).split(",");var c=[];for(var a=0;a<b.length;++a){c.push(this.parse.point.apply(this,[b[a]]).geometry)}return new Urbex.Feature.Vector(new Urbex.Geometry.MultiPoint(c))},linestring:function(d){var b=Urbex.String.trim(d).split(",");var c=[];for(var a=0;a<b.length;++a){c.push(this.parse.point.apply(this,[b[a]]).geometry)}return new Urbex.Feature.Vector(new Urbex.Geometry.LineString(c))},multilinestring:function(e){var b;var a=Urbex.String.trim(e).split(this.regExes.parenComma);
var d=[];for(var c=0;c<a.length;++c){b=a[c].replace(this.regExes.trimParens,"$1");d.push(this.parse.linestring.apply(this,[b]).geometry)}return new Urbex.Feature.Vector(new Urbex.Geometry.MultiLineString(d))},polygon:function(g){var b,a,e;var f=Urbex.String.trim(g).split(this.regExes.parenComma);var d=[];for(var c=0;c<f.length;++c){b=f[c].replace(this.regExes.trimParens,"$1");a=this.parse.linestring.apply(this,[b]).geometry;e=new Urbex.Geometry.LinearRing(a.components);d.push(e)}return new Urbex.Feature.Vector(new Urbex.Geometry.Polygon(d))},multipolygon:function(e){var c;var a=Urbex.String.trim(e).split(this.regExes.doubleParenComma);var d=[];for(var b=0;b<a.length;++b){c=a[b].replace(this.regExes.trimParens,"$1");d.push(this.parse.polygon.apply(this,[c]).geometry)}return new Urbex.Feature.Vector(new Urbex.Geometry.MultiPolygon(d))},geometrycollection:function(d){d=d.replace(/,\s*([A-Za-z])/g,"|$1");var c=Urbex.String.trim(d).split("|");var b=[];for(var a=0;a<c.length;++a){b.push(Urbex.Format.WKT.prototype.read.apply(this,[c[a]]))
}return b}},CLASS_NAME:"Urbex.Format.WKT"});Urbex.Format.Text=Urbex.Class(Urbex.Format,{initialize:function(a){Urbex.Format.prototype.initialize.apply(this,[a])},read:function(m){var a=m.split("\n");var b;var g=[];for(var w=0;w<(a.length-1);w++){var v=a[w].replace(/^\s*/,"").replace(/\s*$/,"");if(v.charAt(0)!="#"){if(!b){b=v.split("\t")}else{var o=v.split("\t");var d=new Urbex.Geometry.Point(0,0);var k={};var s={};var t,u,c,q;var n=false;for(var l=0;l<o.length;l++){if(o[l]){if(b[l]=="point"){var r=o[l].split(",");d.y=parseFloat(r[0]);d.x=parseFloat(r[1]);n=true}else{if(b[l]=="lat"){d.y=parseFloat(o[l]);n=true}else{if(b[l]=="lon"){d.x=parseFloat(o[l]);n=true}else{if(b[l]=="id"){k.id=o[l]}else{if(b[l]=="title"){k.title=o[l]}else{if(b[l]=="image"||b[l]=="icon"){s.externalGraphic=o[l]}else{if(b[l]=="iconSize"){var p=o[l].split(",");s.graphicWidth=parseFloat(p[0]);s.graphicHeight=parseFloat(p[1])}else{if(b[l]=="iconOffset"){var f=o[l].split(",");s.graphicXOffset=parseFloat(f[0]);s.graphicYOffset=parseFloat(f[1])
}else{if(b[l]=="description"){k.description=o[l]}else{if(b[l]=="overflow"){k.overflow=o[l]}}}}}}}}}}}}if(n){if(this.internalProjection&&this.externalProjection){d.transform(this.externalProjection,this.internalProjection)}var e=new Urbex.Feature.Vector(d,k,s);g.push(e)}}}}return g},CLASS_NAME:"Urbex.Format.Text"});Urbex.Geometry=Urbex.Class({id:null,parent:null,bounds:null,initialize:function(){this.id=Urbex.Util.createUniqueID(this.CLASS_NAME+"_")},destroy:function(){this.id=null;this.bounds=null},clone:function(){return new Urbex.Geometry()},setBounds:function(a){if(a){this.bounds=a.clone()}},clearBounds:function(){this.bounds=null;if(this.parent){this.parent.clearBounds()}},extendBounds:function(b){var a=this.getBounds();if(!a){this.setBounds(b)}else{this.bounds.extend(b)}},getBounds:function(){if(this.bounds==null){this.calculateBounds()}return this.bounds},calculateBounds:function(){},atPoint:function(e,k,f){var c=false;var d=this.getBounds();if((d!=null)&&(e!=null)){var b=(k!=null)?k:0;
var a=(f!=null)?f:0;var g=new Urbex.Bounds(this.bounds.left-b,this.bounds.bottom-a,this.bounds.right+b,this.bounds.top+a);c=g.containsLonLat(e)}return c},getLength:function(){return 0},getArea:function(){return 0},toString:function(){return Urbex.Format.WKT.prototype.write(new Urbex.Feature.Vector(this))},CLASS_NAME:"Urbex.Geometry"});Urbex.Geometry.segmentsIntersect=function(u,t,q){var a=false;var r=u.x1-t.x1;var b=u.y1-t.y1;var s=u.x2-u.x1;var c=u.y2-u.y1;var p=t.y2-t.y1;var g=t.x2-t.x1;var m=(p*s)-(g*c);var l=(g*b)-(p*r);var k=(s*b)-(c*r);if(m==0){if(l==0&&k==0){a=true}}else{var f=l/m;var e=k/m;if(f>=0&&f<=1&&e>=0&&e<=1){if(!q){a=true}else{var o=u.x1+(f*s);var n=u.y1+(f*c);a=new Urbex.Geometry.Point(o,n)}}}return a};Urbex.Geometry.Collection=Urbex.Class(Urbex.Geometry,{components:null,componentTypes:null,initialize:function(a){Urbex.Geometry.prototype.initialize.apply(this,arguments);this.components=[];if(a!=null){this.addComponents(a)}},destroy:function(){this.components.length=0;this.components=null
},clone:function(){var geometry=eval("new "+this.CLASS_NAME+"()");for(var i=0;i<this.components.length;i++){geometry.addComponent(this.components[i].clone())}Urbex.Util.applyDefaults(geometry,this);return geometry},getComponentsString:function(){var a=[];for(var b=0;b<this.components.length;b++){a.push(this.components[b].toShortString())}return a.join(",")},calculateBounds:function(){this.bounds=null;if(this.components&&this.components.length>0){this.setBounds(this.components[0].getBounds());for(var a=1;a<this.components.length;a++){this.extendBounds(this.components[a].getBounds())}}},addComponents:function(b){if(!(b instanceof Array)){b=[b]}for(var a=0;a<b.length;a++){this.addComponent(b[a])}},addComponent:function(b,a){var d=false;if(b){if(this.componentTypes==null||(Urbex.Util.indexOf(this.componentTypes,b.CLASS_NAME)>-1)){if(a!=null&&(a<this.components.length)){var e=this.components.slice(0,a);var c=this.components.slice(a,this.components.length);e.push(b);this.components=e.concat(c)
}else{this.components.push(b)}b.parent=this;this.clearBounds();d=true}}return d},removeComponents:function(b){if(!(b instanceof Array)){b=[b]}for(var a=b.length-1;a>=0;--a){this.removeComponent(b[a])}},removeComponent:function(a){Urbex.Util.removeItem(this.components,a);this.clearBounds()},getLength:function(){var b=0;for(var a=0;a<this.components.length;a++){b+=this.components[a].getLength()}return b},getArea:function(){var b=0;for(var a=0;a<this.components.length;a++){b+=this.components[a].getArea()}return b},move:function(a,c){for(var b=0;b<this.components.length;b++){this.components[b].move(a,c)}},rotate:function(c,a){for(var b=0;b<this.components.length;++b){this.components[b].rotate(c,a)}},resize:function(d,a,c){for(var b=0;b<this.components.length;++b){this.components[b].resize(d,a,c)}},equals:function(c){var a=true;if(!c||!c.CLASS_NAME||(this.CLASS_NAME!=c.CLASS_NAME)){a=false}else{if(!(c.components instanceof Array)||(c.components.length!=this.components.length)){a=false}else{for(var b=0;
b<this.components.length;++b){if(!this.components[b].equals(c.components[b])){a=false;break}}}}return a},transform:function(d,b){if(d&&b){for(var c=0;c<this.components.length;c++){var a=this.components[c];a.transform(d,b)}}return this},intersects:function(c){var a=false;for(var b=0;b<this.components.length;++b){a=c.intersects(this.components[b]);if(a){break}}return a},CLASS_NAME:"Urbex.Geometry.Collection"});Urbex.Geometry.Point=Urbex.Class(Urbex.Geometry,{x:null,y:null,wx:null,wy:null,initialize:function(a,b){Urbex.Geometry.prototype.initialize.apply(this,arguments);this.x=parseFloat(a);this.y=parseFloat(b);this.wx=parseFloat(a);this.wy=parseFloat(b)},clone:function(a){if(a==null){a=new Urbex.Geometry.Point(this.x,this.y)}Urbex.Util.applyDefaults(a,this);return a},calculateBounds:function(){this.bounds=new Urbex.Bounds(this.x,this.y,this.x,this.y)},distanceTo:function(l,d){var a=0;if((this.x!=null)&&(this.y!=null)&&(l!=null)&&(l.x!=null)&&(l.y!=null)){if(d=="EPSG:3785"){var n=Urbex.Util.SphericalMercatorToWGS84(this.x,this.y);
var m=n[0];var f=n[1];var b=Urbex.Util.SphericalMercatorToWGS84(l.x,l.y);var k=b[0];var e=b[1];a=Math.acos(Math.sin(Urbex.Util.ToRad(f))*Math.sin(Urbex.Util.ToRad(e))+Math.cos(Urbex.Util.ToRad(f))*Math.cos(Urbex.Util.ToRad(e))*Math.cos(Urbex.Util.ToRad(m)-Urbex.Util.ToRad(k)))*6378137}else{if(d.toString().match(/^EPSG:326\d\d$/)){x1=this.x;y1=this.y;x2=l.x;y2=l.y;var g=Math.pow(x1-x2,2);var c=Math.pow(y1-y2,2);a=Math.sqrt(g+c)}}}return a},equals:function(a){var b=false;if(a!=null){b=((this.x==a.x&&this.y==a.y)||(isNaN(this.x)&&isNaN(this.y)&&isNaN(a.x)&&isNaN(a.y)))}return b},toShortString:function(){return(this.x+", "+this.y)},move:function(a,b){this.x=this.x+a;this.y=this.y+b;this.clearBounds()},rotate:function(d,b){d*=Math.PI/180;var a=this.distanceTo(b);var c=d+Math.atan2(this.y-b.y,this.x-b.x);this.x=b.x+(a*Math.cos(c));this.y=b.y+(a*Math.sin(c));this.clearBounds()},resize:function(c,a,b){b=(b==undefined)?1:b;this.x=a.x+(c*b*(this.x-a.x));this.y=a.y+(c*(this.y-a.y));this.clearBounds()
},intersects:function(b){var a=false;if(b.CLASS_NAME=="Urbex.Geometry.Point"){a=this.equals(b)}else{a=b.intersects(this)}return a},transform:function(b,a){if((b&&a)){Urbex.Projection.transform(this,b,a)}return this},CLASS_NAME:"Urbex.Geometry.Point"});Urbex.Geometry.MultiPoint=Urbex.Class(Urbex.Geometry.Collection,{componentTypes:["Urbex.Geometry.Point"],initialize:function(a){Urbex.Geometry.Collection.prototype.initialize.apply(this,arguments)},addPoint:function(a,b){this.addComponent(a,b)},removePoint:function(a){this.removeComponent(a)},CLASS_NAME:"Urbex.Geometry.MultiPoint"});Urbex.Geometry.Curve=Urbex.Class(Urbex.Geometry.MultiPoint,{componentTypes:["Urbex.Geometry.Point"],initialize:function(a){Urbex.Geometry.MultiPoint.prototype.initialize.apply(this,arguments)},getLength:function(){var b=0;if(this.components&&(this.components.length>1)){for(var a=1;a<this.components.length;a++){b+=this.components[a-1].distanceTo(this.components[a])}}return b},CLASS_NAME:"Urbex.Geometry.Curve"});
Urbex.Geometry.LineString=Urbex.Class(Urbex.Geometry.Curve,{initialize:function(a){Urbex.Geometry.Curve.prototype.initialize.apply(this,arguments)},removeComponent:function(a){if(this.components&&(this.components.length>2)){Urbex.Geometry.Collection.prototype.removeComponent.apply(this,arguments)}},intersects:function(m){var c=false;var l=m.CLASS_NAME;if(l=="Urbex.Geometry.LineString"||l=="Urbex.Geometry.LinearRing"||l=="Urbex.Geometry.Point"){var o=this.getSortedSegments();var n;if(l=="Urbex.Geometry.Point"){n=[{x1:m.x,y1:m.y,x2:m.x,y2:m.y}]}else{n=m.getSortedSegments()}var r,g,e,a,q,p,d,b;outer:for(var k=0;k<o.length;++k){r=o[k];g=r.x1;e=r.x2;a=r.y1;q=r.y2;inner:for(var f=0;f<n.length;++f){p=n[f];if(p.x1>e){break}if(p.x2<g){continue}d=p.y1;b=p.y2;if(Math.min(d,b)>Math.max(a,q)){continue}if(Math.max(d,b)<Math.min(a,q)){continue}if(Urbex.Geometry.segmentsIntersect(r,p)){c=true;break outer}}}}else{c=m.intersects(this)}return c},getSortedSegments:function(){var a=this.components.length-1;
var b=new Array(a);for(var c=0;c<a;++c){point1=this.components[c];point2=this.components[c+1];if(point1.x<point2.x){b[c]={x1:point1.x,y1:point1.y,x2:point2.x,y2:point2.y}}else{b[c]={x1:point2.x,y1:point2.y,x2:point1.x,y2:point1.y}}}function d(f,e){return f.x1-e.x1}return b.sort(d)},CLASS_NAME:"Urbex.Geometry.LineString"});Urbex.Geometry.LinearRing=Urbex.Class(Urbex.Geometry.LineString,{componentTypes:["Urbex.Geometry.Point"],initialize:function(a){Urbex.Geometry.LineString.prototype.initialize.apply(this,arguments)},addComponent:function(a,b){var c=false;var d=this.components.pop();if(b!=null||!a.equals(d)){c=Urbex.Geometry.Collection.prototype.addComponent.apply(this,arguments)}var e=this.components[0];Urbex.Geometry.Collection.prototype.addComponent.apply(this,[e]);return c},removeComponent:function(a){if(this.components.length>4){this.components.pop();Urbex.Geometry.Collection.prototype.removeComponent.apply(this,arguments);var b=this.components[0];Urbex.Geometry.Collection.prototype.addComponent.apply(this,[b])
}},move:function(a,c){for(var b=0;b<this.components.length-1;b++){this.components[b].move(a,c)}},rotate:function(c,a){for(var b=0;b<this.components.length-1;++b){this.components[b].rotate(c,a)}},resize:function(d,a,c){for(var b=0;b<this.components.length-1;++b){this.components[b].resize(d,a,c)}},transform:function(d,b){if(d&&b){for(var c=0;c<this.components.length-1;c++){var a=this.components[c];a.transform(d,b)}}return this},getArea:function(l){var c=0;var g=0;var a,m,d,o,b,n;if(this.components&&(this.components.length>2)){var k=0;for(var f=0;f<this.components.length-1;f++){if(l=="EPSG:3785"){var p=Urbex.Util.SphericalMercatorToWGS84(this.components[f].x,this.components[f].y);a=p[0];m=p[1];if(g==0){g=Urbex.Util.getHuso(a)}var e=Urbex.Util.WGS84ToUtm(a,m,g);d=e[0];o=e[1];var p=Urbex.Util.SphericalMercatorToWGS84(this.components[f+1].x,this.components[f+1].y);a=p[0];m=p[1];var e=Urbex.Util.WGS84ToUtm(a,m,g);b=e[0];n=e[1]}else{if(l.toString().match(/^EPSG:326\d\d$/)){d=this.components[f].x;
o=this.components[f].y;b=this.components[f+1].x;n=this.components[f+1].y}}k+=(d+b)*(o-n)}c=-k/2}return c},containsPoint:function(o){var u=Urbex.Number.limitSigDigs;var n=14;var m=u(o.x,n);var l=u(o.y,n);function t(A,w,z,v,x){return(((w-v)*A)+((v*z)-(w*x)))/(z-x)}var a=this.components.length-1;var g,f,s,d,q,b,e,c;var k=0;for(var p=0;p<a;++p){g=this.components[p];s=u(g.x,n);d=u(g.y,n);f=this.components[p+1];q=u(f.x,n);b=u(f.y,n);if(d==b){if(l==d){if(s<=q&&(m>=s&&m<=q)||s>=q&&(m<=s&&m>=q)){k=-1;break}}continue}e=u(t(l,s,d,q,b),n);if(e==m){if(d<b&&(l>=d&&l<=b)||d>b&&(l<=d&&l>=b)){k=-1;break}}if(e<=m){continue}if(s!=q&&(e<Math.min(s,q)||e>Math.max(s,q))){continue}if(d<b&&(l>=d&&l<b)||d>b&&(l<d&&l>=b)){++k}}var r=(k==-1)?1:!!(k&1);return r},intersects:function(c){var a=false;if(c.CLASS_NAME=="Urbex.Geometry.Point"){a=this.containsPoint(c)}else{if(c.CLASS_NAME=="Urbex.Geometry.LineString"){a=c.intersects(this)}else{if(c.CLASS_NAME=="Urbex.Geometry.LinearRing"){a=Urbex.Geometry.LineString.prototype.intersects.apply(this,[c])
}else{for(var b=0;b<c.components.length;++b){a=c.components[b].intersects(this);if(a){break}}}}}return a},CLASS_NAME:"Urbex.Geometry.LinearRing"});Urbex.Geometry.Polygon=Urbex.Class(Urbex.Geometry.Collection,{componentTypes:["Urbex.Geometry.LinearRing"],initialize:function(a){Urbex.Geometry.Collection.prototype.initialize.apply(this,arguments)},getArea:function(){var b=0;if(this.components&&(this.components.length>0)){b+=Math.abs(this.components[0].getArea());for(var a=1;a<this.components.length;a++){b-=Math.abs(this.components[a].getArea())}}return b},containsPoint:function(a){var e=this.components.length;var c=false;if(e>0){c=this.components[0].containsPoint(a);if(c!==1){if(c&&e>1){var d;for(var b=1;b<e;++b){d=this.components[b].containsPoint(a);if(d){if(d===1){c=1}else{c=false}break}}}}}return c},intersects:function(d){var a=false;var c;if(d.CLASS_NAME=="Urbex.Geometry.Point"){a=this.containsPoint(d)}else{if(d.CLASS_NAME=="Urbex.Geometry.LineString"||d.CLASS_NAME=="Urbex.Geometry.LinearRing"){for(c=0;
c<this.components.length;++c){a=d.intersects(this.components[c]);if(a){break}}if(!a){for(c=0;c<d.components.length;++c){a=this.containsPoint(d.components[c]);if(a){break}}}}else{for(c=0;c<d.components.length;++c){a=this.intersects(d.components[c]);if(a){break}}}}if(!a&&d.CLASS_NAME=="Urbex.Geometry.Polygon"){var b=this.components[0];for(c=0;c<b.components.length;++c){a=d.containsPoint(b.components[c]);if(a){break}}}return a},CLASS_NAME:"Urbex.Geometry.Polygon"});Urbex.Geometry.Polygon.createRegularPolygon=function(l,f,b,n){var c=Math.PI*((1/b)-(1/2));if(n){c+=(n/180)*Math.PI}var a,k,g;var m=[];for(var e=0;e<b;++e){a=c+(e*2*Math.PI/b);k=l.x+(f*Math.cos(a));g=l.y+(f*Math.sin(a));m.push(new Urbex.Geometry.Point(k,g))}var d=new Urbex.Geometry.LinearRing(m);return new Urbex.Geometry.Polygon([d])};Urbex.Geometry.MultiPolygon=Urbex.Class(Urbex.Geometry.Collection,{componentTypes:["Urbex.Geometry.Polygon"],initialize:function(a){Urbex.Geometry.Collection.prototype.initialize.apply(this,arguments)
},CLASS_NAME:"Urbex.Geometry.MultiPolygon"});Urbex.Renderer=Urbex.Class({container:null,extent:null,size:null,resolution:null,map:null,initialize:function(a){this.container=Urbex.Util.getElement(a)},destroy:function(){this.container=null;this.extent=null;this.size=null;this.resolution=null;this.map=null},supported:function(){return false},setExtent:function(b,a){this.extent=b.clone();this.resolution=null},setSize:function(a){this.size=a.clone();this.resolution=null},getResolution:function(){this.resolution=this.resolution||this.map.getResolution();return this.resolution},drawFeature:function(a,b){if(b==null){b=a.style}if(a.geometry){this.drawGeometry(a.geometry,b,a.id)}},drawGeometry:function(c,a,b){},clear:function(){},getFeatureIdFromEvent:function(a){},eraseFeatures:function(b){if(!(b instanceof Array)){b=[b]}for(var a=0;a<b.length;++a){this.eraseGeometry(b[a].geometry)}},eraseGeometry:function(a){},CLASS_NAME:"Urbex.Renderer"});Urbex.Renderer.Elements=Urbex.Class(Urbex.Renderer,{rendererRoot:null,root:null,xmlns:null,minimumSymbolizer:{strokeLinecap:"round",strokeOpacity:1,fillOpacity:1,pointRadius:0},initialize:function(a){Urbex.Renderer.prototype.initialize.apply(this,arguments);
this.rendererRoot=this.createRenderRoot();this.root=this.createRoot();this.rendererRoot.appendChild(this.root);this.container.appendChild(this.rendererRoot)},destroy:function(){this.clear();this.rendererRoot=null;this.root=null;this.xmlns=null;Urbex.Renderer.prototype.destroy.apply(this,arguments)},clear:function(){if(this.root){while(this.root.childNodes.length>0){this.root.removeChild(this.root.firstChild)}}},getNodeType:function(b,a){},drawGeometry:function(g,d,f){var c=g.CLASS_NAME;if((c=="Urbex.Geometry.Collection")||(c=="Urbex.Geometry.MultiPoint")||(c=="Urbex.Geometry.MultiLineString")||(c=="Urbex.Geometry.MultiPolygon")){for(var b=0;b<g.components.length;b++){this.drawGeometry(g.components[b],d,f)}return}if(d.display!="none"){var a=this.getNodeType(g,d);var e=this.nodeFactory(g.id,a);e._featureId=f;e._geometryClass=g.CLASS_NAME;e._style=d;e=this.drawGeometryNode(e,g);if(e.parentNode!=this.root){this.root.appendChild(e)}this.postDraw(e)}else{e=Urbex.Util.getElement(g.id);if(e){e.parentNode.removeChild(e)
}}},drawGeometryNode:function(c,d,b){b=b||c._style;Urbex.Util.applyDefaults(b,this.minimumSymbolizer);var a={isFilled:true,isStroked:!!b.strokeWidth};switch(d.CLASS_NAME){case"Urbex.Geometry.Point":this.drawPoint(c,d);break;case"Urbex.Geometry.LineString":a.isFilled=false;this.drawLineString(c,d);break;case"Urbex.Geometry.LinearRing":this.drawLinearRing(c,d);break;case"Urbex.Geometry.Polygon":this.drawPolygon(c,d);break;case"Urbex.Geometry.Surface":this.drawSurface(c,d);break;case"Urbex.Geometry.Rectangle":this.drawRectangle(c,d);break;default:break}c._style=b;c._options=a;return this.setStyle(c,b,a,d)},postDraw:function(a){},drawPoint:function(a,b){},drawLineString:function(a,b){},drawLinearRing:function(a,b){},drawPolygon:function(a,b){},drawRectangle:function(a,b){},drawCircle:function(a,b){},drawSurface:function(a,b){},getFeatureIdFromEvent:function(a){var b=a.target||a.srcElement;return b._featureId},eraseGeometry:function(c){if((c.CLASS_NAME=="Urbex.Geometry.MultiPoint")||(c.CLASS_NAME=="Urbex.Geometry.MultiLineString")||(c.CLASS_NAME=="Urbex.Geometry.MultiPolygon")){for(var b=0;
b<c.components.length;b++){this.eraseGeometry(c.components[b])}}else{var a=Urbex.Util.getElement(c.id);if(a&&a.parentNode){a.parentNode.removeChild(a)}}},nodeFactory:function(c,a){var b=Urbex.Util.getElement(c);if(b){if(!this.nodeTypeCompare(b,a)){b.parentNode.removeChild(b);b=this.nodeFactory(c,a)}}else{b=this.createNode(a,c)}return b},CLASS_NAME:"Urbex.Renderer.Elements"});Urbex.Renderer.SVG=Urbex.Class(Urbex.Renderer.Elements,{xmlns:"http://www.w3.org/2000/svg",MAX_PIXEL:15000,localResolution:null,initialize:function(a){if(!this.supported()){return}Urbex.Renderer.Elements.prototype.initialize.apply(this,arguments)},destroy:function(){Urbex.Renderer.Elements.prototype.destroy.apply(this,arguments)},supported:function(){var a="http://www.w3.org/TR/SVG11/feature#";return(document.implementation&&(document.implementation.hasFeature("org.w3c.svg","1.0")||document.implementation.hasFeature(a+"SVG","1.1")||document.implementation.hasFeature(a+"BasicStructure","1.1")))},inValidRange:function(a,b){return(a>=-this.MAX_PIXEL&&a<=this.MAX_PIXEL&&b>=-this.MAX_PIXEL&&b<=this.MAX_PIXEL)
},setExtent:function(c,a){Urbex.Renderer.Elements.prototype.setExtent.apply(this,arguments);var b=this.getResolution();if(a==true){this.localResolution=null}if(!this.localResolution||b!=this.localResolution){this.left=-c.left/b;this.top=c.top/b;if(this.map.activeView=="ORTHO"&&this.map.orientation=="SOUTH"){this.left=(c.left+c.getWidth())/b;this.top=-(c.top-c.getHeight())/b}if(this.map.activeView=="ORTHO"&&this.map.orientation=="EAST"){this.left=c.top/b;this.top=(c.left+c.getWidth())/b}if(this.map.activeView=="ORTHO"&&this.map.orientation=="WEST"){this.left=-(c.top-c.getHeight())/b;this.top=-(c.left)/b}}var f=0;var e=0;if(this.localResolution&&b==this.localResolution){f=(this.left)-(-c.left/b);e=(this.top)-(c.top/b);if(this.map.activeView=="ORTHO"&&this.map.orientation=="SOUTH"){f=this.left-(c.left+c.getWidth())/b;e=this.top+(c.top-c.getHeight())/b}if(this.map.activeView=="ORTHO"&&this.map.orientation=="EAST"){f=this.left-(c.top/b);e=this.top-(c.left+c.getWidth())/b}if(this.map.activeView=="ORTHO"&&this.map.orientation=="WEST"){f=this.left-(-(c.top-c.getHeight())/b);
e=this.top-(-c.left/b)}}this.localResolution=b;var d=f+" "+e+" "+c.getWidth()/b+" "+c.getHeight()/b;if(this.map.activeView=="ORTHO"&&(this.map.orientation=="EAST"||this.map.orientation=="WEST")){d=f+" "+e+" "+c.getHeight()/b+" "+c.getWidth()/b}this.rendererRoot.setAttributeNS(null,"viewBox",d)},setSize:function(a){Urbex.Renderer.prototype.setSize.apply(this,arguments);this.rendererRoot.setAttributeNS(null,"width",this.size.w);this.rendererRoot.setAttributeNS(null,"height",this.size.h)},getNodeType:function(c,b){var a=null;switch(c.CLASS_NAME){case"Urbex.Geometry.Point":a=b.externalGraphic?"image":"circle";break;case"Urbex.Geometry.Rectangle":a="rect";break;case"Urbex.Geometry.LineString":a="polyline";break;case"Urbex.Geometry.LinearRing":a="polygon";break;case"Urbex.Geometry.Polygon":case"Urbex.Geometry.Curve":case"Urbex.Geometry.Surface":a="path";break;default:break}return a},setStyle:function(d,b,n){b=b||d._style;n=n||d._options;var a=parseFloat(d.getAttributeNS(null,"r"));if(d._geometryClass=="Urbex.Geometry.Point"&&a){if(b.externalGraphic){var l=parseFloat(d.getAttributeNS(null,"cx"));
var k=parseFloat(d.getAttributeNS(null,"cy"));if(b.graphicWidth&&b.graphicHeight){d.setAttributeNS(null,"preserveAspectRatio","none")}var c=b.graphicWidth||b.graphicHeight;var m=b.graphicHeight||b.graphicWidth;c=c?c:b.pointRadius*2;m=m?m:b.pointRadius*2;var g=(b.graphicXOffset!=undefined)?b.graphicXOffset:-(0.5*c);var e=(b.graphicYOffset!=undefined)?b.graphicYOffset:-(0.5*m);var f=b.graphicOpacity||b.fillOpacity;d.setAttributeNS(null,"x",(l+g).toFixed());d.setAttributeNS(null,"y",(k+e).toFixed());d.setAttributeNS(null,"width",c);d.setAttributeNS(null,"height",m);d.setAttributeNS("http://www.w3.org/1999/xlink","href",b.externalGraphic);d.setAttributeNS(null,"style","opacity: "+f)}else{d.setAttributeNS(null,"r",b.pointRadius)}}if(n.isFilled){d.setAttributeNS(null,"fill",b.fillColor);d.setAttributeNS(null,"fill-opacity",b.fillOpacity)}else{d.setAttributeNS(null,"fill","none")}if(n.isStroked){d.setAttributeNS(null,"stroke",b.strokeColor);d.setAttributeNS(null,"stroke-opacity",b.strokeOpacity);
d.setAttributeNS(null,"stroke-width",b.strokeWidth);d.setAttributeNS(null,"stroke-linecap",b.strokeLinecap)}else{d.setAttributeNS(null,"stroke","none")}if(b.pointerEvents){d.setAttributeNS(null,"pointer-events",b.pointerEvents)}if(b.cursor!=null){d.setAttributeNS(null,"cursor",b.cursor)}return d},createNode:function(a,c){var b=document.createElementNS(this.xmlns,a);if(c){b.setAttributeNS(null,"id",c)}return b},nodeTypeCompare:function(b,a){return(a==b.nodeName)},createRenderRoot:function(){return this.nodeFactory(this.container.id+"_svgRoot","svg")},createRoot:function(){return this.nodeFactory(this.container.id+"_root","g")},drawPoint:function(a,b){this.drawCircle(a,b,1)},drawCircle:function(d,e,b){var c=this.getResolution();var a=(e.x/c+this.left);var f=(this.top-e.y/c);if(this.map.activeView=="ORTHO"&&this.map.orientation=="SOUTH"){a=(-e.x/c+this.left);f=(this.top+e.y/c)}if(this.map.activeView=="ORTHO"&&this.map.orientation=="EAST"){a=-e.y/c+this.left;f=this.top-(e.x/c)}if(this.map.activeView=="ORTHO"&&this.map.orientation=="WEST"){a=e.y/c+this.left;
f=this.top+(e.x/c)}if(this.inValidRange(a,f)){d.setAttributeNS(null,"cx",a);d.setAttributeNS(null,"cy",f);d.setAttributeNS(null,"r",b)}else{d.setAttributeNS(null,"cx","");d.setAttributeNS(null,"cy","");d.setAttributeNS(null,"r",0)}},drawLineString:function(a,b){a.setAttributeNS(null,"points",this.getComponentsString(b.components))},drawLinearRing:function(a,b){a.setAttributeNS(null,"points",this.getComponentsString(b.components))},drawPolygon:function(g,l){var k="";var a=true;for(var e=0;e<l.components.length;e++){var c=l.components[e];k+=" M";for(var f=0;f<c.components.length;f++){var b=this.getShortString(c.components[f]);if(b){k+=" "+b}else{a=false}}}k+=" z";if(a){g.setAttributeNS(null,"d",k);g.setAttributeNS(null,"fill-rule","evenodd")}else{g.setAttributeNS(null,"d","")}},drawRectangle:function(c,d){var b=this.getResolution();var a=(d.x/b+this.left);var e=(this.top-d.y/b);if(this.inValidRange(a,e)){c.setAttributeNS(null,"x",a);c.setAttributeNS(null,"y",e);c.setAttributeNS(null,"width",d.width/b);
c.setAttributeNS(null,"height",d.height/b)}else{c.setAttributeNS(null,"x","");c.setAttributeNS(null,"y","");c.setAttributeNS(null,"width",0);c.setAttributeNS(null,"height",0)}},drawSurface:function(e,g){var f=null;var a=true;for(var c=0;c<g.components.length;c++){if((c%3)==0&&(c/3)==0){var b=this.getShortString(g.components[c]);if(!b){a=false}f="M "+b}else{if((c%3)==1){var b=this.getShortString(g.components[c]);if(!b){a=false}f+=" C "+b}else{var b=this.getShortString(g.components[c]);if(!b){a=false}f+=" "+b}}}f+=" Z";if(a){e.setAttributeNS(null,"d",f)}else{e.setAttributeNS(null,"d","")}},getComponentsString:function(d){var a=[];for(var c=0;c<d.length;c++){var b=this.getShortString(d[c]);if(b){a.push(b)}}return a.join(",")},getShortString:function(b){var c=this.getResolution();var a=(b.x/c+this.left);var d=(this.top-b.y/c);if(this.map.activeView=="ORTHO"&&this.map.orientation=="SOUTH"){a=(-b.x/c+this.left);d=(this.top+b.y/c)}if(this.map.activeView=="ORTHO"&&this.map.orientation=="EAST"){a=-b.y/c+this.left;
d=this.top-(b.x/c)}if(this.map.activeView=="ORTHO"&&this.map.orientation=="WEST"){a=b.y/c+this.left;d=this.top+(b.x/c)}if(this.inValidRange(a,d)){return a+","+d}else{if(a>this.MAX_PIXEL){a=this.MAX_PIXEL}else{if(a<-this.MAX_PIXEL){a=-this.MAX_PIXEL}}if(d>this.MAX_PIXEL){d=this.MAX_PIXEL}else{if(d<-this.MAX_PIXEL){d=-this.MAX_PIXEL}}return a+","+d}},CLASS_NAME:"Urbex.Renderer.SVG"});Urbex.Renderer.VML=Urbex.Class(Urbex.Renderer.Elements,{xmlns:"urn:schemas-microsoft-com:vml",MAX_PIXEL:65000,localResolution:null,initialize:function(a){if(!this.supported()){return}if(!document.namespaces.g_vml_){document.namespaces.add("g_vml_",this.xmlns);var b=document.createStyleSheet();b.cssText="g_vml_\\: * { behavior:url(#default#VML); position: absolute; display: inline-block; }"}Urbex.Renderer.Elements.prototype.initialize.apply(this,arguments)},destroy:function(){Urbex.Renderer.Elements.prototype.destroy.apply(this,arguments)},supported:function(){return !!(document.namespaces)},setExtent:function(d,a){Urbex.Renderer.Elements.prototype.setExtent.apply(this,arguments);
var g="";var c="";var b=this.getResolution();if(a==true){this.localResolution=null}if(!this.localResolution||b!=this.localResolution){this.left=-d.left/b;this.top=d.top/b;if(this.map.activeView=="ORTHO"&&this.map.orientation=="SOUTH"){this.left=(d.left+d.getWidth())/b;this.top=-(d.top-d.getHeight())/b}if(this.map.activeView=="ORTHO"&&this.map.orientation=="EAST"){this.left=d.top/b;this.top=(d.left+d.getWidth())/b}if(this.map.activeView=="ORTHO"&&this.map.orientation=="WEST"){this.left=-(d.top-d.getHeight())/b;this.top=-(d.left)/b}}var f=0;var e=0;if(this.localResolution&&b==this.localResolution){f=(this.left)-(-d.left/b);e=(this.top)-(d.top/b);if(this.map.activeView=="ORTHO"&&this.map.orientation=="SOUTH"){f=this.left-(d.left+d.getWidth())/b;e=this.top+(d.top-d.getHeight())/b}if(this.map.activeView=="ORTHO"&&this.map.orientation=="EAST"){f=this.left-(d.top/b);e=this.top-(d.left+d.getWidth())/b}if(this.map.activeView=="ORTHO"&&this.map.orientation=="WEST"){f=this.left-(-(d.top-d.getHeight())/b);
e=this.top-(-d.left/b)}}this.localResolution=b;g=f+" "+-e;c=d.getWidth()/b+" "+-d.getHeight()/b;if(this.map.activeView=="ORTHO"&&(this.map.orientation=="EAST"||this.map.orientation=="WEST")){c=d.getHeight()/b+" "+-d.getWidth()/b}this.root.setAttribute("coordorigin",g);this.root.setAttribute("coordsize",c)},setSize:function(a){Urbex.Renderer.prototype.setSize.apply(this,arguments);this.rendererRoot.style.width=this.size.w;this.rendererRoot.style.height=this.size.h;this.root.style.width=this.size.w;this.root.style.height=this.size.h},getNodeType:function(c,b){var a=null;switch(c.CLASS_NAME){case"Urbex.Geometry.Point":a=b.externalGraphic?"g_vml_:rect":"g_vml_:oval";break;case"Urbex.Geometry.Rectangle":a="g_vml_:rect";break;case"Urbex.Geometry.LineString":case"Urbex.Geometry.LinearRing":case"Urbex.Geometry.Polygon":case"Urbex.Geometry.Curve":case"Urbex.Geometry.Surface":a="g_vml_:shape";break;default:break}return a},setStyle:function(c,a,p,l){a=a||c._style;p=p||c._options;if(c._geometryClass=="Urbex.Geometry.Point"){if(a.externalGraphic){var b=a.graphicWidth||a.graphicHeight;
var m=a.graphicHeight||a.graphicWidth;b=b?b:a.pointRadius*2;m=m?m:a.pointRadius*2;var e=this.getResolution();var g=(a.graphicXOffset!=undefined)?a.graphicXOffset:-(0.5*b);var d=(a.graphicYOffset!=undefined)?a.graphicYOffset:-(0.5*m);c.style.left=((l.x/e)+g).toFixed();c.style.top=((l.y/e)-(d+m)).toFixed();c.style.width=b;c.style.height=m;a.fillColor="none";p.isStroked=false}else{this.drawCircle(c,l,a.pointRadius)}}if(p.isFilled){c.setAttribute("fillcolor",a.fillColor)}else{c.setAttribute("filled","false")}var k=c.getElementsByTagName("fill");var o=(k.length==0)?null:k[0];if(!p.isFilled){if(o){c.removeChild(o)}}else{if(!o){o=this.createNode("g_vml_:fill",c.id+"_fill")}o.setAttribute("opacity",a.fillOpacity);if(c._geometryClass=="Urbex.Geometry.Point"&&a.externalGraphic){if(a.graphicOpacity){o.setAttribute("opacity",a.graphicOpacity)}o.setAttribute("src",a.externalGraphic);o.setAttribute("type","frame");c.style.flip="y";if(!(a.graphicWidth&&a.graphicHeight)){o.aspect="atmost"}}if(o.parentNode!=c){c.appendChild(o)
}}if(p.isStroked){c.setAttribute("strokecolor",a.strokeColor);c.setAttribute("strokeweight",a.strokeWidth+"px")}else{c.setAttribute("stroked","false")}var f=c.getElementsByTagName("stroke");var n=(f.length==0)?null:f[0];if(!p.isStroked){if(n){c.removeChild(n)}}else{if(!n){n=this.createNode("g_vml_:stroke",c.id+"_stroke");c.appendChild(n)}n.setAttribute("opacity",a.strokeOpacity);n.setAttribute("endcap",!a.strokeLinecap||a.strokeLinecap=="butt"?"flat":a.strokeLinecap)}if(a.cursor!=null){c.style.cursor=a.cursor}return c},postDraw:function(a){var c=a._style.fillColor;var b=a._style.strokeColor;if(c=="none"&&a.getAttribute("fillcolor")!=c){a.setAttribute("fillcolor",c)}if(b=="none"&&a.getAttribute("strokecolor")!=b){a.setAttribute("strokecolor",b)}},setNodeDimension:function(a,f){var k=f.getBounds();if(k){var b=this.getResolution();var d=new Urbex.Bounds((k.left/b),(k.bottom/b),(k.right/b),(k.top/b));var g=(d.left+this.left).toFixed();var c=(this.top-d.top).toFixed();if(this.map.activeView=="ORTHO"&&this.map.orientation=="SOUTH"){g=(-d.right+this.left).toFixed();
c=(this.top+d.bottom).toFixed()}if(this.map.activeView=="ORTHO"&&this.map.orientation=="EAST"){g=(-d.top+this.left).toFixed();c=(this.top-d.right).toFixed()}if(this.map.activeView=="ORTHO"&&this.map.orientation=="WEST"){g=(d.bottom+this.left).toFixed();c=(this.top+d.left).toFixed()}var l=d.getWidth().toFixed();var e=d.getHeight().toFixed();if(this.map.activeView=="ORTHO"&&(this.map.orientation=="EAST"||this.map.orientation=="WEST")){l=d.getHeight().toFixed();e=d.getWidth().toFixed()}a.style.left=g;a.style.top=c;a.style.width=l;a.style.height=e;a.coordorigin=g+" "+c;a.coordsize=l+" "+e}},createNode:function(a,c){var b=document.createElement(a);if(c){b.setAttribute("id",c)}b.setAttribute("unselectable","on",0);b.onselectstart=function(){return(false)};return b},nodeTypeCompare:function(c,b){var d=b;var a=d.indexOf(":");if(a!=-1){d=d.substr(a+1)}var e=c.nodeName;a=e.indexOf(":");if(a!=-1){e=e.substr(a+1)}return(d==e)},createRenderRoot:function(){return this.nodeFactory(this.container.id+"_vmlRoot","div")
},createRoot:function(){return this.nodeFactory(this.container.id+"_root","g_vml_:group")},drawPoint:function(a,b){this.drawCircle(a,b,1)},drawCircle:function(e,f,b){if(!isNaN(f.x)&&!isNaN(f.y)){var c=this.getResolution();var a=(f.x/c+this.left);var g=-(this.top-f.y/c);if(this.map.activeView=="ORTHO"&&this.map.orientation=="SOUTH"){a=(-f.x/c+this.left);g=-(this.top+f.y/c)}if(this.map.activeView=="ORTHO"&&this.map.orientation=="EAST"){a=-f.y/c+this.left;g=-(this.top-(f.x/c))}if(this.map.activeView=="ORTHO"&&this.map.orientation=="WEST"){a=f.y/c+this.left;g=-(this.top+(f.x/c))}if(this.inValidRange(a,g)){e.style.left=a.toFixed()-b;e.style.top=g.toFixed()-b}else{e.style.left=0;e.style.top=0;b=0}var d=b*2;e.style.width=d;e.style.height=d}},drawLineString:function(a,b){this.drawLine(a,b,false)},drawLinearRing:function(a,b){this.drawLine(a,b,true)},drawLine:function(b,m,f){var c=this.getResolution();var a=m.components.length;var q=new Array(a);var o=true;var p=0;var g,n,l;for(var e=0;e<a;e++){var k=this.getShortString(m.components[e]);
if(k){q.push(" "+k);if(p==0){q.push(" l")}p++}else{o=false}}if(o==false){q=[];q.push(" 0,0");q.push(" l");q.push(" 0,0")}else{this.setNodeDimension(b,m)}var d=(f)?" x e":" e";b.path="m"+q.join("")+d},drawPolygon:function(a,l){var b=this.getResolution();var n=true;var p=[];var e,d,f,m,k;var o=0;for(var c=0;c<l.components.length;c++){e=l.components[c];p.push("m");for(d=0;d<e.components.length;d++){var g=this.getShortString(e.components[d]);if(g){p.push(" "+g);if(d==0){p.push(" l")}}else{n=false}}p.push(" x ")}p.push("e");if(n==false){p=[];p.push("m");p.push(" 0,0");p.push(" l");p.push(" 0,0");p.push(" x");p.push(" e")}else{this.setNodeDimension(a,l)}a.path=p.join("")},drawRectangle:function(c,d){var b=this.getResolution();var a=(d.x/b);var e=(d.y/b);if(this.map.activeView=="ORTHO"&&this.map.orientation=="SOUTH"){a=(-d.x/b);e=(-d.y/b)}if(this.map.activeView=="ORTHO"&&this.map.orientation=="EAST"){a=(-d.y/b);e=(d.x/b)}if(this.map.activeView=="ORTHO"&&this.map.orientation=="WEST"){a=(d.y/b);
e=(-d.x/b)}c.style.left=a;c.style.top=e;c.style.width=d.width/b;c.style.height=d.height/b;if(this.map.activeView=="ORTHO"&&(this.map.orientation=="EAST"||this.map.orientation=="WEST")){c.style.height=d.width/b;c.style.width=d.height/b}},drawSurface:function(a,g){this.setNodeDimension(a,g);var b=this.getResolution();var l=[];var d,k,f;for(var c=0;c<g.components.length;c++){var e=this.getShortString(g.components[c]);if(e){l.push(" "+e);if((c%3)==0&&(c/3)==0){l.push("m")}else{if((c%3)==1){l.push(" c")}}}else{draw=false}}l.push(" x e");a.path=l.join("")},inValidRange:function(a,b){return(a>=-this.MAX_PIXEL&&a<=this.MAX_PIXEL&&b>=-this.MAX_PIXEL&&b<=this.MAX_PIXEL)},getShortString:function(b){var c=this.getResolution();var a=(b.x/c+this.left);var d=-(this.top-b.y/c);if(this.map.activeView=="ORTHO"&&this.map.orientation=="SOUTH"){a=(-b.x/c+this.left);d=-(this.top+b.y/c)}if(this.map.activeView=="ORTHO"&&this.map.orientation=="EAST"){a=-b.y/c+this.left;d=-(this.top-(b.x/c))}if(this.map.activeView=="ORTHO"&&this.map.orientation=="WEST"){a=b.y/c+this.left;
d=-(this.top+(b.x/c))}if(this.inValidRange(a,d)){return a.toFixed()+","+d.toFixed()}else{if(a>this.MAX_PIXEL){a=this.MAX_PIXEL}else{if(a<-this.MAX_PIXEL){a=-this.MAX_PIXEL}}if(d>this.MAX_PIXEL){d=this.MAX_PIXEL}else{if(d<-this.MAX_PIXEL){d=-this.MAX_PIXEL}}return a.toFixed()+","+d.toFixed()}},CLASS_NAME:"Urbex.Renderer.VML"});Urbex.Layer.Vector=Urbex.Class(Urbex.Layer,{EVENT_TYPES:["beforefeatureadded","featureadded","featuresadded","featureselected","featureunselected","beforefeaturemodified","featuremodified","afterfeaturemodified"],isBaseLayer:false,isFixed:false,isVector:true,features:null,selectedFeatures:null,reportError:true,style:null,styleMap:null,renderers:["SVG","VML"],renderer:null,geometryType:null,drawn:false,iterator:null,initialize:function(b,a){this.EVENT_TYPES=Urbex.Layer.Vector.prototype.EVENT_TYPES.concat(Urbex.Layer.prototype.EVENT_TYPES);Urbex.Layer.prototype.initialize.apply(this,arguments);if(!this.renderer||!this.renderer.supported()){this.assignRenderer()}if(!this.renderer||!this.renderer.supported()){this.renderer=null;
this.displayError()}if(!this.styleMap){this.styleMap=new Urbex.StyleMap()}this.features=[];this.selectedFeatures=[]},destroy:function(){Urbex.Layer.prototype.destroy.apply(this,arguments);this.destroyFeatures();this.features=null;this.selectedFeatures=null;if(this.renderer){this.renderer.destroy()}this.renderer=null;this.geometryType=null;this.drawn=null},assignRenderer:function(){for(var b=0;b<this.renderers.length;b++){var a=Urbex.Renderer[this.renderers[b]];if(a&&a.prototype.supported()){this.renderer=new a(this.div);break}}},displayError:function(){if(this.reportError){alert(Urbex.i18n("browserNotSupported",{renderers:this.renderers.join("\n")}))}},setMap:function(a){Urbex.Layer.prototype.setMap.apply(this,arguments);if(!this.renderer){this.map.removeLayer(this)}else{this.renderer.map=this.map;this.renderer.setSize(this.map.getSize())}this.map.events.register("orientationchanged",this,this.OriChanged)},removeMap:function(a){this.map.events.unregister("orientationchanged",this,this.OriChanged);
Urbex.Layer.prototype.removeMap.apply(this,arguments)},OriChanged:function(){if(!this.map){return true}if(this.map.activeView=="ORTHO"){if(this.lastView!="ORTHO"){this.maxResolution=156543.0339;this.minResolution=0.05;this.geometriesToWorld()}if(this.visibility==true){this.setVisibility(true);this.redraw()}this.lastView="ORTHO"}else{this.geometriesToOblique();this.lastView="OBLIQUE"}return true},ViewChanged:function(){if(this.map.activeView=="ORTHO"){return true}return true},geometriesToOblique:function(e){var f=0;var n=0;this.iterator=0;var a=(e)?e:this.features;while(f<a.length){var m=a[f];var l="";var b=false;if(m.geometry.CLASS_NAME=="Urbex.Geometry.Polygon"){for(var g=0;g<m.geometry.components.length;g++){for(var d=0;d<=m.geometry.components[g].components.length-1;d++){var p=m.geometry.components[g].components[d].x=m.geometry.components[g].components[d].wx;var o=m.geometry.components[g].components[d].y=m.geometry.components[g].components[d].wy;if(b==false&&Urbex.Util.polygonContainsPoint(this.map.polyOblique,new Urbex.XY(p,o))){b=true
}if(l==""){l=p+","+o}else{l=l+","+p+","+o}}for(var d=0;d<m.geometry.components[g].components.length;d++){m.geometry.components[g].components[d].clearBounds();m.geometry.components[g].components[d].getBounds()}n=g;if(g!=m.geometry.components.length-1){if(b){this.iterator++;this.requestPointsToGeometriesToOblique(l,"TOOBLIQUE",m,n);l=""}}}for(var d=0;d<m.geometry.components.length;d++){m.geometry.components[d].clearBounds();m.geometry.components[d].getBounds()}m.geometry.clearBounds();m.geometry.getBounds()}else{if(m.geometry.CLASS_NAME=="Urbex.Geometry.LineString"){for(var d=0;d<=m.geometry.components.length-1;d++){var p=m.geometry.components[d].x=m.geometry.components[d].wx;var o=m.geometry.components[d].y=m.geometry.components[d].wy;if(b==false&&Urbex.Util.polygonContainsPoint(this.map.polyOblique,new Urbex.XY(p,o))){b=true}if(l==""){l=p+","+o}else{l=l+","+p+","+o}}for(var d=0;d<m.geometry.components.length;d++){m.geometry.components[d].clearBounds();m.geometry.components[d].getBounds()
}m.geometry.clearBounds();m.geometry.getBounds();if(b){for(var c=1;c<m.geometry.components.length;c++){if(this.map.measureObj!=null){this.map.measureObj.setMeasurePopupVisible(m.geometry.components[c].id,true)}}}else{for(var c=1;c<m.geometry.components.length;c++){if(this.map.measureObj!=null){this.map.measureObj.setMeasurePopupVisible(m.geometry.components[c].id,false)}}}}else{if(m.geometry.CLASS_NAME=="Urbex.Geometry.Point"){var p=m.geometry.x=m.geometry.wx;var o=m.geometry.y=m.geometry.wy;if(b==false&&Urbex.Util.polygonContainsPoint(this.map.polyOblique,new Urbex.XY(p,o))){b=true}if(l==""){l=p+","+o}else{l=l+","+p+","+o}m.geometry.clearBounds();m.geometry.getBounds()}}}if(b){this.iterator++;this.requestPointsToGeometriesToOblique(l,"TOOBLIQUE",m,n);if(this.map.measureObj!=null){this.map.measureObj.setMeasurePopupVisible(m.geometry.id,true)}}else{if(this.map.measureObj!=null){this.map.measureObj.setMeasurePopupVisible(m.geometry.id,false)}}f++}if(this.visibility==true){this.setVisibility(true);
this.redraw()}},requestPointsToGeometriesToOblique:function(m,l,g,k){var c=Urbex.Util.createUniqueID("SrcPointsOblique");var d="TransformPoints?usertoken="+this.map.usertoken+"&srs="+this.map.projection+"&id="+this.map.idOblique+"&points="+m+"&function=F"+c+"&type="+l+"&format=js&dtm=yes";var b=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.TRANSFORM_POINTS,d);var e=this.map.createOScript(c,b);var a=this.map;var f=this;if(navigator.appName=="Microsoft Internet Explorer"){if((e.readyState=="loaded")||(e.readyState=="complete")){f.responsePointsToGeometriesToOblique(f,g,k,c);e.onreadystatechange=null}else{e.onreadystatechange=function(){if((e.readyState=="loaded")||(e.readyState=="complete")){f.responsePointsToGeometriesToOblique(f,g,k,c);e.onreadystatechange=null}}}}else{e.addEventListener("load",function(n){f.responsePointsToGeometriesToOblique(f,g,k,c)},false)}setTimeout(function(o,p,n,q){return function(){o.responsePointsToGeometriesToOblique(o,p,n,q)}}(f,g,k,c),500)},responsePointsToGeometriesToOblique:function(layer,feat,index,id){if(document.getElementById(id)==null){return
}if(eval("typeof F"+id+" != 'function'")){timer=setTimeout(function(layer,feat,index,id){return function(){layer.responsePointsToGeometriesToOblique(layer,feat,index,id)}}(layer,feat,index,id),100);return false}var res=eval("F"+id+"()");this.map.deleteOScript(id);if(res.indexOf("ERROR")!=-1){return}var points=res.split(",");if(points!=null){var count=0;if(feat.geometry.CLASS_NAME=="Urbex.Geometry.Polygon"){for(j=0;j<points.length;j+=2){feat.geometry.components[index].components[count].x=parseFloat(points[j]);feat.geometry.components[index].components[count].y=parseFloat(-points[j+1]);count++}for(var j=0;j<feat.geometry.components[index].components.length;j++){feat.geometry.components[index].components[j].clearBounds();feat.geometry.components[index].components[j].getBounds()}for(var j=0;j<feat.geometry.components.length;j++){feat.geometry.components[j].clearBounds();feat.geometry.components[j].getBounds()}feat.geometry.clearBounds();feat.geometry.getBounds();if(index==0){var idPopup=feat.geometry.id;
var bounds=feat.geometry.components[0].getBounds();var center=bounds.getCenterLonLat();var pt=new Urbex.XY(center.x,center.y);if(layer.map.measureObj!=null){layer.map.measureObj.modifyMeasurePopup(idPopup,pt)}}}else{if(feat.geometry.CLASS_NAME=="Urbex.Geometry.LineString"){for(j=0;j<points.length;j+=2){feat.geometry.components[count].x=parseFloat(points[j]);feat.geometry.components[count].y=parseFloat(-points[j+1]);count++}for(var j=0;j<feat.geometry.components.length;j++){feat.geometry.components[j].clearBounds();feat.geometry.components[j].getBounds()}feat.geometry.clearBounds();feat.geometry.getBounds();for(var j=0;j<feat.geometry.components.length;j++){var idPopup=feat.geometry.components[j].id;var pt=new Urbex.XY(feat.geometry.components[j].x,feat.geometry.components[j].y);if(layer.map.measureObj!=null){layer.map.measureObj.modifyMeasurePopup(idPopup,pt)}}}else{if(feat.geometry.CLASS_NAME=="Urbex.Geometry.Point"){feat.geometry.x=parseFloat(points[0]);feat.geometry.y=parseFloat(-points[1]);
feat.geometry.clearBounds();feat.geometry.getBounds();var idPopup=feat.geometry.id;var pt=new Urbex.XY(feat.geometry.x,feat.geometry.y);if(layer.map.measureObj!=null){layer.map.measureObj.modifyMeasurePopup(idPopup,pt)}}}}}layer.iterator--;if(layer.iterator==0){if(layer.visibility==true){layer.setVisibility(true);layer.redraw()}}},geometriesToWorld:function(){for(var c=0;c<this.features.length;c++){var d=this.features[c];if(d.geometry.CLASS_NAME=="Urbex.Geometry.Polygon"){for(h=0;h<d.geometry.components.length;h++){for(var b=0;b<d.geometry.components[h].components.length;b++){d.geometry.components[h].components[b].x=d.geometry.components[h].components[b].wx;d.geometry.components[h].components[b].y=d.geometry.components[h].components[b].wy}for(var b=1;b<d.geometry.components[h].components.length;b++){d.geometry.components[h].components[b].clearBounds();d.geometry.components[h].components[b].getBounds()}}for(var b=0;b<d.geometry.components.length;b++){d.geometry.components[b].clearBounds();
d.geometry.components[b].getBounds()}d.geometry.clearBounds();d.geometry.getBounds();var f=d.geometry.id;var e=d.geometry.components[0].getBounds();var a=e.getCenterLonLat();var g=new Urbex.XY(a.x,a.y);if(this.map.measureObj!=null){this.map.measureObj.modifyMeasurePopup(f,g)}}else{if(d.geometry.CLASS_NAME=="Urbex.Geometry.LineString"){for(var b=0;b<d.geometry.components.length;b++){d.geometry.components[b].x=d.geometry.components[b].wx;d.geometry.components[b].y=d.geometry.components[b].wy}for(var b=0;b<d.geometry.components.length;b++){d.geometry.components[b].clearBounds();d.geometry.components[b].getBounds()}d.geometry.clearBounds();d.geometry.getBounds();for(var b=0;b<d.geometry.components.length;b++){var f=d.geometry.components[b].id;var g=new Urbex.XY(d.geometry.components[b].x,d.geometry.components[b].y);if(this.map.measureObj!=null){this.map.measureObj.modifyMeasurePopup(f,g)}}}else{if(d.geometry.CLASS_NAME=="Urbex.Geometry.Point"){d.geometry.x=d.geometry.wx;d.geometry.y=d.geometry.wy;
d.geometry.clearBounds();d.geometry.getBounds();var f=d.geometry.id;var g=new Urbex.XY(d.geometry.x,d.geometry.y);if(this.map.measureObj!=null){this.map.measureObj.modifyMeasurePopup(f,g)}}}}}},onMapResize:function(){Urbex.Layer.prototype.onMapResize.apply(this,arguments);this.renderer.setSize(this.map.getSize())},moveTo:function(e,a,f){Urbex.Layer.prototype.moveTo.apply(this,arguments);if(!f){this.renderer.root.style.visibility="hidden";if(navigator.userAgent.toLowerCase().indexOf("gecko")!=-1){this.div.scrollLeft=this.div.scrollLeft}this.div.style.left=-parseInt(this.map.layerContainerDiv.style.left)+"px";this.div.style.top=-parseInt(this.map.layerContainerDiv.style.top)+"px";var d=this.map.getExtent();this.renderer.setExtent(d,a);this.renderer.root.style.visibility="visible"}if(!this.drawn||a){this.drawn=true;for(var c=0;c<this.features.length;c++){var b=this.features[c];this.drawFeature(b)}}},addFeatures:function(f,b){if(!(f instanceof Array)){f=[f]}var e=!b||!b.silent;for(var d=0;d<f.length;
d++){var c=f[d];if(this.geometryType&&!(c.geometry instanceof this.geometryType)){var a=Urbex.i18n("componentShouldBe",{geomType:this.geometryType.prototype.CLASS_NAME});throw a}this.features.push(c);c.layer=this;if(!c.style&&this.style){c.style=Urbex.Util.extend({},this.style)}if(e){this.events.triggerEvent("beforefeatureadded",{feature:c});this.preFeatureInsert(c)}if(this.drawn){this.drawFeature(c)}if(e){this.events.triggerEvent("featureadded",{feature:c});this.onFeatureInsert(c)}if(this.map&&this.map.activeView=="OBLIQUE"&&this.name!="Measurements Layer"){this.geometriesToOblique([c])}}if(e){this.events.triggerEvent("featuresadded",{features:f})}},removeFeatures:function(c){if(!(c instanceof Array)){c=[c]}for(var b=c.length-1;b>=0;b--){var a=c[b];this.features=Urbex.Util.removeItem(this.features,a);if(a.geometry){this.renderer.eraseGeometry(a.geometry)}if(Urbex.Util.indexOf(this.selectedFeatures,a)!=-1){Urbex.Util.removeItem(this.selectedFeatures,a)}}},destroyFeatures:function(d){var c=(d==undefined);
if(c){d=this.features;this.selectedFeatures=[]}this.eraseFeatures(d);var b;for(var a=d.length-1;a>=0;a--){b=d[a];if(!c){Urbex.Util.removeItem(this.selectedFeatures,b)}b.destroy()}},drawFeature:function(a,b){if(typeof b!="object"){var c=typeof b=="string"?b:a.renderIntent;b=a.style||this.style;if(!b){b=this.styleMap.createSymbolizer(a,c)}}this.renderer.drawFeature(a,b)},eraseFeatures:function(a){this.renderer.eraseFeatures(a)},getFeatureFromEvent:function(a){if(!this.renderer){Urbex.Console.error(Urbex.i18n("getFeatureError"));return null}var b=this.renderer.getFeatureIdFromEvent(a);return this.getFeatureById(b)},getFeatureById:function(c){var b=null;for(var a=0;a<this.features.length;++a){if(this.features[a].id==c||this.features[a].geometry.id==c){b=this.features[a];break}}return b},onFeatureInsert:function(a){},preFeatureInsert:function(a){},CLASS_NAME:"Urbex.Layer.Vector"});Urbex.Style=Urbex.Class({name:null,title:null,description:null,layerName:null,isDefault:false,rules:null,context:null,defaultStyle:null,propertyStyles:null,initialize:function(b,a){this.rules=[];
this.setDefaultStyle(b||Urbex.Feature.Vector.style["default"]);Urbex.Util.extend(this,a)},destroy:function(){for(var a=0;a<this.rules.length;a++){this.rules[a].destroy();this.rules[a]=null}this.rules=null;this.defaultStyle=null},createSymbolizer:function(l){var a=this.createLiterals(Urbex.Util.extend({},this.defaultStyle),l);var k=this.rules;var g,b;var c=[];var e=false;for(var d=0;d<k.length;d++){g=k[d];var f=g.evaluate(l);if(f){if(g instanceof Urbex.Rule&&g.elseFilter){c.push(g)}else{e=true;this.applySymbolizer(g,a,l)}}}if(e==false&&c.length>0){e=true;for(var d=0;d<c.length;d++){this.applySymbolizer(c[d],a,l)}}if(k.length>0&&e==false){a.display="none"}else{a.display=""}return a},applySymbolizer:function(e,d,b){var a=b.geometry?this.getSymbolizerPrefix(b.geometry):Urbex.Style.SYMBOLIZER_PREFIXES[0];var c=e.symbolizer[a]||e.symbolizer;return this.createLiterals(Urbex.Util.extend(d,c),b)},createLiterals:function(d,c){var b=this.context||c.attributes||c.data;for(var a=0;a<this.propertyStyles.length;
a++){d[a]=Urbex.Style.createLiteral(d[a],b,c)}return d},findPropertyStyles:function(){var c={};var e=this.defaultStyle;this.addPropertyStyles(c,e);var g=this.rules;var d,f;for(var b=0;b<g.length;b++){var d=g[b].symbolizer;for(var a in d){f=d[a];if(typeof f=="object"){this.addPropertyStyles(c,f)}else{this.addPropertyStyles(c,d);break}}}return c},addPropertyStyles:function(b,c){var d;for(var a in c){d=c[a];if(typeof d=="string"&&d.match(/\$\{\w+\}/)){b[a]=true}}return b},addRules:function(a){this.rules=this.rules.concat(a);this.propertyStyles=this.findPropertyStyles()},setDefaultStyle:function(a){this.defaultStyle=a;this.propertyStyles=this.findPropertyStyles()},getSymbolizerPrefix:function(c){var b=Urbex.Style.SYMBOLIZER_PREFIXES;for(var a=0;a<b.length;a++){if(c.CLASS_NAME.indexOf(b[a])!=-1){return b[a]}}},CLASS_NAME:"Urbex.Style"});Urbex.Style.createLiteral=function(c,b,a){if(typeof c=="string"&&c.indexOf("${")!=-1){c=Urbex.String.format(c,b,[a]);c=(isNaN(c)||!c)?c:parseFloat(c)}return c
};Urbex.Style.SYMBOLIZER_PREFIXES=["Point","Line","Polygon"];Urbex.StyleMap=Urbex.Class({styles:null,extendDefault:true,initialize:function(c,a){this.styles={"default":new Urbex.Style(Urbex.Feature.Vector.style["default"]),select:new Urbex.Style(Urbex.Feature.Vector.style.select),temporary:new Urbex.Style(Urbex.Feature.Vector.style.temporary)};if(c instanceof Urbex.Style){this.styles["default"]=c;this.styles.select=c;this.styles.temporary=c}else{if(typeof c=="object"){for(var b in c){if(c[b] instanceof Urbex.Style){this.styles[b]=c[b]}else{if(typeof c[b]=="object"){this.styles[b]=new Urbex.Style(c[b])}else{this.styles["default"]=new Urbex.Style(c);this.styles.select=new Urbex.Style(c);this.styles.temporary=new Urbex.Style(c);break}}}}}Urbex.Util.extend(this,a)},destroy:function(){for(var a in this.styles){this.styles[a].destroy()}this.styles=null},createSymbolizer:function(b,c){if(!b){b=new Urbex.Feature.Vector()}if(!this.styles[c]){c="default"}b.renderIntent=c;var a={};if(this.extendDefault&&c!="default"){a=this.styles["default"].createSymbolizer(b)
}return Urbex.Util.extend(a,this.styles[c].createSymbolizer(b))},addUniqueValueRules:function(a,c,e){var d=[];for(var b in e){d.push(new Urbex.Rule({symbolizer:e[b],filter:new Urbex.Filter.Comparison({type:Urbex.Filter.Comparison.EQUAL_TO,property:c,value:b})}))}this.styles[a].addRules(d)},CLASS_NAME:"Urbex.StyleMap"});Urbex.ProxyHost="";Urbex.nullHandler=function(a){alert(Urbex.i18n("unhandledRequest",{statusText:a.statusText}))};Urbex.loadURL=function(e,k,b,f,c){var g=(f)?Urbex.Function.bind(f,b):Urbex.nullHandler;var a=(c)?Urbex.Function.bind(c,b):Urbex.nullHandler;var d=new Urbex.Ajax.Request(e,{method:"get",parameters:k,onComplete:g,onFailure:a});return d.transport};Urbex.parseXMLString=function(c){var a=c.indexOf("<");if(a>0){c=c.substring(a)}var b=Urbex.Util.Try(function(){var d=new ActiveXObject("Microsoft.XMLDOM");d.loadXML(c);return d},function(){return new DOMParser().parseFromString(c,"text/xml")},function(){var d=new XMLHttpRequest();d.open("GET","data:text/xml;charset=utf-8,"+encodeURIComponent(c),false);
if(d.overrideMimeType){d.overrideMimeType("text/xml")}d.send(null);return d.responseXML});return b};Urbex.Ajax={emptyFunction:function(){},getTransport:function(){return Urbex.Util.Try(function(){return new XMLHttpRequest()},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")})||false},activeRequestCount:0};Urbex.Ajax.Responders={responders:[],register:function(b){for(var a=0;a<this.responders.length;a++){if(b==this.responders[a]){return}}this.responders.push(b)},unregister:function(a){Urbex.Util.removeItem(this.reponders,a)},dispatch:function(g,c,f){var a;for(var b=0;b<this.responders.length;b++){a=this.responders[b];if(a[g]&&typeof a[g]=="function"){try{a[g].apply(a,[c,f])}catch(d){}}}}};Urbex.Ajax.Responders.register({onCreate:function(){Urbex.Ajax.activeRequestCount++},onComplete:function(){Urbex.Ajax.activeRequestCount--}});Urbex.Ajax.Base=Urbex.Class({initialize:function(a){this.options={method:"post",asynchronous:true,contentType:"application/xml",parameters:""};
Urbex.Util.extend(this.options,a||{});this.options.method=this.options.method.toLowerCase();if(typeof this.options.parameters=="string"){this.options.parameters=Urbex.Util.getParameters(this.options.parameters)}}});Urbex.Ajax.Request=Urbex.Class(Urbex.Ajax.Base,{_complete:false,initialize:function(b,a){Urbex.Ajax.Base.prototype.initialize.apply(this,[a]);if(Urbex.ProxyHost&&Urbex.String.startsWith(b,"http")){b=Urbex.ProxyHost+encodeURIComponent(b)}this.transport=Urbex.Ajax.getTransport();this.request(b)},request:function(b){this.url=b;this.method=this.options.method;var d=Urbex.Util.extend({},this.options.parameters);if(this.method!="get"&&this.method!="post"){d._method=this.method;this.method="post"}this.parameters=d;if(d=Urbex.Util.getParameterString(d)){if(this.method=="get"){this.url+=((this.url.indexOf("?")>-1)?"&":"?")+d}else{if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)){d+="&_="}}}try{var a=new Urbex.Ajax.Response(this);if(this.options.onCreate){this.options.onCreate(a)}Urbex.Ajax.Responders.dispatch("onCreate",this,a);
this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous){window.setTimeout(Urbex.Function.bind(this.respondToReadyState,this,1),10)}this.transport.onreadystatechange=Urbex.Function.bind(this.onStateChange,this);this.setRequestHeaders();this.body=this.method=="post"?(this.options.postBody||d):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType){this.onStateChange()}}catch(c){this.dispatchException(c)}},onStateChange:function(){var a=this.transport.readyState;if(a>1&&!((a==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var e={"X-Requested-With":"XMLHttpRequest",Accept:"text/javascript, text/html, application/xml, text/xml, */*",Urbex:true};if(this.method=="post"){e["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){e.Connection="close"
}}if(typeof this.options.requestHeaders=="object"){var c=this.options.requestHeaders;if(typeof c.push=="function"){for(var b=0,d=c.length;b<d;b+=2){e[c[b]]=c[b+1]}}else{for(var b in c){e[b]=pair[b]}}}for(var a in e){this.transport.setRequestHeader(a,e[a])}},success:function(){var a=this.getStatus();return !a||(a>=200&&a<300)},getStatus:function(){try{return this.transport.status||0}catch(a){return 0}},respondToReadyState:function(a){var c=Urbex.Ajax.Request.Events[a];var b=new Urbex.Ajax.Response(this);if(c=="Complete"){try{this._complete=true;(this.options["on"+b.status]||this.options["on"+(this.success()?"Success":"Failure")]||Urbex.Ajax.emptyFunction)(b)}catch(d){this.dispatchException(d)}var f=b.getHeader("Content-type")}try{(this.options["on"+c]||Urbex.Ajax.emptyFunction)(b);Urbex.Ajax.Responders.dispatch("on"+c,this,b)}catch(d){this.dispatchException(d)}if(c=="Complete"){this.transport.onreadystatechange=Urbex.Ajax.emptyFunction}},getHeader:function(a){try{return this.transport.getResponseHeader(a)
}catch(b){return null}},dispatchException:function(c){var d=this.options.onException;if(d){d(this,c);Urbex.Ajax.Responders.dispatch("onException",this,c)}else{var e=false;var a=Urbex.Ajax.Responders.responders;for(var b=0;b<a.length;b++){if(a[b].onException){e=true;break}}if(e){Urbex.Ajax.Responders.dispatch("onException",this,c)}else{throw c}}}});Urbex.Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Urbex.Ajax.Response=Urbex.Class({status:0,statusText:"",initialize:function(c){this.request=c;var d=this.transport=c.transport,a=this.readyState=d.readyState;if((a>2&&!(!!(window.attachEvent&&!window.opera)))||a==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=d.responseText==null?"":String(d.responseText)}if(a==4){var b=d.responseXML;this.responseXML=b===undefined?null:b}},getStatus:Urbex.Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(a){return""}},getHeader:Urbex.Ajax.Request.prototype.getHeader,getResponseHeader:function(a){return this.transport.getResponseHeader(a)
}});Urbex.Ajax.getElementsByTagNameNS=function(b,a,c,e){var d=null;if(b.getElementsByTagNameNS){d=b.getElementsByTagNameNS(a,e)}else{d=b.getElementsByTagName(c+":"+e)}return d};Urbex.Ajax.serializeXMLToString=function(a){var b=new XMLSerializer();var c=b.serializeToString(a);return c};Urbex.Layer.TextMarkers=Urbex.Class(Urbex.Layer.Markers,{location:null,markers:null,formatOptions:null,selectedFeature:null,initialize:function(b,a){Urbex.Layer.Markers.prototype.initialize.apply(this,arguments);this.features=new Array()},destroy:function(){Urbex.Layer.Markers.prototype.destroy.apply(this,arguments);this.clearMarkers();this.markers=null},loadTextMarkers:function(){if(!this.loaded){if(this.location!=null){var a=function(b){this.events.triggerEvent("loadend")};this.events.triggerEvent("loadstart");Urbex.loadURL(this.location,null,this,this.parseData,a);this.loaded=true}}},moveTo:function(c,a,b){Urbex.Layer.Markers.prototype.moveTo.apply(this,arguments);if(this.visibility&&!this.loaded){this.events.triggerEvent("loadstart");
this.loadTextMarkers()}},parseData:function(g){var n=g.responseText;var p={};Urbex.Util.extend(p,this.formatOptions);if(this.map&&!this.projection.equals(this.map.getProjectionObject())){p.externalProjection=this.projection;p.internalProjection=this.map.getProjectionObject()}var a=new Urbex.Format.Text(p);features=a.read(n);for(var e=0;e<features.length;e++){var d={};var o=features[e];var l;var b;var k,m;var f,c;l=new Urbex.XY(o.geometry.x,o.geometry.y);if(o.style.graphicWidth!=null&&o.style.graphicHeight!=null){f=new Urbex.Size(o.style.graphicWidth,o.style.graphicHeight)}if(o.style.graphicXOffset!=null&&o.style.graphicYOffset!=null){c=new Urbex.Pixel(o.style.graphicXOffset,o.style.graphicYOffset)}if(o.style.externalGraphic!=null){d.icon=new Urbex.Icon(o.style.externalGraphic,f,c)}else{d.icon=Urbex.Marker.defaultIcon();if(f!=null){d.icon.setSize(f)}}if((o.attributes.title!=null)&&(o.attributes.description!=null)){k=o.attributes.title;m=o.attributes.description}this.addMarker(l,b,{title:k,description:m,icon:d.icon})
}this.events.triggerEvent("loadend")},markerClick:function(a){var c=(this==this.layer.selectedFeature);this.layer.selectedFeature=(!c)?this:null;for(var b=0;b<this.layer.map.popups.length;b++){this.layer.map.removePopup(this.layer.map.popups[b])}if(!c){this.layer.map.addPopup(this.createPopup())}Urbex.Event.stop(a)},clearFeatures:function(){if(this.markers!=null){while(this.markers.length>0){var a=this.markers[0];Urbex.Util.removeItem(this.markers,a);a.destroy()}}},CLASS_NAME:"Urbex.Layer.TextMarkers"});Urbex.Measures=Urbex.Class({map:null,measureLayer:null,measurePopups:[],activeControl:null,initialize:function(a){this.map=a},getLength:function(f,e,d){var c=0;if(this.map.activeView=="ORTHO"){var b=new Urbex.Geometry.Point(f.x,f.y);var a=new Urbex.Geometry.Point(e.x,e.y);c=b.distanceTo(a,this.map.projection);d(this.map,parseFloat(c))}else{if(this.map.activeView=="OBLIQUE"){this.map.getMeasurementObj().requestGetLength2(f,e,d)}}},requestGetLength2:function(pt1,pt2,listener){var id=Urbex.Util.createUniqueID("SrcRequestGetLengthSrc");
var urlParams="CalculateLength?points="+pt1.x+","+-pt1.y+","+pt2.x+","+-pt2.y+"&usertoken="+this.map.usertoken+"&id="+this.map.idOblique+"&function=F"+id+"&format=js&dtm=yes";var url=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.MEASUREMENT,urlParams);var oScript=this.map.createOScript(id,url);var map=this.map;var res;if(navigator.appName=="Microsoft Internet Explorer"){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");map.deleteOScript(id);if(res!=""&&res.indexOf("ERROR")==-1){listener(map,parseFloat(res))}oScript.onreadystatechange=null}else{oScript.onreadystatechange=function(){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");map.deleteOScript(id);if(res!=""&&res.indexOf("ERROR")==-1){listener(map,parseFloat(res))}oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(event){res=eval("F"+id+"()");map.deleteOScript(id);if(res!=""&&res.indexOf("ERROR")==-1){listener(map,parseFloat(res))
}},false)}},measureLength:function(){if(this.measureLayer==null){this.measureLayer=new Urbex.Layer.Vector("Measurements Layer");this.map.addLayer(this.measureLayer)}if(this.activeControl!=null){this.activeControl.deactivate();this.activeControl=null}this.measureLayer.onFeatureInsert=this.writeLength;this.activeControl=new Urbex.Control.DrawFeature(this.measureLayer,Urbex.Handler.Length,null,this.map,this.lengthStyle);this.map.addControl(this.activeControl);this.activeControl.activate()},writeLength:function(c){var b=c.geometry;var d=0;if(this.map.activeView=="ORTHO"){for(var a=1;a<b.components.length;a++){if((b.components[a-1].x!=b.components[a].x)||(b.components[a-1].y!=b.components[a].y)){d+=b.components[a-1].distanceTo(b.components[a],this.map.projection);this.map.getMeasurementObj().createMeasurePopup(c.geometry.components[a].id,new Urbex.XY(b.components[a].x,b.components[a].y-1),parseFloat(d),"m",this.map.getMeasurementObj().lengthCssStyle);this.map.events.triggerEvent("lengthmeasured",{measure:d,geometryid:b.id})
}}}else{this.map.getMeasurementObj().writeLengthOblique(b,1,0)}},writeLengthOblique:function(b,a,c){while(a<b.components.length){if((b.components[a-1].x!=b.components[a].x)||(b.components[a-1].y!=b.components[a].y)){var f=new Urbex.XY(b.components[a-1].x,b.components[a-1].y);var d=new Urbex.XY(b.components[a].x,(b.components[a].y)-1);var e=b.components[a].id;a++;this.map.getMeasurementObj().requestGetLength(f,d,e,d," m",a,c,b);break}a++}},requestGetLength:function(p,n,f,o,l,k,g,m){var c=Urbex.Util.createUniqueID("SrcRequestGetLengthSrc");var d="CalculateLength?points="+p.x+","+-p.y+","+n.x+","+-n.y+"&usertoken="+this.map.usertoken+"&id="+this.map.idOblique+"&function=F"+c+"&format=js&dtm=yes";var b=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.MEASUREMENT,d);var a=this.map;var e=a.createOScript(c,b);if(navigator.appName=="Microsoft Internet Explorer"){if((e.readyState=="loaded")||(e.readyState=="complete")){a.measureObj.responseGetLength(c,f,o,l,k,g,m,a);e.onreadystatechange=null
}else{e.onreadystatechange=function(){if((e.readyState=="loaded")||(e.readyState=="complete")){a.measureObj.responseGetLength(c,f,o,l,k,g,m,a);e.onreadystatechange=null}}}}else{e.addEventListener("load",function(q){a.measureObj.responseGetLength(c,f,o,l,k,g,m,a)},false)}},responseGetLength:function(id,fid,point,units,index,aclength,geom,map){var res=eval("F"+id+"()");this.map.deleteOScript(id);if(res.indexOf("ERROR")!=-1){return}var points=res.split(",");var length=res;var totallength=aclength+parseFloat(length);map.measureObj.createMeasurePopup(fid,point,totallength,units,map.getMeasurementObj().lengthCssStyle);map.events.triggerEvent("lengthmeasured",{measure:parseFloat(totallength),geometryid:fid});map.measureObj.writeLengthOblique(geom,index,totallength)},getGroundLength:function(l,k,e){var c=Urbex.Util.createUniqueID("SrcRequestGetGroundLengthSrc");var g=(this.map.idOblique)?this.map.idOblique:"";var m=(this.map.activeView=="OBLIQUE")?l.x+","+-l.y+","+k.x+","+-k.y:l.x+","+l.y+","+k.x+","+k.y;
var d="CalculateGroundLength?points="+m+"&usertoken="+this.map.usertoken+"&srs="+this.map.projection+"&id="+g+"&function=F"+c+"&format=js&dtm=yes";var b=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.MEASUREMENT,d);var a=this.map;var f=a.createOScript(c,b);if(navigator.appName=="Microsoft Internet Explorer"){if((f.readyState=="loaded")||(f.readyState=="complete")){a.measureObj.responseGetGroundLengthApiFunction(c,e,a);f.onreadystatechange=null}else{f.onreadystatechange=function(){if((f.readyState=="loaded")||(f.readyState=="complete")){a.measureObj.responseGetGroundLengthApiFunction(c,e,a);f.onreadystatechange=null}}}}else{f.addEventListener("load",function(n){a.measureObj.responseGetGroundLengthApiFunction(c,e,a)},false)}},responseGetGroundLengthApiFunction:function(id,listener,map){var res=eval("F"+id+"()");this.map.deleteOScript(id);if(res.indexOf("ERROR")!=-1){return}var data=res.split(";");var length=data[0];listener(map,parseFloat(length))},measureGroundLength:function(){if(this.measureLayer==null){this.measureLayer=new Urbex.Layer.Vector("Measurements Layer");
this.map.addLayer(this.measureLayer)}if(this.activeControl!=null){this.activeControl.deactivate();this.activeControl=null}this.measureLayer.onFeatureInsert=this.writeGroundLength;this.activeControl=new Urbex.Control.DrawFeature(this.measureLayer,Urbex.Handler.GroundLength,null,this.map,this.groundLengthStyle);this.map.addControl(this.activeControl);this.activeControl.activate()},writeGroundLength:function(c,a,d){var b=c.geometry;if(!a){a=1}if(!d){d=0}if(a<b.components.length){if((b.components[a-1].x!=b.components[a].x)||(b.components[a-1].y!=b.components[a].y)){var g=new Urbex.XY(b.components[a-1].x,b.components[a-1].y);var e=new Urbex.XY(b.components[a].x,(b.components[a].y)-1);var f=b.components[a].id;a++;this.map.getMeasurementObj().requestGetGroundLength(g,e,f,e," m",a,d,c)}}else{if(this.map.activeView=="OBLIQUE"){this.requestPointsToRedrawObliqueGroundMeasure(c)}else{this.measureLayer.onFeatureInsert=function(){};this.measureLayer.removeFeatures([c]);this.measureLayer.addFeatures([c]);
this.measureLayer.onFeatureInsert=this.writeGroundLength}}},requestPointsToRedrawObliqueGroundMeasure:function(l){var g=l.geometry;var k=""+g.components[0].wx+","+g.components[0].wy;for(var f=1;f<g.components.length;f++){k=k+","+g.components[f].wx+","+g.components[f].wy}var c=Urbex.Util.createUniqueID("reqPointsToRedrawObliqueGroundMeasure");var d="TransformPoints?usertoken="+this.map.usertoken+"&srs="+this.map.projection+"&id="+this.map.idOblique+"&points="+k+"&function=F"+c+"&type=TOOBLIQUE&format=js&dtm=yes";var b=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.TRANSFORM_POINTS,d);var a=this.map;var e=this;oScript=this.map.createOScript(c,b);if(navigator.appName=="Microsoft Internet Explorer"){if(oScript.readyState=="loaded"){e.responsePointsToRedrawObliqueGroundMeasure(l,c,e);oScript.onreadystatechange=null}else{oScript.onreadystatechange=function(){if(oScript.readyState=="loaded"){e.responsePointsToRedrawObliqueGroundMeasure(l,c,e);oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(m){e.responsePointsToRedrawObliqueGroundMeasure(l,c,e)
},false)}},responsePointsToRedrawObliqueGroundMeasure:function(feature,id,control){var res=eval("F"+id+"()");this.map.deleteOScript(id);if(res.indexOf("ERROR")!=-1){return}var points=res.split(",");var count=0;for(j=0;j<points.length;j+=2){feature.geometry.components[count].x=parseFloat(points[j]);feature.geometry.components[count].y=-parseFloat(points[j+1]);count++}control.measureLayer.onFeatureInsert=function(){};control.measureLayer.removeFeatures([feature]);control.measureLayer.addFeatures([feature]);control.measureLayer.onFeatureInsert=this.writeGroundLength},requestGetGroundLength:function(r,o,f,p,m,l,k,s){var n=s.geometry;var c=Urbex.Util.createUniqueID("SrcRequestGetGroundLengthSrc");var g=(this.map.idOblique)?this.map.idOblique:"";var q=(this.map.activeView=="OBLIQUE")?r.x+","+-r.y+","+o.x+","+-o.y:r.x+","+r.y+","+o.x+","+o.y;var d="CalculateGroundLength?points="+q+"&usertoken="+this.map.usertoken+"&srs="+this.map.projection+"&id="+g+"&function=F"+c+"&format=js&dtm=yes";var b=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.MEASUREMENT,d);
var a=this.map;var e=a.createOScript(c,b);if(navigator.appName=="Microsoft Internet Explorer"){if((e.readyState=="loaded")||(e.readyState=="complete")){a.measureObj.responseGetGroundLength(c,f,p,m,l,k,s,a);e.onreadystatechange=null}else{e.onreadystatechange=function(){if((e.readyState=="loaded")||(e.readyState=="complete")){a.measureObj.responseGetGroundLength(c,f,p,m,l,k,s,a);e.onreadystatechange=null}}}}else{e.addEventListener("load",function(t){a.measureObj.responseGetGroundLength(c,f,p,m,l,k,s,a)},false)}},responseGetGroundLength:function(id,fid,point,units,index,aclength,feature,map,res){var res=eval("F"+id+"()");this.map.deleteOScript(id);if(res.indexOf("ERROR")!=-1){return}var data=res.split(";");var length=data[0];for(var i=1;i<data[1]-1;i++){index++;var points=data[2+i].split(",");var newPoint=new Urbex.Geometry.Point(parseFloat(points[0]),parseFloat(points[1]));feature.geometry.addComponent(newPoint,index-2)}var totallength=aclength+parseFloat(length);map.measureObj.createMeasurePopup(fid,point,totallength,units,map.getMeasurementObj().groundLengthCssStyle);
map.events.triggerEvent("lengthmeasured",{measure:parseFloat(totallength),geometryid:fid});map.measureObj.writeGroundLength(feature,index,totallength)},getArea:function(f,d){if(this.map.activeView=="ORTHO"){var b=[];for(var g=0;g<f.length;g++){b[g]=new Urbex.Geometry.Point(f[g].x,f[g].y)}var a=new Urbex.Geometry.LinearRing(b);var c=a.getArea(this.map.projection);d(this.map,parseFloat(c))}else{if(this.map.activeView=="OBLIQUE"){var e="";if(f.length>0){e+=f[0].x+","+-f[0].y;for(var g=1;g<f.length;g++){e+=f[g].x+","+-f[g].y}}this.map.getMeasurementObj().requestGetArea2(e,d)}}},requestGetArea2:function(pts,listener){var id=Urbex.Util.createUniqueID("RequestGetAreaSrc");var urlParams="/CalculateArea?usertoken="+this.map.usertoken+"&id="+this.map.idOblique+"&function=F"+id+"&points="+pts+"&format=js&dtm=yes";var url=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.MEASUREMENT,urlParams);var oScript=this.map.createOScript(id,url);var map=this.map;var res;if(navigator.appName=="Microsoft Internet Explorer"){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");
map.deleteOScript(id);if(res!=""){listener(map,parseFloat(res))}oScript.onreadystatechange=null}else{oScript.onreadystatechange=function(){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");map.deleteOScript(id);if(res!=""){listener(map,parseFloat(res))}oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(event){res=eval("F"+id+"()");map.deleteOScript(id);if(res!=""){listener(map,parseFloat(res))}},false)}},measureArea:function(){if(this.measureLayer==null){this.measureLayer=new Urbex.Layer.Vector("Measurements Layer");this.map.addLayer(this.measureLayer)}if(this.activeControl!=null){this.activeControl.deactivate();this.activeControl=null}this.measureLayer.onFeatureInsert=this.writeArea;this.activeControl=new Urbex.Control.DrawFeature(this.measureLayer,Urbex.Handler.Area,null,this.map,this.areaStyle);this.map.addControl(this.activeControl);this.activeControl.activate()},writeArea:function(e){var d=e.geometry;var g=0;for(var c=0;
c<d.components.length;c++){var f=d.components[c].getBounds();var b=f.getCenterLonLat();if(this.map.activeView=="ORTHO"){g+=d.components[c].getArea(this.map.projection);if(g<0){g=g*(-1)}this.map.getMeasurementObj().createMeasurePopup(e.geometry.id,new Urbex.XY(b.x,b.y),parseFloat(g)," m2",this.map.getMeasurementObj().areaCssStyle);this.map.events.triggerEvent("areameasured",{measure:g,geometryid:d.id,geometry:d})}else{if(this.map.activeView=="OBLIQUE"){var a="";var k=1;for(j=0;j<d.components[0].components.length;j++){a=a+d.components[0].components[j].x+",";if(j==d.components[0].components.length-1){a=a+-d.components[0].components[j].y}else{a=a+-d.components[0].components[j].y+","}k++}this.map.getMeasurementObj().requestGetArea(a,e.geometry.id,new Urbex.XY(b.x,b.y)," m2")}}}},requestGetArea:function(l,f,k,g){var c=Urbex.Util.createUniqueID("RequestGetAreaSrc");var d="CalculateArea?usertoken="+this.map.usertoken+"&id="+this.map.idOblique+"&function=F"+c+"&points="+l+"&format=js&dtm=yes";var b=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.MEASUREMENT,d);
var e=this.map.createOScript(c,b);var a=this.map;if(navigator.appName=="Microsoft Internet Explorer"){if((e.readyState=="loaded")||(e.readyState=="complete")){a.measureObj.responseGetArea(c,f,k,g);e.onreadystatechange=null}else{e.onreadystatechange=function(){if((e.readyState=="loaded")||(e.readyState=="complete")){a.measureObj.responseGetArea(c,f,k,g);e.onreadystatechange=null}}}}else{e.addEventListener("load",function(m){a.measureObj.responseGetArea(c,f,k,g)},false)}},responseGetArea:function(id,fid,point,units){var res=eval("F"+id+"()");this.map.deleteOScript(id);if(res.indexOf("ERROR")!=-1){return}var area=res;this.map.getMeasurementObj().createMeasurePopup(fid,point,parseFloat(area),units,this.map.getMeasurementObj().areaCssStyle);this.map.events.triggerEvent("areameasured",{measure:parseFloat(area),geometryid:fid})},getHeight:function(d,c,b){var a=0;if(this.map.activeView=="OBLIQUE"){this.map.getMeasurementObj().requestGetHeight2(d,c,b)}},requestGetHeight2:function(pt1,pt2,listener){var id=Urbex.Util.createUniqueID("RequestGetHeight");
var urlParams="CalculateHeight?x1="+pt1.x+"&x2="+pt2.x+"&y1="+-pt1.y+"&y2="+-pt2.y+"&usertoken="+this.map.usertoken+"&id="+this.map.idOblique+"&function=F"+id+"&format=js&dtm=yes";var url=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.MEASUREMENT,urlParams);var oScript=this.map.createOScript(id,url);var map=this.map;var res;if(navigator.appName=="Microsoft Internet Explorer"){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");map.deleteOScript(id);if(res!=""){listener(map,parseFloat(res))}oScript.onreadystatechange=null}else{oScript.onreadystatechange=function(){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");map.deleteOScript(id);if(res!=""){listener(map,parseFloat(res))}oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(event){res=eval("F"+id+"()");map.deleteOScript(id);if(res!=""){listener(map,parseFloat(res))}},false)}},measureHeight:function(){if(this.measureLayer==null){this.measureLayer=new Urbex.Layer.Vector("Measurements Layer");
this.map.addLayer(this.measureLayer)}if(this.activeControl!=null){this.activeControl.deactivate();this.activeControl=null}this.measureLayer.onFeatureInsert=this.writeHeight;this.activeControl=new Urbex.Control.DrawFeature(this.measureLayer,Urbex.Handler.Height,null,this.map,this.heightStyle);this.map.addControl(this.activeControl);this.activeControl.activate()},writeHeight:function(d){var c=d.geometry;var a=0;for(var b=1;b<c.components.length;b++){if((c.components[b-1].x!=c.components[b].x)||(c.components[b-1].y!=c.components[b].y)){var f=new Urbex.XY(c.components[b-1].x,c.components[b-1].y);var e=new Urbex.XY(c.components[b].x,c.components[b].y);this.map.getMeasurementObj().requestGetHeight(f,e,d.geometry.components[b].id,e," m")}}},requestGetHeight:function(m,k,f,l,g){var c=Urbex.Util.createUniqueID("RequestGetHeight");var d="CalculateHeight?x1="+m.x+"&x2="+k.x+"&y1="+-m.y+"&y2="+-k.y+"&usertoken="+this.map.usertoken+"&id="+this.map.idOblique+"&function=F"+c+"&format=js&dtm=yes";var b=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.MEASUREMENT,d);
var e=this.map.createOScript(c,b);var a=this.map;if(navigator.appName=="Microsoft Internet Explorer"){if((e.readyState=="loaded")||(e.readyState=="complete")){a.measureObj.responseGetHeight(c,f,l,g);e.onreadystatechange=null}else{e.onreadystatechange=function(){if((e.readyState=="loaded")||(e.readyState=="complete")){a.measureObj.responseGetHeight(c,f,l,g);e.onreadystatechange=null}}}}else{e.addEventListener("load",function(n){a.measureObj.responseGetHeight(c,f,l,g)},false)}},responseGetHeight:function(id,fid,point,units){var res=eval("F"+id+"()");this.map.deleteOScript(id);if(res.indexOf("ERROR")!=-1){return}var height=res;this.map.getMeasurementObj().createMeasurePopup(fid,point,parseFloat(height),units,this.map.getMeasurementObj().heightCssStyle);this.map.events.triggerEvent("heightmeasured",{measure:parseFloat(height),geometryid:fid})},getBearing:function(c,b,a){if(this.map.activeView=="ORTHO"){this.calculateBearing2(c,b,a)}else{this.map.getMeasurementObj().requestGetBearing2(c,b,a)
}},calculateBearing2:function(g,e,d){if(this.map.projection=="EPSG:3785"){var c=Urbex.Util.SphericalMercatorToWGS84(g.x,g.y);var b=Urbex.Util.SphericalMercatorToWGS84(e.x,e.y);var a=Urbex.Util.LatLonBearing(c[0],c[1],b[0],b[1]);d(this.map,parseFloat(a))}else{if(this.map.projection.substring(1,8)=="EPSG:326"){var f=this.map.projection.substring(8,2);var c=Urbex.Util.UtmToWGS84(g.x,g.y,f,1);var b=Urbex.Util.UtmToWGS84(e.x,e.y,f,1);var a=Urbex.Util.LatLonBearing(c[0],c[1],b[0],b[1]);d(this.map,parseFloat(a))}else{if(this.map.projection=="EPSG:4326"){var a=Urbex.Util.LatLonBearing(g.x,g.y,e.x,e.y);d(this.map,parseFloat(a))}else{}}}},requestGetBearing2:function(pt1,pt2,listener){var id=Urbex.Util.createUniqueID("RequestGetBearingSrc");var urlParams="CalculateBearing?usertoken="+this.map.usertoken+"&format=js&id="+this.map.idOblique+"&function=F"+id+"&x1="+pt1.x+"&x2="+pt2.x+"&y1="+-pt1.y+"&y2="+-pt2.y+"&dtm=yes";var url=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.MEASUREMENT,urlParams);
var oScript=this.map.createOScript(id,url);var map=this.map;var res;if(navigator.appName=="Microsoft Internet Explorer"){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");map.deleteOScript(id);if(res!=""){listener(map,parseFloat(res))}oScript.onreadystatechange=null}else{oScript.onreadystatechange=function(){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");map.deleteOScript(id);if(res!=""){listener(map,parseFloat(res))}oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(event){res=eval("F"+id+"()");map.deleteOScript(id);if(res!=""){listener(map,parseFloat(res))}},false)}},measureBearing:function(){if(this.measureLayer==null){this.measureLayer=new Urbex.Layer.Vector("Measurements Layer");this.map.addLayer(this.measureLayer)}if(this.activeControl!=null){this.activeControl.deactivate();this.activeControl=null}this.measureLayer.onFeatureInsert=this.writeBearing;this.activeControl=new Urbex.Control.DrawFeature(this.measureLayer,Urbex.Handler.Bearing,null,this.map,this.bearingStyle);
this.map.addControl(this.activeControl);this.activeControl.activate()},writeBearing:function(d){var c=d.geometry;var a=0;for(var b=1;b<c.components.length;b++){if((c.components[b-1].x!=c.components[b].x)||(c.components[b-1].y!=c.components[b].y)){var f=new Urbex.XY(c.components[b-1].x,c.components[b-1].y);var e=new Urbex.XY(c.components[b].x,c.components[b].y);if(this.map.activeView=="ORTHO"){this.map.getMeasurementObj().calculateBearing(f,e,d.geometry.components[1].id,f," g")}else{if(this.map.activeView=="OBLIQUE"){this.map.getMeasurementObj().requestGetBearing(f,e,d.geometry.components[1].id,f," g")}}}}},calculateBearing:function(k,f,b,g,e){if(this.map.projection=="EPSG:3785"){var c=Urbex.Util.SphericalMercatorToWGS84(k.x,k.y);var a=Urbex.Util.SphericalMercatorToWGS84(f.x,f.y);var l=Urbex.Util.LatLonBearing(c[1],c[0],a[1],a[0]);this.map.getMeasurementObj().createMeasurePopup(b,g,parseFloat(l),e,this.map.getMeasurementObj().bearingCssStyle);this.map.events.triggerEvent("bearingmeasured",{measure:parseFloat(l),geometryid:b})
}else{if(this.map.projection.substring(1,8)=="EPSG:326"){var d=this.map.projection.substring(8,2);var c=Urbex.Util.UtmToWGS84(k.x,k.y,d,1);var a=Urbex.Util.UtmToWGS84(f.x,f.y,d,1);var l=Urbex.Util.LatLonBearing(c[1],c[0],a[1],a[0]);this.map.getMeasurementObj().createMeasurePopup(b,g,parseFloat(l),e,this.map.getMeasurementObj().bearingCssStyle);this.map.events.triggerEvent("bearingmeasured",{measure:parseFloat(l),geometryid:b})}else{if(this.map.projection=="EPSG:4326"){var l=Urbex.Util.LatLonBearing(k.y,k.x,f.y,f.x);this.map.getMeasurementObj().createMeasurePopup(b,g,parseFloat(l),e,this.map.getMeasurementObj().bearingCssStyle);this.map.events.triggerEvent("bearingmeasured",{measure:parseFloat(l),geometryid:b})}else{}}}},requestGetBearing:function(m,k,f,l,g){var c=Urbex.Util.createUniqueID("RequestGetBearingSrc");var d="CalculateBearing?x1="+m.x+"&x2="+k.x+"&y1="+-m.y+"&y2="+-k.y+"&usertoken="+this.map.usertoken+"&id="+this.map.idOblique+"&function=F"+c+"&format=js&dtm=yes";var b=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.MEASUREMENT,d);
var e=this.map.createOScript(c,b);var a=this.map;if(navigator.appName=="Microsoft Internet Explorer"){if((e.readyState=="loaded")||(e.readyState=="complete")){a.measureObj.responseGetBearing(c,f,l,g);e.onreadystatechange=null}else{e.onreadystatechange=function(){if((e.readyState=="loaded")||(e.readyState=="complete")){a.measureObj.responseGetBearing(c,f,l,g);e.onreadystatechange=null}}}}else{e.addEventListener("load",function(n){a.measureObj.responseGetBearing(c,f,l,g)},false)}},responseGetBearing:function(id,fid,point,units){var res=eval("F"+id+"()");this.map.deleteOScript(id);if(res.indexOf("ERROR")!=-1){return}var bearing=res;this.map.getMeasurementObj().createMeasurePopup(fid,point,parseFloat(bearing),units,this.map.getMeasurementObj().bearingCssStyle);this.map.events.triggerEvent("bearingmeasured",{measure:parseFloat(bearing),geometryid:fid})},getElevation:function(b,a){if(this.map.activeView=="ORTHO"){this.map.getMeasurementObj().requestGetElevationInOrtho2(b,a)}else{if(this.map.activeView=="OBLIQUE"){this.map.getMeasurementObj().requestGetElevationInOblique2(b,a)
}}},requestGetElevationInOrtho2:function(pt,listener){var id=Urbex.Util.createUniqueID("RequestGetElevationInOrthoSrc");var urlParams="CalculateElevationInOrtho?usertoken="+this.map.usertoken+"&srs="+this.map.projection+"&function=F"+id+"&x="+pt.x+"&y="+pt.y+"&format=js";var url=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.MEASUREMENT,urlParams);var oScript=this.map.createOScript(id,url);var map=this.map;var res;if(navigator.appName=="Microsoft Internet Explorer"){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");map.deleteOScript(id);if(res!=""){listener(map,parseFloat(res))}oScript.onreadystatechange=null}else{oScript.onreadystatechange=function(){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");map.deleteOScript(id);if(res!=""){listener(map,parseFloat(res))}oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(event){res=eval("F"+id+"()");map.deleteOScript(id);if(res!=""){listener(map,parseFloat(res))
}},false)}},requestGetElevationInOblique2:function(pt,listener){var id=Urbex.Util.createUniqueID("RequestGetElevationInOblique");var urlParams="CalculateElevationInOblique?usertoken="+this.map.usertoken+"&id="+this.map.idOblique+"&function=F"+id+"&x="+pt.x+"&y="+-pt.y+"&format=js";var url=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.MEASUREMENT,urlParams);var oScript=this.map.createOScript(id,url);var map=this.map;var res;if(navigator.appName=="Microsoft Internet Explorer"){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");map.deleteOScript(id);if(res!=""){listener(map,parseFloat(res))}oScript.onreadystatechange=null}else{oScript.onreadystatechange=function(){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");map.deleteOScript(id);if(res!=""){listener(map,parseFloat(res))}oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(event){res=eval("F"+id+"()");map.deleteOScript(id);
if(res!=""){listener(map,parseFloat(res))}},false)}},measureElevation:function(){if(this.measureLayer==null){this.measureLayer=new Urbex.Layer.Vector("Measurements Layer");this.map.addLayer(this.measureLayer)}if(this.activeControl!=null){this.activeControl.deactivate();this.activeControl=null}this.measureLayer.onFeatureInsert=this.writeElevation;this.activeControl=new Urbex.Control.DrawFeature(this.measureLayer,Urbex.Handler.Elevation,null,this.map,this.elevationStyle);this.map.addControl(this.activeControl);this.activeControl.activate()},writeElevation:function(b){var a=b.geometry;var c=new Urbex.XY(a.x,a.y);if(this.map.activeView=="ORTHO"){this.map.getMeasurementObj().requestGetElevationInOrtho(c,b.geometry.id,c," m")}else{if(this.map.activeView=="OBLIQUE"){this.map.getMeasurementObj().requestGetElevationInOblique(c,b.geometry.id,c," m")}}},requestGetElevationInOrtho:function(l,f,k,g){var c=Urbex.Util.createUniqueID("RequestGetElevationInOrthoSrc");var d="CalculateElevationInOrtho?usertoken="+this.map.usertoken+"&srs="+this.map.projection+"&function=F"+c+"&x="+l.x+"&y="+l.y+"&format=js";
var b=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.MEASUREMENT,d);var e=this.map.createOScript(c,b);var a=this.map;if(navigator.appName=="Microsoft Internet Explorer"){if((e.readyState=="loaded")||(e.readyState=="complete")){a.measureObj.responseGetElevation(c,f,k,g);e.onreadystatechange=null}else{e.onreadystatechange=function(){if((e.readyState=="loaded")||(e.readyState=="complete")){a.measureObj.responseGetElevation(c,f,k,g);e.onreadystatechange=null}}}}else{e.addEventListener("load",function(m){a.measureObj.responseGetElevation(c,f,k,g)},false)}},requestGetElevationInOblique:function(l,f,k,g){var c=Urbex.Util.createUniqueID("RequestGetElevationInOblique");var d="CalculateElevationInOblique?usertoken="+this.map.usertoken+"&id="+this.map.idOblique+"&function=F"+c+"&x="+l.x+"&y="+-l.y+"&format=js";var b=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.MEASUREMENT,d);var e=this.map.createOScript(c,b);var a=this.map;if(navigator.appName=="Microsoft Internet Explorer"){if((e.readyState=="loaded")||(e.readyState=="complete")){a.measureObj.responseGetElevation(c,f,k,g);
e.onreadystatechange=null}else{e.onreadystatechange=function(){if((e.readyState=="loaded")||(e.readyState=="complete")){a.measureObj.responseGetElevation(c,f,k,g);e.onreadystatechange=null}}}}else{e.addEventListener("load",function(m){a.measureObj.responseGetElevation(c,f,k,g)},false)}},responseGetElevation:function(id,fid,point,units){var res=eval("F"+id+"()");this.map.deleteOScript(id);if(res.indexOf("ERROR")!=-1){return}var elevation=res;this.map.getMeasurementObj().createMeasurePopup(fid,point,parseFloat(elevation),units,this.map.getMeasurementObj().elevationCssStyle);this.map.events.triggerEvent("elevationmeasured",{measure:parseFloat(elevation),geometryid:fid})},createMeasurePopup:function(k,f,e,c,d){var a=0;var g=0;if(d){var a=(d.offset)?parseFloat(d.offset.split(",")[0]):0;var g=(d.offset)?parseFloat(d.offset.split(",")[1]):0}var b=new Urbex.Popup.Anchored(this.measureLayer.name+"_"+k,f,null,e.toFixed(2)+c,null,null,null,a,g,"ll");b.div.style.zIndex=parseInt(this.measureLayer.div.style.zIndex)+1;
b.autoSize=true;for(atributo in d){switch(atributo){case"backgroundColor":b.backgroundColor=d[atributo];break;case"opacity":b.opacity=d[atributo];break;case"border":b.border=d[atributo];break;case"fontStyle":b.div.style.fontStyle=d[atributo];break;case"fontWeight":b.div.style.fontWeight=d[atributo];break;case"fontFamily":b.div.style.fontFamily=d[atributo];break;case"fontSize":b.div.style.fontSize=d[atributo];break;case"color":b.div.style.color=d[atributo];break;case"padding":b.contentDiv.style.padding=d[atributo];break}}this.addMeasurePopup(b)},modifyMeasurePopup:function(c,b){for(var a=0;a<this.measurePopups.length;a++){if(this.measurePopups[a].id==this.measureLayer.name+"_"+c){this.measurePopups[a].lonlat=b;this.measurePopups[a].updatePosition();break}}},getMeasurePopup:function(b){for(var a=0;a<this.measurePopups.length;a++){if(this.measurePopups[a].id==this.measureLayer.name+"_"+b){return this.measurePopups[a]}}return null},removeMeasurePopups:function(){for(var a=0;a<this.measurePopups.length;
a++){if(this.measurePopups[a].map.id==this.map.id){this.map.layerContainerDiv.removeChild(this.measurePopups[a].div)}}this.measurePopups=[]},addMeasurePopup:function(a){a.map=this.map;this.measurePopups.push(a);var b=a.draw();if(b){b.style.zIndex=this.map.Z_INDEX_BASE.Feature_Popup+this.measurePopups.length;this.map.layerContainerDiv.appendChild(b)}},cleanMeasures:function(){if(this.activeControl!=null){this.activeControl.deactivate();this.activeControl=null}if(this.measureLayer!=null){this.map.removeLayer(this.measureLayer);this.measureLayer=null}this.removeMeasurePopups();this.offMeasureControls()},setMeasurePopupVisible:function(d,b){var a=this.getMeasurePopup(d);if(a){var c;if(a.constructor==Array){c=a[0].div}else{c=a.div}if(b){c.style.display="block"}else{c.style.display="none"}}},setMeasurePopupAlign:function(c,a){var b=this.getMeasurePopup(c);if(b){b.relativePosition=a;b.show()}},offMeasureControls:function(){if(this.map.activeView=="ORTHO"){for(var a=0;a<this.map.controls.length;
a++){if(this.map.controls[a].status&&this.map.controls[a].status!="INACTIVE"){this.map.controls[a].status="INACTIVE";this.map.controls[a].refresh()}}}else{for(var a=0;a<this.map.controls.length;a++){if(this.map.controls[a].status&&this.map.controls[a].status!="OFF"){this.map.controls[a].status="OFF";this.map.controls[a].refresh()}}}if(this.activeControl!=null){this.activeControl.deactivate();this.activeControl=null}},getVectorLayer:function(){if(this.measureLayer==null){this.measureLayer=new Urbex.Layer.Vector("Measurements Layer");this.map.addLayer(this.measureLayer)}return this.measureLayer},setHeightStyle:function(a){this.heightStyle=a},setHeightTextStyle:function(a){this.heightCssStyle=a},setLengthStyle:function(a){this.lengthStyle=a},setLengthTextStyle:function(a){this.lengthCssStyle=a},setBearingStyle:function(a){this.bearingStyle=a},setBearingTextStyle:function(a){this.bearingCssStyle=a},setElevationStyle:function(a){this.elevationStyle=a},setElevationTextStyle:function(a){this.elevationCssStyle=a
},setAreaStyle:function(a){this.areaStyle=a},setAreaTextStyle:function(a){this.areaCssStyle=a},setGroundLengthStyle:function(a){this.groundLengthStyle=a},setGroundLengthTextStyle:function(a){this.groundLengthCssStyle=a},CLASS_NAME:"Urbex.Measures"});Urbex.Handler.Point=Urbex.Class(Urbex.Handler,{point:null,layer:null,drawing:false,mouseDown:false,lastDown:null,lastUp:null,initialize:function(d,b,a,c){Urbex.Handler.prototype.initialize.apply(this,arguments)},activate:function(){if(!Urbex.Handler.prototype.activate.apply(this,arguments)){return false}var a={displayInLayerSwitcher:false,calculateInRange:function(){return true}};this.layer=new Urbex.Layer.Vector(this.CLASS_NAME,a);this.map.addLayer(this.layer);this.layer.div.style.zIndex=6000;return true},createFeature:function(){this.point=new Urbex.Feature.Vector(new Urbex.Geometry.Point())},deactivate:function(){if(!Urbex.Handler.prototype.deactivate.apply(this,arguments)){return false}if(this.drawing){this.cancel()}if(this.layer.map!=null){this.layer.destroy(false)
}this.layer=null;return true},destroyFeature:function(){if(this.point){this.point.destroy()}this.point=null},finalize:function(){this.layer.renderer.clear();this.drawing=false;this.mouseDown=false;this.lastDown=null;this.lastUp=null;this.callback("done",[this.geometryClone()]);this.destroyFeature()},cancel:function(){this.layer.renderer.clear();this.drawing=false;this.mouseDown=false;this.lastDown=null;this.lastUp=null;this.callback("cancel",[this.geometryClone()]);this.destroyFeature()},click:function(a){Urbex.Event.stop(a);return false},dblclick:function(a){Urbex.Event.stop(a);return false},drawFeature:function(){this.layer.drawFeature(this.point,this.style)},geometryClone:function(){return this.point.geometry.clone()},mousedown:function(a){if(!this.checkModifiers(a)){return true}if(this.lastDown&&this.lastDown.equals(a.xy)){return true}if(this.lastDown==null){this.createFeature()}this.lastDown=a.xy;this.drawing=true;var b=this.map.getLonLatFromPixel(a.xy);this.point.geometry.x=b.x;this.point.geometry.y=b.y;
this.drawFeature();return false},mousemove:function(a){if(this.drawing){var b=this.map.getLonLatFromPixel(a.xy);this.point.geometry.x=b.x;this.point.geometry.y=b.y;this.point.geometry.clearBounds();this.drawFeature()}return true},mouseup:function(a){if(this.drawing){this.finalize();return false}else{return true}},CLASS_NAME:"Urbex.Handler.Point"});Urbex.Handler.Path=Urbex.Class(Urbex.Handler.Point,{line:null,freehand:false,freehandToggle:"shiftKey",initialize:function(c,b,a){Urbex.Handler.Point.prototype.initialize.apply(this,arguments)},createFeature:function(){this.line=new Urbex.Feature.Vector(new Urbex.Geometry.LineString());this.point=new Urbex.Feature.Vector(new Urbex.Geometry.Point())},destroyFeature:function(){Urbex.Handler.Point.prototype.destroyFeature.apply(this);if(this.line){this.line.destroy()}this.line=null},addPoint:function(){this.line.geometry.addComponent(this.point.geometry.clone(),this.line.geometry.components.length);this.callback("point",[this.point.geometry])},freehandMode:function(a){return(this.freehandToggle&&a[this.freehandToggle])?!this.freehand:this.freehand
},modifyFeature:function(){var a=this.line.geometry.components.length-1;this.line.geometry.components[a].x=this.point.geometry.x;this.line.geometry.components[a].y=this.point.geometry.y;this.line.geometry.components[a].clearBounds()},drawFeature:function(){this.layer.drawFeature(this.line,this.style);this.layer.drawFeature(this.point,this.style)},geometryClone:function(){return this.line.geometry.clone()},mousedown:function(a){if(this.lastDown&&this.lastDown.equals(a.xy)){return false}if(this.lastDown==null){this.createFeature()}this.mouseDown=true;this.lastDown=a.xy;var b=this.map.getLonLatFromPixel(a.xy);this.point.geometry.x=b.x;this.point.geometry.y=b.y;if((this.lastUp==null)||!this.lastUp.equals(a.xy)){this.addPoint()}this.drawFeature();this.drawing=true;return false},mousemove:function(a){if(this.drawing){var b=this.map.getLonLatFromPixel(a.xy);this.point.geometry.x=b.x;this.point.geometry.y=b.y;if(this.mouseDown&&this.freehandMode(a)){this.addPoint()}else{this.modifyFeature()}this.drawFeature()
}return true},mouseup:function(a){this.mouseDown=false;if(this.drawing){if(this.freehandMode(a)){this.finalize()}else{if(this.lastUp==null){this.addPoint()}this.lastUp=a.xy}return false}return true},dblclick:function(a){if(!this.freehandMode(a)){var b=this.line.geometry.components.length-1;this.line.geometry.removeComponent(this.line.geometry.components[b]);this.finalize()}return false},CLASS_NAME:"Urbex.Handler.Path"});Urbex.Handler.Length=Urbex.Class(Urbex.Handler.Point,{line:null,freehand:false,freehandToggle:"shiftKey",mdivs:[],initialize:function(d,c,b,a){this.style=Urbex.Util.extend({},Urbex.Feature.Vector.style["default"]);this.style=Urbex.Util.extend(this.style,a);Urbex.Handler.Point.prototype.initialize.apply(this,arguments)},createFeature:function(){this.line=new Urbex.Feature.Vector(new Urbex.Geometry.LineString(),null,this.style);this.point=new Urbex.Feature.Vector(new Urbex.Geometry.Point(),null,this.style)},destroyFeature:function(){Urbex.Handler.Point.prototype.destroyFeature.apply(this);
if(this.line){this.line.destroy()}this.line=null},addPoint:function(){this.line.geometry.addComponent(this.point.geometry.clone(),this.line.geometry.components.length);this.callback("point",[this.point.geometry])},freehandMode:function(a){return(this.freehandToggle&&a[this.freehandToggle])?!this.freehand:this.freehand},modifyFeature:function(){var a=this.line.geometry.components.length-1;this.line.geometry.components[a].x=this.point.geometry.x;this.line.geometry.components[a].y=this.point.geometry.y;this.line.geometry.components[a].clearBounds()},drawFeature:function(){this.layer.drawFeature(this.line,this.style);this.layer.drawFeature(this.point,this.style)},geometryClone:function(){return this.line.geometry.clone()},mousedown:function(a){if(this.lastDown&&this.lastDown.equals(a.xy)){return false}if(this.lastDown==null){this.createFeature()}this.mouseDown=true;this.lastDown=a.xy;var b=this.map.getLonLatFromPixel(a.xy);this.point.geometry.x=b.x;this.point.geometry.y=b.y;if((this.lastUp==null)||!this.lastUp.equals(a.xy)){this.addPoint()
}this.drawFeature();this.drawing=true;return false},mousemove:function(a){if(this.drawing){var b=this.map.getLonLatFromPixel(a.xy);this.point.geometry.x=b.x;this.point.geometry.y=b.y;if(this.mouseDown&&this.freehandMode(a)){this.addPoint()}else{this.modifyFeature()}this.drawFeature()}return true},mouseup:function(a){this.mouseDown=false;if(this.drawing){if(this.freehandMode(a)){this.finalize()}else{if(this.lastUp==null){this.addPoint()}else{}this.lastUp=a.xy}return false}return true},dblclick:function(a){if(!this.freehandMode(a)){var b=this.line.geometry.components.length-1;this.line.geometry.removeComponent(this.line.geometry.components[b]);this.finalize()}return false},CLASS_NAME:"Urbex.Handler.Length"});Urbex.Handler.Height=Urbex.Class(Urbex.Handler.Point,{line:null,freehand:false,freehandToggle:"shiftKey",initialize:function(d,c,b,a){this.map=d.map;this.style=Urbex.Util.extend({},Urbex.Feature.Vector.style["default"]);this.style=Urbex.Util.extend(this.style,a);Urbex.Handler.Point.prototype.initialize.apply(this,arguments)
},createFeature:function(){this.line=new Urbex.Feature.Vector(new Urbex.Geometry.LineString(),null,this.style);this.point=new Urbex.Feature.Vector(new Urbex.Geometry.Point(),null,this.style)},destroyFeature:function(){Urbex.Handler.Point.prototype.destroyFeature.apply(this);if(this.line){this.line.destroy()}this.line=null},addPoint:function(){this.line.geometry.addComponent(this.point.geometry.clone(),this.line.geometry.components.length);this.callback("point",[this.point.geometry])},freehandMode:function(a){return(this.freehandToggle&&a[this.freehandToggle])?!this.freehand:this.freehand},modifyFeature:function(){var a=this.line.geometry.components.length-1;this.line.geometry.components[a].x=this.point.geometry.x;this.line.geometry.components[a].y=this.point.geometry.y;this.line.geometry.components[a].clearBounds()},drawFeature:function(){this.layer.drawFeature(this.line,this.style);this.layer.drawFeature(this.point,this.style)},geometryClone:function(){return this.line.geometry.clone()
},mousedown:function(a){if(this.lastDown&&this.lastDown.equals(a.xy)){return false}if(this.lastDown==null){this.createFeature();this.mouseDown=true;this.lastDown=a.xy;var b=this.map.getLonLatFromPixel(a.xy);this.point.geometry.x=b.x;this.point.geometry.y=b.y;if(this.map.activeView=="OBLIQUE"){this.requestHeightMeasuringAngle(b.x,-b.y)}if((this.lastUp==null)||!this.lastUp.equals(a.xy)){this.addPoint()}this.drawFeature();this.drawing=true;return false}else{this.endclick(a)}},mousemove:function(c){if(this.drawing){var d=this.map.getLonLatFromPixel(c.xy);if(this.angle){this.point.geometry.y=d.y;var f=this.line.geometry.components[0].x;var e=this.line.geometry.components[0].y;var a=d.y-e;var b=a/Math.tan(this.angle);this.point.geometry.x=f+b}else{this.point.geometry.x=d.x;this.point.geometry.y=d.y}if(this.mouseDown&&this.freehandMode(c)){this.addPoint()}else{this.modifyFeature()}this.drawFeature()}return true},mouseup:function(a){this.mouseDown=false;if(this.drawing){if(this.freehandMode(a)){this.finalize()
}else{if(this.lastUp==null){this.addPoint()}this.lastUp=a.xy}return false}return true},dblclick:function(a){return false},endclick:function(a){if(!this.freehandMode(a)){var b=this.line.geometry.components.length-1;this.line.geometry.removeComponent(this.line.geometry.components[b]);this.finalize()}return false},requestHeightMeasuringAngle:function(a,g){var f=Urbex.Util.createUniqueID("requestHeightMeasuringAngle");var b="CalculateHeightMeasuringAngle?usertoken="+this.map.usertoken+"&id="+this.map.idOblique+"&x="+a+"&y="+g+"&function=F"+f+"&format=js";var c=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.TRANSFORM_POINTS,b);oScript=this.map.createOScript(f,c);var e=this.map;var d=this;if(navigator.appName=="Microsoft Internet Explorer"){if(oScript.readyState=="loaded"){d.responseHeightMeasuringAngle(f);oScript.onreadystatechange=null}else{oScript.onreadystatechange=function(){if(oScript.readyState=="loaded"){d.responseHeightMeasuringAngle(f);oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(k){d.responseHeightMeasuringAngle(f)
},false)}},responseHeightMeasuringAngle:function(id){var angle=eval("F"+id+"()")*1;this.angle=-angle;this.map.deleteOScript(id)},CLASS_NAME:"Urbex.Handler.Height"});Urbex.Handler.Area=Urbex.Class(Urbex.Handler.Path,{polygon:null,initialize:function(d,c,b,a){this.style=Urbex.Util.extend({},Urbex.Feature.Vector.style["default"]);this.style=Urbex.Util.extend(this.style,a);Urbex.Handler.Path.prototype.initialize.apply(this,arguments)},createFeature:function(){this.polygon=new Urbex.Feature.Vector(new Urbex.Geometry.Polygon(),null,this.style);this.line=new Urbex.Feature.Vector(new Urbex.Geometry.LinearRing(),null,this.style);this.polygon.geometry.addComponent(this.line.geometry);this.point=new Urbex.Feature.Vector(new Urbex.Geometry.Point(),null,this.style)},destroyFeature:function(){Urbex.Handler.Path.prototype.destroyFeature.apply(this);if(this.polygon){this.polygon.destroy()}this.polygon=null},modifyFeature:function(){var a=this.line.geometry.components.length-2;this.line.geometry.components[a].x=this.point.geometry.x;
this.line.geometry.components[a].y=this.point.geometry.y;this.line.geometry.components[a].clearBounds()},drawFeature:function(){this.layer.drawFeature(this.polygon,this.style);this.layer.drawFeature(this.point,this.style)},geometryClone:function(){return this.polygon.geometry.clone()},dblclick:function(a){if(!this.freehandMode(a)){var b=this.line.geometry.components.length-2;this.line.geometry.removeComponent(this.line.geometry.components[b]);this.finalize()}return false},CLASS_NAME:"Urbex.Handler.Area"});Urbex.Handler.Bearing=Urbex.Class(Urbex.Handler.Point,{line:null,freehand:false,freehandToggle:"shiftKey",mdivs:[],initialize:function(d,c,b,a){this.style=Urbex.Util.extend({},Urbex.Feature.Vector.style["default"]);this.style=Urbex.Util.extend(this.style,a);Urbex.Handler.Point.prototype.initialize.apply(this,arguments)},createFeature:function(){this.line=new Urbex.Feature.Vector(new Urbex.Geometry.LineString(),null,this.style);this.point=new Urbex.Feature.Vector(new Urbex.Geometry.Point(),null,this.style)
},destroyFeature:function(){Urbex.Handler.Point.prototype.destroyFeature.apply(this);if(this.line){this.line.destroy()}this.line=null},addPoint:function(){this.line.geometry.addComponent(this.point.geometry.clone(),this.line.geometry.components.length);this.callback("point",[this.point.geometry])},freehandMode:function(a){return(this.freehandToggle&&a[this.freehandToggle])?!this.freehand:this.freehand},modifyFeature:function(){var a=this.line.geometry.components.length-1;this.line.geometry.components[a].x=this.point.geometry.x;this.line.geometry.components[a].y=this.point.geometry.y;this.line.geometry.components[a].clearBounds()},drawFeature:function(){this.layer.drawFeature(this.line,this.style);this.layer.drawFeature(this.point,this.style)},geometryClone:function(){return this.line.geometry.clone()},mousedown:function(a){if(this.lastDown&&this.lastDown.equals(a.xy)){return false}if(this.lastDown==null){this.createFeature();this.mouseDown=true;this.lastDown=a.xy;var b=this.map.getLonLatFromPixel(a.xy);
this.point.geometry.x=b.x;this.point.geometry.y=b.y;if((this.lastUp==null)||!this.lastUp.equals(a.xy)){this.addPoint()}this.drawFeature();this.drawing=true;return false}else{this.dblclick(a)}},mousemove:function(a){if(this.drawing){var b=this.map.getLonLatFromPixel(a.xy);this.point.geometry.x=b.x;this.point.geometry.y=b.y;if(this.mouseDown&&this.freehandMode(a)){this.addPoint()}else{this.modifyFeature()}this.drawFeature()}return true},mouseup:function(a){this.mouseDown=false;if(this.drawing){if(this.freehandMode(a)){this.finalize()}else{if(this.lastUp==null){this.addPoint()}this.lastUp=a.xy}return false}return true},dblclick:function(a){if(!this.freehandMode(a)){var b=this.line.geometry.components.length-1;this.line.geometry.removeComponent(this.line.geometry.components[b]);this.finalize()}return false},CLASS_NAME:"Urbex.Handler.Bearing"});Urbex.Handler.Elevation=Urbex.Class(Urbex.Handler,{point:null,layer:null,drawing:false,mouseDown:false,lastDown:null,lastUp:null,initialize:function(d,c,b,a){this.style=Urbex.Util.extend({},Urbex.Feature.Vector.style["default"]);
this.style=Urbex.Util.extend(this.style,a);Urbex.Handler.prototype.initialize.apply(this,arguments)},activate:function(){if(!Urbex.Handler.prototype.activate.apply(this,arguments)){return false}var a={displayInLayerSwitcher:false,calculateInRange:function(){return true}};this.layer=new Urbex.Layer.Vector(this.CLASS_NAME,a);this.map.addLayer(this.layer);return true},createFeature:function(){this.point=new Urbex.Feature.Vector(new Urbex.Geometry.Point(),null,this.style)},deactivate:function(){if(!Urbex.Handler.prototype.deactivate.apply(this,arguments)){return false}if(this.drawing){this.cancel()}if(this.layer.map!=null){this.layer.destroy(false)}this.layer=null;return true},destroyFeature:function(){if(this.point){this.point.destroy()}this.point=null},finalize:function(){this.layer.renderer.clear();this.drawing=false;this.mouseDown=false;this.lastDown=null;this.lastUp=null;this.callback("done",[this.geometryClone()]);this.destroyFeature()},cancel:function(){this.layer.renderer.clear();this.drawing=false;
this.mouseDown=false;this.lastDown=null;this.lastUp=null;this.callback("cancel",[this.geometryClone()]);this.destroyFeature()},click:function(a){Urbex.Event.stop(a);return false},dblclick:function(a){Urbex.Event.stop(a);return false},drawFeature:function(){this.layer.drawFeature(this.point,this.style)},geometryClone:function(){return this.point.geometry.clone()},mousedown:function(a){if(!this.checkModifiers(a)){return true}if(this.lastDown&&this.lastDown.equals(a.xy)){return true}if(this.lastDown==null){this.createFeature()}this.lastDown=a.xy;this.drawing=true;var b=this.map.getLonLatFromPixel(a.xy);this.point.geometry.x=b.x;this.point.geometry.y=b.y;this.drawFeature();return false},mousemove:function(a){if(this.drawing){var b=this.map.getLonLatFromPixel(a.xy);this.point.geometry.x=b.x;this.point.geometry.y=b.y;this.point.geometry.clearBounds();this.drawFeature()}return true},mouseup:function(a){if(this.drawing){this.finalize();return false}else{return true}},CLASS_NAME:"Urbex.Handler.Elevation"});
Urbex.Handler.GroundLength=Urbex.Class(Urbex.Handler.Point,{line:null,freehand:false,freehandToggle:"shiftKey",mdivs:[],initialize:function(d,c,b,a){this.style=Urbex.Util.extend({},Urbex.Feature.Vector.style["default"]);this.style=Urbex.Util.extend(this.style,a);Urbex.Handler.Point.prototype.initialize.apply(this,arguments)},createFeature:function(){this.line=new Urbex.Feature.Vector(new Urbex.Geometry.LineString(),null,this.style);this.point=new Urbex.Feature.Vector(new Urbex.Geometry.Point(),null,this.style)},destroyFeature:function(){Urbex.Handler.Point.prototype.destroyFeature.apply(this);if(this.line){this.line.destroy()}this.line=null},addPoint:function(){this.line.geometry.addComponent(this.point.geometry.clone(),this.line.geometry.components.length);this.callback("point",[this.point.geometry])},freehandMode:function(a){return(this.freehandToggle&&a[this.freehandToggle])?!this.freehand:this.freehand},modifyFeature:function(){var a=this.line.geometry.components.length-1;this.line.geometry.components[a].x=this.point.geometry.x;
this.line.geometry.components[a].y=this.point.geometry.y;this.line.geometry.components[a].clearBounds()},drawFeature:function(){this.layer.drawFeature(this.line,this.style);this.layer.drawFeature(this.point,this.style)},geometryClone:function(){return this.line.geometry.clone()},mousedown:function(a){if(this.lastDown&&this.lastDown.equals(a.xy)){return false}if(this.lastDown==null){this.createFeature()}this.mouseDown=true;this.lastDown=a.xy;var b=this.map.getLonLatFromPixel(a.xy);this.point.geometry.x=b.x;this.point.geometry.y=b.y;if((this.lastUp==null)||!this.lastUp.equals(a.xy)){this.addPoint()}this.drawFeature();this.drawing=true;return false},mousemove:function(a){if(this.drawing){var b=this.map.getLonLatFromPixel(a.xy);this.point.geometry.x=b.x;this.point.geometry.y=b.y;if(this.mouseDown&&this.freehandMode(a)){this.addPoint()}else{this.modifyFeature()}this.drawFeature()}return true},mouseup:function(a){this.mouseDown=false;if(this.drawing){if(this.freehandMode(a)){this.finalize()}else{if(this.lastUp==null){this.addPoint()
}else{}this.lastUp=a.xy}return false}return true},dblclick:function(a){if(!this.freehandMode(a)){var b=this.line.geometry.components.length-1;this.line.geometry.removeComponent(this.line.geometry.components[b]);this.finalize()}return false},CLASS_NAME:"Urbex.Handler.GroundLength"});Urbex.Control.Height=Urbex.Class(Urbex.Control,{slideFactor:50,status:"OFF",initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(22,22);this.controlPosition=new Urbex.Pixel(-1-22*3,0);this.titles=[];this.titles[0]="Height Measurement";this.sizes=[];this.sizes[0]=this.size?this.size:new Urbex.Size(22,22);this.positions=[];this.positions[0]=this.position?this.position:new Urbex.Pixel(0,0);this.imagesOn=[];this.imagesOn[0]=this.imageon?this.imageon:Urbex.Util.getImagesLocation()+"height_on.png";this.imagesOff=[];this.imagesOff[0]=this.imageoff?this.imageoff:Urbex.Util.getImagesLocation()+"height_off.png";this.imagesOff[1]=this.inactive?this.inactive:Urbex.Util.getImagesLocation()+"height_inactive.png"
},destroy:function(){Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);this.buttons=[];var a=this.addImageButton("Urbex_Control_Height_Height",this.titles[0],this.imagesOn[0],this.positions[0],this.sizes[0]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDown,this));Urbex.Event.observe(a,"dblclick",Urbex.Function.bindAsEventListener(this.doubleClick,this));Urbex.Event.observe(a,"click",Urbex.Function.bindAsEventListener(this.doubleClick,this));this.map.events.register("orientationchanged",this,this.OriChanged);this.refresh();return this.div},OriChanged:function(){if(this.map.activeView=="ORTHO"){this.status="INACTIVE"}else{this.status="OFF"}this.refresh()},doubleClick:function(a){Urbex.Event.stop(a);return false},buttonDown:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}if(this.map.activeView!="ORTHO"){if(this.status=="OFF"){this.map.measureObj.offMeasureControls();
this.status="ON";this.map.measureObj.measureHeight()}else{this.status="OFF";this.map.measureObj.offMeasureControls()}}this.refresh()},setMap:function(a){Urbex.Control.prototype.setMap.apply(this,arguments);if(a.measureObj==null){a.measureObj=new Urbex.Measures(a)}if(this.map.activeView=="ORTHO"){this.status="INACTIVE"}else{this.status="OFF"}},setPosition:function(a){this.setControlPosition(a)},setSize:function(a){this.sizes[0]=a;this.setControlSize(a)},setImageOn:function(a){this.imagesOn[0]=a;this.refresh()},setImageOff:function(a){this.imagesOff[0]=a;this.refresh()},setImageInactive:function(a){this.imagesOff[1]=a;this.refresh()},setTitle:function(a){this.titles[0]=a;this.refresh()},customRefresh:function(d,b,c,g,f,e){var a=this.status;if(a=="ON"){Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],f[0],null,null,null,null)}else{if(a=="OFF"){Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],e[0],null,null,null,null)}else{Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],e[1],null,null,null,null)
}}d[0].title=g[0]},CLASS_NAME:"Urbex.Control.Height"});Urbex.Control.Length=Urbex.Class(Urbex.Control,{slideFactor:50,status:"INACTIVE",initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(22,22);this.controlPosition=new Urbex.Pixel(-1-22*5,0);this.titles=[];this.titles[0]="Length Measurement";this.sizes=[];this.sizes[0]=this.size?this.size:new Urbex.Size(22,22);this.positions=[];this.positions[0]=this.position?this.position:new Urbex.Pixel(0,0);this.imagesOn=[];this.imagesOn[0]=this.imageon?this.imageon:Urbex.Util.getImagesLocation()+"length_on.png";this.imagesOff=[];this.imagesOff[0]=this.imageoff?this.imageoff:Urbex.Util.getImagesLocation()+"length_off.png"},destroy:function(){Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);this.buttons=[];var a=this.addImageButton("Urbex_Control_Length_Length",this.titles[0],this.imagesOn[0],this.positions[0],this.sizes[0]);
Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDown,this));Urbex.Event.observe(a,"dblclick",Urbex.Function.bindAsEventListener(this.doubleClick,this));Urbex.Event.observe(a,"click",Urbex.Function.bindAsEventListener(this.doubleClick,this));this.refresh();return this.div},doubleClick:function(a){Urbex.Event.stop(a);return false},buttonDown:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}if(this.status!="ON"){this.map.measureObj.offMeasureControls();this.status="ON";this.map.measureObj.measureLength()}else{this.status="OFF";this.map.measureObj.offMeasureControls()}this.refresh()},setMap:function(a){Urbex.Control.prototype.setMap.apply(this,arguments);if(a.measureObj==null){a.measureObj=new Urbex.Measures(a)}},setPosition:function(a){this.setControlPosition(a)},setSize:function(a){this.sizes[0]=a;this.setControlSize(a)},setImageOn:function(a){this.imagesOn[0]=a;this.refresh()},setImageOff:function(a){this.imagesOff[0]=a;this.refresh()
},setTitle:function(a){this.titles[0]=a;this.refresh()},customRefresh:function(d,b,c,g,f,e){var a=this.status;if(a=="ON"){Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],f[0],null,null,null,null)}else{Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],e[0],null,null,null,null)}d[0].title=g[0]},CLASS_NAME:"Urbex.Control.Length"});Urbex.Control.Area=Urbex.Class(Urbex.Control,{slideFactor:50,status:"INACTIVE",initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(22,22);this.controlPosition=new Urbex.Pixel(-1-22*4,0);this.titles=[];this.titles[0]="Area Measurement";this.sizes=[];this.sizes[0]=this.size?this.size:new Urbex.Size(22,22);this.positions=[];this.positions[0]=this.position?this.position:new Urbex.Pixel(0,0);this.imagesOn=[];this.imagesOn[0]=this.imageon?this.imageon:Urbex.Util.getImagesLocation()+"area_on.png";this.imagesOff=[];this.imagesOff[0]=this.imageoff?this.imageoff:Urbex.Util.getImagesLocation()+"area_off.png"
},destroy:function(){Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);this.buttons=[];var a=this.addImageButton("Urbex_Control_Area_Area",this.titles[0],this.imagesOn[0],this.positions[0],this.sizes[0]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDown,this));Urbex.Event.observe(a,"dblclick",this.doubleClick);Urbex.Event.observe(a,"click",this.doubleClick);this.refresh();return this.div},doubleClick:function(a){Urbex.Event.stop(a);return false},buttonDown:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}if(this.status!="ON"){this.map.measureObj.offMeasureControls();this.status="ON";this.map.measureObj.measureArea()}else{this.status="OFF";this.map.measureObj.offMeasureControls()}this.refresh()},setMap:function(a){Urbex.Control.prototype.setMap.apply(this,arguments);if(a.measureObj==null){a.measureObj=new Urbex.Measures(a)}},setPosition:function(a){this.setControlPosition(a)
},setSize:function(a){this.sizes[0]=a;this.setControlSize(a)},setImageOn:function(a){this.imagesOn[0]=a;this.refresh()},setImageOff:function(a){this.imagesOff[0]=a;this.refresh()},setTitle:function(a){this.titles[0]=a;this.refresh()},customRefresh:function(d,b,c,g,f,e){var a=this.status;if(a=="ON"){Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],f[0],null,null,null,null)}else{Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],e[0],null,null,null,null)}d[0].title=g[0]},CLASS_NAME:"Urbex.Control.Area"});Urbex.Control.Bearing=Urbex.Class(Urbex.Control,{slideFactor:50,status:"INACTIVE",initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(22,22);this.controlPosition=new Urbex.Pixel(-1-22*2,0);this.titles=[];this.titles[0]="Bearing";this.sizes=[];this.sizes[0]=this.size?this.size:new Urbex.Size(22,22);this.positions=[];this.positions[0]=this.position?this.position:new Urbex.Pixel(0,0);this.imagesOn=[];
this.imagesOn[0]=this.imageon?this.imageon:Urbex.Util.getImagesLocation()+"bearing_on.png";this.imagesOff=[];this.imagesOff[0]=this.imageoff?this.imageoff:Urbex.Util.getImagesLocation()+"bearing_off.png"},destroy:function(){Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);this.buttons=[];var a=this.addImageButton("Urbex_Control_Area_Area",this.titles[0],this.imagesOn[0],this.positions[0],this.sizes[0]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDown,this));Urbex.Event.observe(a,"dblclick",Urbex.Function.bindAsEventListener(this.doubleClick,this));Urbex.Event.observe(a,"click",Urbex.Function.bindAsEventListener(this.doubleClick,this));this.refresh();return this.div},doubleClick:function(a){Urbex.Event.stop(a);return false},buttonDown:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}if(this.status!="ON"){this.map.measureObj.offMeasureControls();
this.status="ON";this.map.measureObj.measureBearing()}else{this.status="OFF";this.map.measureObj.offMeasureControls()}this.refresh()},setMap:function(a){Urbex.Control.prototype.setMap.apply(this,arguments);if(a.measureObj==null){a.measureObj=new Urbex.Measures(a)}},setPosition:function(a){this.setControlPosition(a)},setSize:function(a){this.sizes[0]=a;this.setControlSize(a)},setImageOn:function(a){this.imagesOn[0]=a;this.refresh()},setImageOff:function(a){this.imagesOff[0]=a;this.refresh()},setTitle:function(a){this.titles[0]=a;this.refresh()},customRefresh:function(d,b,c,g,f,e){var a=this.status;if(a=="ON"){Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],f[0],null,null,null,null)}else{Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],e[0],null,null,null,null)}d[0].title=g[0]},CLASS_NAME:"Urbex.Control.Bearing"});Urbex.Control.Elevation=Urbex.Class(Urbex.Control,{slideFactor:50,status:"INACTIVE",initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);
this.controlSize=new Urbex.Size(22,22);this.controlPosition=new Urbex.Pixel(-1-22*1,0);this.titles=[];this.titles[0]="Elevation";this.sizes=[];this.sizes[0]=this.size?this.size:new Urbex.Size(22,22);this.positions=[];this.positions[0]=this.position?this.position:new Urbex.Pixel(0,0);this.imagesOn=[];this.imagesOn[0]=this.imageon?this.imageon:Urbex.Util.getImagesLocation()+"elevation_on.png";this.imagesOff=[];this.imagesOff[0]=this.imageoff?this.imageoff:Urbex.Util.getImagesLocation()+"elevation_off.png"},destroy:function(){Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);this.buttons=[];var a=this.addImageButton("Urbex_Control_Elevation_Elevation",this.titles[0],this.imagesOn[0],this.positions[0],this.sizes[0]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDown,this));Urbex.Event.observe(a,"dblclick",Urbex.Function.bindAsEventListener(this.doubleClick,this));Urbex.Event.observe(a,"click",Urbex.Function.bindAsEventListener(this.doubleClick,this));
this.refresh();return this.div},doubleClick:function(a){Urbex.Event.stop(a);return false},buttonDown:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}if(this.status!="ON"){this.map.measureObj.offMeasureControls();this.status="ON";this.map.measureObj.measureElevation()}else{this.status="OFF";this.map.measureObj.offMeasureControls()}this.refresh()},setMap:function(a){Urbex.Control.prototype.setMap.apply(this,arguments);if(a.measureObj==null){a.measureObj=new Urbex.Measures(a)}},loadElevation:function(b){var a=b.geometry},setPosition:function(a){this.setControlPosition(a)},setSize:function(a){this.sizes[0]=a;this.setControlSize(a)},setImageOn:function(a){this.imagesOn[0]=a;this.refresh()},setImageOff:function(a){this.imagesOff[0]=a;this.refresh()},setTitle:function(a){this.titles[0]=a;this.refresh()},customRefresh:function(d,b,c,g,f,e){var a=this.status;if(a=="ON"){Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],f[0],null,null,null,null)}else{Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],e[0],null,null,null,null)
}d[0].title=g[0]},CLASS_NAME:"Urbex.Control.Elevation"});Urbex.Control.Eraser=Urbex.Class(Urbex.Control,{slideFactor:50,initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(22,22);this.controlPosition=new Urbex.Pixel(-1,0);this.titles=[];this.titles[0]="Delete Measurements";this.sizes=[];this.sizes[0]=this.size?this.size:new Urbex.Size(22,22);this.positions=[];this.positions[0]=this.position?this.position:new Urbex.Pixel(0,0);this.imagesOn=[];this.imagesOn[0]=this.imageon?this.imageon:Urbex.Util.getImagesLocation()+"eraser.png";this.imagesOff=[];this.imagesOff[0]=this.imageoff?this.imageoff:Urbex.Util.getImagesLocation()+"eraser.png"},destroy:function(){Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);this.buttons=[];var a=this.addImageButton("Urbex_Control_Area_Area",this.titles[0],this.imagesOn[0],this.positions[0],this.sizes[0]);
Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDown,this));Urbex.Event.observe(a,"dblclick",this.doubleClick);Urbex.Event.observe(a,"click",this.doubleClick);this.refresh();return this.div},doubleClick:function(a){Urbex.Event.stop(a);return false},buttonDown:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}this.map.measureObj.cleanMeasures()},setPosition:function(a){this.setControlPosition(a)},setSize:function(a){this.sizes[0]=a;this.setControlSize(a)},setImage:function(a){this.imagesOn[0]=a;this.imagesOff[0]=a;this.refresh()},setTitle:function(a){this.titles[0]=a;this.refresh()},customRefresh:function(c,a,b,f,e,d){Urbex.Util.modifyAlphaImageDiv(c[0],c[0].id,a[0],b[0],e[0],null,null,null,null);c[0].title=f[0]},CLASS_NAME:"Urbex.Control.Eraser"});Urbex.Control.DrawFeature=Urbex.Class(Urbex.Control,{layer:null,callbacks:null,featureAdded:function(){},handlerOptions:null,initialize:function(c,d,b,e,a){Urbex.Control.prototype.initialize.apply(this,[b]);
this.callbacks=Urbex.Util.extend({done:this.drawFeature},this.callbacks);if(a){this.style=Urbex.Util.extend({},Urbex.Feature.Vector.style["default"]);this.style=Urbex.Util.extend(this.style,a)}this.layer=c;this.handler=new d(this,this.callbacks,this.handlerOptions,a)},drawFeature:function(d){var b=new Urbex.Feature.Vector(d,null,this.style);if(this.map.activeView=="OBLIQUE"){b.oblique=true;var c="";switch(b.geometry.CLASS_NAME){case"Urbex.Geometry.Polygon":for(var a=0;a<b.geometry.components[0].components.length;a++){if(c==""){c=b.geometry.components[0].components[a].x+","+-b.geometry.components[0].components[a].y}else{c=c+","+b.geometry.components[0].components[a].x+","+-b.geometry.components[0].components[a].y}}this.requestPoints(c,"TOWORLD","POLYGON",b);break;case"Urbex.Geometry.LineString":for(var a=0;a<b.geometry.components.length;a++){if(c==""){c=b.geometry.components[a].x+","+-b.geometry.components[a].y}else{c=c+","+b.geometry.components[a].x+","+-b.geometry.components[a].y}}this.requestPoints(c,"TOWORLD","LINE",b);
break;case"Urbex.Geometry.Point":c=b.geometry.x+","+-b.geometry.y;this.requestPoints(c,"TOWORLD","POINT",b);break;default:break}}else{switch(b.geometry.CLASS_NAME){case"Urbex.Geometry.Polygon":for(a=0;a<b.geometry.components[0].components.length;a++){b.geometry.components[0].components[a].wx=b.geometry.components[0].components[a].x;b.geometry.components[0].components[a].wy=b.geometry.components[0].components[a].y}break;case"Urbex.Geometry.LineString":for(a=0;a<b.geometry.components.length;a++){b.geometry.components[a].wx=b.geometry.components[a].x;b.geometry.components[a].wy=b.geometry.components[a].y}break;case"Urbex.Geometry.Point":b.geometry.wx=b.geometry.x;b.geometry.wy=b.geometry.y;break;default:break}this.layer.addFeatures([b]);this.featureAdded(b)}},requestPoints:function(k,g,d,l){var c=Urbex.Util.createUniqueID("SrcCtrlRtrnPoint");var e="TransformPoints?usertoken="+this.map.usertoken+"&srs="+this.map.projection+"&id="+this.map.idOblique+"&points="+k+"&function=F"+c+"&type="+g+"&format=js&dtm=yes";
var b=Urbex.Proxy.getUrl(this.map,Urbex.Map.SERVER,Urbex.Proxy.TRANSFORM_POINTS,e);oScript=this.map.createOScript(c,b);var a=this.map;var f=this;if(navigator.appName=="Microsoft Internet Explorer"){if(oScript.readyState=="loaded"){f.responsePoints(d,l,c);oScript.onreadystatechange=null}else{oScript.onreadystatechange=function(){if(oScript.readyState=="loaded"){f.responsePoints(d,l,c);oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(m){f.responsePoints(d,l,c)},false)}},responsePoints:function(geomClass,feature,id){var res=eval("F"+id+"()");var points=res.split(",");this.map.deleteOScript(id);switch(geomClass){case"POLYGON":if(points!=null){var count=0;for(j=0;j<points.length;j+=2){feature.geometry.components[0].components[count].wx=parseFloat(points[j]);feature.geometry.components[0].components[count].wy=parseFloat(points[j+1]);count++}}break;case"LINE":if(points!=null){var count=0;for(j=0;j<points.length;j+=2){feature.geometry.components[count].wx=parseFloat(points[j]);
feature.geometry.components[count].wy=parseFloat(points[j+1]);count++}}break;case"POINT":if(points!=null){feature.geometry.wx=parseFloat(points[0]);feature.geometry.wy=parseFloat(points[1])}break}this.layer.addFeatures([feature]);this.featureAdded(feature)},CLASS_NAME:"Urbex.Control.DrawFeature"});Urbex.Control.GroundLength=Urbex.Class(Urbex.Control,{slideFactor:50,status:"INACTIVE",initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(22,22);this.controlPosition=new Urbex.Pixel(-1-22*8,0);this.titles=[];this.titles[0]="Length on the ground measurement";this.sizes=[];this.sizes[0]=this.size?this.size:new Urbex.Size(22,22);this.positions=[];this.positions[0]=this.position?this.position:new Urbex.Pixel(0,0);this.imagesOn=[];this.imagesOn[0]=this.imageon?this.imageon:Urbex.Util.getImagesLocation()+"groundLength_on.png";this.imagesOff=[];this.imagesOff[0]=this.imageoff?this.imageoff:Urbex.Util.getImagesLocation()+"groundLength_off.png"
},destroy:function(){Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);this.buttons=[];var a=this.addImageButton("Urbex_Control_Ground_Length",this.titles[0],this.imagesOn[0],this.positions[0],this.sizes[0]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDown,this));Urbex.Event.observe(a,"dblclick",Urbex.Function.bindAsEventListener(this.doubleClick,this));Urbex.Event.observe(a,"click",Urbex.Function.bindAsEventListener(this.doubleClick,this));this.refresh();return this.div},doubleClick:function(a){Urbex.Event.stop(a);return false},buttonDown:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}if(this.status!="ON"){this.map.measureObj.offMeasureControls();this.status="ON";this.map.measureObj.measureGroundLength()}else{this.status="OFF";this.map.measureObj.offMeasureControls()}this.refresh()},setMap:function(a){Urbex.Control.prototype.setMap.apply(this,arguments);
if(a.measureObj==null){a.measureObj=new Urbex.Measures(a)}},setPosition:function(a){this.setControlPosition(a)},setSize:function(a){this.sizes[0]=a;this.setControlSize(a)},setImageOn:function(a){this.imagesOn[0]=a;this.refresh()},setImageOff:function(a){this.imagesOff[0]=a;this.refresh()},setTitle:function(a){this.titles[0]=a;this.refresh()},customRefresh:function(d,b,c,g,f,e){var a=this.status;if(a=="ON"){Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],f[0],null,null,null,null)}else{Urbex.Util.modifyAlphaImageDiv(d[0],d[0].id,b[0],c[0],e[0],null,null,null,null)}d[0].title=g[0]},CLASS_NAME:"Urbex.Control.GroundLength"});Urbex.Control.LayerSwitcher=Urbex.Class(Urbex.Control,{activeColor:"white",showLayersState:false,initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(248,175);this.controlPosition=new Urbex.Pixel(-1,200);this.titles=[];this.titles[0]="Show information of layers and overlays";this.titles[1]="Show information of layers and overlays";
this.sizes=[];this.sizes[0]=this.sizelayers?this.sizelayers:new Urbex.Size(248,100);this.sizes[1]=this.sizebutton?this.sizebutton:new Urbex.Size(22,22);this.positions=[];this.positions[0]=this.positionlayers?this.positionlayers:new Urbex.Pixel(0,0);this.positions[1]=this.positionbutton?this.positionbutton:new Urbex.Pixel(-1,0);this.imagesOn=[];this.imagesOn[0]=this.imageopen?this.imageopen:Urbex.Util.getImagesLocation()+"layer-open.png";this.imagesOff=[];this.imagesOff[0]=this.imageclose?this.imageclose:Urbex.Util.getImagesLocation()+"layer-close.png";this.layerStates=[]},destroy:function(){if(this.map){this.map.events.un({addlayer:this.refresh,changelayer:this.refresh,removelayer:this.refresh,changebaselayer:this.refresh,scope:this})}Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);this.buttons=[];var a=this.addDivButton("Urbex_Control_LayerSwitcher_Layers",null,this.positions[0],this.sizes[0]);Urbex.Rico.Corner.round(this.div,{corners:"tl bl tr br",bgColor:"transparent",color:this.activeColor,blend:false});
Urbex.Rico.Corner.changeOpacity(a,0.75);this.map.events.on({addlayer:this.refresh,changelayer:this.refresh,removelayer:this.refresh,changebaselayer:this.refresh,scope:this});a.style.fontFamily="Verdana";a.style.fontWeight="bolder";a.style.fontSize="11px";a.style.textAlign="left";var a=this.addImageButton("Urbex_Control_LayerSwitcher_Button",this.titles[1],this.imagesOn[0],this.positions[1],this.sizes[1]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.switchLayersPanel,this));Urbex.Event.observe(a,"click",this.ignoreEvent);Urbex.Event.observe(a,"dblclick",this.ignoreEvent);this.refresh();return this.div},ignoreEvent:function(a){if(a){Urbex.Event.stop(a)}},switchLayersPanel:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}this.showLayersState=!this.showLayersState;this.refresh()},customRefresh:function(o,e,q,g,c,k){if(this.showLayersState){Urbex.Util.modifyAlphaImageDiv(o[1],o[1].id,e[1],q[1],c[0],null,null,null,null)}else{Urbex.Util.modifyAlphaImageDiv(o[1],o[1].id,e[1],q[1],k[0],null,null,null,null)
}Urbex.Util.modifyElement(o[0],o[0].id,e[0],q[0],null,null,null,null,null);o[1].title=g[1];o[0].style.backgroundColor=this.activeColor;o[0].style.height="auto";o[0].style.width="100%";this.div.style.height="0px";if(this.showLayersState){var p=o[0].getElementsByTagName("div");for(var d=0;d<p.lenght;d++){var f=p[d].getElementsByTagName("input");for(var a=0;a<f.lenght;a++){Urbex.Event.stopObservingElement(f[a])}var m=p[d].getElementsByTagName("span");for(var a=0;a<m.lenght;a++){Urbex.Event.stopObservingElement(m[a])}}o[0].innerHTML="";var b=this.map.layers.slice();if(!this.ascending){b.reverse()}var n=null;var l=null;for(var d=0;d<b.length;d++){if(b[d].isBaseLayer){if(!n){n=this.createLayerContainer("Base Layer",20)}n.appendChild(this.createLayerForm(b[d]))}else{if(!l){l=this.createLayerContainer("Overlay Layer",0)}l.appendChild(this.createLayerForm(b[d]))}}if(n){o[0].appendChild(n)}if(l){o[0].appendChild(l)}for(var d=0;d<this.div.childNodes.length;d++){if(this.div.childNodes[d].nodeType==1&&this.div.childNodes[d]!==this.buttons[1]){this.div.childNodes[d].style.display="block"
}}}else{for(var d=0;d<this.div.childNodes.length;d++){if(this.div.childNodes[d].nodeType==1&&this.div.childNodes[d]!==this.buttons[1]){this.div.childNodes[d].style.display="none"}}}},createLayerContainer:function(a,b){var c=document.createElement("div");c.innerHTML="<div style='font-weight: bold; border-bottom: solid thin black; width: 60%; margin-bottom: 5px;'>"+a+"</div>";c.style.marginBottom=b+"px";c.style.padding="10px 0px";c.style.margin="0px 20px";return c},createLayerForm:function(c){var a=document.createElement("input");a.id="input_"+c.name;a.name=(c.isBaseLayer)?"baseLayers":c.name;a.type=(c.isBaseLayer)?"radio":"checkbox";a.value=c.name;a.checked=a.defaultChecked=(c.isBaseLayer)?(c==this.map.baseLayer):c.getVisibility();a.style.marginRight="10px";if(!c.isBaseLayer&&!c.inRange){a.disabled=true}var b={input:a,layer:c,layerSwitcher:this,onMouseDown:function(f){if(f!=null){if(!Urbex.Event.isLeftClick(f)){return}Urbex.Event.stop(f)}if(this.layer.isBaseLayer){if(!this.input.checked){this.input.checked=!this.input.checked;
this.layerSwitcher.map.setBaseLayer(c,false)}}else{this.input.checked=!this.input.checked;this.layer.setVisibility(this.input.checked);for(var g=0;g<this.layerSwitcher.map.measurePopups.length;g++){if(this.layerSwitcher.map.measurePopups[g]&&this.layerSwitcher.map.measurePopups[g].id.indexOf(this.layer.name)!=-1){if(this.input.checked){this.layerSwitcher.map.measurePopups[g].show()}else{this.layerSwitcher.map.measurePopups[g].hide()}}}}}};Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(b.onMouseDown,b));Urbex.Event.observe(a,"click",this.ignoreEvent);Urbex.Event.observe(a,"dblclick",this.ignoreEvent);var d=document.createElement("span");if(!c.isBaseLayer&&!c.inRange){d.style.color="gray"}else{d.style.color="black"}d.style.cursor="default";d.innerHTML=c.name.substring(0,1).toUpperCase()+c.name.substring(1).toLowerCase();d.style.verticalAlign=(c.isBaseLayer)?"bottom":"baseline";if(c.isBaseLayer||c.inRange){Urbex.Event.observe(d,"mousedown",Urbex.Function.bindAsEventListener(b.onMouseDown,b));
Urbex.Event.observe(d,"click",this.ignoreEvent);Urbex.Event.observe(d,"dblclick",this.ignoreEvent)}var e=document.createElement("div");e.appendChild(a);e.appendChild(d);return e},setPosition:function(a){this.setControlPosition(a)},setButtonPosition:function(a){this.positions[1]=a;this.refresh()},setSize:function(a){this.sizes[0]=a;this.setControlSize(a)},setButtonSize:function(a){this.sizes[1]=a;this.refresh()},setImageOpen:function(a){this.imagesOff[0]=a;this.refresh()},setImageClose:function(a){this.imagesOn[0]=a;this.refresh()},setTitle:function(a){this.titles[1]=a;this.refresh()},CLASS_NAME:"Urbex.Control.LayerSwitcher"});Urbex.Control.Click=Urbex.Class(Urbex.Control,{defaultHandlerOptions:{single:true,"double":false,pixelTolerance:0,stopSingle:false,stopDouble:false},initialize:function(a){this.handlerOptions=Urbex.Util.extend({},this.defaultHandlerOptions);Urbex.Control.prototype.initialize.apply(this,arguments);this.handler=new Urbex.Handler.Click(this,{click:this.trigger},this.handlerOptions)
},trigger:function(a){var b=this.map;var c=function(d){b.events.triggerEvent("locationmeasured",{measure:d[0]})};Urbex.Util.GetWorldCoordinates(this.map,[a.xy],c)},CLASS_NAME:"Urbex.Control.Click"});Urbex.Control.ReturnPoint=Urbex.Class(Urbex.Control,{activeColor:"white",state:false,click:new Urbex.Control.Click(),initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(248,23);this.controlPosition=new Urbex.Pixel(-1,177);this.titles=[];this.titles[0]="Show point coordinates";this.titles[1]="Show point coordinates";this.sizes=[];this.sizes[0]=this.sizelayers?this.sizelayers:new Urbex.Size(248,23);this.sizes[1]=this.sizebutton?this.sizebutton:new Urbex.Size(22,22);this.positions=[];this.positions[0]=this.positionlayers?this.positionlayers:new Urbex.Pixel(0,0);this.positions[1]=this.positionbutton?this.positionbutton:new Urbex.Pixel(-1,0);this.imagesOn=[];this.imagesOn[0]=this.imageopen?this.imageopen:Urbex.Util.getImagesLocation()+"information-open.png";
this.imagesOff=[];this.imagesOff[0]=this.imageclose?this.imageclose:Urbex.Util.getImagesLocation()+"information-close.png";this.layerStates=[]},destroy:function(){if(this.map){this.map.events.un({addlayer:this.refresh,changelayer:this.refresh,removelayer:this.refresh,changebaselayer:this.refresh,scope:this})}this.map.removeControl(this.click);Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(b){this.map.addControl(this.click);Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);this.buttons=[];var a=this.addDivButton("Urbex_Control_ReturnPoint_Panel",null,this.positions[0],this.sizes[0]);Urbex.Rico.Corner.round(this.div,{corners:"tl bl tr br",bgColor:"transparent",color:this.activeColor,blend:false});a.style.cursor="default";Urbex.Rico.Corner.changeOpacity(a,0.75);this.map.events.on({addlayer:this.refresh,changelayer:this.refresh,removelayer:this.refresh,changebaselayer:this.refresh,scope:this});a.innerHTML="Click for a value";a.style.fontFamily="Verdana";a.style.fontWeight="bolder";
a.style.fontSize="11px";a.style.textAlign="left";a.style.padding="0px 10px";a=this.addImageButton("Urbex_Control_ReturnPoint_Button",this.titles[1],this.imagesOn[0],this.positions[1],this.sizes[1]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.switchState,this));Urbex.Event.observe(a,"click",this.ignoreEvent);Urbex.Event.observe(a,"dblclick",this.ignoreEvent);this.map.events.register("locationmeasured",this,this.showClick);this.refresh();return this.div},ignoreEvent:function(a){if(a){Urbex.Event.stop(a)}},switchState:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}this.state=!this.state;if(this.state){this.click.activate();this.buttons[0].innerHTML="Click for a value"}else{this.click.deactivate()}this.refresh()},showClick:function(a){this.buttons[0].innerHTML=a.measure.x+", "+a.measure.y;return true},customRefresh:function(d,a,c,g,f,e){if(this.state){Urbex.Util.modifyAlphaImageDiv(d[1],d[1].id,a[1],c[1],f[0],null,null,null,null)
}else{Urbex.Util.modifyAlphaImageDiv(d[1],d[1].id,a[1],c[1],e[0],null,null,null,null)}Urbex.Util.modifyElement(d[0],d[0].id,a[0],c[0],null,null,null,null,null);d[1].title=g[1];d[0].style.backgroundColor=this.activeColor;d[0].style.height="auto";d[0].style.width=this.controlSize.w-20+"px";this.div.style.height="0px";if(this.positions[1].x>=0){d[0].style.textAlign="right"}else{d[0].style.textAlign="left"}if(this.state){for(var b=0;b<this.div.childNodes.length;b++){if(this.div.childNodes[b].nodeType==1&&this.div.childNodes[b]!==this.buttons[1]){this.div.childNodes[b].style.display="block"}}}else{for(var b=0;b<this.div.childNodes.length;b++){if(this.div.childNodes[b].nodeType==1&&this.div.childNodes[b]!==this.buttons[1]){this.div.childNodes[b].style.display="none"}}}},setPosition:function(a){this.setControlPosition(a)},setButtonPosition:function(a){this.positions[1]=a;this.refresh()},setSize:function(a){this.sizes[0]=a;this.setControlSize(a)},setButtonSize:function(a){this.sizes[1]=a;this.refresh()
},setImageOpen:function(a){this.imagesOff[0]=a;this.refresh()},setImageClose:function(a){this.imagesOn[0]=a;this.refresh()},setTitle:function(a){this.titles[1]=a;this.refresh()},CLASS_NAME:"Urbex.Control.ReturnPoint"});Urbex.Control.ShowStreets=Urbex.Class(Urbex.Control,{slideFactor:50,isTheOverlayVisible:false,layername:"Streets",overlay:"generic",initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(22,22);this.controlPosition=new Urbex.Pixel(-1-22*6,0);this.titles=[];this.titles[0]="Show / hide the streets overlay";this.sizes=[];this.sizes[0]=this.size?this.size:new Urbex.Size(22,22);this.positions=[];this.positions[0]=this.position?this.position:new Urbex.Pixel(0,0);this.imagesOn=[];this.imagesOn[0]=this.image?this.image:Urbex.Util.getImagesLocation()+"streets-close.png";this.imagesOff=[];this.imagesOff[0]=this.image?this.image:Urbex.Util.getImagesLocation()+"streets-open.png"},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);
this.buttons=[];var a=this.addImageButton("Urbex_Control_Area_GetMap",this.titles[0],this.imagesOn[0],this.positions[0],this.sizes[0]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.mouseDown_Callback,this));Urbex.Event.observe(a,"dblclick",Urbex.Function.bindAsEventListener(this.cancelEvent_Callback,this));Urbex.Event.observe(a,"click",Urbex.Function.bindAsEventListener(this.cancelEvent_Callback,this));this.refresh();return this.div},cancelEvent_Callback:function(a){Urbex.Event.stop(a);return false},mouseDown_Callback:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}var c=null;var d=this.map.getLayersBy("name",this.layername);for(var b=0;b<d.length;b++){if(d[b].name==this.layername){c=d[b];break}}if(c){this.map.removeLayer(c,false);this.isTheOverlayVisible=false}else{this.map.addOverlay(this.layername,this.overlay);this.isTheOverlayVisible=true}this.refresh()},setPosition:function(a){this.setControlPosition(a)},setSize:function(a){this.sizes[0]=a;
this.setControlSize(a)},setImageOpen:function(a){this.imagesOff[0]=a;this.refresh()},setImageClose:function(a){this.imagesOn[0]=a;this.refresh()},setTitle:function(a){this.titles[0]=a;this.refresh()},setLayerName:function(a){this.layername=a},setLayerOverlay:function(a){this.overlay=a},customRefresh:function(c,a,b,f,e,d){if(!this.isTheOverlayVisible){Urbex.Util.modifyAlphaImageDiv(c[0],c[0].id,a[0],b[0],e[0],null,null,null,null)}else{Urbex.Util.modifyAlphaImageDiv(c[0],c[0].id,a[0],b[0],d[0],null,null,null,null)}c[0].title=f[0]},CLASS_NAME:"Urbex.Control.ShowStreets"});Urbex.Control.Metadata=Urbex.Class(Urbex.Control,{format:null,isOrtho:false,initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(70,16);this.originalControlSize=this.controlSize;this.controlPosition=new Urbex.Pixel(-30,-35);this.titles=[];this.titles[0]="Date of the image"},destroy:function(){if(this.map){this.map.events.unregister("obliqueloaded",this,this.redraw)
}Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(){Urbex.Control.prototype.draw.apply(this,arguments);this.div.style.border="2px solid black";this.div.style.background="white";this.div.style.fontFamily="Verdana";this.div.style.fontWeight="bolder";this.div.style.fontSize="11px";this.div.style.textAlign="left";this.div.style.padding="0px 10px";this.div.style.cursor="default";this.map.events.register("obliqueloaded",this,this.updateOblique);this.refresh();return this.div},setPosition:function(a){this.setControlPosition(a)},setTitle:function(a){this.titles[0]=a},updateOblique:function(a){this.isOrtho=false;if(a){var b=a.id.substring(a.id.length-6);this.div.innerHTML=b.substring(4,6)+"/"+b.substring(2,4)+"/"+b.substring(0,2)}else{this.div.innerHTML=""}this.div.style.fontSize="11px";if(this.sizeModified){this.sizeModified=false;this.controlSize=this.originalControlSize}if(this.format=="year"){this.controlSize=new Urbex.Size(this.originalControlSize.w-39,this.originalControlSize.h);
this.sizeModified=true}else{if(this.format=="month"){this.controlSize=new Urbex.Size(this.originalControlSize.w-15,this.originalControlSize.h);this.sizeModified=true}}this.refresh()},updateOrtho:function(f,c){this.isOrtho=true;f=(f=="NoData"||f=="?")?"":f;c=(c=="NoData"||c=="?")?"":c;if(f==c||c==""||f==""){var e=(f!="")?f.split("-"):c.split("-");var b=e[2]+"/"+e[1]+"/"+e[0];this.div.innerHTML=b;this.div.style.fontSize="10px";if(this.sizeModified){this.sizeModified=false;this.controlSize=this.originalControlSize}}else{var e=f.split("-");var b=e[2]+"/"+e[1]+"/"+e[0];var d=c.split("-");var a=d[2]+"/"+d[1]+"/"+d[0];this.div.innerHTML=b+" - "+a;this.div.style.fontSize="9px";if(this.originalControlSize.h==this.controlSize.h){this.controlSize=new Urbex.Size(this.originalControlSize.w,this.originalControlSize.h+10)}this.sizeModified=true}if(this.format=="year"){this.controlSize=new Urbex.Size(this.originalControlSize.w-39,this.controlSize.h);this.sizeModified=true}else{if(this.format=="month"){this.controlSize=new Urbex.Size(this.originalControlSize.w-20,this.controlSize.h);
this.sizeModified=true}}this.refresh()},setPosition:function(a){this.setControlPosition(a);this.refresh()},setSize:function(a){this.setControlSize(a);this.refresh()},setTitle:function(a){this.titles[0]=a;this.refresh()},customRefresh:function(l,d,n,g,c,k){this.div.title=g[0];if((this.div.innerHTML=="NoData")||(this.div.innerHTML=="?")||(this.div.innerHTML=="")){this.div.style.visibility="hidden"}else{this.div.style.visibility="visible"}if(this.format&&this.div.innerHTML!=""){var a=2;if(this.format=="year"){if(this.isOrtho){var m=this.div.innerHTML.split("-");this.div.innerHTML="";var f=m[0].split("/").length;switch(f){case 2:a=1;break;case 1:return}for(var b=0;b<m.length;b++){this.div.innerHTML=this.div.innerHTML+m[b].split("/")[a]+" - "}this.div.innerHTML=this.div.innerHTML.substring(0,this.div.innerHTML.length-3)}else{var f=this.div.innerHTML.split("/").length;var e="20";switch(f){case 2:e="";a=1;break;case 1:return}this.div.innerHTML=e+this.div.innerHTML.split("/")[a]}}else{if(this.format=="month"){if(this.isOrtho){var m=this.div.innerHTML.split("-");
var f=m[0].split("/").length;switch(f){case 2:a=1;break;case 1:return}this.div.innerHTML="";for(var b=0;b<m.length;b++){this.div.innerHTML=this.div.innerHTML+m[b].split("/")[a-1]+"/"+m[b].split("/")[a]+" - "}this.div.innerHTML=this.div.innerHTML.substring(0,this.div.innerHTML.length-3)}else{var f=this.div.innerHTML.split("/").length;var e="20";switch(f){case 2:e="";a=1;break;case 1:return}this.div.innerHTML=this.div.innerHTML.split("/")[a-1]+"/"+e+this.div.innerHTML.split("/")[a]}}}}},setFormat:function(a){if(a=="month"||a=="year"){if(a==this.format){return}else{this.format=a}}else{this.format=null}if(this.map.activeView=="OBLIQUE"){if(this.format=="year"){this.controlSize=new Urbex.Size(this.originalControlSize.w-39,this.originalControlSize.h);this.sizeModified=true}else{if(this.format=="month"){this.controlSize=new Urbex.Size(this.originalControlSize.w-15,this.originalControlSize.h);this.sizeModified=true}}}else{if(this.format=="year"){this.controlSize=new Urbex.Size(this.originalControlSize.w-39,this.controlSize.h);
this.sizeModified=true}else{if(this.format=="month"){this.controlSize=new Urbex.Size(this.originalControlSize.w-20,this.controlSize.h);this.sizeModified=true}}}this.refresh()},CLASS_NAME:"Urbex.Control.Metadata"});Urbex.Control.GetMap=Urbex.Class(Urbex.Control,{slideFactor:50,initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(22,22);this.controlPosition=new Urbex.Pixel(-1-22*7,0);this.titles=[];this.titles[0]="Opens new page with the current image of the map";this.sizes=[];this.sizes[0]=this.size?this.size:new Urbex.Size(22,22);this.positions=[];this.positions[0]=this.position?this.position:new Urbex.Pixel(0,0);this.imagesOn=[];this.imagesOn[0]=this.image?this.image:Urbex.Util.getImagesLocation()+"getmap.png";this.imagesOff=[];this.imagesOff[0]=this.image?this.image:Urbex.Util.getImagesLocation()+"getmap.png"},destroy:function(){Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);
this.buttons=[];var a=this.addImageButton("Urbex_Control_Area_GetMap",this.titles[0],this.imagesOn[0],this.positions[0],this.sizes[0]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.buttonDown,this));Urbex.Event.observe(a,"dblclick",Urbex.Function.bindAsEventListener(this.doubleClick,this));Urbex.Event.observe(a,"click",Urbex.Function.bindAsEventListener(this.doubleClick,this));this.refresh();return this.div},doubleClick:function(a){Urbex.Event.stop(a);return false},buttonDown:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}this.map.getMap()},setPosition:function(a){this.setControlPosition(a)},setSize:function(a){this.sizes[0]=a;this.setControlSize(a)},setImage:function(a){this.imagesOn[0]=a;this.imagesOff[0]=a;this.refresh()},setTitle:function(a){this.titles[0]=a;this.refresh()},customRefresh:function(c,a,b,f,e,d){Urbex.Util.modifyAlphaImageDiv(c[0],c[0].id,a[0],b[0],e[0],null,null,null,null);c[0].title=f[0]},CLASS_NAME:"Urbex.Control.GetMap"});
Urbex.Control.Scale=Urbex.Class(Urbex.Control,{maxWidth:100,outUnits:"km",inUnits:"m",TextDiv:null,initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(200,4);this.controlPosition=new Urbex.Pixel(-10,-10);this.titles=[];this.titles[0]="Scale";if(this.borderColor==null){this.borderColor="white"}if(this.textColor==null){this.textColor="white"}if(this.fontFamily==null){this.fontFamily="Verdana"}if(this.fontSize==null){this.fontSize="10px"}},draw:function(){Urbex.Control.prototype.draw.apply(this,arguments);this.div.style.border="1px solid "+this.borderColor;this.div.style.textAlign="center";this.div.style.font="normal normal bold "+this.fontSize+" "+this.fontFamily;this.div.style.color=this.textColor;this.div.style.backgroundColor=this.backgroundColor;this.map.events.register("zoomend",this,this.refresh);this.map.events.register("obliqueloaded",this,this.refresh);if(this.TextDiv==null){var g="float:left; height:100%; width:20%; background:#fff; filter:alpha(opacity=60);-moz-opacity:.60; opacity:.60";
var a="float:left; height:100%; width:20%; background:#000; filter:alpha(opacity=60);-moz-opacity:.60; opacity:.60";var c=document.createElement("div");c.style.cssText=a;this.div.appendChild(c);var b=document.createElement("div");b.style.cssText=g;this.div.appendChild(b);var e=document.createElement("div");e.style.cssText=a;this.div.appendChild(e);var f=document.createElement("div");f.style.cssText=g;this.div.appendChild(f);var d=document.createElement("div");d.style.cssText=a;this.div.appendChild(d);this.TextDiv=document.createElement("div");this.TextDiv.style.cssText="position:absolute; right:0; top: -13px;";this.div.appendChild(this.TextDiv)}this.refresh();return this.div},getResolution:function(f){var c;if(this.map.activeView=="ORTHO"){c=this.map.getResolution();var a=Urbex.Util.SphericalMercatorToWGS84(this.map.center.x,this.map.center.y);if(this.map.projection.match(/^EPSG:3785$/)){c=c*Math.cos(a[1]*(Math.PI/180))}}else{var e=Math.sqrt(Math.pow(f.urx-f.ulx,2)+Math.pow(f.ury-f.uly,2));
var d=Math.sqrt(Math.pow(f.lrx-f.llx,2)+Math.pow(f.lry-f.lly,2));if(this.map.projection.match(/^EPSG:3785$/)){var b=/([NSEW])(([+-])(\d*)(\.\d*)?)[_-]((\d*)(\.\d*)?)/i.exec(this.map.idOblique);if(!b){return this.resolution}e=e*Math.cos(parseFloat(b[6])*(Math.PI/180));d=d*Math.cos(parseFloat(b[6])*(Math.PI/180))}c=(e+d)/(2*f.width);if(!c||isNaN(c)){c=this.resolution}this.resolution=c;c=c*Math.pow(2,4-this.map.zoom)}return c},refresh:function(f){if(f){var c=this.getResolution(f);var k=c*this.maxWidth*Urbex.INCHES_PER_UNIT[this.map.units];var e;if(k>100000){e=this.outUnits}else{e=this.inUnits}var g=k/Urbex.INCHES_PER_UNIT[e];var b=this.getLenght(g);var a=(b*Urbex.INCHES_PER_UNIT[e])/(Urbex.INCHES_PER_UNIT[this.map.units]*c);var l=Math.round(a);if(!isNaN(l)&&isFinite(l)){this.controlSize.w=l}if(!isNaN(b)&&isFinite(b)){this.TextDiv.innerHTML=b+" "+e}Urbex.Control.prototype.refresh.apply(this,arguments);var d=Urbex.Element.getDimensions(this.div).height;if(!isNaN(d)&&isFinite(d)&&d>this.controlSize.h){this.controlSize.w*=2;
this.TextDiv.innerHTML=b*2+" "+e;Urbex.Control.prototype.refresh.apply(this,arguments)}}else{Urbex.Control.prototype.refresh.apply(this,arguments)}},getLenght:function(d){var a=Math.pow(10,parseInt(Math.log(d)/Math.log(10)));var c=parseInt(d/a);var b;if(c>5){b=5}else{if(c>2){b=2}else{b=1}}return b*a},setPosition:function(a){this.setControlPosition(a);this.refresh()},setTitle:function(a){this.titles[0]=a;this.refresh()},customRefresh:function(c,a,b,f,e,d){this.div.title=f[0]},CLASS_NAME:"Urbex.Control.Scale"});Urbex.Control.North=Urbex.Class(Urbex.Control,{slideFactor:50,angle:null,initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(37,37);this.controlPosition=new Urbex.Pixel(123,17);this.titles=[];this.titles[0]="Map orientation";this.titles[1]="Map orientation";this.sizes=[];this.sizes[0]=this.sizebackground?this.sizebackground:new Urbex.Size(37,37);this.sizes[1]=this.sizearrow?this.sizearrow:new Urbex.Size(21,21);
this.positions=[];this.positions[0]=this.positionbackground?this.positionbackground:new Urbex.Pixel(0,0);this.positions[1]=this.positionarrow?this.positionarrow:new Urbex.Pixel(8,8);this.imagesOn=[];this.imagesOn[0]=this.imagebackground?this.imagebackground:Urbex.Util.getImagesLocation()+"north-bg.png";this.imagesOn[1]=this.imagearrow?this.imagearrow:Urbex.Util.getImagesLocation()+"north-arrow.png";this.imagesOff=[];this.imagesOff[0]=this.imagesOn[0];this.imagesOff[1]=this.imagesOn[1];this.angle=0},draw:function(){Urbex.Control.prototype.draw.apply(this,arguments);this.buttons=[];var b=this.addImageButton("Urbex_Control_ChangeOrientation_ground",this.titles[0],this.imagesOn[0],this.positions[0],this.sizes[0]);var a=this.addImageButton("Urbex_Control_ChangeOrientation_ortho",this.titles[1],this.imagesOn[1],this.positions[1],this.sizes[1]);if(Urbex.Util.getBrowserName()!="msie"){b.style.display="none";a.style.display="none";this.canvas=document.createElement("canvas");this.canvas.width=this.controlSize.w;
this.canvas.height=this.controlSize.h;this.div.appendChild(this.canvas)}this.map.events.register("orientationchanged",this,this.OrientationChanged_Callback);this.map.events.register("obliqueloaded",this,this.ObliqueLoaded_Callback);this.refresh();return this.div},OrientationChanged_Callback:function(a){if(this.map.activeView=="ORTHO"){switch(a.orientation){case"NORTH":this.angle=0;break;case"SOUTH":this.angle=Math.PI;break;case"EAST":this.angle=Math.PI*3/2;break;case"WEST":this.angle=Math.PI/2;break;default:this.angle=0;break}}this.refresh()},ObliqueLoaded_Callback:function(d){var b=new Urbex.Pixel(d.width/2,0);var a=new Urbex.Pixel(d.width/2,-d.height);var f=this;var c=function(k,g){f.angle=(360-g)*Math.PI/180;f.refresh()};new Urbex.Measures(this.map).getBearing(a,b,c);if(this.map.isIntelligent&&this.map.zoom<2){var e=new Date().getTime()+300;while(new Date().getTime()<e){}}},setPosition:function(a,b){this.positions[1]=b;this.setControlPosition(a)},setSize:function(a,b){this.sizes[0]=a;
this.sizes[1]=b;this.setControlSize(a)},setImage:function(a,b){this.imagesOn[0]=a;this.imagesOff[0]=a;this.imagesOn[1]=b;this.imagesOff[1]=a;this.refresh()},setTitle:function(a){this.titles[0]=a;this.titles[1]=a;this.refresh()},customRefresh:function(p,k,r,l,f,m){this.div.title=l[0];p[0].title=l[0];p[1].title=l[1];if(this.canvas){Urbex.Util.modifyAlphaImageDiv(p[0],p[0].id,k[0],r[0],f[0],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(p[1],p[1].id,k[1],r[1],f[1],null,null,null,null);this.canvas.width=r[0].w;this.canvas.height=r[0].h;var g=this;var o=p[0].getElementsByTagName("img")[0];var n=p[1].getElementsByTagName("img")[0];if(!o.complete||!n.complete){var c=function(){g.refresh()};setTimeout(c,100);return}var b=this.canvas.getContext("2d");b.save();b.clearRect(0,0,this.controlSize.w,this.controlSize.h);b.drawImage(o,k[0].x,k[0].y,r[0].w,r[0].h);b.translate(k[1].x+r[1].w/2,k[1].y+r[1].h/2);b.rotate(this.angle);b.drawImage(n,-r[1].w/2,-r[1].h/2,r[1].w,r[1].h);b.restore()}else{var d=(this.angle*180/Math.PI)%360;
var e=Math.floor(((d+5)%360)/10);var q=navigator.userAgent.search("MSIE 6")!=-1?".gif":".png";var a;if(e==0){a=f[1].substring(0,f[1].length-4)+q}else{a=f[1].substring(0,f[1].length-4)+"_"+e+q}Urbex.Util.modifyAlphaImageDiv(p[0],p[0].id,k[0],r[0],f[0],null,null,null,null);Urbex.Util.modifyAlphaImageDiv(p[1],p[1].id,k[1],r[1],a,null,null,null,null)}},CLASS_NAME:"Urbex.Control.North"});Urbex.Control.MultiOblique=Urbex.Class(Urbex.Control,{activeColor:"white",isActive:false,initialize:function(a){Urbex.Util.extend(this,a);Urbex.Control.prototype.initialize.apply(this,arguments);this.controlSize=new Urbex.Size(280,175);this.controlPosition=new Urbex.Pixel(-1,243);this.titles=[];this.titles[0]="Show every oblique image covering the center of the current map";this.titles[1]="Show every oblique image covering the center of the current map";this.sizes=[];this.sizes[0]=this.sizelayers?this.sizelayers:new Urbex.Size(280,100);this.sizes[1]=this.sizebutton?this.sizebutton:new Urbex.Size(22,22);this.positions=[];
this.positions[0]=this.positionlayers?this.positionlayers:new Urbex.Pixel(0,0);this.positions[1]=this.positionbutton?this.positionbutton:new Urbex.Pixel(-1,0);this.imagesOn=[];this.imagesOn[0]=this.imageopen?this.imageopen:Urbex.Util.getImagesLocation()+"multiOblique-open.png";this.imagesOff=[];this.imagesOff[0]=this.imageclose?this.imageclose:Urbex.Util.getImagesLocation()+"multiOblique-close.png";this.imagesOff[1]=this.imageinactive?this.imageinactive:Urbex.Util.getImagesLocation()+"multiOblique-inactive.png";this.layerStates=[]},destroy:function(){Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);this.buttons=[];var a=this.addDivButton("Urbex_Control_MultiOblique_Layer",null,this.positions[0],this.sizes[0]);Urbex.Rico.Corner.round(this.div,{corners:"tl bl tr br",bgColor:"transparent",color:this.activeColor,blend:false});Urbex.Rico.Corner.changeOpacity(a,0.75);a.style.fontFamily="Verdana";a.style.fontWeight="bolder";
a.style.fontSize="11px";a.style.textAlign="left";var a=this.addImageButton("Urbex_Control_MultiOblique_Button",this.titles[1],this.imagesOn[0],this.positions[1],this.sizes[1]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.startMultiOblique,this));Urbex.Event.observe(a,"click",this.ignoreEvent);Urbex.Event.observe(a,"dblclick",this.ignoreEvent);this.map.events.register("orientationchanged",this,this.refresh);this.refresh();return this.div},ignoreEvent:function(a){if(a){Urbex.Event.stop(a)}},startMultiOblique:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)||this.map.activeView!="OBLIQUE"){return}Urbex.Event.stop(a)}this.isActive=!this.isActive;if(this.isActive){this.mapOldProperties={};this.mapOldProperties.isIntelligent=this.map.isIntelligent;this.mapOldProperties.multiObliqueMode=this.map.multiObliqueMode;this.map.isIntelligent=false;this.map.multiObliqueMode=true}this.prepareMap()},prepareMap:function(targetOptions){if(this.isActive){for(var i=0;i<this.map.controls.length;
i++){if(this.map.controls[i].CLASS_NAME=="Urbex.Control.ChangeView2"){Urbex.Event.stopObservingElement(this.map.controls[i].buttons[0]);Urbex.Event.stopObservingElement(this.map.controls[i].buttons[1]);break}}var id=Urbex.Util.createUniqueID("startMultiOblique");var coords=this.map.center.x+","+-this.map.center.y;var urlParams="TransformPoints?usertoken="+this.map.usertoken+"&srs="+this.map.projection+"&id="+this.map.idOblique+"&points="+coords+"&function=F"+id+"&type=TOWORLD&format=js&dtm=yes";var url=Urbex.Proxy.getUrl(this,Urbex.Map.SERVER,Urbex.Proxy.TRANSFORM_POINTS,urlParams);var oScript=this.map.createOScript(id,url);var control=this;var res;if(navigator.appName=="Microsoft Internet Explorer"){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");points=res.split(",");control.map.deleteOScript(id);if(points!=null){var center=new Urbex.XY(points[0],points[1]);control.getMultiObliques(center)}oScript.onreadystatechange=null}else{oScript.onreadystatechange=function(){if((oScript.readyState=="loaded")||(oScript.readyState=="complete")){res=eval("F"+id+"()");
points=res.split(",");control.map.deleteOScript(id);if(points!=null){var center=new Urbex.XY(points[0],points[1]);control.getMultiObliques(center)}oScript.onreadystatechange=null}}}}else{oScript.addEventListener("load",function(event){res=eval("F"+id+"()");points=res.split(",");control.map.deleteOScript(id);if(points!=null){var center=new Urbex.XY(points[0],points[1]);control.getMultiObliques(center)}},false)}}else{Urbex.Util.extend(this.map,this.mapOldProperties);for(var i=0;i<this.map.controls.length;i++){if(this.map.controls[i].CLASS_NAME=="Urbex.Control.ChangeView2"){Urbex.Event.stopObservingElement(this.map.controls[i].buttons[0]);Urbex.Event.stopObservingElement(this.map.controls[i].buttons[1]);Urbex.Event.observe(this.map.controls[i].buttons[0],"mousedown",Urbex.Function.bindAsEventListener(this.map.controls[i].buttonDownOrtho,this.map.controls[i]));Urbex.Event.observe(this.map.controls[i].buttons[1],"mousedown",Urbex.Function.bindAsEventListener(this.map.controls[i].buttonDownOblique,this.map.controls[i]));
Urbex.Event.observe(this.map.controls[i].buttons[0],"dblclick",Urbex.Function.bindAsEventListener(this.map.controls[i].doubleClick,this.map.controls[i]));Urbex.Event.observe(this.map.controls[i].buttons[1],"dblclick",Urbex.Function.bindAsEventListener(this.map.controls[i].doubleClick,this.map.controls[i]));Urbex.Event.observe(this.map.controls[i].buttons[0],"click",Urbex.Function.bindAsEventListener(this.map.controls[i].doubleClick,this.map.controls[i]));Urbex.Event.observe(this.map.controls[i].buttons[1],"click",Urbex.Function.bindAsEventListener(this.map.controls[i].doubleClick,this.map.controls[i]));break}}this.refresh()}},getMultiObliques:function(a){var f=Urbex.Util.createUniqueID("getMultiOblique");var b="FindObliques?usertoken="+this.map.usertoken+"&x="+a.x+"&y="+a.y+"&srs="+this.map.projection+"&orient="+this.map.orientation.substring(0,1)+"&format=js&time="+this.map.TIME+"&function=F"+f;var c=Urbex.Proxy.getUrl(this,Urbex.Map.SERVER,Urbex.Proxy.FIND_OBLIQUE,b);var d=this.map.createOScript(f,c);
var e=this;if(navigator.appName=="Microsoft Internet Explorer"){if((d.readyState=="loaded")||(d.readyState=="complete")){e.storeMultiObliques(f);d.onreadystatechange=null}else{d.onreadystatechange=function(){if((d.readyState=="loaded")||(d.readyState=="complete")){e.storeMultiObliques(f);d.onreadystatechange=null}}}}else{d.addEventListener("load",function(g){e.storeMultiObliques(f)},false)}},storeMultiObliques:function(id){var response;try{response=eval("F"+id+"()")}catch(err){response="NOTDEFINED"}if(response.indexOf("ERROR")==-1&&response.indexOf("NOTDEFINED")==-1){var responseArray=response.split(",");this.obliques=new Array();for(var i=0;i<responseArray.length/13;i++){var oblique=new Array();for(var j=0;j<13;j++){oblique[j]=responseArray[i*13+j]}this.obliques[i]=oblique}this.map.deleteOScript(id);this.displayNewOblique(this.obliques[0])}else{this.active=false;Urbex.Util.extend(this.map,this.mapOldProperties)}this.refresh()},customRefresh:function(d,a,c,k,g,e){if(this.map.activeView=="OBLIQUE"){if(this.isActive){Urbex.Util.modifyAlphaImageDiv(d[1],d[1].id,a[1],c[1],g[0],null,null,null,null)
}else{Urbex.Util.modifyAlphaImageDiv(d[1],d[1].id,a[1],c[1],e[0],null,null,null,null)}}else{Urbex.Util.modifyAlphaImageDiv(d[1],d[1].id,a[1],c[1],e[1],null,null,null,null)}Urbex.Util.modifyElement(d[0],d[0].id,a[0],c[0],null,null,null,null,null);d[1].title=k[1];d[0].style.backgroundColor=this.activeColor;d[0].style.height="auto";d[0].style.width="100%";this.div.style.height="0px";if(this.isActive){d[0].innerHTML="";var f=this.createObliquesContainer("Multi Oblique "+this.map.orientation,0);for(var b=0;b<this.obliques.length;b++){f.appendChild(this.createObliqueInput(this.obliques[b]))}if(f){d[0].appendChild(f);d[0].style.padding="0 0 0 10px";document.getElementById("input_"+this.map.idOblique).checked=true}for(var b=0;b<this.div.childNodes.length;b++){if(this.div.childNodes[b].nodeType==1&&this.div.childNodes[b]!==this.buttons[1]){this.div.childNodes[b].style.display="block"}}}else{for(var b=0;b<this.div.childNodes.length;b++){if(this.div.childNodes[b].nodeType==1&&this.div.childNodes[b]!==this.buttons[1]){this.div.childNodes[b].style.display="none"
}}}},createObliquesContainer:function(a,b){var c=document.createElement("div");c.innerHTML="<div style='font-weight: bold; border-bottom: solid thin black; width: 60%; margin-bottom: 5px;'>"+a+"</div>";c.style.marginBottom=b+"px";c.style.padding="10px 0px";c.style.margin="0px";return c},createObliqueInput:function(a){var b=document.createElement("input");b.id="input_"+a[0];b.name="multiObliques";b.type="radio";b.value=a[0];b.style.marginRight="10px";var c={input:b,oblique:a,multiOblique:this,onMouseDown:function(f){if(f!=null){if(!Urbex.Event.isLeftClick(f)){return}Urbex.Event.stop(f)}this.input.checked=true;this.multiOblique.displayNewOblique(a)}};Urbex.Event.observe(b,"mousedown",Urbex.Function.bindAsEventListener(c.onMouseDown,c));Urbex.Event.observe(b,"click",this.ignoreEvent);Urbex.Event.observe(b,"dblclick",this.ignoreEvent);var d=document.createElement("span");d.style.color="black";d.style.cursor="default";d.innerHTML=a[0];d.style.verticalAlign="baseline";Urbex.Event.observe(d,"mousedown",Urbex.Function.bindAsEventListener(c.onMouseDown,c));
Urbex.Event.observe(d,"click",this.ignoreEvent);Urbex.Event.observe(d,"dblclick",this.ignoreEvent);var e=document.createElement("div");e.appendChild(b);e.appendChild(d);return e},setPosition:function(a){this.setControlPosition(a)},setButtonPosition:function(a){this.positions[1]=a;this.refresh()},setSize:function(a){this.sizes[0]=a;this.setControlSize(a)},setButtonSize:function(a){this.sizes[1]=a;this.refresh()},setImageOpen:function(a){this.imagesOff[0]=a;this.refresh()},setImageClose:function(a){this.imagesOn[0]=a;this.refresh()},setTitle:function(a){this.titles[1]=a;this.refresh()},displayNewOblique:function(a){var b={};b.center=new Urbex.XY(a[1],a[2]);this.map.changeOrientation(this.map.orientation,a,{force:true},b)},CLASS_NAME:"Urbex.Control.MultiOblique"});Urbex.Control.Year=Urbex.Class(Urbex.Control,{activeColor:"white",isActive:false,rangeMode:null,yearSelected:"",rangeTopLimit:"",lastYear:"",firstYear:"",initialize:function(c){Urbex.Util.extend(this,c);Urbex.Control.prototype.initialize.apply(this,arguments);
if(this.lastYear<this.firstYear){var b=this.lastYear;this.lastYear=this.firstYear;this.firstYear=b}if(this.lastYear==""){var d=new Date().getFullYear();d=""+d;this.lastYear=Number(d.substring(2,4))}else{this.lastYear=Number((""+this.lastYear).substring(2,4))}if(this.firstYear==""){this.firstYear=4}else{this.firstYear=Number((""+this.firstYear).substring(2,4))}this.controlSize=new Urbex.Size(280,175);this.controlPosition=new Urbex.Pixel(-1,221);this.titles=[];this.titles[0]="Select the year of the map images";this.titles[1]="Select the year of the map images";this.sizes=[];this.sizes[0]=this.sizelayers?this.sizelayers:new Urbex.Size(280,100);this.sizes[1]=this.sizebutton?this.sizebutton:new Urbex.Size(22,22);this.positions=[];this.positions[0]=this.positionlayers?this.positionlayers:new Urbex.Pixel(0,0);this.positions[1]=this.positionbutton?this.positionbutton:new Urbex.Pixel(-1,0);this.imagesOn=[];this.imagesOn[0]=this.imageopen?this.imageopen:Urbex.Util.getImagesLocation()+"year-open.png";
this.imagesOff=[];this.imagesOff[0]=this.imageclose?this.imageclose:Urbex.Util.getImagesLocation()+"year-close.png";this.layerStates=[]},destroy:function(){Urbex.Control.prototype.destroy.apply(this,arguments)},draw:function(b){Urbex.Control.prototype.draw.apply(this,[new Urbex.Pixel(0,0)]);this.buttons=[];var a=this.addDivButton("Urbex_Control_Year_Layer",this.titles[1],this.positions[0],this.sizes[0]);Urbex.Rico.Corner.round(this.div,{corners:"tl bl tr br",bgColor:"transparent",color:this.activeColor,blend:false});Urbex.Rico.Corner.changeOpacity(a,0.75);a.style.fontFamily="Verdana";a.style.fontWeight="bolder";a.style.fontSize="11px";a.style.textAlign="left";var a=this.addImageButton("Urbex_Control_Year_Button",this.titles[1],this.imagesOn[0],this.positions[1],this.sizes[1]);Urbex.Event.observe(a,"mousedown",Urbex.Function.bindAsEventListener(this.startYear,this));Urbex.Event.observe(a,"click",this.ignoreEvent);Urbex.Event.observe(a,"dblclick",this.ignoreEvent);this.setPopupHTML();this.refresh();
return this.div},ignoreEvent:function(a){if(a){Urbex.Event.stop(a)}},startYear:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}this.isActive=!this.isActive;if(this.isActive){if(!this.eventsAttached){this.attachTimelineEvents()}this.setProperPopupHTML()}else{this.map.setView()}this.refresh()},setPopupHTML:function(){var l=this.lastYear-this.firstYear;var d="20";var o=25;if(l>6){d="";o=8}var n=60+8*l;var p=Math.floor((this.sizes[0].w-n)/l+1);var a=document.createElement("div");a.style.width=this.sizes[0].w;a.style.padding="5px";a.style.paddingLeft="15px";var g=new Array();var e=0;g[e++]="<div>";for(var f=this.lastYear;f>this.firstYear;f--){g[e++]="<div id='"+f+"' style='height:10px; width:0px; border: solid 2px gray; float:left; cursor: pointer;'></div>";g[e++]="<div id='"+f+(f-1)+"' style='height:0px; width:"+p+"px; border: solid 2px gray; float:left;'></div>"}g[e++]="<div id='"+this.firstYear+"' style='height:10px; width:0px; border: solid 2px gray; float:left; cursor: pointer;'></div>";
g[e++]="</div>";g[e++]="<br>";g[e++]="<div style='position:absolute; left:0px; margin-top:5px;'>";var m=""+this.lastYear;if(m.length==1){m="0"+m}var k=(l>6)?8:0;g[e++]="<span id='span"+this.lastYear+"'style='cursor: pointer; margin-left:3px; margin-right:"+(p-o-k)+"px;'>20"+m+"</span>";for(var f=this.lastYear-1;f>this.firstYear;f--){var m=""+f;if(m.length==1){m="0"+m}g[e++]="<span id='span"+f+"'style='cursor: pointer; margin-right:"+(p-o)+"px;'>"+d+m+"</span>"}var b=""+this.firstYear;if(b.length==1){b="0"+b}var c=(l>6)?"margin-left:-8px":"";g[e++]="<span id='span"+this.firstYear+"' style='cursor: pointer; "+c+";'>20"+b+"</span>";g[e++]="</div>";g[e++]="<br>";g[e++]="<br>";g[e++]="<input name='yearSelection' id='yearCheck' type='radio' value='year'></input>";g[e++]="<span>Year</span>";g[e++]="&nbsp; &nbsp;";g[e++]="<input name='yearSelection' id='rangeCheck' type='radio' value='range'></input>";g[e++]="<span>Range</span>";g[e++]="&nbsp; &nbsp;";g[e++]="<input name='yearSelection' id='bestCheck' type='radio' value='best'></input>";
g[e++]="<span>Best</span>";a.innerHTML=g.join("");this.buttons[0].appendChild(a)},setProperPopupHTML:function(k){this.rangeMode=null;this.yearSelected="";this.rangeTopLimit="";this.restartTimeLine();if(this.map.TIME==""){this.yearSelected="";this.rangeTopLimit="";this.bestMode=true;document.getElementById("bestCheck").checked=true;return}var f=this.map.TIME.split("-");if(f.length>1){var e=f[0].substring(2,4);var d=f[1].substring(2,4);if(e==d){var g=Number(e);this.rangeMode=false;this.yearSelected=""+g;if(g>this.lastYear){this.yearSelected=""+this.lastYear}else{if(g<this.firstYear){this.yearSelected=""+this.firstYear}}this.setTimeLineMarkerOn(document.getElementById(this.yearSelected));document.getElementById("yearCheck").checked=true}else{var c=Number(e);var b=Number(d);if(c<b){this.yearSelected=""+c;this.rangeTopLimit=""+b;if(c<this.firstYear){this.yearSelected=""+this.firstYear}if(b>this.lastYear){this.rangeTopLimit=""+this.lastYear}}else{this.yearSelected=""+b;this.rangeTopLimit=""+c;
if(b<this.firstYear){this.yearSelected=""+this.firstYear}if(c>this.lastYear){this.rangeTopLimit=""+this.lastYear}}this.rangeMode=true;this.setTimeLineMarkerOn(document.getElementById(this.yearSelected));this.setTimeLineMarkerOn(document.getElementById(this.rangeTopLimit));this.setTimeLineIntervalOn(this.yearSelected,this.rangeTopLimit);document.getElementById("rangeCheck").checked=true}}else{this.rangeMode=true;var a=Number(f[0].substring(2,4));if(a>this.lastYear){this.rangeTopLimit=""+this.lastYear}else{if(a<this.firstYear){this.rangeTopLimit=""+this.firstYear}else{this.rangeTopLimit=""+a}}this.yearSelected=""+this.firstYear;this.setTimeLineMarkerOn(document.getElementById(this.yearSelected));this.setTimeLineMarkerOn(document.getElementById(this.rangeTopLimit));this.setTimeLineIntervalOn(this.yearSelected,this.rangeTopLimit);document.getElementById("rangeCheck").checked=true}},attachTimelineEvents:function(a){for(var l=this.lastYear;l>=this.firstYear;l--){var k=document.getElementById(""+l);
var b=document.getElementById("span"+l);var c={control:this,yearMarker:k};Urbex.Event.observe(k,"mousedown",Urbex.Function.bindAsEventListener(this.processClick,c));Urbex.Event.observe(k,"click",this.ignoreEvent);Urbex.Event.observe(k,"dblclick",this.ignoreEvent);Urbex.Event.observe(b,"mousedown",Urbex.Function.bindAsEventListener(this.processClick,c));Urbex.Event.observe(b,"click",this.ignoreEvent);Urbex.Event.observe(b,"dblclick",this.ignoreEvent)}var m=document.getElementById("yearCheck");var n=document.getElementById("rangeCheck");var e=document.getElementById("bestCheck");var g={control:this,radioButton:m};Urbex.Event.observe(m,"mousedown",Urbex.Function.bindAsEventListener(this.processRadioClick,g));Urbex.Event.observe(m,"click",this.ignoreEvent);Urbex.Event.observe(m,"dblclick",this.ignoreEvent);var f={control:this,radioButton:n};Urbex.Event.observe(n,"mousedown",Urbex.Function.bindAsEventListener(this.processRadioClick,f));Urbex.Event.observe(n,"click",this.ignoreEvent);Urbex.Event.observe(n,"dblclick",this.ignoreEvent);
var d={control:this,radioButton:e};Urbex.Event.observe(e,"mousedown",Urbex.Function.bindAsEventListener(this.processRadioClick,d));Urbex.Event.observe(e,"click",this.ignoreEvent);Urbex.Event.observe(e,"dblclick",this.ignoreEvent);this.eventsAttached=true},processRadioClick:function(a){if(a!=null){if(!Urbex.Event.isLeftClick(a)){return}Urbex.Event.stop(a)}var d=this.radioButton.id;var b=this.control;if(d=="rangeCheck"){b.rangeMode=true;b.bestMode=false}else{if(d=="yearCheck"){b.rangeTopLimit="";b.restartTimeLine();if(b.bestMode){b.yearSelected=""+b.lastYear}b.setTimeLineMarkerOn(document.getElementById(b.yearSelected));b.rangeMode=false;b.bestMode=false;var c=b.yearSelected;if(c.length==1){c="0"+c}b.map.TIME="20"+c+"-20"+c}else{b.bestMode=true;b.rangeMode=false;b.rangeTopLimit="";b.yearSelected="";b.restartTimeLine();b.map.TIME=""}}this.radioButton.checked=true},processClick:function(b){if(b!=null){if(!Urbex.Event.isLeftClick(b)){return}Urbex.Event.stop(b)}var f=this.yearMarker;var d=this.control;
if(d.bestMode){return}var c=f.id;if(d.rangeMode){if(d.yearSelected==""){d.yearSelected=c;d.setTimeLineMarkerOn(f)}else{if(d.yearSelected==c){if(d.rangeTopLimit!=""){d.setTimeLineIntervalOff(d.yearSelected,d.rangeTopLimit);d.setTimeLineMarkerOff(f);d.yearSelected=d.rangeTopLimit;d.rangeTopLimit=""}else{d.yearSelected="";d.setTimeLineMarkerOff(f)}}else{if(d.rangeTopLimit==""){if(parseInt(c)<parseInt(d.yearSelected)){d.rangeTopLimit=d.yearSelected;d.yearSelected=c}else{d.rangeTopLimit=c}d.setTimeLineMarkerOn(f);d.setTimeLineIntervalOn(d.yearSelected,d.rangeTopLimit);var e=d.yearSelected;var a=d.rangeTopLimit;if(e.length==1){e="0"+e}if(a.length==1){a="0"+a}d.map.TIME="20"+a+"-20"+e}else{if(parseInt(d.rangeTopLimit)==parseInt(c)){d.setTimeLineMarkerOff(f);d.setTimeLineIntervalOff(d.yearSelected,d.rangeTopLimit);d.rangeTopLimit=""}else{if(parseInt(c)<parseInt(d.yearSelected)){d.yearSelected=c;d.setTimeLineMarkerOn(f);d.setTimeLineIntervalOn(d.yearSelected,d.rangeTopLimit);var e=d.yearSelected;
var a=d.rangeTopLimit;if(e.length==1){e="0"+e}if(a.length==1){a="0"+a}d.map.TIME="20"+a+"-20"+e}else{if(parseInt(c)>parseInt(d.rangeTopLimit)){d.rangeTopLimit=c;d.setTimeLineMarkerOn(f);d.setTimeLineIntervalOn(d.yearSelected,d.rangeTopLimit);var e=d.yearSelected;var a=d.rangeTopLimit;if(e.length==1){e="0"+e}if(a.length==1){a="0"+a}d.map.TIME="20"+a+"-20"+e}else{d.setTimeLineMarkerOff(document.getElementById(d.rangeTopLimit));d.setTimeLineIntervalOff(c,d.rangeTopLimit);d.rangeTopLimit=c;var e=d.yearSelected;var a=d.rangeTopLimit;if(e.length==1){e="0"+e}if(a.length==1){a="0"+a}d.map.TIME="20"+a+"-20"+e}}}}}}}else{if(d.yearSelected!=""){d.setTimeLineMarkerOff(document.getElementById(d.yearSelected))}d.yearSelected=c;d.setTimeLineMarkerOn(f);var e=d.yearSelected;if(e.length==1){e="0"+e}d.map.TIME="20"+e+"-20"+e}},setTimeLineMarkerOff:function(a){a.style.borderColor="gray";document.getElementById("span"+a.id).style.color="black"},setTimeLineMarkerOn:function(a){a.style.borderColor="#f1bf29";
document.getElementById("span"+a.id).style.color="#f1bf29"},setTimeLineIntervalOn:function(b,e){var c=parseInt(b);var d=parseInt(e);for(var a=d;a>c;a--){var f=""+a+""+(a-1);document.getElementById(f).style.borderColor="#f1bf29";if(a-1>c){this.setTimeLineMarkerOn(document.getElementById(a-1))}}},setTimeLineIntervalOff:function(b,e){var c=parseInt(b);var d=parseInt(e);for(var a=d;a>c;a--){var f=""+a+""+(a-1);document.getElementById(f).style.borderColor="gray";if(a-1>c){this.setTimeLineMarkerOff(document.getElementById(a-1))}}},restartTimeLine:function(){this.setTimeLineIntervalOff(this.firstYear,this.lastYear);this.setTimeLineMarkerOff(document.getElementById(this.firstYear));this.setTimeLineMarkerOff(document.getElementById(this.lastYear))},customRefresh:function(d,a,c,g,f,e){if(this.isActive){Urbex.Util.modifyAlphaImageDiv(d[1],d[1].id,a[1],c[1],f[0],null,null,null,null)}else{Urbex.Util.modifyAlphaImageDiv(d[1],d[1].id,a[1],c[1],e[0],null,null,null,null)}Urbex.Util.modifyElement(d[0],d[0].id,a[0],c[0],null,null,null,null,null);
d[1].title=g[1];d[0].style.backgroundColor=this.activeColor;d[0].style.height="auto";d[0].style.width="100%";this.div.style.height="0px";if(this.isActive){for(var b=0;b<this.div.childNodes.length;b++){if(this.div.childNodes[b].nodeType==1&&this.div.childNodes[b]!==this.buttons[1]){this.div.childNodes[b].style.display="block"}}}else{for(var b=0;b<this.div.childNodes.length;b++){if(this.div.childNodes[b].nodeType==1&&this.div.childNodes[b]!==this.buttons[1]){this.div.childNodes[b].style.display="none"}}}},setPosition:function(a){this.setControlPosition(a)},setButtonPosition:function(a){this.positions[1]=a;this.refresh()},setSize:function(a){this.sizes[0]=a;this.setControlSize(a)},setButtonSize:function(a){this.sizes[1]=a;this.refresh()},setImageOpen:function(a){this.imagesOff[0]=a;this.refresh()},setImageClose:function(a){this.imagesOn[0]=a;this.refresh()},setTitle:function(a){this.titles[1]=a;this.refresh()},CLASS_NAME:"Urbex.Control.Year"});