


/* ID: com.ptvag.webcomponent.map.vector.InfoBoxElementFactoryDefault */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.InfoBoxElementFactoryDefault",qxp.core.Object,function(){qxp.core.Object.call(this);
var self=this;
self.createContentBox=function(content,bgcolor){var allowWrap=self.getAllowWrap();
var paddingLeft=self.getPaddingLeft();
var paddingRight=self.getPaddingRight();
var paddingTop=self.getPaddingTop();
var paddingBottom=self.getPaddingBottom();
return '<td bgcolor="'+bgcolor+'" style="'+'padding-left:'+paddingLeft+';padding-right:'+paddingRight+';padding-top:'+paddingTop+';padding-bottom:'+paddingBottom+';border:1px #7f7f7f solid'+(allowWrap?'':';white-space:nowrap')+'">'+content+'</td>';
};
self.createInfoBoxElement=function(x,y,content,container,visible,reuseElement){var allowWrap=self.getAllowWrap();
var paddingLeft=self.getPaddingLeft();
var paddingRight=self.getPaddingRight();
var paddingTop=self.getPaddingTop();
var paddingBottom=self.getPaddingBottom();
if(content.text==null){content={text:content,background:"#ffffff"};
};var initialWidth=null;
var infoBoxElement=reuseElement;
if(infoBoxElement==null){infoBoxElement=document.createElement("div");
infoBoxElement.style.position="absolute";
}else{initialWidth=infoBoxElement.childNodes[0].style.width;
if(initialWidth!=null){initialWidth=parseInt(initialWidth);
}};var MapUtil=com.ptvag.webcomponent.map.MapUtil;
var top=0;
var infoBoxHTML='';
infoBoxHTML+='<table cellpadding="0" cellspacing="0" border="0"'+' style="position:absolute;left:0px;top:'+top+'px'+(initialWidth!=null?';width:'+initialWidth+'px':'')+'">'+'<tr>'+'<td></td>'+'<td align="left" style="font-size:1px">'+'<div style="width:11px;height:19px"></div>'+'</td>'+'<td></td>'+'</tr>'+'<tr>'+'<td style="font-size:1px">'+'<div style="width:19px;height:11px"></div>'+'</td>'+self.createContentBox(content.text,content.background)+'<td style="font-size:1px">'+'<div style="width:19px;height:11px"></div>'+'</td>'+'</tr>'+'<tr>'+'<td></td>'+'<td align="left" style="font-size:1px">'+'<div style="width:11px;height:19px"></div>'+'</td>'+'<td></td>'+'</tr>'+'</table>';
infoBoxHTML+='<img src="'+MapUtil.rewriteURL("img/com/ptvag/webcomponent/map/line2left.gif",true)+'" height="11" width="20" style="left:0px;top:19px;position:absolute;display:none"/>';
infoBoxHTML+='<img src="'+MapUtil.rewriteURL("img/com/ptvag/webcomponent/map/line2right.gif",true)+'" height="11" width="20" style="right:0px;top:19px;position:absolute;display:none"/>';
infoBoxHTML+='<img src="'+MapUtil.rewriteURL("img/com/ptvag/webcomponent/map/line2up.gif",true)+'" height="20" width="11" style="'+(initialWidth!=null?';left:'+Math.round((initialWidth-11)/2)+'px':'')+';position:absolute;top:0px;display:none"/>';
infoBoxHTML+='<img src="'+MapUtil.rewriteURL("img/com/ptvag/webcomponent/map/line2.gif",true)+'" height="20" width="11" style="'+(initialWidth!=null?';left:'+Math.round((initialWidth-11)/2)+'px':'')+';position:absolute;bottom:0px"/>';
infoBoxHTML+='<img src="'+MapUtil.rewriteURL("img/com/ptvag/webcomponent/map/closebox.gif",true)+'" width="7" height="7" style="position:absolute;top:19px;right:19px;display:none"/>';
infoBoxElement.innerHTML=infoBoxHTML;
if(!reuseElement){infoBoxElement.style.visibility="hidden";
container.appendChild(infoBoxElement);
};var table=infoBoxElement.childNodes[0];
var width=table.offsetWidth;
var height=table.offsetHeight;
mouseHandlerElement=table.getElementsByTagName("tr")[1].childNodes[1];
mouseHandlerElement._ignoreMouseDown=true;
mouseHandlerElement._ignoreMouseUp=true;
mouseHandlerElement._allowSelection=true;
mouseHandlerElement._ignoreMouseWheel=self.getAllowMouseWheel();
table.style.width=width+"px";
infoBoxElement.style.width=width+"px";
infoBoxElement.style.height=height+"px";
infoBoxElement._ptv_map_printBackground=true;
infoBoxElement._ptv_map_printBackgroundHeight=height-20;
var imgElements=infoBoxElement.getElementsByTagName("img");
var imgElementCount=imgElements.length;
var imgElement1=imgElements[imgElementCount-2];
imgElement1._ignoreMouseDown=true;
var imgElement2=imgElements[imgElementCount-3];
imgElement2._ignoreMouseDown=true;
imgElement2=imgElements[imgElementCount-4];
imgElement2._ignoreMouseDown=true;
imgElement2=imgElements[imgElementCount-5];
imgElement2._ignoreMouseDown=true;
var closeboxElement=imgElements[imgElementCount-1];
closeboxElement._ignoreMouseDown=true;
closeboxElement._ignoreMouseUp=true;
closeboxElement._ignoreMouseWheel=self.getAllowMouseWheel();
infoBoxElement._width=width;
infoBoxElement._height=height;
infoBoxElement._containerWidth=container.offsetWidth;
infoBoxElement._containerHeight=container.offsetHeight;
self.positionInfoBoxElement(infoBoxElement,x,y);
if(visible){infoBoxElement.style.visibility="visible";
};return infoBoxElement;
};
self.positionInfoBoxElement=function(infoBoxElement,x,y){var imgElements=infoBoxElement.getElementsByTagName("img");
var imgElementCount=imgElements.length;
var leftImgElement=imgElements[imgElementCount-5];
var rightImgElement=imgElements[imgElementCount-4];
var topImgElement=imgElements[imgElementCount-3];
var bottomImgElement=imgElements[imgElementCount-2];
var clearLeft=self.getClearLeft();
var clearRight=self.getClearRight();
var clearTop=self.getClearTop();
var clearBottom=self.getClearBottom();
var freeSpaceTop=y-infoBoxElement._height+19-clearTop;
var freeSpaceBottom=infoBoxElement._containerHeight-clearBottom-(y+infoBoxElement._height-19);
var freeSpaceLeft=x-infoBoxElement._width+19-clearLeft;
var freeSpaceRight=infoBoxElement._containerWidth-clearRight-(x+infoBoxElement._width-19);
infoBoxElement._borderLeft=19;
infoBoxElement._borderRight=19;
infoBoxElement._borderTop=19;
infoBoxElement._borderBottom=19;
if(freeSpaceTop>=0||freeSpaceBottom<0&&freeSpaceLeft<0&&freeSpaceRight<0){var tipToShow=bottomImgElement;
infoBoxElement._borderBottom=0;
}else if(freeSpaceBottom>=0){tipToShow=topImgElement;
infoBoxElement._borderTop=0;
}else if(freeSpaceLeft>=0){tipToShow=rightImgElement;
infoBoxElement._borderRight=0;
}else{tipToShow=leftImgElement;
infoBoxElement._borderLeft=0;
};for(var i=imgElementCount-5;
i<=imgElementCount-2;
++i){var imgElement=imgElements[i];
if(imgElement==tipToShow){imgElement.style.display="";
}else{imgElement.style.display="none";
}};var tipWidth=self.getTipWidth();
var tipMargin=self.getTipMargin();
if(tipToShow==bottomImgElement||tipToShow==topImgElement){var left=x-infoBoxElement._width/2;
var width=infoBoxElement._width;
var containerWidth=infoBoxElement._containerWidth-clearRight;
if(left+width-19>containerWidth){left=containerWidth-width+19;
};if(left<-19+clearLeft){left=-19+clearLeft;
};var imgMargin=x-left-tipWidth/2;
if(imgMargin-19<tipMargin){left+=imgMargin-tipMargin-19;
imgMargin=tipMargin+19;
}else if(imgMargin>width-19-tipWidth-tipMargin){left+=imgMargin-(width-19-tipWidth-tipMargin);
imgMargin=width-19-tipWidth-tipMargin;
};var top=y-infoBoxElement._height;
if(tipToShow==topImgElement){top=y;
topImgElement.style.left=Math.round(imgMargin)+"px";
}else{bottomImgElement.style.left=Math.round(imgMargin)+"px";
};infoBoxElement.style.left=Math.round(left)+"px";
infoBoxElement.style.top=Math.round(top)+"px";
}else{var top=y-infoBoxElement._height/2;
var height=infoBoxElement._height;
var containerHeight=infoBoxElement._containerHeight-clearBottom;
if(top+height-19>containerHeight){top=containerHeight-height+19;
};if(top<-19+clearTop){top=-19+clearTop;
};var imgMargin=y-top-tipWidth/2;
if(imgMargin-19<tipMargin){top+=imgMargin-tipMargin-19;
imgMargin=tipMargin+19;
}else if(imgMargin>height-19-tipWidth-tipMargin){top+=imgMargin-(height-19-tipWidth-tipMargin);
imgMargin=height-19-tipWidth-tipMargin;
};var left=x-infoBoxElement._width;
if(tipToShow==leftImgElement){left=x;
leftImgElement.style.top=Math.round(imgMargin)+"px";
}else{rightImgElement.style.top=Math.round(imgMargin)+"px";
};infoBoxElement.style.top=Math.round(top)+"px";
infoBoxElement.style.left=Math.round(left)+"px";
}};
self.destroyInfoBoxElement=function(infoBoxElement){infoBoxElement.parentNode.removeChild(infoBoxElement);
var imgElements=infoBoxElement.getElementsByTagName("img");
var closeboxElement=imgElements[imgElements.length-1];
closeboxElement.onclick=null;
};
self.activateCloseWidget=function(infoBoxElement,handler){var imgElements=infoBoxElement.getElementsByTagName("img");
var closeboxElement=imgElements[imgElements.length-1];
closeboxElement.style.display="";
closeboxElement.onclick=handler;
};
self.testUnhover=function(evt,element,tolerance){var minX=parseInt(element.style.left);
var maxX=minX+element._width;
var minY=parseInt(element.style.top);
var maxY=minY+element._height;
minX+=element._borderLeft-tolerance;
maxX-=element._borderRight-tolerance;
minY+=element._borderTop-tolerance;
maxY-=element._borderBottom-tolerance;
if(evt.relMouseX>=minX&&evt.relMouseX<maxX&&evt.relMouseY>=minY&&evt.relMouseY<maxY){return false;
};return true;
};
self.hitTest=function(evt,element){var minX=parseInt(element.style.left)+19;
var maxX=minX+element._width-38;
var minY=parseInt(element.style.top)+19;
var maxY=minY+element._height-38;
if(evt.relMouseX>=minX&&evt.relMouseX<maxX&&evt.relMouseY>=minY&&evt.relMouseY<maxY){return true;
};if(evt.relMouseY>=minY&&evt.relMouseY<maxY){if(element._borderLeft==0&&evt.relMouseX<minX&&evt.relMouseX>=minX-19){var imgElements=element.getElementsByTagName("img");
var imgElementCount=imgElements.length;
var leftImgElement=imgElements[imgElementCount-5];
var imgTop=parseInt(element.style.top)+parseInt(leftImgElement.style.top);
if(evt.relMouseY>=imgTop&&evt.relMouseY<imgTop+11){return true;
}};if(element._borderRight==0&&evt.relMouseX>=maxX&&evt.relMouseX<maxX+19){imgElements=element.getElementsByTagName("img");
imgElementCount=imgElements.length;
var rightImgElement=imgElements[imgElementCount-4];
imgTop=parseInt(element.style.top)+parseInt(rightImgElement.style.top);
if(evt.relMouseY>=imgTop&&evt.relMouseY<imgTop+11){return true;
}}};if(evt.relMouseX>=minX&&evt.relMouseX<maxX){if(element._borderTop==0&&evt.relMouseY<minY&&evt.relMouseY>=minY-19){imgElements=element.getElementsByTagName("img");
imgElementCount=imgElements.length;
var topImgElement=imgElements[imgElementCount-3];
var imgLeft=parseInt(element.style.left)+parseInt(topImgElement.style.left);
if(evt.relMouseX>=imgLeft&&evt.relMouseX<imgLeft+11){return true;
}};if(element._borderBottom==0&&evt.relMouseY>=maxY&&evt.relMouseY<maxY+19){imgElements=element.getElementsByTagName("img");
imgElementCount=imgElements.length;
var bottomImgElement=imgElements[imgElementCount-2];
imgLeft=parseInt(element.style.left)+parseInt(bottomImgElement.style.left);
if(evt.relMouseX>=imgLeft&&evt.relMouseX<imgLeft+11){return true;
}}};return false;
};
});
qxp.OO.addProperty({name:"allowWrap",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:false});
qxp.OO.addProperty({name:"paddingLeft",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:"8px"});
qxp.OO.addProperty({name:"paddingRight",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:"8px"});
qxp.OO.addProperty({name:"paddingTop",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:"4px"});
qxp.OO.addProperty({name:"paddingBottom",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:"4px"});
qxp.OO.addProperty({name:"allowMouseWheel",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:false});
qxp.OO.addProperty({name:"tipWidth",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:11});
qxp.OO.addProperty({name:"tipHeight",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:20});
qxp.OO.addProperty({name:"tipMargin",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:0});
qxp.OO.addProperty({name:"clearLeft",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:0});
qxp.OO.addProperty({name:"clearRight",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:30});
qxp.OO.addProperty({name:"clearTop",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:35});
qxp.OO.addProperty({name:"clearBottom",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:0});
qxp.Class.getInstance=function(){var vector=com.ptvag.webcomponent.map.vector;
var myClass=vector.InfoBoxElementFactoryDefault;
if(myClass.instance==null){myClass.instance=new vector.InfoBoxElementFactoryDefault();
};return myClass.instance;
};com.ptvag.webcomponent.map.vector.InfoBoxElementFactory=com.ptvag.webcomponent.map.vector.InfoBoxElementFactoryDefault.getInstance();




/* ID: com.ptvag.webcomponent.map.MapUtil */
qxp.OO.defineClass("com.ptvag.webcomponent.map.MapUtil");
qxp.Class.setElementOpacity=function(elem,alpha){var clientInstance=qxp.sys.Client.getInstance();
if(clientInstance.isGecko()){elem.style.MozOpacity=(alpha==null||alpha==1)?"":alpha;
}else if(clientInstance.isKhtml()){elem.style.KhtmlOpacity=(alpha==null||alpha==1)?"":alpha;
}else if(clientInstance.isMshtml()){elem.style.filter=(alpha==null||alpha==1)?"":"Alpha(Opacity="+Math.round(alpha*100)+")";
}else{elem.style.opacity=(alpha==null||alpha==1)?"":alpha;
}};
qxp.Class.dec2hex=function(value,digits){var retVal=value.toString(16);
var toAdd=digits-retVal.length;
for(var i=0;
i<toAdd;
++i){retVal="0"+retVal;
};return retVal;
};
qxp.Class.translateColor=function(color){var clazz=com.ptvag.webcomponent.map.MapUtil;
var opacity=null;
var match=clazz.RGB_REGEX.exec(color);
if(match==null){match=clazz.RGBA_REGEX.exec(color);
if(match!=null){opacity=parseFloat(match[4]);
}};if(match==null){var actualColor=color;
}else{actualColor="#"+clazz.dec2hex(parseInt(match[1]),2)+clazz.dec2hex(parseInt(match[2]),2)+clazz.dec2hex(parseInt(match[3]),2);
};return{color:actualColor,opacity:opacity};
};
qxp.Class.setImageSource=function(imgElem,imgUrl){if(qxp.sys.Client.getInstance().isMshtml()&&/\.png$/i.test(imgUrl)){imgElem.src=com.ptvag.webcomponent.util.ServerUtils.rewriteURL("img/com/ptvag/webcomponent/map/blank.gif",true);
imgElem.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+imgUrl+"',sizingMethod='scale')";
}else{imgElem.src=imgUrl;
}};
qxp.Class.isBorderBoxSizingActive=function(){var MapUtil=com.ptvag.webcomponent.map.MapUtil;
if(MapUtil._borderBoxSizingActive==null){var tempDiv=document.createElement("div");
tempDiv.style.visibility="hidden";
tempDiv.style.position="absolute";
tempDiv.style.border="1px solid black";
tempDiv.style.width="10px";
tempDiv.style.height="10px";
document.body.appendChild(tempDiv);
var width=tempDiv.offsetWidth;
MapUtil._borderBoxSizingActive=(width==10);
document.body.removeChild(tempDiv);
};return MapUtil._borderBoxSizingActive;
};
qxp.Class.createCanvas=function(win,parentElement,width,height){var doc=parentElement.ownerDocument;
var canvas=doc.createElement("canvas");
canvas.setAttribute("width",width);
canvas.setAttribute("height",height);
canvas.style.width=width+"px";
canvas.style.height=height+"px";
parentElement.appendChild(canvas);
if(win.G_vmlCanvasManager){win.G_vmlCanvasManager.initElement(canvas);
var canvases=parentElement.getElementsByTagName("canvas");
canvas=canvases[canvases.length-1];
};try{canvas.getContext("2d");
}catch(exc){parentElement.removeChild(canvas);
return null;
};return canvas;
};
qxp.Class.cleanupCanvas=function(win,canvasElement){if(win.G_vmlCanvasManager&&win.G_vmlCanvasManager.cleanupElement){win.G_vmlCanvasManager.cleanupElement(canvasElement);
}};
qxp.Class.printFilter=function(element){var client=qxp.sys.Client.getInstance();
if(element.getAttribute("_ptv_map_dontPrint")=="true"){element.style.visibility="hidden";
};var style=element.style;
if(style){if(style.visibility=="hidden"||style.display=="none"){return;
};if(client.isGecko()){var borderWidth=style.borderLeftWidth;
if(borderWidth!=null){style.borderLeftWidth=borderWidth.replace("px","pt");
};borderWidth=style.borderRightWidth;
if(borderWidth!=null){style.borderRightWidth=borderWidth.replace("px","pt");
};borderWidth=style.borderTopWidth;
if(borderWidth!=null){style.borderTopWidth=borderWidth.replace("px","pt");
};borderWidth=style.borderBottomWidth;
if(borderWidth!=null){style.borderBottomWidth=borderWidth.replace("px","pt");
}};if(style.filter!=null){style.filter=null;
};if(style.MozOpacity!=null){style.MozOpacity=null;
};if(style.opacity!=null){style.opacity=null;
};if(client.isMshtml()){if(element._ptv_map_printBackground){var backgroundElement=element.ownerDocument.createElement("div");
backgroundElement.style.position="absolute";
backgroundElement.style.left=style.left;
backgroundElement.style.top=style.top;
backgroundElement.style.width=style.width;
var height=element._ptv_map_printBackgroundHeight;
if(height!=null){height+="px";
}else{height=style.height;
};backgroundElement.style.height=height;
var backgroundColor="white";
if(style.backgroundColor!=null&&style.backgroundColor!=""){backgroundColor=style.backgroundColor;
};backgroundElement.style.filter="progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr="+backgroundColor+",endColorStr="+backgroundColor+")";
element.parentNode.insertBefore(backgroundElement,element);
}}};var childNodes=element.childNodes;
var childNodeCount=childNodes.length;
for(var i=0;
i<childNodeCount;
++i){var childNode=childNodes[i];
if(childNode.nodeType==1){com.ptvag.webcomponent.map.MapUtil.printFilter(childNode);
};var newCount=childNodes.length;
if(newCount>childNodeCount){i+=(newCount-childNodeCount);
childNodeCount=newCount;
}}};
qxp.Class.cloneNodeForPrinting=function(node,targetDocument){if(qxp.sys.Client.getInstance().isMshtml()){var tempParent=targetDocument.createElement("div");
tempParent.innerHTML=node.outerHTML;
var retVal=tempParent.firstChild;
tempParent.removeChild(tempParent.firstChild);
}else{retVal=node.cloneNode(true);
};com.ptvag.webcomponent.map.MapUtil.printFilter(retVal);
return retVal;
};
qxp.Class.resolveURL=function(url){if(url.indexOf("//")==-1&&url.indexOf("img/com/ptvag/webcomponent/")==0){return com.ptvag.webcomponent.util.ServerUtils.rewriteURL(url,true);
};return url;
};
qxp.Class.convertArray=function(input){var length=input.length;
var output=new Array(length);
for(var i=0;
i<length;
++i){output[i]=input[i];
};return output;
};
qxp.Class.rewriteURL=function(url,cacheable,basePath){var oldPrefix=qxp.core.ServerSettings.serverPathPrefix;
var staticServer=com.ptvag.webcomponent.map.Map.STATIC_SERVER;
if(cacheable&&staticServer!=null){qxp.core.ServerSettings.serverPathPrefix=staticServer;
};var ServerUtils=com.ptvag.webcomponent.util.ServerUtils;
var oldBasePath=ServerUtils.basePath;
if(basePath!=null){ServerUtils.basePath=basePath;
};var retVal=com.ptvag.webcomponent.util.ServerUtils.rewriteURL(url,cacheable);
qxp.core.ServerSettings.serverPathPrefix=oldPrefix;
ServerUtils.basePath=oldBasePath;
return retVal;
};
qxp.Class.escapeHTML=function(str){return str.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");
};
qxp.Class.MAX_IMAGE_SCALE_WIDTH=(qxp.sys.Client.getInstance().isMshtml()?2000:20000);
qxp.Class.RGB_REGEX=/^\s*rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)\s*$/i;
qxp.Class.RGBA_REGEX=/^\s*rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\,\s*([0-9.]+)\s*\)\s*$/i;




/* ID: com.ptvag.webcomponent.util.ServerUtils */
qxp.OO.defineClass("com.ptvag.webcomponent.util.ServerUtils");
qxp.Class.basePath="/webcomponent";
qxp.Class.rewriteURL=function(url,ignoreSuffix){var actualURL;
if(url.charAt(0)!="/"){actualURL="/"+url;
}else{actualURL=url;
};var pos=-1;
if(!ignoreSuffix){pos=actualURL.indexOf("?");
};if(pos==-1){return qxp.core.ServerSettings.serverPathPrefix+com.ptvag.webcomponent.util.ServerUtils.basePath+actualURL+(ignoreSuffix?"":qxp.core.ServerSettings.serverPathSuffix);
};return qxp.core.ServerSettings.serverPathPrefix+com.ptvag.webcomponent.util.ServerUtils.basePath+actualURL.substring(0,pos)+qxp.core.ServerSettings.serverPathSuffix+actualURL.substring(pos);
};




/* ID: com.ptvag.webcomponent.map.Map */
qxp.OO.defineClass("com.ptvag.webcomponent.map.Map",qxp.core.Target,function(parentElement,startRect,useVersionedRequests,profileGroup){qxp.core.Target.call(this);
var self=this;
var map=com.ptvag.webcomponent.map;
var CoordUtil=map.CoordUtil;
var rewriteURL=map.MapUtil.rewriteURL;
var mComponentElement;
var mRelativeLayersElement;
var mLayerArr=[];
var mLayerDict={};
var mTileDebugMode=false;
var mController;
var mServerDrawnObjectManager;
var mZoomBoxElem;
var mInBulkMode=false;
var mBulkEvent;
var mFiringBulkEvent=false;
var mHistory=[];
var mHistoryPosition=-1;
var mInternalHistoryChange=false;
var mBulkHistoryItem;
var mCurrentLoggingStack=[];
var mBulkLoggingArr=[];
var mClipRectSu={};
var mClipRectMerc;
var mCenterBeforeAdjusting;
var mCurrentPrintDiv;
var mCurrentPrintContext;
var mDeferredInitTimer=null;
var mDeferredInitLayers=[];
var mDeferredInitLoggingActions=[];
var mMapVersion=null;
self._modifyProfileGroup=function(){self.startLoggingAction("mapapi:setProfileGroup");
try{fireOnViewChanged({clipRectChanged:true});
}finally{self.endLoggingAction();
}};
self._modifyBackendServer=function(propValue){self.setCopyright(propValue);
};
self._checkCenter=function(propValue){if(typeof (propValue.x)!="number"||typeof (propValue.y)!="number"||isNaN(propValue.x)||isNaN(propValue.y)){throw new Error("Illegal center: "+propValue.x+"/"+propValue.y);
};if(mClipRectSu.left==null&&mClipRectSu.top==null&&mClipRectSu.right==null&&mClipRectSu.bottom==null){return propValue;
};var zoom=self.getZoom();
var newCenterPix=CoordUtil.smartUnit2Pixel(propValue,zoom);
var clipStartPix=CoordUtil.smartUnit2Pixel({x:mClipRectSu.left,y:mClipRectSu.top},zoom);
var clipEndPix=CoordUtil.smartUnit2Pixel({x:mClipRectSu.right,y:mClipRectSu.bottom},zoom);
var mapWidth=self.getWidth();
var mapHeight=self.getHeight();
var clipMoveBorder=self.getClipMoveBorder();
var origNewCenterX=newCenterPix.x;
var origNewCenterY=newCenterPix.y;
if(mClipRectSu.left!=null){var minX=clipStartPix.x+clipMoveBorder-mapWidth/2;
if(newCenterPix.x<minX){newCenterPix.x=minX;
}};if(mClipRectSu.top!=null){var maxY=clipStartPix.y-clipMoveBorder+mapHeight/2;
if(newCenterPix.y>maxY){newCenterPix.y=maxY;
}};if(mClipRectSu.right!=null){var maxX=clipEndPix.x-clipMoveBorder+mapWidth/2;
if(newCenterPix.x>maxX){newCenterPix.x=maxX;
}};if(mClipRectSu.bottom!=null){var minY=clipEndPix.y+clipMoveBorder-mapHeight/2;
if(newCenterPix.y<minY){newCenterPix.y=minY;
}};if(newCenterPix.x!=origNewCenterX||newCenterPix.y!=origNewCenterY){return CoordUtil.pixel2SmartUnit(newCenterPix,zoom);
}else{return propValue;
}};
self._modifyCenter=function(propValue,propOldValue){if((propOldValue==null)||(propValue.x!=propOldValue.x)||(propValue.y!=propOldValue.y)){self.startLoggingAction("mapapi:setCenter");
try{if(self.getAnimate()){self.getAnimator().onTargetChanged();
}else{self.getAnimator().stopAnimation();
self.setVisibleCenter(propValue);
};if(!self.getCenterIsAdjusting()){onAdjustingCenterFinished();
}}finally{self.endLoggingAction();
}}};
self._modifyCenterIsAdjusting=function(propValue){if(propValue){mCenterBeforeAdjusting=self.getCenter();
}else{var center=self.getCenter();
if(center.x!=mCenterBeforeAdjusting.x||center.y!=mCenterBeforeAdjusting.y){onAdjustingCenterFinished();
}}};
var onAdjustingCenterFinished=function(){addToHistory(self.getCenter(),null);
self.createDispatchEvent("adjustingCenterFinished");
};
self._checkZoom=function(propValue){var maxZoom=CoordUtil.TILE_WIDTHS.length-1;
if(propValue<0){return 0;
}else if(propValue>maxZoom){return maxZoom;
}else{return propValue;
}};
self._modifyZoom=function(propValue){addToHistory(null,propValue);
self.startLoggingAction("mapapi:setZoom");
try{if(self.getAnimate()){self.getAnimator().onTargetChanged();
}else{self.getAnimator().stopAnimation();
self.setVisibleZoom(propValue);
}}finally{self.endLoggingAction();
}};
self._modifyWidth=function(){fireOnViewChanged({widthChanged:true});
};
self._modifyHeight=function(){fireOnViewChanged({heightChanged:true});
};
self._modifyAnimator=function(propValue){propValue.setMap(self);
};
self._modifyVisibleCenter=function(propValue,propOldValue){if((propOldValue==null)||(propValue.x!=propOldValue.x)||(propValue.y!=propOldValue.y)){fireOnViewChanged({centerChanged:true});
}};
self._modifyVisibleZoom=function(){fireOnViewChanged({zoomChanged:true});
};
self._checkRelativeOffset=function(propValue){var maxValue=map.Map.OPACITY_HACK_SIZE/2-10000;
if(Math.abs(propValue.x)<maxValue&&Math.abs(propValue.y)<maxValue){return{x:propValue.x,y:propValue.y};
};return{x:0,y:0};
};
self._modifyRelativeOffset=function(propValue){mRelativeLayersElement.style.left=(-propValue.x)+"px";
mRelativeLayersElement.style.top=(-propValue.y)+"px";
};
self.correctRelativeOffset=function(newCenter){var centerPixOld=CoordUtil.smartUnit2Pixel(self.getVisibleCenter(),self.getVisibleZoom());
var centerPixNew=CoordUtil.smartUnit2Pixel(newCenter,self.getVisibleZoom());
var relativeOffset=self.getRelativeOffset();
self.setRelativeOffset({x:relativeOffset.x-(centerPixOld.x-centerPixNew.x),y:relativeOffset.y+(centerPixOld.y-centerPixNew.y)});
};
self.setCursor=function(cursor){if(!qxp.sys.Client.getInstance().isOpera()){mComponentElement.style.cursor=cursor;
}};
self.getTileDebugMode=function(){return mTileDebugMode;
};
self.getCenterInPixel=function(){return CoordUtil.smartUnit2Pixel(self.getCenter(),self.getZoom());
};
self.setCenterInPixel=function(pixPoint){var suPoint=CoordUtil.pixel2SmartUnit(pixPoint,self.getZoom());
self.setCenter(suPoint);
};
self.moveCenterInPercent=function(deltaFactorX,deltaFactorY){var center=self.getCenterInPixel();
self.setCenterInPixel({x:center.x+deltaFactorX*self.getWidth(),y:center.y+deltaFactorY*self.getHeight()});
};
self.setRectInPixel=function(left,top,right,bottom){var zoom=self.getZoom();
var startSuPoint=CoordUtil.pixel2SmartUnit({x:left,y:top},zoom);
var endSuPoint=CoordUtil.pixel2SmartUnit({x:right,y:bottom},zoom);
self.setRect(startSuPoint.x,startSuPoint.y,endSuPoint.x,endSuPoint.y);
};
self.setRect=function(left,top,right,bottom,round){var centerSuPt={x:(left+right)/2,y:(top+bottom)/2};
var suWidth=Math.abs(left-right);
var suHeight=Math.abs(top-bottom);
var mapWidth=self.getWidth();
var mapHeight=self.getHeight();
var suPerPixel=Math.max(suWidth/mapWidth,suHeight/mapHeight);
self.startLoggingAction("mapapi:setRect");
try{var alreadyInBulkMode=mInBulkMode;
if(!alreadyInBulkMode){self.startBulkMode();
};self.setZoomInSmartUnitsPerPixel(suPerPixel,round);
self.setCenter(centerSuPt);
if(!alreadyInBulkMode){self.endBulkMode();
}}finally{self.endLoggingAction();
}};self.getRectInPixel=function(){var mapWidth=self.getWidth();
var mapHeight=self.getHeight();
var centerPixPoint=self.getCenterInPixel();
return{left:centerPixPoint.x-mapWidth/2,top:centerPixPoint.y-mapHeight/2,right:centerPixPoint.x+mapWidth/2,bottom:centerPixPoint.y+mapHeight/2};
};
self.getRect=function(){var pixRect=self.getRectInPixel();
var zoom=self.getZoom();
var startSuPoint=CoordUtil.pixel2SmartUnit({x:pixRect.left,y:pixRect.top},zoom);
var endSuPoint=CoordUtil.pixel2SmartUnit({x:pixRect.right,y:pixRect.bottom},zoom);
return{left:startSuPoint.x,right:endSuPoint.x,top:endSuPoint.y,bottom:startSuPoint.y};
};
self.setZoomInSmartUnitsPerPixel=function(suPerPixel,round){var level=CoordUtil.getLevelForSmartUnitsPerPixel(suPerPixel);
if(round){level=Math.round(level);
}else{level=Math.ceil(level);
};self.setZoom(level);
};
self.getZoomInSmartUnitsPerPixel=function(){var suTileWidth=CoordUtil.TILE_WIDTHS[self.getZoom()];
return suTileWidth/CoordUtil.TILE_WIDTH;
};self.setViewToPoints=function(pointList,dontMoveIfVisible,keepZoom){var left=Infinity;
var right=-Infinity;
var top=-Infinity;
var bottom=Infinity;
var iter=new map.PointListIterator(pointList);
while(iter.iterate()){left=Math.min(left,iter.x);
right=Math.max(right,iter.x);
top=Math.max(top,iter.y);
bottom=Math.min(bottom,iter.y);
};var border=self.getViewToPointsBorder();
if(dontMoveIfVisible){var rect=self.getRectInPixel();
var oldZoom=self.getZoom();
var oldTopLeftPix=CoordUtil.smartUnit2Pixel({x:left,y:top},oldZoom);
var oldBottomRightPix=CoordUtil.smartUnit2Pixel({x:right,y:bottom},oldZoom);
if(oldTopLeftPix.x>=rect.left+border&&oldBottomRightPix.x<=rect.right-border&&oldBottomRightPix.y>=rect.top+border&&oldTopLeftPix.y<=rect.bottom-border){return;
}};var widthPix=self.getWidth()-2*border;
var heightPix=self.getHeight()-2*border;
var oldZoom=self.getZoom();
var widthSu=right-left;
var heightSu=top-bottom;
var suPerPixel=Math.max(widthSu/widthPix,heightSu/heightPix);
var wantedZoom=Math.ceil(CoordUtil.getLevelForSmartUnitsPerPixel(suPerPixel));
var minZoom=self.getViewToPointsMinZoomLevel();
var newZoom=Math.max(wantedZoom,minZoom);
if(keepZoom&&newZoom<oldZoom){newZoom=oldZoom;
};var newCenter={x:(left+right)/2,y:(top+bottom)/2};
if(dontMoveIfVisible&&keepZoom&&oldZoom==newZoom){var viewTopLeftPix=CoordUtil.smartUnit2Pixel({x:left,y:top},newZoom);
var viewBottomRightPix=CoordUtil.smartUnit2Pixel({x:right,y:bottom},newZoom);
var viewWidthPix=Math.abs(viewBottomRightPix.x-viewTopLeftPix.x);
var viewHeightPix=Math.abs(viewBottomRightPix.y-viewTopLeftPix.y);
if(viewWidthPix<widthPix&&viewHeightPix<heightPix){var oldCenterSu=self.getCenter();
var viewCenterSu=newCenter;
var vectorX=viewCenterSu.x-oldCenterSu.x;
var vectorY=oldCenterSu.y-viewCenterSu.y;
var moveX=null;
var moveY=null;
if(vectorX!=0){moveX=(vectorX>0?-1:1)*((widthPix-viewWidthPix)/2);
moveY=moveX*(vectorY/vectorX);
};if(vectorY!=0){var possibleMoveY=(vectorY>0?-1:1)*((heightPix-viewHeightPix)/2);
var possibleMoveX=possibleMoveY*(vectorX/vectorY);
if(moveX==null||Math.abs(possibleMoveX)<Math.abs(moveX)||Math.abs(possibleMoveY)<Math.abs(moveY)){moveX=possibleMoveX;
moveY=possibleMoveY;
}};if(moveX!=null&&moveY!=null){var viewCenterPixX=(viewBottomRightPix.x+viewTopLeftPix.x)/2;
var viewCenterPixY=(viewBottomRightPix.y+viewTopLeftPix.y)/2;
var newCenterPix={x:viewCenterPixX+moveX,y:viewCenterPixY-moveY};
newCenter=CoordUtil.pixel2SmartUnit(newCenterPix,newZoom);
}}};self.startLoggingAction("mapapi:setViewToPoints");
try{var alreadyInBulkMode=mInBulkMode;
if(!alreadyInBulkMode){self.startBulkMode();
};self.setZoom(newZoom);
self.setCenter(newCenter);
if(!alreadyInBulkMode){self.endBulkMode();
}}finally{self.endLoggingAction();
}};
self.setClipRect=function(clipLeft,clipTop,clipRight,clipBottom){mClipRectSu={left:clipLeft,top:clipTop,right:clipRight,bottom:clipBottom};
mClipRectMerc=null;
self.startLoggingAction("mapapi:setClipRect");
try{fireOnViewChanged({clipRectChanged:true});
}finally{self.endLoggingAction();
};return true;
};
self.getClipRect=function(){return mClipRectSu;
};
self.getClipRectInMercator=function(){if(mClipRectMerc==null){var startMerc=CoordUtil.smartUnit2Mercator({x:mClipRectSu.left,y:mClipRectSu.top});
var endMerc=CoordUtil.smartUnit2Mercator({x:mClipRectSu.right,y:mClipRectSu.bottom});
mClipRectMerc={left:(mClipRectSu.left!=null?startMerc.x:null),top:(mClipRectSu.top!=null?startMerc.y:null),right:(mClipRectSu.right!=null?endMerc.x:null),bottom:(mClipRectSu.bottom!=null?endMerc.y:null)};
};return mClipRectMerc;
};
self.getController=function(){return mController;
};
self.getServerDrawnObjectManager=function(){return mServerDrawnObjectManager;
};
self.updateSize=function(){var alreadyInBulkMode=mInBulkMode;
if(!alreadyInBulkMode){self.startBulkMode();
};self.startLoggingAction("mapapi:updateSize");
try{self.setWidth(mComponentElement.offsetWidth);
self.setHeight(mComponentElement.offsetHeight);
if(!alreadyInBulkMode){self.endBulkMode();
}}finally{self.endLoggingAction();
}};
var deferredInit=function(){for(var i=0;
i<mDeferredInitLayers.length;
++i){self.startLoggingAction(mDeferredInitLoggingActions[i]);
try{mDeferredInitLayers[i].init();
}catch(e){self.error(e);
}finally{self.endLoggingAction();
}};mDeferredInitLayers=[];
mDeferredInitLoggingActions=[];
mDeferredInitTimer=null;
};
self.addLayer=function(layer,layerName,zIndex,insertBefore,deferInit){if(deferInit==null){deferInit=true;
};var relative=layer.isRelative();
var needsOpacityHack=layer.needsOpacityHack();
var layerParent=document.createElement("div");
if(!mTileDebugMode&&!relative){layerParent.style.overflow="hidden";
};layerParent.style.position="absolute";
if(needsOpacityHack){var size=map.Map.OPACITY_HACK_SIZE;
layerParent.style.left=-(size/2)+"px";
layerParent.style.top=-(size/2)+"px";
layerParent.style.width=size+"px";
layerParent.style.height=size+"px";
}else{layerParent.style.left="0px";
layerParent.style.top="0px";
layerParent.style.width="100%";
layerParent.style.height="100%";
};layerParent.style.zIndex=(zIndex==null?0:zIndex);
var layerInserted=false;
if(insertBefore==null){mLayerArr.push(layer);
}else{var layerCount=mLayerArr.length;
for(var i=0;
i<layerCount;
++i){if(mLayerArr[i]==insertBefore){mLayerArr.splice(i,0,layer);
layerInserted=true;
break;
}};if(!layerInserted){mLayerArr.push(layer);
}};if(layerName!=null){mLayerDict[layerName]=layer;
};var container=(relative?mRelativeLayersElement:mComponentElement);
if(layerInserted&&insertBefore.getParentElement().parentNode==container){container.insertBefore(layerParent,insertBefore.getParentElement());
}else{container.appendChild(layerParent);
};layer.setMap(self);
layer.setParentElement(layerParent);
layer.setName(layerName);
if(deferInit){if(layer instanceof map.layer.SimpleMapLayer){mDeferredInitLayers.splice(0,0,layer);
}else{mDeferredInitLayers.push(layer);
};mDeferredInitLoggingActions.push(self.getLoggingInfo());
if(mDeferredInitTimer==null){mDeferredInitTimer=window.setTimeout(deferredInit,0);
}}else{layer.init();
}};
self.removeLayer=function(layerName){var layer=mLayerDict[layerName];
if(layer==null){return;
};delete mLayerDict[layerName];
var layerCount=mLayerArr.length;
for(var i=0;
i<layerCount;
++i){if(mLayerArr[i]==layer){mLayerArr.splice(i,1);
break;
}};layerCount=mDeferredInitLayers.length;
for(i=0;
i<layerCount;
++i){if(mDeferredInitLayers[i]==layer){mDeferredInitLayers.splice(i,1);
mDeferredInitLoggingActions.splice(i,1);
break;
}};var parentElement=layer.getParentElement();
parentElement.parentNode.removeChild(parentElement);
layer.dispose();
};
self.getLayer=function(layerName){return mLayerDict[layerName];
};
self.getLayers=function(){return mLayerArr;
};
self.showZoomBox=function(fromX,fromY,toX,toY){if(mZoomBoxElem==null){mZoomBoxElem=document.createElement("div");
mZoomBoxElem.style.position="absolute";
mZoomBoxElem.style.backgroundColor=self.getZoomBoxColor();
map.MapUtil.setElementOpacity(mZoomBoxElem,self.getZoomBoxOpacity());
mZoomBoxElem.style.borderColor=self.getZoomBoxBorderColor();
mZoomBoxElem.style.borderStyle="solid";
mZoomBoxElem.style.fontSize="1px";
mZoomBoxElem.style.zIndex=2;
mComponentElement.appendChild(mZoomBoxElem);
};var width=Math.abs(toX-fromX)-1;
var height=Math.abs(toY-fromY)-1;
if(width<0){width=0;
};if(height<0){height=0;
};var borderBoxSizingActive=map.MapUtil.isBorderBoxSizingActive();
var zoomBoxBorderWidth=self.getZoomBoxBorderWidth();
var zoomBoxBorderHeight=zoomBoxBorderWidth;
var maxZoomBoxBorderWidth=parseInt(width/2);
var maxZoomBoxBorderHeight=parseInt(height/2);
if(zoomBoxBorderWidth>maxZoomBoxBorderWidth){zoomBoxBorderWidth=maxZoomBoxBorderWidth;
};if(zoomBoxBorderHeight>maxZoomBoxBorderHeight){zoomBoxBorderHeight=maxZoomBoxBorderHeight;
};mZoomBoxElem.style.left=Math.min(fromX,toX)+1+"px";
mZoomBoxElem.style.top=Math.min(fromY,toY)+1+"px";
width-=(borderBoxSizingActive?0:zoomBoxBorderWidth*2);
height-=(borderBoxSizingActive?0:zoomBoxBorderHeight*2);
mZoomBoxElem.style.borderLeftWidth=zoomBoxBorderWidth+"px";
mZoomBoxElem.style.borderRightWidth=zoomBoxBorderWidth+"px";
mZoomBoxElem.style.borderTopWidth=zoomBoxBorderHeight+"px";
mZoomBoxElem.style.borderBottomWidth=zoomBoxBorderHeight+"px";
mZoomBoxElem.style.width=width+"px";
mZoomBoxElem.style.height=height+"px";
mZoomBoxElem.style.visibility="";
};
self.hideZoomBox=function(){if(mZoomBoxElem){mZoomBoxElem.style.visibility="hidden";
}};
self.relative2AbsolutePixel=function(relPixPt){var centerPixPt=self.getCenterInPixel();
return{x:centerPixPt.x-self.getWidth()/2+relPixPt.x,y:centerPixPt.y+self.getHeight()/2-relPixPt.y};
};
self.translateMouseCoords=function(evt){var mapWidth=self.getWidth();
var mapHeight=self.getHeight();
var relMouseX=evt.relMouseX;
var relMouseY=evt.relMouseY;
if(relMouseX<0||relMouseX>=mapWidth||relMouseY<0||relMouseY>=mapHeight){return null;
};var mapCenterSu=self.getVisibleCenter();
var mapZoom=self.getVisibleZoom();
var mapCenterPix=CoordUtil.smartUnit2Pixel(mapCenterSu,mapZoom);
var mapLeft=mapCenterPix.x-mapWidth/2;
var mapTop=mapCenterPix.y+mapHeight/2;
var pixCoords={x:mapLeft+relMouseX,y:mapTop-relMouseY};
return CoordUtil.pixel2SmartUnit(pixCoords,mapZoom);
};
self.startLoggingAction=function(description){mCurrentLoggingStack.push(description);
};
self.endLoggingAction=function(){if(mCurrentLoggingStack.length==1&&mBulkEvent){mBulkLoggingArr.push(mCurrentLoggingStack[0]);
};mCurrentLoggingStack.pop();
};
self.getLoggingInfo=function(){if(mFiringBulkEvent&&mBulkLoggingArr.length!=0){if(mBulkLoggingArr.length==1){return mBulkLoggingArr[0];
}else{var bulkDesc="bulk:[";
for(var i=0;
i<mBulkLoggingArr.length;
i++){if(i!=0){bulkDesc+=",";
};bulkDesc+=mBulkLoggingArr[i];
};bulkDesc+="]";
return bulkDesc;
}}else if(mCurrentLoggingStack.length!=0){return mCurrentLoggingStack[0];
}else{return null;
}};
self.startBulkMode=function(){if(mInBulkMode){throw new Error("Starting bulk mode failed. The map is already in bulk mode.");
};mInBulkMode=true;
};
self.endBulkMode=function(){if(!mInBulkMode){throw new Error("Ending bulk mode failed. The map was not in bulk mode.");
};mInBulkMode=false;
if(mBulkEvent){mFiringBulkEvent=true;
fireOnViewChanged(mBulkEvent);
mFiringBulkEvent=false;
mBulkEvent=null;
mBulkLoggingArr=[];
};if(mBulkHistoryItem){addToHistory(mBulkHistoryItem.center,mBulkHistoryItem.zoom);
mBulkHistoryItem=null;
}};
self.inBulkMode=function(){return mInBulkMode;
};var addToHistory=function(center,zoom){if(mInternalHistoryChange){return;
};if(mInBulkMode){if(mBulkHistoryItem==null){mBulkHistoryItem={};
};if(center!=null){mBulkHistoryItem.center=center;
};if(zoom!=null){mBulkHistoryItem.zoom=zoom;
}}else{var item={center:(center==null)?self.getCenter():center,zoom:(zoom==null)?self.getZoom():zoom};
mHistoryPosition++;
mHistory.splice(mHistoryPosition,mHistory.length-mHistoryPosition,item);
var itemsToRemove=mHistory.length-self.getMaxHistorySize();
if(itemsToRemove>0){mHistory.splice(0,itemsToRemove);
mHistoryPosition-=itemsToRemove;
};fireHistoryChanged();
}};
self.historyBack=function(){historyMove(-1);
};
self.hasHistoryBack=function(){return mHistoryPosition>0;
};
self.historyForward=function(){historyMove(1);
};
self.hasHistoryForward=function(){return mHistoryPosition<mHistory.length-1;
};
var historyMove=function(delta){var newHistoryPosition=mHistoryPosition+delta;
if(newHistoryPosition>=0&&newHistoryPosition<mHistory.length){mHistoryPosition=newHistoryPosition;
var item=mHistory[mHistoryPosition];
var alreadyInBulkMode=mInBulkMode;
if(!alreadyInBulkMode){self.startBulkMode();
};self.startLoggingAction((delta>0)?"mapapi:historyForward":"mapapi:historyBack");
mInternalHistoryChange=true;
try{if(item.center!=null){self.setCenter(item.center);
};if(item.zoom!=null){self.setZoom(item.zoom);
};if(!alreadyInBulkMode){self.endBulkMode();
};fireHistoryChanged();
}finally{self.endLoggingAction();
mInternalHistoryChange=false;
}}};
var fireHistoryChanged=function(){if(self.hasEventListeners("historyChanged")){self.dispatchEvent(new qxp.event.type.Event("historyChanged"));
};
};
var fireOnViewChanged=function(evt){if(!mInBulkMode&&!mFiringBulkEvent&&self.getUseAutoBulkMode()){self.startBulkMode();
window.setTimeout(function(){self.endBulkMode();
},0)};if(mInBulkMode){if(mBulkEvent){for(key in evt){mBulkEvent[key]=evt[key];
}}else{mBulkEvent=evt;
}}else{var loggingInfo="";
for(var key in evt){if(loggingInfo.length!=0){loggingInfo+=",";
};loggingInfo+=key;
};self.startLoggingAction("event:"+loggingInfo);
try{for(var i=mLayerArr.length-1;
i>=0;
i--){if(mLayerArr[i].isEnabled()&&mLayerArr[i].isInitialized()){mLayerArr[i].onViewChanged(evt);
}}}finally{self.endLoggingAction();
}}};
self.newMapSession=function(){if(self.hasEventListeners("newMapSession")){self.dispatchEvent(new qxp.event.type.Event("newMapSession"));
};
};
self.setCopyright=function(key){self.removeLayer("copyright");
var special="copyright";
if(key!=null){special+="."+key;
};var copyrightLayer=new map.layer.ImageLayer(rewriteURL("/MapServlet?special="+special,true,""));
copyrightLayer.set({areaLeft:0,areaBottom:0,areaOpacity:0.8});
copyrightLayer.setIncludeInPrint(true);
self.addLayer(copyrightLayer,"copyright",1,null);
};
self.setCopyrightURL=function(url){self.removeLayer("copyright");
var copyrightLayer=new map.layer.ImageLayer(map.MapUtil.resolveURL(url));
copyrightLayer.set({areaLeft:0,areaBottom:0,areaOpacity:0.8});
copyrightLayer.setIncludeInPrint(true);
self.addLayer(copyrightLayer,"copyright",1,null,false);
};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};for(var i=0;
i<mLayerArr.length;
i++){mLayerArr[i].dispose();
};mController.dispose();
mComponentElement=null;
mZoomBoxElem=null;
if(mCurrentPrintDiv!=null){mCurrentPrintDiv.onclick=null;
mCurrentPrintDiv=null;
};if(mCurrentPrintContext!=null){mCurrentPrintContext.dispose();
};superDispose.call(self);
};
self.printMode=function(printParentWindow,printParentDiv,callback){self.getAnimator().stopAnimation();
if(mCurrentPrintDiv!=null){if(printParentDiv==null){return;
};mCurrentPrintDiv.onclick();
};var doc=document;
if(printParentDiv!=null){doc=printParentDiv.ownerDocument;
};var win=window;
if(printParentWindow!=null){win=printParentWindow;
};var printWidth=self.getWidth();
var printHeight=self.getHeight();
var printWidthPx=printWidth+"px";
var printHeightPx=printHeight+"px";
var printDiv=doc.createElement("div");
printDiv.style.position="relative";
printDiv.style.left="0px";
printDiv.style.top=(printParentDiv!=null?"0px":"-"+printHeightPx);
printDiv.style.overflow="hidden";
printDiv.style.backgroundColor="white";
printDiv.style.width=printWidthPx;
printDiv.style.height=printHeightPx;
var printHtmlBackground=null;
var printImg=doc.createElement("img");
printImg.style.zIndex=0;
printImg.style.visibility="hidden";
printImg.style.position="absolute";
printImg.style.left="0px";
printImg.style.top="0px";
printImg.style.width=printWidthPx;
printImg.style.height=printHeightPx;
printDiv.appendChild(printImg);
var printHtmlContainer=doc.createElement("div");
printHtmlContainer.style.position="absolute";
printHtmlContainer.style.overflow="hidden";
printHtmlContainer.style.left="0px";
printHtmlContainer.style.top="0px";
printHtmlContainer.style.width=printWidthPx;
printHtmlContainer.style.height=printHeightPx;
printHtmlContainer.style.display="none";
printDiv.appendChild(printHtmlContainer);
var loadingIndicator=doc.createElement("img");
loadingIndicator.style.position="absolute";
loadingIndicator.style.left=Math.round((printWidth-31)/2)+"px";
loadingIndicator.style.top=Math.round((printHeight-31)/2)+"px";
loadingIndicator.style.width="31px";
loadingIndicator.style.height="31px";
loadingIndicator.src=rewriteURL("img/com/ptvag/webcomponent/map/ajax-loader.gif");
printDiv.appendChild(loadingIndicator);
if(printParentDiv==null){mComponentElement.style.visibility="hidden";
mComponentElement.parentNode.appendChild(printDiv);
printDiv.onclick=function(){ctx.dispose();
mComponentElement.style.visibility="";
printDiv.parentNode.removeChild(printDiv);
printDiv.onclick=null;
mCurrentPrintDiv=null;
};
mCurrentPrintDiv=printDiv;
}else{printParentDiv.style.width=printWidthPx;
printParentDiv.style.height=printHeightPx;
while(printParentDiv.firstChild){printParentDiv.removeChild(printParentDiv.firstChild);
};printParentDiv.appendChild(printDiv);
};if(mCurrentPrintContext!=null){mCurrentPrintContext.dispose();
};if(self.getPrintSystem()=="flash"){mCurrentPrintContext=new com.ptvag.webcomponent.map.FlashPrintContext(self.getWidth(),self.getHeight());
}else{mCurrentPrintContext=new com.ptvag.webcomponent.map.PrintContext(self.getWidth(),self.getHeight());
};var ctx=mCurrentPrintContext;
var layerCount=mLayerArr.length;
if(layerCount>0){ctx._ptv_map_currentLayer=0;
var interval=window.setInterval(function(){if(!map.ImageLoader.isIdle()){return;
};if(self.getDisposed()||ctx.getDisposed()){window.clearInterval(interval);
return;
}while(ctx._ptv_map_currentLayer<layerCount){var layerToPrint=mLayerArr[ctx._ptv_map_currentLayer++];
if(layerToPrint&&!layerToPrint.getDisposed()){layerToPrint.print(ctx,printHtmlContainer,printHtmlBackground);
};if(ctx._ptv_map_currentLayer>=layerCount){ctx.end();
}else{}};if(ctx._ptv_map_currentLayer>=layerCount&&ctx.isIdle()){window.clearInterval(interval);
loadingIndicator.parentNode.removeChild(loadingIndicator);
if(ctx.getDisposed()){if(callback!=null){callback(printParentWindow,new Error("Generation of print version interrupted"));
}}else{var exc=ctx.getError();
if(exc==null){printImgURL=ctx.getPrintImageURL();
}else{var printImgURL=rewriteURL("img/com/ptvag/webcomponent/map/error.png",true);
};ctx.dispose();
mCurrentPrintContext=null;
map.ImageLoader.loadImage(printImg,printImgURL,function(){printImg.style.visibility="";
printHtmlContainer.style.display="";
if(callback!=null){callback(printParentWindow,exc);
}});
}}},100);
}};
self.isFlashPrintingPossible=function(){return com.ptvag.webcomponent.util.Flash.detectFlashVer(9,0,0);
};
self.getMapVersion=function(){return mMapVersion;
};
var init=function(){var actualStartRect=startRect;
if(actualStartRect==null){actualStartRect={left:4293961,top:5679567,right:4502808,bottom:5400533};
};var smartWrap=CoordUtil.SMART_OFFSET/CoordUtil.SMART_UNIT*2;
self.setClipRect(0,smartWrap,smartWrap,smartWrap/4);
if(!map.Map.SETTINGS_OK){alert("Server-side settings not applied! Please check the scripts.");
};if(useVersionedRequests==null||useVersionedRequests==true){mMapVersion=map.Map.MAP_VERSION;
};var mapService=new map.Rpc(self,qxp.io.remote.Rpc.makeServerURL(),"com.ptvag.webcomponent.map.MapService");
var printService=new map.Rpc(self,qxp.io.remote.Rpc.makeServerURL(),"com.ptvag.webcomponent.map.printing.PrintService");
printService.setTimeout(20000);
if(window.location.href.indexOf(qxp.core.ServerSettings.serverPathPrefix)!=0){mapService.setCrossDomain(true);
printService.setCrossDomain(true);
};map.SERVICE=mapService;
map.PRINT_SERVICE=printService;
self.startLoggingAction(map.Map.MARK_FIRST_SESSION?"mapapi:session":"mapapi:init");
try{parentElement.innerHTML='<div style="width:100%; height:100%; position:relative; overflow:hidden">'+'<div style="width:100%; height:100%; position:absolute; left:0px; top:0px"></div>'+'</div>';
mComponentElement=parentElement.getElementsByTagName("div")[0];
mRelativeLayersElement=mComponentElement.getElementsByTagName("div")[0];
if(mTileDebugMode){mComponentElement.innerHTML='<div style="position:absolute; left:100px; top:100px; width:200px; height:200px ">'+'<div style="position:relative; width:100%; height:100%">'+'<div style="position:absolute; left:0px; top:0px; width:100%; height:100%; border:1px solid black; z-index:10000"></div>'+'</div></div>';
mComponentElement=mComponentElement.firstChild.firstChild;
CoordUtil.TILE_WIDTH=45;
};self.setAnimator(new map.animator.AcceleratingAnimator());
self.updateSize();
self.setProfileGroup(profileGroup==null?null:profileGroup);
mController=new map.MapController(self,mComponentElement);
self.setRect(actualStartRect.left,actualStartRect.top,actualStartRect.right,actualStartRect.bottom);
self.setResetRect(self.getRect());
var alphaImgExt=qxp.sys.Client.getInstance().isMshtml()?"_noalpha.gif":".png";
var coursegrainedBuilder=new map.RequestBuilder(self,true);
coursegrainedBuilder.setGrainSize(4);
coursegrainedBuilder.setVisible("Town",false);
var coursegrainedLayer=new map.layer.StretchedMapLayer(coursegrainedBuilder);
if(!mTileDebugMode){coursegrainedLayer.set({isRelative:true,needsOpacityHack:true});
};coursegrainedLayer.setEnabled(false);
self.addLayer(coursegrainedLayer,"coursegrained");
var backgroundBuilder=new map.RequestBuilder(self,true);
backgroundBuilder.setVisible("Town",false);
var backgroundLayer=new map.layer.TileMapLayer(backgroundBuilder);
if(!mTileDebugMode){backgroundLayer.set({isRelative:true,needsOpacityHack:true});
};backgroundLayer.setIncludeInPrint(true);
self.addLayer(backgroundLayer,"background");
var satBuilder=new map.RequestBuilder(self,true);
satBuilder.setSat(true);
satBuilder.setVisible("Town",false);
var satLayer=new map.layer.TileMapLayer(satBuilder);
if(!mTileDebugMode){satLayer.set({isRelative:true,needsOpacityHack:true});
};satLayer.setEnabled(false);
self.addLayer(satLayer,"sat");
satLayer.addEventListener('changeEnabled',function(evt){coursegrainedBuilder.setSat(evt.getData());
});
var labelBuilder=new map.RequestBuilder(self,false);
labelBuilder.setVisible("Town",true);
labelBuilder.setTransparent(true);
var labelLayer=new map.layer.SimpleMapLayer(labelBuilder);
if(!mTileDebugMode){labelLayer.set({isRelative:true,needsOpacityHack:true});
};labelLayer.setIncludeInPrint(true);
self.addLayer(labelLayer,"label");
var floaterLayer=new map.layer.Layer();
if(!mTileDebugMode){floaterLayer.set({isRelative:true});
};var vectorLayer=new map.layer.VectorLayer(floaterLayer);
if(!mTileDebugMode){vectorLayer.set({isRelative:true});
};vectorLayer.setIncludeInPrint(true);
self.addLayer(vectorLayer,"vector");
mServerDrawnObjectManager=new map.ServerDrawnObjectManager(labelBuilder,vectorLayer);
var overviewBuilder=new map.RequestBuilder(self,true);
overviewBuilder.setVisible("Town",true);
var overviewLayer=new map.layer.SimpleMapLayer(overviewBuilder);
overviewLayer.set({enabled:false,areaLeft:10,areaBottom:20,areaWidth:0.4,areaWidthIsRelative:true,areaHeight:0.375,areaHeightIsRelative:true,areaTop:null,areaRight:null,areaBorderWidth:1,overlayOpacity:0.2,borderWidth:21,zoomDifference:5,useZoomTransparency:false,swallowHoverEvents:true,swallowClickEvents:true});
overviewLayer.setIncludeInPrint(true);
self.addLayer(overviewLayer,"overview",1);
self.addLayer(floaterLayer,"floater");
var imgPrefix="img/com/ptvag/webcomponent/map/";
var imgLayer=new map.layer.ImageLayer(rewriteURL(imgPrefix+"compass_rose_2"+alphaImgExt,true));
imgLayer.set({areaRight:10,areaTop:10});
self.addLayer(imgLayer,"compass",1,null,false);
var posLayer=new map.layer.PositionInfoLayer();
posLayer.set({enabled:false,areaLeft:10,areaRight:10,areaTop:40,areaHeight:10});
self.addLayer(posLayer,"position",1);
if(map.Map.USE_DEBUG_LAYER){var debugLayer=new map.layer.DebugLayer();
debugLayer.set({enabled:false,areaLeft:10,areaRight:30,areaBottom:35});
self.addLayer(debugLayer,"debug",1);
};self.setCopyright(null);
var scaleLayer=new map.layer.ScaleLayer;
scaleLayer.set({areaRight:0,areaBottom:0});
scaleLayer.setIncludeInPrint(true);
self.addLayer(scaleLayer,"scale",1,null,false);
if(map.Map.USE_ZOOM_SLIDER){var sliderLayer=new map.layer.ZoomSliderLayer;
sliderLayer.set({areaRight:7,areaTop:60,areaBottom:10+scaleLayer.getComputedAreaHeight()});
self.addLayer(sliderLayer,"zoomslider",1,null,false);
};if(map.Map.USE_TOOLBAR){var toolbarLayer=new map.layer.DefaultToolbarLayer;
toolbarLayer.set({areaLeft:10,areaTop:10});
self.addLayer(toolbarLayer,"toolbar",1,null,false);
};self.createDispatchDataEvent("mapVersion",mMapVersion);
}finally{self.endLoggingAction();
}};init();
});
qxp.Class.OPACITY_HACK_SIZE=(qxp.sys.Client.getInstance().isMshtml()?2000:1000000);
qxp.Class.MARK_FIRST_SESSION=true;
qxp.Class.ENABLE_CACHING=true;
qxp.Class.STATIC_SERVER=null;
qxp.Class.MAP_VERSION=null;
qxp.Class.USE_DEBUG_LAYER=true;
qxp.Class.USE_TOOLBAR=true;
qxp.Class.USE_ZOOM_SLIDER=true;
qxp.OO.addProperty({name:"allowMouseWheelZoom",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:true});
qxp.OO.addProperty({name:"allowDoubleClickZoom",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:true});
qxp.OO.addProperty({name:"useAutoBulkMode",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:true});
qxp.OO.addProperty({name:"width",type:qxp.constant.Type.NUMBER,allowNull:false});
qxp.OO.addProperty({name:"height",type:qxp.constant.Type.NUMBER,allowNull:false});
qxp.OO.addProperty({name:"center",type:qxp.constant.Type.OBJECT});
qxp.OO.addProperty({name:"centerIsAdjusting",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:false});
qxp.OO.addProperty({name:"zoom",type:qxp.constant.Type.NUMBER,defaultValue:10});
qxp.OO.addProperty({name:"visibleCenter",type:qxp.constant.Type.OBJECT});
qxp.OO.addProperty({name:"visibleZoom",type:qxp.constant.Type.NUMBER,defaultValue:10});
qxp.OO.addProperty({name:"inverseWheelZoom",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:false});
qxp.OO.addProperty({name:"animator",type:qxp.constant.Type.OBJECT,allowNull:false});
qxp.OO.addProperty({name:"animate",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:false});
qxp.OO.addProperty({name:"zoomBoxColor",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:"#dddddd"});
qxp.OO.addProperty({name:"zoomBoxOpacity",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:0.5});
qxp.OO.addProperty({name:"zoomBoxBorderColor",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:"blue"});
qxp.OO.addProperty({name:"zoomBoxBorderWidth",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:2});
qxp.OO.addProperty({name:"clipMoveBorder",type:qxp.constant.Type.NUMBER,defaultValue:40});
qxp.OO.addProperty({name:"viewToPointsBorder",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:40});
qxp.OO.addProperty({name:"viewToPointsMinZoomLevel",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:3});
qxp.OO.addProperty({name:"maxHistorySize",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:50});
qxp.OO.addProperty({name:"resetRect",type:qxp.constant.Type.OBJECT});
qxp.OO.addProperty({name:"relativeOffset",type:qxp.constant.Type.OBJECT,defaultValue:{x:0,y:0}});
qxp.OO.addProperty({name:"profileGroup",type:qxp.constant.Type.STRING,defaultValue:null});
qxp.OO.addProperty({name:"backendServer",type:qxp.constant.Type.STRING,defaultValue:null});
qxp.OO.addProperty({name:"printSystem",type:qxp.constant.Type.STRING,possibleValues:["server","flash"],defaultValue:"server",allowNull:false});
qxp.OO.addProperty({name:"decimalSeparator",type:qxp.constant.Type.STRING,defaultValue:".",allowNull:false});
qxp.OO.addProperty({name:"useMiles",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:false});
qxp.dev.log.Logger.ROOT_LOGGER.setMinLevel(qxp.dev.log.Logger.LEVEL_OFF);




/* ID: com.ptvag.webcomponent.map.PrintContext */
qxp.OO.defineClass("com.ptvag.webcomponent.map.PrintContext",qxp.core.Target,function(width,height){qxp.core.Target.apply(this,arguments);
var self=this;
var map=com.ptvag.webcomponent.map;
var MapUtil=map.MapUtil;
var mCommandQueue=["refreshSession",{method:"begin",params:[width,height]}];
var mCurrentCall;
var mExc=null;
var mStrokeStyle="rgb(0, 0, 0)";
var mFillStyle="rgb(0, 0, 0)";
var mLineWidth=1;
var mLineCap="butt";
var mLineJoin="miter";
var mFontFamily="serif";
var mFontStyle="plain";
var mFontSize=10;
var mTextAlignment=34;
var mGlobalAlpha=1;
self.strokeStyle=mStrokeStyle;
self.fillStyle=mFillStyle;
self.lineWidth=mLineWidth;
self.lineCap=mLineCap;
self.lineJoin=mLineJoin;
self.fontFamily=mFontFamily;
self.fontStyle=mFontStyle;
self.fontSize=mFontSize;
self.textAlignment=mTextAlignment;
self.globalAlpha=mGlobalAlpha;
var createMethod=function(name){self[name]=function(){if(mStrokeStyle!=self.strokeStyle){mStrokeStyle=self.strokeStyle;
var translatedColor=translateColor(mStrokeStyle);
mCommandQueue.push({method:"setStrokeStyle",params:[translatedColor.r,translatedColor.g,translatedColor.b,translatedColor.a]});
};if(mFillStyle!=self.fillStyle){mFillStyle=self.fillStyle;
var translatedColor=translateColor(mFillStyle);
mCommandQueue.push({method:"setFillStyle",params:[translatedColor.r,translatedColor.g,translatedColor.b,translatedColor.a]});
};if(mLineWidth!=self.lineWidth){mLineWidth=self.lineWidth;
mCommandQueue.push({method:"setLineWidth",params:[mLineWidth]});
};if(mLineCap!=self.lineCap){mLineCap=self.lineCap;
mCommandQueue.push({method:"setLineCap",params:[mLineCap]});
};if(mLineJoin!=self.lineJoin){mLineJoin=self.lineJoin;
mCommandQueue.push({method:"setLineJoin",params:[mLineJoin]});
};if(name=="drawText"){if(mFontFamily!=self.fontFamily){mFontFamily=self.fontFamily;
mCommandQueue.push({method:"setFontFamily",params:[mFontFamily]});
};if(mFontStyle!=self.fontStyle){mFontStyle=self.fontStyle;
mCommandQueue.push({method:"setFontStyle",params:[mFontStyle]});
};if(mFontSize!=self.fontSize){mFontSize=self.fontSize;
mCommandQueue.push({method:"setFontSize",params:[mFontSize]});
};if(mTextAlignment!=self.textAlignment){mTextAlignment=self.textAlignment;
mCommandQueue.push({method:"setTextAlignment",params:[mTextAlignment]});
}};if(mGlobalAlpha!=self.globalAlpha){mGlobalAlpha=self.globalAlpha;
mCommandQueue.push({method:"setGlobalAlpha",params:[mGlobalAlpha]});
};mCommandQueue.push({method:name,params:arguments});
self.processQueue();
};
};
var translateColor=function(color){var retVal={a:255};
var match=MapUtil.RGB_REGEX.exec(color);
if(match==null){match=MapUtil.RGBA_REGEX.exec(color);
if(match!=null){retVal.a=Math.round(parseFloat(match[4])*255);
}};if(match==null){var colorAsInt=parseInt(color.substring(1),16);
retVal.r=parseInt(colorAsInt/65536);
colorAsInt-=retVal.r*65536;
retVal.g=parseInt(colorAsInt/256);
retVal.b=colorAsInt-retVal.g*256;
}else{retVal.r=parseInt(match[1]);
retVal.g=parseInt(match[2]);
retVal.b=parseInt(match[3]);
};return retVal;
};
createMethod("beginPath");
createMethod("moveTo");
createMethod("lineTo");
createMethod("rect");
createMethod("arc");
createMethod("stroke");
createMethod("fill");
createMethod("drawText");
createMethod("setClipRect");
createMethod("clearClipRect");
self.drawImage=function(img,sx,sy,swidth,sheight,dx,dy,dwidth,dheight){if(dx==null){dx=sx;
dy=sy;
dwidth=swidth;
dheight=sheight;
sx=0;
sy=0;
swidth=-1;
sheight=-1;
};if(dx+dwidth>0&&dy+dheight>0&&dx<width&&dy<height){if(mGlobalAlpha!=self.globalAlpha){mGlobalAlpha=self.globalAlpha;
mCommandQueue.push({method:"setGlobalAlpha",params:[mGlobalAlpha]});
};var url=img.src;
if(url.indexOf(qxp.core.ServerSettings.serverPathPrefix)==0){url=map.PRINT_SERVICE.fixUrl(url);
};mCommandQueue.push({method:"drawImage",params:[url,sx,sy,swidth,sheight,dx,dy,dwidth,dheight]});
self.processQueue();
}};
self.processQueue=function(){if(mCommandQueue.length==0||mCurrentCall!=null||self.getDisposed()){return;
};var command=mCommandQueue[0];
mCommandQueue.splice(0,1);
if(command!="refreshSession"&&command.method!="drawImage"){for(var i=0;
i<self.getAggregateCommandCount()-1;
++i){if(mCommandQueue.length==0){break;
};var nextCommand=mCommandQueue[0];
if(nextCommand.method=="drawImage"){break;
};mCommandQueue.splice(0,1);
command.method+=","+nextCommand.method;
if(i==0){command.params=[MapUtil.convertArray(command.params)];
};command.params.push(MapUtil.convertArray(nextCommand.params));
}};if(mExc!=null){window.setTimeout(self.processQueue,0);
return;
};if(command=="refreshSession"){self._ptv_map_waitCounter+=1;
mCurrentCall="refreshSession";
map.PRINT_SERVICE.refreshSession(function(result,exc){self._ptv_map_waitCounter-=1;
mCurrentCall=null;
if(!result){exc=new Error("Error refreshing session");
};mExc=exc;
if(mExc!=null&&!self.getDisposed()){self.error(mExc);
};self.processQueue();
});
}else{var commandParams=command.params;
var commandParamCount=commandParams.length;
var rpcArgs=new Array(commandParamCount+2);
rpcArgs[0]=function(result,exc){self._ptv_map_waitCounter-=1;
mCurrentCall=null;
mExc=exc;
if(mExc!=null&&!self.getDisposed()){self.error(mExc);
};self.processQueue();
};
rpcArgs[1]=command.method;
for(var i=0;
i<commandParamCount;
++i){rpcArgs[i+2]=commandParams[i];
};self._ptv_map_waitCounter+=1;
var printService=self.getPrintService();
mCurrentCall=printService.callAsync.apply(printService,rpcArgs);
}};
self.end=function(){mCommandQueue.push({method:"end",params:arguments});
self.processQueue();
};
self.getError=function(){return mExc;
};
self.isIdle=function(){if(self._ptv_map_waitCounter==0&&mCommandQueue.length==0){return true;
};return false;
};
self.getPrintImageURL=function(){return map.MapUtil.rewriteURL("/MapServlet?special=printimg&nocache="+(new Date()).getTime()+"&tok="+encodeURIComponent(map.RequestBuilder.getToken()),false,"");
};
self.getAggregateCommandCount=function(){return 8;
};
self.getPrintService=function(){return map.PRINT_SERVICE;
};
self._ptv_map_waitCounter=0;
window.setTimeout(self.processQueue,0);
});




/* ID: com.ptvag.webcomponent.map.FlashPrintContext */
qxp.OO.defineClass("com.ptvag.webcomponent.map.FlashPrintContext",com.ptvag.webcomponent.map.PrintContext,function(width,height){var map=com.ptvag.webcomponent.map;
map.PrintContext.apply(this,arguments);
var self=this;
var FlashPrintContext=map.FlashPrintContext;
var mFlashContainer;
var mURLsToUpload={};
var mUploadFinished=false;
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};if(mFlashContainer!=null){mFlashContainer.parentNode.removeChild(mFlashContainer);
mFlashContainer=null;
};superDispose.call(self);
};
var superDrawImage=self.drawImage;
self.drawImage=function(img){var url=img.src;
if(url.indexOf(qxp.core.ServerSettings.serverPathPrefix)!=0){mURLsToUpload[url]=null;
};superDrawImage.apply(self,arguments);
};
var superEnd=self.end;
self.end=function(){superEnd.apply(self,arguments);
mUploadFinished=true;
for(var url in mURLsToUpload){mUploadFinished=false;
break;
};if(mUploadFinished){self.processQueue();
}else{mFlashContainer=document.createElement("div");
mFlashContainer.style.position="absolute";
mFlashContainer.style.left="-"+width+"px";
mFlashContainer.style.top="-"+height+"px";
var callbackId=FlashPrintContext.flashCallBackId++;
var flashVars="callbackId="+callbackId+"&urls=";
var i=0;
for(url in mURLsToUpload){if(i>0){flashVars+="+";
};flashVars+=encodeURIComponent(url);
++i;
};var serverSettings=qxp.core.ServerSettings;
flashVars+="&prefix="+encodeURIComponent(serverSettings.serverPathPrefix);
flashVars+="&suffix="+encodeURIComponent(serverSettings.serverPathSuffix);
mFlashContainer.innerHTML=com.ptvag.webcomponent.util.Flash.getFlashContent("src",com.ptvag.webcomponent.map.MapUtil.rewriteURL("swf/com/ptvag/webcomponent/map/PrintHelper",true),"width",width,"height",height,"quality","high","allowScriptAccess","sameDomain","type","application/x-shockwave-flash","FlashVars",flashVars,"id","_ptv_map_printHelper_"+callbackId,"pluginspage","http://www.adobe.com/go/getflashplayer");
FlashPrintContext.flashCallBackListeners[callbackId]=function(id,result,exc){mUploadFinished=true;
self.processQueue();
};document.body.appendChild(mFlashContainer);
}};
var superProcessQueue=self.processQueue;
self.processQueue=function(){if(mUploadFinished){superProcessQueue.apply(self,arguments);
}};
});
qxp.Class.flashCallBack=function(id,result,exc){var FlashPrintContext=com.ptvag.webcomponent.map.FlashPrintContext;
id=parseInt(id);
if(id>2000000000){FlashPrintContext.flashCallBackId=0;
};var listener=FlashPrintContext.flashCallBackListeners[id];
if(listener!=null){delete FlashPrintContext.flashCallBackListeners[id];
var listenersFound=false;
for(var key in FlashPrintContext.flashCallBackListeners){listenersFound=true;
break;
};if(!listenersFound){FlashPrintContext.flashCallBackListeners={};
};window.setTimeout(function(){listener(id,result,exc);
},0);
}};
qxp.Class.flashCallBackListeners={};
qxp.Class.flashCallBackId=0;




/* ID: com.ptvag.webcomponent.util.Flash */
qxp.OO.defineClass("com.ptvag.webcomponent.util.Flash");
qxp.Class.getControlVersion=function(){var version;
var axo;
var e;
try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
version=axo.GetVariable("$version");
}catch(e){};if(!version){try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
version="WIN 6,0,21,0";
axo.AllowScriptAccess="always";
version=axo.GetVariable("$version");
}catch(e){}};if(!version){try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
version=axo.GetVariable("$version");
}catch(e){}};if(!version){try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
version="WIN 3,0,18,0";
}catch(e){}};if(!version){try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
version="WIN 2,0,0,11";
}catch(e){version=-1;
}};return version;
};
qxp.Class.getSwfVer=function(){var flashVer=-1;
if(navigator.plugins!=null&&navigator.plugins.length>0){if(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]){var swVer2=navigator.plugins["Shockwave Flash 2.0"]?" 2.0":"";
var flashDescription=navigator.plugins["Shockwave Flash"+swVer2].description;
var descArray=flashDescription.split(" ");
var tempArrayMajor=descArray[2].split(".");
var versionMajor=tempArrayMajor[0];
var versionMinor=tempArrayMajor[1];
var versionRevision=descArray[3];
if(versionRevision==""){versionRevision=descArray[4];
};if(versionRevision[0]=="d"){versionRevision=versionRevision.substring(1);
}else if(versionRevision[0]=="r"){versionRevision=versionRevision.substring(1);
if(versionRevision.indexOf("d")>0){versionRevision=versionRevision.substring(0,versionRevision.indexOf("d"));
}};var flashVer=versionMajor+"."+versionMinor+"."+versionRevision;
}}else if(navigator.userAgent.toLowerCase().indexOf("webtv/2.6")!=-1)flashVer=4;
else if(navigator.userAgent.toLowerCase().indexOf("webtv/2.5")!=-1)flashVer=3;
else if(navigator.userAgent.toLowerCase().indexOf("webtv")!=-1)flashVer=2;
else if(qxp.sys.Client.getInstance().isMshtml()){flashVer=com.ptvag.webcomponent.util.Flash.getControlVersion();
};return flashVer;
};
qxp.Class.detectFlashVer=function(reqMajorVer,reqMinorVer,reqRevision){versionStr=com.ptvag.webcomponent.util.Flash.getSwfVer();
if(versionStr==-1){return false;
}else if(versionStr!=0){if(qxp.sys.Client.getInstance().isMshtml()){tempArray=versionStr.split(" ");
tempString=tempArray[1];
versionArray=tempString.split(",");
}else{versionArray=versionStr.split(".");
};var versionMajor=versionArray[0];
var versionMinor=versionArray[1];
var versionRevision=versionArray[2];
if(versionMajor>parseFloat(reqMajorVer)){return true;
}else if(versionMajor==parseFloat(reqMajorVer)){if(versionMinor>parseFloat(reqMinorVer))return true;
else if(versionMinor==parseFloat(reqMinorVer)){if(versionRevision>=parseFloat(reqRevision))return true;
}};return false;
}};
qxp.Class.addExtension=function(src,ext){if(src.indexOf('?')!=-1)return src.replace(/\?/,ext+'?');
else return src+ext;
};
qxp.Class.generateObj=function(objAttrs,params,embedAttrs){var str='';
if(qxp.sys.Client.getInstance().isMshtml()){str+='<object ';
for(var i in objAttrs)str+=i+'="'+objAttrs[i]+'" ';
str+='>';
for(var i in params)str+='<param name="'+i+'" value="'+params[i]+'" /> ';
str+='</object>';
}else{str+='<embed ';
for(var i in embedAttrs)str+=i+'="'+embedAttrs[i]+'" ';
str+='> </embed>';
};return str;
};
qxp.Class.getFlashContent=function(){var Flash=com.ptvag.webcomponent.util.Flash;
var ret=Flash.getArgs(arguments,".swf","movie","clsid:d27cdb6e-ae6d-11cf-96b8-444553540000","application/x-shockwave-flash");
return Flash.generateObj(ret.objAttrs,ret.params,ret.embedAttrs);
};
qxp.Class.getArgs=function(args,ext,srcParamName,classid,mimeType){var Flash=com.ptvag.webcomponent.util.Flash;
var ret=new Object();
ret.embedAttrs=new Object();
ret.params=new Object();
ret.objAttrs=new Object();
for(var i=0;
i<args.length;
i=i+2){var currArg=args[i].toLowerCase();
switch(currArg){case "classid":break;
case "pluginspage":ret.embedAttrs[args[i]]=args[i+1];
break;
case "src":case "movie":args[i+1]=Flash.addExtension(args[i+1],ext);
ret.embedAttrs["src"]=args[i+1];
ret.params[srcParamName]=args[i+1];
break;
case "onafterupdate":case "onbeforeupdate":case "onblur":case "oncellchange":case "onclick":case "ondblClick":case "ondrag":case "ondragend":case "ondragenter":case "ondragleave":case "ondragover":case "ondrop":case "onfinish":case "onfocus":case "onhelp":case "onmousedown":case "onmouseup":case "onmouseover":case "onmousemove":case "onmouseout":case "onkeypress":case "onkeydown":case "onkeyup":case "onload":case "onlosecapture":case "onpropertychange":case "onreadystatechange":case "onrowsdelete":case "onrowenter":case "onrowexit":case "onrowsinserted":case "onstart":case "onscroll":case "onbeforeeditfocus":case "onactivate":case "onbeforedeactivate":case "ondeactivate":case "type":case "codebase":ret.objAttrs[args[i]]=args[i+1];
break;
case "id":case "width":case "height":case "align":case "vspace":case "hspace":case "class":case "title":case "accesskey":case "name":case "tabindex":ret.embedAttrs[args[i]]=ret.objAttrs[args[i]]=args[i+1];
break;
default:ret.embedAttrs[args[i]]=ret.params[args[i]]=args[i+1];
}};ret.objAttrs["classid"]=classid;
if(mimeType)ret.embedAttrs["type"]=mimeType;
return ret;
};




/* ID: com.ptvag.webcomponent.map.vector.InfoBoxElementFactoryRound */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.InfoBoxElementFactoryRound",com.ptvag.webcomponent.map.vector.InfoBoxElementFactoryDefault,function(){com.ptvag.webcomponent.map.vector.InfoBoxElementFactoryDefault.call(this);
var self=this;
self.setTipMargin(6);
self.createRoundCorner=function(lengthArray,bgcolor,opacities,color,flipH,flipV){var size=lengthArray.length;
var count=opacities.length;
retVal=new Array(size+count+2);
retVal[0]='<div style="background-color:transparent;width:'+size+'px;height:'+size+'px;position:relative">';
for(var i=0;
i<size;
++i){var length=lengthArray[flipV?(size-i-1):i];
retVal[i+1]='<div style="border-top:1px solid '+bgcolor+';position:absolute;top:'+i+'px;left:'+(flipH?0:(size-length))+'px;width:'+length+'px;height:0px"></div>';
};var clientInstance=qxp.sys.Client.getInstance();
for(i=0;
i<count;
++i){var opacity=opacities[i];
if(opacity.o==1){var opacityCSS="";
}else{if(clientInstance.isGecko()){opacityCSS="-moz-opacity:"+opacity.o+";"
;
}else if(clientInstance.isKhtml()){opacityCSS="-khtml-opacity:"+opacity.o+";"
;
}else if(qxp.sys.Client.getInstance().isMshtml()){opacityCSS="filter:alpha(opacity="+opacity.o*100+");";
}else{opacityCSS="opacity:"+opacity.o+";"
;
}};retVal[i+1+size]='<div style="'+opacityCSS+'border-top:1px solid '+color+';position:absolute;left:'+(flipH?(size-opacity.x-opacity.w):opacity.x)+'px;top:'+(flipV?(size-opacity.y-1):opacity.y)+'px;width:'+opacity.w+'px;height:0px"></div>';
};retVal[size+count+1]='</div>';
return retVal.join("");
};
self.createContentBox=function(content,bgcolor){var allowWrap=self.getAllowWrap();
var paddingLeft=self.getPaddingLeft();
var paddingRight=self.getPaddingRight();
var paddingTop=self.getPaddingTop();
var paddingBottom=self.getPaddingBottom();
var lengthArray=[3,5,5,6,6,6];
var opacities=[{x:1,y:0,o:0.2,w:1},{x:2,y:0,o:0.4,w:1},{x:3,y:0,o:1.0,w:3},{x:0,y:1,o:0.2,w:1},{x:1,y:1,o:0.8,w:1},{x:2,y:1,o:1.0,w:1},{x:3,y:1,o:0.4,w:1},{x:4,y:1,o:0.2,w:1},{x:0,y:2,o:0.4,w:1},{x:1,y:2,o:1.0,w:1},{x:2,y:2,o:0.2,w:1},{x:0,y:3,o:1.0,w:1},{x:1,y:3,o:0.4,w:1},{x:0,y:4,o:1.0,w:1},{x:1,y:4,o:0.2,w:1},{x:0,y:5,o:1.0,w:1}];
var borderColor="#7f7f7f";
var filler='<span style="display:block;width:1px;height:1px"></span>';
return '<td><table cellpadding="0" cellspacing="0"><tr>'+'<td>'+self.createRoundCorner(lengthArray,bgcolor,opacities,borderColor,false,false)+'</td>'+'<td bgcolor="'+bgcolor+'" style="border-top:1px solid '+borderColor+';font-size:2px">'+filler+'</td><td>'+self.createRoundCorner(lengthArray,bgcolor,opacities,borderColor,true,false)+'</td></tr><tr>'+'<td bgcolor="'+bgcolor+'" style="border-left:1px solid '+borderColor+';font-size:2px">'+filler+'</td>'+'<td bgcolor="'+bgcolor+'" style="'+'padding-left:'+paddingLeft+';padding-right:'+paddingRight+';padding-top:'+paddingTop+';padding-bottom:'+paddingBottom+(allowWrap?'':';white-space:nowrap')+'">'+content+'</td><td bgcolor="'+bgcolor+'" style="border-right:1px solid '+borderColor+';font-size:2px">'+filler+'</td></tr><tr>'+'<td>'+self.createRoundCorner(lengthArray,bgcolor,opacities,borderColor,false,true)+'</td>'+'<td bgcolor="'+bgcolor+'" style="border-bottom:1px solid '+borderColor+';font-size:2px">'+filler+'</td><td>'+self.createRoundCorner(lengthArray,bgcolor,opacities,borderColor,true,true)+'</td></tr></table></td>';
};
});
qxp.Class.getInstance=function(){var vector=com.ptvag.webcomponent.map.vector;
var myClass=vector.InfoBoxElementFactoryRound;
if(myClass.instance==null){myClass.instance=new vector.InfoBoxElementFactoryRound();
};return myClass.instance;
};



/* ID: com.ptvag.webcomponent.map.animator.Animator */
qxp.OO.defineClass("com.ptvag.webcomponent.map.animator.Animator",qxp.core.Object,function(){qxp.core.Object.call(this);
var self=this;
var mStartTime;
var mStartCenter;
var mStartZoom;
self.onTargetChanged=function(){mStartTime=new Date().getTime();
mStopAnimation=false;
var map=self.getMap();
mStartCenter=map.getVisibleCenter();
mStartZoom=map.getVisibleZoom();
if(mStartCenter==null||mStartZoom==null){map.setVisibleCenter(map.getCenter());
map.setVisibleZoom(map.getZoom());
}else{nextStep();
}};
self.stopAnimation=function(){mStopAnimation=true;
var map=self.getMap();
map.setVisibleCenter(map.getCenter());
map.setVisibleZoom(map.getZoom());
};
var nextStep=function(){if(mStopAnimation){return;
};var map=self.getMap();
var animationTime=new Date().getTime()-mStartTime;
var inBulkMode=map.inBulkMode();
if(!inBulkMode){map.startBulkMode();
};var isFinished=self.doAnimation(animationTime);
if(!inBulkMode){map.endBulkMode();
};if(!isFinished){window.setTimeout(nextStep,50);
}};
self.getStartCenter=function(){return mStartCenter;
};self.getStartZoom=function(){return mStartZoom;
};self.doAnimation=function(animationTime){throw new Error("doAnimation is abstract");
};self.interpolatePoint=function(startPoint,endPoint,factor){return{x:startPoint.x+(endPoint.x-startPoint.x)*factor,y:startPoint.y+(endPoint.y-startPoint.y)*factor};
};
self.interpolateZoom=function(startLevel,endLevel,factor){if(factor==0||startLevel==endLevel){return startLevel;
};if(factor==1){return endLevel;
};var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
var startTileWidth=CoordUtil.getTileWidth(startLevel);
var endTileWidth=CoordUtil.getTileWidth(endLevel);
var visibleTileWidth=startTileWidth+(endTileWidth-startTileWidth)*factor;
return CoordUtil.getLevelForTileWidth(visibleTileWidth);
};
});
qxp.OO.addProperty({name:"map",type:qxp.constant.Type.OBJECT,allowNull:false});




/* ID: com.ptvag.webcomponent.map.CoordUtil */
qxp.OO.defineClass("com.ptvag.webcomponent.map.CoordUtil");
qxp.Class.sizeCenterZoom2BBox=function(width,height,center,zoom){var supp=com.ptvag.webcomponent.map.CoordUtil.getSmartUnitsPerPixel(zoom);
return{left:center.x-supp*width/2,top:center.y+supp*height/2,right:center.x+supp*width/2,bottom:center.y-supp*height/2};
};
qxp.Class.sizeCenterZoomInSUPP2BBox=function(width,height,center,supp){return{left:center.x-supp*width/2,top:center.y+supp*height/2,right:center.x+supp*width/2,bottom:center.y-supp*height/2};
};
qxp.Class.distanceOfSmartUnitPoints=function(suPoint1,suPoint2){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
var dx=suPoint1.x-suPoint2.x;
var dy=suPoint1.y-suPoint2.y;
var lon=(suPoint1.y+suPoint2.y)/2;
var mercLon=lon*CoordUtil.SMART_UNIT-CoordUtil.SMART_OFFSET;
var geoLonDegrees=180/Math.PI*(Math.atan(Math.exp(mercLon/6371000))-(Math.PI/4))/0.5;
var metersPerSmartUnit=CoordUtil.SMART_UNIT*Math.cos(geoLonDegrees/180*Math.PI);
return Math.sqrt((dx*dx+dy*dy))*metersPerSmartUnit;
};
qxp.Class.mercator2SmartUnit=function(mercPoint){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
return{x:((mercPoint.x+CoordUtil.SMART_OFFSET)/CoordUtil.SMART_UNIT),y:((mercPoint.y+CoordUtil.SMART_OFFSET)/CoordUtil.SMART_UNIT)};
};
qxp.Class.smartUnit2Mercator=function(suPoint){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
return{x:suPoint.x*CoordUtil.SMART_UNIT-CoordUtil.SMART_OFFSET,y:suPoint.y*CoordUtil.SMART_UNIT-CoordUtil.SMART_OFFSET};
};
qxp.Class.mercator2GeoDecimal=function(mercPoint){var geoPoint={};
var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
geoPoint.x=CoordUtil.MERC_2_GEO_X_HELPER*mercPoint.x;
geoPoint.y=(Math.atan(Math.exp(mercPoint.y/6371000.0))-(Math.PI/4.0))*CoordUtil.MERC_2_GEO_Y_HELPER;
return geoPoint;
};
qxp.Class.geoDecimal2Mercator=function(geoPoint){var mercPoint={};
var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
mercPoint.x=CoordUtil.GEO_2_MERC_X_HELPER*geoPoint.x;
mercPoint.y=6371000.0*Math.log(Math.tan((Math.PI/4.0)+CoordUtil.GEO_2_MERC_Y_HELPER*geoPoint.y));
return mercPoint;
};
qxp.Class.geoDecimal2SmartUnit=function(geoPoint){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
return CoordUtil.mercator2SmartUnit(CoordUtil.geoDecimal2Mercator(geoPoint));
};
qxp.Class.geoDecimalList2SmartUnitList=function(pointList){var map=com.ptvag.webcomponent.map;
var converter=map.CoordUtil.geoDecimal2SmartUnit;
var newList=[];
var iter=new map.PointListIterator(pointList);
while(iter.iterate()){newList.push(converter({x:iter.x,y:iter.y}));
};return newList;
};
qxp.Class.smartUnit2GeoDecimal=function(suPoint){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
return CoordUtil.mercator2GeoDecimal(CoordUtil.smartUnit2Mercator(suPoint));
};
qxp.Class.smartUnit2Tile=function(suPoint,level){var tilewidth=com.ptvag.webcomponent.map.CoordUtil.TILE_WIDTHS[level];
if(!tilewidth){throw new Error("Illegal zoom level: "+level);
};return{x:suPoint.x/tilewidth,y:suPoint.y/tilewidth};
};
qxp.Class.tile2SmartUnit=function(tilePoint,level){var tilewidth=com.ptvag.webcomponent.map.CoordUtil.TILE_WIDTHS[level];
if(!tilewidth){throw new Error("Illegal zoom level: "+level);
};return{x:tilePoint.x*tilewidth,y:tilePoint.y*tilewidth};
};
qxp.Class.tile2TileId=function(tilePoint){return((tilePoint.x&0xffff)<<16)|(tilePoint.y&0xffff);
};
qxp.Class.tileId2Tile=function(tileId){return{x:tileId>>16,y:tileId&0xffff};
};
qxp.Class.smartUnit2Pixel=function(suPoint,level){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
return CoordUtil.smartUnit2PixelByTileWidth(suPoint,CoordUtil.getTileWidth(level));
};
qxp.Class.pixel2SmartUnit=function(pixPoint,level){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
return CoordUtil.pixel2SmartUnitByTileWidth(pixPoint,CoordUtil.getTileWidth(level));
};
qxp.Class.smartUnit2PixelByTileWidth=function(suPoint,tilewidth){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
return{x:suPoint.x/tilewidth*CoordUtil.TILE_WIDTH,y:suPoint.y/tilewidth*CoordUtil.TILE_WIDTH};
};
qxp.Class.pixel2SmartUnitByTileWidth=function(pixPoint,tilewidth){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
return{x:pixPoint.x*tilewidth/CoordUtil.TILE_WIDTH,y:pixPoint.y*tilewidth/CoordUtil.TILE_WIDTH};
};
qxp.Class.getTileWidth=function(level){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
return CoordUtil.ZOOM_BASE*Math.pow(CoordUtil.ZOOM_LEVEL_FACTOR,level);
};
qxp.Class.getLevelForTileWidth=function(tileWidth){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
return Math.log(tileWidth/CoordUtil.ZOOM_BASE)/CoordUtil.ZOOM_LOG_LEVEL_FACTOR;
};
qxp.Class.getSmartUnitsPerPixel=function(level){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
return CoordUtil.getTileWidth(level)/CoordUtil.TILE_WIDTH};
qxp.Class.getLevelForSmartUnitsPerPixel=function(suPerPixel){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
return CoordUtil.getLevelForTileWidth(suPerPixel*CoordUtil.TILE_WIDTH);
};
qxp.Class.clipHelper=function(t,p,q){if(p==0){if(q<0){return true;
}}else{r=q/p;
if(p<0){if(r>t[1]){return true;
};if(r>t[0]){t[0]=r;
}}else{if(r<t[0]){return true;
};if(r<t[1]){t[1]=r;
}}};return false;
};
qxp.Class.clipLine=function(startPoint,endPoint,bounds,edgeInfo){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
var t=[0,1];
var tPrev=[0,1];
var clipEdgeStart=null;
var clipEdgeEnd=null;
if(edgeInfo!=null){edgeInfo.clipEdgeStart=clipEdgeStart;
edgeInfo.clipEdgeEnd=clipEdgeEnd;
};var deltaX=endPoint.x-startPoint.x;
var deltaY=endPoint.y-startPoint.y;
var p=-deltaX;
var q=-(bounds.minX-startPoint.x);
if(CoordUtil.clipHelper(t,p,q)){return 4;
};if(t[0]!=tPrev[0]){clipEdgeStart=3;
tPrev[0]=t[0];
};if(t[1]!=tPrev[1]){clipEdgeEnd=3;
tPrev[1]=t[1];
};p=deltaX;
q=bounds.maxX-startPoint.x;
if(CoordUtil.clipHelper(t,p,q)){return 4;
};if(t[0]!=tPrev[0]){clipEdgeStart=1;
tPrev[0]=t[0];
};if(t[1]!=tPrev[1]){clipEdgeEnd=1;
tPrev[1]=t[1];
};p=-deltaY;
q=-(bounds.minY-startPoint.y);
if(CoordUtil.clipHelper(t,p,q)){return 4;
};if(t[0]!=tPrev[0]){clipEdgeStart=2;
tPrev[0]=t[0];
};if(t[1]!=tPrev[1]){clipEdgeEnd=2;
tPrev[1]=t[1];
};p=deltaY;
q=bounds.maxY-startPoint.y;
if(CoordUtil.clipHelper(t,p,q)){return 4;
};if(t[0]!=tPrev[0]){clipEdgeStart=0;
tPrev[0]=t[0];
};if(t[1]!=tPrev[1]){clipEdgeEnd=0;
tPrev[1]=t[1];
};if(edgeInfo!=null){edgeInfo.clipEdgeStart=clipEdgeStart;
edgeInfo.clipEdgeEnd=clipEdgeEnd;
};if(t[0]==0&&t[1]==1){return 0;
};endPoint.x=startPoint.x+t[1]*deltaX;
endPoint.y=startPoint.y+t[1]*deltaY;
startPoint.x+=t[0]*deltaX;
startPoint.y+=t[0]*deltaY;
return(t[0]==0?0:1)+(t[1]==1?0:2);
};
qxp.Class.isPointInPoly=function(pointX,pointY,polyCoords){var vertexCount=polyCoords.length/2;
var j=vertexCount-1;
var odd=false;
for(var i=0;
i<vertexCount;
++i){var polyXi=polyCoords[i*2];
var polyYi=polyCoords[i*2+1];
var polyXj=polyCoords[j*2];
var polyYj=polyCoords[j*2+1];
if(polyYi<pointY&&polyYj>=pointY||polyYj<pointY&&polyYi>=pointY){if(polyXi+(pointY-polyYi)/(polyYj-polyYi)*(polyXj-polyXi)<pointX){odd=!odd;
}};j=i;
};return odd;
};
qxp.Class.makeClockwisePoly=function(coordinates){var vertexCount=coordinates.length/2;
var sum=0;
for(var i=0;
i<vertexCount;
++i){var nextIndex=i+1;
if(nextIndex==vertexCount){nextIndex=0;
};sum+=coordinates[i*2]*coordinates[nextIndex*2+1]-coordinates[nextIndex*2]*coordinates[i*2+1];
};if(sum<0){return coordinates;
};var retVal=new Array(vertexCount*2);
for(i=0;
i<vertexCount;
++i){nextIndex=vertexCount-i-1;
retVal[i*2]=coordinates[nextIndex*2];
retVal[i*2+1]=coordinates[nextIndex*2+1];
};return retVal;
};
qxp.Class.makeLinkedList=function(list){var nodeCount=list.length;
for(var i=0;
i<nodeCount;
++i){var index=i+1;
if(index==nodeCount){index=0;
};list[i].next=list[index];
}};
qxp.Class.clipPoly=function(coordinates,bounds){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
var clockwiseCoordinates=CoordUtil.makeClockwisePoly(coordinates);
var vertexCount=clockwiseCoordinates.length/2;
var subjectList=new Array(vertexCount);
for(var i=0;
i<vertexCount;
++i){subjectList[i]={x:clockwiseCoordinates[i*2],y:clockwiseCoordinates[i*2+1]};
};CoordUtil.makeLinkedList(subjectList);
var clipList=[{x:bounds.minX,y:bounds.maxY},{x:bounds.maxX,y:bounds.maxY},{x:bounds.maxX,y:bounds.minY},{x:bounds.minX,y:bounds.minY}];
CoordUtil.makeLinkedList(clipList);
var enteringList=[];
var intersectionPointClip;
var edgeInfo=new Object();
var lineInside=false;
for(i=0;
i<vertexCount;
++i){var endIndex=i+1;
if(endIndex==vertexCount){endIndex=0;
};var startPoint={x:subjectList[i].x,y:subjectList[i].y};
var endPoint={x:subjectList[endIndex].x,y:subjectList[endIndex].y};
if(CoordUtil.clipLine(startPoint,endPoint,bounds,edgeInfo)==0){lineInside=true;
};for(var j=0;
j<2;
++j){var intersectionPointSubject=null;
if(edgeInfo.clipEdgeStart!=null&&j==0){enteringList.push(startPoint);
intersectionPointSubject=startPoint;
var edgeIndex=edgeInfo.clipEdgeStart;
}else if(edgeInfo.clipEdgeEnd!=null&&j==1){intersectionPointSubject=endPoint;
edgeIndex=edgeInfo.clipEdgeEnd;
};if(intersectionPointSubject!=null){var distX=intersectionPointSubject.x-subjectList[i].x;
var distY=intersectionPointSubject.y-subjectList[i].y;
var squareDist=distX*distX+distY*distY;
intersectionPointSubject.squareDist=squareDist;
var insertAfter=subjectList[i];
var insertBefore=insertAfter.next;
while(insertBefore.squareDist!=null){if(insertBefore.squareDist>=squareDist){break;
};insertAfter=insertBefore;
insertBefore=insertAfter.next;
};insertAfter.next=intersectionPointSubject;
intersectionPointSubject.next=insertBefore;
intersectionPointClip={x:intersectionPointSubject.x,y:intersectionPointSubject.y};
distX=intersectionPointClip.x-clipList[edgeIndex].x;
distY=intersectionPointClip.y-clipList[edgeIndex].y;
squareDist=distX*distX+distY*distY;
intersectionPointClip.squareDist=squareDist;
intersectionPointSubject.link=intersectionPointClip;
intersectionPointClip.link=intersectionPointSubject;
insertAfter=clipList[edgeIndex];
insertBefore=insertAfter.next;
while(insertBefore.squareDist!=null){if(insertBefore.squareDist>=squareDist){break;
};insertAfter=insertBefore;
insertBefore=insertAfter.next;
};insertAfter.next=intersectionPointClip;
intersectionPointClip.next=insertBefore;
}}};var retVal=[];
var enteringCount=enteringList.length;
if(enteringCount==0){if(lineInside){retVal.push(clockwiseCoordinates);
}else{var checkX=(bounds.minX+bounds.maxX)/2;
var checkY=(bounds.minY+bounds.maxY)/2;
if(CoordUtil.isPointInPoly(checkX,checkY,clockwiseCoordinates)){retVal.push([bounds.minX,bounds.maxY,bounds.maxX,bounds.maxY,bounds.maxX,bounds.minY,bounds.minX,bounds.minY]);
}}}else{while(true){for(var index=0;
index<enteringCount;
++index){if(!enteringList[index].deleted){break;
}};if(index==enteringCount){break;
};var poly=[];
startPoint=enteringList[index];
poly.push(startPoint.x);
poly.push(startPoint.y);
startPoint.deleted=true;
var point=startPoint.next;
while(point!=startPoint&&point.link!=startPoint){poly.push(point.x);
poly.push(point.y);
if(point.squareDist!=null){point.deleted=true;
point.link.deleted=true;
point=point.link;
};point=point.next;
};retVal.push(poly);
}};return retVal;
};
qxp.Class.useGoogleZoomLevels=function(){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
var geo1={x:0,y:0};
var geo2={x:4500000,y:0};
var su1=CoordUtil.mercator2SmartUnit(CoordUtil.geoDecimal2Mercator(geo1));
var su2=CoordUtil.mercator2SmartUnit(CoordUtil.geoDecimal2Mercator(geo2));
var suPerDegree=(su2.x-su1.x)/45;
CoordUtil.ZOOM_LEVEL_COUNT=20;
CoordUtil.ZOOM_MAX_TILE_WIDTH=360.0/256.0*suPerDegree*CoordUtil.TILE_WIDTH;
CoordUtil.ZOOM_LEVEL_FACTOR=2;
CoordUtil.ZOOM_LOG_LEVEL_FACTOR=Math.log(CoordUtil.ZOOM_LEVEL_FACTOR);
CoordUtil.ZOOM_BASE=CoordUtil.ZOOM_MAX_TILE_WIDTH/Math.pow(CoordUtil.ZOOM_LEVEL_FACTOR,CoordUtil.ZOOM_LEVEL_COUNT-1);
CoordUtil.TILE_WIDTHS=[];
for(var i=0;
i<CoordUtil.ZOOM_LEVEL_COUNT;
++i){CoordUtil.TILE_WIDTHS.push(CoordUtil.getTileWidth(i));
}};
qxp.Class.ZOOM_LEVEL_COUNT=24;
qxp.Class.ZOOM_MAX_TILE_WIDTH=1040384;
qxp.Class.ZOOM_LEVEL_FACTOR=1.5874;
qxp.Class.ZOOM_LOG_LEVEL_FACTOR=Math.log(qxp.Class.ZOOM_LEVEL_FACTOR);
qxp.Class.ZOOM_BASE=qxp.Class.ZOOM_MAX_TILE_WIDTH/Math.pow(qxp.Class.ZOOM_LEVEL_FACTOR,qxp.Class.ZOOM_LEVEL_COUNT-1);
qxp.Class.TILE_WIDTHS=[];
for(var i=0;
i<qxp.Class.ZOOM_LEVEL_COUNT;
i++){qxp.Class.TILE_WIDTHS.push(qxp.Class.getTileWidth(i));
};qxp.Class.SMART_UNIT=4.809543;
qxp.Class.SMART_OFFSET=20015087;
qxp.Class.TILE_WIDTH=256;
qxp.Class.MERC_2_GEO_X_HELPER=18000/(6371*Math.PI);
qxp.Class.MERC_2_GEO_Y_HELPER=36000000/Math.PI;
qxp.Class.GEO_2_MERC_X_HELPER=63.71*(Math.PI/180);
qxp.Class.GEO_2_MERC_Y_HELPER=Math.PI*(0.5/18000000);




/* ID: com.ptvag.webcomponent.map.animator.LinearAnimator */
qxp.OO.defineClass("com.ptvag.webcomponent.map.animator.LinearAnimator",com.ptvag.webcomponent.map.animator.Animator,function(){com.ptvag.webcomponent.map.animator.Animator.call(this);
var self=this;
self.doAnimation=function(animationTime){var theMap=self.getMap();
var factor=Math.min(1,animationTime/self.getDuration());
var newCenter=self.interpolatePoint(self.getStartCenter(),theMap.getCenter(),factor);
theMap.correctRelativeOffset(newCenter);
theMap.setVisibleCenter(newCenter);
theMap.setVisibleZoom(self.interpolateZoom(self.getStartZoom(),theMap.getZoom(),factor));
return factor==1;
};
});
qxp.OO.addProperty({name:"duration",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:1000});




/* ID: com.ptvag.webcomponent.util.DomUtils */
qxp.OO.defineClass("com.ptvag.webcomponent.util.DomUtils");
qxp.Class.getChildElements=function(element){var childNodes=element.childNodes;
var childNodeCount=childNodes.length;
var childNode;
var retVal=new Array();
for(var i=0;
i<childNodeCount;
++i){childNode=childNodes.item(i);
if(childNode.nodeType==1){retVal.push(childNode);
}};return retVal;
};
qxp.Class.getAbsoluteX=function(element){var x=0;
var testElem=element;
while(testElem){if(testElem.scrollLeft&&testElem!=document.body){x-=testElem.scrollLeft;
};testElem=testElem.parentNode;
};testElem=element;
while(testElem){x+=testElem.offsetLeft;
if(testElem!=element&&testElem.clientLeft&&testElem.nodeName!="TABLE"){x+=testElem.clientLeft;
};testElem=testElem.offsetParent;
};if(!element.offsetParent&&element.x){x+=element.x;
};return x;
};
qxp.Class.getAbsoluteY=function(element){var y=0;
var testElem=element;
while(testElem&&testElem!=document.body){if(testElem.scrollTop){y-=testElem.scrollTop;
};testElem=testElem.parentNode;
};testElem=element;
while(testElem){var offsetTop;
if(testElem.nodeName=="TR"&&testElem.offsetHeight==0){offsetTop=testElem.offsetTop;
var trs=testElem.parentNode.getElementsByTagName("tr");
var trCount=trs.length;
var tr;
for(var i=0;
i<trCount;
++i){tr=trs[i];
if(tr==testElem){break;
};offsetTop+=com.ptvag.webcomponent.util.DomUtils.getAbsoluteHeight(tr);
}}else{offsetTop=testElem.offsetTop;
};y+=offsetTop;
if(testElem!=element&&testElem.clientTop&&testElem.nodeName!="TABLE"){y+=testElem.clientTop;
};testElem=testElem.offsetParent;
};if(!element.offsetParent&&element.y){y+=element.y;
};return y;
};
qxp.Class.getAbsoluteWidth=function(element){if(qxp.sys.Client.getInstance().isWebkit()){var pointer=element;
while(pointer.parentNode&&pointer.offsetWidth==0){pointer=pointer.parentNode;
};return pointer.offsetWidth;
}else{return element.offsetWidth;
}};
qxp.Class.getAbsoluteHeight=function(element){var client=qxp.sys.Client.getInstance();
if((client.isGecko()&&element.nodeName=="SPAN")||(client.isWebkit()&&element.offsetHeight==0&&element.nodeName=="TR")){var DomUtils=com.ptvag.webcomponent.util.DomUtils;
var elemY=DomUtils.getAbsoluteY(element);
var maxHeight=element.offsetHeight;
var children=DomUtils.getChildElements(element);
for(var i=0;
i<children.length;
i++){var yDelta=DomUtils.getAbsoluteY(children[i])-elemY;
var height=DomUtils.getAbsoluteHeight(children[i])+yDelta;
if(maxHeight<height){maxHeight=height;
}};return maxHeight;
}else if(client.isWebkit()){var pointer=element;
while(pointer.parentNode&&pointer.offsetHeight==0){pointer=pointer.parentNode;
};return pointer.offsetHeight;
}else{return element.offsetHeight;
}};
qxp.Class.getScrollX=function(win){if(win.pageXOffset!=null){return win.pageXOffset;
};var scrollLeft1=win.document.documentElement.scrollLeft;
var scrollLeft2=win.document.body.scrollLeft;
return(win.scrollX!=null?win.scrollX:Math.max((scrollLeft1!=null?scrollLeft1:0),(scrollLeft2!=null?scrollLeft2:0)));
};
qxp.Class.getScrollY=function(win){if(win.pageYOffset!=null){return win.pageYOffset;
};var scrollTop1=win.document.documentElement.scrollTop;
var scrollTop2=win.document.body.scrollTop;
return(win.scrollY!=null?win.scrollY:Math.max((scrollTop1!=null?scrollTop1:0)+(scrollTop2!=null?scrollTop2:0)));
};




/* ID: com.ptvag.webcomponent.map.vector.VectorElement */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.VectorElement",qxp.core.Object,function(priority,id,isPositionFlexible){qxp.core.Object.call(this);
var self=this;
var mMapZoom;
var mPriorityFixed=false;
var mInDispose=false;
self._modifyPriority=function(){if(mPriorityFixed){throw new Error("The element priority can't be changed after "+"it's been added to the vector layer");
}};
self._modifyPositionFlexible=function(propValue){if(propValue&&(self.getX==null||self.getY==null)){throw new Error("This element doesn't support flexible positioning");
};self.refresh();
};
self._modifyVectorLayer=function(propValue,propOldValue){if(propOldValue!=null&&!mInDispose){throw new Error("Changing the vector layer is not allowed once "+"it's been set");
}};
self.getZoomFactor=function(){var minFactor=self.getMinFactor();
var maxFactor=self.getMaxFactor();
var minZoom=self.getMinZoom();
var maxZoom=self.getMaxZoom();
if(mMapZoom<=maxZoom){var factor=maxFactor;
}else if(mMapZoom>=minZoom){factor=minFactor;
}else{factor=minFactor+(maxFactor-minFactor)*(minZoom-mMapZoom)/(minZoom-maxZoom);
};return factor;
};
self.usesCanvas=function(ctx){throw new Error("usesCanvas is abstract in VectorElement");
};
self.draw=function(container,topLevelContainer,ctx,mapLeft,mapTop,mapZoom){mMapZoom=mapZoom;
};
self.clear=function(inDispose){};
self.fixPriority=function(){mPriorityFixed=true;
};
self.refresh=function(){var vectorLayer=self.getVectorLayer();
if(vectorLayer){self.clear();
vectorLayer.onViewChanged();
}};
self.refreshOn=function(){var length=arguments.length;
for(var i=0;
i<length;
++i){self["_modify"+qxp.lang.String.toFirstUp(arguments[i])]=self.refresh;
}};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};mInDispose=true;
self.clear(true);
self.setVectorLayer(null);
superDispose.call(self);
};
if(priority!=null){self.setPriority(priority);
};if(id!=null){self.setId(id);
};if(isPositionFlexible!=null){self.setPositionFlexible(isPositionFlexible);
};self.refreshOn("minFactor","maxFactor","minZoom","maxZoom","visibleMinZoom","visibleMaxZoom");
});
qxp.OO.addProperty({name:"priority",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:0});
qxp.OO.addProperty({name:"id",allowNull:false,writeOnce:true});
qxp.OO.addProperty({name:"positionFlexible",getAlias:"isPositionFlexible",allowNull:false,defaultValue:false});
qxp.OO.addProperty({name:"flexX",allowNull:false,defaultValue:0});
qxp.OO.addProperty({name:"flexY",allowNull:false,defaultValue:0});
qxp.OO.addProperty({name:"dependsOn",allowNull:true,defaultValue:null});
qxp.OO.addProperty({name:"minFactor",type:qxp.constant.Type.NUMBER,defaultValue:1.0,allowNull:false});
qxp.OO.addProperty({name:"maxFactor",type:qxp.constant.Type.NUMBER,defaultValue:1.0,allowNull:false});
qxp.OO.addProperty({name:"minZoom",type:qxp.constant.Type.NUMBER,defaultValue:23,allowNull:false});
qxp.OO.addProperty({name:"maxZoom",type:qxp.constant.Type.NUMBER,defaultValue:0,allowNull:false});
qxp.OO.addProperty({name:"visibleMinZoom",type:qxp.constant.Type.NUMBER,defaultValue:1000,allowNull:false});
qxp.OO.addProperty({name:"visibleMaxZoom",type:qxp.constant.Type.NUMBER,defaultValue:0,allowNull:false});
qxp.OO.addProperty({name:"autoDispose",allowNull:false,defaultValue:true});
qxp.OO.addProperty({name:"vectorLayer",allowNull:true,defaultValue:null});




/* ID: com.ptvag.webcomponent.map.vector.SensitiveArea */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.SensitiveArea",com.ptvag.webcomponent.map.vector.VectorElement,function(x,y,maxZoom,tolerance,priority,id,isPositionFlexible){com.ptvag.webcomponent.map.vector.VectorElement.call(this,priority,id,isPositionFlexible);
var self=this;
var map=com.ptvag.webcomponent.map;
var mExtendedEventInfo;
self.usesCanvas=function(){return false;
};
self.draw=function(container,topLevelContainer,ctx,mapLeft,mapTop,mapZoom){var x=self.getX();
if(x!=null){var suPoint={x:x,y:self.getY()};
var pixCoords=map.CoordUtil.smartUnit2Pixel(suPoint,mapZoom);
self.setRealX(pixCoords.x-mapLeft+self.getFlexX());
self.setRealY(mapTop-pixCoords.y+self.getFlexY());
};self.setMapLeft(mapLeft);
self.setMapTop(mapTop);
self.setMapZoom(mapZoom);
};
self.getSquareDistance=function(evt){mExtendedEventInfo=null;
var tolerance=self.getTolerance();
var attachedElement=self.getAttachedElement();
if(attachedElement!=null){var info=attachedElement.getSquareDistance(evt,tolerance);
mExtendedEventInfo=info.extendedEventInfo;
return info.squareDistance;
};var distanceX=evt.relMouseX-self.getRealX();
var distanceY=evt.relMouseY-self.getRealY();
var squareDistance=distanceX*distanceX+distanceY*distanceY;
if(squareDistance>tolerance*tolerance){return-1;
};return squareDistance;
};
self.getExtendedEventInfo=function(){return mExtendedEventInfo;
};if(x!=null){self.setX(x);
};if(y!=null){self.setY(y);
};if(maxZoom!=null){self.setMaxZoom(maxZoom);
};if(tolerance!=null){self.setTolerance(tolerance);
};self.refreshOn("x","y");
});
qxp.OO.addProperty({name:"x",type:qxp.constant.Type.NUMBER,defaultValue:4355664});
qxp.OO.addProperty({name:"y",type:qxp.constant.Type.NUMBER,defaultValue:5464867});
qxp.OO.addProperty({name:"realX",type:qxp.constant.Type.NUMBER});
qxp.OO.addProperty({name:"realY",type:qxp.constant.Type.NUMBER});
qxp.OO.addProperty({name:"mapLeft",type:qxp.constant.Type.NUMBER});
qxp.OO.addProperty({name:"mapTop",type:qxp.constant.Type.NUMBER});
qxp.OO.addProperty({name:"mapZoom",type:qxp.constant.Type.NUMBER});
qxp.OO.addProperty({name:"maxZoom",type:qxp.constant.Type.NUMBER,allowNull:true});
qxp.OO.addProperty({name:"tolerance",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:7});
qxp.OO.addProperty({name:"attachedElement",type:qxp.constant.Type.OBJECT,allowNull:true});




/* ID: com.ptvag.webcomponent.map.vector.AbstractHoverArea */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.AbstractHoverArea",com.ptvag.webcomponent.map.vector.SensitiveArea,function(x,y,maxZoom,tolerance,priority,id,isPositionFlexible){com.ptvag.webcomponent.map.vector.SensitiveArea.call(this,x,y,maxZoom,tolerance,priority,id,isPositionFlexible);
var self=this;
self.onHover=function(evt){};
self.onUnhover=function(){};
self.testUnhover=function(evt){return(self.getSquareDistance(evt)<0);
};
});
qxp.OO.addProperty({name:"magnetic",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:false,getAlias:"isMagnetic"});




/* ID: com.ptvag.webcomponent.map.animator.SimpleAnimator */
qxp.OO.defineClass("com.ptvag.webcomponent.map.animator.SimpleAnimator",com.ptvag.webcomponent.map.animator.Animator,function(){com.ptvag.webcomponent.map.animator.Animator.call(this);
var self=this;
self.doAnimation=function(animationTime){var map=self.getMap();
map.setVisibleCenter(map.getCenter());
map.setVisibleZoom(map.getZoom());
return true;
};
});




/* ID: com.ptvag.webcomponent.map.vector.ClickArea */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.ClickArea",com.ptvag.webcomponent.map.vector.SensitiveArea,function(x,y,maxZoom,tolerance,handler,priority,id,isPositionFlexible){com.ptvag.webcomponent.map.vector.SensitiveArea.call(this,x,y,maxZoom,tolerance,priority,id,isPositionFlexible);
var self=this;
var map=com.ptvag.webcomponent.map;
var superDraw=self.draw;
self.draw=function(container,topLevelContainer,ctx,mapLeft,mapTop,mapZoom){superDraw(container,topLevelContainer,ctx,mapLeft,mapTop,mapZoom);
};
var superGetSquareDistance=self.getSquareDistance;
self.getSquareDistance=function(evt){if(self.getX()==null&&self.getAttachedElement()==null){return 10000*10000;
};return superGetSquareDistance(evt);
};
self.onClick=function(evt){var pixCoords={x:self.getMapLeft()+evt.relMouseX,y:self.getMapTop()-evt.relMouseY};
var suCoords=map.CoordUtil.pixel2SmartUnit(pixCoords,self.getMapZoom());
var handler=self.getHandler();
if(handler!=null){evt.clickX=suCoords.x;
evt.clickY=suCoords.y;
evt.areaX=self.getX();
evt.areaY=self.getY();
evt.id=self.getId();
handler(evt);
}};
self.setX(x);
self.setY(y);
self.setHandler(handler);
});
qxp.OO.addProperty({name:"handler",type:qxp.constant.Type.FUNCTION,allowNull:true,defaultValue:null});




/* ID: com.ptvag.webcomponent.map.vector.RightClickArea */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.RightClickArea",com.ptvag.webcomponent.map.vector.ClickArea,function(x,y,maxZoom,tolerance,handler,priority,id,isPositionFlexible){com.ptvag.webcomponent.map.vector.ClickArea.call(this,x,y,maxZoom,tolerance,handler,priority,id,isPositionFlexible);
});




/* ID: com.ptvag.webcomponent.map.layer.Layer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.Layer",qxp.core.Target,function(){qxp.core.Target.call(this);
var self=this;
var map=com.ptvag.webcomponent.map;
var mInitialized=false;
self._checkNeedsOpacityHack=function(propValue){if(propValue&&qxp.sys.Client.getInstance().isMshtml()){return true;
};return false;
};
self._modifyEnabled=function(propValue){var parentElem=self.getParentElement();
if(parentElem){parentElem.style.display=propValue?"":"none";
};if(propValue&&self.isInitialized()){self.onViewChanged({zoomChanged:true,centerChanged:true,widthChanged:true,heightChanged:true});
}};
self._modifyParentElement=function(propValue){if(propValue&&!self.isEnabled()){propValue.style.display="none";
}};
self.init=function(){mInitialized=true;
};
self.isInitialized=function(){return mInitialized;
};
self.onViewChanged=function(evt){};
self.onMouseDown=function(evt){return false;
};
self.onMouseUp=function(evt){return false;
};
self.onMouseClick=function(evt){return self.getSwallowClickEvents();
};
self.onRightMouseClick=function(evt){return self.getSwallowClickEvents();
};
self.onMouseDblClick=function(evt){return false;
};
self.onMouseMove=function(evt){return false;
};
self.onMouseOut=function(evt){return false;
};
self.onMouseWheel=function(evt){return false;
};
self.onMouseHover=function(evt){return self.getSwallowHoverEvents();
};
self.onKeyDown=function(evt){return false;
};
self.onSelectStart=function(evt){return false;
};
self.isNoLayerActive=function(){return self.getMap().getController().getActiveLayer()==null;
};
self.print=function(ctx,htmlContainer,htmlBackground){if(self.getIncludeInPrint()&&self.isEnabled()&&self.isInitialized()){self.doPrint(ctx,htmlContainer,htmlBackground);
}};
self.doPrint=function(ctx,htmlContainer,htmlBackground){};
});
qxp.OO.addProperty({name:"name",type:qxp.constant.Type.STRING,allowNull:true});
qxp.OO.addProperty({name:"map",type:qxp.constant.Type.OBJECT,allowNull:false});
qxp.OO.addProperty({name:"parentElement",type:qxp.constant.Type.OBJECT,allowNull:false});
qxp.OO.addProperty({name:"enabled",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:true,getAlias:"isEnabled"});
qxp.OO.addProperty({name:"swallowHoverEvents",type:qxp.constant.Type.BOOLEAN,defaultValue:false});
qxp.OO.addProperty({name:"swallowClickEvents",type:qxp.constant.Type.BOOLEAN,defaultValue:false});
qxp.OO.addProperty({name:"isRelative",type:qxp.constant.Type.BOOLEAN,defaultValue:false,getAlias:"isRelative"});
qxp.OO.addProperty({name:"needsOpacityHack",type:qxp.constant.Type.BOOLEAN,defaultValue:false,getAlias:"needsOpacityHack"});
qxp.OO.addProperty({name:"includeInPrint",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:false});




/* ID: com.ptvag.webcomponent.map.layer.AbstractStaticAreaLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.AbstractStaticAreaLayer",com.ptvag.webcomponent.map.layer.Layer,function(){com.ptvag.webcomponent.map.layer.Layer.call(this);
var self=this;
var map=com.ptvag.webcomponent.map;
self._modifyAreaElement=function(){self.positionArea();
self._modifyAreaOpacity(self.getAreaOpacity());
};
self._modifyComputedAreaLeft=function(propValue){if(self.needsOpacityHack()){self.getAreaElement().style.left=map.Map.OPACITY_HACK_SIZE/2+"px";
}else{self.getParentElement().style.left=propValue+"px";
}};
self._modifyComputedAreaTop=function(propValue){if(self.needsOpacityHack()){self.getAreaElement().style.top=map.Map.OPACITY_HACK_SIZE/2+"px";
}else{self.getParentElement().style.top=propValue+"px";
}};
self._modifyComputedAreaWidth=function(propValue){var width=map.MapUtil.isBorderBoxSizingActive()?propValue:propValue-2*self.getAreaBorderWidth();
if(self.getParentElement()!=self.getAreaElement()&&!self.needsOpacityHack()){self.getParentElement().style.width=propValue+"px";
};self.getAreaElement().style.width=width+"px";
};
self._modifyComputedAreaHeight=function(propValue){var height=map.MapUtil.isBorderBoxSizingActive()?propValue:propValue-2*self.getAreaBorderWidth();
if(self.getParentElement()!=self.getAreaElement()&&!self.needsOpacityHack()){self.getParentElement().style.height=propValue+"px";
};self.getAreaElement().style.height=height+"px";
};
self._modifyAreaOpacity=function(propValue){if(self.needsOpacityHack()){var parentElement=self.getParentElement();
if(parentElement){map.MapUtil.setElementOpacity(parentElement,propValue);
}}else{var areaElement=self.getAreaElement();
if(areaElement){map.MapUtil.setElementOpacity(areaElement,propValue);
}}};
self.onViewChanged=function(evt){if((evt.widthChanged||evt.heightChanged)&&(self.getAreaRight()!=null||self.getAreaBottom()!=null||self.getAreaWidthIsRelative()||self.getAreaHeightIsRelative())){self.positionArea();
}};
var areaModifier=function(){self.positionArea();
return true;
};self._modifyAreaLeft=areaModifier;
self._modifyAreaRight=areaModifier;
self._modifyAreaTop=areaModifier;
self._modifyAreaBottom=areaModifier;
self._modifyAreaWidth=areaModifier;
self._modifyAreaHeight=areaModifier;
self.positionArea=function(){if(self.getAreaElement()==null){return;
};var mapWidth=self.getMap().getWidth();
var mapHeight=self.getMap().getHeight();
var areaElem=self.getAreaElement();
var areaLeft=self.getAreaLeft();
var areaRight=self.getAreaRight();
var areaTop=self.getAreaTop();
var areaBottom=self.getAreaBottom();
var areaWidth=(areaLeft!=null&&areaRight!=null)?(mapWidth-areaLeft-areaRight):(self.getAreaWidthIsRelative()?parseInt(self.getAreaWidth()*mapWidth):self.getAreaWidth());
var areaHeight=(areaTop!=null&&areaBottom!=null)?(mapHeight-areaTop-areaBottom):(self.getAreaHeightIsRelative()?parseInt(self.getAreaHeight()*mapHeight):self.getAreaHeight());
if(areaLeft==null){areaLeft=mapWidth-areaWidth-areaRight;
};if(areaTop==null){areaTop=mapHeight-areaHeight-areaBottom;
};self.setComputedAreaLeft(areaLeft);
self.setComputedAreaTop(areaTop);
self.setComputedAreaWidth(areaWidth);
self.setComputedAreaHeight(areaHeight);
};
self.isPositionInArea=function(x,y){var left=self.getComputedAreaLeft();
var top=self.getComputedAreaTop();
return(x>=left&&y>=top&&x<left+self.getComputedAreaWidth()&&y<top+self.getComputedAreaHeight());
};
self.onMouseMove=function(evt){if(self.getUseBlending()){var left=self.getComputedAreaLeft();
var top=self.getComputedAreaTop();
var width=self.getComputedAreaWidth();
var height=self.getComputedAreaHeight();
var blendingWidth=self.getBlendingWidth();
if(self.isNoLayerActive()&&evt.relMouseX>=left-blendingWidth&&evt.relMouseX<=left+width+blendingWidth&&evt.relMouseY>=top-blendingWidth&&evt.relMouseY<=top+height+blendingWidth){var mapWidth=self.getMap().getWidth();
var mapHeight=self.getMap().getHeight();
var blendFactorX=1;
if(evt.relMouseX<left){blendFactorX=1-(left-evt.relMouseX)/Math.min(left,blendingWidth);
}else if(evt.relMouseX>left+width){var right=mapWidth-left-width;
blendFactorX=1-(evt.relMouseX-left-width)/Math.min(right,blendingWidth);
};var blendFactorY=1;
if(evt.relMouseY<top){blendFactorY=1-(top-evt.relMouseY)/Math.min(top,blendingWidth);
}else if(evt.relMouseY>top+height){var bottom=mapHeight-top-height;
blendFactorY=1-(evt.relMouseY-top-height)/Math.min(bottom,blendingWidth);
};var blendFactor=Math.min(blendFactorX,blendFactorY);
var transOut=self.getBlendingOpacityOut();
var transOver=self.getBlendingOpacityOver();
self.setAreaOpacity(transOut+(transOver-transOut)*blendFactor);
}else{self.setAreaOpacity(self.getBlendingOpacityOut());
}};return false;
};
self.onMouseOut=function(evt){if(self.getUseBlending()){self.setAreaOpacity(self.getBlendingOpacityOut());
};return false;
};self.onMouseHover=function(evt){return self.getSwallowHoverEvents()&&self.isPositionInArea(evt.relMouseX,evt.relMouseY);
};
self.onMouseClick=function(evt){return self.getSwallowClickEvents()&&self.isPositionInArea(evt.relMouseX,evt.relMouseY);
};
self.onRightMouseClick=function(evt){return self.getSwallowClickEvents()&&self.isPositionInArea(evt.relMouseX,evt.relMouseY);
};
self.onMouseDblClick=function(evt){return self.isPositionInArea(evt.relMouseX,evt.relMouseY);
};
self.doPrint=function(ctx,htmlContainer,htmlBackground){ctx.setClipRect(self.getComputedAreaLeft(),self.getComputedAreaTop(),self.getComputedAreaWidth(),self.getComputedAreaHeight());
ctx.globalAlpha=self.getAreaOpacity();
self.doPrintStaticArea(ctx,htmlContainer,htmlBackground);
ctx.globalAlpha=1;
ctx.clearClipRect();
};
self.doPrintStaticArea=function(ctx,htmlContainer,htmlBackground){};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};self.forceAreaElement(null);
superDispose.call(self);
};
});
qxp.OO.addProperty({name:"areaElement",type:qxp.constant.Type.OBJECT});
qxp.OO.addProperty({name:"areaBorderWidth",type:qxp.constant.Type.NUMBER,defaultValue:0});
qxp.OO.addProperty({name:"areaWidth",type:qxp.constant.Type.NUMBER});
qxp.OO.addProperty({name:"areaWidthIsRelative",type:qxp.constant.Type.BOOLEAN,defaultValue:false,allowNull:false});
qxp.OO.addProperty({name:"areaHeight",type:qxp.constant.Type.NUMBER});
qxp.OO.addProperty({name:"areaHeightIsRelative",type:qxp.constant.Type.BOOLEAN,defaultValue:false,allowNull:false});
qxp.OO.addProperty({name:"areaLeft",type:qxp.constant.Type.NUMBER});
qxp.OO.addProperty({name:"areaRight",type:qxp.constant.Type.NUMBER});
qxp.OO.addProperty({name:"areaTop",type:qxp.constant.Type.NUMBER});
qxp.OO.addProperty({name:"areaBottom",type:qxp.constant.Type.NUMBER});
qxp.OO.addProperty({name:"computedAreaLeft",type:qxp.constant.Type.NUMBER});
qxp.OO.addProperty({name:"computedAreaTop",type:qxp.constant.Type.NUMBER});
qxp.OO.addProperty({name:"computedAreaWidth",type:qxp.constant.Type.NUMBER});
qxp.OO.addProperty({name:"computedAreaHeight",type:qxp.constant.Type.NUMBER});
qxp.OO.addProperty({name:"useBlending",type:qxp.constant.Type.BOOLEAN,defaultValue:false});
qxp.OO.addProperty({name:"blendingWidth",type:qxp.constant.Type.NUMBER,defaultValue:25});
qxp.OO.addProperty({name:"blendingOpacityOver",type:qxp.constant.Type.NUMBER,defaultValue:0.8});
qxp.OO.addProperty({name:"blendingOpacityOut",type:qxp.constant.Type.NUMBER,defaultValue:0.3});
qxp.OO.addProperty({name:"areaOpacity",type:qxp.constant.Type.NUMBER,defaultValue:0.3});




/* ID: com.ptvag.webcomponent.map.layer.ImageLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.ImageLayer",com.ptvag.webcomponent.map.layer.AbstractStaticAreaLayer,function(imgUrl){com.ptvag.webcomponent.map.layer.AbstractStaticAreaLayer.call(this);
var self=this;
var map=com.ptvag.webcomponent.map;
var mImgElem;
var superInit=self.init;
self.init=function(){superInit.apply(self,arguments);
var areaElem=self.getParentElement();
areaElem.style.fontSize="1px";
self.setAreaElement(areaElem);
mImgElem=document.createElement("img");
mImgElem.style.visibility="hidden";
areaElem.appendChild(mImgElem);
map.ImageLoader.loadImage(mImgElem,imgUrl,function(elem,url,exc){if(exc==null&&!self.getDisposed()){var width=mImgElem.offsetWidth;
var height=mImgElem.offsetHeight;
self.setAreaWidth(width);
self.setAreaHeight(height);
self.positionArea();
mImgElem.style.visibility="";
}},1000);
};
self.doPrintStaticArea=function(ctx,htmlContainer,htmlBackground){if(mImgElem.style.visibility!="hidden"){var width=self.getComputedAreaWidth();
var height=self.getComputedAreaHeight();
ctx.drawImage(mImgElem,0,0,width,height,self.getComputedAreaLeft(),self.getComputedAreaTop(),width,height);
}};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};mImgElem=null;
superDispose.call(self);
};
});
qxp.OO.changeProperty({name:"areaOpacity",type:qxp.constant.Type.NUMBER,defaultValue:0.5});




/* ID: com.ptvag.webcomponent.map.vector.AbstractCircle */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.AbstractCircle",com.ptvag.webcomponent.map.vector.VectorElement,function(x,y,color,priority,id,isPositionFlexible){com.ptvag.webcomponent.map.vector.VectorElement.call(this,priority,id,isPositionFlexible);
var self=this;
var map=com.ptvag.webcomponent.map;
self.calculatePixelRadius=function(mapLeft,mapTop,mapZoom){throw new Error("calculatePixelRadius is abstract in AbstractCircle");
};
self.usesCanvas=function(){return true;
};
var superDraw=self.draw;
self.draw=function(container,topLevelContainer,ctx,mapLeft,mapTop,mapZoom){superDraw.apply(self,arguments);
var suPoint={x:self.getX(),y:self.getY()};
var pixCoords=map.CoordUtil.smartUnit2Pixel(suPoint,mapZoom);
var realX=pixCoords.x-mapLeft+self.getFlexX();
var realY=mapTop-pixCoords.y+self.getFlexY();
var radius=self.calculatePixelRadius(mapLeft,mapTop,mapZoom);
ctx.fillStyle=self.getColor();
ctx.beginPath();
ctx.moveTo(realX,realY);
ctx.arc(realX,realY,radius*self.getZoomFactor(),0,2*Math.PI,false);
ctx.fill();
};
if(x!=null){self.setX(x);
};if(y!=null){self.setY(y);
};if(color!=null){self.setColor(color);
};self.refreshOn("x","y","color");
});
qxp.OO.addProperty({name:"x",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:4355664});
qxp.OO.addProperty({name:"y",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:5464867});
qxp.OO.addProperty({name:"color",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:"rgba(255,0,0,0.7)"});




/* ID: com.ptvag.webcomponent.map.vector.MeterCircle */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.MeterCircle",com.ptvag.webcomponent.map.vector.AbstractCircle,function(x,y,color,meterSize,priority,id,isPositionFlexible){com.ptvag.webcomponent.map.vector.AbstractCircle.call(this,x,y,color,priority,id,isPositionFlexible);
var self=this;
var map=com.ptvag.webcomponent.map;
self.calculatePixelRadius=function(mapLeft,mapTop,mapZoom){var CoordUtil=map.CoordUtil;
var suPerPixel=CoordUtil.getSmartUnitsPerPixel(mapZoom);
var point1={x:self.getX(),y:self.getY()};
var point2={x:point1.x+suPerPixel,y:point1.y};
var metersPerPixel=CoordUtil.distanceOfSmartUnitPoints(point1,point2);
return self.getMeterSize()/metersPerPixel/2;
};
if(meterSize!=null){self.setMeterSize(meterSize);
};self.refreshOn("meterSize");
});
qxp.OO.addProperty({name:"meterSize",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:2000});




/* ID: com.ptvag.webcomponent.map.VectorApiAdapter */
function ConvertColor(numericColor){var stringColor="00000"+numericColor.toString(16);
return "#"+stringColor.substring(stringColor.length-6);
};function MapEngine_SetServer(System){throw new Error("MapEngine_SetServer is not supported");
};
function MapEngine_SetMapProfile(Profile){throw new Error("MapEngine_SetMapProfile is not supported");
};
function MapEngine_Initialize(Interactive){if(window._globalMap==null){var parentElem=document.getElementById("ptvmap");
try{window._globalMap=new com.ptvag.webcomponent.map.Map(parentElem);
if(window.OnInitialized!=null){window.OnInitialized(0);
}}catch(exc){qxp.dev.log.Logger.ROOT_LOGGER.error("Showing map failed",null,exc);
if(window.OnInitialized!=null){window.OnInitialized(1);
}}}};
function MapEngine_Shutdown(){if(window._globalMap!=null){window._globalMap.dispose();
window._globalMap=null;
}};
function MapEngine_SetSize(width,height){var parentElem=document.getElementById("ptvmap");
parentElem.style.width=width+"px";
parentElem.style.height=height+"px";
window._globalMap.startLoggingAction("vectorapi:SetSize");
try{window._globalMap.updateSize();
}finally{window._globalMap.endLoggingAction();
}};function MapEngine_UseMiles(Miles){window._globalMap.getLayer("scale").setUseMiles(Miles);
};
function MapEngine_SetEventDelay(EventDelay){throw new Error("MapEngine_SetEventDelay is not supported");
};
function MapEngine_SetCenter(X,Y){var geoPoint={x:X,y:Y};
var suPoint=com.ptvag.webcomponent.map.CoordUtil.geoDecimal2SmartUnit(geoPoint);
window._globalMap.startLoggingAction("vectorapi:SetCenter");
try{window._globalMap.setCenter(suPoint);
}finally{window._globalMap.endLoggingAction();
}};
function MapEngine_GetCenterX(){var suPoint=window._globalMap.getCenter();
var geoPoint=com.ptvag.webcomponent.map.CoordUtil.smartUnit2GeoDecimal(suPoint);
return Math.round(geoPoint.x);
};
function MapEngine_GetCenterY(){var suPoint=window._globalMap.getCenter();
var geoPoint=com.ptvag.webcomponent.map.CoordUtil.smartUnit2GeoDecimal(suPoint);
return Math.round(geoPoint.y);
};
function MapEngine_SetScale(Scale){window._globalMap.startLoggingAction("vectorapi:SetScale");
try{window._globalMap.setZoomInSmartUnitsPerPixel(Scale/100);
}finally{window._globalMap.endLoggingAction();
}};
function MapEngine_GetScale(){return Math.round(window._globalMap.getZoomInSmartUnitsPerPixel()*100);
};
function MapEngine_SetOrientation(Orientation){throw new Error("MapEngine_SetOrientation is not supported");
};
function MapEngine_GetOrientation(){return 0;
};
function MapEngine_SetMapRect(left,top,right,bottom){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
var startSuPoint=CoordUtil.geoDecimal2SmartUnit({x:left,y:top});
var endSuPoint=CoordUtil.geoDecimal2SmartUnit({x:right,y:bottom});
window._globalMap.startLoggingAction("vectorapi:SetMapRect");
try{window._globalMap.setRect(startSuPoint.x,startSuPoint.y,endSuPoint.x,endSuPoint.y);
}finally{window._globalMap.endLoggingAction();
}};
function MapEngine_GetMapRect(){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
var suRect=window._globalMap.getRect();
var startGeoPoint=CoordUtil.smartUnit2GeoDecimal({x:suRect.left,y:suRect.top});
var endGeoPoint=CoordUtil.smartUnit2GeoDecimal({x:suRect.right,y:suRect.bottom});
return Math.round(startGeoPoint.x)+","+Math.round(endGeoPoint.y)+","+Math.round(endGeoPoint.x)+","+Math.round(startGeoPoint.y);
};
function MapEngine_SetTotalRect(left,top,right,bottom){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
var startSuPoint=CoordUtil.geoDecimal2SmartUnit({x:left,y:top});
var endSuPoint=CoordUtil.geoDecimal2SmartUnit({x:right,y:bottom});
window._globalMap.startLoggingAction("vectorapi:SetTotalRect");
try{window._globalMap.setClipRect(startSuPoint.x,startSuPoint.y,endSuPoint.x,endSuPoint.y);
}finally{window._globalMap.endLoggingAction();
}};
function MapEngine_GetTotalRect(){var suRect=window._globalMap.getClipRect();
var startGeoPoint=CoordUtil.smartUnit2GeoDecimal({x:suRect.left,y:suRect.top});
var endGeoPoint=CoordUtil.smartUnit2GeoDecimal({x:suRect.right,y:suRect.bottom});
return Math.round(startGeoPoint.x)+","+Math.round(endGeoPoint.y)+","+Math.round(endGeoPoint.x)+","+Math.round(startGeoPoint.y);
};
function MapEngine_MoveMap(X,Y){window._globalMap.startLoggingAction("vectorapi:MoveMap");
try{window._globalMap.moveCenterInPercent(X/200,Y/200);
}finally{window._globalMap.endLoggingAction();
}};
function MapEngine_ZoomMap(Factor){var zoomInSu=window._globalMap.getZoomInSmartUnitsPerPixel();
var newZoomInSu;
if(Factor>0){newZoomInSu=zoomInSu/Factor;
}else{newZoomInSu=zoomInSu*Math.abs(Factor);
};window._globalMap.startLoggingAction("vectorapi:ZoomMap");
try{window._globalMap.setZoomInSmartUnitsPerPixel(newZoomInSu);
}finally{window._globalMap.endLoggingAction();
}};
function MapEngine_ShowCircle(ID,X,Y,Color,PixelSize,Priority){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
var suPoint=CoordUtil.geoDecimal2SmartUnit({x:X,y:Y});
window._globalMap.getLayer("vector").showCircle(suPoint.x,suPoint.y,ConvertColor(Color),(PixelSize==0?null:PixelSize),Priority,"vectorapiadapter_circle_"+ID);
};
function MapEngine_HideCircle(ID){window._globalMap.getLayer("vector").hideElement("vectorapiadapter_circle_"+ID);
};
function MapEngine_ShowText(ID,X,Y,Color,PixelSize,Alignment,Text,Priority){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
var suPoint=CoordUtil.geoDecimal2SmartUnit({x:X,y:Y});
window._globalMap.getLayer("vector").showText(suPoint.x,suPoint.y,ConvertColor(Color),(PixelSize==0?null:PixelSize),Alignment,Text,Priority,"vectorapiadapter_text_"+ID);
};
function MapEngine_HideText(ID){window._globalMap.getLayer("vector").hideElement("vectorapiadapter_text_"+ID);
};
function MapEngine_ShowLine(ID,Color,PixelSize,Coordinates,Priority){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
var newCoordinates=Coordinates.split(",");
var suPoint;
for(var i=0;
i<newCoordinates.length;
i+=2){suPoint=CoordUtil.geoDecimal2SmartUnit({x:parseFloat(newCoordinates[i]),y:parseFloat(newCoordinates[i+1])});
newCoordinates[i]=suPoint.x;
newCoordinates[i+1]=suPoint.y;
};window._globalMap.getLayer("vector").showLine(ConvertColor(Color),(PixelSize==0?null:(PixelSize<0?-PixelSize:PixelSize)),newCoordinates,Priority,"vectorapiadapter_line_"+ID);
};
function MapEngine_HideLine(ID){window._globalMap.getLayer("vector").hideElement("vectorapiadapter_line_"+ID);
};
function MapEngine_SetPOI(ID,X,Y,Source,SourceType,Alignment,Transparency,Priority){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
var suPoint=CoordUtil.geoDecimal2SmartUnit({x:X,y:Y});
window._globalMap.getLayer("vector").showImageMarker(suPoint.x,suPoint.y,Source,Alignment,Priority,"vectorapiadapter_poi_"+ID);
};
function MapEngine_DelPOI(ID){window._globalMap.getLayer("vector").hideElement("vectorapiadapter_poi_"+ID);
};
function MapEngine_ShowPOIs(bShow){};
function MapEngine_ShowHint(X,Y,MaxScale,Tolerance,Text){var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
var suPoint=CoordUtil.geoDecimal2SmartUnit({x:X,y:Y});
return window._globalMap.getLayer("vector").showTooltip(suPoint.x,suPoint.y,MaxScale,Tolerance,Text,null,null);
};
function MapEngine_HideHint(ID){window._globalMap.getLayer("vector").hideElement(ID);
};
function MapEngine_HideAllHints(){throw new Error("MapEngine_HideAllHints is not supported");
};
function MapEngine_Helicopter(){throw new Error("MapEngine_Helicopter is not supported");
};
function MapEngine_Refresh(){};
function MapEngine_CenterMap(PoiList,PoiType,CenterIfVisible,KeepScale,Animate){if(PoiType!=0){throw new Error("PoiType must be zero");
};var vectorLayer=window._globalMap.getLayer("vector");
var poiIdArr=PoiList.split(/\s+/);
var poiArr=[];
for(var i=0;
i<poiIdArr.length;
i++){var circle=vectorLayer.getElement("vectorapiadapter_circle_"+poiIdArr[i]);
if(circle==null){throw new Error("There is no circle width ID '"+poiIdArr[i]+"' (alias 'vectorapiadapter_circle_"+poiIdArr[i]+"')");
};poiArr.push(circle);
};window._globalMap.setViewToPoints(poiArr,!CenterIfVisible,KeepScale);
};
function MapEngine_AnimateMapInteractions(Animate){window._globalMap.setAnimate(Animate);
};
function MapEngine_OverviewMap(Show){window._globalMap.getLayer("overview").setEnabled(Show);
};
function MapEngine_SetVisibleMapSection(X,Y,Scale,Orientation){window._globalMap.startLoggingAction("vectorapi:SetVisibleMapSection");
try{MapEngine_SetScale(Scale);
MapEngine_SetCenter(X,Y);
}finally{window._globalMap.endLoggingAction();
}};
function MapEngine_ShowUserInterfaceElement(Element,Show){throw new Error("MapEngine_ShowUserInterfaceElement is not supported");
};
function MapEngine_SetToolbarBitmap(Element,Bitmap){throw new Error("MapEngine_SetToolbarBitmap is not supported");
};
function MapEngine_SetSMOProvider(Name,ProviderType,ProviderUrl,IconUrl,ExtendedParams){throw new Error("MapEngine_SetSMOProvider is not supported");
};




/* ID: com.ptvag.webcomponent.map.ServerDrawnObjectManager */
qxp.OO.defineClass("com.ptvag.webcomponent.map.ServerDrawnObjectManager",qxp.core.Target,function(requestBuilder,vectorLayer){qxp.core.Target.call(this);
var self=this;
var map=com.ptvag.webcomponent.map;
var clazz=map.ServerDrawnObjectManager;
var mStaticPOIs=[];
var mAdditionalPOIs={};
var CLICKAREA_PREFIX="mapapi_staticpoi_clickarea_";
var HOVERAREA_PREFIX="mapapi_staticpoi_hoverarea_";
var TOOLTIP_PREFIX="mapapi_staticpoi_tooltip_";
var CLICKAREA_PREFIX_LENGTH=CLICKAREA_PREFIX.length;
var HOVERAREA_PREFIX_LENGTH=HOVERAREA_PREFIX.length;
self.getRequestBuilder=function(){return requestBuilder;
};var defaultStaticPOIFormatter=function(poiText){var delimiter=self.getStaticPOIDelimiter();
if(delimiter==null){var components=[poiText];
}else{components=poiText.split(delimiter);
};return "<div style='font-family:Verdana,Arial,sans-serif;font-size:11px'>"+"<div style='font-weight:bold;padding-bottom:4px'>"+(components.length>1?map.MapUtil.escapeHTML(components[1]):map.MapUtil.escapeHTML(components[0]))+"</div><div>"+(components.length>2?map.MapUtil.escapeHTML(components[2]):"")+"</div></div>";
};
self.setStaticPOIFormatter(defaultStaticPOIFormatter);
var clickOnPOI=function(evt){var id=evt.id;
var indexPos=id.lastIndexOf("_")+1;
var index=parseInt(id.substring(indexPos));
if(indexPos!=CLICKAREA_PREFIX_LENGTH){id=id.substring(CLICKAREA_PREFIX_LENGTH,indexPos-1);
var poiArray=mAdditionalPOIs[id];
}else{poiArray=mStaticPOIs;
};self.createDispatchDataEvent(clazz.STATIC_POI_CLICKED,poiArray[index]);
};
var hoverOverPOI=function(evt){var id=evt.id;
var indexPos=id.lastIndexOf("_")+1;
var index=parseInt(id.substring(indexPos));
if(indexPos!=HOVERAREA_PREFIX_LENGTH){id=id.substring(HOVERAREA_PREFIX_LENGTH,indexPos-1);
var poiArray=mAdditionalPOIs[id];
}else{poiArray=mStaticPOIs;
};self.createDispatchDataEvent(clazz.STATIC_POI_HOVERED,poiArray[index]);
};
var createClickAreas=function(id){var poiArray=(id==null?mStaticPOIs:mAdditionalPOIs[id]);
if(poiArray==null){return;
};var idString=(id==null?"":id+"_");
if(!vectorLayer.elementExists(CLICKAREA_PREFIX+idString+"0")){for(var i=0;
i<poiArray.length;
++i){var clickArea=new map.vector.ClickArea(poiArray[i].x,poiArray[i].y,null,self.getClickTolerance(),clickOnPOI,null,CLICKAREA_PREFIX+idString+i);
clickArea.setFlexX(poiArray[i].flexX);
clickArea.setFlexY(poiArray[i].flexY);
vectorLayer.addElement(clickArea);
}}};
var createHoverAreas=function(id){var poiArray=(id==null?mStaticPOIs:mAdditionalPOIs[id]);
if(poiArray==null){return;
};var idString=(id==null?"":id+"_");
if(!vectorLayer.elementExists(HOVERAREA_PREFIX+idString+"0")){for(var i=0;
i<poiArray.length;
++i){var hoverArea=new map.vector.HoverArea(poiArray[i].x,poiArray[i].y,null,self.getHoverTolerance(),hoverOverPOI,null,null,HOVERAREA_PREFIX+idString+i);
hoverArea.setFlexX(poiArray[i].flexX);
hoverArea.setFlexY(poiArray[i].flexY);
vectorLayer.addElement(hoverArea);
}}};
var createTooltips=function(id){var poiArray=(id==null?mStaticPOIs:mAdditionalPOIs[id]);
if(poiArray==null){return;
};var idString=(id==null?"":id+"_");
if(!vectorLayer.elementExists(TOOLTIP_PREFIX+idString+"0")){for(var i=0;
i<poiArray.length;
++i){var formattedText;
var formatter=self.getStaticPOIFormatter();
formattedText=formatter(poiArray[i].description);
var tooltip=new map.vector.Tooltip(poiArray[i].x,poiArray[i].y,null,self.getHoverTolerance(),formattedText,null,null,TOOLTIP_PREFIX+idString+i);
tooltip.setFlexX(poiArray[i].flexX);
tooltip.setFlexY(poiArray[i].flexY);
vectorLayer.addElement(tooltip);
}}};
var removeElements=function(prefix,id){var poiArray=(id==null?mStaticPOIs:mAdditionalPOIs[id]);
if(poiArray==null){return;
};var prefixString=(id==null?prefix:prefix+id+"_");
if(vectorLayer.elementExists(prefixString+"0")){for(var i=0;
i<poiArray.length;
++i){vectorLayer.hideElement(prefixString+i);
}}};
var handleNewPOIs=function(pois,id){var alreadyInBulkMode=vectorLayer.inBulkMode();
if(!alreadyInBulkMode){vectorLayer.startBulkMode();
};try{removeElements(CLICKAREA_PREFIX,id);
removeElements(HOVERAREA_PREFIX,id);
removeElements(TOOLTIP_PREFIX,id);
if(id==null){mStaticPOIs=(pois==null?[]:pois);
}else{if(pois==null){delete mAdditionalPOIs[id];
}else{mAdditionalPOIs[id]=pois;
}};if(self.hasEventListeners(clazz.STATIC_POI_CLICKED)){createClickAreas(id);
};if(self.hasEventListeners(clazz.STATIC_POI_HOVERED)){createHoverAreas(id);
};if(self.getDefaultStaticPOITooltips()){createTooltips(id);
}}finally{if(!alreadyInBulkMode){vectorLayer.endBulkMode();
}}};
self.setStaticPOIs=function(pois,id){if(pois!=null){for(var i=0;
i<pois.length;
++i){var suPoint=map.CoordUtil.mercator2SmartUnit({x:pois[i].x,y:pois[i].y});
pois[i].x=suPoint.x;
pois[i].y=suPoint.y;
}};handleNewPOIs(pois,id);
var poiArrays=[];
if(mStaticPOIs.length>0){poiArrays.push(mStaticPOIs);
};for(var id in mAdditionalPOIs){var poiArray=mAdditionalPOIs[id];
if(poiArray.length>0){poiArrays.push(poiArray);
}};var poiArrayCount=poiArrays.length;
if(poiArrayCount==0){poiArray=poiArrays;
}else if(poiArrayCount==1){poiArray=poiArrays[0];
}else{poiArray=[];
for(i=0;
i<poiArrayCount;
++i){var poiArrayToCopy=poiArrays[i];
var lengthToCopy=poiArrayToCopy.length;
for(var j=0;
j<lengthToCopy;
++j){poiArray.push(poiArrayToCopy[j]);
}}};self.createDispatchDataEvent(clazz.STATIC_POIS_AVAILABLE,poiArray);
};
self.addPOICategory=function(provider,category){requestBuilder.addPOICategory(provider,category);
};
self.removePOICategory=function(provider,category){requestBuilder.removePOICategory(provider,category);
};
self.addSMOId=function(smoId){requestBuilder.addSMOId(smoId);
};
self.removeSMOId=function(smoId){requestBuilder.removeSMOId(smoId);
};
self._modifyDefaultStaticPOITooltips=function(propValue){if(propValue){createTooltips();
for(var id in mAdditionalPOIs){createTooltips(id);
}}else{removeElements(TOOLTIP_PREFIX);
for(var id in mAdditionalPOIs){removeElements(TOOLTIP_PREFIX,id);
}}};
var superAddEventListener=self.addEventListener;
self.addEventListener=function(vType,vFunction,vObject){superAddEventListener.call(self,vType,vFunction,vObject);
if(self.hasEventListeners(clazz.STATIC_POI_CLICKED)){createClickAreas();
for(var id in mAdditionalPOIs){createClickAreas(id);
}};if(self.hasEventListeners(clazz.STATIC_POI_HOVERED)){createHoverAreas();
for(var id in mAdditionalPOIs){createHoverAreas(id);
}}};
var superRemoveEventListener=self.removeEventListener;
self.removeEventListener=function(vType,vFunction,vObject){superRemoveEventListener.call(self,vType,vFunction,vObject);
if(!self.hasEventListeners(clazz.STATIC_POI_CLICKED)){removeElements(CLICKAREA_PREFIX);
for(var id in mAdditionalPOIs){removeElements(CLICKAREA_PREFIX,id);
}};if(!self.hasEventListeners(clazz.STATIC_POI_HOVERED)){removeElements(HOVERAREA_PREFIX);
for(var id in mAdditionalPOIs){removeElements(HOVERAREA_PREFIX,id);
}}};
});
qxp.Class.STATIC_POIS_AVAILABLE="staticPOIsAvailable";
qxp.Class.STATIC_POI_CLICKED="staticPOIClicked";
qxp.Class.STATIC_POI_HOVERED="staticPOIHovered";
qxp.OO.addProperty({name:"defaultStaticPOITooltips",type:qxp.constant.Type.BOOLEAN,defaultValue:true});
qxp.OO.addProperty({name:"staticPOIFormatter",type:qxp.constant.Type.FUNCTION,allowNull:false});
qxp.OO.addProperty({name:"staticPOIDelimiter",type:qxp.constant.Type.STRING,allowNull:true,defaultValue:"$\u00a7$"});
qxp.OO.addProperty({name:"clickTolerance",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:7});
qxp.OO.addProperty({name:"hoverTolerance",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:7});




/* ID: com.ptvag.webcomponent.map.layer.ToolbarLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.ToolbarLayer",com.ptvag.webcomponent.map.layer.AbstractStaticAreaLayer,function(){com.ptvag.webcomponent.map.layer.AbstractStaticAreaLayer.call(this);
var self=this;
var map=com.ptvag.webcomponent.map;
var mButtonDiv;
var mBgPadding=3;
var mLastButtonOverId;
var mElements=[];
var mElementHash={};
var mNextId=1;
var mUpdateTimer;
var superInit=self.init;
self.init=function(){superInit.apply(self,arguments);
var areaDiv=document.createElement("div");
areaDiv.style.position="absolute";
areaDiv.style.left="0px";
areaDiv.style.top="0px";
areaDiv.style.border=self.getAreaBorderWidth()+"px solid gray";
areaDiv.style.backgroundColor="white";
self.getParentElement().appendChild(areaDiv);
mButtonDiv=document.createElement("div");
mButtonDiv.style.position="absolute";
mButtonDiv.style.left=mBgPadding+"px";
mButtonDiv.style.top=mBgPadding+"px";
self.getParentElement().appendChild(mButtonDiv);
self.setAreaElement(areaDiv);
areaDiv.style.visibility="hidden";
update();
};
var recalculate=function(){mUpdateTimer=null;
if(mButtonDiv==null){return;
};var alreadyPresentButtons={};
var children=mButtonDiv.childNodes;
var childCount=children.length;
for(var i=0;
i<childCount;
++i){var child=children[i];
var id=child._id;
if(mElementHash[id]==null||mElementHash[id].divElem!=child){child._clickHandler=null;
child.parentNode.removeChild(child);
--i;
--childCount;
}else{alreadyPresentButtons[id]=id;
}};var offset=0;
var maxHeight=0;
var elementCount=mElements.length;
for(i=0;
i<elementCount;
++i){var element=mElements[i];
if(element.imgUrl){element.divElem.style.left=offset+"px";
if(element.height>maxHeight){maxHeight=element.height;
};if(alreadyPresentButtons[element.id]==null){mButtonDiv.appendChild(element.divElem);
}};offset+=element.width;
};self.setAreaWidth(offset+2*mBgPadding);
self.setAreaHeight(maxHeight+2*mBgPadding);
self.getAreaElement().style.visibility="";
self.positionArea();
};
var update=function(){if(mUpdateTimer==null){mUpdateTimer=window.setTimeout(recalculate,0);
}};
self.addElement=function(elementData,insertBefore){var id=elementData.id;
if(id==null){do{id="element-"+mNextId;
mNextId++;
}while(mElementHash[id]!=null);
elementData.id=id;
};if(mElementHash[id]!=null){throw new Error("Adding toolbar element failed. Id '"+id+"' is already in use.");
};mElementHash[id]=elementData;
var elementAdded=false;
if(insertBefore!=null){var elementCount=mElements.length;
for(var i=0;
i<elementCount;
++i){if(mElements[i].id==insertBefore){mElements.splice(i,0,elementData);
elementAdded=true;
break;
}}};if(!elementAdded){mElements.push(elementData);
};if(elementData.imgUrl==null){if(elementData.width==null){elementData.width=map.ToolbarLayer.SPACING_WIDTH;
}}else{var imgElem=document.createElement("img");
imgElem.style.width=elementData.width+"px";
imgElem.style.height=elementData.height+"px";
var imgDivElem=document.createElement("div");
imgDivElem.style.position="absolute";
imgDivElem.style.width=elementData.width+"px";
imgDivElem.style.height=elementData.height+"px";
imgDivElem.style.top="0px";
imgDivElem._clickHandler=elementData.clickHandler;
imgDivElem._id=id;
imgDivElem.appendChild(imgElem);
elementData.divElem=imgDivElem;
self.setButtonEnabled(id,(elementData.enabled==null||elementData.enabled!=false));
self.setButtonImage(id,elementData.imgUrl);
self.setButtonTooltip(id,elementData.tooltip);
};update();
return id;
};
self.removeElement=function(id){var elementData=mElementHash[id];
if(elementData!=null){elementData.divElem=null;
delete mElementHash[id];
var elementCount=mElements.length;
for(var i=0;
i<elementCount;
++i){if(mElements[i]==elementData){mElements.splice(i,1);
break;
}};update();
};return elementData;
};
self.getElementIds=function(){var elementCount=mElements.length;
var retVal=new Array(elementCount);
for(var i=0;
i<elementCount;
++i){retVal[i]=mElements[i].id;
};return retVal;
};
self.elementExists=function(elementId){return mElementHash[elementId]!=null;
};self.setButtonImage=function(buttonId,imgUrl){var buttonData=mElementHash[buttonId];
var imgElem=buttonData.divElem.firstChild;
map.MapUtil.setImageSource(imgElem,imgUrl);
buttonData.imgUrl=imgUrl;
};
self.setButtonTooltip=function(buttonId,tooltip){var buttonData=mElementHash[buttonId];
var imgElem=buttonData.divElem.firstChild;
if(tooltip==null){imgElem.removeAttribute("title");
}else{imgElem.setAttribute("title",tooltip);
};buttonData.tooltip=tooltip;
};
self.setButtonEnabled=function(buttonId,enabled){var buttonData=mElementHash[buttonId];
if(enabled){if(mLastButtonOverId==buttonId){map.MapUtil.setElementOpacity(buttonData.divElem,self.getButtonOpacityOver());
}else{map.MapUtil.setElementOpacity(buttonData.divElem,self.getButtonOpacityOut());
}}else{map.MapUtil.setElementOpacity(buttonData.divElem,self.getButtonOpacityDisabled());
};buttonData.enabled=enabled;
};
self.onMouseDown=function(evt){return getButtonAt(evt.relMouseX,evt.relMouseY)!=null;
};
var superOnMouseUp=self.onMouseUp;
self.onMouseUp=function(evt){superOnMouseUp(evt);
if(self.isNoLayerActive()){var buttonId=getButtonAt(evt.relMouseX,evt.relMouseY);
if(buttonId!=null){var buttonData=mElementHash[buttonId];
if(buttonData.enabled){buttonData.divElem._clickHandler();
return true;
}}};return false;
};
var superOnMouseMove=self.onMouseMove;
self.onMouseMove=function(evt){superOnMouseMove(evt);
if(self.isNoLayerActive()){setButtonOver(getButtonAt(evt.relMouseX,evt.relMouseY));
};return false;
};
var superOnMouseOut=self.onMouseOut;
self.onMouseOut=function(evt){superOnMouseOut(evt);
setButtonOver(null);
return false;
};var getButtonAt=function(x,y){var areaLeft=self.getComputedAreaLeft();
var areaTop=self.getComputedAreaTop();
if(x>=areaLeft&&x<areaLeft+self.getComputedAreaWidth()&&y>=areaTop&&y<areaTop+self.getComputedAreaHeight()){var relX=x-areaLeft-mBgPadding;
var buttonArr=mButtonDiv.childNodes;
for(var i=0;
i<buttonArr.length;
i++){var btLeft=buttonArr[i].offsetLeft;
var btWidth=buttonArr[i].offsetWidth;
if(relX>=btLeft&&relX<btLeft+btWidth){return buttonArr[i]._id;
}}};return null;
};var setButtonOver=function(buttonId){if(buttonId!=mLastButtonOverId){if(mLastButtonOverId!=null){var lastButtonData=mElementHash[mLastButtonOverId];
if(lastButtonData.enabled){map.MapUtil.setElementOpacity(lastButtonData.divElem,self.getButtonOpacityOut());
}};if(buttonId!=null){var newButtonData=mElementHash[buttonId];
if(newButtonData.enabled){map.MapUtil.setElementOpacity(newButtonData.divElem,self.getButtonOpacityOver());
}};mLastButtonOverId=buttonId;
}};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};var children=mButtonDiv.childNodes;
var childCount=children.length;
for(var i=0;
i<childCount;
++i){children[i]._clickHandler=null;
};var elementCount=mElements.length;
var element;
for(i=0;
i<elementCount;
++i){element=mElements[i];
if(element.divElem){element.divElem._clickHandler=null;
element.divElem=null;
}};mButtonDiv=null;
superDispose.call(self);
};
var init=function(){self.setAreaWidth(2*mBgPadding);
self.setAreaHeight(2*mBgPadding);
self.setAreaBorderWidth(1);
};
init();
});
qxp.Class.SPACING_WIDTH=10;
qxp.OO.changeProperty({name:"useBlending",type:qxp.constant.Type.BOOLEAN,defaultValue:true});
qxp.OO.changeProperty({name:"areaBorderWidth",type:qxp.constant.Type.NUMBER,defaultValue:1});
qxp.OO.addProperty({name:"buttonOpacityOver",type:qxp.constant.Type.NUMBER,defaultValue:0.6});
qxp.OO.addProperty({name:"buttonOpacityOut",type:qxp.constant.Type.NUMBER,defaultValue:0.35});
qxp.OO.addProperty({name:"buttonOpacityDisabled",type:qxp.constant.Type.NUMBER,defaultValue:0.15});




/* ID: com.ptvag.webcomponent.map.vector.Circle */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.Circle",com.ptvag.webcomponent.map.vector.AbstractCircle,function(x,y,color,pixelSize,priority,id,isPositionFlexible){com.ptvag.webcomponent.map.vector.AbstractCircle.call(this,x,y,color,priority,id,isPositionFlexible);
var self=this;
var map=com.ptvag.webcomponent.map;
self.calculatePixelRadius=function(){return self.getPixelSize()/2;
};
if(pixelSize!=null){self.setPixelSize(pixelSize);
};self.refreshOn("pixelSize");
});
qxp.OO.addProperty({name:"pixelSize",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:20});




/* ID: com.ptvag.webcomponent.map.animator.AcceleratingAnimator */
qxp.OO.defineClass("com.ptvag.webcomponent.map.animator.AcceleratingAnimator",com.ptvag.webcomponent.map.animator.Animator,function(){com.ptvag.webcomponent.map.animator.Animator.call(this);
var self=this;
self.doAnimation=function(animationTime){var theMap=self.getMap();
var accelerationPart=self.getAccelerationPart();
var decelerationPart=self.getDecelerationPart();
var plateauPart=1-accelerationPart-decelerationPart;
var maxSpeedPart=1-accelerationPart/2-decelerationPart/2;
var maxSpeed=1/maxSpeedPart;
var timeFactor=Math.min(1,animationTime/self.getDuration());
var pathFactor;
if(timeFactor<accelerationPart){var acceleration=maxSpeed/accelerationPart;
var height=timeFactor*acceleration;
pathFactor=(timeFactor*height)/2;
}else{pathFactor=(accelerationPart*maxSpeed)/2;
if(timeFactor<1-decelerationPart){var plateauTime=timeFactor-accelerationPart;
pathFactor+=plateauTime*maxSpeed;
}else{pathFactor+=plateauPart*maxSpeed;
pathFactor+=(decelerationPart*maxSpeed)/2;
var deceleration=maxSpeed/decelerationPart;
var missingTime=(1-timeFactor);
var height=missingTime*deceleration;
pathFactor-=(missingTime*height)/2;
}};var newCenter=self.interpolatePoint(self.getStartCenter(),theMap.getCenter(),pathFactor);
theMap.correctRelativeOffset(newCenter);
theMap.setVisibleCenter(newCenter);
theMap.setVisibleZoom(self.interpolateZoom(self.getStartZoom(),theMap.getZoom(),pathFactor));
return timeFactor==1;
};
});
qxp.OO.addProperty({name:"duration",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:1500});
qxp.OO.addProperty({name:"accelerationPart",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:0.3});
qxp.OO.addProperty({name:"decelerationPart",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:0.7});




/* ID: com.ptvag.webcomponent.map.vector.ImageMarker */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.ImageMarker",com.ptvag.webcomponent.map.vector.VectorElement,function(x,y,url,alignment,priority,id,isPositionFlexible){com.ptvag.webcomponent.map.vector.VectorElement.call(this,priority,id,isPositionFlexible);
var self=this;
var map=com.ptvag.webcomponent.map;
var mImgElement=null;
var mImgWidth=null;
var mImgHeight=null;
self._modifyOpacity=function(propValue){if(mImgElement!=null){map.MapUtil.setElementOpacity(mImgElement,propValue);
}};
self._modifyUrl=function(propValue){if(mImgElement!=null){var actualURL=resolveURL(propValue);
mImgElement.src=actualURL;
map.ImageLoader.getImageSize(actualURL,onImageSizeAvailable);
}};
var positionImage=function(){if(mImgElement!=null&&mImgWidth!=null&&mImgHeight!=null){var realX=self.getRealX();
var realY=self.getRealY();
if(realX!=null&&realY!=null){var offsetX=0;
var offsetY=0;
var alignment=self.getAlignment();
if(alignment&map.layer.VectorLayer.ALIGN_MID_HORIZ){offsetX=-(mImgWidth)/2;
}else if(alignment&map.layer.VectorLayer.ALIGN_RIGHT){offsetX=-(mImgWidth);
};if(alignment&map.layer.VectorLayer.ALIGN_MID_VERT){offsetY=-(mImgHeight)/2;
}else if(alignment&map.layer.VectorLayer.ALIGN_BOTTOM){offsetY=-(mImgHeight);
};mImgElement.style.left=Math.round(realX+offsetX)+"px";
mImgElement.style.top=Math.round(realY+offsetY)+"px";
}}};
var onImageSizeAvailable=function(url,width,height){mImgWidth=width;
mImgHeight=height;
positionImage();
if(mImgElement!=null){mImgElement.style.visibility="visible";
}};
self.usesCanvas=function(ctx){return(ctx.drawText?true:false);
};
var resolveURL=function(url){if(url==null){url="img/com/ptvag/webcomponent/map/1downarrow.gif";
};return map.MapUtil.resolveURL(url);
};
self.draw=function(container,topLevelContainer,ctx,mapLeft,mapTop,mapZoom){var suPoint={x:self.getX(),y:self.getY()};
var pixCoords=map.CoordUtil.smartUnit2Pixel(suPoint,mapZoom);
self.setRealX(pixCoords.x-mapLeft+self.getFlexX());
self.setRealY(mapTop-pixCoords.y+self.getFlexY());
if(ctx.drawText){if(mImgElement!=null&&mImgWidth!=null&&mImgHeight!=null){ctx.drawImage(mImgElement,0,0,mImgWidth,mImgHeight,parseInt(mImgElement.style.left),parseInt(mImgElement.style.top),mImgWidth,mImgHeight);
}}else{if(mImgElement==null){var actualURL=resolveURL(self.getUrl());
mImgElement=document.createElement("img");
mImgElement.setAttribute("_ptv_map_dontPrint",true);
mImgElement.src=actualURL;
mImgElement.style.position="absolute";
mImgElement.style.visibility="hidden";
mImgElement.style.zIndex=-2000000000+self.getPriority();
self._modifyOpacity(self.getOpacity());
container.appendChild(mImgElement);
map.ImageLoader.getImageSize(actualURL,onImageSizeAvailable);
}else{positionImage();
}}};
self.clear=function(inDispose){if(mImgElement!=null){if(!inDispose){mImgElement.parentNode.removeChild(mImgElement);
};mImgElement=null;
}};
if(x!=null){self.setX(x);
};if(y!=null){self.setY(y);
};if(url!=null){self.setUrl(url);
};if(alignment!=null){self.setAlignment(alignment);
};self.refreshOn("x","y","alignment");
});
qxp.OO.addProperty({name:"x",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:4355664});
qxp.OO.addProperty({name:"y",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:5464867});
qxp.OO.addProperty({name:"realX",type:qxp.constant.Type.NUMBER,allowNull:false});
qxp.OO.addProperty({name:"realY",type:qxp.constant.Type.NUMBER,allowNull:false});
qxp.OO.addProperty({name:"url",type:qxp.constant.Type.STRING,allowNull:true});
qxp.OO.addProperty({name:"alignment",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:66});
qxp.OO.addProperty({name:"opacity",type:qxp.constant.Type.NUMBER,defaultValue:1,allowNull:false});




/* ID: com.ptvag.webcomponent.map.layer.LabelLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.LabelLayer",com.ptvag.webcomponent.map.layer.AbstractStaticAreaLayer,function(){com.ptvag.webcomponent.map.layer.AbstractStaticAreaLayer.call(this);
var self=this;
var superInit=self.init;
self.init=function(){superInit.apply(self,arguments);
var areaElem=self.getParentElement();
areaElem.style.border=self.getAreaBorderWidth()+"px solid gray";
areaElem.style.backgroundColor="white";
areaElem.style.fontFamily="Verdana,Arial,sans-serif";
areaElem.style.fontSize="10px";
self.setAreaElement(areaElem);
if(self.isEnabled()){updateContent();
}};
self._modifyText=function(){updateContent();
};
var updateContent=function(){var areaElem=self.getAreaElement();
if(areaElem!=null){areaElem.style.width="";
areaElem.style.height="";
areaElem.innerHTML=self.getText();
var width=areaElem.offsetWidth;
var height=areaElem.offsetHeight;
self.setAreaWidth(width);
self.setAreaHeight(height);
self.positionArea();
}};
});
qxp.OO.changeProperty({name:"areaOpacity",type:qxp.constant.Type.NUMBER,defaultValue:0.8});
qxp.OO.changeProperty({name:"areaBorderWidth",type:qxp.constant.Type.NUMBER,defaultValue:1});
qxp.OO.addProperty({name:"text",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:""});




/* ID: com.ptvag.webcomponent.map.vector.FlexMarker */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.FlexMarker",com.ptvag.webcomponent.map.vector.VectorElement,function(flexElementId,priority,id){com.ptvag.webcomponent.map.vector.VectorElement.call(this,priority,id);
var self=this;
self.setFlexElementId(flexElementId);
self.refreshOn("flexElementId");
});
qxp.OO.addProperty({name:"flexElementId",allowNull:false});




/* ID: com.ptvag.webcomponent.map.vector.FlexMarkerArrow */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.FlexMarkerArrow",com.ptvag.webcomponent.map.vector.FlexMarker,function(flexElementId,priority,id){com.ptvag.webcomponent.map.vector.FlexMarker.call(this,flexElementId,priority,id);
var self=this;
var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
self.usesCanvas=function(){return true;
};
var superDraw=self.draw;
self.draw=function(container,topLevelContainer,ctx,mapLeft,mapTop,mapZoom){superDraw.apply(self,arguments);
var flexElement=self.getVectorLayer().getElement(self.getFlexElementId());
var origPosition={x:flexElement.getX(),y:flexElement.getY()};
var origPositionPix=CoordUtil.smartUnit2Pixel(origPosition,mapZoom);
origPositionPix.x-=mapLeft;
origPositionPix.y=mapTop-origPositionPix.y;
var vecX=-flexElement.getFlexY();
var vecY=flexElement.getFlexX();
var newPositionPix={x:origPositionPix.x+vecY,y:origPositionPix.y-vecX};
var vecLength=vecX*vecX+vecY*vecY;
if(vecLength>0){vecLength=Math.sqrt(vecLength);
if(vecLength>0){vecX*=2/vecLength;
vecY*=2/vecLength;
ctx.strokeStyle='#000000';
ctx.fillStyle='#ffffff';
ctx.lineWidth=1;
ctx.beginPath();
ctx.moveTo(origPositionPix.x,origPositionPix.y);
ctx.lineTo(newPositionPix.x-vecX,newPositionPix.y-vecY);
ctx.lineTo(newPositionPix.x+vecX,newPositionPix.y+vecY);
ctx.lineTo(origPositionPix.x,origPositionPix.y);
ctx.fill();
ctx.beginPath();
ctx.moveTo(origPositionPix.x,origPositionPix.y);
ctx.lineTo(newPositionPix.x-vecX,newPositionPix.y-vecY);
ctx.lineTo(newPositionPix.x+vecX,newPositionPix.y+vecY);
ctx.lineTo(origPositionPix.x,origPositionPix.y);
ctx.stroke();
}}};
});




/* ID: com.ptvag.webcomponent.map.vector.Line */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.Line",com.ptvag.webcomponent.map.vector.VectorElement,function(color,pixelSize,coordinates,priority,id){com.ptvag.webcomponent.map.vector.VectorElement.call(this,priority,id);
var self=this;
var map=com.ptvag.webcomponent.map;
var CoordUtil=map.CoordUtil;
var mCoordinatesIterator=null;
var mRealCoordinates=null;
var mZoomForRealCoordinates=null;
var mMapLeft;
var mMapTop;
var mMinX;
var mMaxX;
var mMinY;
var mMaxY;
self._modifyCoordinates=function(propValue){if(mCoordinatesIterator!=null){mCoordinatesIterator.dispose();
};mCoordinatesIterator=new map.PointListIterator(propValue);
mZoomForRealCoordinates=null;
self.refresh();
};
self.usesCanvas=function(){return true;
};
var drawArrow=function(ctx,startX,startY,endX,endY,angle,length){var x=endX-startX;
var y=startY-endY;
var lineAngle=Math.atan(y/x);
if(x<0){lineAngle+=Math.PI;
};var halfAngleRad=angle/360*Math.PI;
var newAngle1=lineAngle+(Math.PI-halfAngleRad);
var newAngle2=lineAngle-(Math.PI-halfAngleRad);
ctx.beginPath();
ctx.moveTo(endX+length*Math.cos(newAngle1),endY-length*Math.sin(newAngle1));
if(angle!=180){ctx.lineTo(endX,endY);
};ctx.lineTo(endX+length*Math.cos(newAngle2),endY-length*Math.sin(newAngle2));
ctx.stroke();
};
var superDraw=self.draw;
self.draw=function(container,topLevelContainer,ctx,mapLeft,mapTop,mapZoom){superDraw.apply(self,arguments);
mMapLeft=mapLeft;
mMapTop=mapTop;
var zoomFactor=self.getZoomFactor();
var displacement=self.getDisplacement();
var lineWidth=self.getPixelSize();
if(lineWidth<=0){lineWidth=5;
};lineWidth*=zoomFactor;
var halfLineWidth=lineWidth/2;
var endArrowLength=self.getEndArrowLength();
if(endArrowLength==null){endArrowLength=0;
}else{endArrowLength*=zoomFactor;
};var startArrowLength=self.getStartArrowLength();
if(startArrowLength==null){startArrowLength=0;
}else{startArrowLength*=zoomFactor;
};var arrowLength=Math.abs(startArrowLength)+Math.abs(endArrowLength);
var width=parseInt(container.style.width);
var height=parseInt(container.style.height);
var testLeft=-halfLineWidth-arrowLength-displacement;
var testTop=-halfLineWidth-arrowLength-displacement;
var testRight=width+halfLineWidth+arrowLength+displacement;
var testBottom=height+halfLineWidth+arrowLength+displacement;
if(mZoomForRealCoordinates!=mapZoom){mRealCoordinates=[];
mMinX=null;
mMaxX=null;
mMinY=null;
mMaxY=null;
mCoordinatesIterator.reset();
var realX=null;
var realY=null;
var nx=0;
var ny=0;
while(mCoordinatesIterator.iterate()){var suPoint={x:mCoordinatesIterator.x,y:mCoordinatesIterator.y};
var pixCoords=CoordUtil.smartUnit2Pixel(suPoint,mapZoom);
if(realX!=null){var distX=pixCoords.x-realX;
var distY=pixCoords.y-realY;
var dist=distX*distX+distY*distY;
if(dist<1){continue;
};if(displacement!=0){dist=Math.sqrt(dist);
var nxNext=-distY/dist;
var nyNext=distX/dist;
nx+=nxNext;
ny+=nyNext;
dist=Math.sqrt(nx*nx+ny*ny);
if(dist!=0){nx/=dist;
ny/=dist;
};realX+=nx*displacement;
realY+=ny*displacement;
nx=nxNext;
ny=nyNext;
};mRealCoordinates.push(realX);
mRealCoordinates.push(realY);
};realX=pixCoords.x;
realY=pixCoords.y;
if(mMinX==null||realX<mMinX){mMinX=realX;
};if(mMaxX==null||realX>mMaxX){mMaxX=realX;
};if(mMinY==null||realY<mMinY){mMinY=realY;
};if(mMaxY==null||realY>mMaxY){mMaxY=realY;
}};if(realX!=null){mRealCoordinates.push(realX+nx*displacement);
mRealCoordinates.push(realY+ny*displacement);
};mZoomForRealCoordinates=mapZoom;
};if(mMinX==null||(mMaxX-mapLeft)<testLeft||(mMinX-mapLeft)>testRight||(mapTop-mMinY)<testTop||(mapTop-mMaxY)>testBottom){return;
};var bounds={minX:testLeft,minY:testTop,maxX:testRight,maxY:testBottom};
var startPoint={x:0,y:0};
var endPoint={x:0,y:0};
var realArrayLength=mRealCoordinates.length;
var pathStarted=false;
ctx.strokeStyle=self.getColor();
ctx.lineWidth=lineWidth;
ctx.lineJoin="round";
ctx.lineCap="round";
for(var i=0;
i<realArrayLength;
i+=2){var prevRealX=realX;
var prevRealY=realY;
realX=mRealCoordinates[i]-mapLeft;
realY=mapTop-mRealCoordinates[i+1];
if(i>0){if(i==2&&startArrowLength!=0&&(prevRealX!=realX||prevRealY!=realY)){drawArrow(ctx,realX,realY,prevRealX,prevRealY,self.getStartArrowAngle(),startArrowLength);
};startPoint.x=prevRealX;
startPoint.y=prevRealY;
endPoint.x=realX;
endPoint.y=realY;
var clipResult=CoordUtil.clipLine(startPoint,endPoint,bounds);
if(clipResult<4){if(!pathStarted){pathStarted=true;
ctx.beginPath();
};if(prevClipResult>=2){ctx.moveTo(startPoint.x,startPoint.y);
};ctx.lineTo(endPoint.x,endPoint.y);
}}else{clipResult=4;
};var prevClipResult=clipResult;
};if(pathStarted){ctx.stroke();
};if(endArrowLength!=0&&realArrayLength>2&&(prevRealX!=realX||prevRealY!=realY)){drawArrow(ctx,prevRealX,prevRealY,realX,realY,self.getEndArrowAngle(),endArrowLength);
}};
self.getSquareDistance=function(evt,tolerance){var retVal={squareDistance:-1};
if(mZoomForRealCoordinates==null){return retVal;
};var lineSegmentCount=mRealCoordinates.length/2-1;
if(lineSegmentCount<1){return retVal;
};var mouseX=evt.relMouseX+mMapLeft;
var mouseY=mMapTop-evt.relMouseY;
var px=mRealCoordinates[0];
var py=mRealCoordinates[1];
var minSquareDistance=-1;
for(var i=0;
i<lineSegmentCount;
++i){var prevPx=px;
var prevPy=py;
px=mRealCoordinates[(i+1)*2];
py=mRealCoordinates[(i+1)*2+1];
var bx=px-prevPx;
var by=py-prevPy;
var vx=mouseX-prevPx;
var vy=mouseY-prevPy;
var t=(vx*bx+vy*by)/(bx*bx+by*by);
if(t<=0){var nx=prevPx;
var ny=prevPy;
}else if(t>=1){nx=px;
ny=py;
}else{nx=prevPx+t*bx;
ny=prevPy+t*by;
};var distX=mouseX-nx;
var distY=mouseY-ny;
var squareDistance=distX*distX+distY*distY;
if(minSquareDistance==-1||squareDistance<minSquareDistance){minSquareDistance=squareDistance;
var nearestX=nx;
var nearestY=ny;
var lineSegment=i;
}};if(minSquareDistance==-1||minSquareDistance>tolerance*tolerance){return retVal;
};retVal.squareDistance=minSquareDistance;
var nearestPoint=com.ptvag.webcomponent.map.CoordUtil.pixel2SmartUnit({x:nearestX,y:nearestY},mZoomForRealCoordinates);
retVal.extendedEventInfo={nearestX:nearestPoint.x,nearestY:nearestPoint.y,lineSegment:lineSegment};
return retVal;
};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};mCoordinatesIterator.dispose();
superDispose.call(self);
};
if(color!=null){self.setColor(color);
};if(pixelSize!=null){self.setPixelSize(pixelSize);
};if(coordinates!=null){self.setCoordinates(coordinates);
}else{self._modifyCoordinates(self.getCoordinates());
};self.refreshOn("color","pixelSize","endArrowLength","endArrowAngle","startArrowLength","startArrowAngle","displacement");
});
qxp.OO.addProperty({name:"color",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:"rgba(10,10,255,0.5)"});
qxp.OO.addProperty({name:"pixelSize",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:10});
qxp.OO.addProperty({name:"coordinates",type:qxp.constant.Type.OBJECT,allowNull:false,defaultValue:[]});
qxp.OO.addProperty({name:"endArrowLength",type:qxp.constant.Type.NUMBER,allowNull:true});
qxp.OO.addProperty({name:"endArrowAngle",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:60});
qxp.OO.addProperty({name:"startArrowLength",type:qxp.constant.Type.NUMBER,allowNull:true});
qxp.OO.addProperty({name:"startArrowAngle",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:60});
qxp.OO.addProperty({name:"displacement",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:0});




/* ID: com.ptvag.webcomponent.map.layer.TextInfoLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.TextInfoLayer",com.ptvag.webcomponent.map.layer.AbstractStaticAreaLayer,function(){com.ptvag.webcomponent.map.layer.AbstractStaticAreaLayer.call(this);
var self=this;
var superInit=self.init;
self.init=function(){superInit.apply(self,arguments);
self.setLastMousePos({x:0,y:0});
var areaElem=document.createElement("div");
areaElem.style.position="absolute";
areaElem.style.left="0px";
areaElem.style.top="0px";
areaElem.style.fontName="Arial";
areaElem.style.fontSize="10px";
areaElem.style.color="black";
self.getParentElement().appendChild(areaElem);
self.setAreaElement(areaElem);
};
var superOnMouseMove=self.onMouseMove;
self.onMouseMove=function(evt){superOnMouseMove(evt);
self.setLastMousePos({x:evt.relMouseX,y:evt.relMouseY});
self.updateView();
return false;
};
self.onViewChanged=function(evt){self.updateView();
};
self.updateView=function(){throw new Error("updateView is abstract");
};
});
qxp.OO.changeProperty({name:"areaOpacity",type:qxp.constant.Type.NUMBER,defaultValue:1});
qxp.OO.addProperty({name:"lastMousePos"});




/* ID: com.ptvag.webcomponent.map.layer.DebugLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.DebugLayer",com.ptvag.webcomponent.map.layer.TextInfoLayer,function(){com.ptvag.webcomponent.map.layer.TextInfoLayer.call(this);
var self=this;
var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
var superInit=self.init;
self.init=function(){superInit.apply(self,arguments);
if(self.isEnabled()){self.updateView();
}};
self.updateView=function(){var theMap=self.getMap();
var lastMousePos=self.getLastMousePos();
var pixPoint=self.getMap().relative2AbsolutePixel(lastMousePos);
var suPoint=CoordUtil.pixel2SmartUnit(pixPoint,theMap.getZoom());
var geoPoint=CoordUtil.smartUnit2GeoDecimal(suPoint);
var mercPoint=CoordUtil.smartUnit2Mercator(suPoint);
self.getAreaElement().innerHTML="mouse pos (rel): "+Math.round(lastMousePos.x)+" / "+Math.round(lastMousePos.y)+"<br/>"+"mouse pos (pix): "+Math.round(pixPoint.x)+" / "+Math.round(pixPoint.y)+"<br/>"+"mouse pos (su): "+Math.round(suPoint.x)+" / "+Math.round(suPoint.y)+"<br/>"+"mouse pos (geo): "+Math.round(geoPoint.x)+" / "+Math.round(geoPoint.y)+"<br/>"+"mouse pos (merc): "+Math.round(mercPoint.x)+" / "+Math.round(mercPoint.y)+"<br/>"+"center: "+Math.round(theMap.getCenter().x)+" / "+Math.round(theMap.getCenter().y)+"<br/>"+"zoom: "+theMap.getZoom()+"<br/>"+"visible center: "+Math.round(theMap.getVisibleCenter().x)+" / "+Math.round(theMap.getVisibleCenter().y)+"<br/>"+"visible zoom: "+theMap.getVisibleZoom();
};
var init=function(){self.setAreaHeight(105);
};
init();
});




/* ID: com.ptvag.webcomponent.util.ObjectMap */
qxp.OO.defineClass("com.ptvag.webcomponent.util.ObjectMap",qxp.core.Object,function(){qxp.core.Object.call(this);
var self=this;
var _key=0;
var _keyMap={};
var _valueMap={};
var _size=0;
self.put=function(key,value){var keyCandidates=_keyMap[key];
var keyFound=false;
var keyOrigPair=null;
if(keyCandidates==null){keyCandidates=[];
_keyMap[key]=keyCandidates;
}else{for(var i=0;
i<keyCandidates.length;
++i){keyOrigPair=keyCandidates[i];
if(keyOrigPair.orig==key){break;
};keyOrigPair=null;
}};if(keyOrigPair==null){++_key;
++_size;
keyOrigPair={"orig":key,"key":_key};
keyCandidates.push(keyOrigPair);
};var actualKey=keyOrigPair.key;
var oldValue=_valueMap[actualKey];
_valueMap[actualKey]=value;
return oldValue;
};
self.get=function(key){var keyCandidates=_keyMap[key];
if(keyCandidates!=null){var keyOrigPair;
for(var i=0;
i<keyCandidates.length;
++i){keyOrigPair=keyCandidates[i];
if(keyOrigPair.orig==key){return _valueMap[keyOrigPair.key];
}}};return null;
};
self.remove=function(key){var keyCandidates=_keyMap[key];
if(keyCandidates!=null){var keyOrigPair;
for(var i=0;
i<keyCandidates.length;
++i){keyOrigPair=keyCandidates[i];
if(keyOrigPair.orig==key){--_size;
var actualKey=keyOrigPair.key;
delete _valueMap[actualKey];
keyCandidates.splice(i,1);
if(keyCandidates.length==0){delete _keyMap[key];
};return true;
}}};return false;
};
self.size=function(){return _size;
}});




/* ID: com.ptvag.webcomponent.map.ImageLoader */
qxp.OO.defineClass("com.ptvag.webcomponent.map.ImageLoader",qxp.core.Object,function(){qxp.core.Object.call(this);
var self=this;
self.enableDebug=false;
var mQueue=[];
var mQueueLocked=false;
var mRunningRequests=[];
var mLastRequestTime=0;
var mQueueTimer=null;
var mImageSizes={};
var mKnownFastUrls;
var mCurrentFastUrlHash=0;
var mCurrentFastUrlCount=0;
var mErrorLog=null;
var mCurrentErrorArray;
var mBlankSrc=null;
var mNonFastCount=0;
var createLogEntry=function(entry){return{imageElement:(entry.imageElement?"not null":null),url:entry.url,priority:entry.priority,timeout:entry.timeout,fast:entry.fast,manageVisibility:entry.manageVisibility};
};
var logEntry=function(entry,error){if(mErrorLog==null){mErrorLog=new Array(10);
mErrorLog[0]=new Array();
mCurrentErrorArray=0;
};var currentErrorArray=mErrorLog[mCurrentErrorArray];
var newEntry=createLogEntry(entry);
newEntry.error=error;
currentErrorArray.push(newEntry);
if(currentErrorArray.length==10){mCurrentErrorArray=(mCurrentErrorArray+1)%10;
mErrorLog[mCurrentErrorArray]=new Array();
}};
self.isIdle=function(){return(mRunningRequests.length==0&&mQueue.length==0);
};self.getDebugInfo=function(){var retVal={};
var errorLog=[];
if(mErrorLog!=null){var startIndex=(mCurrentErrorArray+1)%10;
var currentIndex=startIndex;
do{var array=mErrorLog[currentIndex];
if(array!=null){for(var i=0;
i<array.length;
++i){errorLog.push(array[i]);
}};currentIndex=(currentIndex+1)%10;
}while(currentIndex!=startIndex);
};retVal.errorLog=errorLog;
var queue=[];
for(var i=0;
i<mQueue.length;
++i){queue.push(createLogEntry(mQueue[i]));
};retVal.queue=queue;
var runningRequests=[];
for(var i=0;
i<mRunningRequests.length;
++i){runningRequests.push(createLogEntry(mRunningRequests[i]));
};retVal.runningRequests=runningRequests;
return retVal;
};
var fastUrlKnown=function(url){var hashCount=mKnownFastUrls.length;
for(var i=0;
i<hashCount;
++i){if(url in mKnownFastUrls[i]){return true;
}};return false;
};
var addFastUrl=function(url){if(!(url in mKnownFastUrls[mCurrentFastUrlHash])){mKnownFastUrls[mCurrentFastUrlHash][url]=null;
++mCurrentFastUrlCount;
if(mCurrentFastUrlCount>=self.getKnownFastUrlsPerHash()){mCurrentFastUrlCount=0;
mCurrentFastUrlHash=(mCurrentFastUrlHash+1)%mKnownFastUrls.length;
mKnownFastUrls[mCurrentFastUrlHash]={};
}}};
self.getImageSize=function(url,handlerFunction,object){var sizeData=mImageSizes[url];
if(sizeData!=null){if(sizeData.width!=null){handlerFunction.call(object,url,sizeData.width,sizeData.height);
}else{sizeData.handlers.push(handlerFunction);
sizeData.objects.push(object);
}}else{sizeData={handlers:[handlerFunction],objects:[object]};
mImageSizes[url]=sizeData;
var tempImgElem=document.createElement("img");
tempImgElem.style.position="absolute";
tempImgElem.style.visibility="hidden";
document.body.appendChild(tempImgElem);
self.loadImage(tempImgElem,url,onSizeImageLoaded);
}};
var onSizeImageLoaded=function(imgElement,url,exc){if(exc!=null){self.warn("Image size could not be detected for: "+url,exc);
}else{var sizeData=mImageSizes[url];
sizeData.width=imgElement.offsetWidth;
sizeData.height=imgElement.offsetHeight;
document.body.removeChild(imgElement);
for(var i=0;
i<sizeData.handlers.length;
i++){sizeData.handlers[i].call(sizeData.objects[i],url,sizeData.width,sizeData.height);
};sizeData.handlers=null;
sizeData.objects=null;
}};
var cleanUpImage=function(imageElement){imageElement.onload=null;
imageElement.onerror=null;
imageElement.onabort=null;
if(imageElement._timeout){window.clearTimeout(imageElement._timeout);
imageElement._timeout=null;
};if(imageElement._removeFromParent){try{imageElement.parentNode.removeChild(imageElement);
}catch(e){}}};
var removeFromQueue=function(queueEntry){if(!queueEntry.fast){--mNonFastCount;
};for(var i=0;
i<mQueue.length;
++i){if(mQueue[i]==queueEntry){mQueue.splice(i,1);
return true;
}};return false;
};
var removeFromRunningList=function(queueEntry){if(!queueEntry.fast){--mNonFastCount;
};var retVal=false;
for(var i=0;
i<mRunningRequests.length;
++i){if(mRunningRequests[i]==queueEntry){mRunningRequests.splice(i,1);
retVal=true;
break;
}};if(mQueueTimer==null){mQueueTimer=window.setTimeout(function(){mQueueTimer=null;
processQueue();
},0);
};return retVal;
};
var processQueue=function(){if(mQueueTimer!=null||mQueue.length==0||(mRunningRequests.length>=self.getMaxRequests()&&!mQueue[0].fast)){return;
};var minWaitTime=self.getMinWaitTime();
var currentTime=(new Date()).getTime();
var timeDiff=currentTime-mLastRequestTime;
var queueEntry=mQueue[0];
if(!mQueueLocked&&timeDiff>=minWaitTime){mQueue.splice(0,1);
mRunningRequests.push(queueEntry);
queueEntry.imageElement._timeout=window.setTimeout(function(){if(queueEntry.imageElement._timeout==null){return;
};queueEntry.imageElement._timeout=null;
if(self.enableDebug){logEntry(queueEntry,"timeout");
};self.abortLoading(queueEntry);
if(queueEntry.imageElement.onabort){queueEntry.imageElement.onabort(true);
}},queueEntry.timeout*1000);
queueEntry.imageElement.src=com.ptvag.webcomponent.map.SERVICE.fixUrl(queueEntry.url);
if(queueEntry.fast&&queueEntry.manageVisibility){queueEntry.imageElement.style.visibility="visible";
};mLastRequestTime=currentTime;
};if(mQueue.length>0&&mRunningRequests.length<self.getMaxRequests()){var timeoutTime=minWaitTime;
if(timeDiff<=timeoutTime){timeoutTime-=timeDiff;
};mLastRequestTime=0;
mQueueTimer=window.setTimeout(function(){mQueueTimer=null;
processQueue();
},timeoutTime);
}};
var fillBlankSrc=function(){mBlankSrc=com.ptvag.webcomponent.map.MapUtil.rewriteURL("img/com/ptvag/webcomponent/map/blank.gif",true);
};
var refreshSession=function(){if(!mQueueLocked){mQueueLocked=true;
var refreshRPC=com.ptvag.webcomponent.map.SERVICE;
refreshRPC.refreshSession(function(result,exc){if(!result||exc){self.error("Session refresh would be needed but didn't succeed!",exc);
};mQueueLocked=false;
});
}};
var retry=function(queueEntry){if(queueEntry.fast){var retries=self.getFastRetries();
}else{retries=self.getRetries();
};var count=queueEntry.retries;
if(!count){count=1;
queueEntry.origURL=queueEntry.url;
}else{++count;
};queueEntry.retries=count;
if(count>retries){return false;
};removeFromRunningList(queueEntry);
var imageElement=queueEntry.imageElement;
if(imageElement._timeout){window.clearTimeout(imageElement._timeout);
imageElement._timeout=null;
};queueEntry.url=queueEntry.origURL+(queueEntry.origURL.indexOf("?")==-1?"/X/retryTime/Y/"+(new Date()).getTime()+"/X/retry/Y/"+count:"&retryTime="+(new Date()).getTime()+"&retry="+count);
mQueue.splice(0,0,queueEntry);
processQueue();
return true;
};
self.loadImage=function(imageElement,url,onloaded,priority,timeout,fast,manageVisibility){if(timeout==null){timeout=self.getDefaultTimeout();
};priority=(priority==null?0:priority);
var actuallyFast=fast;
var queueEntry={imageElement:imageElement,url:url,priority:priority,timeout:timeout,fast:actuallyFast,manageVisibility:manageVisibility};
if(!actuallyFast){++mNonFastCount;
};refreshSession();
if(mQueue.length==0){mQueue.push(queueEntry);
}else if(mQueue[mQueue.length-1].priority>=priority){mQueue.push(queueEntry);
}else{for(var i=0;
mQueue[i].priority>priority;
++i);
mQueue.splice(i,0,queueEntry);
};cleanUpImage(imageElement);
var actualLoadHandler=function(){if(imageElement.src==mBlankSrc){return;
};removeFromRunningList(queueEntry);
cleanUpImage(imageElement);
if(manageVisibility){imageElement.style.visibility="";
};if(fast){addFastUrl(url);
};imageElement._loaded=true;
try{if(onloaded)onloaded(imageElement,url,null);
}catch(exc){self.error("Handling image loaded failed",exc);
}};
var actualErrorHandler=function(){if(imageElement.src==mBlankSrc){return;
};if(retry(queueEntry)){return;
};if(self.enableDebug){logEntry(queueEntry,"error");
};removeFromRunningList(queueEntry);
cleanUpImage(imageElement);
try{if(onloaded)onloaded(imageElement,url,new Error("Error"));
}catch(exc){self.error("Handling image loading error failed",exc);
}};
var actualAbortHandler=function(explicit){if(imageElement.src==mBlankSrc){return;
};if(!explicit){if(retry(queueEntry)){return;
}};removeFromRunningList(queueEntry);
cleanUpImage(imageElement);
if(mBlankSrc==null){fillBlankSrc();
};imageElement.src=mBlankSrc;
try{if(onloaded)onloaded(imageElement,url,new Error("Abort"));
}catch(exc){self.error("Handling image loading abort failed",exc);
}};
imageElement.onload=actualLoadHandler;
imageElement.onerror=actualErrorHandler;
imageElement.onabort=actualAbortHandler;
processQueue();
return queueEntry;
};
self.abortLoading=function(queueEntry,removeFromParent){var wasQueued=removeFromQueue(queueEntry);
if(wasQueued){if(queueEntry.imageElement.onabort){queueEntry.imageElement.onabort(true);
}}else{if(!queueEntry.imageElement._loaded){if(queueEntry.imageElement.onabort){queueEntry.imageElement.onabort(true);
}else{if(mBlankSrc==null){fillBlankSrc();
};queueEntry.imageElement.src=mBlankSrc;
}};if(removeFromParent){if(qxp.sys.Client.getInstance().isMshtml()&&queueEntry.imageElement.onabort){var junkyard=document.getElementById("_junkyard");
if(junkyard==null){junkyard=document.createElement("div");
junkyard.style.display="none";
document.body.appendChild(junkyard);
};queueEntry.imageElement.parentNode.removeChild(queueEntry.imageElement);
junkyard.appendChild(queueEntry.imageElement);
queueEntry.imageElement._removeFromParent=true;
queueEntry.imageElement.style.display="none";
}else{queueEntry.imageElement.parentNode.removeChild(queueEntry.imageElement);
}}}};
var init=function(){mKnownFastUrls=[];
var hashCount=self.getKnownFastUrlHashes();
for(var i=0;
i<hashCount;
++i){mKnownFastUrls[i]={};
}};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};for(var i=0;
i<mQueue.length;
i++){cleanUpImage(mQueue[i].imageElement);
mQueue[i].imageElement=null;
};mQueue=[];
for(var i=0;
i<mRunningRequests.length;
i++){cleanUpImage(mRunningRequests[i].imageElement);
mRunningRequests[i].imageElement=null;
};mRunningRequests=[];
superDispose.call(self);
};
init();
});
qxp.OO.addProperty({name:"minWaitTime",type:qxp.constant.Type.NUMBER,defaultValue:0});
qxp.OO.addProperty({name:"maxRequests",type:qxp.constant.Type.NUMBER,defaultValue:3});
qxp.OO.addProperty({name:"knownFastUrlHashes",type:qxp.constant.Type.NUMBER,defaultValue:10});
qxp.OO.addProperty({name:"knownFastUrlsPerHash",type:qxp.constant.Type.NUMBER,defaultValue:100});
qxp.OO.addProperty({name:"defaultTimeout",type:qxp.constant.Type.NUMBER,defaultValue:10});
qxp.OO.addProperty({name:"retries",type:qxp.constant.Type.NUMBER,defaultValue:3});
qxp.OO.addProperty({name:"fastRetries",type:qxp.constant.Type.NUMBER,defaultValue:3});
com.ptvag.webcomponent.map.ImageLoader=new com.ptvag.webcomponent.map.ImageLoader();




/* ID: com.ptvag.webcomponent.util.EventUtils */
qxp.OO.defineClass("com.ptvag.webcomponent.util.EventUtils");
qxp.Class.getEvent=function(evt){if(evt){return evt;
}else{var win=window;
return win.event;
}};
qxp.Class.needToAddScroll=function(){var clientInstance=qxp.sys.Client.getInstance();
return!clientInstance.isWebkit()||parseInt(clientInstance.getMajor())>=500;
};
qxp.Class.getAbsoluteMouseX=function(evt){var EventUtils=com.ptvag.webcomponent.util.EventUtils;
var needToAddScroll=EventUtils.NEED_TO_ADD_SCROLL;
if(needToAddScroll==null){needToAddScroll=EventUtils.needToAddScroll();
EventUtils.NEED_TO_ADD_SCROLL=needToAddScroll;
};return EventUtils.getEvent(evt).clientX+(needToAddScroll?com.ptvag.webcomponent.util.DomUtils.getScrollX(window):0);
};
qxp.Class.getAbsoluteMouseY=function(evt){var EventUtils=com.ptvag.webcomponent.util.EventUtils;
var needToAddScroll=EventUtils.NEED_TO_ADD_SCROLL;
if(needToAddScroll==null){needToAddScroll=EventUtils.needToAddScroll();
EventUtils.NEED_TO_ADD_SCROLL=needToAddScroll;
};return EventUtils.getEvent(evt).clientY+(needToAddScroll?com.ptvag.webcomponent.util.DomUtils.getScrollY(window):0);
};
qxp.Class.getModifiers=function(evt){var mask=0;
if(evt.shiftKey)mask|=com.ptvag.webcomponent.util.EventUtils.SHIFT_MASK;
if(evt.ctrlKey)mask|=com.ptvag.webcomponent.util.EventUtils.CTRL_MASK;
if(evt.altKey)mask|=com.ptvag.webcomponent.util.EventUtils.ALT_MASK;
if(evt.metaKey)mask|=com.ptvag.webcomponent.util.EventUtils.META_MASK;
return mask;
};
qxp.Class.getMouseButton=function(evt){if(qxp.sys.Client.getInstance().isMshtml()){return evt.button;
};switch(evt.which){case 0:return 0;
case 1:return com.ptvag.webcomponent.util.EventUtils.MOUSE_BUTTON_LEFT;
case 2:return com.ptvag.webcomponent.util.EventUtils.MOUSE_BUTTON_MIDDLE;
case 3:return com.ptvag.webcomponent.util.EventUtils.MOUSE_BUTTON_RIGHT;
default:return-1;
}};qxp.Class.isLeftMouseButton=function(evt){return com.ptvag.webcomponent.util.EventUtils.getMouseButton(evt)==com.ptvag.webcomponent.util.EventUtils.MOUSE_BUTTON_LEFT;
};qxp.Class.isMiddleMouseButton=function(evt){return com.ptvag.webcomponent.util.EventUtils.getMouseButton(evt)==com.ptvag.webcomponent.util.EventUtils.MOUSE_BUTTON_MIDDLE;
};qxp.Class.isRightMouseButton=function(evt){return com.ptvag.webcomponent.util.EventUtils.getMouseButton(evt)==com.ptvag.webcomponent.util.EventUtils.MOUSE_BUTTON_RIGHT;
};qxp.Class.isCtrlOrCommandKey=function(evt){if(qxp.sys.Client.getInstance().runsOnMacintosh()){return evt.metaKey;
};return evt.ctrlKey;
};
qxp.Class.stopEventPropagation=function(evt){if(evt.stopPropagation){evt.stopPropagation();
}else{evt.cancelBubble=true;
evt.returnValue=false;
}};
qxp.Class.eventHandlerMap={};
qxp.Class.callEventHandler=function(event,element,handler,functionName){if(functionName==null){return handler(event,element);
};return handler[functionName].call(handler,event,element);
};
qxp.Class.mouseWheelHandler=function(event,element,handler,functionName){event=com.ptvag.webcomponent.util.EventUtils.getEvent(event);
if(event.wheelDelta!=null){var ticks=event.wheelDelta/-40;
if(qxp.sys.Client.getInstance().isOpera()){ticks=-ticks;
};event.wheelTicks=ticks;
}else{event.wheelTicks=event.detail;
};var retVal=com.ptvag.webcomponent.util.EventUtils.callEventHandler(event,element,handler,functionName);
if((retVal==false)&&event.preventDefault){event.preventDefault();
};return retVal;
};
qxp.Class.addEventHandler=function(element,handlerName,handler,functionName){if(element==null){throw "Adding event handler failed. element is null.";
};var self=com.ptvag.webcomponent.util.EventUtils;
var actualHandlerName=null;
var actualHandler;
if(handlerName=="onmousewheel"||handlerName=="mousewheel"){actualHandler=function(event){return com.ptvag.webcomponent.util.EventUtils.mouseWheelHandler(event,element,handler,functionName);
};
if(qxp.sys.Client.getInstance().isGecko()){actualHandlerName="DOMMouseScroll";
}}else{actualHandler=function(event){return com.ptvag.webcomponent.util.EventUtils.callEventHandler(event,element,handler,functionName);
};
};var secondaryMap=self.eventHandlerMap[handlerName];
if(secondaryMap==null){secondaryMap=new com.ptvag.webcomponent.util.ObjectMap();
self.eventHandlerMap[handlerName]=secondaryMap;
};var tertiaryMap=secondaryMap.get(element);
if(tertiaryMap==null){tertiaryMap=new com.ptvag.webcomponent.util.ObjectMap();
secondaryMap.put(element,tertiaryMap);
};if(functionName==null){tertiaryMap.put(handler,actualHandler);
}else{var finalMap=tertiaryMap.get(handler);
if(finalMap==null){finalMap={};
tertiaryMap.put(handler,finalMap);
};finalMap[functionName]=actualHandler;
};if(element.addEventListener){if(actualHandlerName==null){if(handlerName.indexOf("on")==0){actualHandlerName=handlerName.substring(2);
}else{actualHandlerName=handlerName;
}};element.addEventListener(actualHandlerName,actualHandler,false);
}else if(element.attachEvent){if(actualHandlerName==null){if(handlerName.indexOf("on")!=0){actualHandlerName="on"+handlerName;
}else{actualHandlerName=handlerName;
}};element.attachEvent(actualHandlerName,actualHandler);
}else{throw "Unknown event listener model";
}};
qxp.Class.removeEventHandler=function(element,handlerName,handler,functionName){if(element==null){throw "Removing event handler failed. element is null.";
};var self=com.ptvag.webcomponent.util.EventUtils;
var actualHandlerName=null;
var actualHandler;
if(handlerName=="onmousewheel"||handlerName=="mousewheel"){if(qxp.sys.Client.getInstance().isGecko()){actualHandlerName="DOMMouseScroll";
}};var secondaryMap=self.eventHandlerMap[handlerName];
if(secondaryMap==null){return false;
};var tertiaryMap=secondaryMap.get(element);
if(tertiaryMap==null){return false;
};if(functionName==null){actualHandler=tertiaryMap.get(handler);
if(actualHandler==null){return false;
};tertiaryMap.remove(handler);
}else{var finalMap=tertiaryMap.get(handler);
if(finalMap==null){return false;
};actualHandler=finalMap[functionName];
if(actualHandler==null){return false;
};delete finalMap[functionName];
var stillHasKeys=false;
for(var i in finalMap){stillHasKeys=true;
break;
};if(!stillHasKeys){tertiaryMap.remove(handler);
}};if(tertiaryMap.size()==0){secondaryMap.remove(element);
if(secondaryMap.size()==0){delete self.eventHandlerMap[handlerName];
}};if(element.removeEventListener){if(actualHandlerName==null){if(handlerName.indexOf("on")==0){actualHandlerName=handlerName.substring(2);
}else{actualHandlername=handlerName;
}};if(actualHandlerName!='load'&&actualHandlerName!='unload'){element.removeEventListener(actualHandlerName,actualHandler,false);
}}else if(element.detachEvent){if(actualHandlerName==null){if(handlerName.indexOf("on")!=0){actualHandlerName="on"+handlerName;
}else{actualHandlerName=handlerName;
}};element.detachEvent(actualHandlerName,actualHandler);
}else{throw "Unknown event listener model";
};return true;
};
qxp.Class.MOUSE_BUTTON_LEFT=1;
qxp.Class.MOUSE_BUTTON_RIGHT=2;
qxp.Class.MOUSE_BUTTON_MIDDLE=4;
qxp.Class.SHIFT_MASK=1;
qxp.Class.CTRL_MASK=2;
qxp.Class.ALT_MASK=4;
qxp.Class.META_MASK=8;
qxp.Class.KEY_CODE_TAB=9;
qxp.Class.KEY_CODE_ENTER=13;
qxp.Class.KEY_CODE_ESC=27;
qxp.Class.KEY_CODE_LEFT=37;
qxp.Class.KEY_CODE_UP=38;
qxp.Class.KEY_CODE_RIGHT=39;
qxp.Class.KEY_CODE_DOWN=40;
qxp.Class.KEY_CODE_PAGE_UP=33;
qxp.Class.KEY_CODE_PAGE_DOWN=34;
qxp.Class.KEY_CODE_SPACE=32;
qxp.Class.KEY_CODE_POS1=36;
qxp.Class.KEY_CODE_END=35;
qxp.Class.KEY_CODE_F1=112;
qxp.Class.KEY_CODE_F2=113;
qxp.Class.KEY_CODE_F3=114;
qxp.Class.KEY_CODE_F4=115;
qxp.Class.KEY_CODE_F5=116;
qxp.Class.KEY_CODE_F6=117;
qxp.Class.KEY_CODE_F7=118;
qxp.Class.KEY_CODE_F8=119;
qxp.Class.KEY_CODE_F9=120;
qxp.Class.KEY_CODE_F10=121;
qxp.Class.KEY_CODE_F11=122;
qxp.Class.KEY_CODE_F12=123;




/* ID: com.ptvag.webcomponent.map.PointListIterator */
qxp.OO.defineClass("com.ptvag.webcomponent.map.PointListIterator",qxp.core.Object,function(pointList){qxp.core.Object.call(this);
if(typeof pointList=="string"){pointList=pointList.split(" ");
for(var i=0;
i<pointList.length;
i++){pointList[i]=parseFloat(pointList[i]);
}};this._list=pointList;
this._currentIndex=-1;
if(pointList.length>0){var firstItem=pointList[0];
if(isNaN(firstItem)){this._isListOfPoints=(firstItem.x!=null);
this._isListOfVectorElems=(firstItem.getX!=null);
}}});
qxp.Proto.reset=function(){this._currentIndex=-1;
};
qxp.Proto.iterate=function(){this._currentIndex++;
if(this._currentIndex>=this._list.length){return false;
}else{if(this._isListOfPoints||this._isListOfVectorElems){var item=this._list[this._currentIndex];
if(this._isListOfPoints){this.x=item.x;
this.y=item.y;
}else{this.x=item.getX();
this.y=item.getY();
};if(isNaN(this.x)){throw new Error("Iterating point list failed: x value of point at index "+this._currentIndex+" is NaN: "+this.x);
};if(isNaN(this.y)){throw new Error("Iterating point list failed: y value of point at index "+this._currentIndex+" is NaN: "+this.y);
}}else{this.x=this._list[this._currentIndex];
this.y=this._list[this._currentIndex+1];
if(isNaN(this.x)){throw new Error("Iterating point list failed: x value at index "+this._currentIndex+" is NaN: "+this.x);
};if(isNaN(this.y)){throw new Error("Iterating point list failed: y value at index "+(this._currentIndex+1)+" is NaN: "+this.y);
};this._currentIndex++;
};return true;
}};
qxp.Proto.getX=function(){return this.x;
};
qxp.Proto.getY=function(){return this.y;
};




/* ID: com.ptvag.webcomponent.map.vector.Tooltip */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.Tooltip",com.ptvag.webcomponent.map.vector.AbstractHoverArea,function(x,y,maxZoom,tolerance,text,alignment,priority,id,isPositionFlexible){com.ptvag.webcomponent.map.vector.AbstractHoverArea.call(this,x,y,maxZoom,tolerance,priority,id,isPositionFlexible);
var self=this;
var map=com.ptvag.webcomponent.map;
var mTimer=null;
var mTooltip=null;
var mTooltipCreator=null;
var mContainer=null;
var mTooltipWidth=null;
var mTooltipHeight=null;
var mFadeTimer=null;
var mCurrentOpacity=0;
var mTargetOpacity=0;
var mHovering=false;
var mMapLeft;
var mMapTop;
var mMapZoom;
var disableFilters=function(){if(qxp.sys.Client.getInstance().isMshtml()&&mTooltip!=null&&!mTooltip._filtersDisabled){var divs=mTooltip.getElementsByTagName("div");
var divCount=divs.length;
for(var i=0;
i<divCount;
++i){var div=divs[i];
if(div.style.filter!=null&&div.style.filter!=""){div._preservedFilter=div.style.filter;
div.style.filter="";
}};mTooltip._filtersDisabled=true;
}};
var enableFilters=function(){if(qxp.sys.Client.getInstance().isMshtml()&&mTooltip!=null&&mTooltip._filtersDisabled){var divs=mTooltip.getElementsByTagName("div");
var divCount=divs.length;
for(var i=0;
i<divCount;
++i){var div=divs[i];
if(div._preservedFilter!=null){div.style.filter=div._preservedFilter;
div._preservedFilter=null;
}};mTooltip._filtersDisabled=null;
}};
var createTooltipElement=function(recreate){if((mTooltip==null||recreate)&&mContainer!=null){mTooltipCreator=self.getInfoBoxElementFactory();
if(mTooltipCreator==null){mTooltipCreator=com.ptvag.webcomponent.map.vector.InfoBoxElementFactory;
};mTooltip=mTooltipCreator.createInfoBoxElement(self.getRealX(),self.getRealY(),{text:self.getText(),background:self.getBackground()},mContainer,true,mTooltip);
mTooltip.style.zIndex=2000000000+self.getPriority();
};return(mTooltip!=null);
};
var destroyTooltipElement=function(){if(mTooltip!=null){mTooltipCreator.destroyInfoBoxElement(mTooltip);
mTooltip=null;
mTooltipCreator=null;
}};
var setOpacity=function(){if(createTooltipElement()){if(mCurrentOpacity!=100){disableFilters();
};map.MapUtil.setElementOpacity(mTooltip,mCurrentOpacity/100);
if(mCurrentOpacity==100){enableFilters();
}};if(mCurrentOpacity==mTargetOpacity){if(mCurrentOpacity==0){destroyTooltipElement();
};return true;
};return(mTooltip==null);
};
var setFadeTimer=function(){if(mTargetOpacity>=mCurrentOpacity){mFadeTimer=window.setTimeout(fade,self.getFadeIntervalIn());
}else{mFadeTimer=window.setTimeout(fade,self.getFadeIntervalOut());
}};
var fade=function(){if(mFadeTimer==null){return;
};mFadeTimer=null;
var diff=mTargetOpacity-mCurrentOpacity;
var fadeStep=self.getFadeStep();
if(diff<=fadeStep&&diff>=-fadeStep){mCurrentOpacity=mTargetOpacity;
}else{if(diff<0){mCurrentOpacity-=fadeStep;
}else{mCurrentOpacity+=fadeStep;
}};if(!setOpacity()){setFadeTimer();
}};
var fadeTo=function(targetOpacity){if(targetOpacity!=mTargetOpacity){if(mTimer!=null){window.clearTimeout(mTimer);
mTimer=null;
}};mTargetOpacity=targetOpacity;
if(!setOpacity()&&mFadeTimer==null){setFadeTimer();
}};
var timeout=function(){fadeTo(0);
mTimer=null;
};
var superDraw=self.draw;
self.draw=function(container,topLevelContainer,ctx,mapLeft,mapTop,mapZoom){mMapZoom=mapZoom;
mMapLeft=mapLeft;
mMapTop=mapTop;
superDraw(container,topLevelContainer,ctx,mapLeft,mapTop,mapZoom);
mContainer=topLevelContainer;
};
self.onHover=function(evt,forceChange){var nearestX=evt.nearestX;
if(nearestX!=null){var nearestPoint=com.ptvag.webcomponent.map.CoordUtil.smartUnit2Pixel({x:nearestX,y:evt.nearestY},mMapZoom);
self.setRealX(nearestPoint.x-mMapLeft);
self.setRealY(mMapTop-nearestPoint.y);
};if(mContainer!=null){mHovering=true;
if(forceChange){createTooltipElement(true);
};fadeTo(self.getTargetOpacity());
}};
self.onUnhover=function(evt){if(mHovering){mHovering=false;
fadeTo(0);
}};
self.clear=function(){mHovering=false;
if(mTimer!=null){window.clearTimeout(mTimer);
mTimer=null;
};if(mFadeTimer!=null){window.clearTimeout(mFadeTimer);
mFadeTimer=null;
};destroyTooltipElement();
mCurrentOpacity=0;
};
self.testUnhover=function(evt){if(mTooltip!=null&&mHovering){return mTooltipCreator.testUnhover(evt,mTooltip,self.getTolerance());
};return false;
};
self.refresh=function(){if(self.getVectorLayer()){createTooltipElement(true);
fadeTo(self.getTargetOpacity());
}};
self.hitTest=function(evt){if(mTooltip!=null&&mHovering){return mTooltipCreator.hitTest(evt,mTooltip);
};return false;
};
if(text!=null){self.setText(text);
};if(alignment!=null){self.setAlignment(alignment);
};self.refreshOn("text","alignment","infoBoxElementFactory","targetOpacity","background");
});
qxp.Class.SHOW_TIME=4000;
qxp.OO.addProperty({name:"text",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:""});
qxp.OO.addProperty({name:"alignment",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:66});
qxp.OO.addProperty({name:"infoBoxElementFactory",type:qxp.constant.Type.OBJECT,allowNull:true,defaultValue:null});
qxp.OO.addProperty({name:"fadeStep",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:20});
qxp.OO.addProperty({name:"targetOpacity",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:100});
qxp.OO.addProperty({name:"fadeIntervalOut",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:40});
qxp.OO.addProperty({name:"fadeIntervalIn",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:5});
qxp.OO.addProperty({name:"background",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:"#ffffff"});




/* ID: com.ptvag.webcomponent.map.RequestBuilder */
qxp.OO.defineClass("com.ptvag.webcomponent.map.RequestBuilder",qxp.core.Target,function(parentMap,defaultVisible){qxp.core.Object.call(this);
var self=this;
var map=com.ptvag.webcomponent.map;
var clazz=this.constructor;
var mMap=parentMap;
var FIND_ALL_QUESTIONMARKS=new RegExp('\\?','g');
var FIND_ALL_AMPERSANDS=new RegExp('&','g');
var FIND_ALL_EQUAL_SIGNS=new RegExp('=','g');
var mVisibleLayers={Town:defaultVisible,Street:defaultVisible,Border:defaultVisible,Height:defaultVisible,Other:defaultVisible,Rail:defaultVisible,Sea:defaultVisible,Water:defaultVisible,Woodland:defaultVisible,Land:defaultVisible,Bridge:defaultVisible,Tunnel:defaultVisible,Background:defaultVisible};
var mLayerNames=[];
var mPOICategories={};
var mSMOIds={};
self.setVisible=function(layer,visible){mVisibleLayers[layer]=visible;
};
self.addPOICategory=function(provider,category){if(!self.supportsServerDrawnObjects()){throw new Error("addPOICategory() called on a request builder that doesn't support static POIs");
};var providerHash=mPOICategories[provider];
if(providerHash==null){providerHash={};
mPOICategories[provider]=providerHash;
};providerHash[category]=42;
firePOICategoriesChanged();
};
self.removePOICategory=function(provider,category){if(!self.supportsServerDrawnObjects()){throw new Error("removePOICategory() called on a request builder that doesn't support static POIs");
};var providerHash=mPOICategories[provider];
if(providerHash!=null){delete providerHash[category];
var providerEmpty=true;
for(var category in providerHash){providerEmpty=false;
break;
};if(providerEmpty){delete mPOICategories[provider];
}};firePOICategoriesChanged();
};
self.registerHint=function(hintId,hintData,callback){com.ptvag.webcomponent.map.SERVICE.callAsync(callback,"registerHint",hintId,hintData);
};
self.addSMOId=function(smoId){if(!self.supportsServerDrawnObjects()){throw new Error("addSMOId() called on a request builder that doesn't support SMO IDs");
};mSMOIds[smoId]=42;
firePOICategoriesChanged();
};self.removeSMOId=function(smoId){if(!self.supportsServerDrawnObjects()){throw new Error("removeSMOId() called on a request builder that doesn't support SMO IDs");
};delete mSMOIds[smoId];
firePOICategoriesChanged();
};
var firePOICategoriesChanged=function(){if(self.hasEventListeners("poiCategoriesChanged")){self.dispatchEvent(new qxp.event.type.Event("poiCategoriesChanged"));
};
};
self.hasPOICategories=function(){for(var provider in mPOICategories){return true;
};return false;
};
self.hasSMOs=function(){for(var provider in mSMOIds){return true;
};return false;
};
self.hasServerDrawnObjects=function(){return self.hasPOICategories()||self.hasSMOs();
};
var encodePOICategories=function(){var retVal="";
for(var provider in mPOICategories){for(var category in mPOICategories[provider]){if(retVal!=""){retVal+=",";
};retVal+=provider+"$"+category;
}};return encodeURIComponent(retVal);
};
var encodeSMOIds=function(){var retVal="";
for(var smoId in mSMOIds){if(retVal!=""){retVal+=",";
};retVal+=smoId;
};return encodeURIComponent(retVal);
};
self.supportsServerDrawnObjects=function(){var serverDrawnObjectManager=mMap.getServerDrawnObjectManager();
return(serverDrawnObjectManager!=null)&&(serverDrawnObjectManager.getRequestBuilder()==self);
};
self.buildRequest=function(left,top,right,bottom,width,height,loggingInfo,mapVersion){var grainSize=self.getGrainSize();
if(grainSize>1){width=Math.round(width/grainSize);
height=Math.round(height/grainSize);
};var clipRect=mMap.getClipRectInMercator();
if((clipRect.right!=null&&left>=clipRect.right)||(clipRect.left!=null&&right<=clipRect.left)||(clipRect.bottom!=null&&top<=clipRect.bottom)||(clipRect.top!=null&&bottom>=clipRect.top)){return{completelyClipped:true};
};var clipLeftMerc=(clipRect.left!=null&&clipRect.left>left)?clipRect.left:left;
var clipRightMerc=(clipRect.right!=null&&clipRect.right<right)?clipRect.right:right;
var clipTopMerc=(clipRect.top!=null&&clipRect.top<top)?clipRect.top:top;
var clipBottomMerc=(clipRect.bottom!=null&&clipRect.bottom>bottom)?clipRect.bottom:bottom;
var clipLeftPix=0;
var clipRightPix=0;
var clipTopPix=0;
var clipBottomPix=0;
var clipWidthPix=width;
var clipHeightPix=height;
if(clipLeftMerc!=left||clipRightMerc!=right){var origWidthMerc=right-left;
var newWidthMerc=clipRightMerc-clipLeftMerc;
clipWidthPix=Math.round(width*newWidthMerc/origWidthMerc);
clipLeftPix=Math.round(width*(clipLeftMerc-left)/origWidthMerc);
clipRightPix=width-clipWidthPix-clipLeftPix;
if(clipWidthPix<map.RequestBuilder.MIN_IMAGE_SIZE){var missingPix=map.RequestBuilder.MIN_IMAGE_SIZE-clipWidthPix;
var missingMerc=missingPix*(right-left)/width;
if(clipLeftPix!=0){if(clipRightPix!=0){return{completelyClipped:true};
};clipRightPix=-missingPix;
clipRightMerc+=missingMerc;
}else{clipLeftPix=-missingPix;
clipLeftMerc-=missingMerc;
};clipWidthPix=map.RequestBuilder.MIN_IMAGE_SIZE;
}};if(clipTopMerc!=top||clipBottomMerc!=bottom){var origHeightMerc=top-bottom;
var newHeightMerc=clipTopMerc-clipBottomMerc;
clipHeightPix=Math.round(height*newHeightMerc/origHeightMerc);
clipBottomPix=Math.round(height*(clipBottomMerc-bottom)/origHeightMerc);
clipTopPix=height-clipHeightPix-clipBottomPix;
if(clipHeightPix<map.RequestBuilder.MIN_IMAGE_SIZE){var missingPix=map.RequestBuilder.MIN_IMAGE_SIZE-clipHeightPix;
var missingMerc=missingPix*(top-bottom)/height;
if(clipBottomPix!=0){if(clipTopPix!=0){return{completelyClipped:true};
};clipTopPix=-missingPix;
clipTopMerc+=missingMerc;
}else{clipBottomPix=-missingPix;
clipBottomMerc-=missingMerc;
};clipHeightPix=map.RequestBuilder.MIN_IMAGE_SIZE;
}};var urlParams="?left="+Math.round(clipLeftMerc+self.getDebugOffsetLeft())+"&right="+Math.round(clipRightMerc+self.getDebugOffsetRight())+"&top="+Math.round(clipTopMerc+self.getDebugOffsetTop())+"&bottom="+Math.round(clipBottomMerc+self.getDebugOffsetBottom())+"&width="+clipWidthPix+"&height="+clipHeightPix;
if(mapVersion!=null){urlParams+="&version="+encodeURIComponent(mapVersion);
};var hint=self.getHint();
if(hint!=null){urlParams+="&hint="+encodeURIComponent(hint);
};var visibleLayers="";
var hiddenLayers="";
var townVisible=false;
for(var i=0;
i<mLayerNames.length;
++i){var layer=mLayerNames[i];
if(mVisibleLayers[layer]){if(visibleLayers!=""){visibleLayers+=",";
};visibleLayers+=layer;
if(layer=="Town"){townVisible=true;
}}else{if(hiddenLayers!=""){hiddenLayers+=",";
};hiddenLayers+=layer;
}};if(hiddenLayers.length>visibleLayers.length&&visibleLayers.length!=0){hiddenLayers="";
}else{visibleLayers="";
};if(visibleLayers!=""){urlParams+="&visibleLayers="+visibleLayers;
};if(hiddenLayers!=""){urlParams+="&hiddenLayers="+hiddenLayers;
};if(self.getSat()){urlParams+="&sat=true";
};if(self.isTransparent()){urlParams+="&transparent=true";
if(townVisible){urlParams+="&loggingInfo="+encodeURIComponent(loggingInfo);
}};if(self.supportsServerDrawnObjects()){var poiCategories=encodePOICategories();
if(poiCategories!=""){urlParams+="&poiCategories="+poiCategories;
};var smoIds=encodeSMOIds();
if(smoIds!=""){urlParams+="&smoIds="+smoIds;
}};var imageId=null;
if(townVisible||!map.Map.ENABLE_CACHING){imageId=(new Date()).getTime();
if(imageId<=clazz.LAST_IMAGE_ID){imageId=clazz.LAST_IMAGE_ID+1;
};clazz.LAST_IMAGE_ID=imageId;
imageId=""+imageId;
urlParams+="&imageId="+imageId;
};var profileGroup=mMap.getProfileGroup();
if(profileGroup!=null){urlParams+="&profileGroup="+encodeURIComponent(profileGroup);
};var backendServer=self.getBackendServer();
if(backendServer==null){backendServer=mMap.getBackendServer();
};if(backendServer!=null){urlParams+="&backendServer="+encodeURIComponent(backendServer);
};if(self.getHideLabelsAndStreets()){urlParams+="&hideLabelsAndStreets=true";
};if(townVisible){if(map.RequestBuilder.CUSTOM_PARAMETER!=null){urlParams+="&customParams="+encodeURIComponent(map.RequestBuilder.CUSTOM_PARAMETER);
};urlParams+="&tok="+encodeURIComponent(map.RequestBuilder.getToken());
var url=map.MapUtil.rewriteURL("/MapServlet"+urlParams,false,"");
}else{var numX=Math.round(right/(right-left));
var numY=Math.round(top/(top-bottom));
var index=(numX+numY)%3;
if(index==0){var serverPathPrefix=map.RequestBuilder.SERVER1;
}else if(index==1){serverPathPrefix=map.RequestBuilder.SERVER2;
}else{serverPathPrefix=map.RequestBuilder.SERVER3;
};if(serverPathPrefix==null){serverPathPrefix=map.Map.STATIC_SERVER;
};if(serverPathPrefix==null){serverPathPrefix=qxp.core.ServerSettings.serverPathPrefix;
};url=serverPathPrefix+"/MapServlet"+urlParams.replace(FIND_ALL_QUESTIONMARKS,'/X/').replace(FIND_ALL_AMPERSANDS,'/X/').replace(FIND_ALL_EQUAL_SIGNS,'/Y/');
};return{url:url,width:clipWidthPix,height:clipHeightPix,clipLeft:clipLeftPix,clipRight:clipRightPix,clipTop:clipTopPix,clipBottom:clipBottomPix,imageId:imageId};
};
var init=function(){for(var layerName in mVisibleLayers){mLayerNames.push(layerName);
};mLayerNames.sort();
};
init();
});
qxp.Class.getHost=function(urlStr){if(urlStr==null)return null;
var tmpStr=""+urlStr;
tmpStr=tmpStr.replace(/^.*\/\//,"");
tmpStr=tmpStr.replace(/:.*$/,"");
tmpStr=tmpStr.replace(/\/.*$/,"");
return tmpStr;
};
qxp.Class.getToken=function(){var self=com.ptvag.webcomponent.map.RequestBuilder;
return self.SECURITY_TOKEN+"$"+self.getHost(window.document.referrer)+"$"+self.getHost(window.document.URL);
};
qxp.OO.addProperty({name:"transparent",type:qxp.constant.Type.BOOLEAN,defaultValue:false,getAlias:"isTransparent"});
qxp.OO.addProperty({name:"sat",type:qxp.constant.Type.BOOLEAN,defaultValue:false});
qxp.OO.addProperty({name:"grainSize",type:qxp.constant.Type.NUMBER,defaultValue:1});
qxp.OO.addProperty({name:"hint",type:qxp.constant.Type.STRING,defaultValue:null});
qxp.OO.addProperty({name:"backendServer",type:qxp.constant.Type.STRING,defaultValue:null});
qxp.OO.addProperty({name:"hideLabelsAndStreets",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:false});
qxp.OO.addProperty({name:"debugOffsetLeft",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:0});
qxp.OO.addProperty({name:"debugOffsetRight",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:0});
qxp.OO.addProperty({name:"debugOffsetTop",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:0});
qxp.OO.addProperty({name:"debugOffsetBottom",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:0});
qxp.Class.MIN_IMAGE_SIZE=32;
qxp.Class.SERVER1=null;
qxp.Class.SERVER2=null;
qxp.Class.SERVER3=null;
qxp.Class.CUSTOM_PARAMETER=null;
qxp.Class.SECURITY_TOKEN=null;
qxp.Class.LAST_IMAGE_ID=0;




/* ID: com.ptvag.webcomponent.map.layer.AbstractVectorLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.AbstractVectorLayer",com.ptvag.webcomponent.map.layer.Layer,function(floaterLayer,isSecondary){com.ptvag.webcomponent.map.layer.Layer.call(this);
var self=this;
var map=com.ptvag.webcomponent.map;
var mCanvas=null;
var mBackgroundCanvas=null;
var mContainer=null;
var mFloaterLayer=floaterLayer;
var mCurrentCenterPix=null;
var mCanvasSupported=true;
var mCanvasDirty=false;
var mBackgroundCanvasDirty=false;
var mPreviousActiveLayer=null;
var superInit=self.init;
self.init=function(){superInit.apply(self,arguments);
self.getMap().getController().addEventListener("changeActiveLayer",onActiveLayerChanged);
if(self.isEnabled()){updateImage();
}};
self.isCanvasSupported=function(){return mCanvasSupported;
};var onActiveLayerChanged=function(evt){try{var previousActiveLayer=mPreviousActiveLayer;
mPreviousActiveLayer=evt.getData();
if(self.isNoLayerActive()){if(previousActiveLayer==null||!previousActiveLayer.isInZoomBoxMode||!previousActiveLayer.isInZoomBoxMode())updateImage();
}}catch(e){self.error("Error in onActiveLayerChanged in AbstractVectorLayer",e);
}};
self.onViewChanged=function(evt){updateImage();
};
var updateImage=function(){var theMap=self.getMap();
var mapZoom=theMap.getVisibleZoom();
var mapCenterSu=theMap.getVisibleCenter();
var mapCenterPix=map.CoordUtil.smartUnit2Pixel(mapCenterSu,mapZoom);
var mapTop=mapCenterPix.y+theMap.getHeight()/2+0.001;
var mapLeft=mapCenterPix.x-theMap.getWidth()/2-0.001;
var offsetX=0;
var offsetY=0;
var floaterElement=null;
if(mFloaterLayer!=null&&!isSecondary){floaterElement=mFloaterLayer.getParentElement();
};if(self.isRelative()){var relativeOffset=self.getMap().getRelativeOffset();
offsetX=relativeOffset.x;
offsetY=relativeOffset.y;
if(!self.isNoLayerActive()&&(offsetX!=0||offsetY!=0)){return;
}};if(!self.isNoLayerActive()&&mCurrentCenterPix!=null){var mapCenterSu=self.getMap().getVisibleCenter();
var mapCenterPix=map.CoordUtil.smartUnit2Pixel(mapCenterSu,self.getMap().getVisibleZoom());
offsetX+=Math.round(mCurrentCenterPix.x-mapCenterPix.x);
offsetY+=Math.round(mapCenterPix.y-mCurrentCenterPix.y);
var styleLeft=offsetX+"px";
var styleTop=offsetY+"px";
if(mCanvas!=null){mCanvas.style.left=styleLeft;
mCanvas.style.top=styleTop;
};if(mContainer!=null){mContainer.style.left=styleLeft;
mContainer.style.top=styleTop;
};if(floaterElement!=null){floaterElement.style.left=styleLeft;
floaterElement.style.top=styleTop;
};return;
};var styleLeft=offsetX+"px";
var styleTop=offsetY+"px";
var width=self.getMap().getWidth();
var height=self.getMap().getHeight();
var styleWidth=width+"px";
var styleHeight=height+"px";
if(mCanvas==null&&mCanvasSupported){mCanvas=map.MapUtil.createCanvas(window,self.getParentElement(),width,height);
if(mCanvas==null){mCanvasSupported=false;
}else{mBackgroundCanvas=map.MapUtil.createCanvas(window,self.getParentElement(),width,height);
mCanvas.style.position="absolute";
mCanvas.style.left=styleLeft;
mCanvas.style.top=styleTop;
mCanvas.style.zIndex=-2000000001;
mBackgroundCanvas.style.position="absolute";
mBackgroundCanvas.style.left=styleLeft;
mBackgroundCanvas.style.top=styleTop;
mBackgroundCanvas.style.zIndex=-2000000001;
mBackgroundCanvas.style.visibility="hidden";
}}else if(mCanvas!=null){var Client=qxp.sys.Client.getInstance();
if(!Client.isGecko()&&!Client.isMshtml()){if(mBackgroundCanvas.style.width!=styleWidth||mBackgroundCanvas.style.height!=styleHeight){self.getParentElement().removeChild(mBackgroundCanvas);
mBackgroundCanvas=document.createElement("canvas");
mBackgroundCanvas.setAttribute("width",width);
mBackgroundCanvas.setAttribute("height",height);
mBackgroundCanvas.style.position="absolute";
mBackgroundCanvas.style.left=styleLeft;
mBackgroundCanvas.style.top=styleTop;
mBackgroundCanvas.style.width=styleWidth;
mBackgroundCanvas.style.height=styleHeight;
mBackgroundCanvas.style.zIndex=-2000000001;
self.getParentElement().appendChild(mBackgroundCanvas);
}else{mBackgroundCanvas.style.left=styleLeft;
mBackgroundCanvas.style.top=styleTop;
}}else{mBackgroundCanvas.style.left=styleLeft;
mBackgroundCanvas.style.top=styleTop;
if(mBackgroundCanvas.style.width!=styleWidth||mBackgroundCanvas.style.height!=styleHeight){mBackgroundCanvas.setAttribute("width",width);
mBackgroundCanvas.setAttribute("height",height);
mBackgroundCanvas.style.width=styleWidth;
mBackgroundCanvas.style.height=styleHeight;
}}};if(mContainer==null){mContainer=document.createElement("div");
mContainer.style.position="absolute";
mContainer.style.width=styleWidth;
mContainer.style.height=styleHeight;
mContainer.style.zIndex=0;
self.getParentElement().appendChild(mContainer);
}else{if(mContainer.style.width!=styleWidth||mContainer.style.height!=styleHeight){mContainer.style.width=styleWidth;
mContainer.style.height=styleHeight;
}};var context=null;
if(mBackgroundCanvas!=null){context=mBackgroundCanvas.getContext("2d");
if(mBackgroundCanvasDirty){context.clearRect(0,0,width,height);
}};mCurrentCenterPix=mapCenterPix;
mBackgroundCanvasDirty=self.paintContent(context,mContainer,mapZoom,mapLeft,mapTop);
mContainer.style.left=styleLeft;
mContainer.style.top=styleTop;
if(floaterElement!=null){floaterElement.style.left=styleLeft;
floaterElement.style.top=styleTop;
};if(mCanvas!=null){var temp=mCanvas;
mCanvas=mBackgroundCanvas;
mBackgroundCanvas=temp;
temp=mCanvasDirty;
mCanvasDirty=mBackgroundCanvasDirty;
mBackgroundCanvasDirty=temp;
mCanvas.style.visibility="";
mBackgroundCanvas.style.visibility="hidden";
}};
self.paintContent=function(context,container,mapZoom,mapLeft,mapTop,forPrinting){throw new Error("paintContent is abstract");
};
self.setCanvasDirty=function(){mCanvasDirty=true;
};
self.doPrint=function(ctx,htmlContainer,htmlBackground){var theMap=self.getMap();
var mapZoom=theMap.getVisibleZoom();
var mapCenterSu=theMap.getVisibleCenter();
var mapCenterPix=map.CoordUtil.smartUnit2Pixel(mapCenterSu,mapZoom);
var mapTop=mapCenterPix.y+theMap.getHeight()/2+0.001;
var mapLeft=mapCenterPix.x-theMap.getWidth()/2-0.001;
self.paintContent(ctx,htmlContainer,mapZoom,mapLeft,mapTop,true);
var htmlContent=map.MapUtil.cloneNodeForPrinting(mContainer,htmlContainer.ownerDocument);
htmlContent.style.left="0px";
htmlContent.style.top="0px";
htmlContainer.appendChild(htmlContent);
if(mFloaterLayer!=null&&!isSecondary){htmlContent=map.MapUtil.cloneNodeForPrinting(mFloaterLayer.getParentElement(),htmlContainer.ownerDocument);
htmlContent.style.left="0px";
htmlContent.style.top="0px";
htmlContainer.appendChild(htmlContent);
}};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};self.getMap().getController().removeEventListener("changeActiveLayer",onActiveLayerChanged);
mContainer=null;
if(mCanvas!=null){map.MapUtil.cleanupCanvas(window,mCanvas);
mCanvas=null;
};if(mBackgroundCanvas!=null){map.MapUtil.cleanupCanvas(window,mBackgroundCanvas);
mBackgroundCanvas=null;
};superDispose.call(self);
};
});




/* ID: com.ptvag.webcomponent.map.layer.VectorLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.VectorLayer",com.ptvag.webcomponent.map.layer.AbstractVectorLayer,function(floaterLayer,isSecondary){com.ptvag.webcomponent.map.layer.AbstractVectorLayer.call(this,floaterLayer,isSecondary);
var self=this;
var map=com.ptvag.webcomponent.map;
var mFloaterLayer=floaterLayer;
var mElements={};
var mHoverAreas={};
var mCurrentHoverArea=null;
var mCandidateHoverArea=null;
var mCandidateTimer=null;
var mCandidateEvent=null;
var mClickAreas={};
var mRightClickAreas={};
var mFlexibleElementIds=[];
var mElementIds=[];
var mElementIdsSorted=true;
var mAggregateElements={};
var mRemoveOnClick={};
var mInRemoveOnClick=false;
var mInBulkMode=false;
var mChangeInBulkMode=false;
var mFiringBulkEvent=false;
var mLastMapZoom;
var mLastMapLeft;
var mLastMapTop;
var mUniqueCounter=0;
var INTERNAL_PREFIX="_ptv_internal_";
var superInit=self.init;
self.init=function(){superInit.apply(self,arguments);
self.getMap().getController().addEventListener("changeActiveLayer",onActiveLayerChanged);
};
var onActiveLayerChanged=function(evt){try{if(!self.isNoLayerActive()){for(var id in mHoverAreas){mHoverAreas[id].clear();
};mCurrentHoverArea=null;
}}catch(e){self.error("Error in onActiveLayerChanged in VectorLayer",e);
}};
var getUniqueId=function(){var id=INTERNAL_PREFIX+(++mUniqueCounter);
if(id>=2000000000){mUniqueCounter=id=1;
};return id;
};
self.startBulkMode=function(){if(mInBulkMode){throw new Error("Starting bulk mode failed. The vector layer is already in bulk mode.");
};mInBulkMode=true;
mChangeInBulkMode=false;
};
self.endBulkMode=function(){if(!mInBulkMode){throw new Error("Ending bulk mode failed. The vector layer was not in bulk mode.");
};mInBulkMode=false;
if(mChangeInBulkMode){mFiringBulkEvent=true;
self.onViewChanged();
mFiringBulkEvent=false;
mChangeInBulkMode=false;
}};
self.inBulkMode=function(){return mInBulkMode;
};var elementIdComparator=function(a,b){var prioA=mElements[a].getPriority();
var prioB=mElements[b].getPriority();
if(prioA<prioB){return-1;
};if(prioA>prioB){return 1;
};return 0;
};
var superOnViewChanged=self.onViewChanged;
self.onViewChanged=function(evt){if(!self.isInitialized()){return;
};if(!mInBulkMode&&!mFiringBulkEvent&&self.getUseAutoBulkMode()&&self.isNoLayerActive()){self.startBulkMode();
window.setTimeout(function(){self.endBulkMode();
},0);
};if(mInBulkMode){mChangeInBulkMode=true;
return;
};superOnViewChanged(evt);
};
self.paintContent=function(context,container,mapZoom,mapLeft,mapTop,forPrinting){if(mLastMapZoom!=mapZoom||mLastMapLeft!=mapLeft||mLastMapTop!=mapTop){mLastMapZoom=mapZoom;
mLastMapLeft=mapLeft;
mLastMapTop=mapTop;
for(var id in mHoverAreas){mHoverAreas[id].clear();
};mCurrentHoverArea=null;
};updateFlexiblePositions();
var dirty=false;
var topLevelContainer=mFloaterLayer.getParentElement();
var canvasSupported=self.isCanvasSupported();
var elementCount=mElementIds.length;
if(!mElementIdsSorted){mElementIds.sort(elementIdComparator);
mElementIdsSorted=true;
};for(var choice=0;
choice<2;
++choice){for(var i=0;
i<elementCount;
++i){var element=mElements[mElementIds[i]];
if(element.getVisibleMinZoom()>=mapZoom&&element.getVisibleMaxZoom()<=mapZoom){if(choice==0&&element.usesCanvas(context)){if(!canvasSupported){if(qxp.sys.Client.getInstance().isMshtml()){throw new Error("You must include the "+"excanvas.js script in your page to draw an "+"instance of "+element.classname);
}else{throw new Error("You must use a browser that "+"supports the canvas tag to draw an "+"instance of "+element.classname);
}};element.draw(container,topLevelContainer,context,mapLeft,mapTop,mapZoom);
dirty=true;
}else if(choice==1&&!element.usesCanvas(context)&&!forPrinting){element.draw(container,topLevelContainer,context,mapLeft,mapTop,mapZoom);
}}else{element.clear();
}}};return dirty;
};
var createPRNG=function(seed){if(seed==null){seed=parseInt(new Date().getTime()/1000);
};return function(){var AAA=40692;
var MMM=2147483399;
var QQQ=52774;
var RRR=3791;
var y=seed;
var r=RRR*parseInt(y/QQQ);
y=AAA*(y%QQQ)-r;
if(y<0){y+=MMM;
};seed=y;
return seed/MMM;
};
};
var updateFlexiblePositions=function(){var elemDataHash={};
var dependentHash={};
var actualFlexibleElementIds=[];
var prng=createPRNG(190199);
var zoom=self.getMap().getVisibleZoom();
for(var i=0;
i<mFlexibleElementIds.length;
i++){var id=mFlexibleElementIds[i];
var element=mElements[id];
var noiseX=0;
var noiseY=0;
if(self.getFlexAtSamePosition()){noiseX=prng()/10;
noiseY=prng()/10;
};var suPoint={x:element.getX()+noiseX,y:element.getY()+noiseY};
var pixPoint=map.CoordUtil.smartUnit2Pixel(suPoint,zoom);
var dependsOn=element.getDependsOn();
if(dependsOn==null){elemDataHash[id]={startX:pixPoint.x,startY:pixPoint.y,x:pixPoint.x,y:pixPoint.y,pushX:0,pushY:0};
actualFlexibleElementIds.push(id);
}else{var dependentElements=dependentHash[dependsOn];
if(dependentElements==null){dependentElements=[];
dependentHash[dependsOn]=dependentElements;
};dependentElements.push(id);
}};var maxFlex=map.layer.VectorLayer.MAX_FLEX_DISTANCE;
var flexCount=actualFlexibleElementIds.length;
for(var step=0;
step<20;
++step){for(var i=0;
i<flexCount;
++i){var elemData=elemDataHash[actualFlexibleElementIds[i]];
for(var j=0;
j<flexCount;
++j){if(i==j)continue;
var compData=elemDataHash[actualFlexibleElementIds[j]];
if(compData.x==elemData.x&&compData.y==elemData.y){continue;
};var distX=elemData.x-compData.x;
var distY=elemData.y-compData.y;
var squareDist=distX*distX+distY*distY;
if(squareDist<400){if(squareDist<10){squareDist=10;
};var force=1/squareDist*10;
elemData.pushX+=force*distX;
elemData.pushY+=force*distY;
}};squareDist=elemData.pushX*elemData.pushX+elemData.pushY*elemData.pushY;
var dist=Math.sqrt(squareDist);
if(dist>maxFlex){elemData.pushX*=maxFlex/dist;
elemData.pushY*=maxFlex/dist;
}};for(i=0;
i<flexCount;
++i){elemData=elemDataHash[actualFlexibleElementIds[i]];
elemData.x=elemData.startX+elemData.pushX;
elemData.y=elemData.startY+elemData.pushY;
}};for(i=0;
i<actualFlexibleElementIds.length;
i++){id=actualFlexibleElementIds[i];
elemData=elemDataHash[id];
element=mElements[id];
element.setFlexX(Math.round(elemData.x-elemData.startX));
element.setFlexY(-Math.round(elemData.y-elemData.startY));
};for(id in dependentHash){var parentElement=mElements[id];
var children=dependentHash[id];
for(var i=0;
i<children.length;
++i){var childElement=mElements[children[i]];
childElement.setFlexX(parentElement.getFlexX());
childElement.setFlexY(parentElement.getFlexY());
}}};
self.onMouseHover=function(evt){if(mCurrentHoverArea!=null&&mCurrentHoverArea.hitTest&&mCurrentHoverArea.hitTest(evt)){if(mCandidateTimer!=null){window.clearTimeout(mCandidateTimer);
mCandidateTimer=null;
};return false;
};var magnetic=(mCurrentHoverArea!=null&&mCurrentHoverArea.isMagnetic());
var keepArea=false;
var toShow=null;
var toShowPriority;
var minDistance=-1;
var areas=[];
var areaContent={};
var mapZoom=self.getMap().getVisibleZoom();
for(var id in mHoverAreas){var hoverArea=mHoverAreas[id];
var distance=hoverArea.getSquareDistance(evt);
if(distance>=0&&hoverArea.getVisibleMinZoom()>=mapZoom&&hoverArea.getVisibleMaxZoom()<=mapZoom){areas.push(hoverArea);
if(magnetic&&hoverArea==mCurrentHoverArea){keepArea=true;
};if(minDistance<0||distance<=minDistance){var priority=hoverArea.getPriority();
if(distance==minDistance){if(priority<=toShowPriority){continue;
}};minDistance=distance;
toShow=hoverArea;
toShowPriority=priority;
}}};if(keepArea){toShow=mCurrentHoverArea;
};if(mCandidateTimer!=null&&toShow!=mCandidateHoverArea){window.clearTimeout(mCandidateTimer);
mCandidateTimer=null;
};if(toShow!=null){var extendedEventInfo=toShow.getExtendedEventInfo();
if(extendedEventInfo!=null){for(var key in extendedEventInfo){evt[key]=extendedEventInfo[key];
}};var areaCount=areas.length;
for(var i=0;
i<areaCount;
++i){if(areas[i]==toShow){areas.splice(i,1);
break;
}};evt.otherAreas=areas;
if(toShow==mCurrentHoverArea){toShow.onHover(evt);
}else{mCandidateEvent=evt;
if(mCandidateTimer==null){mCandidateHoverArea=toShow;
mCandidateTimer=window.setTimeout(function(){if(mCandidateTimer==null){return;
};mCandidateTimer=null;
if(mCandidateHoverArea==null){return;
};if(mCurrentHoverArea!=null){mCurrentHoverArea.onUnhover(mCandidateEvent);
};mCandidateHoverArea.onHover(mCandidateEvent);
mCurrentHoverArea=mCandidateHoverArea;
},self.getHoverDelay());
}}};if(toShow!=mCurrentHoverArea){if(mCurrentHoverArea!=null&&mCurrentHoverArea.testUnhover(evt)){mCurrentHoverArea.onUnhover(evt);
mCurrentHoverArea=null;
}};return false;
};
self.onMouseDown=function(evt){if(evt.shiftKey){return true;
};var target=(evt.srcElement?evt.srcElement:evt.target);
var ignore=false;
while(target){ignore=target._ignoreMouseDown;
if(ignore){break;
};target=target.parentNode;
};return(ignore?true:false);
};
self.onMouseWheel=function(evt){var target=(evt.srcElement?evt.srcElement:evt.target);
var ignore=false;
while(target){ignore=target._ignoreMouseWheel;
if(ignore){break;
};target=target.parentNode;
};if(ignore){evt.dontPreventDefault=true;
};return(ignore?true:false);
};
self.onMouseUp=function(evt){var target=(evt.srcElement?evt.srcElement:evt.target);
var ignore=false;
while(target){ignore=target._ignoreMouseUp;
if(ignore){break;
};target=target.parentNode;
};return(ignore?true:false);
};
self.onSelectStart=function(evt){var target=(evt.srcElement?evt.srcElement:evt.target);
var allowSelection=false;
while(target){allowSelection=target._allowSelection;
if(allowSelection){break;
};target=target.parentNode;
};return(allowSelection?true:false);
};
var onMouseClick=function(evt,clickAreas){var clicked=null;
var clickedPriority=null;
var minDistance=-1;
var mapZoom=self.getMap().getVisibleZoom();
for(var id in clickAreas){var clickArea=clickAreas[id];
var distance=clickArea.getSquareDistance(evt);
if(distance>=0&&clickArea.getVisibleMinZoom()>=mapZoom&&clickArea.getVisibleMaxZoom()<=mapZoom){var priority=clickArea.getPriority();
if(clickedPriority!=null&&priority<clickedPriority){continue;
};if(priority==clickedPriority&&distance>=minDistance){continue;
};minDistance=distance;
clicked=clickArea;
clickedPriority=priority;
}};if(clicked!=null){var extendedEventInfo=clicked.getExtendedEventInfo();
if(extendedEventInfo!=null){for(var key in extendedEventInfo){evt[key]=extendedEventInfo[key];
}};clicked.onClick(evt);
return true;
};return false;
};
self.onMouseClick=function(evt){mInRemoveOnClick=true;
for(var id in mRemoveOnClick){self.removeElement(id);
};mRemoveOnClick={};
mInRemoveOnClick=false;
return onMouseClick(evt,mClickAreas);
};
self.onRightMouseClick=function(evt){return onMouseClick(evt,mRightClickAreas);
};
self.addElement=function(element,deferSorting){if(element instanceof map.vector.AggregateElement){return self.addAggregateElement(element);
};var id=element.getId();
if(id==null){id=getUniqueId();
element.setId(id);
};if(mElements[id]!=null){self.removeElement(id);
};if(deferSorting){mElementIds.push(id);
mElementIdsSorted=false;
}else{var priority=element.getPriority();
if(mElementIds.length==0){mElementIds.push(id);
}else if(mElements[mElementIds[mElementIds.length-1]].getPriority()<=priority){mElementIds.push(id);
}else{for(var i=0;
mElements[mElementIds[i]].getPriority()<=priority;
++i);
mElementIds.splice(i,0,id);
}};mElements[id]=element;
element.fixPriority();
if(element instanceof map.vector.AbstractHoverArea){mHoverAreas[id]=element;
};if(element instanceof map.vector.RightClickArea){mRightClickAreas[id]=element;
}else if(element instanceof map.vector.ClickArea){mClickAreas[id]=element;
};if(element.isPositionFlexible()){mFlexibleElementIds.push(id);
};element.setVectorLayer(self);
self.onViewChanged();
return id;
};
var removeElement=function(id){var element=mElements[id];
if(element!=null){for(var i=0;
i<mElementIds.length;
++i){if(mElementIds[i]==id){mElementIds.splice(i,1);
break;
}};delete mElements[id];
}};
self.addAggregateElement=function(aggregateElement){var id=aggregateElement.getId();
if(id==null){id=getUniqueId();
aggregateElement.setId(id);
};if(mAggregateElements[id]!=null){self.removeElement(id);
};mAggregateElements[id]=aggregateElement;
aggregateElement.setVectorLayer(self);
return id;
};
var removeAggregateElement=function(id){var aggregateElement=mAggregateElements[id];
if(aggregateElement!=null){aggregateElement.clear();
delete mAggregateElements[id];
if(aggregateElement.getAutoDispose()){aggregateElement.dispose();
};return true;
};return false;
};
self.removeElement=function(id){if(!mInRemoveOnClick){delete mRemoveOnClick[id];
};if(!removeAggregateElement(id)){var element=mElements[id];
if(element!=null){element.clear();
removeElement(id);
delete mHoverAreas[id];
delete mClickAreas[id];
delete mRightClickAreas[id];
for(var i=0;
i<mFlexibleElementIds.length;
i++){if(mFlexibleElementIds[i]==id){mFlexibleElementIds.splice(i,1);
break;
}};if(element==mCurrentHoverArea){mCurrentHoverArea=null;
};if(element==mCandidateHoverArea){mCandidateHoverArea=null;
};if(element.getAutoDispose()){element.dispose();
};self.onViewChanged();
}}};
self.hideElement=function(id){self.removeElement(id);
};
self.removeAllElements=function(){var aggregateIds=[];
for(var id in mAggregateElements){aggregateIds.push(id);
};var count=aggregateIds.count;
for(var i=0;
i<count;
++i){self.removeElement(aggregateIds[i]);
}while(mElementIds.length>0){self.removeElement(mElementIds[0]);
}};
self.elementExists=function(id){if(id in mAggregateElements){return true;
};return(id in mElements);
};
self.removeOnClick=function(id){mRemoveOnClick[id]=null;
};
self.getElement=function(id){var retVal=mAggregateElements[id];
if(retVal!=null){return retVal;
};return mElements[id];
};
self.showLine=function(color,pixelSize,coordinates,priority,id){return self.addElement(new map.vector.Line(color,pixelSize,coordinates,priority,id));
};
self.showCircle=function(x,y,color,pixelSize,priority,id,isPositionFlexible){return self.addElement(new map.vector.Circle(x,y,color,pixelSize,priority,id,isPositionFlexible));
};
self.showText=function(x,y,color,pixelSize,alignment,text,priority,id,isPositionFlexible){return self.addElement(new map.vector.Text(x,y,color,pixelSize,alignment,text,priority,id,isPositionFlexible));
};
self.showPoly=function(color,coordinates,priority,id){return self.addElement(new map.vector.Poly(color,coordinates,priority,id));
};
self.showImageMarker=function(x,y,url,alignment,priority,id,isPositionFlexible){return self.addElement(new map.vector.ImageMarker(x,y,url,alignment,priority,id,isPositionFlexible));
};
self.showInfoBox=function(x,y,text,alignment,priority,id,isPositionFlexible){return self.addElement(new map.vector.InfoBox(x,y,text,alignment,priority,id,isPositionFlexible));
};
self.showTooltip=function(x,y,maxZoom,tolerance,text,alignment,priority,id,isPositionFlexible){return self.addElement(new map.vector.Tooltip(x,y,maxZoom,tolerance,text,alignment,priority,id,isPositionFlexible));
};
self.addHoverArea=function(x,y,maxZoom,tolerance,hoverHandler,unhoverHandler,priority,id,isPositionFlexible){return self.addElement(new map.vector.HoverArea(x,y,maxZoom,tolerance,hoverHandler,unhoverHandler,priority,id,isPositionFlexible));
};
self.addClickArea=function(x,y,maxZoom,tolerance,handler,priority,id,isPositionFlexible){return self.addElement(new map.vector.ClickArea(x,y,maxZoom,tolerance,handler,priority,id,isPositionFlexible));
};
self.addRightClickArea=function(x,y,maxZoom,tolerance,handler,priority,id,isPositionFlexible){return self.addElement(new map.vector.RightClickArea(x,y,maxZoom,tolerance,handler,priority,id,isPositionFlexible));
};
self.showPOI=function(x,y,url,alignment,tooltipContent,infoBoxContent,priority,id,isPositionFlexible){return self.addElement(new map.vector.POI(x,y,url,alignment,tooltipContent,infoBoxContent,priority,id,isPositionFlexible));
};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};self.getMap().getController().removeEventListener("changeActiveLayer",onActiveLayerChanged);
for(var id in mAggregateElements){var aggregateElement=mAggregateElements[id];
if(aggregateElement.getAutoDispose()){aggregateElement.dispose();
}};for(var id in mElements){var element=mElements[id];
if(element.getAutoDispose()){element.dispose();
}};if(mCandidateTimer!=null){window.clearTimeout(mCandidateTimer);
mCandidateTimer=null;
};mCandidateEvent=null;
superDispose.call(self);
};
});
qxp.OO.addProperty({name:"useAutoBulkMode",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:true});
qxp.OO.addProperty({name:"flexAtSamePosition",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:false});
qxp.OO.addProperty({name:"hoverDelay",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:0});
qxp.Class.ALIGN_LEFT=1;
qxp.Class.ALIGN_MID_HORIZ=2;
qxp.Class.ALIGN_RIGHT=4;
qxp.Class.ALIGN_TOP=16;
qxp.Class.ALIGN_MID_VERT=32;
qxp.Class.ALIGN_BOTTOM=64;
qxp.Class.MAX_FLEX_DISTANCE=50;




/* ID: com.ptvag.webcomponent.map.layer.AddressLookupLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.AddressLookupLayer",com.ptvag.webcomponent.map.layer.VectorLayer,function(floaterLayer,isSecondary){com.ptvag.webcomponent.map.layer.VectorLayer.call(this,floaterLayer,(isSecondary==null?true:isSecondary));
var self=this;
var mapPackage=com.ptvag.webcomponent.map;
var vectorPackage=mapPackage.vector;
var CoordUtil=mapPackage.CoordUtil;
var mAddressBox=null;
var mCurrentCall=null;
var locationCallback=function(result,exc){mCurrentCall=null;
var html=mapPackage.layer.AddressLookupLayer.formatAddress(result);
mAddressBox.setText(html);
self.addElement(mAddressBox);
};
self.onMouseClick=function(evt){if(mCurrentCall!=null){mapPackage.SERVICE.abort(mCurrentCall);
mCurrentCall=null;
};if(mAddressBox!=null){self.removeElement(mAddressBox.getId());
mAddressBox.dispose();
mAddressBox=null;
};var suPoint=self.getMap().translateMouseCoords(evt);
var mercPoint=CoordUtil.smartUnit2Mercator(suPoint);
mAddressBox=new vectorPackage.InfoBox(suPoint.x,suPoint.y);
mAddressBox.setId("theBox");
mCurrentCall=mapPackage.SERVICE.callAsync(locationCallback,"locationToAddress",mercPoint.x,mercPoint.y);
return true;
};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};if(mCurrentCall!=null){mapPackage.SERVICE.abort(mCurrentCall);
mCurrentCall=null;
};if(mAddressBox!=null){mAddressBox.dispose();
mAddressBox=null;
};superDispose.call(self);
};
});
qxp.Class.formatAddress=function(address){var MapUtil=com.ptvag.webcomponent.map.MapUtil;
var html="";
if(address!=null){if(address.street){var text=address.street;
if(address.houseNumber){text+=" "+address.houseNumber;
};html+=MapUtil.escapeHTML(text);
};text="";
if(address.postCode){text+=address.postCode;
};if(address.city){if(text.length>0){text+=" ";
};text+=address.city;
};if(text.length>0){html+="<br />";
html+=MapUtil.escapeHTML(text);
}};return html;
};




/* ID: com.ptvag.webcomponent.map.layer.AbstractMapLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.AbstractMapLayer",com.ptvag.webcomponent.map.layer.AbstractStaticAreaLayer,function(requestBuilder){com.ptvag.webcomponent.map.layer.AbstractStaticAreaLayer.call(this);
var self=this;
var map=com.ptvag.webcomponent.map;
var mOverlayElem;
var mStartMouseX;
var mStartMouseY;
var mInPanningMode=false;
var mInZoomBoxMode=false;
var mWheelTimeout=null;
var mWheelTicks;
var mNoAreaOpacityError=false;
var superInit=self.init;
self.init=function(){mNoAreaOpacityError=true;
superInit.apply(self,arguments);
var parentElement=self.getParentElement();
var areaElem=document.createElement("div");
areaElem.style.position="absolute";
areaElem.style.left="0px";
areaElem.style.top="0px";
if(!self.isRelative()&&!self.getMap().getTileDebugMode()){areaElem.style.overflow="hidden";
};var areaBorderWidth=self.getAreaBorderWidth();
if(areaBorderWidth){areaElem.style.border=areaBorderWidth+"px solid #808080";
};parentElement.appendChild(areaElem);
self._modifyOverlayOpacity(self.getOverlayOpacity());
self._modifyLayerOpacity(self.getLayerOpacity());
self.setAreaElement(areaElem);
mNoAreaOpacityError=false;
};
var superModifyAreaOpacity=self._modifyAreaOpacity;
self._modifyAreaOpacity=function(){if(!mNoAreaOpacityError){throw new Error("Don't set the areaOpacity for map layers - use layerOpacity instead");
};superModifyAreaOpacity.call(self,1);
};
self._modifyLayerOpacity=function(propValue){var parentElement=self.getParentElement();
if(parentElement!=null){map.MapUtil.setElementOpacity(parentElement,propValue);
}};
self._modifyOverlayOpacity=function(propValue){if(propValue==0){if(mOverlayElem!=null){mOverlayElem.parentNode.removeChild(mOverlayElem);
mOverlayElem=null;
}}else{if(mOverlayElem==null){parentElement=self.getParentElement();
if(parentElement!=null){mOverlayElem=document.createElement("div");
mOverlayElem.style.position="absolute";
mOverlayElem.style.left="0px";
mOverlayElem.style.top="0px";
mOverlayElem.style.width="100%";
mOverlayElem.style.height="100%";
mOverlayElem.style.backgroundColor=self.getOverlayColor();
map.MapUtil.setElementOpacity(mOverlayElem,propValue);
parentElement.appendChild(mOverlayElem);
}}else{map.MapUtil.setElementOpacity(mOverlayElem,propValue);
}}};
self._modifyOverlayColor=function(){if(mOverlayElem!=null){mOverlayElem.style.backgroundColor=self.getOverlayColor();
}};
self.getShownZoom=function(){return self.getMap().getZoom();
};
self.getRequestBuilder=function(){return requestBuilder;
};
self.onMouseDown=function(evt){var EventUtils=com.ptvag.webcomponent.util.EventUtils;
if(evt.shiftKey||evt.altKey||evt.metaKey||(evt.ctrlKey&&!qxp.sys.Client.getInstance().runsOnMacintosh())){return false;
};if(self.isPositionInArea(evt.relMouseX,evt.relMouseY)){cancelMouseAction();
var actionMode=self.getMap().getController().getActionMode();
var actionModeMove=(actionMode==map.MapController.ACTION_MODE_MOVE);
if(actionModeMove?EventUtils.isLeftMouseButton(evt):EventUtils.isRightMouseButton(evt)){mInPanningMode=true;
self.getMap().setCenterIsAdjusting(true);
self.getMap().setCursor("move");
}else if(actionModeMove?EventUtils.isRightMouseButton(evt):EventUtils.isLeftMouseButton(evt)){mInZoomBoxMode=true;
self.getMap().setCursor("crosshair");
};self.getMap().getController().setActiveLayer(self);
mStartMouseX=evt.relMouseX;
mStartMouseY=evt.relMouseY;
return true;
};return false;
};
self.onMouseUp=function(evt){var retVal=false;
if(mInPanningMode||mInZoomBoxMode){retVal=true;
var distanceX=mStartMouseX-evt.relMouseX;
var distanceY=mStartMouseY-evt.relMouseY;
var distanceSquared=distanceX*distanceX+distanceY*distanceY;
if(distanceSquared<=map.layer.AbstractMapLayer.MAX_CLICK_TOLERANCE_SQUARED){retVal=false;
};self.getMap().startLoggingAction(mInPanningMode?"user:move":"user:rectZoom");
try{if(mInZoomBoxMode){cancelMouseAction();
var areaLeft=self.getComputedAreaLeft();
var areaTop=self.getComputedAreaTop();
var areaWidth=self.getComputedAreaWidth();
var areaHeight=self.getComputedAreaHeight();
var boxEndX=Math.max(areaLeft,Math.min(areaLeft+areaWidth,evt.relMouseX));
var boxEndY=Math.max(areaTop,Math.min(areaTop+areaHeight,evt.relMouseY));
var startRelPix=getPositionFromCenter({x:mStartMouseX,y:mStartMouseY});
var endRelPix=getPositionFromCenter({x:boxEndX,y:boxEndY});
var boxWidthPix=Math.abs(startRelPix.x-endRelPix.x);
var boxHeightPix=Math.abs(startRelPix.y-endRelPix.y);
var minBoxSize=map.layer.AbstractMapLayer.MIN_ZOOM_BOX_SIZE;
if(boxWidthPix>minBoxSize&&boxHeightPix>minBoxSize){var shownZoom=self.getShownZoom();
var mapZoom=self.getMap().getZoom();
var zoomFactor=Math.pow(map.CoordUtil.ZOOM_LEVEL_FACTOR,shownZoom-mapZoom);
var mapCenterSu=self.getMap().getCenter();
var mapCenterAbsPix=map.CoordUtil.smartUnit2Pixel(mapCenterSu,shownZoom);
var boxCenterAbsPix={x:mapCenterAbsPix.x+(startRelPix.x+endRelPix.x)/2,y:mapCenterAbsPix.y-(startRelPix.y+endRelPix.y)/2};
var boxCenterSu=map.CoordUtil.pixel2SmartUnit(boxCenterAbsPix,shownZoom);
var suPerPixel=map.CoordUtil.getSmartUnitsPerPixel(shownZoom);
var boxWidthSu=boxWidthPix*suPerPixel;
var boxHeightSu=boxHeightPix*suPerPixel;
var newSuPerPixel;
if(self.getApplyZoomRectToMainMap()){var mapWidthPix=self.getMap().getWidth();
var mapHeightPix=self.getMap().getHeight();
newSuPerPixel=Math.max(boxWidthSu/mapWidthPix,boxHeightSu/mapHeightPix);
}else{var scaledAreaWidthPix=areaWidth*zoomFactor;
var scaledAreaHeightPix=areaWidth*zoomFactor;
newSuPerPixel=Math.max(boxWidthSu/scaledAreaWidthPix,boxHeightSu/scaledAreaHeightPix);
};var alreadyInBulkMode=self.getMap().inBulkMode();
if(!alreadyInBulkMode){self.getMap().startBulkMode();
};self.getMap().setZoomInSmartUnitsPerPixel(newSuPerPixel);
self.getMap().setCenter(boxCenterSu);
if(!alreadyInBulkMode){self.getMap().endBulkMode();
}}}else{cancelMouseAction();
}}finally{self.getMap().endLoggingAction();
}};return retVal;
};
self.onMouseOut=function(evt){if(mInPanningMode){self.getMap().startLoggingAction("user:move");
try{cancelMouseAction();
}finally{self.getMap().endLoggingAction();
}}else{cancelMouseAction();
};return false;
};
self.onMouseMove=function(evt){var mapInstance=self.getMap();
var lastMousePos=mapInstance.getController().getLastMousePositon();
if(mInPanningMode&&lastMousePos.x&&lastMousePos.y){var shownZoom=self.getShownZoom();
var centerSu=mapInstance.getCenter();
var centerPix=map.CoordUtil.smartUnit2Pixel(centerSu,shownZoom);
var offsetX=lastMousePos.x-evt.relMouseX;
var offsetY=lastMousePos.y-evt.relMouseY;
var newCenterPix={x:centerPix.x+offsetX,y:centerPix.y-offsetY};
var animate=mapInstance.getAnimate();
if(animate){mapInstance.setAnimate(false);
};var autoBulkMode=mapInstance.getUseAutoBulkMode();
if(autoBulkMode){mapInstance.setUseAutoBulkMode(false);
};var relativeOffset=mapInstance.getRelativeOffset();
mapInstance.setRelativeOffset({x:relativeOffset.x+offsetX,y:relativeOffset.y+offsetY});
mapInstance.setCenter(map.CoordUtil.pixel2SmartUnit(newCenterPix,shownZoom));
if(animate){mapInstance.setAnimate(true);
};if(autoBulkMode){mapInstance.setUseAutoBulkMode(true);
}}else if(mInZoomBoxMode){var areaLeft=self.getComputedAreaLeft();
var areaTop=self.getComputedAreaTop();
var areaWidth=self.getComputedAreaWidth();
var areaHeight=self.getComputedAreaHeight();
var boxEndX=Math.max(areaLeft,Math.min(areaLeft+areaWidth,evt.relMouseX));
var boxEndY=Math.max(areaTop,Math.min(areaTop+areaHeight,evt.relMouseY));
mapInstance.showZoomBox(mStartMouseX,mStartMouseY,boxEndX,boxEndY);
};return false;
};
var zoomToMouse=function(mouseX,mouseY,zoomDelta){var oldZoom=self.getMap().getZoom();
var newZoom=self.getMap()._checkZoom(oldZoom+zoomDelta);
if(oldZoom!=newZoom){var shownZoom=self.getShownZoom();
var zoomFactor=Math.pow(map.CoordUtil.ZOOM_LEVEL_FACTOR,shownZoom-oldZoom);
var fromCenterPix=getPositionFromCenter({x:mouseX,y:mouseY});
var oldCenterSu=self.getMap().getCenter();
var oldCenterPix=map.CoordUtil.smartUnit2Pixel(oldCenterSu,oldZoom);
var oldAimingPix={x:oldCenterPix.x+fromCenterPix.x*zoomFactor,y:oldCenterPix.y-fromCenterPix.y*zoomFactor};
var aimingSuPt=map.CoordUtil.pixel2SmartUnit(oldAimingPix,oldZoom);
self.getMap().startLoggingAction("user:mousewheelZoom");
try{var alreadyInBulkMode=self.getMap().inBulkMode();
if(!alreadyInBulkMode){self.getMap().startBulkMode();
};self.getMap().setZoom(newZoom);
var newAimingPix=map.CoordUtil.smartUnit2Pixel(aimingSuPt,newZoom);
var newCenterPix={x:newAimingPix.x-fromCenterPix.x*zoomFactor,y:newAimingPix.y+fromCenterPix.y*zoomFactor};
self.getMap().setCenterInPixel(newCenterPix);
if(!alreadyInBulkMode){self.getMap().endBulkMode();
}}finally{self.getMap().endLoggingAction();
}}};
self.onMouseWheel=function(evt){var lastMousePos=self.getMap().getController().getLastMousePositon();
if(self.getMap().getAllowMouseWheelZoom()&&self.isPositionInArea(lastMousePos.x,lastMousePos.y)){if(self.getMap().getController().getActiveLayer()==null){var wheelTicks=evt.wheelTicks;
if(self.getMap().getInverseWheelZoom()){wheelTicks=-wheelTicks;
};if(mWheelTimeout!=null){window.clearTimeout(mWheelTimeout);
mWheelTicks+=wheelTicks;
}else{mWheelTicks=wheelTicks;
};mWheelTimeout=window.setTimeout(function(){if(mWheelTimeout==null){return;
};mWheelTimeout=null;
zoomToMouse(lastMousePos.x,lastMousePos.y,mWheelTicks);
},150);
};return true;
};return false;
};
self.onMouseDblClick=function(evt){var lastMousePos=self.getMap().getController().getLastMousePositon();
if(self.getMap().getAllowDoubleClickZoom()&&self.isPositionInArea(lastMousePos.x,lastMousePos.y)){if(self.getMap().getController().getActiveLayer()==null){zoomToMouse(lastMousePos.x,lastMousePos.y,-2);
};return true;
};return false;
};
self.onKeyDown=function(evt){var EventUtils=com.ptvag.webcomponent.util.EventUtils;
if(mInZoomBoxMode&&evt.keyCode==EventUtils.KEY_CODE_ESC){cancelMouseAction();
self.getMap().getController().ignoreNextClick();
return true;
};return false;
};
var getPositionFromCenter=function(relPixPoint){return{x:relPixPoint.x-self.getComputedAreaLeft()-self.getComputedAreaWidth()/2,y:relPixPoint.y-self.getComputedAreaTop()-self.getComputedAreaHeight()/2};
};
var cancelMouseAction=function(){if(mInZoomBoxMode){self.getMap().hideZoomBox();
};self.getMap().setCursor("");
self.getMap().setCenterIsAdjusting(false);
self.getMap().getController().setActiveLayer(null);
mInPanningMode=false;
mInZoomBoxMode=false;
};
self.isInZoomBoxMode=function(){return mInZoomBoxMode;
};self.setServerLayerVisible=function(layer,visible){requestBuilder.setVisible(layer,visible);
};
self.doPrintStaticArea=function(ctx,htmlContainer,htmlBackground){ctx.globalAlpha=self.getLayerOpacity();
self.doPrintMap(ctx,htmlContainer,htmlBackground);
var areaBorderWidth=self.getAreaBorderWidth();
if(areaBorderWidth){ctx.strokeStyle="rgb(128, 128, 128)";
ctx.lineWidth=areaBorderWidth;
ctx.lineCap="butt";
ctx.lineJoin="miter";
ctx.beginPath();
ctx.rect(parseInt(self.getComputedAreaLeft()+areaBorderWidth/2),parseInt(self.getComputedAreaTop()+areaBorderWidth/2),self.getComputedAreaWidth()-areaBorderWidth,self.getComputedAreaHeight()-areaBorderWidth);
ctx.stroke();
};var overlayOpacity=self.getOverlayOpacity();
if(overlayOpacity!=0){ctx.globalAlpha=overlayOpacity;
ctx.fillStyle=self.getOverlayColor();
ctx.beginPath();
ctx.rect(self.getComputedAreaLeft(),self.getComputedAreaTop(),self.getComputedAreaWidth(),self.getComputedAreaHeight());
ctx.fill();
};ctx.globalAlpha=1;
};
self.doPrintMap=function(ctx,htmlContainer,htmlBackground){};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};mOverlayElem=null;
superDispose.call(self);
};
});
qxp.Class.MIN_ZOOM_BOX_SIZE=10;
qxp.Class.MAX_CLICK_TOLERANCE=5;
qxp.Class.MAX_CLICK_TOLERANCE_SQUARED=qxp.Class.MAX_CLICK_TOLERANCE*qxp.Class.MAX_CLICK_TOLERANCE;
qxp.OO.changeProperty({name:"areaLeft",type:qxp.constant.Type.NUMBER,defaultValue:0});
qxp.OO.changeProperty({name:"areaRight",type:qxp.constant.Type.NUMBER,defaultValue:0});
qxp.OO.changeProperty({name:"areaTop",type:qxp.constant.Type.NUMBER,defaultValue:0});
qxp.OO.changeProperty({name:"areaBottom",type:qxp.constant.Type.NUMBER,defaultValue:0});
qxp.OO.changeProperty({name:"areaOpacity",type:qxp.constant.Type.NUMBER,defaultValue:1});
qxp.OO.addProperty({name:"overlayColor",type:qxp.constant.Type.STRING,defaultValue:"#000000"});
qxp.OO.addProperty({name:"overlayOpacity",type:qxp.constant.Type.NUMBER,defaultValue:0});
qxp.OO.addProperty({name:"layerOpacity",type:qxp.constant.Type.NUMBER,defaultValue:1});
qxp.OO.addProperty({name:"applyZoomRectToMainMap",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:true});




/* ID: com.ptvag.webcomponent.map.vector.DynamicTooltip */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.DynamicTooltip",com.ptvag.webcomponent.map.vector.Tooltip,function(x,y,maxZoom,tolerance,contentProvider,alignment,priority,id,isPositionFlexible){com.ptvag.webcomponent.map.vector.Tooltip.call(this,x,y,maxZoom,tolerance,"",alignment,priority,id,isPositionFlexible);
var self=this;
var map=com.ptvag.webcomponent.map;
var superOnHover=self.onHover;
self.onHover=function(evt){var contentProvider=self.getContentProvider();
var forceChange=false;
if(contentProvider){var newText=contentProvider(self,evt);
if(newText!=self.getText()){self.setText(newText);
}};superOnHover.call(this,evt);
};
self.setContentProvider(contentProvider);
});
qxp.OO.addProperty({name:"contentProvider",type:qxp.constant.Type.FUNCTION,allowNull:true,defaultValue:null});




/* ID: com.ptvag.webcomponent.map.layer.SimpleMapLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.SimpleMapLayer",com.ptvag.webcomponent.map.layer.AbstractMapLayer,function(requestBuilder){com.ptvag.webcomponent.map.layer.AbstractMapLayer.call(this,requestBuilder);
var self=this;
var map=com.ptvag.webcomponent.map;
var mRequestRunning=false;
var mPendingRequest;
var mImgInfo;
var mLoadingImgInfo;
var mLastRequestedImgInfo;
var mVisibleSectionMarker;
var mPOIService=null;
var mPOICall=null;
var superInit=self.init;
self.init=function(){superInit.apply(self,arguments);
mPOIService=com.ptvag.webcomponent.map.SERVICE;
mImgInfo=createImgInfo();
mLoadingImgInfo=createImgInfo();
mLastRequestedImgInfo=mImgInfo;
self.getMap().getController().addEventListener("changeActiveLayer",onActiveLayerChanged);
requestBuilder.addEventListener("poiCategoriesChanged",onPOICategoriesChanged);
requestBuilder.addEventListener("changeHint",onHintChanged);
self.getMap().addEventListener("newMapSession",onNewMapSession);
var zoomDifference=self.getZoomDifference();
if(zoomDifference!=0){mVisibleSectionMarker=document.createElement("div");
mVisibleSectionMarker.style.position="absolute";
mVisibleSectionMarker.style.border="1px solid #808080";
self.getAreaElement().appendChild(mVisibleSectionMarker);
positionVisibleSectionMarker();
self.getAreaElement().style.backgroundColor="silver";
};updateImage({});
};
var createImgInfo=function(){var imgElem=document.createElement("img");
imgElem.style.position="absolute";
imgElem.style.MozUserSelect="none";
imgElem.style.visibility="hidden";
self.getAreaElement().appendChild(imgElem);
return{imgElem:imgElem,center:{}};
};
var cleanUpImgInfo=function(imgInfo){imgInfo.imgElem=null;
};
var positionVisibleSectionMarker=function(){if(mVisibleSectionMarker){var mapWidth=self.getMap().getWidth();
var mapHeight=self.getMap().getHeight();
var zoomDifference=self.getZoomDifference();
var zoomFactor=Math.pow(map.CoordUtil.ZOOM_LEVEL_FACTOR,zoomDifference);
var markerWidth=mapWidth/zoomFactor+2;
var markerHeight=mapHeight/zoomFactor+2;
var areaWidth=self.getComputedAreaWidth();
var areaHeight=self.getComputedAreaHeight();
var areaBorderWidth=self.getAreaBorderWidth();
if(map.MapUtil.isBorderBoxSizingActive()){var elementWidth=markerWidth;
var elementHeight=markerHeight;
}else{elementWidth=markerWidth-2;
elementHeight=markerHeight-2;
};mVisibleSectionMarker.style.left=Math.round((areaWidth-markerWidth)/2)-areaBorderWidth+"px";
mVisibleSectionMarker.style.width=Math.round(elementWidth)+"px";
mVisibleSectionMarker.style.top=Math.round((areaHeight-markerHeight)/2)-areaBorderWidth+"px";
mVisibleSectionMarker.style.height=Math.round(elementHeight)+"px";
}};
var superModifyComputedAreaWidth=self._modifyComputedAreaWidth;
self._modifyComputedAreaWidth=function(){positionVisibleSectionMarker();
superModifyComputedAreaWidth.apply(self,arguments);
};
var superModifyComputedAreaHeight=self._modifyComputedAreaHeight;
self._modifyComputedAreaHeight=function(){positionVisibleSectionMarker();
superModifyComputedAreaHeight.apply(self,arguments);
};
var onActiveLayerChanged=function(evt){try{if(self.isNoLayerActive()){updateImage({});
}}catch(e){self.error("Error in onActiveLayerChanged in SimpleMapLayer",e);
}};
var onPOICategoriesChanged=function(evt){updateImage({},true,"mapapi:poiCategoriesChanged");
};
var onHintChanged=function(){updateImage({},true,"mapapi:hintChanged");
};var onNewMapSession=function(evt){if(requestBuilder.isTransparent()){updateImage({},true,"mapapi:session");
}};
var superOnViewChanged=self.onViewChanged;
self.onViewChanged=function(evt){superOnViewChanged.apply(self,arguments);
updateImage(evt);
};
self.getShownZoom=function(){return self.getMap().getZoom()+self.getZoomDifference();
};
var superSetServerLayerVisible=self.setServerLayerVisible;
self.setServerLayerVisible=function(){superSetServerLayerVisible.apply(self,arguments);
updateImage({},true,"mapapi:serverLayersChanged");
};
var updateImage=function(evt,forceUpdate,localLoggingInfo){if(!self.isEnabled()){return;
};loadImage(forceUpdate||evt.clipRectChanged,localLoggingInfo);
self.positionImage(mImgInfo);
self.positionImage(mLoadingImgInfo,true);
};
var loadImage=function(forceUpdate,loggingInfo){var theMap=self.getMap();
centerSu=theMap.getCenter();
zoom=self.getShownZoom();
var width=self.getComputedAreaWidth();
var height=self.getComputedAreaHeight();
var borderWidth=self.getBorderWidth();
width+=2*borderWidth;
height+=2*borderWidth;
if(self.isNoLayerActive()&&(forceUpdate||mLastRequestedImgInfo.zoom!=zoom||mLastRequestedImgInfo.center.x!=centerSu.x||mLastRequestedImgInfo.center.y!=centerSu.y||mLastRequestedImgInfo.requestWidth!=width||mLastRequestedImgInfo.requestHeight!=height)){if(loggingInfo==null){loggingInfo=self.getMap().getLoggingInfo();
};if(mRequestRunning){mPendingRequest=[forceUpdate,loggingInfo];
return;
}}else{return;
};mRequestRunning=true;
mLoadingImgInfo.center=centerSu;
mLoadingImgInfo.zoom=zoom;
mLoadingImgInfo.requestWidth=width;
mLoadingImgInfo.requestHeight=height;
mLoadingImgInfo.loaded=null;
mLastRequestedImgInfo=mLoadingImgInfo;
var centerPix=map.CoordUtil.smartUnit2Pixel(centerSu,zoom);
var fromPix={x:centerPix.x-width/2,y:centerPix.y-height/2};
var toPix={x:centerPix.x+width/2,y:centerPix.y+height/2};
var fromSu=map.CoordUtil.pixel2SmartUnit(fromPix,zoom);
var toSu=map.CoordUtil.pixel2SmartUnit(toPix,zoom);
var fromMerc=map.CoordUtil.smartUnit2Mercator(fromSu);
var toMerc=map.CoordUtil.smartUnit2Mercator(toSu);
var left=Math.round(fromMerc.x);
var bottom=Math.round(fromMerc.y);
var right=Math.round(toMerc.x);
var top=Math.round(toMerc.y);
var imgInfo=requestBuilder.buildRequest(left,top,right,bottom,width,height,loggingInfo);
if(imgInfo.completelyClipped){mRequestRunning=false;
}else{mLoadingImgInfo.clipLeft=imgInfo.clipLeft;
mLoadingImgInfo.clipTop=imgInfo.clipTop;
mLoadingImgInfo.width=imgInfo.width;
mLoadingImgInfo.height=imgInfo.height;
mLoadingImgInfo.loaded=false;
mLoadingImgInfo.imageId=imgInfo.imageId;
mLoadingImgInfo.visibleZoom=null;
map.ImageLoader.loadImage(mLoadingImgInfo.imgElem,imgInfo.url,onImageLoaded,100);
}};
var onPOIsLoaded=function(pois,exc){mPOICall=null;
if(exc!=null){var Rpc=qxp.io.remote.Rpc;
if(exc.origin!=Rpc.origin.local||exc.code!=Rpc.localError.abort){self.error("Error loading POI information",exc);
}};var serverDrawnObjectManager=self.getMap().getServerDrawnObjectManager();
if(serverDrawnObjectManager.getRequestBuilder()==requestBuilder){serverDrawnObjectManager.setStaticPOIs(pois);
}else{var layerName=self.getName();
if(layerName==null){layerName="";
};serverDrawnObjectManager.setStaticPOIs(pois,layerName);
}};
var onImageLoaded=function(elem,url,exc){if(exc==null){var oldImgInfo=mImgInfo;
mImgInfo=mLoadingImgInfo;
mLoadingImgInfo=oldImgInfo;
mImgInfo.loaded=true;
mImgInfo.visibleZoom=null;
self.positionImage(mImgInfo);
mLoadingImgInfo.imgElem.style.visibility="hidden";
mLastRequestedImgInfo=mImgInfo;
if(mPOICall!=null){mPOIService.abort(mPOICall);
mPOICall=null;
};if(requestBuilder.supportsServerDrawnObjects()){if(mImgInfo.imageId!=null&&requestBuilder.hasPOICategories()){mPOICall=mPOIService.callAsync(onPOIsLoaded,"getPOIs",mImgInfo.imageId);
}else{var serverDrawnObjectManager=self.getMap().getServerDrawnObjectManager();
if(serverDrawnObjectManager){serverDrawnObjectManager.setStaticPOIs([]);
}}}}else{window.setTimeout(function(){self.error("Could not load image",exc);
},0);
};mRequestRunning=false;
if(mPendingRequest){loadImage.apply(null,mPendingRequest);
self.positionImage(mLoadingImgInfo,true);
mPendingRequest=null;
}};
self.positionImage=function(imgInfo,dontChangeVisibility){if(imgInfo.loaded==null){return;
};var theMap=self.getMap();
var visibleZoom=theMap.getVisibleZoom()+self.getZoomDifference();
var visibleCenter=theMap.getVisibleCenter();
var visibleWidth=self.getComputedAreaWidth();
var visibleHeight=self.getComputedAreaHeight();
if(imgInfo.visibleZoom==visibleZoom&&imgInfo.visibleCenter.x==visibleCenter.x&&imgInfo.visibleCenter.y==visibleCenter.y&&imgInfo.visibleWidth==visibleWidth&&imgInfo.visibleHeight==visibleHeight){return;
};imgInfo.visibleZoom=visibleZoom;
imgInfo.visibleCenter=visibleCenter;
imgInfo.visibleWidth=visibleWidth;
imgInfo.visibleHeight=visibleHeight;
var scaleFactor=map.CoordUtil.getTileWidth(imgInfo.zoom)/map.CoordUtil.getTileWidth(visibleZoom);
var scaledWidth=Math.round(imgInfo.width*scaleFactor);
var scaledHeight=Math.round(imgInfo.height*scaleFactor);
if(scaledWidth>map.MapUtil.MAX_IMAGE_SCALE_WIDTH||scaledHeight>map.MapUtil.MAX_IMAGE_SCALE_WIDTH){if(!dontChangeVisibility){imgInfo.imgElem.style.visibility="hidden";
}}else{if(imgInfo.loaded&&!dontChangeVisibility){imgInfo.imgElem.style.visibility="";
};imgInfo.imgElem.style.width=scaledWidth+"px";
imgInfo.imgElem.style.height=scaledHeight+"px";
var imgCenterPix=map.CoordUtil.smartUnit2Pixel(imgInfo.center,visibleZoom);
var mapCenterPix=map.CoordUtil.smartUnit2Pixel(visibleCenter,visibleZoom);
var offsetX=0;
var offsetY=0;
if(self.isRelative()){var relativeOffset=self.getMap().getRelativeOffset();
offsetX=relativeOffset.x;
offsetY=relativeOffset.y;
};var areaBorderWidth=self.getAreaBorderWidth();
offsetX-=areaBorderWidth;
offsetY-=areaBorderWidth;
imgInfo.imgElem.style.left=offsetX+Math.round((imgInfo.clipLeft*scaleFactor)+(imgCenterPix.x-imgInfo.requestWidth*scaleFactor/2)-(mapCenterPix.x-visibleWidth/2))+"px";
imgInfo.imgElem.style.top=offsetY+Math.round((imgInfo.clipTop*scaleFactor)-(imgCenterPix.y+imgInfo.requestHeight*scaleFactor/2)+(mapCenterPix.y+visibleHeight/2))+"px";
if(self.getUseZoomTransparency()){var opacity=1-Math.max(0,(Math.abs(1-scaleFactor)*self.getZoomTransparencyFactor()));
map.MapUtil.setElementOpacity(imgInfo.imgElem,Math.max(self.getMinZoomOpacity(),opacity));
}}};
self.doPrintMap=function(ctx,htmlContainer,htmlBackground){var left=self.getComputedAreaLeft();
var top=self.getComputedAreaTop();
var width=self.getComputedAreaWidth();
var height=self.getComputedAreaHeight();
if(mImgInfo.loaded){var offsetX=0;
var offsetY=0;
if(self.isRelative()){var relativeOffset=self.getMap().getRelativeOffset();
offsetX=relativeOffset.x;
offsetY=relativeOffset.y;
};var areaBorderWidth=self.getAreaBorderWidth();
offsetX-=areaBorderWidth;
offsetY-=areaBorderWidth;
var url=mImgInfo.imgElem.src;
url=url.replace(new RegExp("&loggingInfo=[^&]*"),"&loggingInfo="+encodeURIComponent("mapapi:printMode"));
ctx.drawImage({src:url},0,0,mImgInfo.width,mImgInfo.height,left+parseInt(mImgInfo.imgElem.style.left)-offsetX,top+parseInt(mImgInfo.imgElem.style.top)-offsetY,parseInt(mImgInfo.imgElem.style.width),parseInt(mImgInfo.imgElem.style.height));
}else{ctx.fillStyle="#ffffff";
ctx.beginPath();
ctx.rect(left,top,width,height);
ctx.fill();
};if(mVisibleSectionMarker){var zoomDifference=self.getZoomDifference();
var zoomFactor=Math.pow(map.CoordUtil.ZOOM_LEVEL_FACTOR,zoomDifference);
var mapWidth=self.getMap().getWidth();
var mapHeight=self.getMap().getHeight();
var markerWidth=mapWidth/zoomFactor+2;
var markerHeight=mapHeight/zoomFactor+2;
var markerLeft=Math.round((width-markerWidth)/2);
var markerTop=Math.round((height-markerHeight)/2);
ctx.strokeStyle="rgb(128, 128, 128)";
ctx.lineWidth=1;
ctx.lineCap="butt";
ctx.lineJoin="miter";
ctx.beginPath();
ctx.rect(left+markerLeft,top+markerTop,Math.round(markerWidth-1),Math.round(markerHeight-1));
ctx.stroke();
}};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};if(mPOICall!=null){mPOIService.abort(mPOICall);
mPOICall=null;
};cleanUpImgInfo(mImgInfo);
cleanUpImgInfo(mLoadingImgInfo);
superDispose.call(self);
};
});
qxp.OO.addProperty({name:"useZoomTransparency",type:qxp.constant.Type.BOOLEAN,defaultValue:true});
qxp.OO.addProperty({name:"zoomTransparencyFactor",type:qxp.constant.Type.NUMBER,defaultValue:0.8});
qxp.OO.addProperty({name:"minZoomOpacity",type:qxp.constant.Type.NUMBER,defaultValue:0.2});
qxp.OO.addProperty({name:"borderWidth",type:qxp.constant.Type.NUMBER,defaultValue:0,allowNull:false});
qxp.OO.addProperty({name:"zoomDifference",type:qxp.constant.Type.NUMBER,defaultValue:0,allowNull:false});




/* ID: com.ptvag.webcomponent.map.layer.StretchedMapLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.StretchedMapLayer",com.ptvag.webcomponent.map.layer.SimpleMapLayer,function(requestBuilder){com.ptvag.webcomponent.map.layer.SimpleMapLayer.call(this,requestBuilder);
var self=this;
var superPositionImage=self.positionImage;
self.positionImage=function(imgInfo,dontChangeVisibility){if(imgInfo.loaded!=null){var areaWidth=self.getComputedAreaWidth();
var areaHeight=self.getComputedAreaHeight();
imgInfo.width=areaWidth;
imgInfo.height=areaHeight;
};superPositionImage.call(self,imgInfo,dontChangeVisibility);
};
});




/* ID: com.ptvag.webcomponent.map.MapController */
qxp.OO.defineClass("com.ptvag.webcomponent.map.MapController",qxp.core.Target,function(targetMap,mainElement){qxp.core.Target.call(this);
var self=this;
var map=com.ptvag.webcomponent.map;
var DomUtils=com.ptvag.webcomponent.util.DomUtils;
var EventUtils=com.ptvag.webcomponent.util.EventUtils;
var mMap=targetMap;
var mMainElement=mainElement;
var mLastMouseX=mMap.getWidth()/2;
var mLastMouseY=mMap.getHeight()/2;
var mHoverTimeout=null;
var mHoverEvent=null;
var mIgnoreNextClick;
self.getLastMousePositon=function(){return{x:mLastMouseX,y:mLastMouseY};
};
var onHoverTimeout=function(){if(mHoverTimeout==null){return;
};mHoverTimeout=null;
try{fireEventToLayers(mHoverEvent,"onMouseHover");
}catch(exc){self.error("handling mouse hover failed",exc);
}};
var cancelHoverTimeout=function(){if(mHoverTimeout!=null){window.clearTimeout(mHoverTimeout);
mHoverTimeout=null;
}};
var setHoverTimeout=function(){if(mHoverTimeout!=null){window.clearTimeout(mHoverTimeout);
};mHoverTimeout=window.setTimeout(onHoverTimeout,map.MapController.HOVER_TIMEOUT);
};
self.ignoreNextClick=function(){mIgnoreNextClick=true;
};
var onComponentMouseDown=function(evt){evt=EventUtils.getEvent(evt);
cancelHoverTimeout();
mIgnoreNextClick=false;
map.MOUSE_BUTTON=EventUtils.getMouseButton(evt);
var allowSelection=false;
try{evt.relMouseX=EventUtils.getAbsoluteMouseX(evt)-DomUtils.getAbsoluteX(mMainElement);
evt.relMouseY=EventUtils.getAbsoluteMouseY(evt)-DomUtils.getAbsoluteY(mMainElement);
fireEventToLayers(evt,"onMouseDown");
var client=qxp.sys.Client.getInstance();
if(client.isGecko()||client.isOpera()){allowSelection=fireEventToLayers(evt,"onSelectStart");
};mLastMouseX=evt.relMouseX;
mLastMouseY=evt.relMouseY;
}catch(exc){self.error("handling mouse down failed",exc);
};if(evt.preventDefault&&!allowSelection){if(mMainElement.focus){mMainElement.focus();
};evt.preventDefault();
};return allowSelection;
};var onComponentMouseUp=function(evt){cancelHoverTimeout();
try{evt=EventUtils.getEvent(evt);
evt.relMouseX=EventUtils.getAbsoluteMouseX(evt)-DomUtils.getAbsoluteX(mMainElement);
evt.relMouseY=EventUtils.getAbsoluteMouseY(evt)-DomUtils.getAbsoluteY(mMainElement);
if(fireEventToLayers(evt,"onMouseUp")){mIgnoreNextClick=true;
}}catch(exc){self.error("handling mouse up failed",exc);
};if(map.MOUSE_BUTTON==EventUtils.MOUSE_BUTTON_LEFT){onComponentMouseClick(evt);
}else if(map.MOUSE_BUTTON==EventUtils.MOUSE_BUTTON_RIGHT){onComponentMouseRightClick(evt);
};mIgnoreNextClick=false;
if(qxp.sys.Client.getInstance().isMobileSafari()){mLastMouseX=null;
onComponentMouseMove(evt);
}};
var onComponentMouseRightClick=function(evt){cancelHoverTimeout();
if(mIgnoreNextClick){return;
};try{evt=EventUtils.getEvent(evt);
evt.relMouseX=EventUtils.getAbsoluteMouseX(evt)-DomUtils.getAbsoluteX(mMainElement);
evt.relMouseY=EventUtils.getAbsoluteMouseY(evt)-DomUtils.getAbsoluteY(mMainElement);
fireEventToLayers(evt,"onRightMouseClick");
}catch(exc){self.error("handling right mouse click failed",exc);
}};
var onComponentMouseClick=function(evt){cancelHoverTimeout();
if(mIgnoreNextClick){return;
};try{evt=EventUtils.getEvent(evt);
evt.relMouseX=EventUtils.getAbsoluteMouseX(evt)-DomUtils.getAbsoluteX(mMainElement);
evt.relMouseY=EventUtils.getAbsoluteMouseY(evt)-DomUtils.getAbsoluteY(mMainElement);
fireEventToLayers(evt,"onMouseClick");
}catch(exc){self.error("handling mouse click failed",exc);
}};
var onComponentMouseDblClick=function(evt){evt=EventUtils.getEvent(evt);
cancelHoverTimeout();
try{evt.relMouseX=EventUtils.getAbsoluteMouseX(evt)-DomUtils.getAbsoluteX(mMainElement);
evt.relMouseY=EventUtils.getAbsoluteMouseY(evt)-DomUtils.getAbsoluteY(mMainElement);
fireEventToLayers(evt,"onMouseDblClick");
}catch(exc){self.error("handling double click failed",exc);
}};
var onComponentMouseOut=function(evt){try{evt=EventUtils.getEvent(evt);
evt.relMouseX=EventUtils.getAbsoluteMouseX(evt)-DomUtils.getAbsoluteX(mMainElement);
evt.relMouseY=EventUtils.getAbsoluteMouseY(evt)-DomUtils.getAbsoluteY(mMainElement);
var width=mMap.getWidth();
var height=mMap.getHeight();
if(evt.relMouseX<0||evt.relMouseY<0||evt.relMouseX>=width||evt.relMouseY>=height){cancelHoverTimeout();
mLastMouseX=null;
mLastMouseY=null;
fireEventToLayers(evt,"onMouseOut");
}}catch(exc){self.error("handling mouse out failed",exc);
}};var onComponentMouseMove=function(evt){var retVal=false;
try{evt=EventUtils.getEvent(evt);
evt.relMouseX=EventUtils.getAbsoluteMouseX(evt)-DomUtils.getAbsoluteX(mMainElement);
evt.relMouseY=EventUtils.getAbsoluteMouseY(evt)-DomUtils.getAbsoluteY(mMainElement);
if(mLastMouseX!=evt.relMouseX||mLastMouseY!=evt.relMouseY){retVal=fireEventToLayers(evt,"onMouseMove");
mLastMouseX=evt.relMouseX;
mLastMouseY=evt.relMouseY;
if(self.getActiveLayer()==null){mHoverEvent=evt;
setHoverTimeout();
}else if(map.MapController.HOVER_TIMEOUT!=0){cancelHoverTimeout();
}}}catch(exc){self.error("handling mouse move failed",exc);
};return retVal;
};var onComponentMouseWheel=function(evt){cancelHoverTimeout();
var evtWasConsumed=false;
try{evt=EventUtils.getEvent(evt);
if(evt.wheelTicks==null){evt.wheelTicks=0;
};evt.wheelTicks=(evt.wheelTicks>0?Math.ceil(evt.wheelTicks/3):Math.floor(evt.wheelTicks/3));
evtWasConsumed=fireEventToLayers(evt,"onMouseWheel");
}catch(exc){self.error("handling mouse wheel failed",exc);
};if(evtWasConsumed&&!evt.dontPreventDefault){if(evt.preventDefault){evt.preventDefault();
};return false;
}else{return true;
}};
var onComponentSelectStart=function(evt){cancelHoverTimeout();
try{evt=EventUtils.getEvent(evt);
evt.relMouseX=EventUtils.getAbsoluteMouseX(evt)-DomUtils.getAbsoluteX(mMainElement);
evt.relMouseY=EventUtils.getAbsoluteMouseY(evt)-DomUtils.getAbsoluteY(mMainElement);
if(fireEventToLayers(evt,"onSelectStart")){return true;
}}catch(exc){self.error("handling select start failed",exc);
};return false;
};
var onComponentKeyDown=function(evt){try{evt=EventUtils.getEvent(evt);
fireEventToLayers(evt,"onKeyDown");
}catch(exc){self.error("handling key down failed",exc);
}};
var fireEventToLayers=function(evt,listenerMethodName){var activeLayer=self.getActiveLayer();
if(activeLayer!=null){return activeLayer[listenerMethodName](evt);
}else{var layerArr=mMap.getLayers();
var processed=false;
for(var i=layerArr.length-1;
i>=0;
i--){if(layerArr[i].isEnabled()){processed=layerArr[i][listenerMethodName](evt);
if(processed==null){throw new Error(listenerMethodName+" of class "+layerArr[i].constructor.classname+" returned null (not true or false)");
};if(processed){return true;
}}}};return false;
};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};cancelHoverTimeout();
mHoverEvent=null;
mMainElement.onmousemove=null;
mMainElement.onmousedown=null;
mMainElement.onmouseup=null;
mMainElement.onmouseout=null;
mMainElement.onclick=null;
EventUtils.removeEventHandler(mMainElement,"onmousewheel",onComponentMouseWheel);
mMainElement.oncontextmenu=null;
mMainElement.onselectstart=null;
mMainElement.onkeydown=null;
mainElement=null;
mMainElement=null;
superDispose.call(self);
};
var init=function(){mMainElement.onmousemove=onComponentMouseMove;
mMainElement.onmousedown=onComponentMouseDown;
mMainElement.onmouseup=onComponentMouseUp;
mMainElement.onmouseout=onComponentMouseOut;
mMainElement.ondblclick=onComponentMouseDblClick;
EventUtils.addEventHandler(mMainElement,"onmousewheel",onComponentMouseWheel);
mMainElement.oncontextmenu=function(evt){return false;
};
mMainElement.onselectstart=onComponentSelectStart;
mMainElement.tabIndex=0;
mMainElement.onkeydown=onComponentKeyDown;
mMainElement.style.outline="none";
self.setActionMode(map.MapController.DEFAULT_ACTION_MODE);
};
init();
});
qxp.Class.ACTION_MODE_MOVE=1;
qxp.Class.ACTION_MODE_ZOOM=2;
qxp.Class.DEFAULT_ACTION_MODE=qxp.Class.ACTION_MODE_ZOOM;
qxp.Class.HOVER_TIMEOUT=0;
qxp.OO.addProperty({name:"activeLayer",type:qxp.constant.Type.OBJECT});
qxp.OO.addProperty({name:"actionMode",type:qxp.constant.Type.NUMBER,defaultValue:qxp.Class.DEFAULT_ACTION_MODE,allowNull:false,possibleValues:[qxp.Class.ACTION_MODE_MOVE,qxp.Class.ACTION_MODE_ZOOM]});




/* ID: com.ptvag.webcomponent.map.layer.ScaleLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.ScaleLayer",com.ptvag.webcomponent.map.layer.AbstractStaticAreaLayer,function(){com.ptvag.webcomponent.map.layer.AbstractStaticAreaLayer.call(this);
var self=this;
var map=com.ptvag.webcomponent.map;
var mScaleImgElem;
var mUpdateTimer=null;
var superInit=self.init;
self.init=function(){superInit.apply(self,arguments);
var areaElem=document.createElement("div");
areaElem.style.position="absolute";
areaElem.style.left="0px";
areaElem.style.top="0px";
areaElem.style.border=self.getAreaBorderWidth()+"px solid #808080";
areaElem.style.backgroundColor="white";
areaElem._ptv_map_printBackground=true;
self.getParentElement().appendChild(areaElem);
mScaleImgElem=document.createElement("img");
mScaleImgElem.style.position="absolute";
areaElem.appendChild(mScaleImgElem);
mScaleLabelElem=document.createElement("div");
mScaleLabelElem.style.position="absolute";
mScaleLabelElem.style.fontFamily="Verdana,Arial,sans-serif";
mScaleLabelElem.style.fontSize="10px";
mScaleLabelElem.style.whiteSpace="nowrap";
mScaleLabelElem.innerHTML="&#160;";
areaElem.appendChild(mScaleLabelElem);
self.setAreaElement(areaElem);
if(self.isEnabled()){updateScale();
};var map=self.getMap();
map.addEventListener("changeUseMiles",self._modifyScale);
map.addEventListener("changeVisibleZoom",self._modifyScale);
map.addEventListener("changeVisibleCenter",self._modifyScale);
map.addEventListener("changeCenterIsAdjusting",self._modifyScale);
};
self._modifyScale=function(){if(mScaleImgElem&&!self.getMap().getCenterIsAdjusting()&&!mUpdateTimer){mUpdateTimer=window.setTimeout(updateScale,0);
}};
self._modifyUseMiles=function(propValue){self.getMap().setUseMiles(propValue);
};
var updateScale=function(){mUpdateTimer=null;
var useSimpleScale=self.getUseSimpleScale();
var spacing=self.getSpacing();
var areaBorderWidth=self.getAreaBorderWidth();
var scaleBorderWidth=self.getScaleBorderWidth();
var scaleHeight=self.getScaleHeight();
var scaleMaxWidth=self.getScaleMaxWidth();
var zoom=self.getMap().getVisibleZoom();
var scaleMaxWidthSu=scaleMaxWidth*map.CoordUtil.getSmartUnitsPerPixel(zoom);
var suPoint1=self.getMap().getVisibleCenter();
var suPoint2={x:suPoint1.x+scaleMaxWidthSu,y:suPoint1.y};
var scaleMaxWidthMeter=map.CoordUtil.distanceOfSmartUnitPoints(suPoint1,suPoint2);
if(self.getMap().getUseMiles()){var scaleMaxWidthUnit=scaleMaxWidthMeter/1609.344;
var unitName="mi";
if(scaleMaxWidthUnit<1){scaleMaxWidthUnit=scaleMaxWidthMeter/0.9144;
unitName="yd";
}}else{if(scaleMaxWidthMeter>=1000){scaleMaxWidthUnit=scaleMaxWidthMeter/1000;
unitName="km";
}else{scaleMaxWidthUnit=scaleMaxWidthMeter;
unitName="m";
}};var exp=Math.floor(Math.log(scaleMaxWidthUnit)/Math.LN10);
var factor=Math.pow(10,exp);
var mantisse=scaleMaxWidthUnit/factor;
if(mantisse>=5){var base=5;
}else if(mantisse>=2){base=2;
}else{base=1;
};var scaleWidthUnit=Math.round(base*factor);
var scaleWidth=Math.round(scaleMaxWidth*(scaleWidthUnit/scaleMaxWidthUnit));
var borderStyle=scaleBorderWidth+"px solid #808080";
mScaleImgElem.style.borderLeft=borderStyle;
mScaleImgElem.style.borderRight=borderStyle;
if(useSimpleScale){var imgUrl=map.MapUtil.rewriteURL("img/com/ptvag/webcomponent/map/scale_simple.gif",true);
mScaleImgElem.style.borderTop="";
mScaleImgElem.style.borderBottom="";
mScaleImgElem.style.height=(scaleHeight+2*scaleBorderWidth)+"px";
}else{imgUrl=map.MapUtil.rewriteURL("img/com/ptvag/webcomponent/map/scale_base_"+base+".gif",true);
mScaleImgElem.style.borderTop=borderStyle;
mScaleImgElem.style.borderBottom=borderStyle;
mScaleImgElem.style.height=scaleHeight+"px";
};mScaleImgElem.style.width=scaleWidth+"px";
mScaleImgElem.style.top=spacing+"px";
mScaleImgElem.style.left=spacing+"px";
map.MapUtil.setImageSource(mScaleImgElem,imgUrl);
mScaleLabelElem.style.top=parseInt((2*(spacing+scaleBorderWidth)+scaleHeight-10)/2)-2+"px";
mScaleLabelElem.style.left=2*spacing+scaleWidth+"px";
var areaElement=self.getAreaElement();
var oldWidth=areaElement.style.width;
areaElement.style.width="100%";
mScaleLabelElem.firstChild.nodeValue="\xa0"+scaleWidthUnit+" "+unitName;
self.setAreaWidth(2*areaBorderWidth+3*spacing+scaleWidth+mScaleLabelElem.offsetWidth);
if(areaElement.style.width=="100%"){areaElement.style.width=oldWidth;
};self.setAreaHeight(2*areaBorderWidth+2*scaleBorderWidth+2*spacing+scaleHeight);
self.positionArea();
};
self.doPrintStaticArea=function(ctx,htmlContainer,htmlBackground){var areaBorderWidth=self.getAreaBorderWidth();
var scaleBorderWidth=self.getScaleBorderWidth();
var scaleHeight=self.getScaleHeight();
var left=self.getComputedAreaLeft();
var top=self.getComputedAreaTop();
var width=self.getComputedAreaWidth();
var height=self.getComputedAreaHeight();
var spacing=self.getSpacing();
var scaleWidth=parseInt(mScaleImgElem.style.width);
var imgWidth=8;
var imgHeight=8;
var topBottomBorders=false;
if(mScaleImgElem.src.indexOf("/scale_base_")!=-1){topBottomBorders=true;
imgWidth=50;
imgHeight=1;
if(mScaleImgElem.src.indexOf("/scale_base_2.gif")!=-1){imgWidth=40;
}};ctx.strokeStyle="rgb(128, 128, 128)";
ctx.lineWidth=areaBorderWidth;
ctx.fillStyle="rgb(255, 255, 255)";
ctx.beginPath();
ctx.rect(left,top,width,height);
ctx.fill();
ctx.beginPath();
ctx.rect(parseInt(left+areaBorderWidth/2),parseInt(top+areaBorderWidth/2),width-areaBorderWidth,height-areaBorderWidth);
ctx.stroke();
ctx.lineWidth=scaleBorderWidth;
ctx.lineCap="butt";
ctx.lineJoin="miter";
var lineTop=top+areaBorderWidth+spacing;
var lineBottom=lineTop+scaleBorderWidth*2+scaleHeight;
var lineLeft=left+areaBorderWidth+spacing+scaleBorderWidth/2;
ctx.drawImage(mScaleImgElem,0,0,imgWidth,imgHeight,lineLeft+scaleBorderWidth/2,lineTop+scaleBorderWidth,scaleWidth,scaleHeight);
ctx.moveTo(parseInt(lineLeft),lineTop);
ctx.lineTo(parseInt(lineLeft),lineBottom);
var lineLeft2=lineLeft+scaleBorderWidth+scaleWidth;
ctx.moveTo(parseInt(lineLeft2),lineTop);
ctx.lineTo(parseInt(lineLeft2),lineBottom);
if(topBottomBorders){ctx.moveTo(lineLeft+scaleBorderWidth/2,parseInt(lineTop+scaleBorderWidth/2));
ctx.lineTo(lineLeft2-scaleBorderWidth/2,parseInt(lineTop+scaleBorderWidth/2));
ctx.moveTo(lineLeft+scaleBorderWidth/2,parseInt(lineBottom-scaleBorderWidth/2));
ctx.lineTo(lineLeft2-scaleBorderWidth/2,parseInt(lineBottom-scaleBorderWidth/2));
};ctx.stroke();
ctx.strokeStyle="rgb(0, 0, 0)";
ctx.fontFamily="sans-serif";
ctx.fontStyle="plain";
ctx.fontSize=10;
ctx.textAlignment=17;
ctx.drawText(mScaleLabelElem.firstChild.nodeValue,left+areaBorderWidth+2*(spacing+scaleBorderWidth)+scaleWidth,top+areaBorderWidth+parseInt((2*(spacing+scaleBorderWidth)+scaleHeight-10)/2)-1);
};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};if(mUpdateTimer!=null){window.clearTimeout(mUpdateTimer);
mUpdateTimer=null;
};var map=self.getMap();
map.removeEventListener("changeUseMiles",self._modifyScale);
map.removeEventListener("changeVisibleZoom",self._modifyScale);
map.removeEventListener("changeVisibleCenter",self._modifyScale);
map.removeEventListener("changeCenterIsAdjusting",self._modifyScale);
mScaleImgElem=null;
mScaleLabelElem=null;
superDispose.call(self);
};
});
qxp.OO.changeProperty({name:"areaOpacity",type:qxp.constant.Type.NUMBER,defaultValue:0.8});
qxp.OO.changeProperty({name:"areaBorderWidth",type:qxp.constant.Type.NUMBER,defaultValue:1});
qxp.OO.addProperty({name:"scaleBorderWidth",impl:"scale",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:1});
qxp.OO.addProperty({name:"scaleHeight",impl:"scale",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:6});
qxp.OO.addProperty({name:"scaleMaxWidth",impl:"scale",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:100});
qxp.OO.addProperty({name:"spacing",impl:"scale",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:2});
qxp.OO.addProperty({name:"useMiles",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:false});
qxp.OO.addProperty({name:"useSimpleScale",impl:"scale",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:true});




/* ID: com.ptvag.webcomponent.map.vector.HoverArea */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.HoverArea",com.ptvag.webcomponent.map.vector.AbstractHoverArea,function(x,y,maxZoom,tolerance,hoverHandler,unhoverHandler,priority,id,isPositionFlexible){com.ptvag.webcomponent.map.vector.AbstractHoverArea.call(this,x,y,maxZoom,tolerance,priority,id,isPositionFlexible);
var self=this;
var map=com.ptvag.webcomponent.map;
var mHovering=false;
self.onHover=function(evt){mHovering=true;
var hoverHandler=self.getHoverHandler();
if(hoverHandler!=null){var pixCoords={x:self.getMapLeft()+evt.relMouseX,y:self.getMapTop()-evt.relMouseY};
var suCoords=map.CoordUtil.pixel2SmartUnit(pixCoords,self.getMapZoom());
hoverHandler({hoverX:suCoords.x,hoverY:suCoords.y,areaX:self.getX(),areaY:self.getY(),id:self.getId()});
}};
self.onUnhover=function(evt){if(mHovering){mHovering=false;
var unhoverHandler=self.getUnhoverHandler();
if(unhoverHandler!=null){if(evt!=null){var pixCoords={x:self.getMapLeft()+evt.relMouseX,y:self.getMapTop()-evt.relMouseY};
var suCoords=map.CoordUtil.pixel2SmartUnit(pixCoords,self.getMapZoom());
}else{suCoords={x:null,y:null};
};unhoverHandler({unhoverX:suCoords.x,unhoverY:suCoords.y,areaX:self.getX(),areaY:self.getY(),id:self.getId()});
}}};
self.clear=function(inDispose){if(!inDispose){self.onUnhover();
}};
self.setHoverHandler(hoverHandler);
self.setUnhoverHandler(unhoverHandler);
});
qxp.OO.addProperty({name:"hoverHandler",type:qxp.constant.Type.FUNCTION,allowNull:true});
qxp.OO.addProperty({name:"unhoverHandler",type:qxp.constant.Type.FUNCTION,allowNull:true});




/* ID: com.ptvag.webcomponent.map.Rpc */
qxp.OO.defineClass("com.ptvag.webcomponent.map.Rpc",qxp.io.remote.Rpc,function(map,url,serviceName){qxp.io.remote.Rpc.call(this,url,serviceName);
var self=this;
var setURLParameter=function(name,value){var url=self.getUrl();
var encodedValue=encodeURIComponent(value);
var paramIndex=url.indexOf("?"+name+"=");
if(paramIndex==-1){paramIndex=url.indexOf("&"+name+"=");
};if(paramIndex==-1){url+=(url.indexOf("?")==-1?"?":"&")+name+"="+encodedValue;
}else{var startIndex=paramIndex+name.length+2;
var endIndex=url.indexOf("&",startIndex);
if(endIndex==-1){url=url.substring(0,startIndex)+encodedValue;
}else{url=url.substring(0,startIndex)+encodedValue+url.substring(endIndex);
}}};
var superCallInternal=self._callInternal;
self._callInternal=function(){setURLParameter("backendServer",map.getBackendServer());
setURLParameter("tok",com.ptvag.webcomponent.map.RequestBuilder.getToken());
return superCallInternal.apply(self,arguments);
};
});




/* ID: com.ptvag.webcomponent.map.layer.ZoomSliderLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.ZoomSliderLayer",com.ptvag.webcomponent.map.layer.AbstractStaticAreaLayer,function(){com.ptvag.webcomponent.map.layer.AbstractStaticAreaLayer.call(this);
var self=this;
var map=com.ptvag.webcomponent.map;
var mGrooveElem;
var mKnobElem;
var mPlusElem=null;
var mMinusElem=null;
var mGrooveWidth=11;
var mKnobWidth=19;
var mKnobHeight=11;
var mKnobPosition;
var mTopOffset;
var mGrooveHeight;
var mButtonSize=13;
var mMouseOverPlus=false;
var mMouseOverMinus=false;
var mPlusPressed=false;
var mMinusPressed=false;
var mPlusImage;
var mPlusOverImage;
var mMinusImage;
var mMinusOverImage;
var mCurrentPlusImage=null;
var mCurrentMinusImage=null;
var mCurrentPlusOpacity=null;
var mCurrentMinusOpacity=null;
var mInKnobMoveMode;
var mKnobMoveOffset=parseInt(mKnobHeight/2);
var superInit=self.init;
self.init=function(){superInit.apply(self,arguments);
var areaElem=document.createElement("div");
areaElem.style.position="absolute";
areaElem.style.left="0px";
areaElem.style.top="0px";
areaElem.style.width=self.getAreaWidth()+"px";
self.getParentElement().appendChild(areaElem);
mGrooveElem=document.createElement("div");
mGrooveElem.style.position="absolute";
mGrooveElem.style.left=((mKnobWidth-mGrooveWidth)/2)+"px";
if(map.MapUtil.isBorderBoxSizingActive()){mGrooveElem.style.width=mGrooveWidth+"px";
}else{mGrooveElem.style.width=(mGrooveWidth-2)+"px";
};mGrooveElem.style.border="1px solid gray";
mGrooveElem.style.backgroundColor="white";
areaElem.appendChild(mGrooveElem);
mKnobElem=document.createElement("img");
mKnobElem.style.position="absolute";
mKnobElem.style.left="0px";
mKnobElem.style.width=mKnobWidth+"px";
mKnobElem.style.height=mKnobHeight+"px";
map.MapUtil.setImageSource(mKnobElem,map.MapUtil.rewriteURL("img/com/ptvag/webcomponent/map/zoom_slider_knob.png",true));
areaElem.appendChild(mKnobElem);
mPlusImage=new Image();
mPlusImage.src=map.MapUtil.rewriteURL("img/com/ptvag/webcomponent/map/zoom_slider_plus.gif",true);
mPlusOverImage=new Image();
mPlusOverImage.src=map.MapUtil.rewriteURL("img/com/ptvag/webcomponent/map/zoom_slider_plus_over.gif",true);
mMinusImage=new Image();
mMinusImage.src=map.MapUtil.rewriteURL("img/com/ptvag/webcomponent/map/zoom_slider_minus.gif",true);
mMinusOverImage=new Image();
mMinusOverImage.src=map.MapUtil.rewriteURL("img/com/ptvag/webcomponent/map/zoom_slider_minus_over.gif",true);
var buttonOffset=parseInt((mKnobWidth-mButtonSize)/2);
mPlusElem=document.createElement("img");
mPlusElem.style.position="absolute";
mPlusElem.style.left=buttonOffset+"px";
mPlusElem.style.width=mButtonSize+"px";
mPlusElem.style.height=mButtonSize+"px";
mMinusElem=document.createElement("img");
mMinusElem.style.position="absolute";
mMinusElem.style.left=buttonOffset+"px";
mMinusElem.style.width=mButtonSize+"px";
mMinusElem.style.height=mButtonSize+"px";
self.getMap().addEventListener("changeInverseWheelZoom",redraw);
self.setAreaElement(areaElem);
};
var superModifyAreaOpacity=self._modifyAreaOpacity;
self._modifyAreaOpacity=function(){superModifyAreaOpacity.apply(self,arguments);
setButtonOpacity();
};
var setButtonOpacity=function(){var areaOpacity=self.getAreaOpacity();
var blendingOpacityOut=self.getBlendingOpacityOut();
var zoom=self.getMap().getVisibleZoom();
var maxZoom=map.CoordUtil.TILE_WIDTHS.length-1;
var img=mPlusImage;
if(zoom==0){var opacity=blendingOpacityOut;
}else{opacity=areaOpacity;
if(mMouseOverPlus){img=mPlusOverImage;
}};if(mCurrentPlusImage!=img){map.MapUtil.setImageSource(mPlusElem,img.src);
mCurrentPlusImage=img;
};if(mCurrentPlusOpacity!=opacity){map.MapUtil.setElementOpacity(mPlusElem,opacity);
mCurrentPlusOpacity=opacity;
};img=mMinusImage;
if(zoom==maxZoom){opacity=blendingOpacityOut;
}else{opacity=areaOpacity;
if(mMouseOverMinus){img=mMinusOverImage;
}};if(mCurrentMinusImage!=img){map.MapUtil.setImageSource(mMinusElem,img.src);
mCurrentMinusImage=img;
};if(mCurrentMinusOpacity!=opacity){map.MapUtil.setElementOpacity(mMinusElem,opacity);
mCurrentMinusOpacity=opacity;
}};
var redraw=function(){var areaHeight=self.getComputedAreaHeight();
var parentElement=self.getParentElement();
if(self.getShowZoomButtons()){var inverseZoom=self.getMap().getInverseWheelZoom();
var topElem=(inverseZoom?mMinusElem:mPlusElem);
var bottomElem=(inverseZoom?mPlusElem:mMinusElem);
topElem.style.top="0px";
bottomElem.style.top=(areaHeight-mButtonSize)+"px";
var areaElement=self.getAreaElement();
if(!mPlusElem.parentNode){parentElement.appendChild(topElem);
parentElement.appendChild(bottomElem);
};mTopOffset=mButtonSize+mKnobMoveOffset;
}else{if(mPlusElem.parentNode){parentElement.removeChild(mPlusElem);
parentElement.removeChild(mMinusElem);
};mTopOffset=0;
};var height=areaHeight-mKnobHeight-mTopOffset*2;
mGrooveHeight=height;
positionKnob();
if(!map.MapUtil.isBorderBoxSizingActive()){height-=2;
};mGrooveElem.style.top=mKnobMoveOffset+mTopOffset+"px";
mGrooveElem.style.height=(height+1)+"px";
while(mGrooveElem.firstChild){mGrooveElem.removeChild(mGrooveElem.firstChild);
};if(self.getShowZoomSteps()){var maxZoom=map.CoordUtil.TILE_WIDTHS.length-1;
for(var i=1;
i<maxZoom;
++i){var step=document.createElement("div");
step.style.position="absolute";
step.style.width="100%";
step.style.height="1px";
step.style.borderTop="1px solid gray";
step.style.left="0px";
step.style.top=Math.round(mGrooveHeight*i/maxZoom-1)+"px";
mGrooveElem.appendChild(step);
}}};var superModifyComputedAreaHeight=self._modifyComputedAreaHeight;
self._modifyComputedAreaHeight=function(){redraw();
superModifyComputedAreaHeight.apply(self,arguments);
};
self._modifyShowZoomSteps=function(){redraw();
};self._modifyShowZoomButtons=function(){mMouseOverPlus=false;
mMouseOverMinus=false;
mPlusPressed=false;
mMinusPressed=false;
redraw();
};var superOnViewChanged=self.onViewChanged;
self.onViewChanged=function(evt){superOnViewChanged(evt);
if(evt.zoomChanged||evt.heightChanged){positionKnob();
}};var positionKnob=function(){var zoom=self.getMap().getVisibleZoom();
var maxZoom=map.CoordUtil.TILE_WIDTHS.length-1;
var pseudoZoom=zoom;
if(self.getMap().getInverseWheelZoom()){pseudoZoom=maxZoom-zoom;
};mKnobPosition=Math.round(mGrooveHeight*pseudoZoom/maxZoom);
mKnobElem.style.top=mKnobPosition+mTopOffset+"px";
setButtonOpacity();
};
var setKnobToMouse=function(evt){var newPos=evt.relMouseY-self.getComputedAreaTop()-mKnobMoveOffset;
newPos-=mTopOffset;
mKnobPosition=Math.max(0,Math.min(mGrooveHeight,newPos));
mKnobElem.style.top=mKnobPosition+mTopOffset+"px";
};
var superOnMouseMove=self.onMouseMove;
self.onMouseMove=function(evt){if(mInKnobMoveMode){setKnobToMouse(evt);
return false;
}else if(self.getShowZoomButtons()){var left=self.getComputedAreaLeft();
var top=self.getComputedAreaTop();
var width=self.getComputedAreaWidth();
var height=self.getComputedAreaHeight();
var buttonOffset=(mKnobWidth-mButtonSize)/2;
var inverseWheelZoom=self.getMap().getInverseWheelZoom();
mMouseOverPlus=false;
mMouseOverMinus=false;
if(evt.relMouseX>=left+buttonOffset&&evt.relMouseX<left+buttonOffset+mButtonSize){if(evt.relMouseY>=top&&evt.relMouseY<top+mButtonSize){if(inverseWheelZoom){if(!mPlusPressed){mMouseOverMinus=true;
}}else{if(!mMinusPressed){mMouseOverPlus=true;
}}}else if(evt.relMouseY>=top+height-mButtonSize&&evt.relMouseY<top+height){if(inverseWheelZoom){if(!mMinusPressed){mMouseOverPlus=true;
}}else{if(!mPlusPressed){mMouseOverMinus=true;
}}}};setButtonOpacity();
};return superOnMouseMove(evt);
};
var superOnMouseOut=self.onMouseOut;
self.onMouseOut=function(evt){superOnMouseOut(evt);
if(mInKnobMoveMode){mInKnobMoveMode=false;
positionKnob();
};mMouseOverPlus=false;
mMouseOverMinus=false;
mPlusPressed=false;
mMinusPressed=false;
setButtonOpacity();
return false;
};
self.onMouseDown=function(evt){self.onMouseMove(evt);
var left=self.getComputedAreaLeft();
var top=self.getComputedAreaTop();
var width=self.getComputedAreaWidth();
var height=self.getComputedAreaHeight();
if(evt.relMouseX>=left&&evt.relMouseX<left+width&&evt.relMouseY>=top+mTopOffset&&evt.relMouseY<=top+mTopOffset+mGrooveHeight+mKnobHeight){setKnobToMouse(evt);
mInKnobMoveMode=true;
return true;
}else if(mMouseOverPlus){mPlusPressed=true;
return true;
}else if(mMouseOverMinus){mMinusPressed=true;
return true;
};return false;
};
self.onMouseUp=function(evt){self.onMouseMove(evt);
var plusPressed=mPlusPressed;
mPlusPressed=false;
var minusPressed=mMinusPressed;
mMinusPressed=false;
var theMap=self.getMap();
if(mInKnobMoveMode){mInKnobMoveMode=false;
var maxZoom=map.CoordUtil.TILE_WIDTHS.length-1;
var newZoom=Math.round(maxZoom*mKnobPosition/mGrooveHeight);
if(theMap.getInverseWheelZoom()){newZoom=maxZoom-newZoom;
};if(newZoom==theMap.getZoom()){positionKnob();
}else{theMap.startLoggingAction("user:zoomSlider");
try{theMap.setZoom(newZoom);
}finally{theMap.endLoggingAction();
}};return true;
};if(mMouseOverPlus&&plusPressed){theMap.setZoom(theMap.getZoom()-1);
return true;
};if(mMouseOverMinus&&minusPressed){theMap.setZoom(theMap.getZoom()+1);
return true;
};return false;
};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};self.getMap().removeEventListener("changeInverseWheelZoom",redraw);
mGrooveElem=null;
mKnobElem=null;
mPlusElem=null;
mMinusElem=null;
mPlusImage=null;
mPlusOverImage=null;
mMinusImage=null;
mMinusOverImage=null;
mCurrentPlusImage=null;
mCurrentMinusImage=null;
superDispose.call(self);
};
var init=function(){self.setAreaWidth(mKnobWidth);
};
init();
});
qxp.OO.changeProperty({name:"useBlending",type:qxp.constant.Type.BOOLEAN,defaultValue:true});
qxp.OO.addProperty({name:"showZoomButtons",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:true});
qxp.OO.addProperty({name:"showZoomSteps",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:true});




/* ID: com.ptvag.webcomponent.map.vector.InfoBox */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.InfoBox",com.ptvag.webcomponent.map.vector.VectorElement,function(x,y,text,alignment,priority,id,isPositionFlexible){com.ptvag.webcomponent.map.vector.VectorElement.call(this,priority,id,isPositionFlexible);
var self=this;
var map=com.ptvag.webcomponent.map;
var mInfoBoxElement=null;
var mInfoBoxElementCreator=null;
var closeWidgetHandler=function(){var customHandler=self.getCloseWidgetHandler();
if(customHandler==null){self.getVectorLayer().removeElement(self.getId());
}else{customHandler(self);
}};
var positionBox=function(){if(mInfoBoxElement!=null){mInfoBoxElementCreator.positionInfoBoxElement(mInfoBoxElement,self.getRealX(),self.getRealY());
}};
self.usesCanvas=function(){return false;
};
self.draw=function(container,topLevelContainer,ctx,mapLeft,mapTop,mapZoom){var suPoint={x:self.getX(),y:self.getY()};
var pixCoords=map.CoordUtil.smartUnit2Pixel(suPoint,mapZoom);
var realX=pixCoords.x-mapLeft+self.getFlexX();
var realY=mapTop-pixCoords.y+self.getFlexY();
self.setRealX(realX);
self.setRealY(realY);
if(mInfoBoxElement==null){mInfoBoxElementCreator=self.getInfoBoxElementFactory();
if(mInfoBoxElementCreator==null){mInfoBoxElementCreator=com.ptvag.webcomponent.map.vector.InfoBoxElementFactory;
};mInfoBoxElement=mInfoBoxElementCreator.createInfoBoxElement(realX,realY,{text:self.getText(),background:self.getBackground()},topLevelContainer,true);
if(self.getShowCloseWidget()){mInfoBoxElementCreator.activateCloseWidget(mInfoBoxElement,closeWidgetHandler);
};mInfoBoxElement.style.zIndex=2000000000+self.getPriority();
}else{positionBox();
}};
self.clear=function(){if(mInfoBoxElement!=null){mInfoBoxElementCreator.destroyInfoBoxElement(mInfoBoxElement);
mInfoBoxElement=null;
mInfoBoxElementCreator=null;
}};
if(x!=null){self.setX(x);
};if(y!=null){self.setY(y);
};if(text!=null){self.setText(text);
};if(alignment!=null){self.setAlignment(alignment);
};self.refreshOn("x","y","text","alignment","showCloseWidget","infoBoxElementFactory","background");
});
qxp.OO.addProperty({name:"x",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:4355664});
qxp.OO.addProperty({name:"y",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:5464867});
qxp.OO.addProperty({name:"realX",type:qxp.constant.Type.NUMBER,allowNull:false});
qxp.OO.addProperty({name:"realY",type:qxp.constant.Type.NUMBER,allowNull:false});
qxp.OO.addProperty({name:"text",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:""});
qxp.OO.addProperty({name:"alignment",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:66});
qxp.OO.addProperty({name:"showCloseWidget",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:false});
qxp.OO.addProperty({name:"closeWidgetHandler",type:qxp.constant.Type.FUNCTION,allowNull:true,defaultValue:null});
qxp.OO.addProperty({name:"infoBoxElementFactory",type:qxp.constant.Type.OBJECT,allowNull:true,defaultValue:null});
qxp.OO.addProperty({name:"background",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:"#ffffff"});




/* ID: com.ptvag.webcomponent.map.vector.Text */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.Text",com.ptvag.webcomponent.map.vector.VectorElement,function(x,y,color,pixelSize,alignment,text,priority,id,isPositionFlexible){com.ptvag.webcomponent.map.vector.VectorElement.call(this,priority,id,isPositionFlexible);
var self=this;
var map=com.ptvag.webcomponent.map;
var mTextElement=null;
var mTextWidth=null;
var mTextHeight=null;
self._checkColor=function(propValue){var translatedColor=map.MapUtil.translateColor(propValue);
var opacity=translatedColor.opacity;
if(opacity!=null){self.setOpacity(opacity);
};return translatedColor.color;
};
var positionText=function(){if(mTextElement!=null&&mTextWidth!=null&&mTextHeight!=null){var realX=self.getRealX();
var realY=self.getRealY();
if(realX!=null&&realY!=null){var alignment=self.getAlignment();
if(alignment&map.layer.VectorLayer.ALIGN_MID_HORIZ){mTextElement.style.left=Math.round(realX-(mTextWidth/2))+"px";
}else if(alignment&map.layer.VectorLayer.ALIGN_RIGHT){mTextElement.style.left=Math.round(realX-mTextWidth)+"px";
}else{mTextElement.style.left=Math.round(realX)+"px";
};if(alignment&map.layer.VectorLayer.ALIGN_MID_VERT){mTextElement.style.top=Math.round(realY-(mTextHeight*0.8/2)+self.getVerticalAdjustment())+"px";
}else if(alignment&map.layer.VectorLayer.ALIGN_BOTTOM){mTextElement.style.top=Math.round(realY-mTextHeight)+"px";
}else{mTextElement.style.top=Math.round(realY)+"px";
}}}};
self.usesCanvas=function(ctx){return(ctx.drawText?true:false);
};
self.draw=function(container,topLevelContainer,ctx,mapLeft,mapTop,mapZoom){var suPoint={x:self.getX(),y:self.getY()};
var pixCoords=map.CoordUtil.smartUnit2Pixel(suPoint,mapZoom);
var realX=pixCoords.x-mapLeft+self.getFlexX();
var realY=mapTop-pixCoords.y+self.getFlexY();
self.setRealX(realX);
self.setRealY(realY);
if(ctx.drawText){if(mTextElement!=null){ctx.fontFamily=self.getFontFamily();
if(self.getFontWeight()=="bold"){ctx.fontStyle="bold";
}else{ctx.fontStyle="plain";
};ctx.fontSize=self.getPixelSize();
ctx.textAlignment=self.getAlignment()&~112|16;
ctx.strokeStyle=self.getColor();
var oldGlobalAlpha=ctx.globalAlpha;
ctx.globalAlpha*=self.getOpacity();
ctx.drawText(self.getText(),realX,parseInt(mTextElement.style.top));
ctx.globalAlpha=oldGlobalAlpha;
}}else{if(mTextElement==null){mTextElement=document.createElement("div");
mTextElement.setAttribute("_ptv_map_dontPrint",true);
mTextElement.style.position="absolute";
mTextElement.style.fontFamily=self.getFontFamily();
mTextElement.style.fontSize=self.getPixelSize()+"px";
mTextElement.style.fontWeight=self.getFontWeight();
mTextElement.style.color=self.getColor();
map.MapUtil.setElementOpacity(mTextElement,self.getOpacity());
mTextElement.style.visibility="hidden";
mTextElement.style.zIndex=-2000000000+self.getPriority();
var text=document.createTextNode(self.getText());
mTextElement.appendChild(text);
container.appendChild(mTextElement);
mTextWidth=mTextElement.offsetWidth;
mTextHeight=mTextElement.offsetHeight;
positionText();
mTextElement.style.visibility="visible";
}else{positionText();
}}};
self.clear=function(inDispose){if(mTextElement!=null){if(!inDispose){mTextElement.parentNode.removeChild(mTextElement);
};mTextElement=null;
}};
if(x!=null){self.setX(x);
};if(y!=null){self.setY(y);
};if(color!=null&&color!=self.getColor()){self.setColor(color);
}else{self.setColor(self._checkColor(self.getColor()));
};if(pixelSize!=null){self.setPixelSize(pixelSize);
};if(alignment!=null){self.setAlignment(alignment);
};if(text!=null){self.setText(text);
};self.refreshOn("x","y","color","opacity","pixelSize","alignment","text","fontFamily","fontWeight","verticalAdjustment");
});
qxp.OO.addProperty({name:"x",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:4355664});
qxp.OO.addProperty({name:"y",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:5464867});
qxp.OO.addProperty({name:"realX",type:qxp.constant.Type.NUMBER,allowNull:false});
qxp.OO.addProperty({name:"realY",type:qxp.constant.Type.NUMBER,allowNull:false});
qxp.OO.addProperty({name:"color",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:"#000000"});
qxp.OO.addProperty({name:"opacity",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:1});
qxp.OO.addProperty({name:"pixelSize",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:12});
qxp.OO.addProperty({name:"alignment",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:66});
qxp.OO.addProperty({name:"text",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:""});
qxp.OO.addProperty({name:"fontFamily",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:"Verdana,Arial,sans-serif"});
qxp.OO.addProperty({name:"fontWeight",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:"bold"});
qxp.OO.addProperty({name:"verticalAdjustment",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:-1});




/* ID: com.ptvag.webcomponent.map.layer.PositionInfoLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.PositionInfoLayer",com.ptvag.webcomponent.map.layer.TextInfoLayer,function(){com.ptvag.webcomponent.map.layer.TextInfoLayer.call(this);
var self=this;
var CoordUtil=com.ptvag.webcomponent.map.CoordUtil;
var superInit=self.init;
self.init=function(){superInit.apply(self,arguments);
self.getAreaElement().innerHTML="&#160;";
if(self.isEnabled()){self.updateView();
}};
self.updateView=function(){var theMap=self.getMap();
var pixPoint=theMap.relative2AbsolutePixel(self.getLastMousePos());
var suPoint=CoordUtil.pixel2SmartUnit(pixPoint,theMap.getZoom());
var geoPoint=CoordUtil.smartUnit2GeoDecimal(suPoint);
self.getAreaElement().firstChild.nodeValue=beautifyGeo(Math.abs(geoPoint.y))+(geoPoint.y>0?" N":" S")+", "+beautifyGeo(Math.abs(geoPoint.x))+(geoPoint.x>0?" E":" W");
};
var beautifyGeo=function(geoPos){var degrees=parseInt(geoPos/100000);
var minutes=parseInt((geoPos/(100000/60))%60);
var seconds=(geoPos/((100000/60)/60))%60;
var roundedSecs=Math.round(seconds*100)/100;
if(roundedSecs>=60){roundedSecs=0;
++minutes;
if(minutes>=60){minutes=0;
++degrees;
}};var formattedSecs=(seconds<10?"0":"")+roundedSecs;
formattedSecs=formattedSecs.substring(0,5);
if(formattedSecs.length<3){formattedSecs+=".";
}while(formattedSecs.length<5){formattedSecs+="0";
};return degrees+"\u00b0 "+(minutes<10?"0":"")+minutes+"' "+formattedSecs+"\"";
};
});




/* ID: com.ptvag.webcomponent.map.vector.ImageMarker2 */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.ImageMarker2",com.ptvag.webcomponent.map.vector.VectorElement,function(x,y,url,alignment,priority,id,isPositionFlexible){com.ptvag.webcomponent.map.vector.VectorElement.call(this,priority,id,isPositionFlexible);
var self=this;
var map=com.ptvag.webcomponent.map;
var mImg=null;
var mImgWidth=null;
var mImgHeight=null;
var mSizeRequested=false;
var mCleared=false;
var mCtx;
var drawImage=function(){if(mImg!=null&&mImgWidth!=null&&mImgHeight!=null){var width=mImgWidth;
var height=mImgHeight;
var factor=self.getZoomFactor();
width*=factor;
height*=factor;
var realX=self.getRealX();
var realY=self.getRealY();
if(realX!=null&&realY!=null){var offsetX=0;
var offsetY=0;
var alignment=self.getAlignment();
if(alignment&map.layer.VectorLayer.ALIGN_MID_HORIZ){offsetX=-(width)/2;
}else if(alignment&map.layer.VectorLayer.ALIGN_RIGHT){offsetX=-(width);
};if(alignment&map.layer.VectorLayer.ALIGN_MID_VERT){offsetY=-(height)/2;
}else if(alignment&map.layer.VectorLayer.ALIGN_BOTTOM){offsetY=-(height);
};var alignedX=Math.round(realX+offsetX);
var alignedY=Math.round(realY+offsetY);
mCtx.globalAlpha=self.getOpacity();
mCtx.drawImage(mImg,alignedX,alignedY,width,height);
mCtx.globalAlpha=1;
}}};
var onImageSizeAvailable=function(url,width,height){if(!mCleared){var imagePool=map.vector.ImageMarker2.IMAGE_POOL;
mImg=imagePool[url];
if(mImg==null){mImg=new Image();
mImg.src=url;
imagePool[url]=mImg;
};mImgWidth=width;
mImgHeight=height;
drawImage();
}};
self.usesCanvas=function(){return true;
};
var superDraw=self.draw;
self.draw=function(container,topLevelContainer,ctx,mapLeft,mapTop,mapZoom){superDraw.apply(self,arguments);
mCtx=ctx;
var suPoint={x:self.getX(),y:self.getY()};
var pixCoords=map.CoordUtil.smartUnit2Pixel(suPoint,mapZoom);
self.setRealX(pixCoords.x-mapLeft+self.getFlexX());
self.setRealY(mapTop-pixCoords.y+self.getFlexY());
if(!mSizeRequested){mSizeRequested=true;
var actualURL=self.getUrl();
if(actualURL==null){actualURL="img/com/ptvag/webcomponent/map/1downarrow.png";
};actualURL=map.MapUtil.resolveURL(actualURL);
map.ImageLoader.getImageSize(actualURL,onImageSizeAvailable);
}else{drawImage();
}};
self.clear=function(){mCleared=true;
mCtx=null;
};
if(x!=null){self.setX(x);
};if(y!=null){self.setY(y);
};if(url!=null){self.setUrl(url);
};if(alignment!=null){self.setAlignment(alignment);
};self.refreshOn("x","y","url","alignment","opacity");
});
qxp.OO.addProperty({name:"x",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:4355664});
qxp.OO.addProperty({name:"y",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:5464867});
qxp.OO.addProperty({name:"realX",type:qxp.constant.Type.NUMBER,allowNull:false});
qxp.OO.addProperty({name:"realY",type:qxp.constant.Type.NUMBER,allowNull:false});
qxp.OO.addProperty({name:"url",type:qxp.constant.Type.STRING,allowNull:true});
qxp.OO.addProperty({name:"alignment",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:66});
qxp.OO.addProperty({name:"opacity",type:qxp.constant.Type.NUMBER,defaultValue:1,allowNull:false});
qxp.Class.IMAGE_POOL={};




/* ID: com.ptvag.webcomponent.map.vector.Poly */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.Poly",com.ptvag.webcomponent.map.vector.VectorElement,function(color,coordinates,priority,id){com.ptvag.webcomponent.map.vector.VectorElement.call(this,priority,id);
var self=this;
var map=com.ptvag.webcomponent.map;
var CoordUtil=map.CoordUtil;
var mCoordinatesIterator;
var mRealCoordinates=null;
var mZoomForRealCoordinates=null;
var mMapLeft;
var mMapTop;
var mMinX;
var mMaxX;
var mMinY;
var mMaxY;
self._modifyCoordinates=function(propValue){if(mCoordinatesIterator!=null){mCoordinatesIterator.dispose();
};mCoordinatesIterator=new map.PointListIterator(propValue);
mZoomForRealCoordinates=null;
self.refresh();
};
self.usesCanvas=function(){return true;
};
var superDraw=self.draw;
self.draw=function(container,topLevelContainer,ctx,mapLeft,mapTop,mapZoom){superDraw.apply(self,arguments);
mMapLeft=mapLeft;
mMapTop=mapTop;
var width=parseInt(container.style.width);
var height=parseInt(container.style.height);
var testLeft=0;
var testTop=0;
var testRight=width;
var testBottom=height;
if(mZoomForRealCoordinates!=mapZoom){mRealCoordinates=[];
mMinX=null;
mMaxX=null;
mMinY=null;
mMaxY=null;
mCoordinatesIterator.reset();
while(mCoordinatesIterator.iterate()){var suPoint={x:mCoordinatesIterator.x,y:mCoordinatesIterator.y};
var pixCoords=CoordUtil.smartUnit2Pixel(suPoint,mapZoom);
var realX=pixCoords.x;
var realY=pixCoords.y;
if(mMinX==null||realX<mMinX){mMinX=realX;
};if(mMaxX==null||realX>mMaxX){mMaxX=realX;
};if(mMinY==null||realY<mMinY){mMinY=realY;
};if(mMaxY==null||realY>mMaxY){mMaxY=realY;
};mRealCoordinates.push(realX);
mRealCoordinates.push(realY);
};mZoomForRealCoordinates=mapZoom;
};if(mMinX==null||(mMaxX-mapLeft)<testLeft||(mMinX-mapLeft)>testRight||(mapTop-mMinY)<testTop||(mapTop-mMaxY)>testBottom){return;
};ctx.fillStyle=self.getColor();
var bounds={minX:testLeft+mapLeft,minY:mapTop-testBottom,maxX:testRight+mapLeft,maxY:mapTop-testTop};
var clippedPolys=CoordUtil.clipPoly(mRealCoordinates,bounds);
for(var i=0;
i<clippedPolys.length;
++i){ctx.beginPath();
var poly=clippedPolys[i];
var vertexCount=poly.length/2;
for(var j=0;
j<vertexCount;
++j){if(j==0){ctx.moveTo(poly[j*2]-mapLeft,mapTop-poly[j*2+1]);
}else{ctx.lineTo(poly[j*2]-mapLeft,mapTop-poly[j*2+1]);
}};ctx.fill();
}};
self.getSquareDistance=function(evt,tolerance){var retVal={squareDistance:-1};
if(mZoomForRealCoordinates==null){return retVal;
};var lineSegmentCount=mRealCoordinates.length/2-1;
if(lineSegmentCount<1){return retVal;
};var relMouseX=evt.relMouseX+mMapLeft;
var relMouseY=mMapTop-evt.relMouseY;
if(!CoordUtil.isPointInPoly(relMouseX,relMouseY,mRealCoordinates)){return retVal;
};retVal.squareDistance=0;
var nearestPoint=com.ptvag.webcomponent.map.CoordUtil.pixel2SmartUnit({x:relMouseX,y:relMouseY},mZoomForRealCoordinates);
retVal.extendedEventInfo={nearestX:nearestPoint.x,nearestY:nearestPoint.y};
return retVal;
};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};mCoordinatesIterator.dispose();
superDispose.call(self);
};
if(color!=null){self.setColor(color);
};if(coordinates!=null){self.setCoordinates(coordinates);
}else{self._modifyCoordinates(self.getCoordinates());
};self.refreshOn("color");
});
qxp.OO.addProperty({name:"color",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:"rgba(127,255,0,0.7)"});
qxp.OO.addProperty({name:"coordinates",type:qxp.constant.Type.OBJECT,allowNull:false,defaultValue:[]});




/* ID: com.ptvag.webcomponent.map.vector.AggregateElement */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.AggregateElement",com.ptvag.webcomponent.map.vector.VectorElement,function(id){var self=this;
var map=com.ptvag.webcomponent.map;
var mManagedElementIds=[];
var mVectorLayer=null;
if(id!=null&&id instanceof map.layer.VectorLayer){mVectorLayer=id;
if(arguments.length>=2){id=arguments[1];
}else{id=null;
}};map.vector.VectorElement.call(this,null,id);
var superModifyVectorLayer=self._modifyVectorLayer;
self._modifyVectorLayer=function(propValue){mVectorLayer=propValue;
superModifyVectorLayer.apply(self,arguments);
};
self.remove=function(){for(var i=0;
i<mManagedElementIds.length;
i++){mVectorLayer.removeElement(mManagedElementIds[i]);
};mManagedElementIds=[];
};
self.hide=function(){self.remove();
};
self.addElement=function(element,deferSorting){var id=mVectorLayer.addElement(element,deferSorting);
mManagedElementIds.push(id);
};
self.removeElement=function(id){var managedElementCount=mManagedElementIds.length;
for(var i=0;
i<managedElementCount;
++i){if(mManagedElementIds[i]==id){mManagedElementIds.splice(i,1);
mVectorLayer.removeElement(id);
break;
}}};
self.usesCanvas=function(){return null;
};
self.clear=function(inDispose){if(!inDispose){self.remove();
}};
});




/* ID: com.ptvag.webcomponent.map.layer.DefaultToolbarLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.DefaultToolbarLayer",com.ptvag.webcomponent.map.layer.ToolbarLayer,function(){com.ptvag.webcomponent.map.layer.ToolbarLayer.apply(this,arguments);
var self=this;
var mapPackage=com.ptvag.webcomponent.map;
var clazz=mapPackage.layer.DefaultToolbarLayer;
var rewriteURL=mapPackage.MapUtil.rewriteURL;
var mZoomInEnabled;
var mZoomOutEnabled;
var mHistoryBackEnabled;
var mHistoryForwardEnabled;
var mAlphaImgExt=qxp.sys.Client.getInstance().isMshtml()?"_noalpha.gif":".png";
var getImageURL=function(imageName){return mapPackage.MapUtil.rewriteURL("img/com/ptvag/webcomponent/map/"+imageName,true);
};
var addButton=function(id,imageName,tooltip,handler,enabled){var buttonData={imgUrl:getImageURL(imageName),width:17,height:17,tooltip:tooltip,id:id,clickHandler:handler,enabled:(enabled==null?true:enabled)};
self.addElement(buttonData);
};
var setZoomEnabledVars=function(zoom){mZoomInEnabled=(zoom>0);
mZoomOutEnabled=(zoom<mapPackage.CoordUtil.ZOOM_LEVEL_COUNT-1);
};
var setHistoryEnabledVars=function(){var map=self.getMap();
mHistoryBackEnabled=map.hasHistoryBack();
mHistoryForwardEnabled=map.hasHistoryForward();
};
var zoomChanged=function(evt){var zoom=evt.getData();
zoomInEnabled=mZoomInEnabled;
zoomOutEnabled=mZoomOutEnabled;
setZoomEnabledVars(zoom);
if(zoomInEnabled!=mZoomInEnabled&&self.elementExists("zoom-in")){self.setButtonEnabled("zoom-in",mZoomInEnabled);
};if(zoomOutEnabled!=mZoomOutEnabled&&self.elementExists("zoom-out")){self.setButtonEnabled("zoom-out",mZoomOutEnabled);
}};
var historyChanged=function(){var historyBackEnabled=mHistoryBackEnabled;
var historyForwardEnabled=mHistoryForwardEnabled;
setHistoryEnabledVars();
if(historyBackEnabled!=mHistoryBackEnabled&&self.elementExists("history-back")){self.setButtonEnabled("history-back",mHistoryBackEnabled);
};if(historyForwardEnabled!=mHistoryForwardEnabled&&self.elementExists("history-forward")){self.setButtonEnabled("history-forward",mHistoryForwardEnabled);
}};
var superInit=self.init;
self.init=function(){superInit.apply(self,arguments);
var map=self.getMap();
var inverseWheelZoom=map.getInverseWheelZoom();
var zoom=map.getZoom();
setZoomEnabledVars(map.getZoom());
setHistoryEnabledVars();
addButton("zoom-out","button_zoom_out.gif","Zoom out",self.zoomOut,mZoomOutEnabled);
self.addElement({width:2,id:"spacing-between-zoom"});
addButton("zoom-in","button_zoom_in.gif","Zoom in",self.zoomIn,mZoomInEnabled);
self.addElement({width:7,id:"spacing-after-zoom"});
addButton("zoom-mode",(mapPackage.MapController.DEFAULT_ACTION_MODE==mapPackage.MapController.ACTION_MODE_ZOOM?"button_zoom_mode_highlight":"button_zoom_mode")+mAlphaImgExt,"Switch to zoom mode",self.switchToZoomMode);
self.addElement({width:2,id:"spacing-between-mode"});
addButton("move-mode",(mapPackage.MapController.DEFAULT_ACTION_MODE==mapPackage.MapController.ACTION_MODE_MOVE?"button_move_mode_highlight.gif":"button_move_mode.gif"),"Switch to move mode",self.switchToMoveMode);
self.addElement({width:7,id:"spacing-after-mode"});
var overviewLayer=map.getLayer("overview");
addButton("overview",(overviewLayer&&overviewLayer.isEnabled()?"button_overview_highlight.gif":"button_overview.gif"),"Show or hide the overview map",self.toggleOverview);
self.addElement({width:7,id:"spacing-after-overview"});
addButton("map-view","button_map_view_highlight.gif","Switch to standard map view",self.switchToPlainView);
self.addElement({width:2,id:"spacing-between-view-1"});
addButton("hybrid-view","button_hybrid_view.gif","Switch to hybrid view",self.switchToHybridView);
self.addElement({width:2,id:"spacing-between-view-2"});
addButton("aerial-view","button_aerial_view.gif","Switch to aerial view",self.switchToAerialView);
self.addElement({width:7,id:"spacing-after-view"});
var measurementLayer=map.getLayer("measurement");
addButton("measurement",(measurementLayer&&measurementLayer.isEnabled()?"button_measurement_highlight.gif":"button_measurement.gif"),"Distance measurement tool",self.toggleMeasurement);
if(mapPackage.Map.ADDRESS_LOOKUP_ENABLED){self.addElement({width:2,id:"spacing-after-measurement"});
var addressLookupLayer=map.getLayer("addresslookup");
addButton("address-lookup",(addressLookupLayer&&addressLookupLayer.isEnabled()?"button_address_lookup_highlight.gif":"button_address_lookup.gif"),"Address lookup tool",self.toggleAddressLookup);
};self.addElement({width:7,id:"spacing-after-address-lookup"});
addButton("reset","button_reset.gif","Reset map view",self.resetMapRect);
self.addElement({width:7,id:"spacing-after-reset"});
addButton("history-back","button_history_back.gif","Move one step back in history",self.historyBack,mHistoryBackEnabled);
self.addElement({width:2,id:"spacing-between-history"});
addButton("history-forward","button_history_forward.gif","Move one step forward in history",self.historyForward,mHistoryForwardEnabled);
map.addEventListener("changeZoom",zoomChanged);
map.addEventListener("historyChanged",historyChanged);
};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};var map=self.getMap();
map.removeEventListener("changeZoom",zoomChanged);
map.removeEventListener("historyChanged",historyChanged);
superDispose.call(self);
};
self.zoomIn=function(){var map=self.getMap();
map.startLoggingAction("user:buttonZoomIn");
try{clazz.zoomIn(map);
}finally{map.endLoggingAction();
}};
self.zoomOut=function(){var map=self.getMap();
map.startLoggingAction("user:buttonZoomOut");
try{clazz.zoomOut(map);
}finally{map.endLoggingAction();
}};
self.switchToZoomMode=function(){var map=self.getMap();
if(map.getController().getActionMode()!=mapPackage.MapController.ACTION_MODE_ZOOM){self.setButtonImage("move-mode",getImageURL("button_move_mode.gif"));
self.setButtonImage("zoom-mode",getImageURL("button_zoom_mode_highlight"+mAlphaImgExt));
clazz.switchToZoomMode(map);
}};
self.switchToMoveMode=function(){var map=self.getMap();
if(map.getController().getActionMode()!=mapPackage.MapController.ACTION_MODE_MOVE){self.setButtonImage("move-mode",getImageURL("button_move_mode_highlight.gif"));
self.setButtonImage("zoom-mode",getImageURL("button_zoom_mode"+mAlphaImgExt));
clazz.switchToMoveMode(map);
}};
self.toggleOverview=function(){var map=self.getMap();
clazz.toggleOverview(map);
var overviewLayer=map.getLayer("overview");
self.setButtonImage("overview",getImageURL(overviewLayer&&overviewLayer.isEnabled()?"button_overview_highlight.gif":"button_overview.gif"));
};
self.switchToPlainView=function(){self.setButtonImage("map-view",getImageURL("button_map_view_highlight.gif"));
self.setButtonImage("hybrid-view",getImageURL("button_hybrid_view.gif"));
self.setButtonImage("aerial-view",getImageURL("button_aerial_view.gif"));
clazz.switchToPlainView(self.getMap());
};
self.switchToHybridView=function(){self.setButtonImage("map-view",getImageURL("button_map_view.gif"));
self.setButtonImage("hybrid-view",getImageURL("button_hybrid_view_highlight.gif"));
self.setButtonImage("aerial-view",getImageURL("button_aerial_view.gif"));
clazz.switchToHybridView(self.getMap());
};
self.switchToAerialView=function(){self.setButtonImage("map-view",getImageURL("button_map_view.gif"));
self.setButtonImage("hybrid-view",getImageURL("button_hybrid_view.gif"));
self.setButtonImage("aerial-view",getImageURL("button_aerial_view_highlight.gif"));
clazz.switchToAerialView(self.getMap());
};
self.toggleMeasurement=function(){var map=self.getMap();
var addressLookupLayer=map.getLayer("addresslookup");
if(addressLookupLayer&&addressLookupLayer.isEnabled()){self.toggleAddressLookup();
};clazz.toggleMeasurement(map);
var measurementLayer=map.getLayer("measurement");
self.setButtonImage("measurement",getImageURL(measurementLayer&&measurementLayer.isEnabled()?"button_measurement_highlight.gif":"button_measurement.gif"));
};
self.toggleAddressLookup=function(){var map=self.getMap();
var measurementLayer=map.getLayer("measurement");
if(measurementLayer&&measurementLayer.isEnabled()){self.toggleMeasurement();
};clazz.toggleAddressLookup(map);
var addressLookupLayer=map.getLayer("addresslookup");
self.setButtonImage("address-lookup",getImageURL(addressLookupLayer&&addressLookupLayer.isEnabled()?"button_address_lookup_highlight.gif":"button_address_lookup.gif"));
};
self.resetMapRect=function(){clazz.resetMapRect(self.getMap());
};
self.historyBack=function(){clazz.historyBack(self.getMap());
};
self.historyForward=function(){clazz.historyForward(self.getMap());
};
});
qxp.Class.zoomIn=function(map){map.setZoom(map.getZoom()-1);
};
qxp.Class.zoomOut=function(map){map.setZoom(map.getZoom()+1);
};
qxp.Class.switchToZoomMode=function(map){map.getController().setActionMode(com.ptvag.webcomponent.map.MapController.ACTION_MODE_ZOOM);
};
qxp.Class.switchToMoveMode=function(map){map.getController().setActionMode(com.ptvag.webcomponent.map.MapController.ACTION_MODE_MOVE);
};
qxp.Class.toggleOverview=function(map){var overviewLayer=map.getLayer("overview");
overviewLayer.setEnabled(!overviewLayer.isEnabled());
};
qxp.Class.switchToPlainView=function(map){map.getLayer("sat").setEnabled(false);
map.getLayer("label").setLayerOpacity(1);
};
qxp.Class.switchToHybridView=function(map){var satLayer=map.getLayer("sat");
satLayer.setEnabled(true);
satLayer.setLayerOpacity(0.8);
map.getLayer("label").setLayerOpacity(0.65);
};
qxp.Class.switchToAerialView=function(map){var satLayer=map.getLayer("sat");
satLayer.setEnabled(true);
satLayer.setLayerOpacity(1);
map.getLayer("label").setLayerOpacity(0.65);
};
qxp.Class.toggleMeasurement=function(map){var measurementLayer=map.getLayer("measurement");
if(measurementLayer){if(measurementLayer.isEnabled()){map.removeLayer("measurement");
}}else{var floaterLayer=map.getLayer("floater");
measurementLayer=new com.ptvag.webcomponent.map.layer.MeasurementLayer(floaterLayer);
measurementLayer.setIncludeInPrint(true);
measurementLayer.setIsRelative(true);
map.addLayer(measurementLayer,"measurement",null,floaterLayer);
}};
qxp.Class.toggleAddressLookup=function(map){var addressLookupLayer=map.getLayer("addresslookup");
if(addressLookupLayer){if(addressLookupLayer.isEnabled()){map.removeLayer("addresslookup");
}}else{var floaterLayer=map.getLayer("floater");
addressLookupLayer=new com.ptvag.webcomponent.map.layer.AddressLookupLayer(floaterLayer);
addressLookupLayer.setIncludeInPrint(true);
addressLookupLayer.setIsRelative(true);
map.addLayer(addressLookupLayer,"addresslookup",null,floaterLayer);
}};
qxp.Class.resetMapRect=function(map){var resetRect=map.getResetRect();
map.setRect(resetRect.left,resetRect.top,resetRect.right,resetRect.bottom,true);
};
qxp.Class.historyBack=function(map){map.historyBack();
};
qxp.Class.historyForward=function(map){map.historyForward();
};




/* ID: com.ptvag.webcomponent.map.layer.MeasurementLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.MeasurementLayer",com.ptvag.webcomponent.map.layer.VectorLayer,function(floaterLayer,isSecondary){com.ptvag.webcomponent.map.layer.VectorLayer.call(this,floaterLayer,(isSecondary==null?true:isSecondary));
var self=this;
var mapPackage=com.ptvag.webcomponent.map;
var vectorPackage=mapPackage.vector;
var CoordUtil=mapPackage.CoordUtil;
var mMouseDown=false;
var mMeasurementLine=null;
var mDistanceBox=null;
var mStartPoint;
var superInit=self.init;
self.init=function(){superInit.apply(self,arguments);
self.getMap().addEventListener("changeUseMiles",fillDistanceBox);
};
var fillDistanceBox=function(){if(mDistanceBox==null){return;
};var distance=CoordUtil.distanceOfSmartUnitPoints(mStartPoint,mEndPoint);
if(self.getMap().getUseMiles()){var distanceMiles=distance/1609.344;
if(distanceMiles>=1){if(distanceMiles>1000){var distanceText=""+Math.round(distanceMiles);
}else{distanceMiles*=10;
var roundedDist=Math.round(distanceMiles);
var fractionalPart=roundedDist%10;
distanceText=parseInt(roundedDist/10)+self.getMap().getDecimalSeparator()+fractionalPart;
};distanceText+=" mi";
}else{distanceText=Math.round(distance/0.9144)+" yd";
}}else{if(distance>1000){if(distance>=1000000){distanceText=""+Math.round(distance/1000);
}else{distance/=100;
roundedDist=Math.round(distance);
fractionalPart=roundedDist%10;
distanceText=parseInt(roundedDist/10)+self.getMap().getDecimalSeparator()+fractionalPart;
};distanceText+=" km";
}else{distanceText=Math.round(distance)+" m";
}};var html="<div _ptv_map_dontPrint='true' style='background-color:white;font-family:Verdana,Arial,sans-serif;font-size:10px;color:black;padding:2px;border:1px solid black'>"+distanceText+"</div>";
var x=(mStartPoint.x+mEndPoint.x)/2;
var y=(mStartPoint.y+mEndPoint.y)/2;
mDistanceBox.updateProperties(x,y,null,html);
};
self.onMouseDown=function(evt){if(!com.ptvag.webcomponent.util.EventUtils.isLeftMouseButton(evt)){return false;
};self.removeAllElements();
mStartPoint=self.getMap().translateMouseCoords(evt);
mEndPoint=mStartPoint;
mMeasurementLine=new vectorPackage.Line("rgba(0, 0, 0, 1.0)",2,[mStartPoint,mEndPoint]);
mMeasurementLine.setId("measurementLine");
mMeasurementLine.set({startArrowLength:5,startArrowAngle:180,endArrowLength:5,endArrowAngle:180});
self.addElement(mMeasurementLine);
mDistanceBox=new vectorPackage.HTML();
mDistanceBox.setId("distanceBox");
mDistanceBox.setAlignment(mapPackage.layer.VectorLayer.ALIGN_MID_HORIZ+mapPackage.layer.VectorLayer.ALIGN_MID_VERT);
fillDistanceBox();
self.addElement(mDistanceBox);
mMouseDown=true;
return true;
};
self.onMouseMove=function(evt){if(mMouseDown){mEndPoint=self.getMap().translateMouseCoords(evt);
mMeasurementLine.setCoordinates([mStartPoint,mEndPoint]);
fillDistanceBox();
};return false;
};
self.onMouseUp=function(){if(!mMouseDown){return false;
};mMouseDown=false;
return true;
};
self.onMouseOut=function(){if(mMouseDown){self.removeAllElements();
mMeasurementLine=null;
mDistanceBox=null;
mMouseDown=false;
};return false;
};
var superDoPrint=self.doPrint;
self.doPrint=function(ctx,htmlContainer,htmlBackground){superDoPrint.apply(self,arguments);
if(mDistanceBox!=null){var distanceBoxDiv=self.getParentElement().getElementsByTagName("div")[0].firstChild;
var left=parseInt(distanceBoxDiv.style.left);
var top=parseInt(distanceBoxDiv.style.top);
var width=distanceBoxDiv.offsetWidth-1;
var height=distanceBoxDiv.offsetHeight-1;
ctx.fillStyle="rgb(255, 255, 255)";
ctx.strokeStyle="rgb(0, 0, 0)";
ctx.lineWidth=1;
ctx.beginPath();
ctx.rect(left,top,width,height);
ctx.fill();
ctx.beginPath();
ctx.rect(left,top,width,height);
ctx.stroke();
ctx.fontFamily="sans-serif";
ctx.fontStyle="plain";
ctx.fontSize=10;
ctx.textAlignment=34;
ctx.drawText(distanceBoxDiv.firstChild.firstChild.nodeValue,left+width/2,top+height/2);
}};
self.onKeyDown=function(evt){var EventUtils=com.ptvag.webcomponent.util.EventUtils;
if(mMouseDown){self.onMouseOut();
return true;
};return false;
};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};self.getMap().removeEventListener("changeUseMiles",fillDistanceBox);
superDispose.call(self);
};
});




/* ID: com.ptvag.webcomponent.map.vector.HTML */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.HTML",com.ptvag.webcomponent.map.vector.VectorElement,function(x,y,alignment,html,priority,id,isPositionFlexible){com.ptvag.webcomponent.map.vector.VectorElement.call(this,priority,id,isPositionFlexible);
var self=this;
var map=com.ptvag.webcomponent.map;
var mElement=null;
var mWidth=null;
var mHeight=null;
var mNoRefresh=false;
var mNoClearOnRefresh=false;
self.updateProperties=function(x,y,alignment,html){mNoRefresh=true;
if(x!=null){self.setX(x);
};if(y!=null){self.setY(y);
};if(alignment!=null){self.setAlignment(alignment);
};if(html!=null){self.setHtml(html);
};mNoRefresh=false;
if(mElement!=null){mElement.innerHTML=self.getHtml();
mWidth=mElement.offsetWidth;
mHeight=mElement.offsetHeight;
mNoClearOnRefresh=true;
self.refresh();
mNoClearOnRefresh=false;
}};
var positionElement=function(){if(mElement!=null&&mWidth!=null&&mHeight!=null){var realX=self.getRealX();
var realY=self.getRealY();
if(realX!=null&&realY!=null){var alignment=self.getAlignment();
if(alignment&map.layer.VectorLayer.ALIGN_MID_HORIZ){mElement.style.left=Math.round(realX-(mWidth/2))+"px";
}else if(alignment&map.layer.VectorLayer.ALIGN_RIGHT){mElement.style.left=Math.round(realX-mWidth)+"px";
}else{mElement.style.left=Math.round(realX)+"px";
};if(alignment&map.layer.VectorLayer.ALIGN_MID_VERT){mElement.style.top=Math.round(realY-(mHeight/2))+"px";
}else if(alignment&map.layer.VectorLayer.ALIGN_BOTTOM){mElement.style.top=Math.round(realY-mHeight)+"px";
}else{mElement.style.top=Math.round(realY)+"px";
}}}};
self.usesCanvas=function(){return false;
};
self.draw=function(container,topLevelContainer,ctx,mapLeft,mapTop,mapZoom){var suPoint={x:self.getX(),y:self.getY()};
var pixCoords=map.CoordUtil.smartUnit2Pixel(suPoint,mapZoom);
var realX=pixCoords.x-mapLeft+self.getFlexX();
var realY=mapTop-pixCoords.y+self.getFlexY();
self.setRealX(realX);
self.setRealY(realY);
if(mElement==null){mElement=document.createElement("div");
mElement.style.position="absolute";
mElement.style.visibility="hidden";
mElement.innerHTML=self.getHtml();
if(self.getTopLevel()){mElement._ignoreMouseDown=true;
mElement._ignoreMouseUp=true;
mElement._allowSelection=true;
mElement._ignoreMouseWheel=self.getAllowMouseWheel();
mElement.style.zIndex=2000000000+self.getPriority();
topLevelContainer.appendChild(mElement);
}else{mElement.style.zIndex=-2000000000+self.getPriority();
container.appendChild(mElement);
};mWidth=mElement.offsetWidth;
mHeight=mElement.offsetHeight;
positionElement();
mElement.style.visibility="visible";
}else{positionElement();
}};
self.clear=function(inDispose){if(mElement!=null){if(!inDispose){mElement.parentNode.removeChild(mElement);
};mElement=null;
}};
self.refresh=function(){if(mNoRefresh){return;
};var vectorLayer=self.getVectorLayer();
if(vectorLayer){if(!mNoClearOnRefresh){self.clear();
};vectorLayer.onViewChanged();
}};
self.updateProperties(x,y,alignment,html);
self.refreshOn("x","y","alignment","html","topLevel","allowMouseWheel");
});
qxp.OO.addProperty({name:"x",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:4355664});
qxp.OO.addProperty({name:"y",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:5464867});
qxp.OO.addProperty({name:"realX",type:qxp.constant.Type.NUMBER,allowNull:false});
qxp.OO.addProperty({name:"realY",type:qxp.constant.Type.NUMBER,allowNull:false});
qxp.OO.addProperty({name:"alignment",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:66});
qxp.OO.addProperty({name:"html",type:qxp.constant.Type.STRING,allowNull:false,defaultValue:""});
qxp.OO.addProperty({name:"topLevel",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:false});
qxp.OO.addProperty({name:"allowMouseWheel",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:false});




/* ID: com.ptvag.webcomponent.map.layer.TileMapLayer */
qxp.OO.defineClass("com.ptvag.webcomponent.map.layer.TileMapLayer",com.ptvag.webcomponent.map.layer.AbstractMapLayer,function(requestBuilder){com.ptvag.webcomponent.map.layer.AbstractMapLayer.call(this,requestBuilder);
var self=this;
var map=com.ptvag.webcomponent.map;
var mImgLayer;
var mBackgroundImgLayer;
var mMapVersion=null;
var superInit=self.init;
self.init=function(){superInit.apply(self,arguments);
mMapVersion=self.getMap().getMapVersion();
mImgLayer=createImgLayer(self.getMap().getZoom());
if(self.isEnabled()){updateContent({});
}};
var superOnViewChanged=self.onViewChanged;
self.onViewChanged=function(evt){superOnViewChanged(evt);
updateContent(evt);
};
var updateContent=function(evt){var newZoom=self.getMap().getZoom();
if(newZoom!=mImgLayer.zoom||evt.clipRectChanged){if(getLoadedFactor(mImgLayer)<map.layer.TileMapLayer.MIN_LOADED_FACTOR){cleanUpImgLayer(mImgLayer);
if(evt.clipRectChanged){cleanUpImgLayer(mBackgroundImgLayer);
mBackgroundImgLayer=null;
}}else{cleanUpImgLayer(mBackgroundImgLayer);
if(evt.clipRectChanged){cleanUpImgLayer(mImgLayer);
mImgLayer=null;
};mBackgroundImgLayer=mImgLayer;
};mImgLayer=createImgLayer(newZoom);
if(mBackgroundImgLayer!=null){for(var y=0;
y<mBackgroundImgLayer.imgArr.length;
y++){var imgRow=mBackgroundImgLayer.imgArr[y];
for(var x=0;
x<imgRow.length;
x++){var imgElem=imgRow[x];
if(imgElem._imgId){map.ImageLoader.abortLoading(imgElem._imgId);
}}}}};var centerSuPt=self.getMap().getCenter();
var centerPixPt=map.CoordUtil.smartUnit2Pixel(centerSuPt,newZoom);
var tileWidth=map.CoordUtil.TILE_WIDTH;
var borderTileCount=map.layer.TileMapLayer.BORDER_TILE_COUNT;
var areaWidth=self.getComputedAreaWidth();
var areaHeight=self.getComputedAreaHeight();
var leftPix=centerPixPt.x-areaWidth/2;
var bottomPix=centerPixPt.y-areaHeight/2;
var leftTileOffset=leftPix%tileWidth;
if(leftTileOffset<0){leftTileOffset+=tileWidth;
};leftTileOffset+=borderTileCount*tileWidth;
var bottomTileOffset=bottomPix%tileWidth;
if(bottomTileOffset<0){bottomTileOffset+=tileWidth;
};bottomTileOffset+=borderTileCount*tileWidth;
var oldStartTileX=mImgLayer.startTileX;
var oldStartTileY=mImgLayer.startTileY;
mImgLayer.startTileX=Math.floor(leftPix/tileWidth)-borderTileCount;
mImgLayer.startTileY=Math.floor(bottomPix/tileWidth)-borderTileCount;
var oldTileXCount=mImgLayer.tileXCount;
var oldTileYCount=mImgLayer.tileYCount;
mImgLayer.tileXCount=Math.ceil((leftTileOffset+areaWidth)/tileWidth)+borderTileCount;
mImgLayer.tileYCount=Math.ceil((bottomTileOffset+areaHeight)/tileWidth)+borderTileCount;
var visibleCenter=self.getMap().getVisibleCenter();
var visibleZoom=self.getMap().getVisibleZoom();
if(mBackgroundImgLayer!=null){setVisibleZoomForImgLayer(mBackgroundImgLayer,visibleZoom);
setCenterForImgLayer(mBackgroundImgLayer,visibleCenter);
};setVisibleZoomForImgLayer(mImgLayer,visibleZoom);
setCenterForImgLayer(mImgLayer,visibleCenter);
if(mImgLayer.startTileX!=oldStartTileX||mImgLayer.startTileY!=oldStartTileY||oldTileXCount!=mImgLayer.tileXCount||oldTileYCount!=mImgLayer.tileYCount){var imgJobArr=[];
var deltaY=oldStartTileY-mImgLayer.startTileY;
if(deltaY<0){var removeBeginRowCount=Math.min(-deltaY,mImgLayer.imgArr.length);
for(var i=0;
i<removeBeginRowCount;
i++){var imgRow=mImgLayer.imgArr.shift();
for(var x=0;
x<imgRow.length;
x++){cleanUpImgElem(imgRow[x]);
}}}else{var addBeginRowCount=Math.min(deltaY,mImgLayer.tileYCount);
for(var i=0;
i<addBeginRowCount;
i++){mImgLayer.imgArr.unshift([]);
}};var removeEndRowCount=mImgLayer.imgArr.length-mImgLayer.tileYCount;
for(var i=0;
i<removeEndRowCount;
i++){var imgRow=mImgLayer.imgArr.pop();
for(var x=0;
x<imgRow.length;
x++){cleanUpImgElem(imgRow[x]);
}};var deltaX=oldStartTileX-mImgLayer.startTileX;
for(var y=mImgLayer.tileYCount-1;
y>=0;
y--){var imgRow=mImgLayer.imgArr[y];
if(imgRow==null){mImgLayer.imgArr[y]=imgRow=[];
};if(deltaX<0){var removeLeftCount=Math.min(-deltaX,imgRow.length);
for(var i=0;
i<removeLeftCount;
i++){cleanUpImgElem(imgRow.shift());
}}else{var addLeftCount=Math.min(deltaX,mImgLayer.tileXCount);
for(var x=addLeftCount-1;
x>=0;
x--){imgRow.unshift(createImgElem(mImgLayer,x,y,tileWidth,imgJobArr));
}};for(var x=imgRow.length;
x<mImgLayer.tileXCount;
x++){imgRow.push(createImgElem(mImgLayer,x,y,tileWidth,imgJobArr));
};for(var i=imgRow.length-1;
i>=mImgLayer.tileXCount;
i--){cleanUpImgElem(imgRow.pop());
}};imgJobArr.sort(imageJobComparator);
for(var i=0;
i<imgJobArr.length;
i++){var job=imgJobArr[i];
job.imgElem._imgId=map.ImageLoader.loadImage(job.imgElem,job.imgInfo.url,onImgLoaded,null,map.ImageLoader.getDefaultTimeout()*2,true);
job.imgElem._clipTop=job.imgInfo.clipTop;
job.imgElem._clipLeft=job.imgInfo.clipLeft;
job.imgElem._width=job.imgInfo.width;
job.imgElem._height=job.imgInfo.height;
};updateTileOffsets(mImgLayer,tileWidth);
}};
var createImgElem=function(imgLayer,x,y,tileWidth,imgJobArr){var imgElem=document.createElement("img");
imgElem.style.position="absolute";
imgElem.style.visibility="hidden";
imgElem.style.width=tileWidth+"px";
imgElem.style.height=tileWidth+"px";
imgElem.style.MozUserSelect="none";
imgElem._imgLayer=imgLayer;
imgLayer.imgParent.appendChild(imgElem);
if(self.showTileBoundaries()){var debugElem=document.createElement("div");
debugElem.style.position="absolute";
debugElem.style.width=tileWidth+"px";
debugElem.style.height=tileWidth+"px";
debugElem.style.MozBoxSizing="border-box";
debugElem.style.borderLeft="1px dashed black";
debugElem.style.borderTop="1px dashed black";
debugElem.style.zIndex=1000;
imgElem._debugElem=debugElem;
imgLayer.imgParent.appendChild(debugElem);
};var tilePoint={x:(mImgLayer.startTileX+x),y:(mImgLayer.startTileY+y)};
var zoomLevel=self.getMap().getZoom();
var fromSuPoint=map.CoordUtil.tile2SmartUnit(tilePoint,zoomLevel);
var fromMercPoint=map.CoordUtil.smartUnit2Mercator(fromSuPoint);
var toTilePoint={x:tilePoint.x+1,y:tilePoint.y+1};
var toSuPoint=map.CoordUtil.tile2SmartUnit(toTilePoint,zoomLevel);
var toMercPoint=map.CoordUtil.smartUnit2Mercator(toSuPoint);
var left=fromMercPoint.x;
var bottom=fromMercPoint.y;
var right=toMercPoint.x;
var top=toMercPoint.y;
var imgInfo=requestBuilder.buildRequest(left,top,right,bottom,map.CoordUtil.TILE_WIDTH,map.CoordUtil.TILE_WIDTH,null,mMapVersion);
if(!imgInfo.completelyClipped){var distX=x+0.5-mImgLayer.tileXCount/2;
var distY=y+0.5-mImgLayer.tileYCount/2;
var centerDistance=distX*distX+distY*distY;
imgJobArr.push({x:x,y:y,centerDistance:centerDistance,imgElem:imgElem,imgInfo:imgInfo});
imgLayer.totalImageCount++;
};return imgElem;
};
var cleanUpImgElem=function(imgElem,inDispose){if(imgElem._imgId){if(!imgElem._loaded||!inDispose){map.ImageLoader.abortLoading(imgElem._imgId,true);
};imgElem._imgLayer.totalImageCount--;
imgElem._imgId=null;
};if(imgElem._loaded){imgElem._imgLayer.loadedImageCount--;
};imgElem._imgLayer=null;
imgElem._debugElem=null;
return imgElem;
};
var createImgLayer=function(zoom){var imgParent=document.createElement("div");
imgParent.style.position="absolute";
self.getAreaElement().appendChild(imgParent);
return{imgParent:imgParent,imgArr:[],zoom:zoom,visibleZoom:zoom,scaleFactor:1,tileWidthPix:map.CoordUtil.TILE_WIDTH,nativeTileWidthSu:map.CoordUtil.getTileWidth(zoom),totalImageCount:0,loadedImageCount:0};
};var cleanUpImgLayer=function(imgLayer,inDispose){if(imgLayer){for(var y=0;
y<imgLayer.imgArr.length;
y++){var imgRow=imgLayer.imgArr[y];
for(var x=0;
x<imgRow.length;
x++){cleanUpImgElem(imgRow[x],inDispose);
}};imgLayer.imgArr=[];
if(!inDispose){self.getAreaElement().removeChild(imgLayer.imgParent);
};imgLayer.totalImageCount=0;
imgLayer.loadedImageCount=0;
}};
var imageJobComparator=function(job1,job2){return(job1.centerDistance>job2.centerDistance)?1:-1;
};
var setVisibleZoomForImgLayer=function(imgLayer,zoom){if(imgLayer.visibleZoom!=zoom){var scaleFactor=imgLayer.nativeTileWidthSu/map.CoordUtil.getTileWidth(zoom);
var scaledTileWidth=Math.round(map.CoordUtil.TILE_WIDTH*scaleFactor);
if(scaledTileWidth>map.MapUtil.MAX_IMAGE_SCALE_WIDTH){imgLayer.imgParent.style.visibility="hidden";
}else{imgLayer.imgParent.style.visibility="";
updateTileOffsets(imgLayer,scaledTileWidth);
};imgLayer.visibleZoom=zoom;
imgLayer.scaleFactor=scaleFactor;
imgLayer.tileWidthPix=scaledTileWidth;
}};
var setCenterForImgLayer=function(imgLayer,centerSuPt){var tileWidthPix=imgLayer.tileWidthPix;
var layerLeftPix=imgLayer.startTileX*tileWidthPix;
var layerBottomPix=imgLayer.startTileY*tileWidthPix;
var layerHeight=imgLayer.tileYCount*tileWidthPix;
var layerTopPix=layerBottomPix+layerHeight;
var tileWidthSu=imgLayer.nativeTileWidthSu*map.CoordUtil.TILE_WIDTH/tileWidthPix;
var centerPixPt=map.CoordUtil.smartUnit2PixelByTileWidth(centerSuPt,tileWidthSu);
var mapLeftPix=centerPixPt.x-self.getComputedAreaWidth()/2;
var mapTopPix=centerPixPt.y+self.getComputedAreaHeight()/2;
var offsetX=0;
var offsetY=0;
if(self.isRelative()){var relativeOffset=self.getMap().getRelativeOffset();
offsetX=relativeOffset.x;
offsetY=relativeOffset.y;
};var areaBorderWidth=self.getAreaBorderWidth();
offsetX-=areaBorderWidth;
offsetY-=areaBorderWidth;
imgLayer.imgParent.style.left=offsetX+Math.round(layerLeftPix-mapLeftPix)+"px";
imgLayer.imgParent.style.top=offsetY+Math.round(-(layerTopPix-mapTopPix))+"px";
};
var updateTileOffsets=function(imgLayer,tileWidth){var debugOffset=0;
var scaleFactor=tileWidth/map.CoordUtil.TILE_WIDTH;
var rowCount=imgLayer.imgArr.length;
for(var y=0;
y<rowCount;
y++){var imgRow=imgLayer.imgArr[y];
for(var x=0;
x<imgRow.length;
x++){var imgElem=imgRow[x];
if(imgElem._imgId!=null){var left=Math.round(x*(tileWidth+debugOffset));
if(imgElem._clipLeft!=0){left+=Math.ceil(imgElem._clipLeft*scaleFactor);
};imgElem.style.left=left+"px";
var top=Math.round((rowCount-y-1)*(tileWidth+debugOffset));
if(imgElem._clipTop!=0){top+=Math.ceil(imgElem._clipTop*scaleFactor);
};imgElem.style.top=top+"px";
if(imgElem._debugElem){if(scaleFactor==1){imgElem._debugElem.style.left=left+"px";
imgElem._debugElem.style.top=top+"px";
}else{imgElem._debugElem.style.visibility="hidden";
}};imgElem.style.width=Math.round(imgElem._width*scaleFactor)+"px";
imgElem.style.height=Math.round(imgElem._height*scaleFactor)+"px";
}}}};
var onImgLoaded=function(imgElem,url,exc){if(exc==null){imgElem._loaded=true;
window.setTimeout(function(){imgElem.style.visibility="";
},50);
if(imgElem._imgLayer!=null){imgElem._imgLayer.loadedImageCount++;
};if(imgElem._imgLayer==mImgLayer){if(mImgLayer.loadedImageCount==mImgLayer.totalImageCount){if(self.getRemoveUnusedElements()){cleanUpImgLayer(mBackgroundImgLayer);
mBackgroundImgLayer=null;
}}}}};
var getLoadedFactor=function(imgLayer){return(imgLayer.totalImageCount==0)?0:(imgLayer.loadedImageCount/imgLayer.totalImageCount);
};
self.repaint=function(){updateContent({clipRectChanged:true});
};
self.doPrintMap=function(ctx,htmlContainer,htmlBackground){if(mImgLayer){var offsetX=0;
var offsetY=0;
if(self.isRelative()){var relativeOffset=self.getMap().getRelativeOffset();
offsetX=relativeOffset.x;
offsetY=relativeOffset.y;
};var areaBorderWidth=self.getAreaBorderWidth();
offsetX-=parseInt(mImgLayer.imgParent.style.left)+areaBorderWidth;
offsetY-=parseInt(mImgLayer.imgParent.style.top)+areaBorderWidth;
var imgRowCount=mImgLayer.imgArr.length;
for(var i=0;
i<imgRowCount;
++i){var imgRow=mImgLayer.imgArr[i];
var imgCount=imgRow.length;
for(var j=0;
j<imgCount;
++j){var imgElem=imgRow[j];
if(imgElem._loaded){ctx.drawImage(imgElem,0,0,imgElem._width,imgElem._height,self.getComputedAreaLeft()+parseInt(imgElem.style.left)-offsetX,self.getComputedAreaTop()+parseInt(imgElem.style.top)-offsetY,parseInt(imgElem.style.width),parseInt(imgElem.style.height));
}}}}};
var superDispose=self.dispose;
self.dispose=function(){if(self.getDisposed()){return;
};cleanUpImgLayer(mImgLayer,true);
cleanUpImgLayer(mBackgroundImgLayer,true);
superDispose.call(self);
};
});
qxp.OO.addProperty({name:"removeUnusedElements",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:false});
qxp.OO.addProperty({name:"showTileBoundaries",type:qxp.constant.Type.BOOLEAN,allowNull:false,defaultValue:false,getAlias:"showTileBoundaries"});
qxp.Class.BORDER_TILE_COUNT=1;
qxp.Class.MIN_LOADED_FACTOR=0.4;




/* ID: com.ptvag.webcomponent.map.vector.POI */
qxp.OO.defineClass("com.ptvag.webcomponent.map.vector.POI",com.ptvag.webcomponent.map.vector.AggregateElement,function(x,y,url,alignment,tooltipContent,infoBoxContent,priority,id,isPositionFlexible){var self=this;
var map=com.ptvag.webcomponent.map;
if(x!=null&&x instanceof map.layer.VectorLayer){if(arguments.length>=2){x=arguments[1];
}else{x=null;
};if(arguments.length>=3){y=arguments[2];
}else{y=null;
};if(arguments.length>=4){url=arguments[3];
}else{url=null;
};if(arguments.length>=5){alignment=arguments[4];
}else{alignment=null;
};if(arguments.length>=6){tooltipContent=arguments[5];
}else{tooltipContent=null;
};if(arguments.length>=7){infoBoxContent=arguments[6];
}else{infoBoxContent=null;
};if(arguments.length>=8){priority=arguments[7];
}else{priority=null;
};if(arguments.length>=9){id=arguments[8];
}else{id=null;
};if(arguments.length>=10){isPositionFlexible=arguments[9];
}else{isPositionFlexible=null;
}};map.vector.AggregateElement.call(this,id);
var createElements=function(vectorLayer){var visibleMinZoom=self.getVisibleMinZoom();
var visibleMaxZoom=self.getVisibleMaxZoom();
var x=self.getX();
var y=self.getY();
var url=self.getUrl();
var alignment=self.getAlignment();
var priority=self.getPriority();
var isPositionFlexible=self.isPositionFlexible();
var tooltipContent=self.getTooltipContent();
var infoBoxContent=self.getInfoBoxContent();
var id=self.getId();
var markerId=id+"_POI_internal_ImageMarker";
var imageMarker=new map.vector.ImageMarker2(x,y,url,alignment,priority,markerId,isPositionFlexible);
imageMarker.setVisibleMinZoom(visibleMinZoom);
imageMarker.setVisibleMaxZoom(visibleMaxZoom);
imageMarker.setMinFactor(self.getMinFactor());
imageMarker.setMaxFactor(self.getMaxFactor());
imageMarker.setMinZoom(self.getMinZoom());
imageMarker.setMaxZoom(self.getMaxZoom());
self.addElement(imageMarker);
if(tooltipContent!=null){var tooltip=new map.vector.Tooltip(x,y,null,null,tooltipContent,alignment,priority,null,isPositionFlexible);
tooltip.setVisibleMinZoom(visibleMinZoom);
tooltip.setVisibleMaxZoom(visibleMaxZoom);
tooltip.setDependsOn(markerId);
self.addElement(tooltip);
};if(isPositionFlexible){var flexMarker=self.createFlexMarker(markerId);
flexMarker.setVisibleMinZoom(visibleMinZoom);
flexMarker.setVisibleMaxZoom(visibleMaxZoom);
self.addElement(flexMarker);
};if(infoBoxContent!=null){var clickHandler=function(){var infoBoxId=id+"_POI_internal";
var infoBox=new map.vector.InfoBox(x,y,infoBoxContent,alignment,priority,infoBoxId,isPositionFlexible);
infoBox.setVisibleMinZoom(visibleMinZoom);
infoBox.setVisibleMaxZoom(visibleMaxZoom);
infoBox.setDependsOn(markerId);
self.addElement(infoBox);
vectorLayer.removeOnClick(infoBoxId);
};
var clickArea=new map.vector.ClickArea(x,y,null,null,clickHandler,priority,null,isPositionFlexible);
clickArea.setVisibleMinZoom(visibleMinZoom);
clickArea.setVisibleMaxZoom(visibleMaxZoom);
clickArea.setDependsOn(markerId);
self.addElement(clickArea);
}};
var superModifyVectorLayer=self._modifyVectorLayer;
self._modifyVectorLayer=function(propValue){superModifyVectorLayer.apply(self,arguments);
if(propValue!=null){createElements(propValue);
}};
self.refresh=function(){var vectorLayer=self.getVectorLayer();
if(vectorLayer){self.clear();
createElements(vectorLayer);
}};
self.createFlexMarker=function(flexElementId){return new map.vector.FlexMarkerArrow(flexElementId,self.getPriority()-1);
};
if(x!=null){self.setX(x);
};if(y!=null){self.setY(y);
};if(url!=null){self.setUrl(url);
};if(alignment!=null){self.setAlignment(alignment);
};if(tooltipContent!=null){self.setTooltipContent(tooltipContent);
};if(infoBoxContent!=null){self.setInfoBoxContent(infoBoxContent);
};if(priority!=null){self.setPriority(priority);
};if(isPositionFlexible!=null){self.setPositionFlexible(isPositionFlexible);
};self.refreshOn("x","y","url","alignment","tooltipContent","infoBoxContent");
});
qxp.OO.addProperty({name:"x",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:4355664});
qxp.OO.addProperty({name:"y",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:5464867});
qxp.OO.addProperty({name:"url",type:qxp.constant.Type.STRING,allowNull:true});
qxp.OO.addProperty({name:"alignment",type:qxp.constant.Type.NUMBER,allowNull:false,defaultValue:66});
qxp.OO.addProperty({name:"tooltipContent",type:qxp.constant.Type.STRING,allowNull:true});
qxp.OO.addProperty({name:"infoBoxContent",type:qxp.constant.Type.STRING,allowNull:true});

com.ptvag.webcomponent.map.Map.SETTINGS_OK=true;com.ptvag.webcomponent.map.Map.MAP_VERSION=null;com.ptvag.webcomponent.map.Map.STATIC_SERVER=null;com.ptvag.webcomponent.map.Map.ADDRESS_LOOKUP_ENABLED=false;com.ptvag.webcomponent.map.Map.MAP_API_VERSION="2.5.14";com.ptvag.webcomponent.map.RequestBuilder.SERVER1=null;com.ptvag.webcomponent.map.RequestBuilder.SERVER2=null;com.ptvag.webcomponent.map.RequestBuilder.SERVER3=null;