/*
 * deCarta JavaScript Mapping API
 * Copyright 2006-2009 deCarta. All rights reserved.
 * version DDS 4.4.2sp03
 *
 * Bundles:
 *   ExplorerCanvas
 *   Project: http://excanvas.sourceforge.net/
 *   License: Apache 2.0
 *   License Location: http://excanvas.sourceforge.net/COPYING
 *
 *   Sarissa
 *   Project: http://dev.abiss.gr/sarissa/
 *   License: Apache 2.0
 *   License Location: http://dev.abiss.gr/sarissa/licenses/asl.txt
 */
if(!document.createElement("canvas").getContext){(function(){var ab=Math;
var r=ab.round;
var q=ab.sin;
var D=ab.cos;
var J=ab.abs;
var P=ab.sqrt;
var d=10;
var g=d/2;
function C(){return this.context_||(this.context_=new F(this))}var w=Array.prototype.slice;
function k(j,m,p){var i=w.call(arguments,2);
return function()
{return j.apply(m,i.concat(w.call(arguments)))}}function af(i){return String(i).replace(/&/g,"&amp;").replace(/"/g,"&quot;")
}
function T(j){if(!j.namespaces.g_vml_){j.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML")}if(!j.namespaces.g_o_){j.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML")}if(!j.styleSheets.ex_canvas_){var i=j.createStyleSheet();
i.owningElement.id="ex_canvas_";
i.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}"}}T(document);
var f={init:function(i){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var j=i||document;
j.createElement("canvas");
j.attachEvent("onreadystatechange",k(this.init_,this,j))}},init_:function(p){var m=p.getElementsByTagName("canvas");
for(var j=0;
j<m.length;
j++){this.initElement(m[j])}},initElement:function(j){if(!j.getContext){j.getContext=C;
T(j.ownerDocument);
j.innerHTML="";
j.attachEvent("onpropertychange",B);
j.attachEvent("onresize",X);
var i=j.attributes;
if(i.width&&i.width.specified){j.style.width=i.width.nodeValue+"px"}else{j.width=j.clientWidth}if(i.height&&i.height.specified){j.style.height=i.height.nodeValue+"px"}else{j.height=j.clientHeight}}return j}};
function B(j){var i=j.srcElement;
switch(j.propertyName){case"width":i.getContext().clearRect();
i.style.width=i.attributes.width.nodeValue+"px";
i.firstChild.style.width=i.clientWidth+"px";
break;
case"height":i.getContext().clearRect();
i.style.height=i.attributes.height.nodeValue+"px";
i.firstChild.style.height=i.clientHeight+"px";
break}}function X(j){var i=j.srcElement;
if(i.firstChild){i.firstChild.style.width=i.clientWidth+"px";
i.firstChild.style.height=i.clientHeight+"px"}}f.init();
var o=[];
for(var ae=0;
ae<16;
ae++){for(var ad=0;
ad<16;
ad++){o[ae*16+ad]=ae.toString(16)+ad.toString(16)}}function E(){return[[1,0,0],[0,1,0],[0,0,1]]}function L(p,m){var j=E();
for(var i=0;
i<3;
i++){for(var ah=0;
ah<3;
ah++){var Z=0;
for(var ag=0;
ag<3;
ag++){Z+=p[i][ag]*m[ag][ah]}j[i][ah]=Z}}return j}function z(j,i){i.fillStyle=j.fillStyle;
i.lineCap=j.lineCap;
i.lineJoin=j.lineJoin;
i.lineWidth=j.lineWidth;
i.miterLimit=j.miterLimit;
i.shadowBlur=j.shadowBlur;
i.shadowColor=j.shadowColor;
i.shadowOffsetX=j.shadowOffsetX;
i.shadowOffsetY=j.shadowOffsetY;
i.strokeStyle=j.strokeStyle;
i.globalAlpha=j.globalAlpha;
i.font=j.font;
i.textAlign=j.textAlign;
i.textBaseline=j.textBaseline;
i.arcScaleX_=j.arcScaleX_;
i.arcScaleY_=j.arcScaleY_;
i.lineScale_=j.lineScale_}var b={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000000",blanchedalmond:"#FFEBCD",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#00FFFF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgreen:"#006400",darkgrey:"#A9A9A9",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",grey:"#808080",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgreen:"#90EE90",lightgrey:"#D3D3D3",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#FF00FF",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",oldlace:"#FDF5E6",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",whitesmoke:"#F5F5F5",yellowgreen:"#9ACD32"};
function O(j){var p=j.indexOf("(",3);
var i=j.indexOf(")",p+1);
var m=j.substring(p+1,i).split(",");
if(m.length==4&&j.substr(3,1)=="a"){alpha=Number(m[3])}else{m[3]=1}return m}function c(i){return parseFloat(i)/100}function v(j,m,i){return Math.min(i,Math.max(m,j))}function K(ah){var m,j,i;
h=parseFloat(ah[0])/360%360;
if(h<0){h++}s=v(c(ah[1]),0,1);
l=v(c(ah[2]),0,1);
if(s==0){m=j=i=l}else{var Z=l<0.5?l*(1+s):l+s-l*s;
var ag=2*l-Z;
m=a(ag,Z,h+1/3);
j=a(ag,Z,h);
i=a(ag,Z,h-1/3)}return"#"+o[Math.floor(m*255)]+o[Math.floor(j*255)]+o[Math.floor(i*255)]}function a(j,i,m){if(m<0){m++}if(m>1){m--}if(6*m<1){return j+(i-j)*6*m}else{if(2*m<1){return i}else{if(3*m<2){return j+(i-j)*(2/3-m)*6}else{return j}}}}function H(j){var ag,Z=1;
j=String(j);
if(j.charAt(0)=="#"){ag=j}else{if(/^rgb/.test(j)){var p=O(j);
var ag="#",ah;
for(var m=0;
m<3;
m++){if(p[m].indexOf("%")!=-1){ah=Math.floor(c(p[m])*255)}else{ah=Number(p[m])}ag+=o[v(ah,0,255)]}Z=p[3]}else{if(/^hsl/.test(j)){var p=O(j);
ag=K(p);
Z=p[3]}else{ag=b[j]||j}}}return{color:ag,alpha:Z}}var t={style:"normal",variant:"normal",weight:"normal",size:10,family:"sans-serif"};
var N={};
function G(i){if(N[i]){return N[i]}var p=document.createElement("div");
var m=p.style;
try{m.font=i}catch(j){}return N[i]={style:m.fontStyle||t.style,variant:m.fontVariant||t.variant,weight:m.fontWeight||t.weight,size:m.fontSize||t.size,family:m.fontFamily||t.family}}function y(m,j){var i={};
for(var ah in m){i[ah]=m[ah]}var ag=parseFloat(j.currentStyle.fontSize),Z=parseFloat(m.size);
if(typeof m.size=="number"){i.size=m.size}else{if(m.size.indexOf("px")!=-1){i.size=Z}else{if(m.size.indexOf("em")!=-1){i.size=ag*Z}else{if(m.size.indexOf("%")!=-1){i.size=(ag/100)*Z}else{if(m.size.indexOf("pt")!=-1){i.size=ag*(4/3)*Z}else{i.size=ag}}}}}i.size*=0.981;
return i}function ac(i){return i.style+" "+i.variant+" "+i.weight+" "+i.size+"px "+i.family}function U(i){switch(i){case"butt":return"flat";
case"round":return"round";
case"square":default:return"square"}}function F(j){this.m_=E();
this.mStack_=[];
this.aStack_=[];
this.currentPath_=[];
this.strokeStyle="#000";
this.fillStyle="#000";
this.lineWidth=1;
this.lineJoin="miter";
this.lineCap="butt";
this.miterLimit=d*1;
this.globalAlpha=1;
this.font="10px sans-serif";
this.textAlign="left";
this.textBaseline="alphabetic";
this.canvas=j;
var i=j.ownerDocument.createElement("div");
i.style.width=j.clientWidth+"px";
i.style.height=j.clientHeight+"px";
i.style.overflow="hidden";
i.style.position="absolute";
j.appendChild(i);
this.element_=i;
this.arcScaleX_=1;
this.arcScaleY_=1;
this.lineScale_=1}var u=F.prototype;
u.clearRect= function(){if(this.textMeasureEl_){this.textMeasureEl_.removeNode(true);
this.textMeasureEl_=null}this.element_.innerHTML=""};
u.beginPath= function(){this.currentPath_=[]};
u.moveTo= function(j,i){var m=this.getCoords_(j,i);
this.currentPath_.push({type:"moveTo",x:m.x,y:m.y});
this.currentX_=m.x;
this.currentY_=m.y};
u.lineTo= function(j,i){var m=this.getCoords_(j,i);
this.currentPath_.push({type:"lineTo",x:m.x,y:m.y});
this.currentX_=m.x;
this.currentY_=m.y};
u.bezierCurveTo= function(m,j,ak,aj,ai,ag){var i=this.getCoords_(ai,ag);
var ah=this.getCoords_(m,j);
var Z=this.getCoords_(ak,aj);
M(this,ah,Z,i)};
function M(i,Z,m,j){i.currentPath_.push({type:"bezierCurveTo",cp1x:Z.x,cp1y:Z.y,cp2x:m.x,cp2y:m.y,x:j.x,y:j.y});
i.currentX_=j.x;
i.currentY_=j.y}u.quadraticCurveTo= function(ai,m,j,i){var ah=this.getCoords_(ai,m);
var ag=this.getCoords_(j,i);
var aj={x:this.currentX_+2/3*(ah.x-this.currentX_),y:this.currentY_+2/3*(ah.y-this.currentY_)};
var Z={x:aj.x+(ag.x-this.currentX_)/3,y:aj.y+(ag.y-this.currentY_)/3};
M(this,aj,Z,ag)};
u.arc= function(al,aj,ak,ag,j,m){ak*=d;
var ap=m?"at":"wa";
var am=al+D(ag)*ak-g;
var ao=aj+q(ag)*ak-g;
var i=al+D(j)*ak-g;
var an=aj+q(j)*ak-g;
if(am==i&&!m){am+=0.125}var Z=this.getCoords_(al,aj);
var ai=this.getCoords_(am,ao);
var ah=this.getCoords_(i,an);
this.currentPath_.push({type:ap,x:Z.x,y:Z.y,radius:ak,xStart:ai.x,yStart:ai.y,xEnd:ah.x,yEnd:ah.y})};
u.rect= function(m,j,i,p){this.moveTo(m,j);
this.lineTo(m+i,j);
this.lineTo(m+i,j+p);
this.lineTo(m,j+p);
this.closePath()};
u.strokeRect= function(m,j,i,p){var Z=this.currentPath_;
this.beginPath();
this.moveTo(m,j);
this.lineTo(m+i,j);
this.lineTo(m+i,j+p);
this.lineTo(m,j+p);
this.closePath();
this.stroke();
this.currentPath_=Z};
u.fillRect= function(m,j,i,p){var Z=this.currentPath_;
this.beginPath();
this.moveTo(m,j);
this.lineTo(m+i,j);
this.lineTo(m+i,j+p);
this.lineTo(m,j+p);
this.closePath();
this.fill();
this.currentPath_=Z};
u.createLinearGradient= function(j,p,i,m){var Z=new W("gradient");
Z.x0_=j;
Z.y0_=p;
Z.x1_=i;
Z.y1_=m;
return Z};
u.createRadialGradient= function(p,ag,m,j,Z,i){var ah=new W("gradientradial");
ah.x0_=p;
ah.y0_=ag;
ah.r0_=m;
ah.x1_=j;
ah.y1_=Z;
ah.r1_=i;
return ah};
u.drawImage= function(aq,m){var aj,ah,al,ay,ao,am,at,aA;
var ak=aq.runtimeStyle.width;
var ap=aq.runtimeStyle.height;
aq.runtimeStyle.width="auto";
aq.runtimeStyle.height="auto";
var ai=aq.width;
var aw=aq.height;
aq.runtimeStyle.width=ak;
aq.runtimeStyle.height=ap;
if(arguments.length==3){aj=arguments[1];
ah=arguments[2];
ao=am=0;
at=al=ai;
aA=ay=aw}else{if(arguments.length==5){aj=arguments[1];
ah=arguments[2];
al=arguments[3];
ay=arguments[4];
ao=am=0;
at=ai;
aA=aw}else{if(arguments.length==9){ao=arguments[1];
am=arguments[2];
at=arguments[3];
aA=arguments[4];
aj=arguments[5];
ah=arguments[6];
al=arguments[7];
ay=arguments[8]}else{throw Error("Invalid number of arguments")}}}var az=this.getCoords_(aj,ah);
var p=at/2;
var j=aA/2;
var ax=[];
var i=10;
var ag=10;
ax.push(" <g_vml_:group",' coordsize="',d*i,",",d*ag,'"',' coordorigin="0,0"',' style="width:',i,"px;height:",ag,"px;position:absolute;");
if(this.m_[0][0]!=1||this.m_[0][1]||this.m_[1][1]!=1||this.m_[1][0]){var Z=[];
Z.push("M11=",this.m_[0][0],",","M12=",this.m_[1][0],",","M21=",this.m_[0][1],",","M22=",this.m_[1][1],",","Dx=",r(az.x/d),",","Dy=",r(az.y/d),"");
var av=az;
var au=this.getCoords_(aj+al,ah);
var ar=this.getCoords_(aj,ah+ay);
var an=this.getCoords_(aj+al,ah+ay);
av.x=ab.max(av.x,au.x,ar.x,an.x);
av.y=ab.max(av.y,au.y,ar.y,an.y);
ax.push("padding:0 ",r(av.x/d),"px ",r(av.y/d),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",Z.join(""),", sizingmethod='clip');")}else{ax.push("top:",r(az.y/d),"px;left:",r(az.x/d),"px;")}ax.push(' ">','<g_vml_:image src="',aq.src,'"',' style="width:',d*al,"px;"," height:",d*ay,'px"',' cropleft="',ao/ai,'"',' croptop="',am/aw,'"',' cropright="',(ai-ao-at)/ai,'"',' cropbottom="',(aw-am-aA)/aw,'"'," />","</g_vml_:group>");
this.element_.insertAdjacentHTML("BeforeEnd",ax.join(""))};
u.stroke= function(al){var aj=[];
var Z=false;
var m=10;
var am=10;
aj.push("<g_vml_:shape",' filled="',!!al,'"',' style="position:absolute;width:',m,"px;height:",am,'px;"',' coordorigin="0,0"',' coordsize="',d*m,",",d*am,'"',' stroked="',!al,'"',' path="');
var an=false;
var ag={x:null,y:null};
var ak={x:null,y:null};
for(var ah=0;
ah<this.currentPath_.length;
ah++){var j=this.currentPath_[ah];
var ai;
switch(j.type){case"moveTo":ai=j;
aj.push(" m ",r(j.x),",",r(j.y));
break;
case"lineTo":aj.push(" l ",r(j.x),",",r(j.y));
break;
case"close":aj.push(" x ");
j=null;
break;
case"bezierCurveTo":aj.push(" c ",r(j.cp1x),",",r(j.cp1y),",",r(j.cp2x),",",r(j.cp2y),",",r(j.x),",",r(j.y));
break;
case"at":case"wa":aj.push(" ",j.type," ",r(j.x-this.arcScaleX_*j.radius),",",r(j.y-this.arcScaleY_*j.radius)," ",r(j.x+this.arcScaleX_*j.radius),",",r(j.y+this.arcScaleY_*j.radius)," ",r(j.xStart),",",r(j.yStart)," ",r(j.xEnd),",",r(j.yEnd));
break}if(j){if(ag.x==null||j.x<ag.x){ag.x=j.x}if(ak.x==null||j.x>ak.x){ak.x=j.x}if(ag.y==null||j.y<ag.y){ag.y=j.y}if(ak.y==null||j.y>ak.y){ak.y=j.y}}}aj.push(' ">');
if(!al){A(this,aj)}else{I(this,aj,ag,ak)}aj.push("</g_vml_:shape>");
this.element_.insertAdjacentHTML("beforeEnd",aj.join(""))};
function A(m,ag){var j=H(m.strokeStyle);
var p=j.color;
var Z=j.alpha*m.globalAlpha;
var i=m.lineScale_*m.lineWidth;
if(i<1){Z*=i}ag.push("<g_vml_:stroke",' opacity="',Z,'"',' joinstyle="',m.lineJoin,'"',' miterlimit="',m.miterLimit,'"',' endcap="',U(m.lineCap),'"',' weight="',i,'px"',' color="',p,'" />')}function I(aq,ai,aK,ar){var aj=aq.fillStyle;
var aB=aq.arcScaleX_;
var aA=aq.arcScaleY_;
var j=ar.x-aK.x;
var p=ar.y-aK.y;
if(aj instanceof W){var an=0;
var aF={x:0,y:0};
var ax=0;
var am=1;
if(aj.type_=="gradient"){var al=aj.x0_/aB;
var m=aj.y0_/aA;
var ak=aj.x1_/aB;
var aM=aj.y1_/aA;
var aJ=aq.getCoords_(al,m);
var aI=aq.getCoords_(ak,aM);
var ag=aI.x-aJ.x;
var Z=aI.y-aJ.y;
an=Math.atan2(ag,Z)*180/Math.PI;
if(an<0){an+=360}if(an<0.000001){an=0}}else{var aJ=aq.getCoords_(aj.x0_,aj.y0_);
aF={x:(aJ.x-aK.x)/j,y:(aJ.y-aK.y)/p};
j/=aB*d;
p/=aA*d;
var aD=ab.max(j,p);
ax=2*aj.r0_/aD;
am=2*aj.r1_/aD-ax}var av=aj.colors_;
av.sort(function(aN,i){return aN.offset-i.offset});
var ap=av.length;
var au=av[0].color;
var at=av[ap-1].color;
var az=av[0].alpha*aq.globalAlpha;
var ay=av[ap-1].alpha*aq.globalAlpha;
var aE=[];
for(var aH=0;
aH<ap;
aH++){var ao=av[aH];
aE.push(ao.offset*am+ax+" "+ao.color)}ai.push('<g_vml_:fill type="',aj.type_,'"',' method="none" focus="100%"',' color="',au,'"',' color2="',at,'"',' colors="',aE.join(","),'"',' opacity="',ay,'"',' g_o_:opacity2="',az,'"',' angle="',an,'"',' focusposition="',aF.x,",",aF.y,'" />')}else{if(aj instanceof V){if(j&&p){var ah=-aK.x;
var aC=-aK.y;
ai.push("<g_vml_:fill",' position="',ah/j*aB*aB,",",aC/p*aA*aA,'"',' type="tile"',' src="',aj.src_,'" />')}}else{var aL=H(aq.fillStyle);
var aw=aL.color;
var aG=aL.alpha*aq.globalAlpha;
ai.push('<g_vml_:fill color="',aw,'" opacity="',aG,'" />')}}}u.fill= function(){this.stroke(true)};
u.closePath= function(){this.currentPath_.push({type:"close"})};
u.getCoords_= function(p,j){var i=this.m_;
return{x:d*(p*i[0][0]+j*i[1][0]+i[2][0])-g,y:d*(p*i[0][1]+j*i[1][1]+i[2][1])-g}};
u.save= function(){var i={};
z(this,i);
this.aStack_.push(i);
this.mStack_.push(this.m_);
this.m_=L(E(),this.m_)};
u.restore= function(){if(this.aStack_.length){z(this.aStack_.pop(),this);
this.m_=this.mStack_.pop()}};
function n(i){return isFinite(i[0][0])&&isFinite(i[0][1])&&isFinite(i[1][0])&&isFinite(i[1][1])&&isFinite(i[2][0])&&isFinite(i[2][1])}function aa(j,i,p){if(!n(i)){return}j.m_=i;
if(p){var Z=i[0][0]*i[1][1]-i[0][1]*i[1][0];
j.lineScale_=P(J(Z))}}u.translate= function(m,j){var i=[[1,0,0],[0,1,0],[m,j,1]];
aa(this,L(i,this.m_),false)};
u.rotate= function(j){var p=D(j);
var m=q(j);
var i=[[p,m,0],[-m,p,0],[0,0,1]];
aa(this,L(i,this.m_),false)};
u.scale= function(m,j){this.arcScaleX_*=m;
this.arcScaleY_*=j;
var i=[[m,0,0],[0,j,0],[0,0,1]];
aa(this,L(i,this.m_),true)};
u.transform= function(Z,p,ah,ag,j,i){var m=[[Z,p,0],[ah,ag,0],[j,i,1]];
aa(this,L(m,this.m_),true)};
u.setTransform= function(ag,Z,ai,ah,p,j){var i=[[ag,Z,0],[ai,ah,0],[p,j,1]];
aa(this,i,true)};
u.drawText_= function(am,ak,aj,ap,ai){var ao=this.m_,at=1000,j=0,ar=at,ah={x:0,y:0},ag=[];
var i=y(G(this.font),this.element_);
var p=ac(i);
var au=this.element_.currentStyle;
var Z=this.textAlign.toLowerCase();
switch(Z){case"left":case"center":case"right":break;
case"end":Z=au.direction=="ltr"?"right":"left";
break;
case"start":Z=au.direction=="rtl"?"right":"left";
break;
default:Z="left"}switch(this.textBaseline){case"hanging":case"top":ah.y=i.size/1.75;
break;
case"middle":break;
default:case null:case"alphabetic":case"ideographic":case"bottom":ah.y=-i.size/2.25;
break}switch(Z){case"right":j=at;
ar=0.05;
break;
case"center":j=ar=at/2;
break}var aq=this.getCoords_(ak+ah.x,aj+ah.y);
ag.push('<g_vml_:line from="',-j,' 0" to="',ar,' 0.05" ',' coordsize="100 100" coordorigin="0 0"',' filled="',!ai,'" stroked="',!!ai,'" style="position:absolute;width:1px;height:1px;">');
if(ai){A(this,ag)}else{I(this,ag,{x:-j,y:0},{x:ar,y:i.size})}var an=ao[0][0].toFixed(3)+","+ao[1][0].toFixed(3)+","+ao[0][1].toFixed(3)+","+ao[1][1].toFixed(3)+",0,0";var al=r(aq.x/d)+","+r(aq.y/d);
ag.push('<g_vml_:skew on="t" matrix="',an,'" ',' offset="',al,'" origin="',j,' 0" />','<g_vml_:path textpathok="true" />','<g_vml_:textpath on="true" string="',af(am),'" style="v-text-align:',Z,";font:",af(p),'" /></g_vml_:line>');
this.element_.insertAdjacentHTML("beforeEnd",ag.join(""))};
u.fillText= function(m,i,p,j){this.drawText_(m,i,p,j,false)};
u.strokeText= function(m,i,p,j){this.drawText_(m,i,p,j,true)};
u.measureText= function(m){if(!this.textMeasureEl_){var i='<span style="position:absolute;top:-20000px;left:0;padding:0;margin:0;border:none;white-space:pre;"></span>';
this.element_.insertAdjacentHTML("beforeEnd",i);
this.textMeasureEl_=this.element_.lastChild}var j=this.element_.ownerDocument;
this.textMeasureEl_.innerHTML="";
this.textMeasureEl_.style.font=this.font;
this.textMeasureEl_.appendChild(j.createTextNode(m));
return{width:this.textMeasureEl_.offsetWidth}};
u.clip= function(){};
u.arcTo= function(){};
u.createPattern= function(j,i){return new V(j,i)};
function W(i){this.type_=i;
this.x0_=0;
this.y0_=0;
this.r0_=0;
this.x1_=0;
this.y1_=0;
this.r1_=0;
this.colors_=[]}W.prototype.addColorStop= function(j,i){i=H(i);
this.colors_.push({offset:j,color:i.color,alpha:i.alpha})};
function V(j,i){S(j);
switch(i){case"repeat":case null:case"":this.repetition_="repeat";
break;
case"repeat-x":case"repeat-y":case"no-repeat":this.repetition_=i;
break;
default:Q("SYNTAX_ERR")}this.src_=j.src;
this.width_=j.width;
this.height_=j.height}function Q(i){throw new R(i)}function S(i){if(!i||i.nodeType!=1||i.tagName!="IMG"){Q("TYPE_MISMATCH_ERR")}if(i.readyState!="complete"){Q("INVALID_STATE_ERR")}}function R(i){this.code=this[i];
this.message=i+": DOM Exception "+this.code}var Y=R.prototype=new Error;
Y.INDEX_SIZE_ERR=1;
Y.DOMSTRING_SIZE_ERR=2;
Y.HIERARCHY_REQUEST_ERR=3;
Y.WRONG_DOCUMENT_ERR=4;
Y.INVALID_CHARACTER_ERR=5;
Y.NO_DATA_ALLOWED_ERR=6;
Y.NO_MODIFICATION_ALLOWED_ERR=7;
Y.NOT_FOUND_ERR=8;
Y.NOT_SUPPORTED_ERR=9;
Y.INUSE_ATTRIBUTE_ERR=10;
Y.INVALID_STATE_ERR=11;
Y.SYNTAX_ERR=12;
Y.INVALID_MODIFICATION_ERR=13;
Y.NAMESPACE_ERR=14;
Y.INVALID_ACCESS_ERR=15;
Y.VALIDATION_ERR=16;
Y.TYPE_MISMATCH_ERR=17;
G_vmlCanvasManager=f;
CanvasRenderingContext2D=F;
CanvasGradient=W;
CanvasPattern=V;
DOMException=R})()}function Sarissa(){}Sarissa.VERSION="${project.version}";
Sarissa.PARSED_OK="Document contains no parsing errors";
Sarissa.PARSED_EMPTY="Document is empty";
Sarissa.PARSED_UNKNOWN_ERROR="Not well-formed or other error";
Sarissa.IS_ENABLED_TRANSFORM_NODE=false;
var _sarissa_iNsCounter=0;
var _SARISSA_IEPREFIX4XSLPARAM="";
var _SARISSA_HAS_DOM_IMPLEMENTATION=document.implementation&&true;
var _SARISSA_HAS_DOM_CREATE_DOCUMENT=_SARISSA_HAS_DOM_IMPLEMENTATION&&document.implementation.createDocument;
var _SARISSA_HAS_DOM_FEATURE=_SARISSA_HAS_DOM_IMPLEMENTATION&&document.implementation.hasFeature;
var _SARISSA_IS_MOZ=_SARISSA_HAS_DOM_CREATE_DOCUMENT&&_SARISSA_HAS_DOM_FEATURE;
var _SARISSA_IS_SAFARI=navigator.userAgent.toLowerCase().indexOf("safari")!=-1||navigator.userAgent.toLowerCase().indexOf("konqueror")!=-1;
var _SARISSA_IS_SAFARI_OLD=_SARISSA_IS_SAFARI&&parseInt((navigator.userAgent.match(/AppleWebKit\/(\d+)/)||{})[1])<420;
var _SARISSA_IS_IE=document.all&&window.ActiveXObject&&navigator.userAgent.toLowerCase().indexOf("msie")>-1&&navigator.userAgent.toLowerCase().indexOf("opera")==-1;
var _SARISSA_IS_OPERA=navigator.userAgent.toLowerCase().indexOf("opera")!=-1;
if(!window.Node||!Node.ELEMENT_NODE){Node={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12}}if(_SARISSA_IS_SAFARI_OLD){HTMLHtmlElement=document.createElement("html").constructor;
Node=HTMLElement={};
HTMLElement.prototype=HTMLHtmlElement.__proto__.__proto__;
HTMLDocument=Document=document.constructor;
var x=new DOMParser();
XMLDocument=x.constructor;
Element=x.parseFromString("<Single />","text/xml").documentElement.constructor;
x=null}if(typeof XMLDocument=="undefined"&&typeof Document!="undefined"){XMLDocument=Document}if(_SARISSA_IS_IE){_SARISSA_IEPREFIX4XSLPARAM="xsl:";
var _SARISSA_DOM_PROGID="";
var _SARISSA_XMLHTTP_PROGID="";
var _SARISSA_DOM_XMLWRITER="";
Sarissa.pickRecentProgID= function(f){var d=false,j;
for(var b=0;
b<f.length&&!d;
b++){try{var a=new ActiveXObject(f[b]);
var g=f[b];
d=true}catch(c){j=c}}if(!d){throw"Could not retrieve a valid progID of Class: "+f[f.length-1]+". (original exception: "+j+")"}f=null;
return g};
_SARISSA_DOM_PROGID=null;
_SARISSA_THREADEDDOM_PROGID=null;
_SARISSA_XSLTEMPLATE_PROGID=null;
_SARISSA_XMLHTTP_PROGID=null;
if(!window.XMLHttpRequest){XMLHttpRequest= function(){if(!_SARISSA_XMLHTTP_PROGID){_SARISSA_XMLHTTP_PROGID=Sarissa.pickRecentProgID(["Msxml2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"])}return new ActiveXObject(_SARISSA_XMLHTTP_PROGID)}}Sarissa.getDomDocument= function(d,c){if(!_SARISSA_DOM_PROGID){_SARISSA_DOM_PROGID=Sarissa.pickRecentProgID(["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.3.0","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"])}var a=new ActiveXObject(_SARISSA_DOM_PROGID);
if(c){var b="";
if(d){if(c.indexOf(":")>1){b=c.substring(0,c.indexOf(":"));
c=c.substring(c.indexOf(":")+1)}else{b="a"+(_sarissa_iNsCounter++)}}if(d){a.loadXML("<"+b+":"+c+" xmlns:"+b+'="'+d+'" />')}else{a.loadXML("<"+c+" />")}}return a};
Sarissa.getParseErrorText= function(a){var c=Sarissa.PARSED_OK;
if(a&&a.parseError&&a.parseError.errorCode&&a.parseError.errorCode!=0){c="XML Parsing Error: "+a.parseError.reason+"\nLocation: "+a.parseError.url+"\nLine Number "+a.parseError.line+", Column "+a.parseError.linepos+":\n"+a.parseError.srcText+"\n";
for(var b=0;
b<a.parseError.linepos;
b++){c+="-"}c+="^\n"}else{if(a.documentElement==null){c=Sarissa.PARSED_EMPTY}}return c};
Sarissa.setXpathNamespaces= function(a,b){a.setProperty("SelectionLanguage","XPath");
a.setProperty("SelectionNamespaces",b)};
XSLTProcessor= function(){if(!_SARISSA_XSLTEMPLATE_PROGID){_SARISSA_XSLTEMPLATE_PROGID=Sarissa.pickRecentProgID(["Msxml2.XSLTemplate.6.0","MSXML2.XSLTemplate.3.0"])}this.template=new ActiveXObject(_SARISSA_XSLTEMPLATE_PROGID);
this.processor=null};
XSLTProcessor.prototype.importStylesheet= function(d){if(!_SARISSA_THREADEDDOM_PROGID){_SARISSA_THREADEDDOM_PROGID=Sarissa.pickRecentProgID(["MSXML2.FreeThreadedDOMDocument.6.0","MSXML2.FreeThreadedDOMDocument.3.0"])}d.setProperty("SelectionLanguage","XPath");
d.setProperty("SelectionNamespaces","xmlns:xsl='http://www.w3.org/1999/XSL/Transform'");
var c=new ActiveXObject(_SARISSA_THREADEDDOM_PROGID);
try{c.resolveExternals=true;
c.setProperty("AllowDocumentFunction",true)}catch(b){}if(d.url&&d.selectSingleNode("//xsl:*[local-name() = 'import' or local-name() = 'include']")!=null){c.async=false;
c.load(d.url)}else{c.loadXML(d.xml)}c.setProperty("SelectionNamespaces","xmlns:xsl='http://www.w3.org/1999/XSL/Transform'");
var a=c.selectSingleNode("//xsl:output");
this.outputMethod=a?a.getAttribute("method"):"html";
this.template.stylesheet=c;
this.processor=this.template.createProcessor();
this.paramsSet=[]};
XSLTProcessor.prototype.transformToDocument= function(c){if(_SARISSA_THREADEDDOM_PROGID){this.processor.input=c;
var b=new ActiveXObject(_SARISSA_DOM_PROGID);
this.processor.output=b;
this.processor.transform();
return b}else{if(!_SARISSA_DOM_XMLWRITER){_SARISSA_DOM_XMLWRITER=Sarissa.pickRecentProgID(["Msxml2.MXXMLWriter.6.0","Msxml2.MXXMLWriter.3.0","MSXML2.MXXMLWriter","MSXML.MXXMLWriter","Microsoft.XMLDOM"])}this.processor.input=c;
var b=new ActiveXObject(_SARISSA_DOM_XMLWRITER);
this.processor.output=b;
this.processor.transform();
var a=new ActiveXObject(_SARISSA_DOM_PROGID);
a.loadXML(b.output+"");
return a}};
XSLTProcessor.prototype.transformToFragment= function(j,d){this.processor.input=j;
this.processor.transform();
var g=this.processor.output;
var i=d.createDocumentFragment();
if(this.outputMethod=="text"){i.appendChild(d.createTextNode(g))}else{if(d.body&&d.body.innerHTML){var b=d.createElement("div");
b.innerHTML=g;
while(b.hasChildNodes()){i.appendChild(b.firstChild)}}else{var a=new ActiveXObject(_SARISSA_DOM_PROGID);
if(g.substring(0,5)=="<?xml"){g=g.substring(g.indexOf("?>")+2)}var c="".concat("<my>",g,"</my>");
a.loadXML(c);
var b=a.documentElement;
while(b.hasChildNodes()){i.appendChild(b.firstChild)}}}return i};
XSLTProcessor.prototype.setParameter= function(c,a,b){b=b?b:"";
if(c){this.processor.addParameter(a,b,c)}else{this.processor.addParameter(a,b)}c=""+(c||"");
if(!this.paramsSet[c]){this.paramsSet[c]=new Array()}this.paramsSet[c][a]=b};
XSLTProcessor.prototype.getParameter= function(b,a){b=""+(b||"");
if(this.paramsSet[b]&&this.paramsSet[b][a]){return this.paramsSet[b][a]}else{return null}};
XSLTProcessor.prototype.clearParameters= function(){for(var b in this.paramsSet){for(var a in this.paramsSet[b]){if(b!=""){this.processor.addParameter(a,"",b)}else{this.processor.addParameter(a,"")}}}this.paramsSet=new Array()}}else{if(_SARISSA_HAS_DOM_CREATE_DOCUMENT){Sarissa.__handleLoad__= function(a){Sarissa.__setReadyState__(a,4)};
_sarissa_XMLDocument_onload= function(){Sarissa.__handleLoad__(this)};
Sarissa.__setReadyState__= function(a,b){a.readyState=b;
a.readystate=b;
if(a.onreadystatechange!=null&&typeof a.onreadystatechange=="function"){a.onreadystatechange()}};
Sarissa.getDomDocument= function(c,b){var a=document.implementation.createDocument(c?c:null,b?b:null,null);
if(!a.onreadystatechange){a.onreadystatechange=null}if(!a.readyState){a.readyState=0}a.addEventListener("load",_sarissa_XMLDocument_onload,false);
return a};
if(window.XMLDocument){}else{if(_SARISSA_HAS_DOM_FEATURE&&window.Document&&!Document.prototype.load&&document.implementation.hasFeature("LS","3.0")){Sarissa.getDomDocument= function(c,b){var a=document.implementation.createDocument(c?c:null,b?b:null,null);
return a}}else{Sarissa.getDomDocument= function(c,b){var a=document.implementation.createDocument(c?c:null,b?b:null,null);
if(a&&(c||b)&&!a.documentElement){a.appendChild(a.createElementNS(c,b))}return a}}}}}if(!window.DOMParser){if(_SARISSA_IS_SAFARI){DOMParser= function(){};
DOMParser.prototype.parseFromString= function(b,c){var a=new XMLHttpRequest();
a.open("GET","data:text/xml;charset=utf-8,"+encodeURIComponent(b),false);
a.send(null);
return a.responseXML}}else{if(Sarissa.getDomDocument&&Sarissa.getDomDocument()&&Sarissa.getDomDocument(null,"bar").xml){DOMParser= function(){};
DOMParser.prototype.parseFromString= function(a,c){var b=Sarissa.getDomDocument();
b.loadXML(a);
return b}}}}if((typeof(document.importNode)=="undefined")&&_SARISSA_IS_IE){try{document.importNode= function(c,b){var a;
if(c.nodeName=="#text"){return document.createTextElement(c.data)}else{if(c.nodeName=="tbody"||c.nodeName=="tr"){a=document.createElement("table")}else{if(c.nodeName=="td"){a=document.createElement("tr")}else{if(c.nodeName=="option"){a=document.createElement("select")}else{a=document.createElement("div")}}}if(b){a.innerHTML=c.xml?c.xml:c.outerHTML}else{a.innerHTML=c.xml?c.cloneNode(false).xml:c.cloneNode(false).outerHTML}return a.getElementsByTagName("*")[0]}}}catch(e){}}if(!Sarissa.getParseErrorText){Sarissa.getParseErrorText= function(a){var c=Sarissa.PARSED_OK;
if(!a.documentElement){c=Sarissa.PARSED_EMPTY}else{if(a.documentElement.tagName=="parsererror"){c=a.documentElement.firstChild.data;
c+="\n"+a.documentElement.firstChild.nextSibling.firstChild.data}else{if(a.getElementsByTagName("parsererror").length>0){var b=a.getElementsByTagName("parsererror")[0];
c=Sarissa.getText(b,true)+"\n"}else{if(a.parseError&&a.parseError.errorCode!=0){c=Sarissa.PARSED_UNKNOWN_ERROR}}}}return c}}Sarissa.getText= function(j,b){var f="";
var c=j.childNodes;
for(var d=0;
d<c.length;
d++){var g=c[d];
var a=g.nodeType;
if(a==Node.TEXT_NODE||a==Node.CDATA_SECTION_NODE){f+=g.data}else{if(b==true&&(a==Node.ELEMENT_NODE||a==Node.DOCUMENT_NODE||a==Node.DOCUMENT_FRAGMENT_NODE)){f+=Sarissa.getText(g,true)}}}return f};
if(!window.XMLSerializer&&Sarissa.getDomDocument&&Sarissa.getDomDocument("","foo",null).xml){XMLSerializer= function(){};
XMLSerializer.prototype.serializeToString= function(a){return a.xml}}Sarissa.stripTags= function(a){return a.replace(/<[^>]+>/g,"")};
Sarissa.clearChildNodes= function(a){while(a.firstChild){a.removeChild(a.firstChild)}};
Sarissa.copyChildNodes= function(d,f,g){if(_SARISSA_IS_SAFARI&&f.nodeType==Node.DOCUMENT_NODE){f=f.documentElement}if((!d)||(!f)){throw"Both source and destination nodes must be provided"}if(!g){Sarissa.clearChildNodes(f)}var b=f.nodeType==Node.DOCUMENT_NODE?f:f.ownerDocument;
var a=d.childNodes;
if(typeof(b.importNode)!="undefined"){for(var c=0;
c<a.length;
c++){f.appendChild(b.importNode(a[c],true))}}else{for(var c=0;
c<a.length;
c++){f.appendChild(a[c].cloneNode(true))}}};
Sarissa.moveChildNodes= function(d,f,g){if((!d)||(!f)){throw"Both source and destination nodes must be provided"}if(!g){Sarissa.clearChildNodes(f)}var a=d.childNodes;
if(d.ownerDocument==f.ownerDocument){while(d.firstChild){f.appendChild(d.firstChild)}}else{var b=f.nodeType==Node.DOCUMENT_NODE?f:f.ownerDocument;
if(typeof(b.importNode)!="undefined"){for(var c=0;
c<a.length;
c++){f.appendChild(b.importNode(a[c],true))}}else{for(var c=0;
c<a.length;
c++){f.appendChild(a[c].cloneNode(true))}}Sarissa.clearChildNodes(d)}};
Sarissa.xmlize= function(f,i,d){d=d?d:"";
var g=d+"<"+i+">";
var b=false;
if(!(f instanceof Object)||f instanceof Number||f instanceof String||f instanceof Boolean||f instanceof Date){g+=Sarissa.escape(""+f);
b=true}else{g+="\n";
var a=f instanceof Array;
for(var c in f){g+=Sarissa.xmlize(f[c],(a?'array-item key="'+c+'"':c),d+"   ")}g+=d}return(g+=(i.indexOf(" ")!=-1?"</array-item>\n":"</"+i+">\n"))};
Sarissa.escape= function(a){return a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")};
Sarissa.unescape= function(a){return a.replace(/&apos;/g,"'").replace(/&quot;/g,'"').replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&amp;/g,"&")};
var _XMLSerializer=new XMLSerializer();
Sarissa.serialize= function(a){return _XMLSerializer.serializeToString(a)};
Sarissa.updateCursor= function(b,a){if(b&&b.style&&b.style.cursor!=undefined){b.style.cursor=a}};
Sarissa.updateContentFromURI= function(b,c,g,k,f){try{Sarissa.updateCursor(c,"wait");
var a=new XMLHttpRequest();
a.open("GET",b);
function j(){if(a.readyState==4){Sarissa.updateContentFromNode(a.responseXML,c,g,k)}}a.onreadystatechange=j;
if(f){var d="Sat, 1 Jan 2000 00:00:00 GMT";
a.setRequestHeader("If-Modified-Since",d)}a.send("")}catch(i){Sarissa.updateCursor(c,"auto");
throw i}};
Sarissa.updateContentFromNode= function(f,i,a,g){try{Sarissa.updateCursor(i,"wait");
Sarissa.clearChildNodes(i);
var b=f.nodeType==Node.DOCUMENT_NODE?f:f.ownerDocument;
if(b.parseError&&b.parseError!=0){var d=document.createElement("pre");
d.appendChild(document.createTextNode(Sarissa.getParseErrorText(b)));
i.appendChild(d)}else{if(a){f=a.transformToDocument(f)}if(i.tagName.toLowerCase()=="textarea"||i.tagName.toLowerCase()=="input"){i.value=new XMLSerializer().serializeToString(f)}else{if(f.nodeType==Node.DOCUMENT_NODE||f.ownerDocument.documentElement==f){i.innerHTML=new XMLSerializer().serializeToString(f)}else{i.appendChild(i.ownerDocument.importNode(f,true))}}}if(g){g(f,i)}}catch(c){throw c}finally{Sarissa.updateCursor(i,"auto")}};
if(!_SARISSA_IS_IE){if(_SARISSA_HAS_DOM_CREATE_DOCUMENT){Sarissa.__handleLoad__= function(a){Sarissa.__setReadyState__(a,4)};
function SarissaParseError(){this.errorCode=0}_sarissa_XMLDocument_onload= function(){Sarissa.__handleLoad__(this)};
Sarissa.__setReadyState__= function(a,b){a.readyState=b;
a.readystate=b;
if(a.onreadystatechange!=null&&typeof a.onreadystatechange=="function"){a.onreadystatechange()}};
Sarissa.getDomDocument= function(c,b){var a=document.implementation.createDocument(c?c:null,b?b:null,null);
if(!a.onreadystatechange){a.onreadystatechange=null}if(!a.readyState){a.readyState=0}if(!a.parseError){a.parseError=new SarissaParseError()}a.addEventListener("load",_sarissa_XMLDocument_onload,false);
return a};
if(window.XMLDocument){XMLDocument.prototype._sarissa_load=XMLDocument.prototype.load;
XMLDocument.prototype.load= function(d){var a=Sarissa.getDomDocument();
Sarissa.copyChildNodes(this,a);
this.parseError.errorCode=0;
Sarissa.__setReadyState__(this,1);
try{if(this.async==false&&_SARISSA_SYNC_NON_IMPLEMENTED){var b=new XMLHttpRequest();
b.open("GET",d,false);
b.send(null);
Sarissa.__setReadyState__(this,2);
Sarissa.copyChildNodes(b.responseXML,this);
Sarissa.__setReadyState__(this,3)}else{this._sarissa_load(d)}}catch(c){a.parseError.errorCode=-1}finally{if(!a.documentElement||a.documentElement.tagName=="parsererror"){a.parseError.errorCode=-1}if(this.async==false){Sarissa.__handleLoad__(this)}}return a}}else{if(document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("LS","3.0")){Document.prototype.async=true;
Document.prototype.onreadystatechange=null;
Document.prototype.load= function(g){var b=Sarissa.getDomDocument();
Sarissa.copyChildNodes(this,b,false);
var f=document.implementation.createLSParser(this.async?document.implementation.MODE_ASYNCHRONOUS:document.implementation.MODE_SYNCHRONOUS,null);
if(this.async){var c=this;
f.addEventListener("load",function(i){c.readyState=4;
Sarissa.copyChildNodes(i.newDocument,c,false);
c.onreadystatechange.call()},false)}try{var a=f.parseURI(g);
if(!this.async){Sarissa.copyChildNodes(a,this,false)}}catch(d){this.parseError.errorCode=-1}return b};
Sarissa.getDomDocument= function(c,b){var a=document.implementation.createDocument(c?c:null,b?b:null,null);
if(!a.parseError){a.parseError={errorCode:0}}return a}}else{Sarissa.getDomDocument= function(c,b){var a=document.implementation.createDocument(c?c:null,b?b:null,null);
if(a&&(c||b)&&!a.documentElement){a.appendChild(a.createElementNS(c,b))}if(!a.load){a.load= function(i){var d=document.implementation.createDocument();
Sarissa.copyChildNodes(this,d);
this.parseError={errorCode:0};
Sarissa.__setReadyState__(this,1);
if(this.async==false){var g=new XMLHttpRequest();
g.open("GET",i,false);
g.send(null);
Sarissa.__setReadyState__(this,2);
Sarissa.copyChildNodes(g.responseXML,a);
if(!a.documentElement||a.getElementsByTagName("parsererror").length>0){a.parseError.errorCode=-1}Sarissa.__setReadyState__(this,3);
Sarissa.__setReadyState__(this,4)}else{var f=new XMLHttpRequest();
f.open("GET",i,true);
f.onreadystatechange= function(){if(f.readyState==4){Sarissa.copyChildNodes(f.responseXML,a);
if(!a.documentElement||a.getElementsByTagName("parsererror").length>0){a.parseError.errorCode=-1}}Sarissa.__setReadyState__(a,f.readyState)};
f.send(null)}return d}}return a}}}}}if(_SARISSA_HAS_DOM_FEATURE&&document.implementation.hasFeature("XPath","3.0")){function SarissaNodeList(a){this.length=a}SarissaNodeList.prototype=new Array(0);
SarissaNodeList.prototype.constructor=Array;
SarissaNodeList.prototype.item= function(a){return(a<0||a>=this.length)?null:this[a]};
SarissaNodeList.prototype.expr="";
if(window.XMLDocument&&(!XMLDocument.prototype.setProperty)){XMLDocument.prototype.setProperty= function(a,b){}}Sarissa.setXpathNamespaces= function(j,c){j._sarissa_useCustomResolver=true;
var a=c.indexOf(" ")>-1?c.split(" "):new Array(c);
j._sarissa_xpathNamespaces=new Array(a.length);
for(var d=0;
d<a.length;
d++){var g=a[d];
var k=g.indexOf(":");
var m=g.indexOf("=");
if(k>0&&m>k+1){var f=g.substring(k+1,m);
var b=g.substring(m+2,g.length-1);
j._sarissa_xpathNamespaces[f]=b}else{throw"Bad format on namespace declaration(s) given"}}};
XMLDocument.prototype._sarissa_useCustomResolver=false;
XMLDocument.prototype._sarissa_xpathNamespaces=new Array();
XMLDocument.prototype.selectNodes= function(c,j,a){var f=this;
var b=this._sarissa_useCustomResolver?function(n){var i=f._sarissa_xpathNamespaces[n];
if(i){return i}else{throw"No namespace URI found for prefix: '"+n+"'"}}:this.createNSResolver(this.documentElement);
var m=null;
if(!a){var k=this.evaluate(c,(j?j:this),b,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
var d=new SarissaNodeList(k.snapshotLength);
d.expr=c;
for(var g=0;
g<d.length;
g++){d[g]=k.snapshotItem(g)}m=d}else{m=k=this.evaluate(c,(j?j:this),b,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue}return m};
Element.prototype.selectNodes= function(a){var b=this.ownerDocument;
if(b.selectNodes){return b.selectNodes(a,this)}else{throw"Method selectNodes is only supported by XML Elements"}};
XMLDocument.prototype.selectSingleNode= function(c,b){var a=b?b:null;
return this.selectNodes(c,a,true)};
Element.prototype.selectSingleNode= function(a){var b=this.ownerDocument;
if(b.selectSingleNode){return b.selectSingleNode(a,this)}else{throw"Method selectNodes is only supported by XML Elements"}};
Sarissa.IS_ENABLED_SELECT_NODES=true}if(!Sarissa.IS_ENABLED_TRANSFORM_NODE&&window.XSLTProcessor&&self.XMLElement){XMLElement.prototype.transformNodeToObject= function(c,b){var a=document.implementation.createDocument("","",null);
Sarissa.copyChildNodes(this,a);
a.transformNodeToObject(c,b)};
Document.prototype.transformNodeToObject= function(f,b){var a=null;
try{a=new XSLTProcessor();
if(a.reset){a.importStylesheet(f);
var c=a.transformToFragment(this,b);
Sarissa.copyChildNodes(c,b)}else{a.transformDocument(this,f,b,null)}}catch(d){if(f&&b){throw"Failed to transform document. (original exception: "+d+")"}else{if(!f){throw"No Stylesheet Document was provided. (original exception: "+d+")"}else{if(!b){throw"No Result Document was provided. (original exception: "+d+")"}else{if(a==null){throw"Could not instantiate an XSLTProcessor object. (original exception: "+d+")"}else{throw d}}}}}};
XMLElement.prototype.transformNode= function(b){var a=document.implementation.createDocument("","",null);
Sarissa.copyChildNodes(this,a);
return a.transformNode(b)};
Document.prototype.transformNode= function(f){var a=document.implementation.createDocument("","",null);
this.transformNodeToObject(f,a);
var d=null;
try{var b=new XMLSerializer();
d=b.serializeToString(a)}catch(c){throw"Failed to serialize result document. (original exception: "+c+")"}return d};
Sarissa.IS_ENABLED_TRANSFORM_NODE=true}Sarissa.setXslParameter= function(o,k,m){try{var c=o.getElementsByTagName(_SARISSA_IEPREFIX4XSLPARAM+"param");
var b=c.length;
var n=false;
var a;
if(m){for(var f=0;
f<b&&!n;
f++){if(c[f].getAttribute("name")==k){a=c[f];
while(a.firstChild){a.removeChild(a.firstChild)}if(!m||m==null){}else{if(typeof m=="string"){a.setAttribute("select",m);
n=true}else{if(m.nodeName){a.removeAttribute("select");
a.appendChild(m.cloneNode(true));
n=true}else{if(m.item(0)&&m.item(0).nodeType){for(var d=0;
d<m.length;
d++){if(m.item(d).nodeType){a.appendChild(m.item(d).cloneNode(true))}}n=true}else{throw"Failed to set xsl:param "+k+" (original exception: "+g+")"}}}}}}}return n}catch(g){throw g;
return false}};
var deCarta={};
function GLOBALS(){}GLOBALS.HYBRID="HYBRID";
GLOBALS.STREET="STREET";
GLOBALS.SATELLITE="SATELLITE";
GLOBALS.PAN_PIXEL_DISTANCE=300;
GLOBALS.DEFAULT_MAP_TILE_SIZE=256;
GLOBALS.DEFAULT_MAP_WIDTH="800px";
GLOBALS.DEFAULT_MAP_HEIGHT="500px";
GLOBALS.API_VERSION="4.4.2sp03";
GLOBALS.API_BUILD="$LastChangedRevision: 53002 $";
GLOBALS.API_RELEASECLASS="RELEASE";
GLOBALS.ALLOWDOMEVENTS=true;
GLOBALS.DEBUG_JSON=false;
function Credentials(){}Credentials.url="http://ws.decarta.com/openls/openls";
Credentials.jsonServletName="JSON";
Credentials.clientName="";
Credentials.clientPassword="";
Credentials.configuration="us-carto";
Credentials.transparentConfiguration="transparent-tile";
Credentials.mapType="STREET";
Credentials.ISOCountryCode="US";
Credentials.trafficEnabled=false;
Credentials.rel="4.4.2sp03";
Credentials.dgkey="";
Credentials.imgPath="img/";
Credentials.errorTile=Credentials.imgPath+"tile.png";
Credentials.transparentPNG=Credentials.imgPath+"tile.png";
Credentials.transparentGIF=Credentials.imgPath+"x.gif";
Credentials.infoWindowCloseButton=Credentials.imgPath+"close.png";
Credentials.pinIconPath=Credentials.imgPath+"greenDot.png";
Credentials.zoomUnselectedIconPath=Credentials.imgPath+"zoom.png";
Credentials.zoomSelectedIconPath=Credentials.imgPath+"zoomChecked.png";
Credentials.zoomOutIconPath=Credentials.imgPath+"zoomBottom.png";
Credentials.zoomInIconPath=Credentials.imgPath+"zoomTop.png";
deCarta.AJAXContentLoader={};
deCarta.AJAXContentLoader.load= function(b,g,a){if(a&&a.mode=="iframe"){var c=document.createElement("iframe");
c.style.width=a.height||"0px";
c.style.height=a.width||"0px";
c.style.border="0px";
c.src=b;
if(typeof(g)=="function"){c.onload=g}a.dom.appendChild(c)}else{if(!Utilities.ie){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalPreferencesWrite UniversalBrowserWrite UniversalPreferencesRead UniversalBrowserRead")}catch(d){}}var f=new XMLHttpRequest();
f.open("GET",b,true);
f.onreadystatechange= function(){if(f.readyState==4){if(f.status==200){g(f.responseText)}else{g(f.responseText)}}};
f.send(null)}};
function Address(f,j,c,b,i,g,d,a){if(f||f==0){this.buildingNumber=f}else{this.buildingNumber=""}this.landmark="";
this.street=j||"";
this.streetNameAndNumber="";
this.speedLimit="";
this.countryCode="";
this.countrySubdivision=c||"";
this.countrySecondarySubdivision=b||"";
this.countryTertiarySubdivision="";
this.municipality=i||"";
this.postalCode=g||"";
this.municipalitySubdivision=d||"";
this.locale=a||new Locale("en","US");
this.type="Structured"}Address.prototype.getBuildingNumber= function(){return this.buildingNumber};
Address.prototype.setBuildingNumber= function(a){this.buildingNumber=a};
Address.prototype.getStreet= function(){return this.street};
Address.prototype.setStreet= function(a){this.street=a};
Address.prototype.getCountrySubdivision= function(){return this.countrySubdivision};
Address.prototype.setCountrySubdivision= function(a){this.countrySubdivision=a};
Address.prototype.getCountrySecondarySubdivision= function(){return this.countrySecondarySubdivision};
Address.prototype.setCountrySecondarySubdivision= function(a){this.countrySecondarySubdivision=a};
Address.prototype.getMunicipality= function(){return this.municipality};
Address.prototype.setMunicipality= function(a){this.municipality=a};
Address.prototype.getMunicipalitySubdivision= function(){return this.municipalitySubdivision};
Address.prototype.setMunicipalitySubdivision= function(a){this.municipalitySubdivision=a};
Address.prototype.getPostalCode= function(){return this.postalCode};
Address.prototype.setPostalCode= function(a){this.postalCode=a};
Address.prototype.getLocale= function(){return this.locale};
Address.prototype.setLocale= function(a){this.locale=a};
Address.prototype.toString= function(){var a="";
if(this.buildingNumber!=""){a+=this.buildingNumber+" "}if(this.street!=""){a+=this.street+" "}if(this.municipality!=""){a+=this.municipality+" "}if(this.countrySubdivision!=""){a+=this.countrySubdivision+" "}if(this.postalCode!=""){a+=this.postalCode}return a};
deCarta.Animator= function(){};
deCarta.Animator.prototype.objsToAnimate=null;
deCarta.Animator.prototype.objsType=null;
deCarta.Animator.prototype.scopeObj=null;
deCarta.Animator.prototype.onendCallback=null;
deCarta.Animator.prototype.animation=null;
deCarta.Animator.prototype.animationId=null;
deCarta.Animator.prototype.setObjsToAnimate= function(a){if(!deCarta.Array.isArray(a)){a=[a]}var b;
var g=a[0].type;
var f=["pin"];
var c=f.length;
for(b=0;
b<c;
b++){if(g==f[b]){break}}if(b>=c){throw new Exception("requesting to animate invalid object type: "+this.objsType)}var d=a.length;
for(b=0;
b<d;
b++){if(a[b].type!=g){throw new Exception("obj index: "+b+" is of invalid type: "+a[b].type)}}this.objsType=g;
this.objsToAnimate=a};
deCarta.Animator.prototype.setScopeObj= function(a){this.scopeObj=a};
deCarta.Animator.prototype.setOnendCallback= function(a){if(typeof a!="function"){throw new Exception("deCarta.Animator.setOnendCallback: callback not a function")}this.onendCallback=a};
deCarta.Animator.prototype.setAnimation= function(a){};
deCarta.Array={};
deCarta.Array.isArray= function(a){return Object.prototype.toString.call(a)==="[object Array]"};
deCarta.Array.indexOf= function(d,a,c){var b=d.length;
c=(!c||isNaN(c))?0:c;
c=(c<=0)?0:c;
c=(c>=b-1)?b-1:c;
for(;
c<b;
c++){if(d[c]===a){return c}}return -1};
function BoundingBox(b,a){if(!(b&&(b.lat||b.lat==0)&&(b.lon||b.lon==0))||!(a&&(a.lat||a.lat==0)&&(a.lon||a.lon==0))){throw new Exception("Error instantiating BoundingBox, invalid parameters: "+b+a)}this.minPosition=new Position(Math.min(b.lat,a.lat),Math.min(b.lon,a.lon));
this.maxPosition=new Position(Math.max(b.lat,a.lat),Math.max(b.lon,a.lon));
this.heightInDegrees=this.maxPosition.lat-this.minPosition.lat;
this.widthInDegrees=this.maxPosition.lon-this.minPosition.lon;
this.getUpperLeftPosition= function(){var c=new Position(this.maxPosition.lat,this.minPosition.lon);
return c};
this.getLowerRightPosition= function(){var c=new Position(this.minPosition.lat,this.maxPosition.lon);
return c};
this.getMaxPosition= function(){return this.maxPosition};
this.setMaxPosition= function(d){if(!(d&&(d.lat||d.lat==0)&&(d.lon||d.lon==0))){throw new Exception("setMaxPosition: Error, invalid parameter : "+d)}var c=new Position(this.minPosition.lat,this.minPosition.lon);
this.maxPosition.lat=Math.max(c.lat,d.lat);
this.maxPosition.lon=Math.max(c.lon,d.lon);
this.minPosition.lat=Math.min(c.lat,d.lat);
this.minPosition.lon=Math.min(c.lon,d.lon)};
this.getMinPosition= function(){return this.minPosition};
this.setMinPosition= function(c){if(!(c&&(c.lat||c.lat==0)&&(c.lon||c.lon==0))){throw new Exception("setMaxPosition: Error, invalid parameter : "+c)}var d=new Position(this.maxPosition.lat,this.maxPosition.lon);
this.maxPosition.lat=Math.max(d.lat,c.lat);
this.maxPosition.lon=Math.max(d.lon,c.lon);
this.minPosition.lat=Math.min(d.lat,c.lat);
this.minPosition.lon=Math.min(d.lon,c.lon)};
this.getCenterPosition= function(){var d=parseFloat(this.maxPosition.lat-((this.maxPosition.lat-this.minPosition.lat)/2));
var c=parseFloat(this.maxPosition.lon-((this.maxPosition.lon-this.minPosition.lon)/2));
return new Position(d,c)};
this.getRadius= function(){if(this.heightInDegrees>this.widthInDegrees){return(this.heightInDegrees*111.111)/2}else{return(this.widthInDegrees*111.111)/2}};
this.contains= function(c){if(c.lat>this.minPosition.lat&&c.lon>this.minPosition.lon&&c.lat<this.maxPosition.lat&&c.lon<this.maxPosition.lon){return true}else{return false}};
this.extendedContains= function(c){if(c.lat>this.minPosition.lat-this.heightInDegrees&&c.lon>this.minPosition.lon-this.widthInDegrees&&c.lat<this.maxPosition.lat+this.heightInDegrees&&c.lon<this.maxPosition.lon+this.widthInDegrees){return true}else{return false}};
this.equals= function(c){if(c&&this.minPosition.toString()==c.getMinPosition().toString()&&this.maxPosition.toString()==c.getMaxPosition().toString()){return true}else{return false}};
this.toString= function(){return this.minPosition.toString()+" "+this.maxPosition.toString()}}deCarta.CopyrightMessage= function(a){this.init(a)};
deCarta.CopyrightMessage.prototype.map=null;
deCarta.CopyrightMessage.prototype.type="CopyrightMessage";
deCarta.CopyrightMessage.prototype.frame=null;
deCarta.CopyrightMessage.prototype.cssClass="decarta-copyright";
deCarta.CopyrightMessage.prototype.message=null;
deCarta.CopyrightMessage.prototype.init= function(a){this.message=a};
deCarta.CopyrightMessage.prototype.build= function(){this.frame=document.createElement("DIV");
this.frame.id=this.cssClass;
this.frame.className=this.cssClass;
this.frame.innerHTML=this.message;
Utilities.setUnselectable(this.frame)};
deCarta.CopyrightMessage.prototype.appendThis= function(){if(!this.frame){this.build()}return this.frame};
deCarta.CopyrightMessage.prototype.removeThis= function(){this.map=null;
return this.frame};
deCarta.CopyrightMessage.prototype.position= function(a){this.frame.style.top=(a.height-20)+"px";
this.frame.style.left="1px"};
function DDSShape(){this.borderColor="(0.0.0)";
this.borderColorRed=0;
this.borderColorGreen=0;
this.borderColorBlue=0;
this.borderStyle="SOLID";
this.borderWidth="2";
this.fillColor="(0.0.0)";
this.fillColorRed=0;
this.fillColorBlue=0;
this.fillColorGreen=0;
this.id=null;
this.opacity="65";
this.opacityFloat=0.65;
this.strokeOpacity="65";
this.strokeOpacityFloat=0.65;
this.fillOpacity="65";
this.fillOpacityFloat=0.65;
this.map=null;
this.isVisible=true;
this.rendering=null}DDSShape.prototype.inside=null;
DDSShape.prototype.setBorderColor= function(b){if(!b.match(/\([0-9]+\.[0-9]+\.[0-9]+\)/)){throw new Exception("Error setting RGB value in DDSShape.setBorderColor. Please use format (255.255.255)");
return}this.borderColor=b;
var a=b.replace("(","").replace(")","").split(".");
this.borderColorRed=parseInt(a[0],10);
this.borderColorGreen=parseInt(a[1],10);
this.borderColorBlue=parseInt(a[2],10)};
DDSShape.prototype.getBorderColor= function(){return this.borderColor};
DDSShape.prototype.setBorderStyle= function(a){if(a=="SOLID"||a=="DASH"||a=="DOT"||a=="DASHDOTDOT"||a=="ALTBLACKDASH"||a=="RAIL"||a=="NONE"){this.borderStyle=a}else{throw new Exception("Error setting border style value in DDSShape.setBorderStyle. Please use format SOLID, DASH, DOT, DASHDOTDOT, ALTBLACKDASH, RAIL, NONE");
return}};
DDSShape.prototype.getBorderStyle= function(){return this.borderStyle};
DDSShape.prototype.setBorderWidth= function(a){this.borderWidth=a};
DDSShape.prototype.getBorderWidth= function(){return this.borderWidth};
DDSShape.prototype.setFillColor= function(b){if(!b.match(/\([0-9]+\.[0-9]+\.[0-9]+\)/)){throw new Exception("Error setting RGB value in DDSShape.setColor. Please use format (255.255.255)");
return}this.fillColor=b;
var a=b.replace("(","").replace(")","").split(".");
this.fillColorRed=parseInt(a[0],10);
this.fillColorGreen=parseInt(a[1],10);
this.fillColorBlue=parseInt(a[2],10)};
DDSShape.prototype.getFillColor= function(){return this.fillColor};
DDSShape.prototype.getId= function(){return this.id};
DDSShape.prototype.setOpacity= function(a){var b=parseInt(a,10)/100;
if(isNaN(b)){throw new Exception("DDSShape.prototype.setOpacity: invalid argument of: "+a)}this.opacity=a;
this.opacityFloat=b;
this.strokeOpacityFloat=b;
this.fillOpacityFloat=b};
DDSShape.prototype.getOpacity= function(){return this.opacity};
DDSShape.prototype.setStrokeOpacity= function(a){var b=parseInt(a,10)/100;
if(isNaN(b)){throw new Exception("DDSShape.prototype.setStrokeOpacity: invalid argument of: "+a)}this.strokeOpacity=a;
this.strokeOpacityFloat=b};
DDSShape.prototype.getStrokeOpacity= function(){return this.strokeOpacity};
DDSShape.prototype.setFillOpacity= function(a){var b=parseInt(a,10)/100;
if(isNaN(b)){throw new Exception("DDSShape.prototype.setStrokeOpacity: invalid argument of: "+a)}this.fillOpacity=a;
this.fillOpacityFloat=b};
DDSShape.prototype.getFillOpacity= function(){return this.fillOpacity};
DDSShape.prototype.hide= function(){if(this.isVisible==true){this.isVisible=false;
if(this.map){if(this.map.getShapeRendering()=="client"){this.map.redraw()}else{this.map.reDrawMap()}}}};
DDSShape.prototype.show= function(){if(this.isVisible==false){this.isVisible=true;
if(this.map){if(this.map.getShapeRendering()=="client"){this.map.redraw()}else{this.map.reDrawMap()}}}};
DDSShape.prototype.equals= function(a){if(a&&this.id==a.id){return true}else{return false}};
DDSShape.getMercPixels= function(f,n){if(this.mercPixels[f]){return(this.mercPixels[f])}var a=this.positions;
if(this.generalize){a=Utilities.generalize(a,f,10,n);
this.generalized[f]=a}var g=Utilities.radsPerPixelAtZoomLevel(n,f);
var m=a.length;
var c=[];
for(var j=0;
j<m;
j++){var k=(a[j]);
var b=Math.round(Utilities.lat2pix(k.lat,g));
var d=Math.round(Utilities.lon2pix(k.lon,g));
c[j]=new PixelPoint(d,b)}this.mercPixels[f]=c;
return(this.mercPixels[f])};
function DDSCircle(b,a){this.id=Math.floor(Math.random()*10000000);
this.type="circle";
this.radius=a||new Radius(100,new UOM("M"));
this.position=b}DDSCircle.prototype=new DDSShape();
DDSCircle.prototype.constructor=DDSCircle;
DDSCircle.prototype.setPosition= function(a){this.position=a;
if(this.map!=null&&this.map.getShapeRendering()=="client"){this.map.redraw()}};
DDSCircle.prototype.getPosition= function(){return this.position};
DDSCircle.prototype.setRadius= function(a){this.radius=a;
if(this.map!=null&&this.map.getShapeRendering()=="client"){this.map.redraw()}};
DDSCircle.prototype.getRadius= function(){return this.radius};
DDSCircle.prototype.inside= function(b){var a=deCarta.Math.greatCircleDist(this.position,b,this.radius.uom);
if(a<this.radius.distance){return true}else{return false}};
function DDSLine(a){this.id=Math.floor(Math.random()*10000000);
this.type="line";
this.generalize=true;
this.generalized=[];
this.mercPixels=[];
this.positions=[];
this.width=a||2;
this.VR7="";
this.clip=false;
this.setFillColor("(0.0.0)");
this.setBorderWidth("0")}DDSLine.prototype=new DDSShape();
DDSLine.prototype.constructor=DDSLine;
DDSLine.prototype.setColor= function(a){try{this.setBorderColor(a);
this.setFillColor(a)}catch(b){throw new Exception("Error setting RGB value in DDSLine.setColor. Please use format (255.255.255)")}};
DDSLine.prototype.setPositions= function(a){this.positions=a;
this.generalized=[];
this.mercPixels=[];
if(this.map!=null&&this.map.getShapeRendering()=="client"){this.map.redraw()}};
DDSLine.prototype.getPositions= function(){return this.positions};
DDSLine.prototype.setWidth= function(a){this.width=a};
DDSLine.prototype.getWidth= function(){return this.width};
DDSLine.prototype.setVR7= function(a){this.VR7=a};
DDSLine.prototype.getVR7= function(){return this.VR7};
DDSLine.prototype.setGeneralize= function(a){this.generalize=a};
DDSLine.prototype.getGeneralize= function(){return this.generalize};
DDSLine.prototype.setClip= function(a){this.clip=(a)?true:false};
DDSLine.prototype.getMercPixels=DDSShape.getMercPixels;
DDSLine.prototype.getMercPixelsClipped= function(A,u,b){var H,G;
var n=this.getMercPixels(A,u);
var f=n.length;
if(f<2){return n}var v=[];
for(H=0;
H<f-1;
H++){v[H]=[];
v[H][0]=n[H];
v[H][1]=n[H+1]}var F=v.length;
var J=Utilities.radsPerPixelAtZoomLevel(u,A);
var g=Math.round(Utilities.lat2pix(b.maxPosition.lat,J));
var B=Math.round(Utilities.lat2pix(b.minPosition.lat,J));
var z=Math.round(Utilities.lon2pix(b.maxPosition.lon,J));
var c=Math.round(Utilities.lon2pix(b.minPosition.lon,J));
for(H=0;
H<F;
H++){a(v[H])}var K=[];
var k=0;
var I="oc";
var p="oc0";
var m="oc1";
var C=1;
var o=2;
var t=4;
var w=8;
H=0;
while(H<F){var d=v[H];
if(!(d[p]|d[m])){K[k++]=d;
H++;
continue}else{if(d[p]&d[m]){H++;
continue}else{for(G=0;
G<2;
G++){var D=d[I+G];
var r,q;
if(!D){continue}if(D&C){r=d[0].x+(d[1].x-d[0].x)*(g-d[0].y)/(d[1].y-d[0].y);
q=g}else{if(D&o){r=d[0].x+(d[1].x-d[0].x)*(B-d[0].y)/(d[1].y-d[0].y);
q=B}}if(D&t){r=z;
q=d[0].y+(d[1].y-d[0].y)*(z-d[0].x)/(d[1].x-d[0].x)}else{if(D&w){r=c;
q=d[0].y+(d[1].y-d[0].y)*(c-d[0].x)/(d[1].x-d[0].x)}}if(isNaN(r)||!isFinite(r)||isNaN(q)||!isFinite(q)){H++;
break}var E=new PixelPoint(r,q);
d[G]=E}a(d)}}}return K;
function a(i){var P="oc";
var N=1;
var O=2;
var M=4;
var y=8;
for(var j=0;
j<2;
j++){var L=i[j];
i[P+j]=0;
if(L.x>z){i[P+j]+=M}else{if(L.x<c){i[P+j]+=y}}if(L.y>g){i[P+j]=N}else{if(L.y<B){i[P+j]=O}}}}};
function DDSPolygon(){this.id=Math.floor(Math.random()*10000000);
this.type="polygon";
this.generalize=true;
this.generalized=[];
this.mercPixels=[];
this.positions=[];
this.VR7=""}DDSPolygon.prototype=new DDSShape();
DDSPolygon.prototype.constructor=DDSPolygon;
DDSPolygon.prototype.setPositions= function(a){this.positions=a;
if(!this.positions[this.positions.length-1].equals(this.positions[0])){this.positions.push(this.positions[0].clone())}this.generalized=[];
this.mercPixels=[];
if(this.map!=null&&this.map.getShapeRendering()=="client"){this.map.redraw()}};
DDSPolygon.prototype.getPositions= function(){return this.positions};
DDSPolygon.prototype.setVR7= function(a){this.VR7=a;
if(this.map!=null){this.map.redraw()}};
DDSPolygon.prototype.getVR7= function(){return this.VR7};
DDSPolygon.prototype.setGeneralize= function(a){this.generalize=a};
DDSPolygon.prototype.getGeneralize= function(){return this.generalize};
DDSPolygon.prototype.inside= function(a){return deCarta.Math.pointInPolygon(this.positions,a)};
DDSPolygon.prototype.getMercPixels=DDSShape.getMercPixels;
deCarta.DOMDimensions= function(a){this.init(a)};
deCarta.DOMDimensions.prototype.left=null;
deCarta.DOMDimensions.prototype.top=null;
deCarta.DOMDimensions.prototype.right=null;
deCarta.DOMDimensions.prototype.bottom=null;
deCarta.DOMDimensions.prototype.width=null;
deCarta.DOMDimensions.prototype.height=null;
deCarta.DOMDimensions.prototype.init= function(a){try{if(!a||(a&&!a.style)){throw new Exception("passed in element not valid")}this.width=parseInt(a.clientWidth,10);
this.height=parseInt(a.clientHeight,10);
this.left=parseInt(Utilities.getAbsoluteLeft(a),10);
this.top=parseInt(Utilities.getAbsoluteTop(a),10);
this.right=this.left+this.width;
this.bottom=this.top+this.height;
if(isNaN(this.width)||isNaN(this.height)||isNaN(this.left)||isNaN(this.top)||isNaN(this.right)||isNaN(this.bottom)){throw new Exception("element does not have calculable dimensions")}}catch(b){throw new Exception("DOMDimensions: Argument not applicable: "+b.message)}};
function EventRegistry(){}EventRegistry.addListener= function(c,a,b){if(c.type=="map"&&(a=="rightclick"||a=="dblclick"||a=="click"||a=="mousedown"||a=="mouseout"||a=="mouseup"||a=="move"||a=="movestart"||a=="moveend"||a=="zoomend")){c.addEventListener(a,b)}else{if(c.type=="pin"&&(a=="rightclick"||a=="dblclick"||a=="click"||a=="mousedown"||a=="mouseover"||a=="mouseout"||a=="mouseup")){c.addEventListener(a,b)}else{throw new Exception(a+" is unsupported event type for "+c.type)}}};
EventRegistry.clearListeners= function(b,a){b.clearListeners(a)};
EventRegistry.clearInstanceListeners= function(a){a.clearInstanceListeners()};
deCarta.Events={};
deCarta.Events.addEvent= function(d,c,b){var a=deCarta.Events.eventKey;
if(!deCarta.IdManager.checkTag(d,a)){deCarta.IdManager.setTag(d,a,deCarta.IdManager.getUniqueId())}if(d.attachEvent){if(d["e"+c+b]){return}d["e"+c+b]=b;
d[c+b]= function(){d["e"+c+b](window.event)};
d.attachEvent("on"+c,d[c+b])}else{if(d.addEventListener){d.addEventListener(c,b,false)}else{d["on"+c]=b}}};
deCarta.Events.removeEvent= function(c,b,a){if(c.detachEvent){if(c[b+a]){c.detachEvent("on"+b,c[b+a]);
c["e"+b+a]=null;
c[b+a]=null}}else{if(c.removeEventListener){c.removeEventListener(b,a,false)}else{c["on"+b]=undefined}}};
deCarta.Events.checkIfTarget= function(c,b){var a=deCarta.Events.eventKey;
if(c&&c[a]){if(b&&(b.target||b.srcElement)){var d=b.target||b.srcElement;
if(d[a]==c[a]){return true}}}return false};
deCarta.Events.eventKey="deCartaEventId";
(function(){if(Error){Exception=Error}else{Exception= function(b){this.message=b||"an exception has occurred";
var a=this;
this.toString= function(){return a.message}}}})();
function FreeFormAddress(b,a){if(!b||b.toString()==""){throw new Exception("Error instantiating FreeFormAddress, invalid parameters.");
return false}this.locale=a||new Locale("en","US");
this.address=b;
this.type="FreeForm"}FreeFormAddress.prototype.getLocale= function(){return this.locale};
FreeFormAddress.prototype.toString= function(){return this.address};
function GeocodedAddress(){this.position=null;
this.freeFormAddress=null;
this.structuredAddress=null;
this.boundingBox=null;
this.matchType=""}GeocodedAddress.prototype.toString= function(){return this.position+"\n"+this.freeFormAddress+"\n"+this.boundingBox+"\n"+this.matchType};
function Geocoder(){this.xmlRecFac=new deCarta.XMLStringBuilder();
this.returnFreeForm=true;
var b=[];
var a=this;
this.authenticate= function(d,c){if(!d||!c||d==""||c==""){throw new Exception("Error authenticating Geocoder, invalid parameters.");
return false}Credentials.clientName=d;
Credentials.clientPassword=c;
this.xmlRecFac.clientName=d;
this.xmlRecFac.clientPassword=c};
this.setConfiguration= function(c){if(!c){throw new Exception("error calling Geocoder.setConfiguration()")}Credentials.configuration=c;
this.xmlRecFac.configuration=c};
this.geocode= function(c,i,d){var g=Utilities.getRequestId();
if(typeof i=="function"){b[g]=i}else{throw new Exception("Geocode.geocode: callBack must be a function, arg was: "+i)}var f=this.xmlRecFac.createGeocodeRequest(c,g,this.returnFreeForm);
JSRequest.send(f,a.geocodeCallback,null,d)};
this.reverseGeocode= function(c,i,d){var g=Utilities.getRequestId();
if(typeof i=="function"){b[g]=i}else{throw new Exception("Geocode.reverseGeocode: callBack must be a function, arg was: "+i)}var f=this.xmlRecFac.createReverseGeocodeRequest(c,g);
JSRequest.send(f,a.reverseGeocodeCallback,null,d)};
this.reverseGeocodeCallback= function(f){var d=f.XLS.Response.requestID;
var c;
if(deCarta.JSONParser.parseErrors(f)){c=new Address()}else{c=deCarta.JSONParser.parseAddress(f.XLS.Response.ReverseGeocodeResponse.ReverseGeocodedLocation.Address)}if((d>=0)&&b[d]){b[d](c);
b[d]=undefined}};
this.geocodeCallback= function(k){var n=[];
var c=[];
var f=[];
var j=k.XLS.Response.requestID;
if(deCarta.JSONParser.parseErrors(k)){}else{if(k.XLS.Response.GeocodeResponse.GeocodeResponseList){var m;
if(k.XLS.Response.GeocodeResponse.GeocodeResponseList.GeocodedAddress.length==undefined){m=[];
m.push(k.XLS.Response.GeocodeResponse.GeocodeResponseList.GeocodedAddress)}else{m=k.XLS.Response.GeocodeResponse.GeocodeResponseList.GeocodedAddress}for(var d=0;
d<m.length;
d++){var g=new GeocodedAddress();
n.push(new Position(m[d].Point.pos));
g.position=new Position(m[d].Point.pos.toString());
if(m[d].Address.freeFormAddress){g.freeFormAddress=new FreeFormAddress(m[d].Address.freeFormAddress);
c.push(new FreeFormAddress(m[d].Address.freeFormAddress))}else{if(m[d].Address.Place){g.structuredAddress=deCarta.JSONParser.parseAddress(m[d].Address);
c.push(deCarta.JSONParser.parseAddress(m[d].Address))}}if(m[d].BoundingBox){g.boundingBox=new BoundingBox(new Position(m[d].BoundingBox.pos[0].content),new Position(m[d].BoundingBox.pos[1].content))}g.matchType=m[d].GeocodeMatchCode.matchType;
g.accuracy=m[d].GeocodeMatchCode.accuracy;
f.push(g)}}}if((j>=0)&&b[j]){b[j](n,c,f);
b[j]=undefined}}}function Icon(g,d,b,f,a,c){if(!g||(d!=0&&!d)||(b!=0&&!b)||(f!=0&&!f)||(a!=0&&!a)){throw new Exception("Error instantiating Icon, missing parameters. Icon(src,iconAnchorX,iconAnchorY,width,height) all required. The last parameter overlay is optional.")}this._previousX=null;
this._previousY=null;
this.src=g;
this.anchorX=d;
this.anchorY=b;
this.width=f;
this.height=a;
this.overlay=c||new TextOverlay("",1,1)}Icon.prototype.getAnchorX= function(){return this.anchorX};
Icon.prototype.getAnchorY= function(){return this.anchorY};
Icon.prototype.getHeight= function(){return this.height};
Icon.prototype.getOverlay= function(){return this.overlay};
Icon.prototype.getSrc= function(){return this.src};
Icon.prototype.getWidth= function(){return this.width};
Icon.prototype.setAnchorX= function(a){this._previousX=this.anchorX;
this.anchorX=a};
Icon.prototype.setAnchorY= function(a){this._previousY=this.anchorY;
this.anchorY=a};
Icon.prototype.setHeight= function(a){this.height=a};
Icon.prototype.setOverlay= function(a){this.overlay=a};
Icon.prototype.setSrc= function(a){this.src=a};
Icon.prototype.setWidth= function(a){this.width=a};
deCarta.IdManager={};
deCarta.IdManager.getUniqueId= function(c){var b=deCarta.IdManager.getUniqueId.seedNumber++;
var a=null;
if(c){a=""+c+b}else{a=b}return a};
deCarta.IdManager.getUniqueId.seedNumber=10000;
deCarta.IdManager.setTag= function(c,a,d){var b=deCarta.IdManager.tagDitionary;
d=d||true;
if(!c[b]){c[b]={}}c[b][a]=d};
deCarta.IdManager.checkTag= function(c,a){var b=deCarta.IdManager.tagDitionary;
if(c&&a){if(c[b]){return c[b][a]}}return undefined};
deCarta.IdManager.tagDitionary="deCartaTagDictionary";
function InfoWindow(b,c,f,d,a){this.init(b,c,f,d,a)}InfoWindow.prototype.xOffset=-20;
InfoWindow.prototype.yOffset=0;
InfoWindow.prototype.bubble=null;
InfoWindow.prototype.bubbleClassName="decarta-bubble";
InfoWindow.prototype.bubbleIgnoreMapEvents=false;
InfoWindow.prototype.bubbleContent=null;
InfoWindow.prototype.bubbleContentClassName="decarta-bubbleContent";
InfoWindow.prototype.bubbleContentIgnoreMapEvents=false;
InfoWindow.prototype.bubbleContentSelectable=false;
InfoWindow.prototype.bubbleClose=null;
InfoWindow.prototype.bubbleCloseClassName="decarta-close";
InfoWindow.prototype.bubbleCloseIgnoreMapEvents=true;
InfoWindow.prototype.associatedPin=null;
InfoWindow.prototype.onCloseCallback=null;
InfoWindow.prototype.onHideCallback=null;
InfoWindow.prototype.onShowCallback=null;
InfoWindow.prototype.shouldAutoCenter=false;
InfoWindow.prototype.setAutoCenter= function(a){a=a||false;
this.shouldAutoCenter=a};
InfoWindow.prototype.setOnClose= function(a){this.onCloseCallback=a};
InfoWindow.prototype.setOnHide= function(a){this.onHideCallback=a};
InfoWindow.prototype.setOnShow= function(a){this.onShowCallback=a};
InfoWindow.prototype.setIgnoreMapEvents= function(b){for(var a in b){if(b.hasOwnProperty(a)){this[a]=b[a]}}this.resetMapEventIgnorance()};
InfoWindow.prototype.setContentSelectable= function(a){this.bubbleContentSelectable=a;
this.resetSelectability()};
InfoWindow.prototype.init= function(d,f,j,g,b){var c;
this.build();
if(d){this.bubble=d;
this.bubble.id="decarta-bubble";
this.bubbleContent.style.position="absolute";
this.bubble.appendChild(this.bubbleContent);
if(this.bubbleClose){this.bubble.appendChild(this.bubbleClose)}}if(b){this.bubble.style.width=b.width+"px";
this.bubble.style.height=b.height+"px";
this.bubble.style.backgroundImage="url("+b.src+")";
this.bubble.style.backgroundRepeat="no-repeat";
this.bubble.style.backgroundColor="transparent";
this.bubble.style.borderStyle="none"}if(g){if(!this.bubbleClose){this.buildCloseIcon(g.src)}this.bubbleClose.style.position="absolute";
this.bubbleClose.style.top=g.anchorY+"px";
this.bubbleClose.style.left=g.anchorX+"px";
if(g.height){this.bubbleClose.style.height=g.height+"px"}if(g.width){this.bubbleClose.style.width=g.width+"px"}}if(f){this.xOffset=f}if(j){this.yOffset=j}if(Utilities.ie6){var a=this.bubble.getElementsByTagName("img");
for(c=0;
c<a.length;
c++){if(a[c].src.match(/\bpng\b/g)){Utilities.fixPng(a[c])}}}};
InfoWindow.prototype.build= function(){try{this.bubble=document.createElement("div");
this.bubble.id=this.bubbleClassName;
this.bubble.className=this.bubbleClassName;
this.bubbleContent=document.createElement("div");
this.bubbleContent.id=this.bubbleContentClassName;
this.bubbleContent.className=this.bubbleContentClassName;
if(Credentials.infoWindowCloseButton){this.buildCloseIcon(Credentials.infoWindowCloseButton)}this.bubble.appendChild(this.bubbleContent)}catch(a){throw new Exception("build error:"+a.message)}};
InfoWindow.prototype.buildCloseIcon= function(a){this.bubbleClose=document.createElement("img");
if(a){this.bubbleClose.src=a}this.bubbleClose.id=this.bubbleCloseClassName;
this.bubbleClose.className=this.bubbleCloseClassName;
this.bubbleClose.owner=this;
deCarta.Events.addEvent(this.bubbleClose,"click",InfoWindow.eventClose);
this.bubble.appendChild(this.bubbleClose)};
InfoWindow.prototype.setPosition= function(b,a){a=a||0;
b=b||0;
this.bubble.style.top=a-this.yOffset+"px";
this.bubble.style.left=b-this.xOffset+"px"};
InfoWindow.prototype.setContent= function(a){if(a){this.bubbleContent.innerHTML=a}else{this.bubbleContent.innerHTML=""}this.resetSelectability();
this.resetMapEventIgnorance()};
InfoWindow.prototype.resetSelectability= function(){var d=(this.bubbleContentSelectable)?Utilities.setSelectable:Utilities.setUnselectable;
var a=this.bubbleContent;
d(a);
if(a.hasChildNodes()){var b=a.getElementsByTagName("*");
for(var c=0;
c<b.length;
c++){d(b[c])}}};
InfoWindow.prototype.resetMapEventIgnorance= function(){var d,c,f,b,a;
if(this.bubbleIgnoreMapEvents){deCarta.IdManager.setTag(this.bubble,"ignoreForMapEvents");
if(this.bubble.hasChildNodes()){b=this.bubble.childNodes;
for(d=0;
d<b.length;
d++){f=b[d];
if(f.id!=this.bubbleContentClassName&&f.id!=this.bubbleCloseClassName){a=f.getElementsByTagName("*");
for(c=0;
c<a.length;
c++){deCarta.IdManager.setTag(a[c],"ignoreForMapEvents")}}}}}if(this.bubbleContentIgnoreMapEvents){deCarta.IdManager.setTag(this.bubbleContent,"ignoreForMapEvents");
a=this.bubbleContent.getElementsByTagName("*");
for(d=0;
d<a.length;
d++){deCarta.IdManager.setTag(a[d],"ignoreForMapEvents")}}if(this.bubbleCloseIgnoreMapEvents&&this.bubbleClose){deCarta.IdManager.setTag(this.bubbleClose,"ignoreForMapEvents")}};
InfoWindow.prototype.show= function(a){this.bubble.style.zIndex=Pin.zIndexCounter+10000;
this.bubbleContent.style.zIndex=Pin.zIndexCounter+10000;
if(this.bubbleClose){this.bubbleClose.style.zIndex=Pin.zIndexCounter+10000}this.bubble.style.display="block";
if(a){this.associatedPin=a}else{this.associatedPin=null}if(this.onShowCallback){this.onShowCallback()}this.autoCenter()};
InfoWindow.prototype.hide= function(){this.bubble.style.display="none";
if(this.onHideCallback){this.onHideCallback()}};
InfoWindow.prototype.autoCenter= function(){var p=this.associatedPin;
if(!(p&&p.map)||!this.shouldAutoCenter){return}var D=p.map;
var j=p.pinImg.clientHeight;
var r=p.pinImg.clientWidth;
var B=parseInt(p.pinImg.style.top);
var G=parseInt(p.pinImg.style.left);
var H=Utilities.radsPerPixelAtZoomLevel(D.getTileSize(),D.getZoomController().selected);
var u=p.getViewableBoundingBox(H);
var F=u.getUpperLeftPosition();
var w=D.posToMercPix(F);
var C=new PixelPoint(w.x+r,w.y-j);
var A=this.bubble.clientHeight;
var z=this.bubble.clientWidth;
var q=parseInt(this.bubble.style.top);
var y=parseInt(this.bubble.style.left);
var t=w.y+(B-q);
var c=w.x-(G-y);
var b=new PixelPoint(c,t);
var o=new PixelPoint(c+z,t-A);
var n=Math.max(w.y,b.y);
var a=Math.min(C.y,o.y);
var g=Math.max(C.x,o.x);
var E=Math.min(w.x,b.x);
var m=new PixelPoint(g,a);
var d=new PixelPoint(E,n);
var v=D.mercPixToPos(m);
var f=D.mercPixToPos(d);
var i=new BoundingBox(f,v);
var k=i.getCenterPosition();
D.panToPosition(k)};
InfoWindow.eventClose= function(){var a=this.owner;
if(a.onCloseCallback){a.onCloseCallback()}a.hide()};
deCarta.JSONParser={};
deCarta.JSONParser.parseAddress= function(d){var b=new Address();
var a=d.Place;
if(d.Place&&d.Place.length){for(var c=0;
c<a.length;
c++){f(b,a[c])}}else{if(d.Place&&d.Place.type){f(b,a)}}b.postalCode=(d.PostalCode)?d.PostalCode:"";
b.countryCode=d.countryCode;
if(d.StreetAddress&&d.StreetAddress.Street){b.street=d.StreetAddress.Street.content||((typeof d.StreetAddress.Street=="string")?d.StreetAddress.Street:"");
b.speedLimit=d.StreetAddress.Street.speedLimit||"";
if(d.StreetAddress.Building){b.buildingNumber=d.StreetAddress.Building.number}}return b;
function f(i,g){switch(g.type){case"CountrySubdivision":i.countrySubdivision=g.content;
break;
case"CountrySecondarySubdivision":i.countrySecondarySubdivision=g.content;
break;
case"CountryTertiarySubdivision":i.countryTertiarySubdivision=g.content;
break;
case"MunicipalitySubdivision":i.municipalitySubdivision=g.content;
break;
case"Municipality":i.municipality=g.content;
break;
case"Landmark":i.landmark=g.content;
break}}};
deCarta.JSONParser.parsePOI= function(r){var g=r.POI.POIAttributeList.POIInfoList.POIInfo;
var o={};
for(var d=0;
d<g.length;
d++){var k=g[d];
var j;
for(var i in k){if(i=="name"){j=k[i]}else{if(i=="value"){o[j]=k[i]}}}}if(r.POI.ID){o.ID=r.POI.ID}var c=r.POI.POIName;
var t=r.POI.phoneNumber;
var m=r.POI.Point.pos;
var b=r.Distance.value;
var a=r.Distance.uom;
var q=deCarta.JSONParser.parseAddress(r.POI.Address);
var f=new POI(c,new Position(m),q,t,o);
f.distance={value:parseInt(b),uom:new UOM(a)};
return f};
deCarta.JSONParser.parseRoutes= function(f){var d;
var c=f.XLS.Response.DetermineRouteResponse;
var b=g(c);
if(c.AlternateRoute){var k=c.AlternateRoute;
var a=k.length;
if(a==undefined){b.alternates[0]=g(k)}else{for(d=0;
d<a;
d++){b.alternates[d]=g(k[d])}}}return b;
function g(r){var y=new Route();
var p=r.RouteSummary;
y.TotalTime=Utilities.podParse(p.TotalTime);
y.TotalTimeObject=Utilities.podParseJSON(p.TotalTime);
y.TotalDistance=p.TotalDistance.value;
y.uom=new UOM(p.TotalDistance.uom);
var o=p.BoundingBox;
if(o){var q=new Position(o.pos[0].content);
var t=new Position(o.pos[1].content);
y.boundingBox=new BoundingBox(q,t);
y.centerPosition=y.boundingBox.getCenterPosition()}var z=r.RouteHandle;
if(z&&z.routeID){y.routeID=z.routeID}var u=r.viaPointSequence;
if(u){y.viaPointSequence=u}var w=r.RouteGeometry;
if(w){var n=w.LineString.pos;
var v=n.length;
if(v==undefined){y.RouteGeometry[0]=new Position(n)}else{for(d=0;
d<v;
d++){y.RouteGeometry[d]=new Position(n[d])}}}var i=r.RouteInstructionsList;
if(i){var m=i.RouteInstruction;
var A=m.length;
if(A==undefined){y.RouteInstructions[0]=j(m)}else{for(d=0;
d<A;
d++){y.RouteInstructions[d]=j(m[d])}}}return y}function j(m){var i=new RouteInstruction();
i.Instruction=m.Instruction;
i.distance=m.distance.value;
i.duration=Utilities.podParse(m.duration);
i.position=new Position(m.Point);
i.tour=m.tour;
return i}};
deCarta.JSONParser.parseErrors= function(b){var a=(b.XLS.ResponseHeader.ErrorList)?true:false;
return a};
deCarta.JSONViewer= function(){deCarta.StyleManager.init();
var j=0;
var b="";
var g=false;
var d=0;
var a="decarta-json-reflector";
var f="decarta-json-type";
var i="decarta-json-relation";
var k="decarta-json-string";
var c="decarta-json-number";
this.reflect= function(y){var p;
if(!g){j++}if(typeof(y)==="string"){u(null,y);
return}else{if(typeof(y)==="number"){w(null,y);
return}else{if(typeof(y)==="boolean"){F(null,y);
return}else{if(typeof(y)==="null"){C(null,y);
return}else{if(typeof(y)==="undefined"){v(null,y);
return}else{if(g){if(Object.prototype.toString.call(y)==="[object Array]"){B(null,y);
p=d;
d=0;
for(var G=0;
G<y.length;
G++){d++;
this.reflect(y[G])}d=p;
return}else{r(null);
g=false;
this.reflect(y);
g=true;
return}}else{for(var m in y){if(typeof(y[m])==="string"){u(m,y[m])}else{if(typeof(y[m])==="number"){w(m,y[m])}else{if(typeof(y[m])==="boolean"){F(m,y[m])}else{if(typeof(y[m])==="null"){C(m,y[m])}else{if(typeof(y[m])==="undefined"){v(m,y[m])}else{if(Object.prototype.toString.call(y[m])==="[object Array]"){B(m,y[m]);
g=true;
p=d;
d=0;
for(var E=0;
E<y[m].length;
E++){d++;
this.reflect(y[m][E])}d=p;
g=false}else{r(m);
this.reflect(y[m])}}}}}}}}}}}}}j--;
function u(t,I){var n;
if(t){n=z("string ")+t+H()+A(I)}else{n=z("string ")+A(I)}o(n)}function w(t,I){var n;
if(t){n=z("number ")+t+H()+D(I)}else{n=z("number ")+D(I)}o(n)}function F(t,I){var n;
if(t){n=z("boolean ")+t+H()+D(I)}else{n=z("boolean ")+D(I)}o(n)}function C(t,I){var n;
if(t){n=z("null ")+t+H()+D(I)}else{n=z("null ")+D(I)}o(n)}function v(t,I){var n;
if(t){n=z("undefined ")+t+H()+D(I)}else{n=z("undefined ")+D(I)}o(n)}function B(t,I){var n;
if(t){n=z("array ")+t+" ("+I.length+")"}else{n=z("array ")+" ("+I.length+")"}o(n)}function r(t){var n;
if(t){n=z("object ")+t}else{n=z("object ")}o(n)}function z(n){return"<span class='"+f+"'>"+n+"</span>"}function H(){return"<span class='"+i+"'> = </span>"}function A(n){return"<span class='"+k+"'>\""+n+'"</span>'}function D(t){return"<span class='"+c+"'>"+t+"</span>"}function o(n){if(g){b+=q()+"["+d+"]"+n+"\n"}else{b+=q()+n+"\n"}}function q(){var t="";
for(var n=0;
n<j;
n++){t+="\t"}return t}};
this.show= function(){var m;
m=document.getElementById(a);
if(!m){m=document.createElement("pre");
m.id=a;
document.body.appendChild(m)}m.innerHTML+=b};
this.clear= function(){b="";
document.getElementById(a).innerHTML=""}};
function JSRequest(){}JSRequest.host=null;
JSRequest.TIMEOUT=60000;
JSRequest.tHandler= function(a){throw new Exception("JSRequest timeout on requestID: "+a)};
JSRequest.qtHandler=[];
JSRequest.xmlhttp=true;
JSRequest.hostInProgress=false;
JSRequest.holder=[];
JSRequest.callbackFunctions=[];
JSRequest.interceptorXMLHTTPRequest=null;
JSRequest.interceptorXMLRequest=null;
JSRequest.interceptorXMLResponse=null;
JSRequest.interceptorJSONResponse=null;
JSRequest.registerXMLHTTPRequestInterceptor= function(a){JSRequest.interceptorXMLHTTPRequest=a};
JSRequest.registerXMLRequestInterceptor= function(a){JSRequest.interceptorXMLRequest=a};
JSRequest.registerQueryTimeoutHandler= function(b,a){JSRequest.qtHandler[b]=a};
JSRequest.registerXMLResponseInterceptor= function(a){JSRequest.interceptorXMLResponse=a};
JSRequest.registerJSONResponseInterceptor= function(a){JSRequest.interceptorJSONResponse=a};
JSRequest.callbackRegistry= function(b){if(GLOBALS.DEBUG_JSON&&b){if(!window.jsonViewer){window.jsonViewer=new deCarta.JSONViewer()}window.jsonViewer.reflect(b);
window.jsonViewer.show()}try{if(b&&(b.response!=null)){try{if(typeof JSRequest.interceptorXMLResponse==="function"&&b.xmlResponse){var a=(new DOMParser()).parseFromString(Utilities.normalizePrefixes(b.xmlResponse),"text/xml");
if(b.xmlResponse.indexOf("RUOK")==-1){JSRequest.interceptorXMLResponse(a)}}if(typeof JSRequest.interceptorJSONResponse==="function"){b.response=JSRequest.interceptorJSONResponse(b.response)}}catch(c){throw new Exception("Application Error: API user application response interceptor function threw error: "+c.message)}if(JSRequest.callbackFunctions[b.requestID]){if(deCarta.Array.isArray(b.response.XLS.Response)){if(b.response.XLS.Response[0].requestID==-1){b.response.XLS.Response[0].requestID=b.requestID}}else{if(b.response.XLS.Response.requestID==-1){b.response.XLS.Response.requestID=b.requestID}}JSRequest.callbackFunctions[b.requestID](b.response);
JSRequest.callbackFunctions[b.requestID]=undefined;
JSRequest.qtHandler[b.requestID]=undefined}}if(document.getElementById(b.requestID+":"+b.chunkNo)){document.getElementsByTagName("head").item(0).removeChild(document.getElementById(b.requestID+":"+b.chunkNo))}}catch(c){throw new Exception(c.message)}};
JSRequest.checkTimeout= function(c){var b=(c.split(":"))[0];
if(JSRequest.callbackFunctions[b]||JSRequest.qtHandler[b]){JSRequest.host=null;
JSRequest.tHandler(b);
if(typeof JSRequest.qtHandler[b]=="function"){JSRequest.qtHandler[b](b);
JSRequest.qtHandler[b]=undefined}JSRequest.callbackFunctions[b]=undefined;
var a=document.getElementById(c);
if(a){document.getElementsByTagName("head").item(0).removeChild(a)}}};
JSRequest.timeoutHandler= function(b,a){JSRequest.tHandler=b;
JSRequest.TIMEOUT=a||60000};
JSRequest.send= function(f,k,v,o,n){if(!f){return}var m=v?"responseFormat="+v:(typeof JSRequest.interceptorXMLRequest==="function"||typeof JSRequest.interceptorXMLResponse==="function")?"responseFormat=ALL":"responseFormat=JSON";
var j=(n)?n:Credentials.url;
if((/\/openls$|\/openls\/$/.test(j))&&!n){j=j.substring(0,Credentials.url.lastIndexOf("openls"))+Credentials.jsonServletName}if(JSRequest.xmlhttp){JSRequest.sendXHR(f,k,m,j);
return}if(JSRequest.host==null&&!n){JSRequest.holder.push(f);
JSRequest.holder.push(k);
JSRequest.holder.push(v);
JSRequest.holder.push(o);
if(JSRequest.hostInProgress){return}JSRequest.hostInProgress=true;
o=JSRequest.getHostTimeout;
var b=new deCarta.XMLStringBuilder();
var c=b.createRUOKRequest(Utilities.getRequestId());
f=c;
k=JSRequest.getHost;
m="responseFormat=JSON"}try{if(typeof JSRequest.interceptorXMLRequest==="function"&&JSRequest.host!=null){f=(new DOMParser()).parseFromString(Utilities.normalizePrefixes(f),"text/xml");
f=Sarissa.serialize(JSRequest.interceptorXMLRequest(f))}}catch(B){throw new Exception("Application Error: API user application request interceptor function threw error: "+B.message)}var y=1800;
var C=j.length;
var a=80;
var A=(encodeURIComponent(f)).length;
var q;
var z=1;
while(true){if(C+a+(A/z)<y){q=z;
break}z++}var t="";
var D=Math.ceil(f.length/q);
var u=Utilities.parseRequestIDFromXLS(f);
var r=0;
for(z=1;
z<=q;
z++){JSRequest.callbackFunctions[u]=k;
JSRequest.qtHandler[u]=o;
var g;
if(r==0){g=Math.round(D*z-D)}else{g=r}var d=Math.round(D*z);
r=d;
var p=f.substring(g,d);
t=encodeURIComponent(p);
var E=document.createElement("script");
E.setAttribute("type","text/javascript");
var w=j+"?reqID="+u+"&chunkNo="+z+"&numChunks="+q+"&callback=JSRequest.callbackRegistry&data="+t+"&"+m;
w=w.replace(new RegExp("\\+","g"),"%2b");
E.setAttribute("src",w);
E.setAttribute("id",u+":"+z);
document.getElementsByTagName("head").item(0).appendChild(E);
if(JSRequest.TIMEOUT!=-1){setTimeout("JSRequest.checkTimeout('"+u+":"+z+"')",JSRequest.TIMEOUT)}}};
JSRequest.sendXHR= function(xml,callback,responseFormat,url){try{if(!Utilities.ie){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalPreferencesWrite UniversalBrowserWrite UniversalPreferencesRead UniversalBrowserRead")}catch(e){}}var xmlhttp=new XMLHttpRequest();
xmlhttp.open("POST",url+"?"+responseFormat,true)}catch(e){throw new Exception(e.message+"Depending on your browser settings you may have troubles running JavaScript code that uses the XMLHTTPRequest from your local file system.  XMLHTTPRequest verifies that the request to the server is from a script that is downloaded from that same server.  To remedy this problem, place your app inside tomcat and access from localhost.  Or see the feature of using dynamic script tags (JSON/GET) to bypass this security issue.")}xmlhttp.onreadystatechange= function(){if(xmlhttp.readyState==4){if(xmlhttp.responseText==""){throw new Exception("Problem connecting to DDS Web Services: Please try again later or contact support")}if(xmlhttp.responseText&&xmlhttp.responseText!=null&&xmlhttp.responseText.indexOf("problem connecting to DDS")>0){throw new Exception("Problem connecting to DDS: Please try again later or contact support")}var r=eval(("("+xmlhttp.responseText+")"));
if(typeof JSRequest.interceptorXMLResponse==="function"&&r.xmlResponse){var xml=(new DOMParser()).parseFromString(Utilities.normalizePrefixes(r.xmlResponse),"text/xml");
JSRequest.interceptorXMLResponse(xml)}if(typeof JSRequest.interceptorJSONResponse==="function"){r.response=JSRequest.interceptorJSONResponse(r.response)}if(r.response){callback(r.response)}else{callback(r)}}};
if(typeof JSRequest.interceptorXMLHTTPRequest==="function"){JSRequest.interceptorXMLHTTPRequest(xmlhttp)}xmlhttp.send(xml);
return};
JSRequest.getHost= function(g){var d=g.XLS.Response.RUOKResponse.hostName;
var a=Credentials.url;
var f,j;
if(a.indexOf("https://")>-1){f="https://"}else{f="http://"}var c=a.substring(f.length);
if(c.indexOf(":")>-1){j=c.substring(c.indexOf(":"))}else{j=c.substring(c.indexOf("/"))}JSRequest.host=f+d+j;
Credentials.url=JSRequest.host;
for(var b=0;
b<JSRequest.holder.length;
b++){JSRequest.send(JSRequest.holder[b],JSRequest.holder[b+1],JSRequest.holder[b+2],JSRequest.holder[b+3]);
b=b+3}JSRequest.holder=[];
JSRequest.hostInProgress=false};
JSRequest.getHostTimeout= function(b){for(var a=0;
a<JSRequest.holder.length;
a++){if(typeof JSRequest.holder[a+3]=="function"){JSRequest.holder[a+3](null)}a=a+3}JSRequest.holder=[];
JSRequest.hostInProgress=false};
JSRequest.setXMLHTTPMode= function(){JSRequest.xmlhttp=true};
JSRequest.setDynamicScriptTagMode= function(){JSRequest.xmlhttp=false};
function KML(c,a,b){if(!c){throw new Exception("Error constructing a KML object, geometry is required")}this.geometry=c;
this.name=a||null;
this.description=b||null}function KMLGeometry(a,b){this.type=a;
this.coordinates=b}deCarta.LinkedList= function(){this.length=0;
this.head=null;
this.index=deCarta.LinkedList.Config.genIndex()};
deCarta.LinkedList.Config={};
deCarta.LinkedList.Config.itemBackPointer="dCLLItemPointer";
deCarta.LinkedList.Config.itemBackPointerIndex=0;
deCarta.LinkedList.Config.genIndex= function(){return(deCarta.LinkedList.Config.itemBackPointer+deCarta.LinkedList.Config.itemBackPointerIndex++)};
deCarta.LinkedList.prototype.add= function(a){var b=null;
try{b=new deCarta.LinkedListItem(a,this.index)}catch(c){throw new Exception("Error LinkedList.add(): "+c.message)}if(!this.head){this.head=b;
this.head.next=null;
this.head.prev=null}else{this.head.prev=b;
b.next=this.head;
b.prev=null;
this.head=b}this.length++};
deCarta.LinkedList.prototype.remove= function(b){var c=null;
var a=null;
if(this.length<=0){return null}if(!b){c=this.head;
this.head=c.next}else{if((b.data)&&b.data.hasOwnProperty(this.index)){c=b}else{if(b.hasOwnProperty(this.index)){c=b[this.index]}else{throw new Exception("Attempting to remove an item that's not really a part of the LinkedList.")}}}if(c.prev){c.prev.next=c.next}else{this.head=c.next}if(c.next){c.next.prev=c.prev}a=c.destroy(this.index);
this.length--;
return a};
deCarta.LinkedList.prototype.removeByKey= function(g,b){var f;
var d=this.length;
var a=this.head;
var c;
var j=new Array();
if(!g||!b){throw new Exception("Attempt to removeByKey keyName: "+g+" and keyVal: "+b)}if(this.length<=0){return null}for(f=0;
f<d;
f++){c=a;
a=c.next;
if(b==c.data[g.toString()]){j.push(this.remove(c))}}if(!j.length){return null}else{return j}};
deCarta.LinkedList.prototype.removeById= function(c,j){var g;
var f=this.length;
var b=this.head;
var d;
var a=null;
if(!c||!j){throw new Exception("Attempt to removeByKey keyName: "+c+" and keyVal: "+j)}if(this.length<=0){return null}for(g=0;
g<f;
g++){d=b;
b=d.next;
if(j==d.data[c.toString()]){a=this.remove(d);
return a}}return null};
deCarta.LinkedList.prototype.removeAll= function(){var a=[];
var b=null;
while(this.length>0){b=this.remove();
a.push(b)}return a};
deCarta.LinkedList.prototype.returnAsArray= function(){var a=[];
var b;
var d=this.head;
var c=null;
for(b=0;
b<this.length;
b++){a.push(d.data);
c=d.next;
d=c}return a};
deCarta.LinkedList.prototype.operateOnData= function(a){var b;
var d=this.head;
var c=null;
if(typeof a!="function"){throw new Exception("Attempt operateOnData without a function.")}for(b=0;
b<this.length;
b++){a(d.data);
c=d.next;
d=c}};
deCarta.LinkedListItem= function(b,a){if(!b||(typeof b!="object")||!a){throw new Exception("LinkedList Error: Attempt to add null or primitive.")}if(b.hasOwnProperty(a)){throw new Exception("LinkedList Error: newData already containsproperty backpointer: "+a)}this.data=b;
b[a]=this;
this.next=null;
this.prev=null};
deCarta.LinkedListItem.prototype.destroy= function(b){var a=this.data;
this.data=null;
this.next=null;
this.prev=null;
delete a[b];
return a};
function Locale(b,a){this.language=b.toUpperCase();
this.country=a.toUpperCase()}Locale.prototype.getLanguage= function(){return this.language};
Locale.prototype.setLanguage= function(a){this.language=a.toUpperCase()};
Locale.prototype.getCountry= function(){return this.country};
Locale.prototype.setCountry= function(a){this.country=a.toUpperCase()};
Locale.prototype.toString= function(){return this.country+"_"+this.language};
function Map(G){deCarta.StyleManager.init();
if(!(G&&G.style)){throw new Exception("Must supply a div element to construct the map.")}this.mapDiv=G;
var b=parseInt(deCarta.StyleManager.getCurrentStyle(G,"height"));
b=(!isNaN(b))?b:this.mapDiv.offsetHeight;
b=(b)?b+"px":GLOBALS.DEFAULT_MAP_HEIGHT;
this.mapDiv.style.height=b;
var aC=parseInt(deCarta.StyleManager.getCurrentStyle(G,"width"));
aC=(!isNaN(aC))?aC:this.mapDiv.offsetWidth;
aC=(aC)?aC+"px":GLOBALS.DEFAULT_MAP_WIDTH;
this.mapDiv.style.width=aC;
this.type="map";
var av=this;
var a={};
var X=undefined;
var az=null;
var w=null;
var R=null;
var E=null;
var am=null;
var aJ=new deCarta.XMLStringBuilder();
aJ.mapType=GLOBALS.STREET;
var aM="server";
var aA=false;
var f=[];
var H=new Array();
var N=new deCarta.LinkedList();
var k={};
var ax=null;
var L=null;
var c=Utilities.ie;
var v="px";
var ao=0;
var V=true;
var aB=false;
var T=0;
var Q=0;
var F=false;
var ar=false;
var aH=0;
var aF=0;
var q=false;
var I=true;
var ab=true;
var aj=new Date();
var U=new Date();
var d=false;
var ae=false;
var aE=false;
var g=37;
var S=null;
var z=GLOBALS.DEFAULT_MAP_TILE_SIZE;
var i=z;
var ad=0;
var aG=0;
var y=2;
var Z=false;
var an=new PixelPoint(0,0);
var at=0;
var ap=0;
var aw=0;
var au=0;
var aK=0;
var aq=0;
var ac=0;
var aa=0;
this.authenticate= function(aO,aN){if(!aO||!aN||aO==""||aN==""){throw new Exception("Error calling Map.authenticate(), bad params")}Credentials.clientName=aO;
Credentials.clientPassword=aN;
aJ.clientName=aO;
aJ.clientPassword=aN};
this.setURL= function(aN){Credentials.url=aN};
this.setConfiguration= function(aN){if(!aN){throw new Exception("error calling Map.setConfiguration() with argument: "+aN)}Credentials.configuration=aN;
aJ.configuration=aN};
this.setTransparentConfiguration= function(aN){if(!aN){throw new Exception("error calling Map.setTransparentConfiguration() with arg: "+aN)}Credentials.transparentConfiguration=aN;
aJ.transparentConfiguration=aN};
this.setMapStyle= function(aN){Credentials.configuration=aN;
aJ.configuration=aN;
if(k[GLOBALS.STREET]&&k[GLOBALS.STREET].refUrl){k[GLOBALS.STREET].refUrl.setParameter("config",aN);
k[GLOBALS.STREET].refresh()}};
this.setMapFormat= function(aN){aJ.streetImgFormat=aN;
if(k[GLOBALS.STREET]&&k[GLOBALS.STREET].refUrl){k[GLOBALS.STREET].refUrl.setParameter("format",aN);
k[GLOBALS.STREET].refresh()}};
this.changeCurrentMapStyle= function(aN){setMapStyle(aN)};
this.reDrawMap= function(aN){if(!k[GLOBALS.STREET]&&!k[GLOBALS.SATELLITE]&&!k[GLOBALS.HYBRID]){return false}av.centerOnPosition(av.getCenterPosition(),aN);
return true};
this.addCopyrightMessage= function(aO,aN,aP){if(deCarta.String.isString(aO)){az=new deCarta.CopyrightMessage(aO)}else{az=aO}av.addMapControl(az);
if(aN&&aP){az.position= function(){};
az.frame.style.top=aP+v;
az.frame.style.left=aN+v}};
this.centerOnPosition= function(aN,aR,aP){var aS=Utilities.getRequestId();
if(typeof aR=="function"){f[aS]=aR}else{f[aS]=null}var aQ=Utilities.getRequestId();
var aO=aJ.createMapRequest(aN,z,aS,w?w.getZoomLevel():5,null,aP,aQ);
JSRequest.send(aO,function(aT){S=aN.clone();
K();
av.hidePinsBeforeZoom();
Y(aT)},null,function(aT){f[aT]=undefined})};
this.panToPosition= function(aU,aR){var aN=aU.clone();
var aQ=av.getCenterPosition();
var aT=this.posToMercPix(aQ);
var aP=this.posToMercPix(aN);
var aO=new PixelPoint(Math.round(aT.x-aP.x),Math.round(aT.y-aP.y));
if(S&&w.getRadius()){var aS=Utilities.centerContextToBoundingBox(aQ,w.getRadius());
if(aS.extendedContains(aN)){if(typeof aR=="function"){f.panToPosition=aR}else{f.panToPosition=null}if(aO.x==0&&aO.y==0){if(f.panToPosition){f.panToPosition(av.getCenterPosition());
f.panToPosition=undefined}return}else{u(aO.x,-1*aO.y)}}else{this.centerOnPosition(aN,aR)}}else{this.centerOnPosition(aN,aR)}};
this.getCenterPosition= function(){if(!S){throw new Exception("Center Position not set")}var aP=aw-aK;
var aO=au-aq;
if(aP==0&&aO==0){return S}var aN=av.posToMercPix(S);
aN.x-=aP;
aN.y+=aO;
var aQ=av.mercPixToPos(aN);
return aQ};
this.addCustomInfoWindow= function(aN){if(L&&am){L.removeChild(am.bubble)}am=aN;
if(L){L.appendChild(am.bubble)}};
this.getInfoWindow= function(){var aN=am||null;
return aN};
this.addAndCenterOnPin= function(aN){this.addPin(aN);
this.panToPosition(aN.position)};
this.addPin= function(aN){if(S==null){throw new Exception("Error adding Pin, you can not add a pin until the center Position is set. Please use the callback of map.centerPosition().")}try{N.add(aN)}catch(aO){return}aN.map=av;
aN.setPosition(aN.position);
L.appendChild(aN.pinImg);
if(aN.pinTxt){L.appendChild(aN.pinTxt)}};
this.getPins= function(){return N.returnAsArray()};
this.getPinById= function(aO){var aN=null;
N.operateOnData(function(aP){if(!aP){return null}if(aP.getId()==aO){aN=aP}});
return aN};
this.hidePins= function(){N.operateOnData(function(aN){if(!aN){return}aN.pinImg.style.display="none";
aN.pinTxt.style.display="none"})};
this.showPins= function(){N.operateOnData(function(aN){aN.pinImg.style.display="block";
aN.pinTxt.style.display="block"})};
this.removeAllPins= function(){var aN;
while(N.length>0){aN=N.remove();
if(c){Utilities.purge(aN.pinImg)}L.removeChild(aN.pinImg);
aN.pinImg=null;
if(aN.pinTxt){if(c){Utilities.purge(aN.pinTxt)}L.removeChild(aN.pinTxt);
aN.pinTxt=null}}};
this.removePin= function(aO){var aN=null;
try{aN=N.remove(aO)}catch(aP){return}if(!aN){return}aN.destroy()};
this.removePinById= function(aP){try{var aN=N.removeById("id",aP)}catch(aO){return}if(!aN){return}if(aN.pinTxt){Utilities.purge(aN.pinTxt);
L.removeChild(aN.pinTxt);
aN.pinTxt=null}Utilities.purge(aN.pinImg);
L.removeChild(aN.pinImg)};
this.removePinsById= function(aR){var aN=null;
var aP=null;
var aO;
try{aN=N.removeByKey("id",aR)}catch(aQ){return}if(!aN){return}for(aO=0,aP=aN.length;
aO<aP;
aO++){if(aN[aO].pinTxt){Utilities.purge(aN[aO].pinTxt);
L.removeChild(aN[aO].pinTxt);
aN[aO].pinTxt=null}Utilities.purge(aN[aO].pinImg);
L.removeChild(aN[aO].pinImg)}};
this.setDragEnabled= function(aN){if(!"boolean"==(typeof aN)){throw new Exception("Map.setDragEnabled requires boolean")}V=aN};
this.setShapeClippingEnabled= function(aN){if(!"boolean"==(typeof aN)){throw new Exception("Map.setShapeClippingEnabled requires boolean")}aA=aN};
this.setDoubleClickRecenteringEnabled= function(aN){if(!"boolean"==(typeof aN)){throw new Exception("Map.setDoubleClickRecenteringEnabled requires boolean")}ab=aN};
this.setDoubleClickRecenterAndZoom= function(aN){if(aN){ae=true}else{ae=false}};
this.setDigitalZoomEnabled= function(aN){if(aN){I=true}else{I=false}};
this.setPanTimeoutDelay= function(aN){g=aN||37};
this.addOverlay= function(aN){if(deCarta.Array.isArray(aN)){var aP=aN.length;
for(var aO=0;
aO<aP;
aO++){aN[aO].map=av;
aJ.overlays.push(aN[aO])}}else{aN.map=av;
aJ.overlays.push(aN)}ai()};
this.getOverlays= function(){var aO=[];
var aP=aJ.overlays.length;
for(var aN=0;
aN<aP;
aN++){aO[aN]=aJ.overlays[aN]}return aO};
this.removeOverlay= function(aN){aN.map=null;
var aP=new Array();
for(var aO=0;
aO<aJ.overlays.length;
aO++){if(aJ.overlays[aO]&&!aJ.overlays[aO].equals(aN)){aP.push(aJ.overlays[aO])}}aJ.overlays=aP;
if(aP.length==0){ai(true)}else{ai()}};
this.removeOverlayById= function(aP){var aO=new Array();
for(var aN=0;
aN<aJ.overlays.length;
aN++){if(aJ.overlays[aN]&&aJ.overlays[aN].id!=(aP)){aO.push(aJ.overlays[aN])}else{aJ.overlays[aN].map=null}}aJ.overlays=aO;
if(aO.length==0){ai(true)}else{ai()}};
this.removeAllOverlays= function(){if(aJ&&aJ.overlays&&(aJ.overlays.length<=0)){return}aJ.overlays=[];
ai(true)};
this.addRouteIDOverlay= function(aN){aJ.routeIDOverlay=aN};
this.removeRouteIDOverlay= function(){aJ.routeIDOverlay=null};
this.setShapeRendering= function(aN){if(!aN||!aN=="client"||!aN=="server"){throw new Exception("map.setShapeRendering() error: use 'client' or 'server'")}if(aN=="server"){ag()}else{ai()}aM=aN;
aJ.rendering=aN};
this.getShapeRendering= function(){return aM};
this.redraw= function(){ai()};
this.panWest= function(){u(GLOBALS.PAN_PIXEL_DISTANCE,0)};
this.panEast= function(){u(-GLOBALS.PAN_PIXEL_DISTANCE,0)};
this.panNorth= function(){u(0,GLOBALS.PAN_PIXEL_DISTANCE)};
this.panSouth= function(){u(0,-GLOBALS.PAN_PIXEL_DISTANCE)};
this.panSouthEast= function(){u(-GLOBALS.PAN_PIXEL_DISTANCE,-GLOBALS.PAN_PIXEL_DISTANCE)};
this.panNorthEast= function(){u(-GLOBALS.PAN_PIXEL_DISTANCE,GLOBALS.PAN_PIXEL_DISTANCE)};
this.panSouthWest= function(){u(GLOBALS.PAN_PIXEL_DISTANCE,-GLOBALS.PAN_PIXEL_DISTANCE)};
this.panNorthWest= function(){u(GLOBALS.PAN_PIXEL_DISTANCE,GLOBALS.PAN_PIXEL_DISTANCE)};
this.addScaleBar= function(aN){X=aN;
av.addMapControl(X)};
this.addMapTypeController= function(aN){if(!aN){throw new Exception("error adding mapTypeController to map")}E=aN;
av.addMapControl(E)};
this.setMapType= function(aO){if(!(aO==GLOBALS.STREET||aO==GLOBALS.HYBRID||aO==GLOBALS.SATELLITE)){throw new Exception("unsupported mapType. Use '"+GLOBALS.STREET+"' || '"+GLOBALS.HYBRID+"' || '"+GLOBALS.SATELLITE+"'")}aJ.mapType=aO;
var aN=false;
if(!k||Utilities.isObjectEmpty(k)){return}if(aO==GLOBALS.STREET){if(k[GLOBALS.HYBRID]){k[GLOBALS.HYBRID].hide()}if(k[GLOBALS.SATELLITE]){k[GLOBALS.SATELLITE].hide()}if(!k[GLOBALS.STREET]){M(GLOBALS.STREET);
aN=true}else{k[GLOBALS.STREET].show()}}else{if(aO==GLOBALS.HYBRID){if(k[GLOBALS.STREET]){k[GLOBALS.STREET].hide()}if(!k[GLOBALS.SATELLITE]){M(GLOBALS.SATELLITE);
aN=true}else{k[GLOBALS.SATELLITE].show()}if(!k[GLOBALS.HYBRID]){M(GLOBALS.HYBRID);
aN=true}else{k[GLOBALS.HYBRID].show()}}else{if(aO==GLOBALS.SATELLITE){if(k[GLOBALS.HYBRID]){k[GLOBALS.HYBRID].hide()}if(k[GLOBALS.STREET]){k[GLOBALS.STREET].hide()}if(!k[GLOBALS.SATELLITE]){M(GLOBALS.SATELLITE);
aN=true}else{k[GLOBALS.SATELLITE].show()}}}}if(aN){this.centerOnPosition(av.getCenterPosition())}};
this.addZoomController= function(aN){w=aN;
av.addMapControl(w);
if(R){w.frame.style.top="61px";
w.frame.style.left="21px"}};
this.addPanController= function(aN){R=aN;
av.addMapControl(R);
if(w){w.frame.style.top="61px";
w.frame.style.left="21px"}};
this.getZoomController= function(){return w};
this.getPanController= function(){return R};
this.resize= function(aW,aN,aU){var aQ=parseInt(av.mapDiv.style.width);
var aV=parseInt(av.mapDiv.style.height);
av.mapDiv.style.height=parseInt(aW)+v;
av.mapDiv.style.width=parseInt(aN)+v;
av.positionMapControls();
if(!L){return}aG=Math.ceil(parseInt(aW)/z)+y;
if(aG%2==0){aG++}ad=Math.ceil(parseInt(aN)/z)+y;
if(ad%2==0){ad++}for(var aR in k){if(k.hasOwnProperty(aR)){var aT=k[aR];
aT.resize(ad,aG)}}var aP=aw-aK-(parseInt(aN)-aQ)/2;
var aO=au-aq-(parseInt(aW)-aV)/2;
var aS=av.posToMercPix(S);
aS.x-=aP;
aS.y+=aO;
S=av.mercPixToPos(aS);
aK=aw;
aq=au;
if(typeof aU=="function"){aU(av.getCenterPosition())}};
this.getBoundingBox= function(){var aQ=av.posToMercPix(av.getCenterPosition());
var aO=(aG*z/2);
var aU=(ad*z/2);
var aR=new PixelPoint(aQ.x+aU,aQ.y+aO);
var aS=new PixelPoint(aQ.x-aU,aQ.y-aO);
var aN=av.mercPixToPos(aR);
var aP=av.mercPixToPos(aS);
var aT=new BoundingBox(aP,aN);
return aT};
this.getBoundingBoxViewable= function(){var aP=av.posToMercPix(av.getCenterPosition());
var aO=parseInt(av.mapDiv.style.height)/2;
var aU=parseInt(av.mapDiv.style.width)/2;
var aS=new PixelPoint(aP.x+aU,aP.y+aO);
var aR=new PixelPoint(aP.x-aU,aP.y-aO);
var aT=av.mercPixToPos(aS);
var aN=av.mercPixToPos(aR);
var aQ=new BoundingBox(aN,aT);
return aQ};
this.setOnlyLoadTilesInViewport= function(aN){Z=(aN)?true:false};
this.getOnlyLoadTilesInViewport= function(){return Z};
this.getGridSize= function(){return aG+" "+ad};
this.setTileBuffer= function(aN){if(aN){y=2}else{y=1}};
this.setTileBorder= function(aO){if(aO){ao=1}else{ao=0}for(var aP in k){if(k.hasOwnProperty(aP)){if(k[aP].tileArray){for(var aQ=0;
aQ<aG;
++aQ){for(var aN=0;
aN<ad;
++aN){k[aP].tileArray[aN][aQ].border=ao}}}}}};
this.getTileSize= function(){return z};
this.setTileSize= function(aN){z=parseInt(aN,10);
i=z;
if(L){q=true}};
this.positionToMapLayerPixel= function(aT){if(!aT||!S){throw new Exception("Map.positionToMapLayerPixel: bad input: "+aT)}var aP=av.posToMercPix(av.getCenterPosition());
var aN=parseInt(av.mapDiv.style.height)/2;
var aS=parseInt(av.mapDiv.style.width)/2;
var aQ=new PixelPoint(aP.x-aS+aw,aP.y+aN-au);
var aO=this.posToMercPix(aT);
var aR=new PixelPoint(-(aQ.roundX()-aO.roundX()),(aQ.roundY()-aO.roundY()));
return aR};
this.addMapControl= function(aQ){if(!aQ){throw new Exception("adding invalid control to map.")}else{if(!aQ.type||aQ.map){throw new Exception("adding invalid control to map, with properties type:"+aQ.type+" map:"+aQ.map)}}var aO=aQ.type;
if(this.existsMapControl(aO)){this.removeMapControl(aO)}a[aO]=aQ;
aQ.map=this;
var aN=aQ.appendThis();
if(aN){this.getMapDiv().appendChild(aN)}var aP=new deCarta.DOMDimensions(this.getMapDiv());
aQ.position(aP)};
this.existsMapControl= function(aN){if(a[aN]){return true}else{return false}};
this.removeMapControl= function(aN){if(!aN||!(aN&&a[aN])){return}var aO=a[aN];
a[aN]=undefined;
this.getMapDiv().removeChild(aO.removeThis());
Utilities.purge(aO)};
this.positionMapControls= function(){var aN;
var aO=new deCarta.DOMDimensions(this.getMapDiv());
for(aN in a){if(a.hasOwnProperty(aN)&&a[aN].position){a[aN].position(aO)}}};
this.getMapLayers= function(){return k};
this.hide= function(){this.getMapDiv().style.display="none"};
this.show= function(){this.getMapDiv().style.display="block";
this.positionMapControls()};
this.setCompatibility= function(aO,aN){switch(aO){case"restrictDragToDiv":if(aN){this.addEventListener("mouseout",t)}else{this.clearListeners("mouseout")}break;
default:throw new Exception("Map.setCompatibility: illegal flag: "+aO.toString()+" passed in as argument.");
break}};
function n(){am=new InfoWindow()}this.addEventListener= function(aP,aQ){var aO=false;
for(var aN=0;
aN<H.length;
aN++){if(H[aN]==aP){H[aP]=aQ;
aO=true;
break}}if(!aO){H.push(aP);
H[aP]=aQ}};
this.clearInstanceListeners= function(){for(var aN=0;
aN<H.length;
aN++){H[H[aN]]=null;
H[aN]=null}};
this.clearListeners= function(aO){for(var aN=0;
aN<H.length;
aN++){if(H[aN]==aO){H[H[aN]]=null;
H[aN]=null}}};
function ah(aP){if(!GLOBALS.ALLOWDOMEVENTS){return true}aP=aP?aP:window.event;
var aN;
if(aP.target){aN=aP.target}else{if(aP.srcElement){aN=aP.srcElement}}if(aN&&aN.nodeType==3){aN=aN.parentNode}if(deCarta.IdManager.checkTag(aN,"ignoreForMapEvents")){return true}if(aP.type=="mouseup"){if(H.mouseup){var aQ=new PixelPoint(aP.clientX,aP.clientY);
var aO=av.screenPixToPos(aQ);
H.mouseup(aO)}t(aP);
U=new Date()}else{if(aP.type=="dblclick"){O(aP)}else{if(aP.type=="click"&&((U-aj)<300)){B(aP)}}}}function B(aP){aP=aP?aP:window.event;
var aN;
if(aP.target){aN=aP.target}else{if(aP.srcElement){aN=aP.srcElement}}if(aN&&aN.nodeType==3){aN=aN.parentNode}if(deCarta.IdManager.checkTag(aN,"ignoreForMapEvents")){return false}av.mapDiv.style.cursor="pointer";
av.mapDiv.unselectable="on";
var aQ=new PixelPoint(aP.clientX,aP.clientY);
var aO=av.screenPixToPos(aQ);
if(H.rightclick&&(c&&aP.button==2)||(!c&&aP.which==3)){H.rightclick(aO);
return}if(H.dblclick&&aP.type=="dblclick"){H.dblclick(aO);
return}if(H.click&&aP.type=="click"){H.click(aO)}}function P(aP){if(!GLOBALS.ALLOWDOMEVENTS){return true}aP=aP?aP:window.event;
if((!c&&aP.which==3)||(c&&aP.button==2)){if(H.rightclick){B(aP)}return true}if((!c&&aP.which==2)||(c&&aP.button==4)){return true}var aN;
if(aP.target){aN=aP.target}else{if(aP.srcElement){aN=aP.srcElement}}if(aN&&aN.nodeType==3){aN=aN.parentNode}if(deCarta.IdManager.checkTag(aN,"ignoreForMapEvents")){return true}aj=new Date();
if(H.mousedown){var aQ=new PixelPoint(aP.clientX,aP.clientY);
var aO=av.screenPixToPos(aQ);
H.mousedown(aO)}aB=true;
av.mapDiv.style.cursor="move";
T=aP.clientX;
Q=aP.clientY;
document.body.onmousemove=r;
window.onmouseup=t;
return false}function t(aN){aB=false;
av.mapDiv.style.cursor="default";
document.body.onmousemove=null;
window.onmouseup=null;
if(aE&&H.moveend){H.moveend();
aE=false}if(X){X.calculate()}for(var aO in k){if(k.hasOwnProperty(aO)){k[aO].showTilesInViewport()}}af();
return false}function O(aT){var aR;
if(aT.target){aR=aT.target}else{if(aT.srcElement){aR=aT.srcElement}}if(aR&&aR.nodeType==3){aR=aR.parentNode}if(deCarta.IdManager.checkTag(aR,"ignoreForMapEvents")){return false}d=true;
if(H.dblclick){B(aT)}if(!ab){return}var aU=aT.clientX;
var aS=aT.clientY;
var aO=Utilities.getAbsoluteLeft(av.mapDiv)-Utilities.getScrollLeft();
var aN=Utilities.getAbsoluteTop(av.mapDiv)-Utilities.getScrollTop();
var aQ=(parseInt(aU-aO)-Math.round(parseInt(av.mapDiv.style.width)/2))*-1;
var aP=(parseInt(aS-aN)-Math.round(parseInt(av.mapDiv.style.height)/2))*-1;
u(aQ,aP)}function r(aQ){var aR;
var aP;
aQ=aQ?aQ:window.event;
if(!aE){if(H.movestart){H.movestart()}}if(H.move){aR=new PixelPoint(aQ.clientX,aQ.clientY);
aP=av.screenPixToPos(aR);
H.move(aP)}if(!V){if(aQ.type=="mouseup"&&H.mouseup){aR=new PixelPoint(aQ.clientX,aQ.clientY);
aP=av.screenPixToPos(aR);
H.mouseup(aP);
t(aQ)}return false}aE=true;
if(!aB){return false}var aO=aQ.clientX-T;
var aN=aQ.clientY-Q;
ac+=aO;
aa+=aN;
if(Math.abs(ac)>i||Math.abs(aa)>i){aI()}aw+=aO;
au+=aN;
al(aw,au);
T=aQ.clientX;
Q=aQ.clientY;
return false}function C(aP){if(!GLOBALS.ALLOWDOMEVENTS){return true}if(!aP){aP=window.event}var aO=aP.target?aP.target:aP.srcElement;
var aN=(aP.relatedTarget)?aP.relatedTarget:aP.toElement;
try{if(aN&&aO&&(aN.id==aO.id)){return true}}catch(aP){}if(H.mouseout){H.mouseout()}}this.getMapDiv= function(){return av.mapDiv};
this.getBubble= function(){return am};
this.getChooser= function(){return E};
this.getCopyright= function(){return az};
this.getTileDiv= function(){return L};
this.getZoomLck= function(){return F};
this.loaded= function(){return(L?true:false)};
this.hidePinsBeforeZoom= function(){N.operateOnData(function(aN){if(aN){aN.zoomHide()}})};
this.showPinsAfterZoom= function(){N.operateOnData(function(aN){if(aN){aN.zoomShow()}})};
function aD(){N.operateOnData(function(aN){if(!aN){return}aN.setPosition(aN.position);
aN.hideInfoWindow()});
av.showPinsAfterZoom()}function af(){N.operateOnData(function(aO){if(!aO){return}var aP=aO.setPosition(aO.position);
if(aP){var aN=aO.map.getInfoWindow();
var aQ=(aN)?aN.associatedPin:null;
if(aN&&aQ&&aQ.equals(aO)){aO.hideInfoWindow();
aO.showInfoWindow()}}});
av.showPinsAfterZoom()}this.zoomMap= function(aO,aR){if(!k[GLOBALS.STREET]&&!k[GLOBALS.SATELLITE]&&!k[GLOBALS.HYBRID]){return false}if(F){return false}if(typeof aR=="function"){f.zoomMap=aR}else{f.zoomMap=null}var aQ=w.selected;
if(aQ==aO){if(f.zoomMap){f.zoomMap();
f.zoomMap=undefined}return false}var aP=av.getCenterPosition();
var aS=Utilities.getRequestId();
w.setZoomLevel(aO);
av.hidePinsBeforeZoom();
F=true;
if(I&&(Math.abs(aQ-aO)<=2)){if(!ax){o()}if((aJ&&aJ.mapType=="HYBRID")||(!aJ.mapType&&Credentials.mapType=="HYBRID")){k[GLOBALS.HYBRID].hide()}for(var aT in k){if(k.hasOwnProperty(aT)){k[aT].zoom(aQ-aO,ax,ac,aa)}}}var aN=aJ.createMapRequest(aP,z,aS,aQ,aO,null,Utilities.getRequestId());
K();
JSRequest.send(aN,p);
return true};
function ay(){return false}this.setCountryCode= function(aN){if(!aN){throw new Exception("error calling Map.setCountryCode()")}Credentials.ISOCountryCode=aN};
this.getGXPixelPoint= function(aN){this.posToMercPix(aN)};
this.posToMercPix= function(aQ){var aO=Utilities.radsPerPixelAtZoom(z,w.getGXConvertedZoomLevel());
var aP=Utilities.lat2pix(aQ.lat,aO);
var aN=Utilities.lon2pix(aQ.lon,aO);
return new PixelPoint(aN,aP)};
this.mercPixToPos= function(aN){var aQ=Utilities.radsPerPixelAtZoom(z,w.getGXConvertedZoomLevel());
var aO=Utilities.pix2lat(aN.y,aQ);
var aP=Utilities.pix2lon(aN.x,aQ);
return new Position(aO,aP)};
this.screenPixToPos= function(aQ){var aR=aQ.y-Utilities.getAbsoluteTop(av.mapDiv)+Utilities.getScrollTop();
var aO=aQ.x-Utilities.getAbsoluteLeft(av.mapDiv)+Utilities.getScrollLeft();
var aT=av.posToMercPix(av.getCenterPosition());
var aU=aT.x-(parseInt(av.mapDiv.style.width)/2);
var aV=aT.y+(parseInt(av.mapDiv.style.height)/2);
var aP=new PixelPoint(aU,aV);
var aS=new PixelPoint(aP.x+aO,aP.y-aR);
var aN=av.mercPixToPos(aS);
return aN};
function Y(aP){var aU=aP.XLS.Response.requestID;
var aZ,aN;
var aW=aP.XLS.Response.PortrayMapResponse.TileGrid[0].Pan;
var aQ;
if(deCarta.JSONParser.parseErrors(aP)){aQ=null}else{for(var aR=0;
aR<aW.length;
aR++){if(aW[aR].direction=="E"){an.x=parseFloat(aW[aR].numTiles)*z;
aN=aW[aR].toLon}else{an.y=-parseFloat(aW[aR].numTiles)*z;
aZ=aW[aR].toLat}}var aX=aP.XLS.Response.PortrayMapResponse.TileGrid[0].CenterContext.CenterPoint.pos.content;
var aT=aP.XLS.Response.PortrayMapResponse.TileGrid[1].CenterContext.CenterPoint.pos.content;
if(!aZ&&!aN){S=new Position(aX)}else{S=new Position(aZ,aN)}var aO=aP.XLS.Response.PortrayMapResponse.TileGrid[0].CenterContext.Radius.content;
w.setRadius((parseFloat((aO))/1000)*ad);
var aS=0;
try{aS=parseInt(aP.XLS.Response.PortrayMapResponse.TileGrid[0].GridLayer.maxImageHostAliases,10)}catch(aV){}var aY=[aP.XLS.Response.PortrayMapResponse.TileGrid[0].Tile.Map.Content.URL,aP.XLS.Response.PortrayMapResponse.TileGrid[1].Tile.Map.Content.URL];
m(aY,aS);
aD();
aQ=av.getCenterPosition()}if((aU>=0)&&f[aU]){f[aU](aQ);
f[aU]=undefined}}function p(aN){Y(aN);
F=false;
if(H.zoomend){H.zoomend()}if(f.zoomMap){f.zoomMap();
f.zoomMap=undefined}}function m(aN,aR){if(X){X.calculate()}W();
aR=aR||0;
var aQ=new deCarta.MapLayerReferenceUrl((aN[1]));
aQ.createGlobeXplorerUrl();
var aO=new deCarta.MapLayerReferenceUrl((aN[0]),aR);
aO.createDeCartaTransparentUrl();
aO.setParameter("config",aJ.transparentConfiguration);
var aP=new deCarta.MapLayerReferenceUrl((aN[0]),aR);
aP.createDeCartaUrl();
aP.setParameter("config",aJ.configuration);
if(k[GLOBALS.SATELLITE]){k[GLOBALS.SATELLITE].populate(aQ)}if(k[GLOBALS.HYBRID]){k[GLOBALS.HYBRID].populate(aO)}if(k[GLOBALS.STREET]){k[GLOBALS.STREET].populate(aP)}ac-=an.x;
aa-=an.y;
ai()}function K(){if(!L){aL();
return}}function aL(){var aN="decarta-mapviewport";
if(!av.mapDiv.className){av.mapDiv.className=aN}else{av.mapDiv.className+=" "+aN}Utilities.setUnselectable(av.mapDiv);
av.mapDiv.oncontextmenu=ay;
av.mapDiv.onmousedown=P;
av.mapDiv.onmouseout=C;
av.mapDiv.onmouseup=ah;
av.mapDiv.ondblclick=ah;
av.mapDiv.onclick=ah;
L=document.createElement("div");
var aO="decarta-tiles";
L.id=aO;
L.className=aO;
L.style.top=0+v;
L.style.left=0+v;
Utilities.setUnselectable(L);
av.mapDiv.appendChild(L);
if(!w){w=new ZoomController();
av.addMapControl(w);
w.hide()}if(!am){n()}L.appendChild(am.bubble);
D()}function D(){if(k[GLOBALS.SATELLITE]||k[GLOBALS.HYBRID]||k[GLOBALS.STREET]){throw new Exception("buildDefaultTileGrid called on existing tile grid")}if(aJ.mapType==GLOBALS.STREET){M(GLOBALS.STREET)}else{if(aJ.mapType==GLOBALS.HYBRID){M(GLOBALS.HYBRID)}else{if(aJ.mapType==GLOBALS.SATELLITE){M(GLOBALS.SATELLITE)}}}}function M(aO){if(aO!=GLOBALS.SATELLITE&&aO!=GLOBALS.HYBRID&&aO!=GLOBALS.STREET){throw new Exception("initDefaultMapLayer called with bad value: "+aO)}var aP=parseInt(av.mapDiv.style.height);
var aN=parseInt(av.mapDiv.style.width);
aG=Math.ceil(aP/z)+y;
if(aG%2==0){aG++}ad=Math.ceil(aN/z)+y;
if(ad%2==0){ad++}at=-((ad*z)-aN)/2;
ap=-((aG*z)-aP)/2;
if(aO==GLOBALS.SATELLITE){k[GLOBALS.SATELLITE]=new deCarta.MapLayer(ad,aG,at,ap,z,"decarta-satellite",1,av);
k[GLOBALS.SATELLITE].show();
k[GLOBALS.SATELLITE].appendTiles(L);
return}else{if(aO==GLOBALS.HYBRID){if(!k[GLOBALS.SATELLITE]){k[GLOBALS.SATELLITE]=new deCarta.MapLayer(ad,aG,at,ap,z,"decarta-satellite",1,av);
k[GLOBALS.SATELLITE].show();
k[GLOBALS.SATELLITE].appendTiles(L)}k[GLOBALS.HYBRID]=new deCarta.MapLayer(ad,aG,at,ap,z,"decarta-transparent",2,av);
k[GLOBALS.HYBRID].show();
k[GLOBALS.HYBRID].appendTiles(L);
return}else{if(aO==GLOBALS.STREET){k[GLOBALS.STREET]=new deCarta.MapLayer(ad,aG,at,ap,z,"decarta-street",3,av);
k[GLOBALS.STREET].show();
k[GLOBALS.STREET].appendTiles(L);
return}}}}function o(){ax=new deCarta.ZoomLayer(ad,aG,z);
ax.appendTiles(L)}function J(){if(!L){throw new Exception("resizeMap called without an existing map.")}for(var aN in k){if(k.hasOwnProperty(aN)){k[aN].hide();
k[aN].destroy();
k[aN]=undefined}}k={};
L.style.top=0+v;
L.style.left=0+v;
D();
aw=0;
au=0;
T=0;
Q=0;
aB=false;
ac=0;
aa=0}function W(){aK=aw;
aq=au;
var aP=parseInt(av.mapDiv.style.height);
var aO=parseInt(av.mapDiv.style.width);
aG=Math.ceil(aP/z)+y;
if(aG%2==0){aG++}ad=Math.ceil(aO/z)+y;
if(ad%2==0){ad++}at=-((ad*z)-aO)/2;
ap=-((aG*z)-aP)/2;
for(var aQ in k){if(k.hasOwnProperty(aQ)){k[aQ].reset(-aw-an.x,-au-an.y,at,ap)}}var aN=[];
if(aJ.mapType==GLOBALS.STREET){aN.push(k[GLOBALS.STREET])}else{if(aJ.mapType==GLOBALS.HYBRID){aN.push(k[GLOBALS.SATELLITE]);
aN.push(k[GLOBALS.HYBRID])}else{if(aJ.mapType==GLOBALS.SATELLITE){aN.push(k[GLOBALS.SATELLITE])}else{throw new Exception("Map.reset: encountered unexpected _xmlRecFac.mapType of "+aJ.mapType)}}}A(aN);
T=0;
Q=0;
aB=false;
ac=0;
aa=0}function A(aV){var aR=aV;
var aP=aR.length;
var aS;
if(!F||!I){for(aS=0;
aS<aP;
aS++){aR[aS].show()}return}for(aS=0;
aS<aP;
aS++){aR[aS].delayedLoading=true}var aN=250;
var aT=ad*aG;
var aU=aT*0.8;
var aO=6;
setTimeout(aQ,aN);
function aQ(){if(aR[0].numTilesLoaded>=aU||aO<=0){for(aS=0;
aS<aP;
aS++){aR[aS].show();
aR[aS].delayedLoading=false}if(ax){ax.hide()}return}aO--;
setTimeout(aQ,aN)}}function aI(){var aN;
if(ac<=-i){ac=ac+i;
for(aN in k){if(k.hasOwnProperty(aN)){k[aN].rotateTiles(0,1)}}ai()}else{if(ac>=i){ac=ac-i;
for(aN in k){if(k.hasOwnProperty(aN)){k[aN].rotateTiles(0,-1)}}ai()}}if(aa<=-i){aa=aa+i;
for(aN in k){if(k.hasOwnProperty(aN)){k[aN].rotateTiles(-1,0)}}ai()}else{if(aa>=i){aa=aa-i;
for(aN in k){if(k.hasOwnProperty(aN)){k[aN].rotateTiles(1,0)}}ai()}}}function al(aN,aO){L.style.left=aN+v;
L.style.top=aO+v}function u(aN,aO){if(ar){return}if(aN>1){L.style.left=parseInt(L.style.left)+1+v}else{if(aN<-1){L.style.left=parseInt(L.style.left)-1+v}}if(aO>1){L.style.top=parseInt(L.style.top)+1+v}else{if(aO<-1){L.style.top=parseInt(L.style.top)-1+v}}ar=true;
j(aN,aO,true)}function j(aN,aS,aR){if(aR){aH=aN;
aF=aS}var aP=Math.round(Math.abs(aH)*0.3);
var aO=Math.round(Math.abs(aF)*0.3);
if(aP>0||aO>0){if(aH<0){aH+=aP;
ac-=aP;
aw-=aP}else{if(aH>0){aH-=aP;
ac+=aP;
aw+=aP}}if(aF<0){aF+=aO;
aa-=aO;
au-=aO}else{if(aF>0){aF-=aO;
aa+=aO;
au+=aO}}al(aw,au);
if(Math.abs(ac)>i||Math.abs(aa)>i){aI()}setTimeout(j,g)}else{if(H.moveend){H.moveend()}if(f.panToPosition){f.panToPosition(av.getCenterPosition());
f.panToPosition=undefined}if(X){X.calculate()}if(d&&ae){av.getZoomController().zoomInOneLevel()}ar=false;
d=false;
ai();
for(var aQ in k){if(k.hasOwnProperty(aQ)){k[aQ].showTilesInViewport()}}af()}}function ak(){if(!av.getTileDiv()){return null}var aN=document.getElementById("canvas");
if(aN){aN.style.position="relative";
aN.style.zIndex=100;
av.getTileDiv().appendChild(aN)}else{aN=document.getElementsByTagName("body")[0].appendChild(document.createElement("canvas"));
aN.id="canvas";
if(typeof G_vmlCanvasManager!="undefined"){aN=G_vmlCanvasManager.initElement(aN)}aN.style.position="relative";
aN.style.zIndex=100;
av.getTileDiv().appendChild(aN)}return aN}function ag(){if(aM=="server"){return}var aO=ak();
var aN=aO.getContext("2d");
aN.clearRect(0,0,aO.width,aO.height)}function ai(a5){a5=a5||false;
if(aJ.overlays.length==0&&!a5){return}if(ar||!av.getTileDiv()){return}var aP=ak();
var bg,bf;
var bh=av.getGridSize().split(" ");
var bi=parseInt(bh[1])*z;
var ba=parseInt(bh[0])*z;
aP.width=bi;
aP.height=ba;
var bm=av.mapDiv;
var aO=-(bi-parseInt(bm.style.width))/2;
var aN=-(ba-parseInt(bm.style.height))/2;
var a9=L;
aP.style.left=aO-parseInt(a9.style.left)+v;
aP.style.top=aN-parseInt(a9.style.top)+v;
var aU=aP.getContext("2d");
aU.lineCap="round";
aU.lineJoin="round";
var a7=w.getZoomLevel();
var aR=Utilities.radsPerPixelAtZoomLevel(z,a7);
var aT=av.getBoundingBox();
var aQ=new Position(aT.maxPosition.lat+" "+aT.minPosition.lon);
var aV=Math.round(Utilities.lat2pix(aQ.lat,aR));
var aW=Math.round(Utilities.lon2pix(aQ.lon,aR));
var bn=aJ.overlays;
for(var a4=0;
a4<bn.length;
a4++){var aS=bn[a4];
if(aS.rendering=="server"||(aM=="server"&&aS.rendering!="client")){continue}if(!aS.isVisible){continue}aU.lineWidth=aS.getBorderWidth();
aU.fillStyle="rgba("+aS.fillColorRed+","+aS.fillColorGreen+","+aS.fillColorBlue+","+aS.fillOpacityFloat+")";
aU.strokeStyle="rgba("+aS.borderColorRed+","+aS.borderColorGreen+","+aS.borderColorBlue+","+aS.strokeOpacityFloat+")";
var aY=[];
aU.beginPath();
if(aS.type=="polygon"||aS.type=="line"){var bl=[];
var bk=[];
if(aS.type=="line"){aU.lineWidth=aS.getWidth();
if(aS.clip||aA){aY=aS.getMercPixelsClipped(a7,z,aT)}else{aY[0]=aS.getMercPixels(a7,z)}}else{if(aS.type=="polygon"){aY[0]=aS.getMercPixels(a7,z)}else{throw new Exception("Map inner function draw: fell through to unacceptable situation with line/polygon client side rendering.")}}var aX=aY.length;
for(bg=0;
bg<aX;
bg++){var a3=aY[bg].length;
bl[bg]=[];
bk[bg]=[];
for(bf=0;
bf<a3;
bf++){var bd=aY[bg][bf];
bl[bg][bf]=parseInt(aW-bd.x);
bk[bg][bf]=parseInt(aV-bd.y);
if(bf==0){aU.moveTo((bl[bg][bf]*-1),(bk[bg][bf]))}else{aU.lineTo((bl[bg][bf]*-1),(bk[bg][bf]))}}}aU.stroke();
if(aS.type=="line"){continue}if(!c){aU.fill()}else{aU.beginPath();
var bj=bl.length;
for(bg=0;
bg<bj;
bg++){var bc=bl[bg].length;
for(bf=0;
bf<bc;
bf++){if(bf==0){aU.moveTo((bl[bg][bf]*-1),(bk[bg][bf]))}else{aU.lineTo((bl[bg][bf]*-1),(bk[bg][bf]))}}}aU.closePath();
aU.fill()}}else{if(aS.type=="circle"){var a2=aS.getPosition();
var aZ=Math.round(Utilities.lat2pix(a2.lat,aR));
var a1=Math.round(Utilities.lon2pix(a2.lon,aR));
var a8=parseInt(aW-a1);
var a6=parseInt(aV-aZ);
var bb=aS.getRadius().getDegrees();
var be=Math.round(Utilities.lat2pix(a2.lat+bb,aR));
var a0=parseInt(be-aZ);
aU.arc((a8*-1),a6,Math.abs(a0),0,Math.PI*2,true);
aU.fill();
if(!c){aU.stroke()}else{aU.arc((a8*-1),a6,Math.abs(a0),0,Math.PI*2,true);
aU.stroke()}}}}}}deCarta.MapLayer= function(b,j,f,i,g,d,c,a){this.init(b,j,f,i,g,d,c,a)};
deCarta.MapLayer.prototype.owner=null;
deCarta.MapLayer.prototype.onlyLoadTilesInViewport=false;
deCarta.MapLayer.prototype.xTiles=null;
deCarta.MapLayer.prototype.yTiles=null;
deCarta.MapLayer.prototype.xOffset=0;
deCarta.MapLayer.prototype.yOffset=0;
deCarta.MapLayer.prototype.leftIndex=0;
deCarta.MapLayer.prototype.topIndex=0;
deCarta.MapLayer.prototype.tileSize=null;
deCarta.MapLayer.prototype.layerName="mapLayer";
deCarta.MapLayer.prototype.cssClass="decarta-maptile";
deCarta.MapLayer.prototype.cssZIndex=0;
deCarta.MapLayer.prototype.tileArray=null;
deCarta.MapLayer.prototype.srcOnHidden=null;
deCarta.MapLayer.prototype.srcOnError=null;
deCarta.MapLayer.prototype.isVisible=false;
deCarta.MapLayer.prototype.numTilesLoaded=0;
deCarta.MapLayer.prototype.delayedLoading=false;
deCarta.MapLayer.prototype.refUrl=null;
deCarta.MapLayer.prototype.init= function(d,j,g,b,m,f,c,a){var k,i;
this.xTiles=d;
this.yTiles=j;
this.xOffset=g;
this.yOffset=b;
this.tileSize=m;
if(f){this.layerName=f}if(c){this.cssZIndex=c}this.owner=a;
this.onlyLoadTilesInViewport=this.owner.getOnlyLoadTilesInViewport();
this.tileArray=[];
this.setDefaultSrc();
for(k=0;
k<this.xTiles;
k++){this.tileArray[k]=[];
for(i=0;
i<this.yTiles;
i++){this.tileArray[k][i]=this.mapTileFactory(k,i)}}};
deCarta.MapLayer.prototype.setDefaultSrc= function(){if(!Utilities.ie6){this.srcOnHidden=Credentials.transparentPNG;
this.srcOnError=Credentials.transparentPNG}else{this.srcOnHidden=Credentials.transparentGIF;
this.srcOnError=Credentials.transparentGIF}};
deCarta.MapLayer.prototype.mapTileOnError= function(b){var a;
if(!b){a=window.event.srcElement}else{a=b.currentTarget}if(a&&a.src&&a.srcOnError){a.src=a.srcOnError}};
deCarta.MapLayer.prototype.mapTileFactory= function(a,f){var d=Math.floor(this.xTiles/2);
var b=Math.floor(this.yTiles/2);
var c=document.createElement("IMG");
c.ownerLayer=this;
c.fromCenterX=a-d;
c.fromCenterY=b-f;
c.className=this.cssClass;
if(this.srcOnHidden){c.altSrc=this.srcOnHidden;
c.src=this.srcOnHidden}else{c.altSrc="";
c.src=""}c.style.display="none";
c.style.zIndex=this.cssZIndex;
c.style.height=this.tileSize+"px";
c.style.width=this.tileSize+"px";
c.onerror=this.mapTileOnError;
c.style.left=(a*this.tileSize)+this.xOffset+"px";
c.style.top=(f*this.tileSize)+this.yOffset+"px";
Utilities.setUnselectable(c);
c.coords=new Object();
c.coords.ul=null;
c.coords.ur=null;
c.coords.lr=null;
c.coords.ll=null;
c.tileViewed=false;
c.setTileCoords=deCarta.MapLayer.setTileCoords;
c.isTileInViewPort=deCarta.MapLayer.isTileInViewPort;
c.setSrc=deCarta.MapLayer.setSrc;
if(Utilities.ie6){c.loader=document.createElement("img");
c.loader.owner=c;
c.loader.loadTile= function(){this.owner.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.src+"')";
this.owner.src=Credentials.transparentGIF;
this.owner.ownerLayer.numTilesLoaded++;
return true};
c.loader.onload=c.loader.loadTile;
c.onload= function(){c.style.display="block"}}else{c.loader=document.createElement("img");
c.loader.owner=c;
c.loader.loadTile= function(){this.owner.src=this.src;
this.owner.ownerLayer.numTilesLoaded++;
return true};
c.loader.onload=c.loader.loadTile;
c.onload= function(){this.style.display="block"}}return c};
deCarta.MapLayer.prototype.showTilesInViewport= function(){if(this.onlyLoadTilesInViewport){for(var a=0;
a<this.xTiles;
a++){for(var c=0;
c<this.yTiles;
c++){var b=this.tileArray[a][c];
if(!b.tileViewed){b.setSrc(b.altSrc)}}}}};
deCarta.MapLayer.setSrc= function(a){this.altSrc=a;
if(this.ownerLayer.isVisible||this.ownerLayer.delayedLoading){if(this.ownerLayer.onlyLoadTilesInViewport&&!this.isTileInViewPort()){this.tileViewed=false;
if(this.ownerLayer.srcOnHidden){this.src=this.ownerLayer.srcOnHidden}else{this.style.display="none"}}else{this.tileViewed=true;
if(this.ownerLayer.srcOnHidden){this.src=this.ownerLayer.srcOnHidden;
this.loader.src=a}else{this.style.display="none";
this.src=a}}}};
deCarta.MapLayer.setTileCoords= function(a){if(!a){return}var d=a.dynamicProps;
var v=d.llMin.split(",");
var t=parseInt(d.northing,10);
var w=parseInt(d.easting,10);
var k=this.ownerLayer;
var y=k.owner;
var q=y.getZoomController().getZoomLevel();
var m=y.getTileSize();
var z=Utilities.radsPerPixelAtZoomLevel(m,q);
var A=new Position(parseFloat(v[0]),parseFloat(v[1]));
var f=Math.round(Utilities.lat2pix(A.lat,z));
var c=Math.round(Utilities.lon2pix(A.lon,z));
var p=f+(t*m)+(this.fromCenterY*m);
var i=c+(w*m)+(this.fromCenterX*m);
var j=p+k.tileSize;
var b=i+k.tileSize;
var u=Utilities.pix2lat(p,z);
var g=Utilities.pix2lon(i,z);
var o=Utilities.pix2lat(j,z);
var r=Utilities.pix2lon(b,z);
this.coords.ul=new Position(o,g);
this.coords.ur=new Position(o,r);
this.coords.lr=new Position(u,r);
this.coords.ll=new Position(u,g)};
deCarta.MapLayer.isTileInViewPort= function(){var c;
var d=this.coords;
var g=this.ownerLayer.owner.getBoundingBoxViewable();
var b=false;
for(c in d){if(d.hasOwnProperty(c)){if(g.contains(d[c])){b=true;
break}}}if(!b){var a={};
a.ul=new Position(g.maxPosition.lat,g.minPosition.lon);
a.ur=new Position(g.maxPosition.lat,g.maxPosition.lon);
a.lr=new Position(g.minPosition.lat,g.maxPosition.lon);
a.ll=new Position(g.minPosition.lat,g.minPosition.lon);
var f=new BoundingBox(d.ll,d.ur);
for(c in a){if(a.hasOwnProperty(c)){if(f.contains(a[c])){b=true;
break}}}}if(b){return true}else{return false}};
deCarta.MapLayer.prototype.appendTiles= function(b){for(var a=0;
a<this.xTiles;
a++){for(var c=0;
c<this.yTiles;
c++){b.appendChild(this.tileArray[a][c])}}};
deCarta.MapLayer.prototype.hide= function(){if(!this.isVisible){return}var a,b;
this.isVisible=false;
for(a=0;
a<this.xTiles;
a++){for(b=0;
b<this.yTiles;
b++){this.tileArray[a][b].style.display="none"}}};
deCarta.MapLayer.prototype.show= function(){if(this.isVisible){return}var a,f;
this.isVisible=true;
for(a=0;
a<this.xTiles;
a++){for(f=0;
f<this.yTiles;
f++){var c=this.tileArray[a][f];
var b=c.altSrc.replace(/\:80/,"");
var d=c.src.replace(/\:80/,"");
if(b!=d&&this.refUrl){c.setSrc(c.altSrc)}c.style.display="block"}}};
deCarta.MapLayer.prototype.reset= function(c,a,i,b){this.refUrl=null;
if(i){this.xOffset=i}if(b){this.yOffset=b}var k,j;
var g,f,d;
var m="px";
c=c||0;
a=a||0;
this.numTilesLoaded=0;
this.isVisible=false;
this.leftIndex=0;
this.topIndex=0;
this.updateFromCenterVals();
for(k=0;
k<this.xTiles;
k++){g=this.xOffset+c+(k*this.tileSize);
for(j=0;
j<this.yTiles;
j++){d=this.tileArray[k][j];
d.tileViewed=false;
d.style.display="none";
f=this.yOffset+a+(j*this.tileSize);
d.style.left=g+m;
d.style.top=f+m}}};
deCarta.MapLayer.prototype.refresh= function(){var a,c;
for(a=0;
a<this.xTiles;
a++){for(c=0;
c<this.yTiles;
c++){var b=this.tileArray[a][c];
b.setSrc(this.refUrl.getRelSrc(b.fromCenterY,b.fromCenterX))}}};
deCarta.MapLayer.prototype.rotateTiles= function(n,j){var p,k;
var m=this.yTiles;
var f=this.xTiles;
var r=this.tileSize;
var c;
var i;
var q=0;
var a;
var d;
if(n){if(n>0){this.topIndex-=1;
if(this.topIndex<0){this.topIndex=m-1}i=this.topIndex;
q-=m*r;
a=1}else{i=this.topIndex;
this.topIndex+=1;
if(this.topIndex>=m){this.topIndex=0}q+=m*r;
a=-1}this.updateFromCenterVals();
this.refUrl.pan(a,0);
var g=[];
for(p=0;
p<f;
p++){g.push(this.tileArray[p][i])}o(g);
for(p=0;
p<g.length;
p++){c=g[p];
d=parseInt(c.style.top)+q;
c.style.top=(d)+"px";
if(this.onlyLoadTilesInViewport){c.setTileCoords(this.refUrl)}c.setSrc(this.refUrl.getRelSrc(c.fromCenterY,c.fromCenterX))}return}if(j){if(j>0){i=this.leftIndex;
this.leftIndex+=1;
if(this.leftIndex>=f){this.leftIndex=0}q+=f*r;
a=1}else{this.leftIndex-=1;
if(this.leftIndex<0){this.leftIndex=f-1}i=this.leftIndex;
q-=f*r;
a=-1}this.updateFromCenterVals();
this.refUrl.pan(0,a);
g=[];
for(k=0;
k<m;
k++){g.push(this.tileArray[i][k])}o(g);
for(k=0;
k<g.length;
k++){c=g[k];
d=parseInt(c.style.left)+q;
c.style.left=(d)+"px";
if(this.onlyLoadTilesInViewport){c.setTileCoords(this.refUrl)}c.setSrc(this.refUrl.getRelSrc(c.fromCenterY,c.fromCenterX))}}function o(v){for(var u=1;
u<v.length;
u++){for(var t=0;
t<v.length-1;
t++){if((Math.abs(v[t].fromCenterX)+Math.abs(v[t].fromCenterY))>(Math.abs(v[t+1].fromCenterX)+Math.abs(v[t+1].fromCenterY))){b(v,t,t+1)}}}}function b(u,w,t){var v;
v=u[w];
u[w]=u[t];
u[t]=v}};
deCarta.MapLayer.prototype.zoom= function(d,c,b,a){if(!this.isVisible){return}c.zoom(d,this,b,a)};
deCarta.MapLayer.prototype.populate= function(f){this.refUrl=f;
var k,g,b;
var d=[];
var c=0;
var m;
for(k=0;
k<this.xTiles;
k++){for(g=0;
g<this.yTiles;
g++){d[c]=this.tileArray[k][g];
c++}}m=d.length;
j(d);
for(b=0;
b<m;
b++){if(this.onlyLoadTilesInViewport){d[b].setTileCoords(f)}d[b].setSrc(f.getRelSrc(d[b].fromCenterY,d[b].fromCenterX))}function j(o){for(var n=1;
n<o.length;
n++){for(var i=0;
i<o.length-1;
i++){if((Math.abs(o[i].fromCenterX)+Math.abs(o[i].fromCenterY))>(Math.abs(o[i+1].fromCenterX)+Math.abs(o[i+1].fromCenterY))){a(o,i,i+1)}}}}function a(n,p,i){var o;
o=n[p];
n[p]=n[i];
n[i]=o}};
deCarta.MapLayer.prototype.updateFromCenterVals= function(){var k=this.xTiles;
var o=this.yTiles;
var b=Math.floor(k/2);
var g=-b;
var a=Math.floor(o/2);
var f=-a;
var r=this.leftIndex;
var c=this.topIndex;
var j,i;
if(r>b){j=r-b-1}else{j=r+b}if(c>a){i=c-a-1}else{i=c+a}var d=this.tileArray;
var q,n;
for(q=0;
q<k;
q++){for(n=0;
n<o;
n++){var m=d[q][n];
var t=q-j;
if(t>b){m.fromCenterX=t-k}else{if(t<g){m.fromCenterX=t+k}else{m.fromCenterX=t}}var p=i-n;
if(p>a){m.fromCenterY=p-o}else{if(p<f){m.fromCenterY=p+o}else{m.fromCenterY=p}}}}};
deCarta.MapLayer.prototype.resize= function(f,i){if(f==this.xTiles&&i==this.yTiles){return}var b=[];
var j=parseInt(this.tileArray[this.leftIndex][this.topIndex].style.top);
var a=parseInt(this.tileArray[this.leftIndex][this.topIndex].style.left);
var d=Math.floor(this.xTiles/2);
var c=Math.floor(this.yTiles/2);
var m=0;
var g=0;
var n;
var k;
for(m=0;
m<this.xTiles;
m++){for(g=0;
g<this.yTiles;
g++){n=(m-this.leftIndex);
if(n<0){n+=this.xTiles}k=(g-this.topIndex);
if(k<0){k+=this.yTiles}if(n>=f||k>=i){this.owner.getTileDiv().removeChild(this.tileArray[m][g]);
this.tileArray[m][g]=null}}}for(m=0;
m<f;
m++){b[m]=[];
for(g=0;
g<i;
g++){if(m<this.xTiles&&g<this.yTiles){n=(this.leftIndex+m)%this.xTiles;
k=(this.topIndex+g)%this.yTiles;
b[m][g]=this.tileArray[n][k]}else{b[m][g]=this.mapTileFactory(m,g);
b[m][g].style.top=(j+g*this.tileSize)+"px";
b[m][g].style.left=(a+m*this.tileSize)+"px";
if(this.onlyLoadTilesInViewport){b[m][g].setTileCoords(this.refUrl)}b[m][g].setSrc(this.refUrl.getRelSrc(c-g,m-d));
this.owner.getTileDiv().appendChild(b[m][g])}}}this.refUrl.pan(-(i-this.yTiles)/2,(f-this.xTiles)/2);
this.tileArray=b;
this.xTiles=f;
this.yTiles=i;
this.leftIndex=0;
this.topIndex=0;
this.updateFromCenterVals()};
deCarta.MapLayer.prototype.destroy= function(){var a,b;
for(a=0;
a<this.xTiles;
a++){for(b=0;
b<this.yTiles;
b++){Utilities.purge(this.tileArray[a][b])}}};
deCarta.ZoomLayer= function(a,c,b){this.init(a,c,b)};
deCarta.ZoomLayer.prototype.framesTotal=3;
deCarta.ZoomLayer.prototype.msPerFrame=100;
deCarta.ZoomLayer.prototype.xTiles=null;
deCarta.ZoomLayer.prototype.yTiles=null;
deCarta.ZoomLayer.prototype.tileSize=null;
deCarta.ZoomLayer.prototype.layerName="zoomLayer";
deCarta.ZoomLayer.prototype.cssClass="decarta-maptile";
deCarta.ZoomLayer.prototype.cssZIndex=0;
deCarta.ZoomLayer.prototype.tileArray=null;
deCarta.ZoomLayer.prototype.srcOnHidden=null;
deCarta.ZoomLayer.prototype.srcOnError=null;
deCarta.ZoomLayer.prototype.isVisible=false;
deCarta.ZoomLayer.prototype.init= function(b,f,c){var a,d;
this.xTiles=b;
this.yTiles=f;
this.tileSize=c;
this.tileArray=[];
this.setDefaultSrc();
for(a=0;
a<this.xTiles;
a++){this.tileArray[a]=[];
for(d=0;
d<this.yTiles;
d++){this.tileArray[a][d]=this.mapTileFactory(a,d)}}};
deCarta.ZoomLayer.prototype.setDefaultSrc= function(){if(!Utilities.ie6){this.srcOnHidden=Credentials.transparentPNG;
this.srcOnError=Credentials.transparentPNG}else{this.srcOnHidden=Credentials.transparentGIF;
this.srcOnError=Credentials.transparentGIF}};
deCarta.ZoomLayer.prototype.mapTileOnError= function(b){var a;
if(!b){a=window.event.srcElement}else{a=b.currentTarget}if(a&&a.src&&a.srcOnError){a.src=a.srcOnError}};
deCarta.ZoomLayer.prototype.mapTileFactory= function(a,g){var b="px";
var f=Math.floor(this.xTiles/2);
var c=Math.floor(this.yTiles/2);
var d=document.createElement("IMG");
d.fromCenterX=a-f;
d.fromCenterY=c-g;
d.className=this.cssClass;
d.altSrc=this.srcOnHidden;
d.src=this.srcOnHidden;
d.style.zIndex=this.cssZIndex;
d.style.height=this.tileSize+b;
d.style.width=this.tileSize+b;
d.onerror=this.mapTileOnError;
Utilities.setUnselectable(d);
d.setSrc=deCarta.ZoomLayer.setSrc;
return d};
deCarta.ZoomLayer.setSrc= function(a){this.src=a};
deCarta.ZoomLayer.prototype.appendTiles= function(b){for(var a=0;
a<this.xTiles;
a++){for(var c=0;
c<this.yTiles;
c++){b.appendChild(this.tileArray[a][c])}}};
deCarta.ZoomLayer.prototype.hide= function(){if(!this.isVisible){return}var a,b;
this.isVisible=false;
for(a=0;
a<this.xTiles;
a++){for(b=0;
b<this.yTiles;
b++){this.tileArray[a][b].setSrc(this.srcOnHidden);
this.tileArray[a][b].style.display="none"}}};
deCarta.ZoomLayer.prototype.show= function(){if(this.isVisible){return}var a,b;
this.isVisible=true;
for(a=0;
a<this.xTiles;
a++){for(b=0;
b<this.yTiles;
b++){this.tileArray[a][b].style.display="block"}}};
deCarta.ZoomLayer.prototype.transferSrcFromMapLayer= function(c){var a,g,f,d;
var b="px";
for(a=0;
a<c.xTiles;
a++){f=a+c.leftIndex;
if(f>=c.xTiles){f-=c.xTiles}for(g=0;
g<c.yTiles;
g++){d=g+c.topIndex;
if(d>=c.yTiles){d-=c.yTiles}this.tileArray[a][g].setSrc(this.srcOnHidden);
this.tileArray[a][g].style.top=c.tileArray[f][d].style.top;
this.tileArray[a][g].style.left=c.tileArray[f][d].style.left;
this.tileArray[a][g].style.height=c.tileSize+b;
this.tileArray[a][g].style.width=c.tileSize+b;
this.tileArray[a][g].setSrc(c.tileArray[f][d].src)}}};
deCarta.ZoomLayer.prototype.zoom= function(n,c,v,u){var w=this;
w.show();
w.transferSrcFromMapLayer(c);
c.hide();
var g=v;
var f=u;
var i=Math.pow(2,n);
var b=n>0?+1:-1;
var q=this.framesTotal;
var o=this.msPerFrame;
var k=Math.floor((i*w.tileSize-w.tileSize)/(q));
var d=-1*Math.floor(w.xTiles/2);
var r=d;
var j=-1*Math.floor(w.yTiles/2);
var a=j;
var m;
var p;
if(n>0){m=Math.floor(i*b*g/(2*q));
p=Math.floor(i*b*f/(2*q))}else{m=Math.floor(i*b*g/(q));
p=Math.floor(i*b*f/(q))}t();
function t(){var z,C;
var B="px";
for(z=0;
z<w.xTiles;
z++){for(C=0;
C<w.yTiles;
C++){var A=w.tileArray[z][C];
A.style.width=parseInt(A.style.width)+k+B;
A.style.height=parseInt(A.style.height)+k+B;
A.style.left=parseInt(A.style.left)-k/2+d*k+m+B;
A.style.top=parseInt(A.style.top)-k/2+j*k+p+B;
j+=1}d+=1;
j=a}d=r;
q-=1;
if(q){setTimeout(t,o)}}};
deCarta.ZoomLayer.prototype.destroy= function(){var a,b;
for(a=0;
a<this.xTiles;
a++){for(b=0;
b<this.yTiles;
b++){Utilities.purge(this.tileArray[a][b])}}};
deCarta.MapLayerReferenceUrl= function(a,b){this.init(a,b)};
deCarta.MapLayerReferenceUrl.prototype.baseUrl=null;
deCarta.MapLayerReferenceUrl.prototype.imageHosts=null;
deCarta.MapLayerReferenceUrl.prototype.numImageHosts=null;
deCarta.MapLayerReferenceUrl.prototype.nextImageHost=null;
deCarta.MapLayerReferenceUrl.prototype.staticProps=null;
deCarta.MapLayerReferenceUrl.prototype.dynamicProps=null;
deCarta.MapLayerReferenceUrl.prototype.urlregx=new RegExp("\\amp;","g");
deCarta.MapLayerReferenceUrl.prototype.init= function(a,b){this.baseUrl=a;
this.dynamicProps={};
this.dynamicProps.northing=0;
this.dynamicProps.easting=0;
this.llMax=null;
this.llMin=null;
this.dynamicProps.format="";
this.dynamicProps.config="";
this.imageHosts=[];
this.nextImageHost=0;
if(b){this.numImageHosts=b+1}else{this.numImageHosts=1}};
deCarta.MapLayerReferenceUrl.prototype.getFullHostName= function(){var d=this.baseUrl.indexOf("?");
var c=this.baseUrl.substr(0,d+1);
var b=/^[\S]*\/\/([\S]+)/;
var a=c.replace(b,"$1");
var f=a.split("/")[0];
return f};
deCarta.MapLayerReferenceUrl.prototype.getProtocol= function(){var c=this.baseUrl.indexOf("?");
var b=this.baseUrl.substr(0,c+1);
var a=/^([a-zA-Z:]*\/\/)([\s\S]*)/;
var d=b.replace(a,"$1");
return d};
deCarta.MapLayerReferenceUrl.prototype.generateHostAliases= function(){var d;
this.imageHosts=[];
var k=this.baseUrl.indexOf("?");
var m=this.baseUrl.substr(0,k+1);
if(this.numImageHosts==1){this.imageHosts[0]=m+this.staticProps;
return}else{var g=m.split(".");
if(g.length>1){var o=g[0];
var f=g.slice(1).join(".");
o=o.replace(/-[0-9]+$/,"");
this.imageHosts[0]=o+"."+f+this.staticProps;
for(d=1;
d<this.numImageHosts;
d++){if(d<10){this.imageHosts[d]=o+"-0"+d+"."+f+this.staticProps;
continue}else{this.imageHosts[d]=o+"-"+d+"."+f+this.staticProps}}}else{var n=this.getProtocol();
var a=this.getFullHostName();
var b="";
if(a.split(":").length>1){b=":"+a.split(":")[1];
a=a.split(":")[0]}a=a.replace(/-[0-9]+$/,"");
var c=this.baseUrl.indexOf("/",n.length);
var j=this.baseUrl.substr(c,k+1-c);
this.imageHosts[0]=n+a+b+j+this.staticProps;
for(d=1;
d<this.numImageHosts;
d++){if(d<10){this.imageHosts[d]=n+a+"-0"+d+b+j+this.staticProps;
continue}else{this.imageHosts[d]=n+a+"-"+d+b+j+this.staticProps}}}}};
deCarta.MapLayerReferenceUrl.prototype.createGlobeXplorerUrl= function(){var c,d,j;
var b=[];
var f=this.baseUrl.indexOf("?")+1;
var a=this.baseUrl.slice(f).split("&");
var g=a.length;
for(c=0;
c<g;
c++){d=a[c];
if(d.indexOf("N=")==0){this.dynamicProps.northing=parseInt(d.split("=")[1],10);
d=null}else{if(d.indexOf("E=")==0){this.dynamicProps.easting=parseInt(d.split("=")[1],10);
d=null}else{if(d.indexOf("LLMIN=")==0||d.indexOf("LL=")==0){this.dynamicProps.llMin=d.split("=")[1]}else{if(d.indexOf("key=")==0){if(d.length>4&&!Credentials.dgkey){}else{j=Credentials.dgkey||"";
d="key="+j}}}}}if(d!=null){b.push(d)}}this.staticProps=b.join("&");
this.generateHostAliases()};
deCarta.MapLayerReferenceUrl.prototype.createDeCartaTransparentUrl= function(){var c,d;
var b=[];
this.baseUrl=this.baseUrl.replace(this.urlregx,"");
var f=this.baseUrl.indexOf("?")+1;
var a=this.baseUrl.slice(f).split("&");
var g=a.length;
for(c=0;
c<g;
c++){d=a[c];
if(d.indexOf("N=")==0){this.dynamicProps.northing=parseInt(d.split("=")[1],10);
d=null}else{if(d.indexOf("E=")==0){this.dynamicProps.easting=parseInt(d.split("=")[1],10);
d=null}else{if(d.indexOf("FORMAT=")==0){this.dynamicProps.format="PNG";
d=null}else{if(d.indexOf("CONFIG=")==0){this.dynamicProps.config=d.split("=")[1];
d=null}else{if(d.indexOf("LLMIN=")==0||d.indexOf("LL=")==0){this.dynamicProps.llMin=d.split("=")[1]}}}}}if(d!=null){b.push(d)}}this.staticProps=b.join("&");
this.generateHostAliases()};
deCarta.MapLayerReferenceUrl.prototype.createDeCartaUrl= function(){var c,d;
var b=[];
this.baseUrl=this.baseUrl.replace(this.urlregx,"");
var f=this.baseUrl.indexOf("?")+1;
var a=this.baseUrl.slice(f).split("&");
var g=a.length;
for(c=0;
c<g;
c++){d=a[c];
if(d.indexOf("N=")==0){this.dynamicProps.northing=parseInt(d.split("=")[1],10);
d=null}else{if(d.indexOf("E=")==0){this.dynamicProps.easting=parseInt(d.split("=")[1],10);
d=null}else{if(d.indexOf("FORMAT=")==0){this.dynamicProps.format=d.split("=")[1];
d=null}else{if(d.indexOf("CONFIG=")==0){this.dynamicProps.config=d.split("=")[1];
d=null}else{if(d.indexOf("LLMIN=")==0||d.indexOf("LL=")==0){this.dynamicProps.llMin=d.split("=")[1]}}}}}if(d!=null){b.push(d)}}this.staticProps=b.join("&");
this.generateHostAliases()};
deCarta.MapLayerReferenceUrl.prototype.getNextImageHost= function(){if(this.numImageHosts==1){return this.imageHosts[0]}else{var a=this.imageHosts[this.nextImageHost++];
if(this.nextImageHost>=this.numImageHosts){this.nextImageHost=0}return a}};
deCarta.MapLayerReferenceUrl.prototype.pan= function(a,b){this.dynamicProps.northing+=a;
this.dynamicProps.easting+=b};
deCarta.MapLayerReferenceUrl.prototype.getRelSrc= function(g,b){var f=this.getNextImageHost();
var d=this.dynamicProps.northing+g;
var j=this.dynamicProps.easting+b;
var a=this.dynamicProps.config||"";
if(a){a="&CONFIG="+a}var c=this.dynamicProps.format||"";
if(c){c="&FORMAT="+c}var i=f+c+a+"&N="+d+"&E="+j;
return i};
deCarta.MapLayerReferenceUrl.prototype.setParameter= function(k,j){var c;
var g=this.dynamicProps;
for(c in g){if(g.hasOwnProperty(c)){if(c==k){g[k]=j;
return}}}var f=this.staticProps.split("&");
var d=f.length;
var b=k+"=";
var a=false;
for(c=0;
c<d;
c++){if(f[c].indexOf(b)==0){f[c]=b+j;
a=true;
break}}if(!a){f[d]=b+j}this.staticProps=f.join("&");
this.generateHostAliases()};
deCarta.MapLayerReferenceUrl.prototype.getParameter= function(j){var b;
var g=null;
var f=this.dynamicProps;
for(b in f){if(f.hasOwnProperty(b)){if(b==j){g=f[j];
return g}}}var d=this.staticProps.split("&");
var c=d.length;
var a=j+"=";
for(b=0;
b<c;
b++){if(d[b].indexOf(a)==0){g=d[b].split("=")[1];
return g}}return null};
deCarta.MapLayerReferenceUrl.prototype.deleteParameter= function(c){var g;
var d=this.dynamicProps;
for(g in d){if(d.hasOwnProperty(g)){if(g==c){d[c]=null;
return true}}}var j=this.staticProps.split("&");
var m=[];
var a;
var b=false;
var f=j.length;
var k=c+"=";
for(g=0;
g<f;
g++){a=j[g];
if(a.indexOf(k)==0){a=null;
b=true}if(a){m.push(a)}}if(b){this.staticProps=m.join("&");
this.generateHostAliases();
return true}else{return false}};
function MapTypeController(){this.init()}MapTypeController.prototype.map=null;
MapTypeController.prototype.type="MapTypeController";
MapTypeController.prototype.frame=null;
MapTypeController.prototype.cssClass="decarta-mapTypeController";
MapTypeController.prototype.linkCssClass="decarta-mapTypeControllerLink";
MapTypeController.prototype.streetLabel=GLOBALS.STREET;
MapTypeController.prototype.hybridLabel=GLOBALS.HYBRID;
MapTypeController.prototype.satelliteLabel=GLOBALS.SATELLITE;
MapTypeController.prototype.init= function(){};
MapTypeController.prototype.build= function(){this.frame=document.createElement("DIV");
this.frame.id=this.cssClass;
this.frame.className=this.cssClass;
deCarta.IdManager.setTag(this.frame,"ignoreForMapEvents");
var c=document.createElement("span");
c.innerHTML=" | ";
deCarta.IdManager.setTag(c,"ignoreForMapEvents");
var a=document.createElement("span");
a.innerHTML=" | ";
deCarta.IdManager.setTag(a,"ignoreForMapEvents");
var f=document.createElement("a");
f.className=this.linkCssClass;
f.innerHTML=this.streetLabel;
f.href="#";
f.mapType=GLOBALS.STREET;
f.owner=this;
f.onclick=this.handleClick;
deCarta.IdManager.setTag(f,"ignoreForMapEvents");
var b=document.createElement("a");
b.className=this.linkCssClass;
b.innerHTML=this.hybridLabel;
b.href="#";
b.mapType=GLOBALS.HYBRID;
b.owner=this;
b.onclick=this.handleClick;
deCarta.IdManager.setTag(b,"ignoreForMapEvents");
var d=document.createElement("a");
d.className=this.linkCssClass;
d.innerHTML=this.satelliteLabel;
d.href="#";
d.owner=this;
d.mapType=GLOBALS.SATELLITE;
d.onclick=this.handleClick;
deCarta.IdManager.setTag(d,"ignoreForMapEvents");
this.frame.appendChild(f);
this.frame.appendChild(c);
this.frame.appendChild(b);
this.frame.appendChild(a);
this.frame.appendChild(d)};
MapTypeController.prototype.appendThis= function(){if(!this.frame){this.build()}return this.frame};
MapTypeController.prototype.removeThis= function(){this.map=null;
return this.frame};
MapTypeController.prototype.position= function(a){this.frame.style.top="5px";
this.frame.style.left=a.width-207+"px"};
MapTypeController.prototype.handleClick= function(){if(!GLOBALS.ALLOWDOMEVENTS){return true}this.owner.map.setMapType(this.mapType);
return false};
deCarta.Math={};
deCarta.Math.MercatorSpherical= function(){var d=null;
var b=null;
var i=null;
var j=null;
function a(m){return(m*Math.PI/180)}function k(m){return(m*180/Math.PI)}function f(n){var q=a(n);
var o=Math.sin(q);
var p=Math.log((1+o)/(1-o))/2;
var m=k(p);
return m}function c(n){var q=a(n);
var o=Math.exp(2*q);
var p=Math.asin((o-1)/(o+1));
var m=k(p);
return m}function g(){if(!d||(!b&&b!==0)||(!i&&i!==0)){return false}j=i/Math.abs(d.maxPosition.lon-d.minPosition.lon);
return true}this.getBoundingBox= function(){return d};
this.setBoundingBox= function(m){if(m.minPosition==undefined||m.maxPosition==undefined){throw new Exception("deCarta.Math.MercatorSpherical.setPixelHeight passed invalid boundingBox of: "+m)}else{d=m}};
this.getPixelHeight= function(){return b};
this.setPixelHeight= function(m){var n=parseInt(m,10);
if(isNaN(n)||(n<0)){throw new Exception("deCarta.Math.MercatorSpherical.setPixelHeight passed invalid height of: "+m)}else{b=n}};
this.getPixelWidth= function(){return i};
this.setPixelWidth= function(n){var m=parseInt(n,10);
if(isNaN(m)||(m<0)){throw new Exception("deCarta.Math.MercatorSpherical.setPixelWidth passed invalid width of: "+n)}else{i=m}};
this.positionToPixels= function(p){if(!g()||!p||(!p.lat&&p.lat!=0)||(!p.lon&&p.lon!=0)){throw new Exception("deCarta.Math.MercatorSpherical.positionToPixels: need to setBoundingBox, setPixelHeight and setPixelWidth prior to calculating positionToPixels")}var n=new PixelPoint(0,0);
n.x=j*(d.minPosition.lon-p.lon)*-1;
var o=f(d.maxPosition.lat)-f(p.lat);
var m=f(d.maxPosition.lat)-f(d.minPosition.lat);
n.y=b*o/m;
return n};
this.pixelsToPosition= function(n){if(!g()||!n||(!n.x&&n.x!=0)||(!n.y&&n.y!=0)){throw new Exception("deCarta.Math.MercatorSpherical.positionToPixels: need to setBoundingBox, setPixelHeight and setPixelWidth prior to calculating pixelsToPositiion")}var p=new Position(0,0);
p.lon=d.minPosition.lon+(n.x/j);
var m=f(d.maxPosition.lat)-f(d.minPosition.lat);
var o=(n.y/b)*m;
p.lat=c(f(d.maxPosition.lat)-o);
return p}};
deCarta.Math.MercatorEllipsoidal= function(){var d=null;
var b=null;
var i=null;
var j=null;
function a(m){return(m*Math.PI/180)}function k(m){return(m*180/Math.PI)}function f(p){var o=0.081819190842;
var r=a(p);
var m=o*Math.sin(r);
var q=Math.log(Math.pow(((1-m)/(1+m)),o/2)*Math.tan((Math.PI/4)+(r/2)));
var n=k(q);
return n}function c(o){var r=a(o);
var q=Math.pow(Math.E,-r);
var n=t();
for(var p=0;
p<6;
p++){n=u(n)}var m=k(n);
return m;
function t(){return Math.PI/2-2*Math.atan(q)}function u(B){var w=0.0818191908426216;
var v=w*Math.sin(B);
var A=q*Math.pow((1-v)/(1+v),w/2);
var z=(Math.PI/2)-(2*Math.atan(A));
return z}}function g(){if(!d||(!b&&b!==0)||(!i&&i!==0)){return false}j=i/Math.abs(d.maxPosition.lon-d.minPosition.lon);
return true}this.getBoundingBox= function(){return d};
this.setBoundingBox= function(m){if(m.minPosition==undefined||m.maxPosition==undefined){throw new Exception("deCarta.Math.MercatorEllipsoidal.setPixelHeight passed invalid boundingBox of: "+m)}else{d=m}};
this.getPixelHeight= function(){return b};
this.setPixelHeight= function(m){var n=parseInt(m,10);
if(isNaN(n)||(n<0)){throw new Exception("deCarta.Math.MercatorEllipsoidal.setPixelHeight passed invalid height of: "+m)}else{b=n}};
this.getPixelWidth= function(){return i};
this.setPixelWidth= function(n){var m=parseInt(n,10);
if(isNaN(m)||(m<0)){throw new Exception("deCarta.Math.MercatorEllipsoidal.setPixelWidth passed invalid width of: "+n)}else{i=m}};
this.positionToPixels= function(p){if(!g()||!p||(!p.lat&&p.lat!=0)||(!p.lon&&p.lon!=0)){throw new Exception("deCarta.Math.MercatorEllipsoidal.positionToPixels: need to setBoundingBox, setPixelHeight and setPixelWidth prior to calculating positionToPixels")}var n=new PixelPoint(0,0);
n.x=j*(d.minPosition.lon-p.lon)*-1;
var o=f(d.maxPosition.lat)-f(p.lat);
var m=f(d.maxPosition.lat)-f(d.minPosition.lat);
n.y=b*o/m;
return n};
this.pixelsToPosition= function(n){if(!g()||!n||(!n.x&&n.x!=0)||(!n.y&&n.y!=0)){throw new Exception("deCarta.Math.MercatorEllipsoidal.positionToPixels: need to setBoundingBox, setPixelHeight and setPixelWidth prior to calculating pixelsToPositiion")}var p=new Position(0,0);
p.lon=d.minPosition.lon+(n.x/j);
var m=f(d.maxPosition.lat)-f(d.minPosition.lat);
var o=(n.y/b)*m;
p.lat=c(f(d.maxPosition.lat)-o);
return p}};
deCarta.Math.greatCircleDist= function(n,m,a){if(!n||!m){throw new Exception("Utilities.greatCircleDist: must have valid coords")}var d=Math.PI*n.lat/180;
var i=Math.cos(d);
var j=Math.PI*n.lon/180;
var c=Math.PI*m.lat/180;
var g=Math.cos(c);
var f=Math.PI*m.lon/180;
var k=Math.abs(Math.abs(j)-Math.abs(f));
var p=6372795;
var b;
var o=2*Math.asin(Math.sqrt(Math.pow(Math.sin(((c-d)/2)),2)+(i*g*Math.pow(Math.sin(k/2),2))));
b=p*o;
if(!a||a.value=="M"){return b}switch(a.value){case"KM":b/=1000;
break;
case"MI":b/=1609;
break;
case"FT":b*=3.28084;
break;
default:throw new Exception("Utilities.greatCircleDist: unexpected uom value of: "+a.value);
break}return b};
deCarta.Math.pointInPolygon= function(i,g){function p(t,v,u){if(v.lat<u.lat){if(t){return false}else{return true}}else{if(!t){return false}else{return true}}}function r(u,v,t){if(v.lon<t.lon){if(!u){return false}else{return true}}else{if(u){return false}else{return true}}}var b;
var j;
var a=0;
var q=0;
if(g.lat<i[0].lat){j=true}else{j=false}if(g.lon<i[0].lon){b=false}else{b=true}for(var n in i){var f=r(b,g,i[n]);
var m=p(j,g,i[n]);
if(f&&m){var c=i[n].lat-i[n-1].lat;
var d=i[n].lon-i[n-1].lon;
var k=c/d;
c=g.lat-i[n-1].lat;
d=g.lon-i[n-1].lon;
var o=c/d;
if((b&&!j)||(!b&&!j)){if(o>k){q++}else{a++}}if((!b&&j)||(b&&j)){if(o<k){q++}else{a++}}b=!b;
j=!j}else{if(f){b=!b}if(m){j=!j;
if(b){a++}else{q++}}}}if(a%2==0){return false}else{return true}};
deCarta.Math.headingFromPositions= function(c,a){if(!c||(!c.lat&&c.lat!=0)||(!c.lon&&c.lon!=0)||!a||(!a.lat&&a.lat!=0)||(!a.lon&&a.lon!=0)){throw new Exception("deCarta.Math.headingFromPosition: bad arguments.")}var f=Math.PI/180;
var i=c.lat*f;
var d=c.lon*f;
var g=a.lat*f;
var b=a.lon*f;
var j=Math.atan2(Math.sin(b-d)*Math.cos(g),Math.cos(i)*Math.sin(g)-Math.sin(i)*Math.cos(g)*Math.cos(b-d));
return j/f};
deCarta.ObjectToJSON= function(m,d,a){var f;
var j="";
var c="";
if(typeof a==="number"){for(f=0;
f<a;
f+=1){c+=" "}}else{if(typeof a==="string"){c=a}}var k=d;
if(d&&typeof d!=="function"&&(typeof d!=="object"||typeof d.length!=="number")){throw new Exception("Bad replacer in deCarta.ObjectToJSON")}return g("",{"":m});
function b(i){var n={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};
var o=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
o.lastIndex=0;
return o.test(i)?'"'+i.replace(o,function(p){var q=n[p];
return typeof q==="string"?q:"\\u"+("0000"+p.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+i+'"'}function g(w,r){var p,o,y,n,t=j,q,u=r[w];
if(u&&typeof u==="object"&&typeof u.toJSON==="function"){u=u.toJSON(w)}if(typeof k==="function"){u=k.call(r,w,u)}switch(typeof u){case"string":return b(u);
case"number":return isFinite(u)?String(u):"null";
case"boolean":case"null":return String(u);
case"object":if(!u){return"null"}j+=c;
q=[];
if(Object.prototype.toString.apply(u)==="[object Array]"){n=u.length;
for(p=0;
p<n;
p+=1){q[p]=g(p,u)||"null"}y=q.length===0?"[]":j?"[\n"+j+q.join(",\n"+j)+"\n"+t+"]":"["+q.join(",")+"]";
j=t;
return y}if(k&&typeof k==="object"){n=k.length;
for(p=0;
p<n;
p+=1){o=k[p];
if(typeof o==="string"){y=g(o,u);
if(y){q.push(b(o)+(j?": ":":")+y)}}}}else{for(o in u){if(Object.hasOwnProperty.call(u,o)){y=g(o,u);
if(y){q.push(b(o)+(j?": ":":")+y)}}}}y=q.length===0?"{}":j?"{\n"+j+q.join(",\n"+j)+"\n"+t+"}":"{"+q.join(",")+"}";
j=t;
return y}}};
function OpenSearchQuery(){this.url=null;
this.callback=null;
this.params=null}OpenSearchQuery.prototype.setCallback= function(a){this.callback=a};
OpenSearchQuery.prototype.setURL= function(a){this.url=a};
OpenSearchQuery.prototype.setParams= function(b){this.params="?";
for(var a in b){if(b.hasOwnProperty(a)){this.params+=a+"="+b[a]+"&"}}};
OpenSearchQuery.prototype.send= function(){var b=this;
if(!Utilities.ie){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalPreferencesWrite UniversalBrowserWrite UniversalPreferencesRead UniversalBrowserRead")}catch(c){}}var a=new XMLHttpRequest();
a.open("POST",this.url+this.params,true);
a.onreadystatechange= function(){if(a.readyState==4){b.callback(a.responseText)}};
a.send(null)};
function POI(d,a,b,c,f){this.name=d;
this.position=a;
this.address=b;
this.phoneNumber=c;
this.distance=null;
this.properties=f||{};
this.toString= function(){return this.name+" "+this.position+" "+this.address+" "+this.phoneNumber}}function POIQuery(){this.xmlRecFac=new deCarta.XMLStringBuilder();
var b=[];
var a=this;
this.authenticate= function(d,c){if(!d||!c||d==""||c==""){throw new Exception("Error authenticating POIQuery, invalid parameters.");
return false}Credentials.clientName=d;
Credentials.clientPassword=c;
this.xmlRecFac.clientName=d;
this.xmlRecFac.clientPassword=c};
this.query= function(f,i,c){var g=Utilities.getRequestId();
if(typeof i=="function"){b[g]=i}else{throw new Exception("POIQuery.query: callBack must be a function, arg was: "+i)}var d=this.xmlRecFac.createPOIRequest(f,g);
JSRequest.send(d,a.queryCallback,null,c)};
this.fullDetailsQuery= function(i,g,c){var f=Utilities.getRequestId();
if(typeof g=="function"){b[f]=g}else{throw new Exception("POIQuery.fullDetailsQuery: callBack must be a function, arg was: "+g)}var d=this.xmlRecFac.createFullDetailsPOIRequest(i,f);
JSRequest.send(d,a.fullDetailsQueryCallback,null,c)};
this.queryCallback= function(j){var k=false;
var d;
var f=[];
var g;
if(deCarta.JSONParser.parseErrors(j)){g=j.XLS.Response.requestID}else{if(deCarta.Array.isArray(j.XLS.Response)){g=j.XLS.Response[0].requestID;
k=true;
for(d=0;
d<j.XLS.Response.length;
d++){f.push([]);
c(j.XLS.Response[d].DirectoryResponse.POIContext)}}else{g=j.XLS.Response.requestID;
c(j.XLS.Response.DirectoryResponse.POIContext)}}if((g>=0)&&b[g]){b[g](f);
b[g]=undefined}function c(o){var m;
if(!o){return}else{if(o.length==undefined){m=[];
m.push(o)}else{m=o}}for(var i=0;
i<m.length;
i++){var n=deCarta.JSONParser.parsePOI(m[i]);
if(k){f[d].push(n)}else{f.push(n)}}}};
this.fullDetailsQueryCallback= function(d){var c=d.XLS.Response.requestID;
if((c>=0)&&b[c]){b[c]((d.XLS.Response.DirectoryResponse.POIContext.POI));
b[c]=undefined}}}function PanController(){this.init()}PanController.prototype.map=null;
PanController.prototype.type="PanController";
PanController.prototype.frame=null;
PanController.prototype.cssClass="decarta-panController";
PanController.prototype.init= function(){};
PanController.prototype.build= function(){this.frame=document.createElement("DIV");
this.frame.id=this.cssClass;
this.frame.className=this.cssClass;
var i=document.createElement("img");
i.className="decarta-panController-north";
i.src=Credentials.imgPath+"z2t_pan_north.png";
i.onclick=this.map.panNorth;
var b=document.createElement("img");
b.className="decarta-panController-south";
b.src=Credentials.imgPath+"z2t_pan_south.png";
b.onclick=this.map.panSouth;
var d=document.createElement("img");
d.className="decarta-panController-east";
d.src=Credentials.imgPath+"z2t_pan_east.png";
d.onclick=this.map.panEast;
var a=document.createElement("img");
a.className="decarta-panController-west";
a.src=Credentials.imgPath+"z2t_pan_west.png";
a.onclick=this.map.panWest;
var g=document.createElement("img");
g.className="decarta-panController-center";
g.src=Credentials.imgPath+"z2t_pan_center_gray.png";
var f=this;
g.onclick= function(){if(g.src.indexOf("loading-ball.gif")>-1){return}g.src=Credentials.imgPath+"loading-ball.gif";
var j= function(n){n=n.coords||n;
var o=new Position(n.latitude+" "+n.longitude);
return o};
var c= function(n){g.src=Credentials.imgPath+"z2t_pan_center_gray.png";
f.map.panToPosition(j(n))};
var k= function(){g.src=Credentials.imgPath+"z2t_pan_center_gray.png";
alert("unable to position")};
if(navigator.geolocation){navigator.geolocation.getCurrentPosition(c,k)}else{if(window.google&&google.gears){var m=google.gears.factory.create("beta.geolocation");
if((m)&&(m.getPermission())){m.getCurrentPosition(c,k)}}else{g.src=Credentials.imgPath+"z2t_pan_center_gray.png"}}};
this.frame.appendChild(i);
this.frame.appendChild(b);
this.frame.appendChild(d);
this.frame.appendChild(a);
this.frame.appendChild(g)};
PanController.prototype.appendThis= function(){if(!this.frame){this.build()}return this.frame};
PanController.prototype.removeThis= function(){this.map=null;
return this.frame};
PanController.prototype.position= function(a){};
function Pin(f,k,y,z){if(!f){throw new Exception("Error instantiating Pin, must at least provide a Position.");
return false}
var q = this;
var m=new Array();
var A=170;
var E=null;
var C=null;
var w=false;
var i=false;
var n=null;
var g=null;
var j=null;
this.type="pin";
this.position=null;
if(f&&f.clone){this.position=f.clone()}this.icon=z||new Icon(Credentials.pinIconPath,12,12,24,24);
this.map=null;
this.isVisible=true;
this.id="";
this.pinImg=null;
this.pinImg=document.createElement("img");
var d="decarta-pin";
this.pinImg.className=d;
this.pinImg.style.position="absolute";
this.pinImg.id=f.toString();
this.pinImg.src=this.icon.src;
this.pinImg.style.width=parseInt(this.icon.width)+"px";
this.pinImg.style.height=parseInt(this.icon.height)+"px";
Pin.zIndexCounter++;
this.pinImg.style.zIndex=Pin.zIndexCounter;
this.pinImg.style.cursor="pointer";
this.pinImg.style.display="block";
this.pinImg.msg=k||"";
if(Utilities.ie6&&this.pinImg.src.match(new RegExp("\\bpng\\b","g"))){Utilities.fixPng(this.pinImg)}deCarta.IdManager.setTag(this.pinImg,"ignoreForMapEvents");
this.poi=null;
this.hoverIconOn=null;
this.hoverIconOff=null;
this.pinTxt=null;
this.pinTxt=document.createElement("DIV");
this.pinTxt.id="decarta-textoverlay";
this.pinTxt.innerHTML=this.icon.overlay.text;
this.pinTxt.className=this.icon.overlay.className;
this.pinTxt.style.position="absolute";
this.pinTxt.style.color=this.icon.overlay.color;
this.pinTxt.style.fontSize=this.icon.overlay.size;
this.pinTxt.style.fontFamily=this.icon.overlay.fontFamily;
if(this.icon.overlay.text==""){this.pinTxt.style.display="none"}else{this.pinTxt.style.display="block"}Pin.zIndexCounter++;
this.pinTxt.style.zIndex=Pin.zIndexCounter;
this.pinTxt.style.cursor="pointer";
deCarta.IdManager.setTag(this.pinTxt,"ignoreForMapEvents");
this.animateDrop=false;
this.dropSpeed=30;
this.animate= function(F,G){if(F=="DROP"){this.animateDrop=true;
if(G=="FAST"){this.dropSpeed=20}else{this.dropSpeed=35}}};
this.animateDropPosition=300;
function p(){if(q.animateDropPosition>0){q.pinImg.style.top=(parseInt(q.pinImg.style.top)+10)+"px";
q.pinTxt.style.top=(parseInt(q.pinTxt.style.top)+10)+"px";
q.animateDropPosition-=10;
setTimeout(p,q.dropSpeed)}}this.getZIndex= function(){return(this.pinImg.style.zIndex)};
this.setZIndex= function(G){var F=parseInt(G,10);
if(!isNaN(F)){this.pinImg.style.zIndex=F;
if(this.pinTxt){this.pinTxt.style.zIndex=F+1}}else{this.pinImg.style.zIndex=0;
if(this.pinTxt){this.pinTxt.style.zIndex=1}}};
this.setId= function(F){this.id=F};
this.getId= function(){return this.id};
this.setCursorStyle= function(F){this.pinImg.style.cursor=F;
this.pinTxt.style.cursor=F};
this.getCursorStyle= function(){return this.pinImg.style.cursor};
this.setIcon= function(F){q.pinImg.src=F.src;

if(q.icon.anchorY==F.anchorY&&q.icon.anchorX==F.anchorX&&F._previousY&&F._previousX){
    q.pinImg.style.top=(parseInt(q.pinImg.style.top)+F._previousY-F.anchorY)+"px";
    q.pinImg.style.left=(parseInt(q.pinImg.style.left)+F._previousX-F.anchorX)+"px";
}
else
{
    //q.pinImg.style.top=(parseInt(q.pinImg.style.top)+q.icon.anchorY-F.anchorY)+"px";
    //q.pinImg.style.left=(parseInt(q.pinImg.style.left)+q.icon.anchorX-F.anchorX)+"px";
}

q.pinImg.style.width=F.width+"px";
q.pinImg.style.height=F.height+"px";
q.icon=F;

if(F.overlay.text!=""){

    q.pinTxt.style.display="block";
    q.pinTxt.innerHTML=this.icon.overlay.text;
    q.pinTxt.style.position="absolute";

    if(F.overlay.className){
      q.pinTxt.style.className=F.overlay.className
    }
      
    if(F.overlay.color){
        q.pinTxt.style.color=F.overlay.color
    }
    if(F.overlay.size){
        q.pinTxt.style.fontSize=F.overlay.size
    }

    if(F.overlay.fontFamily){
        q.pinTxt.style.fontFamily=F.overlay.fontFamily
    }

    //q.pinTxt.style.left=(parseInt(q.pinImg.style.left)+parseInt(q.icon.overlay.anchorX))+"px";
    //q.pinTxt.style.top=(parseInt(q.pinImg.style.top)+parseInt(q.icon.overlay.anchorY))+"px"

}else{
    q.pinTxt.innerHTML="";
    q.pinTxt.style.display="none"
}

if(Utilities.ie6&&this.pinImg.src.match(new RegExp("\\bpng\\b","g"))){
    var G=this.pinImg.src;
    this.pinImg.src=Credentials.transparentGIF;
    this.pinImg.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+G+"',sizingMethod='scale')"}};
    this.getIcon= function(){return q.icon};
    this.setX= function(F){var G=F-q.icon.anchorX;
    
if(q.pinImg.offsetLeft==G){return false}q.pinImg.style.left=G+"px";
if(q.pinTxt){q.pinTxt.style.left=(G+q.icon.overlay.anchorX)+"px"}return true};
this.setY= function(G){if(q.animateDrop){q.pinImg.style.top=(G-q.icon.anchorY-q.animateDropPosition)+"px";
if(q.pinTxt){q.pinTxt.style.top=(G-q.icon.anchorY+q.icon.overlay.anchorY-q.animateDropPosition)+"px"}}else{var F=G-q.icon.anchorY;
if(q.pinImg.offsetTop==F){return false}q.pinImg.style.top=(F)+"px";
if(q.pinTxt){q.pinTxt.style.top=(F+q.icon.overlay.anchorY)+"px"}}if(q.animateDrop){p()}return true};
this.getPosition= function(){return q.position};
this.setPosition= function(I){if(q.map!=null){var H=q.map.positionToMapLayerPixel(I);
var G=q.setX(H.x);
var F=q.setY(H.y)}q.position=I;
return((G||F)?true:false)};
this.setMessage= function(F){q.pinImg.msg=F;
if(q.map&&q.pinImg&&q.map.getInfoWindow()&&(q==q.map.getInfoWindow().associatedPin)){q.map.getInfoWindow().setContent(F)}};
this.getMessage= function(){return q.pinImg.msg};
this.hide= function(){q.isVisible=false;
q.pinImg.style.display="none";
q.pinTxt.style.display="none"};
this.show= function(){q.isVisible=true;
q.pinImg.style.display="block";
if(q.pinTxt.innerHTML!=""){q.pinTxt.style.display="block"}};
this.zoomHide= function(){if(q.isVisible){q.pinImg.style.display="none";
q.pinTxt.style.display="none"}};
this.zoomShow= function(){if(q.isVisible){q.pinImg.style.display="block";
if(q.pinTxt.innerHTML!=""){q.pinTxt.style.display="block"}}};
this.showInfoWindow= function(){q.map.getInfoWindow().setPosition(parseInt(q.pinImg.style.left),parseInt(q.pinImg.style.top));
q.map.getInfoWindow().setContent(q.pinImg.msg);
q.map.getInfoWindow().show(q)};
this.hideInfoWindow= function(){q.map.getInfoWindow().hide()};
this.addEventListener= function(G,H){var I=false;
for(var F=0;
F<m.length;
F++){if(m[F]==G){m[G]=H;
I=true;
break}}if(!I){m.push(G);
m[G]=H;
if(G=="click"||G=="dblclick"||G=="rightclick"){deCarta.Events.addEvent(q.pinImg,"mousedown",t);
deCarta.Events.addEvent(q.pinImg,"mouseup",u);
deCarta.Events.addEvent(q.pinTxt,"mousedown",t);
deCarta.Events.addEvent(q.pinTxt,"mouseup",u)}else{if(G=="mouseover"){deCarta.Events.addEvent(q.pinImg,"mouseover",D);
deCarta.Events.addEvent(q.pinTxt,"mouseover",D)}else{if(G=="mouseout"){deCarta.Events.addEvent(q.pinImg,"mouseout",B);
deCarta.Events.addEvent(q.pinTxt,"mouseout",B)}}}}};
this.clearInstanceListeners= function(){for(var F=0;
F<m.length;
F++){m[m[F]]=null;
m[F]=null}};
this.clearListeners= function(G){for(var F=0;
F<m.length;
F++){if(m[F]==G){m[m[F]]=null}}m[F]=null};
function t(F){if(!GLOBALS.ALLOWDOMEVENTS){return true}if(F.button==2||F.which==3){w=true;
return false}if(m.mousedown){m.mousedown(q)}return false}function u(F){if(!GLOBALS.ALLOWDOMEVENTS){return true}if(w){v();
return false}if(m.mouseup){m.mouseup(q)}if(!E){C=setTimeout(r,A);
E=new Date()}else{clearTimeout(C);
o()}return false}function r(){c();
if(m.click){m.click(q)}}function o(){c();
if(m.dblclick){m.dblclick(q)}}function v(){c();
if(m.rightclick){m.rightclick(q)}}this.pickup= function(){if(!i){deCarta.Events.addEvent(window.document,"mousemove",a)}};
this.drop= function(){if(i){b()}};
function a(V){var M=V.clientX;
var L=V.clientY;
var Y=q.pinImg;
var K=parseInt(Y.style.top,10);
var G=parseInt(Y.style.left,10);
var Q=q.pinTxt;
var N=parseInt(Q.style.top,10);
var J=parseInt(Q.style.left,10);
var W=q.map;
var I=0;
var H=0;
var O=0;
var F=0;
if(!i){i=true;
n=new PixelPoint(M,L);
g=new PixelPoint(G,K);
j=new PixelPoint(J,N)}var R=L-Utilities.getAbsoluteTop(W.mapDiv)+Utilities.getScrollTop();
var S=M-Utilities.getAbsoluteLeft(W.mapDiv)+Utilities.getScrollLeft();
var P=K+parseInt(W.getTileDiv().style.top,10)+Utilities.getScrollTop();
var T=P+Y.clientHeight/2;
var X=G+parseInt(W.getTileDiv().style.left,10)+Utilities.getScrollTop();
var U=X+Y.clientWidth/2;
if(T!=R){H=R-T}O=K+H;
Y.style.top=O+"px";
Q.style.top=(N+H)+"px";
if(U!=S){I=S-U}F=G+I;
Y.style.left=F+"px";
Q.style.left=(J+I)+"px";
return false}function b(I){deCarta.Events.removeEvent(window.document,"mousemove",a);
var N=parseInt(q.pinImg.style.left,10)-g.x;
var M=-(parseInt(q.pinImg.style.top,10)-g.y);
var O=q.map.getZoomController().getGXConvertedZoomLevel();
var H=Utilities.radsPerPixelAtZoom(q.map.getTileSize(),O);
var L=Utilities.lon2pix(q.position.lon,H);
var K=Utilities.lat2pix(q.position.lat,H);
var F=Utilities.pix2lon((L+N),H);
var J=Utilities.pix2lat((K+M),H);
var G=new Position(J,F);
q.setPosition(G);
i=false;
n=null;
g=null;
j=null;
return false}function D(){if(!GLOBALS.ALLOWDOMEVENTS){return}if(m.mouseover){m.mouseover(q)}}function B(){if(!GLOBALS.ALLOWDOMEVENTS){return}if(m.mouseout){m.mouseout(q)}}function c(){E=null;
C=null;
w=false}if(y&&(y=="onmouseover"||y=="mouseover")){q.addEventListener("mouseover",q.showInfoWindow);
q.addEventListener("mouseout",q.hideInfoWindow)}else{if(y&&(y=="onclick"||y=="click")){q.addEventListener("click",q.showInfoWindow)}}this.destroy= function(){if(q&&q.map){if(q.pinImg){q.pinImg=q.map.getTileDiv().removeChild(q.pinImg);
if(q.pinImg){Utilities.purge(q.pinImg)}q.pinImg=null}if(q.pinTxt){q.pinTxt=q.map.getTileDiv().removeChild(q.pinTxt);
if(q.pinTxt){Utilities.purge(q.pinTxt)}q.pinTxt=null}}q=null};
this.toString= function(){return q.position.toString()};
this.equals= function(F){if(F&&F.toString()==this.toString()&&F.pinImg==this.pinImg){return true}else{return false}};
this.getViewableBoundingBox= function(J){var N=Utilities.lat2pix(q.position.lat,J);
var G=Utilities.lon2pix(q.position.lon,J);
var M=N+q.icon.anchorY;
var S=G+parseInt(q.pinImg.style.width)-q.icon.anchorX;
var R=N-parseInt(q.pinImg.style.height)+q.icon.anchorY;
var K=G-q.icon.anchorX;
var O=Utilities.pix2lat(M,J);
var F=Utilities.pix2lon(S,J);
var P=Utilities.pix2lat(R,J);
var H=Utilities.pix2lon(K,J);
var L=new Position(O,F);
var I=new Position(P,H);
var Q=new BoundingBox(I,L);
return Q}}Pin.zIndexCounter=100;
function PixelPoint(a,c){try{this.x=parseFloat(a);
this.y=parseFloat(c);
if(isNaN(this.x)||isNaN(this.y)){throw new Exception("")}}catch(b){throw new Exception("PixelPoint: bad constructor values for x: "+a+" and y: "+c)}}PixelPoint.prototype.getX= function(){return this.x};
PixelPoint.prototype.roundX= function(){return Math.round(this.x)};
PixelPoint.prototype.setX= function(a){this.x=parseFloat(a);
if(isNaN(this.x)){throw new Exception("PixelPoint: setX bad argument x: "+a)}};
PixelPoint.prototype.getY= function(){return this.y};
PixelPoint.prototype.roundY= function(){return Math.round(this.y)};
PixelPoint.prototype.setY= function(a){this.y=parseFloat(a);
if(isNaN(this.y)){throw new Exception("PixelPoint: setY bad argument y: "+a)}};
PixelPoint.prototype.toString= function(){return this.x+" "+this.y};
PixelPoint.prototype.equals= function(a){if(a&&a.toString()==this.toString()){return true}else{return false}};
function Position(f,b){this.lat=0;
this.lon=0;
if(arguments.length==1){var d=f.split(" ");
if(d.length!=2){throw new Exception("error initializing Position object")}try{this.lat=parseFloat(d[0]);
this.lon=parseFloat(d[1]);
if(isNaN(this.lat)||isNaN(this.lon)){throw new Exception()}}catch(c){throw new Exception("error initializing Position object")}}else{if(arguments.length==2){try{this.lat=parseFloat(f);
this.lon=parseFloat(b);
if(isNaN(this.lat)||isNaN(this.lon)){throw new Exception()}}catch(c){throw new Exception("error initializing Position object")}}else{throw new Exception("error initializing Position object")}}if(this.lat>90){this.lat=89.5}if(this.lat<-90){this.lat=-89.5}if(this.lon>180||this.lon<-180){var a=this.lon%360;
if(a<=-180){a=(360+a)}else{if(a>=180){a=-(360-a)}}this.lon=a}}Position.prototype.clone= function(){return new Position(this.toString())};
Position.prototype.getLat= function(){return this.lat};
Position.prototype.getLon= function(){return this.lon};
Position.prototype.setLat= function(a){this.lat=a};
Position.prototype.setLon= function(a){this.lon=a};
Position.prototype.getLatLon= function(){return this.lat+" "+this.lon};
Position.prototype.getLatCommaLon= function(){return this.lat+", "+this.lon};
Position.prototype.equals= function(a){if(a&&a.getLatLon()==this.getLatLon()){return true}else{return false}};
Position.prototype.toString= function(){return this.lat+" "+this.lon};
function Radius(c,b){this.distance=c;
this.uom=b||new UOM("KM");
var a;
if(b=="KM"){a="K"}else{if(b=="M"){a="M"}else{if(b=="MI"){a="R"}else{if(b=="FT"){a="F"}}}}this.uomdds=a;
this.toString= function(){return this.distance+" "+this.uom};
this.getDegrees= function(){if(b=="KM"){return this.distance/111.111}else{if(b=="M"){return(this.distance/1000)/111.111}else{if(b=="MI"){return(this.distance*1.609)/111.111}else{if(b=="FT"){return((this.distance/3.28)/1000)/111.111}}}}}}function Route(){this.alternates=[];
this.TotalTime="";
this.TotalTimeObject={};
this.TotalDistance="";
this.viaPointSequence="";
this.RouteInstructions=[];
this.RouteGeometry=[];
this.routeID="";
this.boundingBox=null;
this.centerPosition=null;
this.uom=null}function RouteInstruction(){this.Instruction="";
this.distance="";
this.duration="";
this.position=null;
this.tour=""}function RoutePreference(b,c,a){this.routePreference=b||"Fastest";
this.uom=c||new UOM("KM");
this.routeQueryType=a||"RTXT";
this.rules=null;
this.optimized=false;
this.expectedStartTime=null;
this.alternateRoutes=0;
this.avoidAreas=[];
this.avoidList=[];
this.generalizationFactor=0;
this.generalizationBBox=null;
this.logisticsPreference=null;
this.returnRouteGeometry=true;
this.returnRouteInstructions=true}RoutePreference.prototype.setOptimized= function(a){this.optimized=a};
RoutePreference.prototype.getOptimized= function(){return this.optimized};
RoutePreference.prototype.setRules= function(a){this.rules=a};
RoutePreference.prototype.getRules= function(){return this.rules};
RoutePreference.prototype.setExpectedStartTime= function(a){this.expectedStartTime=a};
RoutePreference.prototype.getExpectedStartTime= function(){return this.expectedStartTime};
RoutePreference.prototype.getAvoidAreas= function(){return this.avoidAreas};
RoutePreference.prototype.addAvoidArea= function(a){if(!a){this.avoidAreas=[]}else{this.avoidAreas.push(a)}};
RoutePreference.prototype.getAvoidList= function(){return this.avoidList};
RoutePreference.prototype.setAvoidList= function(a){if(typeof a=="string"||a instanceof "String"){switch(a.toLowerCase()){case"ferry":this.avoidList.push("Ferry");
return;
case"toll":this.avoidList.push("Toll");
return;
case"tunnels":this.avoidList.push("Tunnels");
return;
case"bridges":this.avoidList.push("Bridges");
return;
default:break}}throw new Exception("RoutePreference.setAvoidList: invalid argument: feature: "+a)};
RoutePreference.prototype.getGeneralizationFactor= function(){return this.generalizationFactor};
RoutePreference.prototype.setGeneralizationFactor= function(a,c){try{this.generalizationBBox=Utilities.positionsToBoundingBox(a);
this.generalizationFactor=Utilities.generalizationFactor(this.generalizationBBox,c)}catch(b){throw b}};
RoutePreference.prototype.enableLogistics= function(){this.logisticsPreference={};
this.logisticsPreference.preferredRoute="";
this.logisticsPreference.hazmat="";
this.logisticsPreference.vehicleParameters="";
this.logisticsPreference.vehicleTypes="";
this.logisticsPreference.preferredTurn=""};
function RouteQuery(){this.xmlRecFac=new deCarta.XMLStringBuilder();
var b=[];
var a=this;
this.authenticate= function(d,c){if(!d||!c||d==""||c==""){throw new Exception("Error authenticating RouteQuery, invalid parameters.");
return false}Credentials.clientName=d;
Credentials.clientPassword=c;
this.xmlRecFac.clientName=d;
this.xmlRecFac.clientPassword=c};
this.query= function(c,g,j,d){var i=Utilities.getRequestId();
if(typeof j=="function"){b[i]=j}else{throw new Exception("RouteQuery.query: callBack must be a function, arg was: "+j)}var f=this.xmlRecFac.createRouteGeometryRequest(c,i,g);
JSRequest.send(f,a.queryCallback,null,d)};
this.queryById= function(i,g,c){var f=Utilities.getRequestId();
if(typeof g=="function"){b[f]=g}else{throw new Exception("RouteQuery.queryById: callBack must be a function, arg was: "+g)}var d=this.xmlRecFac.createRouteGeometryByIdRequest(i,f);
JSRequest.send(d,a.queryCallback,null,c)};
this.queryCallback= function(f){var d=f.XLS.Response.requestID;
var c;
if(deCarta.JSONParser.parseErrors(f)){c=null}else{c=deCarta.JSONParser.parseRoutes(f)}if((d>=0)&&b[d]){b[d](c);
b[d]=undefined}}}function ScaleBar(){this.init()}ScaleBar.prototype.map=null;
ScaleBar.prototype.type="ScaleBar";
ScaleBar.prototype.frameHeight=40;
ScaleBar.prototype.frameWidth=120;
ScaleBar.prototype.frame=null;
ScaleBar.prototype.cssClass="decarta-scaleBar";
ScaleBar.prototype.measureImperial=null;
ScaleBar.prototype.measureMetric=null;
ScaleBar.prototype.measureCssClass="decarta-scaleBarMeasure";
ScaleBar.prototype.scaleImperial=null;
ScaleBar.prototype.scaleImperialCssClass="decarta-scaleBarImperialScale";
ScaleBar.prototype.scaleMetric=null;
ScaleBar.prototype.scaleMetricCssClass="decarta-scaleBarMetricScale";
ScaleBar.prototype.init= function(){};
ScaleBar.prototype.build= function(){this.measureImperial=document.createElement("div");
this.measureImperial.className=this.measureCssClass;
Utilities.setUnselectable(this.measureImperial);
this.scaleImperial=document.createElement("div");
this.scaleImperial.className=this.scaleImperialCssClass;
if(Utilities.ie6){this.scaleImperial.innerHTML="&nbsp;"}Utilities.setUnselectable(this.scaleImperial);
this.measureMetric=document.createElement("div");
this.measureMetric.className=this.measureCssClass;
Utilities.setUnselectable(this.measureMetric);
this.scaleMetric=document.createElement("div");
this.scaleMetric.className=this.scaleMetricCssClass;
if(Utilities.ie6){this.scaleMetric.innerHTML="&nbsp;"}Utilities.setUnselectable(this.scaleMetric);
this.frame=document.createElement("div");
this.frame.id=this.cssClass;
this.frame.className=this.cssClass;
Utilities.setUnselectable(this.frame);
this.frame.appendChild(this.measureImperial);
this.frame.appendChild(this.scaleImperial);
this.frame.appendChild(this.scaleMetric);
this.frame.appendChild(this.measureMetric)};
ScaleBar.prototype.appendThis= function(){if(!this.frame){this.build()}return this.frame};
ScaleBar.prototype.removeThis= function(){this.map=null;
return this.frame};
ScaleBar.prototype.position= function(b){if(!this.map){return}var a="px";
this.frame.style.top=b.height-this.frameHeight+a;
this.frame.style.left=b.width-this.frameWidth+a};
ScaleBar.prototype.calculate= function(){if(!this.map||!this.map.getZoomController()){return}try{this.map.getCenterPosition()}catch(n){return}var v=this.map.getZoomController().getGXConvertedZoomLevel();
var f=Utilities.radsPerPixelAtZoom(this.map.getTileSize(),v);
var d=this.map.getCenterPosition();
var a=Math.cos(((d.lat)*(Math.PI/180)));
var b=Utilities.lon2pix(d.lon,f);
var u=Utilities.pix2lon(b+1,f);
var t=Utilities.pix2lon(b,f);
var c=u-t;
var m=parseFloat(a*111325);
var g=(c*m);
var q=g*3.28;
var o=this.frameWidth-15;
this.scaleMetric.style.width=r(g,o)+"px";
this.scaleImperial.style.width=k(q,o)+"px";
this.measureMetric.innerHTML=j(g,o);
this.measureImperial.innerHTML=i(q,o);
function k(B,p){var y=[25,50,100,200,500,1000,2000,5280,10560,26400,52800,132000,264000,396000,528000,1056000,1584000,2640000,3168000,3696000,4224000,4752000,5280000,10560000,15840000,21120000,26400000];
var C=B*p;
var z;
var w=y.length;
for(z=0;
z<w;
z++){if(C<=y[z]){break}}z=(z-1>0)?z-1:0;
var A=y[z]/B;
return A}function i(A,p){var y=[25,50,100,200,500,1000,2000,5280,10560,26400,52800,132000,264000,396000,528000,1056000,1584000,2640000,3168000,3696000,4224000,4752000,5280000,10560000,15840000,21120000,26400000];
var C=["25 ft","50 ft","100 ft","200 ft","500 ft","1000 ft","2000 ft","1 mi","2 mi","5 mi","10 mi","25 mi","50 mi","75 mi","100 mi","200 mi","300 mi","500 mi","600 mi","700 mi","800 mi","900 mi","1000 mi","2000 mi","3000 mi","4000 mi","5000 mi"];
var B=A*p;
var z;
var w=y.length;
for(z=0;
z<w;
z++){if(B<=y[z]){break}}z=(z-1>0)?z-1:0;
return C[z]}function r(w,p){var z=[10,25,50,100,200,500,1000,2000,5000,10000,25000,50000,75000,100000,200000,300000,500000,600000,700000,800000,900000,1000000,2000000,3000000,4000000,5000000];
var C=w*p;
var A;
var y=z.length;
for(A=0;
A<y;
A++){if(C<=z[A]){break}}A=(A-1>0)?A-1:0;
var B=z[A]/w;
return B}function j(w,p){var z=[10,25,50,100,200,500,1000,2000,5000,10000,25000,50000,75000,100000,200000,300000,500000,600000,700000,800000,900000,1000000,2000000,3000000,4000000,5000000];
var C=["10 m","25 m","50 m","100 m","200 m","500 m","1 km","2 km","5 km","10 km","25 km","50 km","75 km","100 km","200 km","300 km","500 km","600 km","700 km","800 km","900 km","1000 km","2000 km","3000 km","4000 km","5000 km"];
var B=w*p;
var A;
var y=z.length;
for(A=0;
A<y;
A++){if(B<=z[A]){break}}A=(A-1>0)?A-1:0;
return C[A]}};
ScaleBar.prototype.getDiv= function(){return this.frame};
function SearchCriteria(g,b,a,d,c,f){if(d>100){throw new Exception("SearchCriteria constructor: maximumResponses cannot exceed 100");
return}this.queryString=g;
this.position=null;
if(b&&b.clone){this.position=b.clone()}else{throw new Exception("SearchCriteria constructor: position not valid")}this.radius=a||new Radius(0.5);
this.maximumResponses=d||10;
this.database=c||null;
this.sortDirection="Ascending";
this.sortCriteria="Distance";
this.allowAggregates=false;
this.retrieveAll=false;
this.properties={};
this.defaultUOM=f||null}function ServerMonitor(){var _callBackArray=[];
var _xmlStringBuilder=new deCarta.XMLStringBuilder();
this.query= function(callBack){if(!callBack||(typeof callBack!="function")){return false}var reqId=Utilities.getRequestId();
_callBackArray[reqId]=callBack;
var xmlRequestString=_xmlStringBuilder.createRUOKRequest(reqId);
this.sendServerMonitorQueryRequest(xmlRequestString);
return true};
this.sendServerMonitorQueryRequest= function(xmlRequestString){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalPreferencesWrite UniversalBrowserWrite UniversalPreferencesRead UniversalBrowserRead")}catch(e){}var url=Credentials.url;
if(url.indexOf("/openls/openls")>-1){url=url.substring(0,url.indexOf("/openls/openls"));
url=url+"/openls/JSON?responseFormat=ALL"}var xmlhttp=null;
try{if(XMLHttpRequest){xmlhttp=new XMLHttpRequest()}else{xmlhttp=new ActiveXObject()}}catch(e){}if(!xmlhttp){throw new Exception("ServerMonitor: I can't believe your system cannot generate an XMLHttpRequest. Oh the shame.")}xmlhttp.open("POST",url,true);
xmlhttp.onreadystatechange= function(){if(xmlhttp.readyState==4){var rawResponse=eval(xmlhttp.responseText);
var response={};
response.status=xmlhttp.status;
response.xml=rawResponse.xmlResponse;
response.json=rawResponse.response;
if(_callBackArray[response.json.XLS.Response.requestID]){_callBackArray[response.json.XLS.Response.requestID](response)}}};
xmlhttp.send(xmlRequestString)}}deCarta.String={};
deCarta.String.isString= function(a){if(typeof a==="string"||a instanceof String){return true}else{return false}};
deCarta.String.trim= function(a){return a.replace(/^\s*/,"").replace(/\s*$/,"")};
deCarta.String.rtrim= function(a){return a.replace(/\s*$/,"")};
deCarta.String.ltrim= function(a){return a.replace(/^\s*/,"")};
deCarta.String.cleanUTF8= function(b){var a=decodeURIComponent(encodeURIComponent(b));
return a};
deCarta.StyleManager={};
deCarta.StyleManager.stylesCreated=false;
deCarta.StyleManager.cssString=".decarta-close{position:absolute;width:20px;height:20px;top:2px;left:178px;display:block;cursor:pointer;}.decarta-bubbleContent{padding:16px;}.decarta-bubble{display:none;width:200px;background-color:#ffffff;opacity:50;filter:alpha(opacity=90);opacity:0.9;border: 1px solid #cccccc;position:absolute;z-index:10000;color:#000000;font-size:11px;}.decarta-copyright{background-color:#ffffff;opacity:50;filter:alpha(opacity=80);opacity:0.8;padding:1px;font-family:arial;color:#000000;font-size:11px;border:1px solid #cccccc;display:block;position:absolute;z-index:9999;}.decarta-mapTypeController{background-color:#ffffff;opacity:50;filter:alpha(opacity=80);opacity:0.8;padding:3px;font-family:Arial;color:#000000;font-size:11px;font-weight:bold;border:1px solid #cccccc;display:block;position:absolute;visibility:visible;z-index:9999;}.decarta-mapTypeControllerLink{text-decoration:none;}.decarta-zoomButton{padding:0;margin:0;display:block;}.decarta-zoom{cursor: pointer;width: 20px;height:278px;top: 10px;left: 10px;position: absolute;z-index: 9999;}.decarta-zoomTop{margin:0px;padding:0px;position:absolute;left:0px;width:20px;top:0px;height:20px;}.decarta-zoomPillar{margin:0px;padding:0px;position:absolute;left:0px;width:20px;top:20px;height:238px;}.decarta-zoomBottom{margin:0px;padding:0px;position:absolute;left:0px;width:20px;top:258px;height:20px;}.decarta-zoomSlider{maring:0px;padding:0px;position:absolute;left:0px;width:20px;height:14px;}.decarta-scaleBar{position:absolute;width:120px;text-align:left;z-index:9999;}.decarta-scaleBarMeasure{font-family:arial;font-size:8pt;padding:0px 0px 0px 3px;margin:0;}.decarta-scaleBarImperialScale{display:block;padding:0;margin:0;font-size:6px;height:6px;border-left:2px solid #000;border-right:2px solid #000;border-bottom:1px solid #000;}.decarta-scaleBarMetricScale{display:block;padding:0;margin:0;font-size:6px;height:6px;border-left:2px solid #000;border-right:2px solid #000;border-top:1px solid #000;}.decarta-mapviewport{position:relative;z-index:0;overflow:hidden;}.decarta-tiles{position:absolute;left:0px;top:0px;z-index:0;}.decarta-maptile{z-index:0;position:absolute;display:none;}.decarta-panController{z-index:100;position:absolute;top:1px;left:1px;height:60px;width:60px;padding:0px;margin:0px;}.decarta-panController-north{position:absolute;top:0px;left:20px;height:20px;width:20px;padding:0px;margin:0px;cursor: pointer;}.decarta-panController-south{position:absolute;top:40px;left:20px;height:20px;width:20px;padding:0px;margin:0px;cursor: pointer;}.decarta-panController-east{position:absolute;top:20px;left:40px;height:20px;width:20px;padding:0px;margin:0px;cursor: pointer;}.decarta-panController-west{position:absolute;top:20px;left:0px;height:20px;width:20px;padding:0px;margin:0px;cursor: pointer;}.decarta-panController-center{position:absolute;top:20px;left:20px;height:20px;width:20px;padding:0px;margin:0px;cursor: pointer;}";
deCarta.StyleManager.init= function(){if(deCarta.StyleManager.stylesCreated){return}if(document.styleSheets[0]&&document.styleSheets[0].cssText){document.styleSheets[0].cssText+=deCarta.StyleManager.cssString}else{var a=document.createElement("style");
a.appendChild(document.createTextNode(deCarta.StyleManager.cssString));
document.getElementsByTagName("head")[0].appendChild(a)}deCarta.StyleManager.stylesCreated=true};
deCarta.StyleManager.getCurrentStyle= function(b,a){var c=b.style[d(a)];
if(!c){if(document.defaultView){c=document.defaultView.getComputedStyle(b,"").getPropertyValue(a)}else{if(b.currentStyle){c=b.currentStyle[d(a)]}}}return c;
function d(f){for(var g=/-([a-z])/;
g.test(f);
f=f.replace(g,RegExp.$1.toUpperCase())){}return f}};
function TextOverlay(g,b,i,c,d,a,f){this.text=g||"";
this.anchorX=b||0;
this.anchorY=i||0;
this.color=c||null;
this.size=d||null;
this.fontFamily=a||null;
this.className=f||null;
this.toString= function(){return this.text+" "+this.anchorX+" "+this.anchorY+" "+this.size+" "+this.fontFamily+" "+this.className}}TextOverlay.prototype.getAnchorX= function(){return this.anchorX};
TextOverlay.prototype.getAnchorY= function(){return this.anchorY};
TextOverlay.prototype.getText= function(){return this.text};
TextOverlay.prototype.getClassName= function(){return this.className};
TextOverlay.prototype.getColor= function(){return this.color};
TextOverlay.prototype.getSize= function(){return this.size};
TextOverlay.prototype.getFontFamily= function(){return this.fontFamily};
TextOverlay.prototype.setAnchorX= function(a){this.anchorX=a};
TextOverlay.prototype.setAnchorY= function(a){this.anchorY=a};
TextOverlay.prototype.setText= function(a){this.text=a};
TextOverlay.prototype.setClassName= function(a){this.className=a};
TextOverlay.prototype.setColor= function(a){this.color=a};
TextOverlay.prototype.setSize= function(a){this.size=a};
TextOverlay.prototype.setFontFamily= function(a){this.fontFamily=a};
function TrafficIncident(a,c,b){this.position=a;
this.description=c||"";
this.severity=b||"";
this.toString= function(){return this.position+"  "+this.description}}function TrafficIncidentQuery(){this.xmlRecFac=new deCarta.XMLStringBuilder();
var c=null;
var b=[];
var a=this;
this.authenticate= function(f,d){if(!f||!d){throw new Exception("Error authenticating TrafficIncidentQuery, invalid parameters.")}Credentials.clientName=f;
Credentials.clientPassword=d;
this.xmlRecFac.clientName=f;
this.xmlRecFac.clientPassword=d};
this.query= function(f,i,d){var g=Utilities.getRequestId();
if(typeof i=="function"){b[g]=i}else{throw new Exception("TrafficIncidentQuery.query: callBack must be a function, arg was: "+i)}c=this.xmlRecFac.createTrafficIncidentRequest(f,g);
JSRequest.send(c,a.queryCallback,null,d)};
this.queryCallback= function(k){var d=[];
var j=k.XLS.Response.requestID;
if(deCarta.JSONParser.parseErrors(k)){}else{var g=k.XLS.Response.TrafficResponse.Incident;
var n=g.length;
if(!n){d.push(new TrafficIncident(new Position(g.Position),g.Description,g.severity))}else{for(var f=0;
f<g.length;
f++){var m=g[f];
d.push(new TrafficIncident(new Position(m.Position),m.Description,m.severity))}}}if((j>=0)&&b[j]){b[j](d);
b[j]=undefined}}}function TrafficIncidentSearchCriteria(b,a,c,d){if(c>100){throw new Exception("maximumResponses cannot exceed 100")}this.position=b.clone();
this.radius=a;
this.maximumResponses=c;
this.minimumSeverity=d}function UOM(a){if(a!="KM"&&a!="M"&&a!="MI"&&a!="FT"){throw new Exception("invalid UOM type,  KM M MI FT")}this.value=a;
this.toString= function(){return this.value}}function Utilities(){}Utilities.regx2=new RegExp("\\s","g");
Utilities.parseRequestIDFromXLS= function(b){var a=/requestID=[\'\"]([0-9]+)/;
var d=a.exec(b);
var c=null;
if(d&&d[1]){c=d[1]}return c};
Utilities.isObjectEmpty= function(c){var a=true;
for(var b in c){if(c.hasOwnProperty(b)){a=false;
break}}return a};
Utilities.parseKML= function(m){var b=new RegExp("&","g");
m=m.replace(b," ");
b=new RegExp("<kml xmlns=");
m=m.replace(b,"<kml xmlns:goog=");
var c=[];
var o=(new DOMParser()).parseFromString(m,"text/xml");
o.setProperty("SelectionLanguage","XPath");
o.setProperty("SelectionNamespaces","xmlns:goog='http://earth.google.com/kml/2.2' xmlns:atom='http://www.w3.org/2005/Atom'");
var f=o.selectNodes("//Placemark");
for(var d=0;
d<f.length;
d++){var a;
var j;
var n;
for(var r=0;
r<f[d].childNodes.length;
r++){try{if(f[d].childNodes[r].nodeName=="name"){a=Sarissa.getText(f[d].childNodes[r])||""}if(f[d].childNodes[r].nodeName=="description"){j=Sarissa.getText(f[d].childNodes[r])||""}if(f[d].childNodes[r].nodeName=="Point"){var q=Utilities.parseKMLCoords(f[d].childNodes[r].childNodes);
n=new KMLGeometry("Point",q[0])}if(f[d].childNodes[r].nodeName=="Polygon"){var p=Utilities.parseKMLCoords(f[d].childNodes[r].childNodes);
n=new KMLGeometry("Polygon",p)}if(f[d].childNodes[r].nodeName=="LineString"){var t=Utilities.parseKMLCoords(f[d].childNodes[r].childNodes);
n=new KMLGeometry("LineString",t)}if(f[d].childNodes[r].nodeName=="MultiGeometry"){var g=Utilities.parseKMLMultiGeometry(f[d].childNodes[r].childNodes);
n=new KMLGeometry("MultiGeometry",g)}}catch(k){continue}}if(n){c.push(new KML(n,a,j));
n=undefined;
a="";
j=""}else{}}return c};
Utilities.parseKMLMultiGeometry= function(f){var a=[];
for(var b=0;
b<f.length;
b++){var c=f[b].nodeName;
var d=Utilities.parseKMLCoords(f[b].childNodes);
a.push(new KMLGeometry(c,d))}return a};
Utilities.parseKMLCoords= function(d){var b=[];
var a;
c(d);
function c(o){for(var j=0;
j<o.length;
j++){if(o[j].nodeName=="coordinates"){var g=Sarissa.getText(o[j]);
var g=g.replace(Utilities.regx2,",");
var k=g.split(",");
var f=0;
var m,n;
for(var j=0;
j<k.length;
j++){if(f==0){n=k[j];
f++;
continue}else{if(f==1){m=k[j];
b.push(new Position(m,n));
f++;
continue}else{if(f==2){f=0;
continue}}}}a=b;
break}else{if(o[j].childNodes.length){c(o[j].childNodes)}}}}return a};
Utilities.getElementByTagName= function(k,j,a){var c=j+":"+a;
var g;
if(navigator.userAgent.toLowerCase().indexOf("safari")>-1){g=k.getElementsByTagNameNS("*",a)[0];
if(!g){var b=k.getElementsByTagName("*");
var f=b.length;
for(var d=0;
d<f;
d++){if(b[d].nodeName==c){g=b[d];
break}}}}else{g=k.getElementsByTagName(c)[0]}return g};
Utilities.px="px";
Utilities.LL2VR7= function(b){var g=b[0];
var j=10000000;
var a=(b.length)+","+(b[0].lat*j)+","+(b[0].lon*j);
for(var f=1;
f<b.length;
f++){var d=Math.round((b[f].lat-g.lat)*j);
var c=Math.round((b[f].lon-g.lon)*j);
g=b[f];
a+=","+d+","+c}return a};
Utilities.timer= function(){this.green=null;
this.red=null;
this.start= function(){this.green=new Date().getTime()};
this.stop= function(){this.red=new Date().getTime();
return this.red-this.green}};
Utilities.ie="\v"=="v";
Utilities.ie6=(document.all&&!window.opera&&(typeof document.documentElement.style.maxHeight=="undefined"))?true:false;
Utilities.fixPng= function(a){var b=a.src;
if(a.style.height&&a.style.width){a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+b+"',sizingMethod='scale')"}else{a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+b+"')"}a.src=Credentials.transparentGIF};
Utilities.getScrollTop= function(){var a=0;
if(document.documentElement&&document.documentElement.scrollTop){a=document.documentElement.scrollTop}else{if(document.body&&document.body.scrollTop){a=document.body.scrollTop}}return parseInt(a)};
Utilities.getScrollLeft= function(){var a=0;
if(document.documentElement&&document.documentElement.scrollLeft){a=document.documentElement.scrollLeft}else{if(document.body&&document.body.scrollLeft){a=document.body.scrollLeft}}return parseInt(a)};
Utilities.podParse= function(b){var f=parseInt(b.substring(b.indexOf("P")+1,b.indexOf("D")));
var a=parseInt(b.substring(b.indexOf("T")+1,b.indexOf("H")));
var c=parseInt(b.substring(b.indexOf("H")+1,b.indexOf("M")));
var d=parseInt(b.substring(b.indexOf("M")+1,b.indexOf("S")));
if(f>0){return((f*24)+a)+" hours "+c+" minutes "}else{if(a>0){return a+" hours "+c+" minutes "}else{if(c>0){return c+" minutes "+d+" seconds "}else{return d+" seconds"}}}};
Utilities.podParseJSON= function(b){var g=parseInt(b.substring(b.indexOf("P")+1,b.indexOf("D")));
var f=parseInt(b.substring(b.indexOf("T")+1,b.indexOf("H")));
var a=parseInt(b.substring(b.indexOf("H")+1,b.indexOf("M")));
var c=parseInt(b.substring(b.indexOf("M")+1,b.indexOf("S")));
return{days:g,hours:f,minutes:a,seconds:c}};
Utilities.htmlizeXMLDom= function(c){var b=new RegExp("\\>","g");
var a=new RegExp("\\<","g");
var d=(Sarissa.serialize(c));
d=d.replace(b,"&gt;");
d=d.replace(a,"&lt;");
return"<PRE>"+d+"</PRE>"};
Utilities.p= function(a){};
Utilities.c= function(){};
Utilities.generalize= function(n,u,k,t){k=Math.round(k/2);

var c=u.getZoomLevel?u.getZoomLevel():u;

var d=Utilities.radsPerPixelAtZoomLevel(t,c);
var m=n.length;
var b=[];
var r,j,p,o,a,q,g;
for(var f=0;
f<m;
f++){if(f==0||!r.contains(n[f])){j=Utilities.lat2pix(n[f].lat,d)+k;
p=Utilities.lon2pix(n[f].lon,d)+k;
o=Utilities.lat2pix(n[f].lat,d)-k;
a=Utilities.lon2pix(n[f].lon,d)-k;
q=Utilities.pix2lat(j,d)+" "+Utilities.pix2lon(p,d);
g=Utilities.pix2lat(o,d)+" "+Utilities.pix2lon(a,d);
r=new BoundingBox(new Position(g),new Position(q));
b.push(n[f]);
continue}}return b};
Utilities.grouper= function(z,b,k,m){if(!z||!b||k<=0){throw new Exception("Utilities.grouper: Invalid input posArray: "+z+" zoom: "+b+" radius: "+k)}var p=b.getZoomLevel?b.getZoomLevel():b;
var w=Utilities.radsPerPixelAtZoomLevel(m,p);
var n=z.length;
var c,A,q,a,u,v,y;
var o=[];
var f=[];
var d=0;
var t,r;
var g=[];
for(t=0;
t<n;
t++){for(r=0;
r<d;
r++){if(o[r].contains(z[t])){g[r].push(z[t]);
break}}if(r!=d){continue}else{A=Utilities.lat2pix(z[t].lat,w)+k;
q=Utilities.lon2pix(z[t].lon,w)+k;
a=Utilities.lat2pix(z[t].lat,w)-k;
u=Utilities.lon2pix(z[t].lon,w)-k;
v=Utilities.pix2lat(A,w)+" "+Utilities.pix2lon(q,w);
y=Utilities.pix2lat(a,w)+" "+Utilities.pix2lon(u,w);
c=new BoundingBox(new Position(y),new Position(v));
o[d]=c;
f[d]=z[t];
g[d]=[];
d++;
continue}}for(t=0;
t<d;
t++){g[t].push(f[t])}return g};
Utilities.groupObjByPosition= function(c,q,k,p){var g,d;
var b,o;
var n=[];
var a="gTag";
var m;
var f;
if(!c||!c[0].position||!q||k<=0||!p||Position.prototype[a]){throw new Exception("Utilities.groupObjByPosition: Invalid input objArray: "+c+" zoom: "+q+" radius: "+k+" tileSize: "+p)}b=c.length;
for(g=0;
g<b;
g++){n[g]=c[g].position.clone();
n[g][a]=c[g]}m=Utilities.grouper(n,q,k,p);
f=[];
b=m.length;
for(g=0;
g<b;
g++){f[g]=[];
o=m[g].length;
for(d=0;
d<o;
d++){f[g][d]=m[g][d][a]}}return f};
Utilities.getRequestId= function(){return Math.floor(Math.random()*10000000)};
Utilities.getAbsoluteLeft= function(c){var b=c.offsetLeft;
var a=c.offsetParent;
while(a!=null){b+=a.offsetLeft;
a=a.offsetParent}return b};
Utilities.getAbsoluteTop= function(c){var b=c.offsetTop;
var a=c.offsetParent;
while(a!=null){b+=a.offsetTop;
a=a.offsetParent}return b};
Utilities.unloadMap= function(a){a.removeAllPins();
Utilities.purge(a.mapDiv)};
Utilities.purge= function(g){var c=g.attributes,f,b,j;
if(c){b=c.length;
for(f=0;
f<b;
f+=1){j=c[f].name;
if(typeof g[j]==="function"){g[j]=null}}}c=g.childNodes;
if(c){b=c.length;
for(f=0;
f<b;
f+=1){Utilities.purge(g.childNodes[f])}}};
Utilities.what= function(c){var b="";
for(var a in c){b+="  "+a}alert(b)};
Utilities.normalizePrefixes= function(k){var f=new RegExp("ns1:","g");
var j=k.replace(f,"xls:");
var d=new RegExp("ns\\d+:","g");
var i=j.replace(d,"gml:");
var b=new RegExp('\\sxmlns:ns\\d+="http://www.opengis.net/gml"',"g");
var g=i.replace(b,"");
var a=new RegExp('xmlns:ns1="http://www.opengis.net/xls"',"g");
var c=g.replace(a,'xmlns:xls="http://www.opengis.net/xls" xmlns:gml="http://www.opengis.net/gml"');
return c};
Utilities.centerContextToBoundingBox= function(j,b){var i=b/111.111;
var a=(j.lon-parseFloat(i));
var g=(j.lon+parseFloat(i));
var f=i*Math.cos(((j.lat*Math.PI)/180));
var d=(j.lat-parseFloat(f));
var c=(j.lat+parseFloat(f));
return new BoundingBox(new Position(d,a),new Position(c,g))};
Utilities.centerContextToBoundingBoxViewable= function(j,b,a){var d=b/111.111;
var c=a/111.111;
var k=(j.lon-parseFloat(d));
var m=(j.lon+parseFloat(d));
var i=c*Math.cos(((j.lat*Math.PI)/180));
var f=(j.lat-parseFloat(i));
var g=(j.lat+parseFloat(i));
return new BoundingBox(new Position(f,k),new Position(g,m))};
Utilities.latLonToPixels= function(c,f,d){var b=d*((f.lon-c.minPosition.lon)/(c.maxPosition.lon-c.minPosition.lon));
var a=d*((c.maxPosition.lat-f.lat)/(c.maxPosition.lat-c.minPosition.lat));
return new PixelPoint(Math.round(b),Math.round(a))};
Utilities.formatRadiusToString= function(a){if(typeof a=="number"||typeof a!="string"){a=a.toString()}return a.replace(new RegExp(","),".")};
Utilities.pixelsToLatLon= function(o,n,j,f,a,b,q,k){try{o=j-o;
n=f-n;
var p=q.getLat();
var i=q.getLon();
var g=(k*2)/111.111;
var c=g/(a*b);
var d=(g/Math.cos(((p*Math.PI)/180)))/(a*b);
if(n!=0){p=""+(parseFloat(p)+parseFloat(n*c))}if(o!=0){i=""+(parseFloat(i)-parseFloat(o*d))}return new Position(p,i)}catch(m){throw new Exception(m.message)}};
Utilities.positionsToBoundingBox= function(a){if(!a||a.length<2){throw new Exception("Utilities.positionsToBoundingBox requires at least two positions")}var b;
for(var c=0;
c<a.length;
c++){if(c==0){b=new BoundingBox(new Position(a[c].toString()),new Position(a[c].toString()))}else{if(a[c].lat>b.getMaxPosition().lat){b.getMaxPosition().lat=a[c].lat}if(a[c].lon>b.getMaxPosition().lon){b.getMaxPosition().lon=a[c].lon}if(a[c].lat<b.getMinPosition().lat){b.getMinPosition().lat=a[c].lat}if(a[c].lon<b.getMinPosition().lon){b.getMinPosition().lon=a[c].lon}}}b.heightInDegrees=b.maxPosition.lat-b.minPosition.lat;
b.widthInDegrees=b.maxPosition.lon-b.minPosition.lon;
return b};
Utilities.pinsToBoundingBox= function(d,j){if(!j){throw new Exception("Utilities.pinsToBoundingBox requires a scale argument")}if(!d||d.length<2){throw new Exception("Utilities.pinsToBoundingBox requires at least two pins")}var c=new Position(0,0);
var b=new Position(0,0);
for(var a=0;
a<d.length;
a++){var g=d[a].getViewableBoundingBox(j);
if(a!=0){if(g.maxPosition.lat>c.lat){c.lat=g.maxPosition.lat}if(g.maxPosition.lon>c.lon){c.lon=g.maxPosition.lon}if(g.minPosition.lat<b.lat){b.lat=g.minPosition.lat}if(g.minPosition.lon<b.lon){b.lon=g.minPosition.lon}continue}else{c.lat=g.maxPosition.lat;
c.lon=g.maxPosition.lon;
b.lat=g.minPosition.lat;
b.lon=g.minPosition.lon}}var f=new BoundingBox(b,c);
return f};
Utilities.pixYDist= function(j,g,c,d){if(!d){d=GLOBALS.DEFAULT_MAP_TILE_SIZE}var b=c.getGXConvertedZoomLevel();
var a=Utilities.radsPerPixelAtZoom(d,b);
var i=Math.round(Utilities.lat2pix(j,a));
var f=Math.round(Utilities.lat2pix(g,a));
return Math.abs(i-f)};
Utilities.pixXDist= function(g,d,c,f){if(!f){f=GLOBALS.DEFAULT_MAP_TILE_SIZE}var b=c.getGXConvertedZoomLevel();
var a=Utilities.radsPerPixelAtZoom(f,b);
var j=Math.round(Utilities.lon2pix(g,a));
var i=Math.round(Utilities.lon2pix(d,a));
return Math.abs(j-i)};
Utilities.lat2pix= function(d,g){var f=(parseFloat(d)*(2*Math.PI))/360;
var b=0.08181919084262157;
var a=Math.sin(f);
var i=b*a;
var c=Math.log(((1+a)/(1-a))*Math.pow((1-i)/(1+i),b))/2;
return(c/g)};
Utilities.lon2pix= function(b,a){return((b/180)*Math.PI)/a};
Utilities.radsPerPixelAtZoom= function(b,a){return 2*Math.PI/(b<<a)};
Utilities.radsPerPixelAtZoomLevel= function(b,c){var a=Math.abs(21-c);
return 2*Math.PI/(b<<a)};
Utilities.deCartaToGXZoomLevel= function(b){var a=Math.abs(21-parseInt(b,10));
return a};
Utilities.pix2lon= function(a,b){return(a*b)*180/Math.PI};
Utilities.pix2lat= function(j,g){var i=1e-7;
var f=12;
var b=Math.pow(Math.E,-j*g);
var d=Utilities.mercatorUnproject(b);
var a=Utilities.findRadPhi(d,b);
var c=0;
while(c<f&&Math.abs(d-a)>i){d=a;
a=Utilities.findRadPhi(d,b);
c++}return a*180/Math.PI};
Utilities.mercatorUnproject= function(a){return(Math.PI/2)-2*Math.atan(a)};
Utilities.findRadPhi= function(c,b){var a=0.08181919084262157;
var d=a*Math.sin(c);
return(Math.PI/2)-(2*Math.atan(b*Math.pow((1-d)/(1+d),a/2)))};
Utilities.generalizationFactor= function(f,d){if(!f||!d||!f.minPosition){throw new Exception("Utilities.generalizationFactor: bad input.bbox: "+f+"zoomLevel: "+d)}var c=[0.14916746,0.298780196,0.597003797,1.19445287,2.388571783,4.777143566,9.554287132,19.10857426,38.21725985,76.43440838,152.8688168,305.7376335,611.475267,1222.950534,2445.901068,4891.802136,9783.604272,19567.20854,39134.41709,78268.83418,156537.6684,313075.3367];
var b=f.minPosition.lat*Math.PI/180;
var a=c[d-1];
return(a*Math.cos(b))};
Utilities.setUnselectable= function(a){if(a){if(typeof a.onselectstart!="undefined"){a.onselectstart= function(c){c=c||event;
var b=c.target||c.srcElement;
if(b=="[object Text]"&&b.parentNode){b=b.parentNode}if(!deCarta.IdManager.checkTag(b,"txtSelectable")){return false}else{return true}}}else{if(typeof a.style.MozUserSelect!="undefined"){a.style.MozUserSelect="-moz-none"}else{}}}};
Utilities.setSelectable= function(a){if(a){if(typeof a.onselectstart!="undefined"){deCarta.IdManager.setTag(a,"txtSelectable")}else{if(typeof a.style.MozUserSelect!="undefined"){a.style.MozUserSelect="text"}else{}}}};
Utilities.vrToPositions= function(d){if(!d){throw new Exception("vrToPositions: illegal argument: "+d)}var j=d.replace(/%[Vv][Rr]=/,"").split(",");
var m=j[0]-1;
var a=g(j[1]);
var f=g(j[2]);
var b=j.slice(3);
var n=[];
n.push(new Position(a,f));
var c;
for(c=0;
c<m;
c++){a+=g(b[0]);
f+=g(b[1]);
b=b.slice(2);
var k=new Position(a,f);
n.push(k)}return n;
function g(u){var q;
var o="";
if(u.toString().charAt(0)=="-"){o="-";
u=u.slice(1)}u=u.toString();
var t=u.length;
var r;
if(t<=5&&t>0){r=["0","0","0","0","0"];
var p=5;
for(q=1;
q<=t;
q++){r[p-q]=u.charAt(t-q)}return(parseFloat(parseFloat(o+"0."+r.join("")).toFixed(5)))}else{if(t>5){r=[];
for(q=0;
q<t;
q++){r.push(u.charAt(q));
if(t-q-1==5){r.push(".")}}return(parseFloat(parseFloat(o+r.join("")).toFixed(5)))}else{throw new Exception("vrToPositions failed in vrOffsetToFloat with "+u)}}}};
Utilities.vr7ToPositions= function(d){if(!d){throw new Exception("vr7ToPositions: illegal argument: "+d)}var g=d.replace(/%[Vv][Rr]7=/,"").split(",");
var m=g[0]-1;
var a=j(g[1]);
var f=j(g[2]);
var b=g.slice(3);
var n=[];
n.push(new Position(a,f));
var c;
for(c=0;
c<m;
c++){a+=j(b[0]);
f+=j(b[1]);
b=b.slice(2);
var k=new Position(a,f);
n.push(k)}return n;
function j(u){var q;
var o="";
if(u.toString().charAt(0)=="-"){o="-";
u=u.slice(1)}u=u.toString();
var t=u.length;
var r;
if(t<=7&&t>0){r=["0","0","0","0","0","0","0"];
var p=7;
for(q=1;
q<=t;
q++){r[p-q]=u.charAt(t-q)}return parseFloat(parseFloat(o+"0."+r.join("")).toFixed(7))}else{if(t>7){r=[];
for(q=0;
q<t;
q++){r.push(u.charAt(q));
if(t-q-1==7){r.push(".")}}return parseFloat(parseFloat(o+r.join("")).toFixed(7))}else{throw new Exception("vrToPositions failed in vrOffsetToFloat with "+u)}}}};
Utilities.positionsToVr= function(f){if(!f&&!f.length){throw new Exception("positionsToVr: cannot create empty VR string.")}var d;
var c=f.length;
var g=[];
g.push("%VR="+c);
g.push(m(f[0].lat));
g.push(m(f[0].lon));
var k=f[0].lat;
var a=f[0].lon;
for(d=1;
d<c;
d++){var b=f[d].lat-k;
g.push(m(b));
k+=b;
var j=f[d].lon-a;
g.push(m(j));
a+=j}return g.join(",");
function m(n){var i=parseFloat(parseFloat(n).toFixed(5).toString().replace(/\./,""));
return i}};
Utilities.positionsToVr7= function(g){if(!g&&!g.length){throw new Exception("positionsToVr7: cannot create empty VR string.")}var f;
var d=g.length;
var j=[];
j.push("%VR7="+d);
j.push(b(g[0].lat));
j.push(b(g[0].lon));
var m=g[0].lat;
var a=g[0].lon;
for(f=1;
f<d;
f++){var c=g[f].lat-m;
j.push(b(c));
m+=c;
var k=g[f].lon-a;
j.push(b(k));
a+=k}return j.join(",");
function b(n){var i=parseFloat(parseFloat(n).toFixed(7).toString().replace(/\./,""));
return i}};
function WSXMLTunnel(){var a=this;
this.responseFormat="XML";
var b=[];
this.send= function(c,f){if(!deCarta.String.isString(c)){if(!window.Sarissa&&!window.Sarissa.serialize){throw new Exception("Sarissa is required to use the WSXMLTunnel with XMLDocument Objects.")}c=Sarissa.serialize(c)}var d=Utilities.parseRequestIDFromXLS(c);
if(typeof f=="function"){b[d]=f}else{throw new Exception("WSXMLTunnel.send: callBack must be a function, arg was: "+f)}JSRequest.send(c,this._callBack,this.responseFormat)};
this._callBack= function(c){var d,f;
if(a.responseFormat=="XML"){d=Sarissa.getDomDocument();
d=(new DOMParser()).parseFromString(Utilities.normalizePrefixes(c),"text/xml");
d.setProperty("SelectionLanguage","XPath");
d.setProperty("SelectionNamespaces","xmlns:xls='http://www.opengis.net/xls' xmlns:gml='http://www.opengis.net/gml'");
f=(d.selectSingleNode("//xls:Response/@requestID").value)}else{d=c;
if(deCarta.Array.isArray(d.XLS.Response)){f=d.XLS.Response[0].requestID}else{f=d.XLS.Response.requestID}}b[f](d)}}deCarta.XMLStringBuilder= function(){this.overlays=[];
this.routeIDOverlay=null;
this.rendering="server";
this.routeID=null;
this.clientName=Credentials.clientName;
this.clientPassword=Credentials.clientPassword;
this.configuration=Credentials.configuration;
this.transparentConfiguration=Credentials.transparentConfiguration;
this.mapType=GLOBALS.STREET;
this.streetImgFormat="PNG";
this.hybridImgFormat="PNG"};
deCarta.XMLStringBuilder.prototype.getRequestHeader= function(a,b){a=a||Utilities.getRequestId();
var c="<xls:XLS version='1' xls:lang='en' xmlns:xls='http://www.opengis.net/xls'";
if(Credentials.rel){c+=" rel='"+Credentials.rel+"' "}c+="xmlns:gml='http://www.opengis.net/gml'><xls:RequestHeader clientName='"+this.clientName+"' sessionID='"+a+"' clientPassword='"+this.clientPassword+"' configuration='";
if(this.mapType=="STREET"){c+=this.configuration+"'"}else{c+=this.transparentConfiguration+"'"}if(b){c+=" defaultUOM='"+b+"' "}c+="/>";
return c};
deCarta.XMLStringBuilder.prototype.getRequestOpen= function(a,c,b){b=b||"10";
c=c||Utilities.getRequestId();
var d="<xls:Request maximumResponses='"+b+"' version='1.0' requestID='"+c+"' methodName='"+a+"'>";
return d};
deCarta.XMLStringBuilder.prototype.getHeader= function(a,c,b,d,f){var g=this.getRequestHeader(d,f);
g+=this.getRequestOpen(a,c,b);
return g};
deCarta.XMLStringBuilder.prototype.getFooter= function(){return"</xls:Request></xls:XLS>"};
deCarta.XMLStringBuilder.prototype.createRUOKRequest= function(b){var a=this.getHeader("RuokRequest",b,25,Utilities.getRequestId());
a+="<xls:RUOKRequest />"+this.getFooter();
return a};
deCarta.XMLStringBuilder.prototype.createMapRequest= function(j,d,g,f,c,b,i){var a=this.getHeader("PortrayMapRequest",g,null,i);
a+="<xls:PortrayMapRequest><xls:Output height='"+d+"' width='"+d+"' ";
a+="format='"+(this.mapType=="STREET"?this.streetImgFormat:this.hybridImgFormat)+"' fixedgrid='true' useCache='true'><xls:CenterContext SRS='WGS-84'><xls:CenterPoint><gml:pos>"+j.toString()+"</gml:pos></xls:CenterPoint><xls:Radius unit='KM'>4</xls:Radius></xls:CenterContext><xls:TileGrid rows='1' columns='1'><xls:GridLayer name='deCarta'/><xls:GridLayer name='globexplorer' meta-inf='zoom=";
if(!c){a+=Utilities.deCartaToGXZoomLevel(f)}else{a+=Utilities.deCartaToGXZoomLevel(c)+":"+Utilities.deCartaToGXZoomLevel(f)}a+="'/></xls:TileGrid></xls:Output>"+this.overlaysToXLSString();
if(Credentials.trafficEnabled){if(b){a+="<xls:Overlay><xls:Traffic><xls:FlowReporting/></xls:Traffic></xls:Overlay>"}else{a+="<xls:Overlay><xls:Traffic><xls:FlowReporting"+(b?" time='"+b+"'":"")+"/></xls:Traffic></xls:Overlay>"}}a+="</xls:PortrayMapRequest>";
a+=this.getFooter();
return a};
deCarta.XMLStringBuilder.prototype.createGeocodeRequest= function(a,f,d){var b=this.getHeader("GeocodeRequest",f);
b+="<xls:GeocodeRequest";
if(d){b+=" returnFreeForm='true'>"}else{b+=" returnFreeForm='false'>"}b+="<xls:Address countryCode='"+a.getLocale().getCountry()+"'";
b+=" language='"+a.getLocale().getLanguage()+"'>";
if(a.type=="FreeForm"){b+="<xls:freeFormAddress>"+a.toString()+"</xls:freeFormAddress>"}else{var c="";
var g="";
if(!(a.buildingNumber&&a.street)&&(a.streetNameAndNumber)){b+="<xls:StreetNameAndNumber>"+a.streetNameAndNumber+"</xls:StreetNameAndNumber>"}else{if(a.buildingNumber||a.buildingNumber==0){c="<xls:Building number='"+a.buildingNumber+"'/>"}if(a.street){g="<xls:Street>"+a.street+"</xls:Street>"}if(a.street){b+="<xls:StreetAddress>"+c+g+"</xls:StreetAddress>"}}if(a.countrySubdivision){b+="<xls:Place type='CountrySubdivision'>"+a.countrySubdivision+"</xls:Place>"}if(a.countrySecondarySubdivision){b+="<xls:Place type='CountrySecondarySubdivision'>"+a.countrySecondarySubdivision+"</xls:Place>"}if(a.countryTertiarySubdivision){b+="<xls:Place type='CountryTertiarySubdivision'>"+a.countryTertiarySubdivision+"</xls:Place>"}if(a.municipality){b+="<xls:Place type='Municipality'>"+a.municipality+"</xls:Place>"}if(a.municipalitySubdivision){b+="<xls:Place type='MunicipalitySubdivision'>"+a.municipalitySubdivision+"</xls:Place>"}if(a.postalCode){b+="<xls:PostalCode>"+a.postalCode+"</xls:PostalCode>"}}b+="</xls:Address></xls:GeocodeRequest>";
b+=this.getFooter();
return b};
deCarta.XMLStringBuilder.prototype.createReverseGeocodeRequest= function(c,b){var a=this.getHeader("ReverseGeocodeRequest",b);
a+="<xls:ReverseGeocodeRequest><xls:Position><gml:Point><gml:pos>"+c.toString()+"</gml:pos></gml:Point></xls:Position>";
a+="<xls:ReverseGeocodePreference>StreetAddress</xls:ReverseGeocodePreference>";
a+="</xls:ReverseGeocodeRequest>";
a+=this.getFooter();
return a};
deCarta.XMLStringBuilder.prototype.createPOIRequest= function(c,f){var d=deCarta.Array.isArray(c);
var b;
var a="";
if(d){a+=this.getRequestHeader(null,c.defaultUOM);
for(b=0;
b<c.length;
b++){a+=this.getRequestOpen("DirectoryRequest",f,c[b].maximumResponses);
a+=this.getDirectoryRequest(c[b]);
a+="</xls:Request>"}a+="</xls:XLS>"}else{a+=this.getHeader("DirectoryRequest",f,c.maximumResponses,null,c.defaultUOM);
a+=this.getDirectoryRequest(c);
a+=this.getFooter()}return a};
deCarta.XMLStringBuilder.prototype.createFullDetailsPOIRequest= function(c,b){var a=this.getHeader("DirectoryRequest",b,10);
a+='<xls:DirectoryRequest paging="current"><xls:POI ID="'+c+'"/></xls:DirectoryRequest>';
a+=this.getFooter();
return a};
deCarta.XMLStringBuilder.prototype.getDirectoryRequest= function(d){var c="";
c+="<xls:DirectoryRequest";
if(d.database!=null){c+=" database='"+d.database+"'"}if(d.sortDirection){c+=" sortDirection='"+d.sortDirection+"'"}if(d.sortCriteria){c+=" sortCriteria='"+d.sortCriteria+"'"}if(d.allowAggregates){c+=" allowAggregates='true'"}c+=">";
c+="<xls:POILocation><xls:WithinDistance>";
c+="<xls:POI ID='1'><gml:Point><gml:pos>"+d.position.toString()+"</gml:pos></gml:Point></xls:POI>";
c+="<xls:MinimumDistance value='0' uom='KM'/><xls:MaximumDistance value='"+d.radius.distance+"' uom='"+d.radius.uom.value+"'/>";
c+="</xls:WithinDistance></xls:POILocation>";
c+="<xls:POIProperties>";
if(!d.retrieveAll){var b=false;
for(var a in d.properties){if(d.properties.hasOwnProperty(a)){b=true;
c+="<xls:POIProperty value='"+d.properties[a]+"' name='"+a+"'/>"}}if(!b){c+="<xls:POIProperty value='"+d.queryString+"' name='Keyword'/>"}}c+="</xls:POIProperties></xls:DirectoryRequest>";
return c};
deCarta.XMLStringBuilder.prototype.createRouteGeometryRequest= function(a,g,f){var b=this.getHeader("DetermineRouteRequest",g);
b+="<xls:DetermineRouteRequest distanceUnit='"+f.uom+"' routeQueryType='"+f.routeQueryType+"' provideRouteHandle='true'";
if(f.alternateRoutes){b+=" numAltRoutes='"+f.alternateRoutes+"'"}b+=">";
b+="<xls:RoutePlan";
if(Credentials.trafficEnabled){b+=" useRealTimeTraffic='true'"}if(f.optimized){b+=" optimize='true'"}if(Credentials.trafficEnabled&&f.expectedStartTime){b+=" expectedStartTime='"+f.expectedStartTime+"'"}b+=">";
b+="<xls:RoutePreference>"+f.routePreference+"</xls:RoutePreference>";
b+="<xls:WayPointList>";
for(var d=0;
d<a.length;
d++){if(d==0){b+="<xls:StartPoint><xls:Position><gml:Point><gml:pos>"+a[d].toString()+"</gml:pos></gml:Point></xls:Position></xls:StartPoint>"}else{if(d>0&&d<(a.length-1)){b+="<xls:ViaPoint><xls:Position><gml:Point><gml:pos>"+a[d].toString()+"</gml:pos></gml:Point></xls:Position></xls:ViaPoint>"}else{if(d==(a.length-1)){b+="<xls:EndPoint><xls:Position><gml:Point><gml:pos>"+a[d].toString()+"</gml:pos></gml:Point></xls:Position></xls:EndPoint>"}}}}b+="</xls:WayPointList>";
if(f.avoidList.length>0||f.avoidAreas.length>0){b+="<xls:AvoidList>";
for(d=0;
d<f.avoidAreas.length;
d++){b+=this.avoidAreasToXLSString(f.avoidAreas[d])}for(d=0;
d<f.avoidList.length;
d++){b+="<xls:AvoidFeature>"+f.avoidList[d].toString()+"</xls:AvoidFeature>"}b+="</xls:AvoidList>"}var c=f.logisticsPreference;
if(c&&(c.preferredRoute||c.hazmat||c.vehicleParameters||c.vehicleTypes||c.preferredTurn)){b+="<xls:Logistics>";
if(c.preferredRoute){b+="<xls:PreferredRoute>"+c.preferredRoute+"</xls:PreferredRoute>"}if(c.hazmat){b+="<xls:Hazmat>"+c.hazmat+"</xls:Hazmat>"}if(c.vehicleParameters){b+="<xls:VehicleParameters>"+c.vehicleParameters+"</xls:VehicleParameters>"}if(c.vehicleTypes){b+="<xls:VehicleTypes>"+c.vehicleTypes+"</xls:VehicleTypes>"}if(c.preferredTurn){b+="<xls:PreferredTurn>"+c.preferredTurn+"</xls:PreferredTurn>"}b+="</xls:Logistics>"}b+="</xls:RoutePlan>";
if(f.returnRouteInstructions){b+="<xls:RouteInstructionsRequest providePoint='true'";
if(f.rules){b+=" rules='"+f.rules+"'"}b+="/>"}b+="<xls:RouteGeometryRequest returnRouteIDOnly=";
if(f.returnRouteGeometry){b+="'false'"}else{b+="'true'"}if(f.generalizationFactor&&f.generalizationFactor!==0&&f.generalizationBBox){b+=" resolution ='"+f.generalizationFactor+"'>";
b+="<xls:BoundingBox><gml:pos>"+f.generalizationBBox.minPosition+"</gml:pos><gml:pos>"+f.generalizationBBox.maxPosition+"</gml:pos></xls:BoundingBox></xls:RouteGeometryRequest>"}else{b+="/>"}b+="</xls:DetermineRouteRequest>";
b+=this.getFooter();
return b};
deCarta.XMLStringBuilder.prototype.createRouteGeometryByIdRequest= function(d,c,b){var a=this.getHeader("DetermineRouteRequest",c,null,b);
a+="<xls:DetermineRouteRequest><xls:RouteHandle serviceID='DetermineRouteService' routeID='"+d+"'/><xls:RouteInstructionsRequest providePoint='true'/><xls:RouteGeometryRequest/>";
a+="</xls:DetermineRouteRequest>";
a+=this.getFooter();
return a};
deCarta.XMLStringBuilder.prototype.createTrafficIncidentRequest= function(b,c){var a=this.getHeader("TrafficRequest",c,b.maxiumResponses);
a+="<xls:TrafficRequest><xls:IncidentReporting minimumSeverity='"+b.minimumSeverity+"'/>";
a+="<xls:CenterContext SRS='WGS-84'><xls:CenterPoint><gml:pos>"+b.position+"</gml:pos></xls:CenterPoint>";
a+="<xls:Radius unit='"+b.radius.uom.value+"'>"+b.radius.distance+"</xls:Radius></xls:CenterContext>";
a+="</xls:TrafficRequest>";
a+=this.getFooter();
return a};
deCarta.XMLStringBuilder.prototype.overlaysToXLSString= function(){var g=[];
if(this.routeIDOverlay){g.push("<xls:Overlay><xls:RouteID>"+this.routeIDOverlay+"</xls:RouteID></xls:Overlay>")}for(var c=0;
c<this.overlays.length;
c++){if(this.overlays[c].rendering=="client"||(this.rendering!="server"&&this.overlays[c].rendering!="server")){continue}if(!this.overlays[c]||(this.overlays[c]&&!this.overlays[c].isVisible)){continue}var b="";
var f=this.overlays[c];
b+="<xls:Overlay>";
if(f.type=="line"){b+="<xls:Shape color='"+f.fillColor+"_"+f.borderColor+"' style='"+f.borderStyle+"' width='"+f.width+"_"+f.borderWidth+"'";
if(f.strokeOpacity){b+=" opacity='"+f.strokeOpacity+"'"}else{b+=" opacity='"+f.opacity+"'"}}else{b+="<xls:Shape type='"+f.type+"' color='"+f.fillColor+"_"+f.borderColor+"' style='"+f.borderStyle+"' width='"+f.borderWidth+"'";
if(f.strokeOpacity||f.fillOpacity){var a=f.strokeOpacity||f.opacity;
var d=f.fillOpacity||f.opacity;
b+=" opacity='"+d+"_"+a+"'"}else{b+=" opacity='"+f.opacity+"'"}}if(f.type=="circle"){b+=" pointspec='LL' radius='"+f.radius.uomdds+f.radius.distance+"'>"+f.position.lat+","+f.position.lon}else{f.VR7=f.VR7||Utilities.LL2VR7(f.positions);
if(f.type=="line"){b+=" pointspec='VR7'>"+f.VR7}else{b+=" pointspec='VR7PG'>"+f.VR7}}b+="</xls:Shape></xls:Overlay>";
g.push(b)}var j=g.join("");
return j};
deCarta.XMLStringBuilder.prototype.avoidAreasToXLSString= function(b){var c;
var a="<xls:AOI>";
if(/Line/i.test(b.name)){a+="<gml:LineString>";
for(c=0;
c<b.pos.length;
c++){a+="<gml:pos>"+b.pos[c]+"</gml:pos>"}a+="</gml:LineString>"}else{if(/Polygon/i.test(b.name)){a+="<gml:Polygon><gml:exterior><gml:LinearRing>";
for(c=0;
c<b.pos.length;
c++){a+="<gml:pos>"+b.pos[c]+"</gml:pos>"}a+="</gml:LinearRing></gml:exterior></gml:Polygon>"}else{if(/Rectangle/i.test(b.name)){a+="<gml:Envelope>";
a+="<gml:pos>"+b.pos[0]+"</gml:pos><gml:pos>"+b.pos[1]+"</gml:pos>";
a+="</gml:Envelope>"}else{if(/Circle/i.test(b.name)){a+="<gml:CircleByCenterPoint numArc='1'>";
a+="<gml:pos>"+b.pos[0]+"</gml:pos>";
a+="<gml:radius uom='"+b.radius.uom+"'>"+b.radius.distance+"</gml:radius>";
a+="</gml:CircleByCenterPoint>"}else{throw new Exception("deCarta.XMLStringBuilder.avoidAreasToXLSString: invalid type of avoid object: "+b.name)}}}}a+="</xls:AOI>";
return a};
function ZoomController(r,u,a,f,b,d){this.selected=r||5;
if(isNaN(parseInt(this.selected))||this.selected<0||this.selected>17){throw new Exception("Error instantiating ZoomController, invalid initial value "+r+".  The value must be between 1 and 17");
return false}this.domView=true;
this.zoomLevels=17;
this.lowerBound=1;
this.upperBound=17;
this.color=u||"";
this.uncheckedSrc=f||Credentials.zoomUnselectedIconPath;
this.checkedSrc=a||Credentials.zoomSelectedIconPath;
this.bottomCapSrc=d||Credentials.zoomOutIconPath;
this.bottomCapSrc=Credentials.imgPath+"z2t_zoom_bottom_gray.png";
this.topCapSrc=b||Credentials.zoomInIconPath;
this.topCapSrc=Credentials.imgPath+"z2t_zoom_top_gray.png";
this.pillarSrc=Credentials.imgPath+"z2t_zoom_rail_gray.png";
this.sliderSrc=Credentials.imgPath+"z2t_zoom_selected_gray.png";
this.zoomer=null;
this.map=null;
this.type="ZoomController";
this.frame=null;
var m=this;
var c=null;
var q=null;
var w=null;
var t=null;
var k=false;
var g=Utilities.ie;
var i;
var j;
var n=true;
this.setDomView= function(y){y=(y)?true:false;
this.domView=y};
this.initialize= function(){if(!this.domView){return false}c=document.createElement("IMG");
c.id="decarta-ztop";
c.src=this.topCapSrc;
c.className="decarta-zoomTop";
c.onclick= function(A){if(!GLOBALS.ALLOWDOMEVENTS){return true}A=A||event;
A.stoppropagation?A.stoppropagation():A.cancelBubble=true;
m.zoomInOneLevel();
return true};
deCarta.IdManager.setTag(c,"ignoreForMapEvents");
w=document.createElement("DIV");
w.style.backgroundImage="url("+this.pillarSrc+")";
w.style.backgroundRepeat="repeat-y";
w.style.backgroundPosition="center";
w.id="decarta-zpillar";
w.className="decarta-zoomPillar";
w.onclick= function(C){if(!GLOBALS.ALLOWDOMEVENTS){return true}C=C||event;
C.stoppropagation?C.stoppropagation():C.cancelBubble=true;
var A=C.clientY-Utilities.getAbsoluteTop(w)+Utilities.getScrollTop();
var B=parseInt(w.offsetHeight);
var D=Math.round(A/B*16)+1;
m.map.zoomMap(D);
return true};
deCarta.IdManager.setTag(w,"ignoreForMapEvents");
t=document.createElement("IMG");
t.src=this.sliderSrc;
t.className="decarta-zoomSlider";
t.id="decarta-zslider";
deCarta.IdManager.setTag(t,"ignoreForMapEvents");
t.onmousedown= function(A){if(!GLOBALS.ALLOWDOMEVENTS){return true}A=A?A:window.event;
A.stoppropagation?A.stoppropagation():A.cancelBubble=true;
if((!g&&A.which==3)||(g&&A.button==2)){if(_events.rightclick){click(A)}return true}if((!g&&A.which==2)||(g&&A.button==4)){return true}k=true;
t.style.cursor="move";
document.body.onmousemove=o;
document.body.onmouseup=v;
return false};
w.appendChild(t);
q=document.createElement("IMG");
q.src=this.bottomCapSrc;
q.id="decarta-zbottom";
q.className="decarta-zoomBottom";
q.onclick= function(A){if(!GLOBALS.ALLOWDOMEVENTS){return true}A=A||event;
A.stoppropagation?A.stoppropagation():A.cancelBubble=true;
m.zoomOutOneLevel();
return true};
deCarta.IdManager.setTag(q,"ignoreForMapEvents");
var z="decarta-zoom";
var y=z;
m.frame=document.createElement("DIV");
m.frame.id=z;
m.frame.className=y;
m.frame.innerHTML="";
if(m.color){m.frame.style.backgroundColor=m.color}deCarta.IdManager.setTag(m.frame,"ignoreForMapEvents");
m.frame.appendChild(c);
m.frame.appendChild(w);
m.frame.appendChild(q);
this.zoomer=this.frame;
if(!n){this.frame.style.display="none"}return true};
function v(z){document.body.onmousemove=null;
document.body.onmouseup=null;
k=false;
t.style.cursor="default";
z=z?z:window.event;
z.stoppropagation?z.stoppropagation():z.cancelBubble=true;
var y=z.clientY-Utilities.getAbsoluteTop(w)+Utilities.getScrollTop();
var A=Math.round(y/w.offsetHeight*16)+1;
if(A<1){A=1}if(A>17){A=17}m.map.zoomMap(A);
return false}function o(B){B=B?B:window.event;
if(!k){return false}var A=t.offsetHeight/2;
var z=w.offsetHeight-t.offsetHeight/2;
var y=B.clientY-Utilities.getAbsoluteTop(w)+Utilities.getScrollTop();
if(y<=z&&y>=A){t.style.top=y-t.offsetHeight/2+"px"}return false}this.setZoomRange= function(y,z){if(y<1||z>21||y>z){throw new Exception("illegal values setZoomRange: "+y+", "+z)}if(m.selected>z){m.selected=z}if(m.selected<y){m.selected=y}m.zoomLevels=z;
m.lowerBound=y;
m.upperBound=z};
this.setZoomButtonImages= function(B,A,y,C){if(B){this.checkedSrc=B}if(A){this.uncheckedSrc=A}if(B||A){for(var z=0;
z<_zoomButtons.length;
z++){_zoomButtons[z].src=this.uncheckedSrc}if(m.selected){_zoomButtons[m.selected-1].src=this.checkedSrc}}if(y){this.topCapSrc=y;
c.src=y}if(C){this.bottomCapSrc=C;
q.src=C}};
this.setColor= function(y){this.frame.style.backgroundColor=y};
this.show= function(){n=true;
if(this.frame){this.frame.style.display="block"}};
this.hide= function(){n=false;
if(this.frame){this.frame.style.display="none"}};
this.getRadius= function(){return i};
this.setRadius= function(B){j=B;
var A=m.map.getGridSize().split(" ");
var C=A[0];
var z=A[1];
if(C==z){i=B}else{i=(j/z)*C}};
this.getRadiusX= function(){return j};
this.setRadiusX= function(y){j=y};
this.getMinViewableRadius= function(){var C=m.map.getGridSize().split(" ");
var A=C[0]*GLOBALS.DEFAULT_MAP_TILE_SIZE;
var B=C[1]*GLOBALS.DEFAULT_MAP_TILE_SIZE;
var E=parseInt(m.map.mapDiv.style.width);
var D=parseInt(m.map.mapDiv.style.height);
var z=(E/B)*j;
var y=(D/A)*i;
return y<z?y:z};
this.getMaxViewableRadius= function(){var C=m.map.getGridSize().split(" ");
var A=C[0]*GLOBALS.DEFAULT_MAP_TILE_SIZE;
var B=C[1]*GLOBALS.DEFAULT_MAP_TILE_SIZE;
var E=parseInt(m.map.mapDiv.style.width);
var D=parseInt(m.map.mapDiv.style.height);
var z=(E/B)*j;
var y=(D/A)*i;
return y>z?y:z};
this.getMaxRadius= function(){return j<i?i:j};
this.getZoomLevel= function(){return m.selected};
this.setZoomValue= function(y){this.setZoomLevel(y)};
this.setZoomLevel= function(A){if(A&&A<m.lowerBound||A>m.upperBound){throw new Exception("Error calling setZoomLevel, out of range");
return false}m.selected=A;
if(t&&t.style){var y=parseInt(w.offsetHeight);
var z=parseInt(t.offsetHeight);
t.style.top=(A-1/2)*y/17-1/2*z+"px";
w.removeChild(t);
w.appendChild(t)}};
this.getGXConvertedZoomLevel= function(){return Math.abs(21-m.selected)};
this.zoomToNewLevel= function(y){if(y&&y<m.lowerBound||y>m.upperBound){throw new Exception("Error calling zoomToNewLevel, out of range");
return false}m.map.zoomMap(y)};
this.zoomInOneLevel= function(){if(m.selected<=m.lowerBound){return false}m.map.zoomMap(parseInt(m.selected)-1)};
this.zoomOutOneLevel= function(){if(m.selected==m.zoomLevels){return false}m.map.zoomMap(parseInt(m.selected)+1)};
this.getZoomLevelToFitBoundingBox= function(B){var E=parseInt(m.map.mapDiv.style.height)/2;
var F=parseInt(m.map.mapDiv.style.width)/2;
for(var D=20;
D>0;
--D){var A=Utilities.radsPerPixelAtZoom(this.map.getTileSize(),D);
var H=Utilities.lat2pix(B.getCenterPosition().getLat(),A);
var J=Utilities.lon2pix(B.getCenterPosition().getLon(),A);
var C=Utilities.pix2lat(H+E,A);
var I=Utilities.pix2lon(J+F,A);
var z=Utilities.pix2lat(H-E,A);
var G=Utilities.pix2lon(J-F,A);
var y=new BoundingBox(new Position(z,G),new Position(C,I));
if(y.contains(B.minPosition)&&y.contains(B.maxPosition)){return Math.abs(21-D);
break}}};
this.getZoomLevelToFitPositions= function(y){var z=Utilities.positionsToBoundingBox(y);
return m.getZoomLevelToFitBoundingBox(z)};
this.getZoomLevelToFitPins= function(B){var z=[];
for(var A=0;
A<B.length;
A++){z[A]=B[A].position.clone()}var C=Utilities.positionsToBoundingBox(z);
var D=m.getZoomLevelToFitBoundingBox(C);
var y=Utilities.radsPerPixelAtZoom(m.map.getTileSize(),Math.abs(21-D));
C=Utilities.pinsToBoundingBox(B,y);
return m.getZoomLevelToFitBoundingBox(C)};
this.appendThis= function(){if(!this.frame){this.initialize()}var y=this.frame||null;
return y};
this.removeThis= function(){this.map=null;
return this.frame};
this.position= function(y){if(!this.map){return}if(this.frame){if(this.map.getPanController()){this.frame.style.top="61px";
this.frame.style.left="21px"}else{this.frame.style.top="10px";
this.frame.style.left="10px"}this.setZoomLevel(m.selected)}};
function p(){}}function ZoomController(g,d,c,q,o,a){this.selected=g||5;
if(isNaN(parseInt(this.selected))||this.selected<0||this.selected>17){throw new Exception("Error instantiating ZoomController, invalid initial value "+g+".  The value must be between 1 and 17");
return false}this.domView=true;
this.zoomLevels=17;
this.lowerBound=1;
this.upperBound=17;
this.color=d||"";
this.uncheckedSrc=q||Credentials.zoomUnselectedIconPath;
this.checkedSrc=c||Credentials.zoomSelectedIconPath;
this.bottomCapSrc=a||Credentials.zoomOutIconPath;
this.topCapSrc=o||Credentials.zoomInIconPath;
this.zoomer=null;
this.map=null;
this.type="ZoomController";
this.frame=null;
var p=this;
var k=new Array();
var f=null;
var i=null;
var m;
var n;
var b=true;
this.setDomView= function(r){r=(r)?true:false;
this.domView=r};
this.initialize= function(){if(!this.domView){return false}var w;
var r="decarta-zoomButton";
for(w=p.lowerBound;
w<=p.upperBound;
w++){var v=document.createElement("img");
deCarta.IdManager.setTag(v,"ignoreForMapEvents");
v.id="decarta-z"+w;
v.className=r;
v.src=p.uncheckedSrc;
v.onclick= function(){if(!GLOBALS.ALLOWDOMEVENTS){return true}p.map.zoomMap(this.id.substring(9));
return true};
if(Utilities.ie6){Utilities.fixPng(v)}k.push(v)}f=document.createElement("IMG");
f.id="decarta-ztop";
f.src=this.topCapSrc;
f.className=r;
if(Utilities.ie6){Utilities.fixPng(f)}f.onclick= function(y){if(!GLOBALS.ALLOWDOMEVENTS){return true}y=y||event;
y.stoppropagation?y.stoppropagation():y.cancelBubble=true;
p.zoomInOneLevel();
return true};
deCarta.IdManager.setTag(f,"ignoreForMapEvents");
i=document.createElement("IMG");
i.src=this.bottomCapSrc;
i.className=r;
if(Utilities.ie6){Utilities.fixPng(i)}i.id="decarta-zbottom";
i.onclick= function(y){if(!GLOBALS.ALLOWDOMEVENTS){return true}y=y||event;
y.stoppropagation?y.stoppropagation():y.cancelBubble=true;
p.zoomOutOneLevel();
return true};
deCarta.IdManager.setTag(i,"ignoreForMapEvents");
var u="decarta-zoom";
var t=u;
p.frame=document.createElement("DIV");
p.frame.id=u;
p.frame.className=t;
p.frame.innerHTML="";
if(p.color){p.frame.style.backgroundColor=p.color}deCarta.IdManager.setTag(p.frame,"ignoreForMapEvents");
p.frame.appendChild(f);
for(w=0;
w<k.length;
w++){p.frame.appendChild(k[w])}p.frame.appendChild(i);
this.zoomer=this.frame;
if(!b){this.frame.style.display="none"}this.setZoomLevel(p.selected);
return true};
this.setZoomRange= function(r,t){if(r<1||t>21||r>t){throw new Exception("illegal values setZoomRange: "+r+", "+t)}if(p.selected>t){p.selected=t}if(p.selected<r){p.selected=r}p.zoomLevels=t;
p.lowerBound=r;
p.upperBound=t};
this.setZoomButtonImages= function(v,u,r,w){if(v){this.checkedSrc=v}if(u){this.uncheckedSrc=u}if(v||u){for(var t=0;
t<k.length;
t++){k[t].src=this.uncheckedSrc}if(p.selected){k[p.selected-1].src=this.checkedSrc}}if(r){this.topCapSrc=r;
f.src=r}if(w){this.bottomCapSrc=w;
i.src=w}};
this.setColor= function(r){this.frame.style.backgroundColor=r};
this.show= function(){b=true;
if(this.frame){this.frame.style.display="block"}};
this.hide= function(){b=false;
if(this.frame){this.frame.style.display="none"}};
this.getRadius= function(){return m};
this.setRadius= function(v){n=v;
var u=p.map.getGridSize().split(" ");
var w=u[0];
var t=u[1];
if(w==t){m=v}else{m=(n/t)*w}};
this.getRadiusX= function(){return n};
this.setRadiusX= function(t){n=t};
this.getMinViewableRadius= function(){var w=p.map.getGridSize().split(" ");
var u=w[0]*GLOBALS.DEFAULT_MAP_TILE_SIZE;
var v=w[1]*GLOBALS.DEFAULT_MAP_TILE_SIZE;
var z=parseInt(p.map.mapDiv.style.width);
var y=parseInt(p.map.mapDiv.style.height);
var t=(z/v)*n;
var r=(y/u)*m;
return r<t?r:t};
this.getMaxViewableRadius= function(){var w=p.map.getGridSize().split(" ");
var u=w[0]*GLOBALS.DEFAULT_MAP_TILE_SIZE;
var v=w[1]*GLOBALS.DEFAULT_MAP_TILE_SIZE;
var z=parseInt(p.map.mapDiv.style.width);
var y=parseInt(p.map.mapDiv.style.height);
var t=(z/v)*n;
var r=(y/u)*m;
return r>t?r:t};
this.getMaxRadius= function(){return n<m?m:n};
this.getZoomLevel= function(){return p.selected};
this.setZoomValue= function(r){this.setZoomLevel(r)};
this.setZoomLevel= function(t){if(t&&t<p.lowerBound||t>p.upperBound){throw new Exception("Error calling setZoomLevel, out of range");
return false}p.selected=t;
j();
for(var r=0;
r<k.length;
r++){if(k[r].id=="decarta-z"+t){k[r].src=p.checkedSrc}if(Utilities.ie6){Utilities.fixPng(k[r])}}};
this.getGXConvertedZoomLevel= function(){return Math.abs(21-p.selected)};
this.zoomToNewLevel= function(t){if(t&&t<p.lowerBound||t>p.upperBound){throw new Exception("Error calling zoomToNewLevel, out of range");
return false}j();
for(var r=0;
r<k.length;
r++){if(k[r].id=="decarta-z"+t){k[r].src=p.checkedSrc}if(Utilities.ie6){Utilities.fixPng(k[r])}}p.map.zoomMap(t)};
this.zoomInOneLevel= function(){if(p.selected<=p.lowerBound){return false}j();
for(var r=0;
r<k.length;
r++){if(k[r].id=="decarta-z"+p.selected){k[r].src=p.checkedSrc}}p.map.zoomMap(parseInt(p.selected)-1)};
this.zoomOutOneLevel= function(){if(p.selected==p.zoomLevels){return false}j();
for(var r=0;
r<k.length;
r++){if(k[r].id=="decarta-z"+p.selected){k[r].src=p.checkedSrc}}p.map.zoomMap(parseInt(p.selected)+1)};
this.getZoomLevelToFitBoundingBox= function(v){var z=parseInt(p.map.mapDiv.style.height)/2;
var A=parseInt(p.map.mapDiv.style.width)/2;
for(var y=20;
y>0;
--y){var u=Utilities.radsPerPixelAtZoom(this.map.getTileSize(),y);
var C=Utilities.lat2pix(v.getCenterPosition().getLat(),u);
var E=Utilities.lon2pix(v.getCenterPosition().getLon(),u);
var w=Utilities.pix2lat(C+z,u);
var D=Utilities.pix2lon(E+A,u);
var t=Utilities.pix2lat(C-z,u);
var B=Utilities.pix2lon(E-A,u);
var r=new BoundingBox(new Position(t,B),new Position(w,D));
if(r.contains(v.minPosition)&&r.contains(v.maxPosition)){return Math.abs(21-y);
break}}};
this.getZoomLevelToFitPositions= function(r){var t=Utilities.positionsToBoundingBox(r);
return p.getZoomLevelToFitBoundingBox(t)};
this.getZoomLevelToFitPins= function(v){var t=[];
for(var u=0;
u<v.length;
u++){t[u]=v[u].position.clone()}var w=Utilities.positionsToBoundingBox(t);
var y=p.getZoomLevelToFitBoundingBox(w);
var r=Utilities.radsPerPixelAtZoom(p.map.getTileSize(),Math.abs(21-y));
w=Utilities.pinsToBoundingBox(v,r);
return p.getZoomLevelToFitBoundingBox(w)};
this.appendThis= function(){if(!this.frame){this.initialize()}var r=this.frame||null;
return r};
this.removeThis= function(){this.map=null;
return this.frame};
this.position= function(r){if(!this.map){return}if(this.frame){this.frame.style.top="1px";
this.frame.style.left="1px"}};
function j(){for(var r=0;
r<k.length;
r++){k[r].src=p.uncheckedSrc}}};

