//---------------------------------------------------------------------
// File: jowms8.js  Date:01-08-2006
// (c) Copyright 2004, JO Informatik Aps, http://www.jo-informatik.dk/
//---------------------------------------------------------------------
function jsGlobals() {}if (!jsGlobals) var jsGlobals = new jsGlobals();if (!jsGlobals.browserDetector) { try { jsGlobals.browserDetector = new browserDetector(); } catch(e) { alert('browserDetector not loaded. \n\nbrowserDetector script reference must be placed before popUp script reference.') }}function CookieManager(name,value,expires,expiresUnit) { this.name = name; this.value = value; this.enabled = false; this.expires = expires; this.expiresUnit = expiresUnit; this.path = ''; this.domain = ''; this.secure = ''; this.Clear = DeleteCookie; this.setCookie = SetCookie; this.getCookie = GetCookie; this._getCookieVal = getCookieVal;} function getCookieVal (offset) { var endstr = document.cookie.indexOf (';', offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr));}function GetCookie () { var arg = this.name + '='; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return this._getCookieVal (j); i = document.cookie.indexOf(' ', i) + 1; if (i == 0) break; } return null;}function SetCookie() {var expdate = new Date();with (this) { var _expires = expires; switch (expiresUnit) { case 1: _expires*=12;  case 2: _expires*=30;  case 3: _expires*=24;  case 4: _expires*=60;  case 5: _expires*=60;  case 6: _expires*=1000;break;  default: _expires = 0 ; } expdate.setTime (expdate.getTime() + _expires);  document.cookie = name + '=' + escape (value) + ((expires) ? '; expires=' + expdate.toGMTString() : '') + ((path) ? '; path=' + path : '') + ((domain) ? '; domain=' + domain : '') + ((secure) ? '; secure' : '');}}function DeleteCookie (name,path,domain) {with (this) { if (getCookie(name)) { document.cookie = name + '=' + ((path) ? '; path=' + path : '') + ((domain) ? '; domain=' + domain : '') + '; expires=Thu, 01-Jan-70 00:00:01 GMT'; }}}function History(ms) { this.mapservice = ms; this.Items = new Array(); this.currentItemIndex = -1; this.maxItemIndex = 0; this.Back = wmsHistoryBack; this.Forward = wmsHistoryForward; this.AddItem = wmsHistoryAddItem; this.OnBeforeItemChange = null; this.OnAfterItemChange = null;}function historyItem(srcArray,visibleArray) { this.services = new Array; var service = null; for (var ix=0;ix<srcArray.length;ix++) { if (ix==0) this.bbox = findParam(srcArray[0],'bbox'); service = new historyService(); service.visible = visibleArray[ix]; service.src = service.visible?srcArray[ix]:''; service.layers = service.visible?findParam(srcArray[ix],'layers'):''; this.services[ix] = service; } return this;}function historyService() { this.src = ''; this.layers = ''; this.visible = null;}function wmsCompareHistoryItems(itm,srcArray,visibleArray) { for (var ix=0;ix<srcArray.length;ix++) { if ((itm.services[ix].src!=srcArray[ix]) || (itm.services[ix].visible!=visibleArray[ix])) return true; } return false;}function wmsHistoryAddItem(srcArray,visibleArray) { if (((this.Items[this.currentItemIndex]!=null) && (wmsCompareHistoryItems(this.Items[this.currentItemIndex],srcArray,visibleArray))) ||  (this.Items[this.currentItemIndex]==null)) { this.currentItemIndex++; this.maxItemIndex = this.currentItemIndex; this.Items[this.currentItemIndex] = new historyItem(srcArray,visibleArray); }}function wmsHistoryBack() { if ((this.currentItemIndex>0) && this.mapservice.mapChangeComplete()) { this.currentItemIndex-=1; var hBBox = this.Items[this.currentItemIndex].bbox; if (this.OnBeforeItemChange!=null) this.OnBeforeItemChange;  this.mapservice.SetView(parseFloat(hBBox[0]),parseFloat(hBBox[1]),parseFloat(hBBox[2]),parseFloat(hBBox[3])); if (this.OnAfterItemChange!=null) this.OnAfterItemChange; return this.Items[this.currentItemIndex]; }}function wmsHistoryForward() { if ((this.currentItemIndex<this.maxItemIndex) && this.mapservice.mapChangeComplete()) { this.currentItemIndex+=1; var hBBox = this.Items[this.currentItemIndex].bbox; if (this.OnBeforeItemChange!=null) this.OnBeforeItemChange;  this.mapservice.SetView(parseFloat(hBBox[0]),parseFloat(hBBox[1]),parseFloat(hBBox[2]),parseFloat(hBBox[3])); if (this.OnAfterItemChange!=null) this.OnAfterItemChange; return this.Items[this.currentItemIndex]; }}function findParam(str,param) { if (str==null) return ''; var sArray = str.split('?')[1].split('&'); var itemArray = null; for (var ix=0;ix<sArray.length;ix++) { itemArray = sArray[ix].split('='); if (itemArray[0].toLowerCase()==param) { if (itemArray[1]) return itemArray[1]; return ''; } }}function CosmeticLayer() { this.ms = null; this.name = ''; this.active = true; this.locked = false; this.visibility = 'visible'; this.OnMouseDown = null; this.OnMouseMove = null; this.OnMouseUp = null; this.OnBBoxChange = null; this.OnBBoxChanging = null; this.OnClick = null; this.OnDblClick = null; this.OnRequestBegin = null; this.OnRequestEnd = null; this.OnTransitionBegin = null; this.OnTransitionEnd = null; this.OnExternalDeactivate = null; this.OnExternalHide = null; this.elements = null; this.handle = null; this.setVisibility = cmlSetVisibility; this.getVisibility = cmlGetVisibility;}function cmlSetVisibility(val) { this.visibility = val; this.handle.style.visibility = val; }function cmlGetVisibility() { return this.handle.style.visibility; }function wmsAddCosmeticLayer(cmL) { if (this.cosmeticLayers.length==0) this.UseEventLayer(true); cmL.ms = this; this.cosmeticLayers[this.cosmeticLayers.length] = cmL; if (cmL.name!='') this.cosmeticLayers[cmL.name] = cmL; var elem = document.createElement('div'); elem.id = 'cmL'+this.cosmeticLayers.length; elem.style.position = 'absolute'; elem.style.left = '0px'; elem.style.top = '0px'; elem.style.zIndex = 200+this.cosmeticLayers.length; elem.style.visibility = cmL.visibility; if (!cmL.elements) alert('Property "elements" on CosmeticLayer is null. Elements must be set before CosmeticLayer is added.'); for (var ix=0;ix<cmL.elements.length;ix++) { elem.appendChild(cmL.elements[ix]); } cmL.handle = elem; this.mapdiv.appendChild(elem);}function wmsDeactivateCosmeticLayers(mapLayerActive,layerNames) { var nms = null; if (arguments.length==2) nms = layerNames.split(','); for (var ix=0;ix<this.cosmeticLayers.length;ix++) { if (nms!=null) { if ((this.cosmeticLayers[ix].name!='') && (this.cosmeticLayers[ix].locked)) return false; } else { if (this.cosmeticLayers[ix].locked) return false; } } for (var ix=0;ix<this.cosmeticLayers.length;ix++) { if (nms!=null) { if ((this.cosmeticLayers[ix].name!='') && (!this.cosmeticLayers[ix].locked)) { this.cosmeticLayers[ix].active = false; if (this.cosmeticLayers[ix].OnExternalDeactivate!=null) this.cosmeticLayers[ix].OnExternalDeactivate(); } } else { this.cosmeticLayers[ix].active = false; if (this.cosmeticLayers[ix].OnExternalDeactivate!=null) this.cosmeticLayers[ix].OnExternalDeactivate(); } } this.mapLayerActive = mapLayerActive; return true;}function wmsHideCosmeticLayers(layerNames) { var nms = null; if (arguments.length) nms = layerNames.split(','); for (var ix=0;ix<this.cosmeticLayers.length;ix++) { if (nms!=null) { if ((this.cosmeticLayers[ix].name!='') && (this.cosmeticLayers[ix].locked)) return false; } else { if (this.cosmeticLayers[ix].locked) return false; } } for (var ix=0;ix<this.cosmeticLayers.length;ix++) { if (nms!=null) { if ((this.cosmeticLayers[ix].name!='') && (!this.cosmeticLayers[ix].locked)) { this.cosmeticLayers[ix].setVisibility('hidden'); if (this.cosmeticLayers[ix].OnExternalHide!=null) this.cosmeticLayers[ix].OnExternalHide(); } } else { this.cosmeticLayers[ix].setVisibility('hidden'); if (this.cosmeticLayers[ix].OnExternalHide!=null) this.cosmeticLayers[ix].OnExternalHide(); } } return true;}function wmsResetCosmeticLayers(mapLayerActive) { var res = this.DeactivateCosmeticLayers(mapLayerActive); if (res) this.HideCosmeticLayers(); return res;}function wmsCosmeticLayersFromState(val) {  var res = new Array(); var a = new Array(1,2,4); var b = new Array(false,false,false); var ix = a.length-1; var j = 0; while (0<val) { if (a[ix]<=val) { b[ix] = true; val = val % a[ix]; } j++; ix--; } var act = b[0]; var vis = b[1]; var lck = b[2]; var visStr = b[1]?'visible':'hidden'; var bol1; var bol2; var bol3; for (var ix=0;ix<this.cosmeticLayers.length;ix++) { bol1 = true; bol2 = true; bol3 = true; if (act) bol1 = (this.cosmeticLayers[ix].active==act); if (vis) bol2 = (this.cosmeticLayers[ix].getVisibility()==visStr); if (lck) bol3 = (this.cosmeticLayers[ix].locked==lck); if (act || vis || lck) { if (bol1 && bol2 && bol3) res[res.length] = this.cosmeticLayers[ix]; }  } return res;}function wmsFireCmLEvent(eventName,p1,p2,p3,p4,p5,p6,p7,p8) {var cl;with (this) { for (var ix=0;ix<cosmeticLayers.length;ix++) { cl = cosmeticLayers[ix]; if (cl.active) { switch (eventName) { case 'onmousedown' : if (cl.OnMouseDown!=null) cl.OnMouseDown(); break; case 'onmousemove' : if (cl.OnMouseMove!=null) cl.OnMouseMove(); break; case 'onmouseup' : if (cl.OnMouseUp!=null) cl.OnMouseUp(); break; case 'onclick' : if (cl.OnClick!=null) cl.OnClick(); break; case 'ondblclick' : if (cl.OnDblClick!=null) cl.OnDblClick(); break; case 'onrequestbegin' : if (cl.OnRequestBegin!=null) cl.OnRequestBegin(); break; case 'onrequestend' : if (cl.OnRequestEnd!=null) cl.OnRequestEnd(); break; case 'ontransitionbegin': if (cl.OnTransitionBeing!=null) cl.OnTransitionBegin(); break; case 'ontransitionend' : if (cl.OnTransitionEnd!=null) cl.OnTransitionEnd(); break; case 'onbboxchange' : if (cl.OnBBoxChange!=null) cl.OnBBoxChange(p1,p2,p3,p4,p5,p6,p7,p8); break; case 'onbboxchanging' : if (cl.OnBBoxChanging!=null) cl.OnBBoxChanging(p1,p2,p3,p4); break; } } }}}function wmsGlobals() {this.mouseCaptureMs = null;this.mouseCaptureMsMouseDown = null;this.isNetscape = isNav();this.isNetscape6 = isNN6Min();this.vmlid = 0;this.OnDebugWriteln = null; this.debugdiv = null; }var msArray = new Array();var msGlobals = new wmsGlobals();var msMO = '';function DebugWriteln(msg) { with (msGlobals) { if (debugdiv!=null) debugdiv.innerHTML = debugdiv.innerHTML+msg+"<br/>"; if (OnDebugWriteln!=null) OnDebugWriteln(msg); }}function DebugClear() { with (msGlobals) { if (debugdiv!=null) debugdiv.innerHTML = "*DEBUG*<br>"; }}var lastTS = 0;function GetTS() { lastTS = new Date; return lastTS;}function GetTSDiff() { _lastTS = new Date; __lastTS = _lastTS - lastTS;  lastTS = _lastTS; return __lastTS;}function isNav() { return (navigator.appName == "Netscape")}function isNN6Min() {return (isNav() && parseInt(navigator.appVersion) >= 5)}function wmsScrollOffset() { var a = jsGlobals.browserDetector.ScrollOffset(); this.xofs = a.x_GS(); this.yofs = a.y_GS();}function wmsMapChangeComplete() { return ((this.updateCount==0) && this.mapTransitionComplete);}function wmsBehaviour(scrollModeOnPan,scrollModeOnZoom,scrollModeOnNoBBoxOverlap,fadeInAfterPan,fadeInAfterZoom,fadeInAfterNoBBoxChange,fadeInAfterNoBBoxOverlap,scrollStepTimeSpan,scrollSteps,fadeStepTimeSpan,fadeSteps) { this.scrollModeOnPan = scrollModeOnPan;  this.scrollModeOnZoom = scrollModeOnZoom;  this.scrollModeOnNoBBoxOverlap = scrollModeOnNoBBoxOverlap;  this.fadeInAfterPan = fadeInAfterPan; this.fadeInAfterZoom = fadeInAfterZoom; this.fadeInAfterNoBBoxChange = fadeInAfterNoBBoxChange; this.fadeInAfterNoBBoxOverlap = fadeInAfterNoBBoxOverlap; this.scrollStepTimeSpan = scrollStepTimeSpan; this.scrollSteps = scrollSteps; this.fadeStepTimeSpan = fadeStepTimeSpan; this.fadeSteps = fadeSteps;}function wmsServiceType(index,mapdiv,url,layers,styles,format,params) {this.url=url;this.layers=layers.split(',');this.styles=styles.split(',');this.params=params;this.format=format;this.version='1.1.0';this.myindex=index;if (!jsGlobals.browserDetector.imgOnLoadSupport_GS()){ this.map1 = null; this.map2 = null;} else{ var id = mapdiv.id+'_img'+index; this.map1 = wmsCreateImg(id+'1',index+1); this.map2 = wmsCreateImg(id+'2',index+101); mapdiv.appendChild(this.map1); mapdiv.appendChild(this.map2);} this.lastURL = '';this.pixelSize = 0.0;this.maxZoom = 0;this.origoX = 0;this.origoY = 0;this.enabled = new Array();this.visible = true;this.aborted = false;for (var ix=0;ix<this.layers.length;ix++) { this.enabled[ix] = true;} }function wmsPoint(x,y) {this.x = x;this.y = y;}function wmsRoundn(value,fd,n) { var alpha = n*Math.pow(10,-fd); with (this) { var r = Math.round(value/alpha); if (fd<=0) { r=r*alpha; } else { var rs = n*r + ''; rs = rs.substr(0,rs.length-fd)+'.'+rs.substr(rs.length-fd,fd); r = parseFloat(rs);  } } return r;}function wmsRound(value,fd) { return this.Roundn(value,fd,1);}function wmsImageMoveFctPotens(movedPart) { var z = 2; var y; if (movedPart<=0.5) { y = (Math.pow(0.5,-(z-1))*Math.pow(movedPart,z)); } else { y = ((-Math.pow(0.5,-(z-1))*Math.pow((1-movedPart),z))+1); } return y;}function wmsImageMoveFctLinear(movedPart) { return movedPart;}function wmsImageMoveFctSin(movedPart) { return (0.5*((Math.sin(-(Math.PI/2)+(Math.PI*movedPart)))+1));}function wmsImagePosCalc(pos1,pos2,step,stepTotal) { this.wmsImageMoveFct = this.ImageMoveFct==null?wmsImageMoveFctPotens:this.ImageMoveFct; return ((pos2-pos1)*this.wmsImageMoveFct(step/stepTotal));}function wmsImageMove(mapdivid) { ms = wmsMapdiv2ms(document.getElementById(mapdivid)); with(ms) { var scrollSteps = ((nextBehaviour.scrollSteps==null) || (!nextBehaviourEnabled))?defaultBehaviour.scrollSteps:nextBehaviour.scrollSteps; if (tstep==0) { GetTS(); time1 = 0;  } else { var _ts = GetTSDiff(); time1 += _ts; if (((time1>maxTimeTotal*1000) || (_ts>maxTimeStep*1000)) && (!confirmCanceled)) { if (window.confirm(confirmMessage)) { defaultBehaviour.scrollModeOnZoom = 0; defaultBehaviour.scrollModeOnPan = 0; defaultBehaviour.scrollModeOnNoBBoxOverlap = 0; defaultBehaviour.fadeInAfterZoom = false; defaultBehaviour.fadeInAfterPan = false; defaultBehaviour.fadeInAfterNoBBoxChange = false; defaultBehaviour.fadeInAfterNoBBoxOverlap = false; tstep = scrollSteps - 1; nextBehaviourEnabled = false; } else { scrollConfirmCanceled = true; time1 = 0; } } else { scrollConfirmCanceled = false; } } scrollInProgress = true; tstep++; var pBBox = SetBBoxResult.previousBBox; var dxmin = imagePosCalc(pBBox.xmin,xmin,tstep,scrollSteps); var dymin = imagePosCalc(pBBox.ymin,ymin,tstep,scrollSteps); var dxmax = imagePosCalc(pBBox.xmax,xmax,tstep,scrollSteps); var dymax = imagePosCalc(pBBox.ymax,ymax,tstep,scrollSteps); var ptmin = wmsWorldToScreen2(pBBox.xmin, pBBox.ymin, pBBox.xmin + (dxmin), pBBox.ymin + (dymin), pBBox.xmax + (dxmax), pBBox.ymax + (dymax), width, height); var ptmax = wmsWorldToScreen2(pBBox.xmax, pBBox.ymax, pBBox.xmin + (dxmin), pBBox.ymin + (dymin), pBBox.xmax + (dxmax), pBBox.ymax + (dymax), width, height); var ptmin2 = wmsWorldToScreen2(pBBox.xmin, pBBox.ymin, hiddenImgBBox.xmin + (dxmin), hiddenImgBBox.ymin + (dymin), hiddenImgBBox.xmax + (dxmax), hiddenImgBBox.ymax + (dymax), width, height); var ptmax2 = wmsWorldToScreen2(pBBox.xmax, pBBox.ymax, hiddenImgBBox.xmin + (dxmin), hiddenImgBBox.ymin + (dymin), hiddenImgBBox.xmax + (dxmax), hiddenImgBBox.ymax + (dymax), width, height); var whMax = isNav()?500000:500000; for (var lx=0;lx<services.length;lx++) { with (services[lx]) { if (activeMap==1) { if (map1) { if (((ptmax.x - ptmin.x)<whMax) && ((ptmin.y - ptmax.y)<whMax)) { map1.style.position = 'absolute'; if (map2) map2.style.position = 'absolute'; map1.style.left = ptmin.x + 'px'; map1.style.top = ptmax.y + 'px'; map1.style.width = (ptmax.x - ptmin.x) + 'px'; map1.style.height = (ptmin.y - ptmax.y) + 'px'; } else {  } if (updateHiddenImgOnMove) { map2.style.left = ptmin2.x + 'px'; map2.style.top = ptmax2.y + 'px'; } } } else { if (map2) {  if (((ptmax.x - ptmin.x)<whMax) && ((ptmin.y - ptmax.y)<whMax)) { map2.style.position = 'absolute'; if (map1) map1.style.position = 'absolute'; map2.style.left = ptmin.x + 'px'; map2.style.top = ptmax.y + 'px'; map2.style.width = (ptmax.x - ptmin.x) + 'px'; map2.style.height = (ptmin.y - ptmax.y) + 'px'; } else {  } if (updateHiddenImgOnMove) { map1.style.left = ptmin2.x + 'px'; map1.style.top = ptmax2.y + 'px'; } } }  }  }  if (OnBBoxChanging!=null) OnBBoxChanging(pBBox.xmin + (dxmin),pBBox.ymin + (dymin),pBBox.xmax + (dxmax),pBBox.ymax + (dymax)); FireCmLEvent('onbboxchanging',pBBox.xmin + (dxmin),pBBox.ymin + (dymin),pBBox.xmax + (dxmax),pBBox.ymax + (dymax));  if (tstep==scrollSteps) { scrollInProgress = false;  clearInterval(intervalHandle); intervalHandle = null; tstep = 0; wmsInternalLoadedEvent(ms,false); } }}function wmsZoom(scalefactor,xCenter,yCenter) {DebugWriteln("Zoom: scalefactor="+scalefactor+" xCenter="+xCenter+" yCenter="+yCenter); with (this) { if (!mapChangeComplete()) { DebugWriteln("&gt;&gt; Busy");  return false; } if (scalefactor<=0.0) return false; var cx; var cy; if ((xCenter) && (yCenter)) { cx = xCenter; cy = yCenter; } else { cx = (xmax + xmin) / 2; cy = (ymax + ymin) / 2; }  var dx = (xmax - xmin) / (scalefactor * 2); var dy = (ymax - ymin) / (scalefactor * 2); SetBoundingBox(cx - dx,cy - dy,cx + dx,cy + dy);  Show();}return true;}function wmsSetView(x1,y1,x2,y2){DebugWriteln("SetView: x1="+x1+" y1="+y1+" x2="+x2+" y2="+y2); with (this) { if (!mapChangeComplete()) { DebugWriteln("&gt;&gt; Busy");  return false; } SetBoundingBox(x1,y1,x2,y2); Show();}}function wmsSetExtent(x1,y1,x2,y2) {DebugWriteln("SetExtent: x1="+x1+" y1="+y1+" x2="+x2+" y2="+y2); with (this) {  SetView(x1,y1,x2,y2); }}function wmsSetFullExtent(x1,y1,x2,y2) { DebugWriteln("SetFullExtent: x1="+x1+" y1="+y1+" x2="+x2+" y2="+y2);  this.exmin = x1; this.exmax = x2; this.eymin = y1; this.eymax = y2; this.useExtent =((x1!=x2) || (y1!=y2));}function wmsSetCenter(cx,cy) {DebugWriteln("SetCenter: cx="+cx+" cy="+cy); with (this) { if (!mapChangeComplete()) { DebugWriteln("&gt;&gt; Busy");  return false;  } var dx = (xmax - xmin) / 2; var dy = (ymax - ymin) / 2; SetBoundingBox(cx - dx,cy - dy,cx + dx,cy + dy); Show();}}function wmsCenter(xscreen,yscreen) {DebugWriteln("Center: x="+xscreen+" y="+yscreen); with (this) { if (!mapChangeComplete) { DebugWriteln("&gt;&gt; Busy");  return false; } var cx = xmin + (xscreen/width) * (xmax-xmin);  var cy = ymax - (yscreen/height) * (ymax-ymin); SetCenter(cx,cy);  return true;}}function wmsPan(xpct,ypct) {DebugWriteln("Pan: xpct="+xpct+" ypct="+ypct); with (this) { if (!mapChangeComplete()) { DebugWriteln("&gt;&gt; Busy");  return false; } var dx = xpct * (xmax - xmin)/100; var dy = ypct * (ymax - ymin)/100; SetBoundingBox(xmin + dx,ymin + dy,xmax + dx,ymax + dy); Show();}return true;}function wmsMapdiv2ms(md) {var ix = 0;while (ix<msArray.length) { if (msArray[ix].mapdiv.id==md.id) { return msArray[ix]; } else ix += 1;}return null;}function wmsInternalLoadedEvent(ms,updateUpdateCount) {with (ms) { if (updateUpdateCount==null) updateUpdateCount = true; if (updateUpdateCount) { updateCount -= 1; } else { if (updateCount>0) return false; }  DebugWriteln("wmsInternalLoadedEvent updateCount="+updateCount);  if (updateCount>0) { VmlShow(false);  SnapShow(false); }  if (updateCount==0) {  DebugWriteln("InternalLoaded (Done)");  document.body.style.cursor = 'auto';  mapdiv.style.cursor = 'auto'; SetBusyFlag(false); try { if (OnRequestEnd!=null) OnRequestEnd(ms); FireCmLEvent('onrequestend'); } catch(e) { DebugWriteln("&gt;&gt; Error in InternalLoaded (OnRequestEnd): "+e);  } var useFade = false; if (!SetBBoxResult.bboxOverlap) { useFade = ((nextBehaviour.fadeInAfterNoBBoxOverlap==null) || (!nextBehaviourEnabled))?defaultBehaviour.fadeInAfterNoBBoxOverlap:nextBehaviour.fadeInAfterNoBBoxOverlap; } else if (SetBBoxResult.zoomed) { useFade = ((nextBehaviour.fadeInAfterZoom==null) || (!nextBehaviourEnabled))?defaultBehaviour.fadeInAfterZoom:nextBehaviour.fadeInAfterZoom; } else if (SetBBoxResult.paned) { useFade = ((nextBehaviour.fadeInAfterPan==null) || (!nextBehaviourEnabled))?defaultBehaviour.fadeInAfterPan:nextBehaviour.fadeInAfterPan; } else { useFade = ((nextBehaviour.fadeInAfterNoBBoxChange==null) || (!nextBehaviourEnabled))?defaultBehaviour.fadeInAfterNoBBoxChange:nextBehaviour.fadeInAfterNoBBoxChange; } if (useFade && (!firstLoad)) { wmsFadeMaps(mapdiv.id); } else { switch(activeMap) { case 1: for (var ix=0;ix<services.length;ix++) { with (services[ix]) { if ((visible) && (!aborted)) { if (map2) { if (jsGlobals.browserDetector.imgOnLoadSupport_GS()) { map2.style.display = ''; } else { map2.style.left = '0px'; map2.style.visibility = 'visible'; } } } } } break; case 2: for (var ix=0;ix<services.length;ix++) { with (services[ix]) { if ((visible) && (!aborted)) {  if (map1) { if (jsGlobals.browserDetector.imgOnLoadSupport_GS()) { map1.style.display = ''; } else { map1.style.left = '0px'; map1.style.visibility = 'visible'; } } } } } break; default: break; } wmsShowFinalize(ms); } }}}function wmsShowFinalize(ms) {with (ms) { if (!scrollInProgress) { var srcArray = new Array; var visibleArray = new Array; for (var lx=0;lx<services.length;lx++) { with (services[lx]) { if (activeMap==1) { if (firstLoad && !jsGlobals.browserDetector.imgOnLoadSupport_GS()) { srcArray[srcArray.length] = map2.src;  visibleArray[visibleArray.length] = visible; } if (map1) { map1.style.display = 'none'; map1.style.width = width + 'px'; map1.style.height = height + 'px'; map1.style.top = '0px'; map1.style.left = '0px'; if (jsGlobals.browserDetector.browser_GS()=='Safari') map1.src = ''; if (map2) { map2.style.width = width + 'px'; map2.style.height = height + 'px'; map2.style.zIndex = lx+101; setOpacity(map2,101); srcArray[srcArray.length] = map2.src;  visibleArray[visibleArray.length] = visible; } setOpacity(map1,101); map1.style.zIndex = lx+1; } } else { if (map2) {  map2.style.display = 'none'; map2.style.width = width + 'px'; map2.style.height = height + 'px'; map2.style.top = '0px'; map2.style.left = '0px'; if (jsGlobals.browserDetector.browser_GS()=='Safari') map2.src = ''; if (map1) { map1.style.width = width + 'px'; map1.style.height = height + 'px'; map1.style.zIndex = lx+101; setOpacity(map1,101); srcArray[srcArray.length] = map1.src;  visibleArray[visibleArray.length] = visible; } setOpacity(map2,101); map2.style.zIndex = lx+1; } }  }  }  History.AddItem(srcArray,visibleArray); activeMap=(activeMap==1)?2:1;  VmlCalc(); SnapCalc(); VmlShow(true);  SnapShow(true); updateHiddenImgOnMove = false; bboxValidated = false; firstLoad = false; ms.nextBehaviour = new wmsBehaviour(null,null,null,null,null,null,null,null,null,null,null); mapTransitionComplete = true; if (bboxCookie.enabled) { bboxCookie.value = ''+xmin+','+ymin+','+xmax+','+ymax; bboxCookie.setCookie(); } if (OnTransitionEnd!=null) OnTransitionEnd(ms); ms.FireCmLEvent('ontransitionend'); }}}function wmsSetOpacity(obj,val) { val = (val==100)?99.999:val; with (obj) { if (((val==99.999) && (!jsGlobals.browserDetector.hasOpacityError_GS())) || (val==101)) { style.filter = ''; style.MozOpacity = ''; style.opacity = ''; } else { style.filter = 'alpha(opacity='+val+')'; style.MozOpacity = val/100; style.opacity = val/100; } }}function wmsFadeMaps(mapdivid) { mp = wmsMapdiv2ms(document.getElementById(mapdivid)); with(mp) { if (!scrollInProgress) { var fdeSteps = ((nextBehaviour.fadeSteps==null) || (!nextBehaviourEnabled))?defaultBehaviour.fadeSteps:nextBehaviour.fadeSteps; if (fdeSteps>tstepFade) { if (tstepFade==0) { GetTS(); time1 = 0;  } else { var _ts = GetTSDiff(); time1 += _ts; if (((time1>maxTimeTotal*1000) || (_ts>maxTimeStep*1000)) && (!confirmCanceled)) { if (window.confirm(confirmMessage)) { defaultBehaviour.scrollModeOnZoom = 0; defaultBehaviour.scrollModeOnPan = 0; defaultBehaviour.scrollModeOnNoBBoxOverlap = 0; defaultBehaviour.fadeInAfterZoom = false; defaultBehaviour.fadeInAfterPan = false; defaultBehaviour.fadeInAfterNoBBoxChange = false; defaultBehaviour.fadeInAfterNoBBoxOverlap = false; tstepFade = fdeSteps; nextBehaviourEnabled = false; } else { scrollConfirmCanceled = true; time1 = 0; } } else { scrollConfirmCanceled = false; } } tstepFade++; var opacity = 100*(tstepFade/fdeSteps); switch(activeMap) { case 1: for (var ix=0;ix<services.length;ix++) { with (services[ix]) { if ((visible) && (!aborted)) { if (map2) { map2.style.zIndex = ix+101;  map1.style.zIndex = ix+1; if (!jsGlobals.browserDetector.imgOnLoadSupport_GS()) { map2.style.visibility = 'visible'; } map2.style.display = ''; setOpacity(map2,opacity); } } } } break; case 2: for (var ix=0;ix<services.length;ix++) { with (services[ix]) { if ((visible) && (!aborted)) {  if (map1) { map1.style.zIndex = ix+101;  map2.style.zIndex = ix+1; if (!jsGlobals.browserDetector.imgOnLoadSupport_GS()) { map1.style.visibility = 'visible'; } map1.style.display = ''; setOpacity(map1,opacity); } } } } break; default: break; } var fadeStepTS = ((nextBehaviour.fadeStepTimeSpan==null) || (!nextBehaviourEnabled))?defaultBehaviour.fadeStepTimeSpan:nextBehaviour.fadeStepTimeSpan; window.setTimeout("wmsFadeMaps('"+mapdiv.id+"')", fadeStepTS); } else { tstepFade = 0; wmsShowFinalize(mp); } } }}function wmsMapOnError(evt) {DebugWriteln("MapOnError (Event)"); var elem = (evt)?evt.currentTarget:event.srcElement;var str = elem.name;var ms = wmsMapdiv2ms(elem.parentNode);if (ms==null) {  DebugWriteln("&gt;&gt; Error 2: in wmsMapOnError();");  return false;}with (ms) { var id = str.substring(str.length-1); var ix = str.substring(str.indexOf("_img")+4,str.length-1); if (OnMapServiceError!=null) OnMapServiceError(ms,ix.valueOf()); else {  services[ix].aborted = true; var msg = 'Error on loading MapService: layer '+ix+' will be disabled'; if (mapAlerts) alert(msg); } wmsInternalLoadedEvent(ms);}return false; }function wmsMapOnAbort(evt) {DebugWriteln("MapOnAbort (Event)"); var elem = (evt)?evt.currentTarget:event.srcElement;var str = elem.name;var ms = wmsMapdiv2ms(elem.parentNode);if (ms==null) {  DebugWriteln("&gt;&gt; Error 4: in wmsMapOnAbort();");  return false;}with (ms) { var id = str.substring(str.length-1); var ix = str.substring(str.indexOf("_img")+4,str.length-1); if (OnMapServiceAbort!=null) OnMapServiceAbort(ms,ix.valueOf()); else { ms.services[ix].aborted = true; var msg = 'Abort on loading MapService: layer '+ix+' will be disabled'; if (mapAlerts) alert(msg); } wmsInternalLoadedEvent(ms);}return false; }function wmsMapOnLoad(evt) {var elem = (evt)?evt.currentTarget:event.srcElement;var ms = wmsMapdiv2ms(elem.parentNode);if (ms==null) { DebugWriteln("&gt;&gt; Error 1: in wmsMapOnLoad();");  return false;} else{ DebugWriteln("MapOnload (Event) updateCount="+ms.updateCount); }wmsInternalLoadedEvent(ms);return false;}function wmsShow() { DebugWriteln("Show");  with (this) { var web; var lcount; if (!mapChangeComplete()) { DebugWriteln("&gt;&gt; Busy");  return false; }  mapTransitionComplete = false; if (firstLoad && bboxCookie.enabled) { var ckbbox = bboxCookie.getCookie(); if (ckbbox) { var a = ckbbox.split(','); xmin = parseFloat(a[0]); ymin = parseFloat(a[1]); xmax = parseFloat(a[2]); ymax = parseFloat(a[3]); bboxValidated = false; } } if (!bboxValidated) SetBoundingBox(xmin,ymin,xmax,ymax); if (OnRequestBegin!=null) OnRequestBegin(this); FireCmLEvent('onrequestbegin');if (!abortRequest) { var ucnt = 0; for (var lx=0;lx<services.length;lx++) { if (services[lx].visible) { ucnt+=1; }  } updateCount = ucnt; for (var lx=0;lx<services.length;lx++) {  with (services[lx]) { if (visible) {  aborted = false; var lyr = ''; var sty = ''; lcount = 0; for (var ix=0;ix<layers.length;ix++) { if (enabled[ix]==true) { if (lcount>0) { lyr += ','; sty += ','; } lyr = lyr + layers[ix]; sty = sty + styles[ix]; lcount += 1; } } DebugWriteln("wmsShow lcount="+lcount);  if (version>='1.1.0') web = url+'VERSION='+version+'&REQUEST=GetMap&LAYERS='+lyr+'&STYLES='+sty+'&SRS='+srs;  else web = url+'WMTVER=1.0.0&REQUEST=map&LAYERS='+lyr+'&STYLES='+sty+'&SRS='+srs; web += '&BBOX='+xmin+','+ymin+','+xmax+','+ymax; web += '&WIDTH='+width+'&HEIGHT='+height+'&FORMAT='+format; if (params.length>0) web += '&' + params; lastURL = web; var scrollMode = 0; if (!SetBBoxResult.bboxOverlap) { scrollMode = ((nextBehaviour.scrollModeOnNoBBoxOverlap==null) || (!nextBehaviourEnabled))?defaultBehaviour.scrollModeOnNoBBoxOverlap:nextBehaviour.scrollModeOnNoBBoxOverlap; } else if (SetBBoxResult.zoomed) { scrollMode = ((nextBehaviour.scrollModeOnZoom==null) || (!nextBehaviourEnabled))?defaultBehaviour.scrollModeOnZoom:nextBehaviour.scrollModeOnZoom; } else if (SetBBoxResult.paned) { updateHiddenImgOnMove = true; scrollMode = ((nextBehaviour.scrollModeOnPan==null) || (!nextBehaviourEnabled))?defaultBehaviour.scrollModeOnPan:nextBehaviour.scrollModeOnPan; } var scrollStepTS = ((nextBehaviour.scrollStepTimeSpan==null) || (!nextBehaviourEnabled))?defaultBehaviour.scrollStepTimeSpan:nextBehaviour.scrollStepTimeSpan; if (OnTransitionBegin!=null) OnTransitionBegin(this); FireCmLEvent('ontransitionbegin'); if (!firstLoad) { if (scrollMode==1) { var scrollSteps = ((nextBehaviour.scrollSteps==null) || (!nextBehaviourEnabled))?defaultBehaviour.scrollSteps:nextBehaviour.scrollSteps; tstep = scrollSteps - 1;  wmsImageMove(this.mapdiv.id); } else if (scrollMode==2) { if (intervalHandle==null) { scrollInProgress=true; wmsImageMove(mapdiv.id); intervalHandle = setInterval('wmsImageMove("'+this.mapdiv.id+'")',scrollStepTS-1); } } } if (!jsGlobals.browserDetector.imgOnLoadSupport_GS()) { var px = (activeMap==1)?'2':'1'; var id = mapdiv.id+'_img'+myindex+px; var map3 = wmsCreateImgBuffer(id); if (activeMap==1) { if (map2) mapdiv.removeChild(map2); map2 = map3; } else { if (map1) mapdiv.removeChild(map1); map1 = map3; }  DebugWriteln("Netscape: src = "+web);  mapdiv.appendChild(map3); map3.src = web;  } else { DebugWriteln("IE: activeMap="+activeMap+", src = "+web);  switch(activeMap) { case 1: map2.style.left = '0px'; map2.style.top = '0px'; map2.style.display = 'none'; map2.src = web; break; case 2: map1.style.left = '0px'; map1.style.top = '0px'; map1.style.display = 'none'; map1.src = web; break; }  }  }  }  }  if (updateCount>0) {  tCursorBody = document.body.style.cursor;  tCursorMapdiv = mapdiv.style.cursor;  mapdiv.style.cursor = 'wait'; document.body.style.cursor = 'wait'; SetBusyFlag(true); } return true;} else { xmin = SetBBoxResult.previousBBox.xmin; ymin = SetBBoxResult.previousBBox.ymin; xmax = SetBBoxResult.previousBBox.xmax; ymax = SetBBoxResult.previousBBox.ymax; resolution = (xmax - xmin) / width;} } }function wmsHideBox(ms) {try{ ms.imageTop.style.width = 0; ms.imageTop.style.height = 0; ms.imageBot.style.width = 0; ms.imageBot.style.height = 0; ms.imageRgt.style.width = 0; ms.imageRgt.style.height = 0; ms.imageLft.style.width = 0; ms.imageLft.style.height = 0; ms.imageTop.style.visibility = 'hidden'; ms.imageBot.style.visibility = 'hidden'; ms.imageRgt.style.visibility = 'hidden'; ms.imageLft.style.visibility = 'hidden'; ms.boxVisible = false; } catch(e) {}}function showBox(ms,offset) {if (!offset) offset=0;var x1 = Math.min(ms.MouseDownX,ms.MousePosX)+offset;var x2 = Math.max(ms.MouseDownX,ms.MousePosX)+offset;var y1 = Math.min(ms.MouseDownY,ms.MousePosY)+offset;var y2 = Math.max(ms.MouseDownY,ms.MousePosY)+offset;ms.imageTop.style.top = y1+'px'; ms.imageTop.style.left = x1+'px'; ms.imageTop.style.width = (x2-x1)+'px';ms.imageTop.style.height = ms.borderSize+'px';ms.imageBot.style.top = y2+'px'; ms.imageBot.style.left = x1+'px';ms.imageBot.style.width = ms.imageTop.style.width; ms.imageBot.style.height = ms.borderSize+'px';ms.imageRgt.style.top = y1+'px'; ms.imageRgt.style.left = x2+'px';ms.imageRgt.style.width = ms.borderSize+'px';ms.imageRgt.style.height = (y2-y1+ms.borderSize)+'px';ms.imageLft.style.top = y1+'px'; ms.imageLft.style.left = x1+'px'; ms.imageLft.style.width = ms.borderSize+'px';ms.imageLft.style.height = ms.imageRgt.style.height; ms.imageTop.style.visibility='visible';ms.imageBot.style.visibility='visible';ms.imageRgt.style.visibility='visible';ms.imageLft.style.visibility='visible';ms.boxVisible = true; }function wmsMousePos2World(ms) {var wx = (ms.xmin + ms.MousePosX * (ms.xmax - ms.xmin)/ms.width);var wy = (ms.ymin + (ms.height - ms.MousePosY) * (ms.ymax - ms.ymin)/ms.height);if (ms.fractionDigits<=0){ ms.worldX = Math.round(wx); ms.worldY = Math.round(wy);} else{ ms.worldX = parseFloat(ms.Round(wx,ms.fractionDigits)); ms.worldY = parseFloat(ms.Round(wy,ms.fractionDigits));}}function wmsClick(evt) {var elem = (evt)?evt.currentTarget:event.srcElement;var ms = wmsMapdiv2ms(elem.parentNode);if (ms==null) ms = wmsMapdiv2ms(elem);if (ms==null) {  DebugWriteln("&gt;&gt; Error 3: Map Service not found in Click Event (elem="+elem.id+")");  return true;}if (!ms.mapChangeComplete) return true;DebugWriteln("Click (Event) elem="+elem.id); if ((ms.OnClick!=null) && (ms.mapLayerActive)) ms.OnClick(ms);ms.FireCmLEvent('onclick');return false; }function wmsDblClick(evt) {DebugWriteln("DblClick (Event)"); var elem = (evt)?evt.currentTarget:event.srcElement;var ms = wmsMapdiv2ms(elem.parentNode);if (ms==null) return true;if ((ms.OnDblClick!=null) && (ms.mapLayerActive)) ms.OnDblClick(ms);ms.FireCmLEvent('ondblclick');return false;}function wmsCalcMousePosEx(ms,evt,misDown) { var xw,yw; var found = false; var elem = jsGlobals.browserDetector.ElementFromEvent(evt); if (!elem) return; if (ms.hiliteSnap) { if (elem!=ms.hiliteSnap) { ms.hiliteSnap.strokeweight=ms.hiliteStroke;  }   }   var id = elem.id; msMO = id; var mparray = jsGlobals.browserDetector.MousePos(evt); var eparray = jsGlobals.browserDetector.ElementPos(ms.mapdiv); ms.MousePosX = Math.min(Math.max(mparray.x_GS() - eparray.x_GS(),0),ms.width-1); ms.MousePosY = Math.min(Math.max(mparray.y_GS() - eparray.y_GS(),0),ms.height-1); wmsMousePos2World(ms); if (id.substring(0,4)=='snap') { if ((elem!=ms.hiliteSnap) && (ms.operationMode==0) && (ms.PaintState>0)) { ms.hiliteSnap = elem; ms.hiliteStroke = elem.strokeweight; elem.strokeweight = '4px'; }   var oix = parseInt(id.substring(4,id.size)); var obj = ms.snapObjects[oix]; with (obj) { switch(obj.cname) { case 'oval': with (ms.snapPoints[ref]) { xw = x; yw = y; }   found = true; break; case 'line': var p1 = ms.snapPoints[ref]; var p2 = ms.snapPoints[ref+1]; var vaX = ms.worldX-p1.x; var vaY = ms.worldY-p1.y; var vbX = p2.x-p1.x; var vbY = p2.y-p1.y; var apb = (vaX*vbX)+(vaY*vbY); var lb2 = Math.pow(p2.x-p1.x,2)+Math.pow(p2.y-p1.y,2); xw = (apb/lb2)*(p2.x-p1.x)+p1.x; yw = (apb/lb2)*(p2.y-p1.y)+p1.y; found = true; break;  }  }   } else { if (ms.hiliteSnap) ms.hiliteSnap.strokeweight=ms.hiliteStroke; ms.hiliteSnap = null; }  if (found && (ms.operationMode==0) && (ms.PaintState>0)) { if (ms.fractionDigits==0) { ms.worldX = Math.round(xw); ms.worldY = Math.round(yw); } else {  ms.worldX = parseFloat(ms.Round(xw,ms.fractionDigits)); ms.worldY = parseFloat(ms.Round(yw,ms.fractionDigits)); }  var ps = ms.WorldToScreen(ms.worldX,ms.worldY); ms.MousePosX = ps.x; ms.MousePosY = ps.y; } } function docMouseEvent(evt,action) { evt = (evt)?evt:(window.event)?window.event:""; var elem = jsGlobals.browserDetector.ElementFromEvent(evt); if ((!(elem.id.substring(0,msGlobals.mouseCaptureMsMouseDown.id.length)==msGlobals.mouseCaptureMsMouseDown.id))) { wmsMouseEvent(evt,action,msGlobals.mouseCaptureMsMouseDown); } return false;}function docOnMouseMove(evt) { return docMouseEvent(evt,2);}function docOnMouseUp(evt) { return docMouseEvent(evt,3);}function wmsMouseEvent(evt,action,ms) {try { evt = (evt)?evt:(window.event)?window.event:""; var elem = jsGlobals.browserDetector.ElementFromEvent(evt); if (ms) { } else { ms = wmsMapdiv2ms(elem.parentNode); } if (ms==null) return true; if ((action==3) && (msGlobals.mouseCaptureMsMouseDown)) ms=msGlobals.mouseCaptureMsMouseDown; if (!ms.mapChangeComplete()) return true; msGlobals.mouseCaptureMs = (action!=3)?ms:null; var buttonValue = jsGlobals.browserDetector.leftButtonValue_GS(); ms.ScrollOffset(); var csr = ms.mapdiv.style.cursor; if (csr!='wait') { if ((ms.operationMode==0) && (ms.PaintState>0)) {  if (csr!='crosshair') ms.mapdiv.style.cursor='crosshair'; } else {  if (csr!=ms.Cursors[ms.operationMode]) ms.mapdiv.style.cursor = ms.Cursors[ms.operationMode]; }  }   wmsCalcMousePosEx(ms,evt,ms.isMouseDown); if (action==1) { ms.MouseDownX = ms.MousePosX; ms.MouseDownY = ms.MousePosY; } switch(action) { case 1:  if (evt.button == buttonValue) { msGlobals.mouseCaptureMsMouseDown = ms; document.onmousemove = docOnMouseMove; document.onmouseup = docOnMouseUp; ms.isMouseDown = true; ms.worldXM = ms.worldX; ms.worldYM = ms.worldY; ms.FireCmLEvent('onmousedown'); } break; case 2:  ms.FireCmLEvent('onmousemove'); break; case 3:  if (evt.button == buttonValue) { msGlobals.mouseCaptureMsMouseDown = null; document.onmousemove = null; document.onmouseup = null; ms.isMouseDown = false; ms.FireCmLEvent('onmouseup'); } break; } if (ms.mapLayerActive) { switch(ms.operationMode)  { case 1:  case 2:  switch(action) { case 1:  if (evt.button == buttonValue) { document.onmousemove = docOnMouseMove; document.onmouseup = docOnMouseUp; ms.isMouseDown = true; ms.worldXM = ms.worldX; ms.worldYM = ms.worldY; if (ms.OnMouseDown!=null) ms.OnMouseDown(ms);  showBox(ms,1); }  DebugWriteln("x="+ms.worldX+" y="+ms.worldY);  break; case 2:  if (ms.boxVisible) showBox(ms,0); if (ms.OnMouseMove!=null) ms.OnMouseMove(ms); break; case 3: DebugWriteln("MouseUp (Zoom)");  if (ms.OnMouseMove!=null) ms.OnMouseMove(ms); if (evt.button == buttonValue) { document.onmousemove = null; document.onmouseup = null; ms.isMouseDown = false; wmsHideBox(ms);  if (ms.OnMouseUp!=null) ms.OnMouseUp(ms);  var sf;  var s1; var s2; var cx = (ms.worldX + ms.worldXM)/2; var cy = (ms.worldY + ms.worldYM)/2; if (ms.operationMode==1)  { s1 = Math.abs((ms.worldX - ms.worldXM)/(ms.xmax-ms.xmin)); s2 = Math.abs((ms.worldY - ms.worldYM)/(ms.ymax-ms.ymin)); } else { s1 = Math.abs((ms.xmax-ms.xmin)/(ms.worldX - ms.worldXM)); s2 = Math.abs((ms.ymax-ms.ymin)/(ms.worldY - ms.worldYM)); }   if ((s1>0.0) && (s2>0.0))  { var isZoomIn = (ms.operationMode==1); if (s1<s2)  sf = (isZoomIn)?s2:s1;  else sf = (isZoomIn)?s1:s2;  var dx = (ms.xmax-ms.xmin)*sf; var dy = dx / ms.xyscale; if ((Math.abs(ms.MousePosX - ms.MouseDownX)>=ms.minRectSize) && (Math.abs(ms.MousePosY - ms.MouseDownY)>=ms.minRectSize))  {  ms.SetBoundingBox(cx - (dx/2),cy - (dy/2),cx + (dx/2),cy + (dy/2)); ms.Show(); }  }  }  break; }  break; case 3:  switch(action) { case 1:  if (evt.button == buttonValue) { document.onmousemove = docOnMouseMove; document.onmouseup = docOnMouseUp; switch(ms.activeMap)  { case 1: for (var ix=0;ix<ms.services.length;ix++) { with (ms.services[ix]) { map1.style.position = 'absolute'; } } break; case 2: for (var ix=0;ix<ms.services.length;ix++) { with (ms.services[ix]) { map2.style.position = 'absolute'; } } break; }  ms.isMouseDown = true; if (ms.OnMouseDown!=null) ms.OnMouseDown(ms);  } break; case 2:  if (ms.OnMouseMove!=null) ms.OnMouseMove(ms); if (ms.isMouseDown) { var xp = ms.MousePosX - ms.MouseDownX; var yp = ms.MousePosY - ms.MouseDownY; ms.mapdiv.style.cursor = 'move'; ms.VmlOffset(xp,yp); ms.SnapOffset(xp,yp);  switch(ms.activeMap)  { case 1: for (var ix=0;ix<ms.services.length;ix++) { with (ms.services[ix]) { map1.style.left = xp; map1.style.top = yp; } } break; case 2: for (var ix=0;ix<ms.services.length;ix++) { with (ms.services[ix]) { map2.style.left = xp; map2.style.top = yp; } } break; }  if (ms.OnBBoxChanging!=null) ms.OnBBoxChanging( ms.xmin-(xp*ms.resolution), ms.ymin+(yp*ms.resolution), ms.xmax-(xp*ms.resolution), ms.ymax+(yp*ms.resolution)); ms.FireCmLEvent('onbboxchanging', ms.xmin-(xp*ms.resolution), ms.ymin+(yp*ms.resolution), ms.xmax-(xp*ms.resolution), ms.ymax+(yp*ms.resolution));  } else {  }  break; case 3: DebugWriteln("MouseUp (Pan)");  document.onmousemove = null; document.onmouseup = null;  if (ms.OnMouseUp!=null) ms.OnMouseUp(ms); if ((Math.abs(ms.MousePosX - ms.MouseDownX)>=1) || (Math.abs(ms.MousePosY - ms.MouseDownY)>=1)) { var dx = (ms.xmax-ms.xmin)*(ms.MousePosX - ms.MouseDownX)/ms.width; var dy = (ms.ymax-ms.ymin)*(ms.MousePosY - ms.MouseDownY)/ms.height; ms.nextBehaviour.scrollModeOnPan = 0; ms.SetBoundingBox(ms.xmin-dx,ms.ymin+dy,ms.xmax-dx,ms.ymax+dy); ms.Show(); } ms.isMouseDown = false; break;  }  break; case 4:  case 0:  case 5:  switch(action) { case 1: if (evt.button==buttonValue) { if (ms.OnMouseDown!=null) ms.OnMouseDown(ms);  switch(ms.PaintState) { case 1:  ms.AddSnapGuide(ms.worldX,ms.worldY); if (ms.SnapGuidePointsEnabled) {  ms.geometries[ms.geometries.length] = new geometry(1,1,ms.snapObjects.length-1,ms.snapObjects.length-1,ms.snapPoints.length-1,ms.snapPoints.length-1);  } else {  ms.geometries[ms.geometries.length] = new geometry(1,1,-1,-1,ms.snapPoints.length-1,ms.snapPoints.length-1);  }  break; case 2: if (ms.SnapState==1) {  var ref=ms.snapPoints.length; var first=(ms.PaintOffset==ref);  if (!first) { var pts = ms.snapPoints[ref-1]; if ((pts.x==ms.worldX) && (pts.y==ms.worldY)) { ms.DonePaint(false); break; }  }   ms.AddSnapGuide(ms.worldX,ms.worldY); if (ms.vmlSupport) { var ps1 = ms.WorldToScreen(ms.worldX,ms.worldY); var sss = ps1.x+'px,'+ps1.y+'px';  ms.rubber.setAttribute('from',sss);  ms.rubber.setAttribute('to',sss);  ms.rubber.style.visibility = 'visible'; ms.rubber.fromScreenX = ps1.x;  ms.rubber.fromScreenY = ps1.y;  ms.rubber.fromWorldX = ms.worldX;  ms.rubber.fromWorldY = ms.worldY;  }  if (first) { if (ms.SnapGuidePointsEnabled) {  ms.geometries[ms.geometries.length] = new geometry(2,1,ms.snapObjects.length-1,ms.snapObjects.length-1,ms.snapPoints.length-1,ms.snapPoints.length-1);  } else { ms.geometries[ms.geometries.length] = new geometry(2,1,-1,-1,ms.snapPoints.length-1,ms.snapPoints.length-1);  } } else { ms.snapObjects[ms.snapObjects.length]=new wmsNewSnap(ms,'line',ref-1); if (!ms.SnapGuidePointsEnabled && (ms.geometries[ms.geometries.length-1].objectRefFirst==-1)) {  ms.geometries[ms.geometries.length-1].objectRefFirst = ms.snapObjects.length-1;  } ms.geometries[ms.geometries.length-1].objectRefLast = ms.snapObjects.length-1;  ms.geometries[ms.geometries.length-1].pointRefLast = ms.snapPoints.length-1;  }  } else  {  if (ms.hiliteSnap!=null) { var id = ms.hiliteSnap.id; if (ms.SnapL1<0)   { var ref = parseInt(id.substring(4,id.size));  if (ms.snapObjects[ref].cname=='line')  { ms.SnapL1 = parseInt(id.substring(4,id.size));  ms.SnapObjectColorTemp = ms.snapObjects[ref].vml.strokecolor+'';     ms.hiliteSnap.strokecolor = ms.SuperSnapColor;   ms.SnapL1 = ref;  }   } else { var L2 = parseInt(id.substring(4,id.size));  if (ms.snapObjects[L2].cname=='line')  { var diff = Math.abs(ms.SnapL1-L2); if (diff==0)   { DebugWriteln('Der peges på samme linie');  ms.hiliteSnap.strokecolor = ms.SnapObjectColorTemp;   ms.SnapL1=-1; L2 = -1;  } else { if (diff==1) { DebugWriteln('nabolinier');  L2 = -1; } }  } else L2 = -1;   if (L2>=0) { var p1,p2,p3,p4; with (ms.snapObjects[ms.SnapL1]) { p1 = ms.snapPoints[ref]; p2 = ms.snapPoints[ref+1]; }  with (ms.snapObjects[L2]) { p3 = ms.snapPoints[ref]; p4 = ms.snapPoints[ref+1]; }  var res=lineIntersect(p1,p2,p3,p4); if (res) {    ms.snapObjects[ms.SnapL1].vml.strokecolor=ms.SnapObjectColorTemp;  ms.SnapL1 = -1; switch(res.length) { case 2: ms.AddSnapGuide(res[0].x,res[0].y,res[1].x,res[1].y); if (ms.SnapGuidePointsEnabled) {  ms.geometries[ms.geometries.length] = new geometry(2,1,ms.snapObjects.length-3,ms.snapObjects.length-1,ms.snapPoints.length-2,ms.snapPoints.length-1);  } else { ms.geometries[ms.geometries.length] = new geometry(2,1,ms.snapObjects.length-1,ms.snapObjects.length-1,ms.snapPoints.length-2,ms.snapPoints.length-1);  } ms.DonePaint(false); break; case 3: ms.AddSnapGuide(res[0].x,res[0].y,res[1].x,res[1].y,res[2].x,res[2].y); if (ms.SnapGuidePointsEnabled) {  ms.geometries[ms.geometries.length] = new geometry(2,1,ms.snapObjects.length-5,ms.snapObjects.length-1,ms.snapPoints.length-3,ms.snapPoints.length-1);  } else { ms.geometries[ms.geometries.length] = new geometry(2,1,ms.snapObjects.length-2,ms.snapObjects.length-1,ms.snapPoints.length-3,ms.snapPoints.length-1);  } ms.DonePaint(false); break;  }  } else {  }   }   }  }  }   break;  }   }  break; case 2: if (ms.OnMouseMove!=null) ms.OnMouseMove(ms); switch(ms.PaintState) { case 1:  break; case 2:  if (ms.vmlSupport) { var ps2 = ms.WorldToScreen(ms.worldX,ms.worldY); var ratio;  var adjustX; var adjustY; var pxls = 5; var rubberOffX; var rubberOffY; if (ms.rubber.fromScreenX==ps2.x) {  adjustX = 0; adjustY = 1; rubberOffX = 0; rubberOffY = ms.rubber.fromWorldY-ms.worldY>0?-pxls:pxls; } else if (ms.rubber.fromScreenY==ps2.y) { adjustX = 1; adjustY = 0; rubberOffY = 0; rubberOffX = ms.rubber.fromWorldX-ms.worldX<0?-pxls:pxls; } else { ratio = Math.abs(ms.rubber.fromScreenX-ps2.x)/(Math.abs(ms.rubber.fromScreenX-ps2.x)+Math.abs(ms.rubber.fromScreenY-ps2.y)); adjustX = ratio; adjustY = 1 - ratio; rubberOffX = ms.rubber.fromWorldX-ms.worldX<0?(-adjustX*pxls):(adjustX*pxls); rubberOffY = ms.rubber.fromWorldY-ms.worldY>0?(-adjustY*pxls):(adjustY*pxls); } if ((Math.abs(ms.rubber.fromScreenX-ps2.x)-pxls<0) && (Math.abs(ms.rubber.fromScreenY-ps2.y)-pxls<0)) { var sss = (ms.rubber.fromScreenX)+'px,'+(ms.rubber.fromScreenY)+'px';  } else { var sss = (ps2.x+rubberOffX)+'px,'+(ps2.y+rubberOffY)+'px';  }   ms.rubber.setAttribute('to',sss);  }  break;  }  break; case 3: if ((evt.button == buttonValue) && (ms.OnMouseUp!=null)) ms.OnMouseUp(ms);  break; }   break; }  } } catch (e) { throw('Unexpected Error in MouseEvent:'+e.message); } if (jsGlobals.browserDetector.preventDefaultEvent_GS())  evt.preventDefault();else return false;} function wmsMouseDown(evt) { DebugWriteln("MouseDown");  return wmsMouseEvent(evt,1);}function wmsMouseMove(evt) { return wmsMouseEvent(evt,2);}function wmsMouseUp(evt) { return wmsMouseEvent(evt,3);}function mapboundingbox(values) {var bb = values.split(',');this.xmin = parseFloat(bb[0]);this.ymin = parseFloat(bb[1]);this.xmax = parseFloat(bb[2]);this.ymax = parseFloat(bb[3]);}function wmsAddService(url,layers,styles,format,params) {DebugWriteln("AddService: url="+url+" styles="+styles+" format="+format+" params="+params); with (this) { services[services.length] = new wmsServiceType(services.length,this.mapdiv,url,layers,styles,format,params);}}function wmsCreateImgBuffer(name) {var buf = new Image();buf.name = name; buf.id = name;buf.setAttribute('border','0');buf.setAttribute('galleryimg','no'); buf.style.top = '0px';buf.style.left = '0px';buf.style.position = 'absolute';buf.style.visibility = 'hidden';buf.onload = wmsMapOnLoad;buf.onerror = wmsMapOnError;buf.onabort = wmsMapOnAbort;return buf;}function wmsCreateImg(id,zix) {var img = document.createElement('img');img.id = id;img.name = id;img.setAttribute('galleryimg','no'); img.setAttribute('border','0');img.style.display = 'none';img.style.zIndex = zix;img.style.position = 'absolute';if (jsGlobals.browserDetector.imgOnLoadSupport_GS()){ img.onload = wmsMapOnLoad; img.onerror = wmsMapOnError; img.onabort = wmsMapOnAbort;} return img;}function wmsSetBoxColor(color) { this.imageBot.style.backgroundColor = color; this.imageTop.style.backgroundColor = color; this.imageRgt.style.backgroundColor = color; this.imageLft.style.backgroundColor = color;}function wmsCreateBox(_id,ref,mapdiv) {var img = document.createElement('img');img.id = mapdiv.id+'_'+_id;img.name = mapdiv.id+'_'+_id;img.width = 1; img.height = 1;img.style.top = '0px';img.style.left = '0px';img.style.width = '1px';img.style.height = '1px';img.style.position = 'absolute';img.style.visibility = 'hidden';img.style.zIndex = '250'; img.style.backgroundColor = 'blue'; mapdiv.appendChild(img);img.src = ref;img.className = 'wmsbbox';return img;}function wmsSetBusyFlag(value) {with(this) { if (value==true)  { busyCount += 1; if ((busyCount==1) && (progressElement)) progressElement.style.display = '';  } else { busyCount -= 1; if (busyCount<0) busyCount=0; if ((busyCount==0) && (progressElement)) progressElement.style.display = 'none';   }}}function wmsCreateEventElem() { var elem1 = document.createElement('img'); elem1.id = this.mapdiv.id+'_eventelem'; elem1.src = 'images/pixel.gif'; elem1.setAttribute('galleryimg','no');  elem1.style.position = 'absolute'; elem1.style.left = '0px'; elem1.style.top = '0px'; elem1.style.width = this.width+'px'; elem1.style.height = this.height+'px'; elem1.style.zIndex = 999; elem1.onmousedown = wmsMouseDown; elem1.onmouseup = wmsMouseUp;  elem1.onmousemove = wmsMouseMove; elem1.onclick = wmsClick; elem1.ondblclick = wmsDblClick; return elem1;}function wmsSetSize(width,height) { this.width = width; this.height = height; with (this) { if (eventelem) { eventelem.style.width = width+'px'; eventelem.style.height = height+'px'; } }}function wmsUseEventLayer(useEventLayer) {with (this) { if (useEventLayer) { mapdiv.onmousedown = null; mapdiv.onmouseup = null; mapdiv.onmousemove = null; mapdiv.onclick = null; mapdiv.ondblclick = null; eventelem = CreateEventElem(); mapdiv.appendChild(eventelem); } else { mapdiv.onmousedown = wmsMouseDown; mapdiv.onmouseup = wmsMouseUp; mapdiv.onmousemove = wmsMouseMove; mapdiv.onclick = wmsClick; mapdiv.ondblclick = wmsDblClick; }}}function wmsVmlNew(ms,classname) {if ((classname!='polyline') && (classname!='oval')) { throw('VML element is not supported: '+classname); return null;}var vml = document.createElement('v:'+classname);this.vml = vml;this.cname = classname;this.ms = ms;this.active = true;this.pts = new Array();this.ofx = 0;this.ofy = 0;msGlobals.vmlid += 1;vml.id = ms.mapdiv.id+'vml'+msGlobals.vmlid;vml.style.position = 'absolute';vml.style.visibility = 'hidden';if (classname=='polyline') { vml.setAttribute('points',''); vml.setAttribute('strokecolor','lime'); vml.setAttribute('strokeweight','1.5pt'); vml.setAttribute('print','true'); vml.setAttribute('filled','false'); vml.setAttribute('opacity','1.0');}if (classname=='oval'){ vml.setAttribute('fillcolor','blue'); vml.setAttribute('strokecolor','black'); vml.setAttribute('strokeweight','1pt'); vml.style.width = '8px'; vml.style.height = '8px';}ms.mapdiv.appendChild(vml);return this;}function wmsVmlClear() {with (this) { for (var ix=0;ix<vmlObjects.length;ix++) { var handle=vmlObjects[ix]; var vml = handle.vml; handle.pts.length = 0; handle.ms.mapdiv.removeChild(vml); } vmlObjects.length = 0;}} function wmsVmlCreateObject(classname) {var vmlHandle = new wmsVmlNew(this,classname);with (this) { vmlObjects[vmlObjects.length] = vmlHandle;}return vmlHandle;}function wmsVmlWorldToScreen(x,y) {with (this) { var xp = Math.round(width*(x-xmin)/(xmax-xmin)); var yp = Math.round(height*(y-ymax)/(ymin-ymax)); return (xp+','+yp);}}function wmsVmlPoint(vmlHandle,x,y) {if (!vmlHandle.active) throw('Cannot update VML Object. Handle is closed');with (vmlHandle) { if (cname=='polyline') { var len = pts.length; pts[len] = new wmsPoint(x,y); if (len>0) { var s; with (pts[0]) s = ms.VmlWorldToScreen(x,y); for (var ix=1;ix<=len;ix++) { with (pts[ix]) s += ' '+ms.VmlWorldToScreen(x,y); }  vml.points.value = s; vml.style.visibility = 'visible'; }  }  if (cname=='oval') { pts[0] = new wmsPoint(x,y); with (ms) { vmlHandle.ofx = Math.round(width*(x-xmin)/(xmax-xmin)-(parseInt(vml.style.width)/2));  vmlHandle.ofy = Math.round(height*(y-ymax)/(ymin-ymax)-(parseInt(vml.style.height)/2));  vml.style.left = ofx; vml.style.top = ofy; vml.style.visibility = 'visible'; }  }  } } function wmsVmlRemovePoint(vmlHandle,cnt) {if (!vmlHandle.active) throw('Cannot update VML Object. Handle is closed');with (vmlHandle) { if (cname=='polyline') { var s = ''; var len = pts.length; if (cnt>0) { len = (len-cnt)<0?0:len-cnt;  pts.length = len; if (len>0) { with (pts[0]) s = ms.VmlWorldToScreen(x,y); for (var ix=1;ix<len;ix++) { with (pts[ix]) s += ' '+ms.VmlWorldToScreen(x,y); }  }  } else { pts.length = 0; } vml.points.value = s; vml.style.visibility = 'visible'; }  if (cname=='oval') { with (ms) { vml.style.visibility = 'hidden'; } }  } } function wmsVmlClose(vmlHandle) {with (vmlHandle) { active = false;}}function wmsVmlShow(visible) {with (this) { var s=(visible==true)?'visible':'hidden'; for (var ix=0;ix<vmlObjects.length;ix++) vmlObjects[ix].vml.style.visibility = s;} }function wmsVmlOffset(xp,yp) {with (this) { for (var ix=0;ix<vmlObjects.length;ix++) { var obj = vmlObjects[ix]; var vml = obj.vml; vml.style.left = obj.ofx+xp; vml.style.top = obj.ofy+yp; } } }function wmsVmlCalc() {with (this) { for (var ix=0;ix<vmlObjects.length;ix++) { var handle=vmlObjects[ix]; with (handle) { if (cname=='polyline') { if (pts.length>0) { var s; with (pts[0]) s = ms.VmlWorldToScreen(x,y); for (var px=1;px<pts.length;px++) { with (pts[px]) s += ' '+ms.VmlWorldToScreen(x,y); } vml.style.left = 0; vml.style.top = 0; vml.points.value = s; }  }  if (cname=='oval') { if (pts.length>0) { with (ms) { handle.ofx = Math.round(width*(pts[0].x-xmin)/(xmax-xmin)-(parseInt(vml.style.width)/2));  handle.ofy = Math.round(height*(pts[0].y-ymax)/(ymin-ymax)-(parseInt(vml.style.height)/2));  vml.style.left = handle.ofx; vml.style.top = handle.ofy; }  }  }  }  } } }function lineIntersect(p1,p2,p3,p4) { var D,M,N,ok; var E1x1,E1x2,E1y1,E1y2,E2x1,E2x2,E2y1,E2y2; E1x1 = p1.x; E1y1 = p1.y; E1x2 = p2.x; E1y2 = p2.y; E2x1 = p3.x; E2y1 = p3.y; E2x2 = p4.x; E2y2 = p4.y; var dot = ((E1x2-E1x1) * (E2x2-E2x1)) + ((E1y2-E1y1) * (E2y2-E2y1));  var l1 = Math.sqrt(Math.pow((E1x2-E1x1),2) + Math.pow((E1y2-E1y1),2)); var l2 = Math.sqrt(Math.pow((E2x2-E2x1),2) + Math.pow((E2y2-E2y1),2)); var angleDeg = Math.acos(dot/(l1*l2))*(360/(Math.PI*2)); if (angleDeg>90) angleDeg-=180; if (Math.abs(angleDeg)<5.0) return null; M=((E2x1-E1x1) * (E2y1-E2y2))-((E2y1-E1y1) * (E2x1-E2x2)); N=((E1x2-E1x1) * (E2y1-E1y1))-((E1y2-E1y1) * (E2x1-E1x1)); D=((E1x2-E1x1) * (E2y1-E2y2))-((E1y2-E1y1) * (E2x1-E2x2)); if (D<0) { D=-D; N=-N; M=-M; }  ok=(D!=0) && (0<Math.abs(M)) && (0<Math.abs(N)) ;  if (ok)  { s=M/D; t=N/D;    var res = new Array(); if ((s<0) || (s>1)) { if (s<0)  res[res.length]=new wmsPoint(E1x1,E1y1); else res[res.length]=new wmsPoint(E1x2,E1y2);  }  res[res.length] = new wmsPoint(E1x1+s*(E1x2-E1x1),E1y1+s*(E1y2-E1y1)); if ((t<0) || (t>1)) { if (t<0)  res[res.length]=new wmsPoint(E2x1,E2y1); else res[res.length]=new wmsPoint(E2x2,E2y2);  }  return res; }  return null;} function wmsNewSnap(ms,classname,ref) { var col; var pt,ps; var vml = document.createElement('v:'+classname); this.vml = vml; this.cname = classname; this.ref = ref; this.ms = ms; this.active = true; this.pts = new Array(); this.ofx = 0; this.ofy = 0; this.index = ms.snapObjects.length;   vml.id='snap'+ms.snapObjects.length;  vml.style.position = 'absolute'; vml.style.visibility = 'visible';  if (classname=='oval') { vml.setAttribute('fillcolor','white'); if (ms.PaintState>0) col=ms.SnapColor2; else col=ms.SnapColor;  vml.setAttribute('strokecolor',col); vml.setAttribute('strokeweight','1px');  pt=ms.snapPoints[ref]; ps=ms.WorldToScreen(pt.x,pt.y); vml.style.width='6px'; vml.style.height='6px'; vml.style.left=(ps.x-3)+'px'; vml.style.top=(ps.y-3)+'px'; vml.style.zIndex=5; this.ofx = ps.x-3; this.ofy = ps.y-3; this.vwidth=6; this.vheight=6;     }  if (classname=='line') { if (ms.PaintState>0) col=ms.SnapColor2; else col=ms.SnapColor;  vml.setAttribute('strokecolor',col); vml.setAttribute('strokeweight','2px');  pt=ms.snapPoints[ref]; ps1=ms.WorldToScreen(pt.x,pt.y); vml.setAttribute('from',ps1.x+'px,'+ps1.y+'px');  pt=ms.snapPoints[ref+1]; ps2=ms.WorldToScreen(pt.x,pt.y); vml.setAttribute('to',ps2.x+'px,'+ps2.y+'px');  this.vwidth= Math.abs(ps2.x-ps1.x); this.vheight=Math.abs(ps2.y-ps1.y);    }  ms.mapdiv.appendChild(vml); return this;} function wmsSnapClear(objRef) { objRef = objRef==null?0:objRef;  with (this) { for (var ix=objRef;ix<snapObjects.length;ix++) {  var handle=snapObjects[ix]; var vml = handle.vml; handle.ms.mapdiv.removeChild(vml); }   snapObjects.length = objRef;  if (geometries.length>0) {  if (geometries[0].objectRefFirst>=objRef) { geometries.length = 0; } else { for (var jx=0;jx<geometries.length;jx++) { if ((geometries[jx].objectRefFirst<objRef) && (objRef<=geometries[jx].objectRefLast)) { geometries[jx].objectRefLast = objRef-1; geometries.length = jx+1; break; } else if (geometries[jx].objectRefFirst==objRef) { geometries.length = jx; break; } } } } } } function wmsGeometryClearLast(clearSnapGuides) { clearSnapGuides = clearSnapGuides==null?false:clearSnapGuides; if (this.geometries.length>0) { if (clearSnapGuides) { this.SnapClear(this.geometries[this.geometries.length-1].objectRefFirst); } else { this.geometries.length -= 1; } } this.rubber.style.visibility = 'hidden';  this.PaintOffset=this.snapPoints.length; }function wmsGeometryClearAll(clearSnapGuides) { clearSnapGuides = clearSnapGuides==null?false:clearSnapGuides; if (this.geometries.length>0) { if (clearSnapGuides) { this.SnapClear(this.geometries[0].objectRefFirst); } else { this.geometries.length = 0; } }}function wmsAddSnapGuide(x,y) {  var args = wmsAddSnapGuide.arguments; var vmlHandle = null; var ref =-1; if (args.length<2) throw('At least two arguments must be specified for a snap guide.'); with (this) { if (args.length==2)  {    ref = snapPoints.length; snapPoints[ref]=new wmsPoint(x,y); if (SnapGuidePointsEnabled) snapObjects[snapObjects.length]=new wmsNewSnap(this,'oval',ref);  } else  {    var cnt=0; var ix,x1,y1; ref = snapPoints.length; ix=0; while (ix<args.length-1) { x1=args[ix++]; y1=args[ix++]; cnt+=1; snapPoints[snapPoints.length]=new wmsPoint(x1,y1); }  for (ix=0;ix<cnt-1;ix++) { snapObjects[snapObjects.length]=new wmsNewSnap(this,'line',ref+ix); }  if (SnapGuidePointsEnabled) {  for (ix=0;ix<cnt;ix++) { snapObjects[snapObjects.length]=new wmsNewSnap(this,'oval',ref+ix); }  } }  }  return ref;} function wmsWorldToScreen(x,y) { with (this) { var xp = Math.round(width*(x-xmin)/(xmax-xmin)); var yp = Math.round(height*(y-ymax)/(ymin-ymax)); return (new wmsPoint(xp,yp)); } } function wmsWorldToScreen2(x,y,xmin,ymin,xmax,ymax,width,height) { var xp = Math.round(width*(x-xmin)/(xmax-xmin)); var yp = Math.round(height*(y-ymax)/(ymin-ymax)); return (new wmsPoint(xp,yp));} function wmsSnapShow(visible) {with (this) { var s=(visible==true)?'visible':'hidden'; for (var ix=0;ix<snapObjects.length;ix++) snapObjects[ix].vml.style.visibility = s;} } function wmsSnapOffset(xp,yp) {with (this) { for (var ix=0;ix<snapObjects.length;ix++) { var obj = snapObjects[ix]; var vml = obj.vml; vml.style.left = obj.ofx+xp; vml.style.top = obj.ofy+yp; } } } function wmsSnapCalc() { if (this.vmlSupport) {  if (this.rubber.fromWorldX) {  var ps1 = this.WorldToScreen(this.rubber.fromWorldX,this.rubber.fromWorldY);  var sss = ps1.x+'px,'+ps1.y+'px'; this.rubber.setAttribute('from',sss);  this.rubber.setAttribute('to',sss);  }  }  var pt,ps; with (this) { for (var ix=0;ix<snapObjects.length;ix++) { var handle=snapObjects[ix]; with (handle) { var vml = handle.vml; if (cname=='line') { pt=snapPoints[ref]; ps1=WorldToScreen(pt.x,pt.y); vml.setAttribute('from',ps1.x+'px,'+ps1.y+'px');  pt=snapPoints[ref+1]; ps2=WorldToScreen(pt.x,pt.y); vml.setAttribute('to',ps2.x+'px,'+ps2.y+'px');  vml.style.left = 0; vml.style.top = 0; vwidth=Math.abs(ps2.x-ps1.x); vheight=Math.abs(ps2.y-ps1.y); ofx = 0; ofy = 0; }  if (cname=='oval') { pt=snapPoints[ref]; ps=WorldToScreen(pt.x,pt.y); vml.style.left=(ps.x-3)+'px'; vml.style.top=(ps.y-3)+'px'; ofx = ps.x-3; ofy = ps.y-3; }  }  }   } } function wmsBeginPaint(objectType) { this.rubber.style.visibility = 'hidden';  if (objectType==null) objectType=1;  if ((objectType<1) || (objectType>2)) throw('Invalid value in objectType parameter'); with (this) { if (PaintState>0) DonePaint(false); SnapL1 = -1; PaintState =objectType; PaintOffset=snapPoints.length; if (operationMode==0) mapdiv.style.cursor = 'crosshair'; return PaintOffset; } } function wmsDonePaint(cancel) { with (this) { if ((cancel==null) || (cancel==false)) { } else { }  mapdiv.style.cursor = 'auto'; PaintState=0; }  this.rubber.style.visibility = 'hidden';  if (this.OnDonePaint!=null) this.OnDonePaint(this);} function wmsGetFeatureInfo(layerindex,maxcount,featurelayers,info_format) { with (this) { with (services[layerindex]) { if (visible)  { var lyr = ''; var sty = ''; var lcount = 0; if (featurelayers==null) { for (var ix=0;ix<layers.length;ix++)  { if (enabled[ix]==true) { if (lcount>0) { lyr += ','; sty += ','; }  lyr += layers[ix]; sty += styles[ix]; lcount += 1; }  }  if (maxcount!=null) lcount=maxcount; if (lcount==0) lcount=1; } else { lyr = featurelayers; lcount = maxcount;  }  if (info_format==null) info_format='text/xml'; web = url+'VERSION=1.1.0&REQUEST=GetFeatureInfo&QUERY_LAYERS='+lyr+'&LAYERS='+lyr+'&SRS='+srs+'&FEATURE_COUNT='+lcount; web += '&BBOX='+xmin+','+ymin+','+xmax+','+ymax; web += '&WIDTH='+width+'&HEIGHT='+height+'&FORMAT='+format+'&INFO_FORMAT='+info_format; web += '&X='+MousePosX+'&Y='+MousePosY; if (params.length>0) web += '&' + params; return (web); } else { return ''; }   }  }  } function geometry(geotype,type,objRefFirst,objRefLast,ptRefFirst,ptRefLast) { this.geotype = geotype;  this.type = type;  this.objectRefFirst = objRefFirst; this.objectRefLast = objRefLast; this.pointRefFirst = ptRefFirst; this.pointRefLast = ptRefLast;}function wmsSetBBoxResult() { this.previousBBox = new mapboundingbox('0,0,0,0'); this.previousResolution = null; this.changed = null; this.zoomed = null; this.paned = null; this.bboxOverlap = null; this.axisScaled = null; this.fullExtentReached = null; this.minResolutionReached = null; this.maxResolutionReached = null;}function wmsSetBoundingBox(x1,y1,x2,y2) { var r; with (this) { SetBBoxResult.previousBBox.xmin = xmin; SetBBoxResult.previousBBox.ymin = ymin; SetBBoxResult.previousBBox.xmax = xmax; SetBBoxResult.previousBBox.ymax = ymax; SetBBoxResult.previousResolution = resolution; xmin = x1; ymin = y1; xmax = x2; ymax = y2; r = BBoxAdjustAxisScale(true); SetBBoxResult.axisScaled = (r>0); var sc = BBoxAdjustScale(); SetBBoxResult.minResolutionReached = (sc==1); SetBBoxResult.maxResolutionReached = (sc==2); var ex = BBoxAdjustExtent(); SetBBoxResult.fullExtentReached = (ex>=16); r = BBoxAdjustAxisScale(ex<16); var sc = BBoxAdjustScale(); BBoxAdjustRounding(0<ex,sc==2); bboxValidated = true; SetBBoxResult.changed = false; SetBBoxResult.bboxOverlap = false; if ((SetBBoxResult.previousBBox.xmin!=xmin) ||  (SetBBoxResult.previousBBox.ymin!=ymin) || (SetBBoxResult.previousBBox.xmax!=xmax) || (SetBBoxResult.previousBBox.ymax!=ymax)) { SetBBoxResult.changed = true; SetBBoxResult.bboxOverlap =  (((xmin<=SetBBoxResult.previousBBox.xmax) && (xmax>=SetBBoxResult.previousBBox.xmin)) &&  ((ymin<=SetBBoxResult.previousBBox.ymax) && (ymax>=SetBBoxResult.previousBBox.ymin))); } else { SetBBoxResult.bboxOverlap = true; } SetBBoxResult.zoomed = (Math.abs(resolution-SetBBoxResult.previousResolution)>0.000001); SetBBoxResult.paned = ((!SetBBoxResult.zoomed) && SetBBoxResult.changed); hiddenImgBBox.xmin = (2*SetBBoxResult.previousBBox.xmin) - xmin; hiddenImgBBox.ymin = (2*SetBBoxResult.previousBBox.ymin) - ymin; hiddenImgBBox.xmax = (2*SetBBoxResult.previousBBox.xmax) - xmax; hiddenImgBBox.ymax = (2*SetBBoxResult.previousBBox.ymax) - ymax; if (SetBBoxResult.changed) { if (OnBBoxChange!=null) OnBBoxChange(this,xmin,ymin,xmax,ymax,SetBBoxResult.previousBBox.xmin,SetBBoxResult.previousBBox.ymin,SetBBoxResult.previousBBox.xmax,SetBBoxResult.previousBBox.ymax); FireCmLEvent('onbboxchange',xmin,ymin,xmax,ymax,SetBBoxResult.previousBBox.xmin,SetBBoxResult.previousBBox.ymin,SetBBoxResult.previousBBox.xmax,SetBBoxResult.previousBBox.ymax); } }}function wmsBoxChanged() {}function wmsBBoxAdjustExtent() { var dx = 0; var dy = 0; var diff = 0; var retValue = 0; with (this) { if (!useExtent) return 0;  if ((xmax-xmin)>=(exmax-exmin)) { xmin = exmin; xmax = exmax; ymin = eymin; ymax = eymax; retValue += 16; } if ((ymax-ymin)>=(eymax-eymin)) { xmin = exmin; xmax = exmax; ymin = eymin; ymax = eymax; retValue += 32; } diff = xmax - xmin; if (xmin<exmin) { xmin = exmin; xmax = xmin + diff; retValue += 1; } if (exmax<xmax) { xmax = exmax; xmin = xmax - diff; retValue += 2; } diff = ymax - ymin; if (ymin<eymin) { ymin = eymin; ymax = ymin + diff; retValue += 4; } if (eymax<ymax) { ymax = eymax; ymin = ymax - diff; retValue += 8; } } return retValue;}function wmsBBoxAdjustAxisScale(extentBBox) {with (this) { var xScale = Math.abs((xmax-xmin)/width); var yScale = Math.abs((ymax-ymin)/height); var diff = Math.abs((xScale-yScale)/xScale); var retValue = 0; if (diff<=0.05) { retValue = 0; } else { if (((xScale>yScale) && extentBBox) || ((xScale<yScale) && !extentBBox))  { var cy = (ymax+ymin)/2; var dy = (xmax-xmin)*height/(2*width); ymin = Math.round(cy-dy); ymax = Math.round(cy+dy); retValue = 1; } else { var cx = (xmax+xmin)/2; var dx = (ymax-ymin)*width/(2*height); xmin = Math.round(cx-dx); xmax = Math.round(cx+dx); retValue = 2; }  } resolution = (xmax - xmin) / width; return retValue;} }function wmsBBoxAdjustScale() {var newRes;var retValue = 0;with (this) { if ((maxResolution<minResolution) && (maxResolution>0)) { alert('maxResolution('+maxResolution+') < minResolution('+minResolution+')'); return -1; }  if ((resolution<minResolution) && (minResolution!=0)) { newRes = minResolution; retValue = 1; } if ((resolution>maxResolution) && (maxResolution!=0)) { newRes = maxResolution; retValue = 2; } if (0<retValue) { var cx = (xmax+xmin)/2; var cy = (ymax+ymin)/2; xmin = cx - ((width/2)*newRes); xmax = xmin + (width*newRes); ymin = cy - ((height/2)*newRes); ymax = ymin + (height*newRes); } resolution = (xmax - xmin) / width;}return retValue;}function wmsBBoxAdjustRounding(fullextent,maxRes) { with (this) { var x1 = xmin; var y1 = ymin; var x2 = xmax; var y2 = ymax; switch (bboxCalcMode) { case 0:  xmin = Math.round(x1); ymin = Math.round(y1); xmax = Math.round(x2); ymax = Math.round(y2); break; case 1:  xmin = Round(x1,fractionDigits); ymin = Round(y1,fractionDigits); xmax = Round(x2,fractionDigits); ymax = Round(y2,fractionDigits); break; case 2: if ((useExtent && fullextent) || maxRes) {  floor = true; } else { floor = false; } var w1; var d1; var w2; var d2; var wgl; var alpha; var nx = width; var ny = height; var evenAdjust = 2;  if ((x2-x1)>(y2-y1)) { w1 = x2-x1; wgl = xmax-xmin; n = nx; } else { w1 = y2-y1; wgl = ymax-ymin; n = ny; } d1 = w1/n; fractionDigits = 1-Math.floor(Math.log(w1/n/evenAdjust)/Math.log(10)); alpha =evenAdjust*Math.pow(10,-fractionDigits); if (floor) { d2 = Math.floor(d1/alpha*1.00001)*alpha; } else { d2 = Math.ceil(d1/alpha*0.99999)*alpha; } w2 = d2*n; xmin = Roundn((x2 + x1 - (d2*nx)) / 2,fractionDigits,evenAdjust); xmax = Roundn(xmin + (d2*nx),fractionDigits,evenAdjust); ymin = Roundn((y2 + y1 - (d2*ny)) / 2,fractionDigits,evenAdjust); ymax = Roundn(ymin + (d2*ny),fractionDigits,evenAdjust); break; } resolution = (xmax - xmin) / width; }}function mapservice(mapdiv,url,layers,styles,bbox,format,params) {try { this.copyright = '(c) 2002,2003,2004,2005,2006 JO Informatik ApS'; this.versionInfo = 'JOWMS Script version 8.0 (Januar 2006)';msArray[msArray.length]=this;mapdiv.style.overflow='hidden'; DebugWriteln("Version Information: " + this.versionInfo); DebugWriteln("CreateService: url="+url+" styles="+styles+"bbox="+bbox+" format="+format+" params="+params); this.Center = wmsCenter;this.Show = wmsShow;this.Pan = wmsPan;this.Zoom = wmsZoom;this.SetView = wmsSetView;this.SetCenter = wmsSetCenter;this.AddService = wmsAddService;this.BoxChanged = wmsBoxChanged;this.SetBusyFlag = wmsSetBusyFlag;this.SetFullExtent = wmsSetFullExtent;this.SetFullExtent(0,0,10,10);this.WorldToScreen = wmsWorldToScreen;this.GetFeatureInfo = wmsGetFeatureInfo;this.SetBoxColor = wmsSetBoxColor;this.SetBoundingBox = wmsSetBoundingBox;this.Round = wmsRound;this.Roundn = wmsRoundn;this.BBoxAdjustExtent = wmsBBoxAdjustExtent;this.BBoxAdjustScale = wmsBBoxAdjustScale;this.BBoxAdjustAxisScale = wmsBBoxAdjustAxisScale;this.BBoxAdjustRounding = wmsBBoxAdjustRounding;this.SetSize = wmsSetSize;this.CreateEventElem = wmsCreateEventElem;this.UseEventLayer = wmsUseEventLayer;this.OnMouseUp = null;this.OnMouseDown = null;this.OnMouseMove = null;this.OnClick = null;this.OnDblClick = null;this.OnRequestBegin = null;this.OnRequestEnd = null;this.OnMeasureBegin = null;this.OnMeasureChange = null;this.OnMeasureEnd = null;this.OnMapServiceError = null;this.OnMapServiceAbort = null;this.OnTransitionBegin = null;this.OnTransitionEnd = null;this.OnBBoxChange = null;this.OnBBoxChanging = null;this.version = '1.1.0';this.mapdiv = mapdiv;this.isMouseDown = false;this.isNetscape6 = isNN6Min();this.id = mapdiv.id;this.borderSize = 1;this.operationMode = 1; this.MouseDownX = 0;this.MouseDownY = 0;this.MousePosX = 0;this.MousePosY = 0;this.worldX = 0.0;this.worldY = 0.0; this.worldXM = 0.0;this.worldYM = 0.0;this.activeMap = 1;this.width = parseInt(mapdiv.style.width);this.height = parseInt(mapdiv.style.height); if ((isNaN(this.width)) || (isNaN(this.height))) { alert('mapdiv style width and/or height empty.\nmapdiv width and height must be specified using the style attribute of the mapdiv directly'); }if ((mapdiv.style.position!='absolute') && (mapdiv.style.position!='relative')) alert("Error: mapdiv.style.position='"+mapdiv.style.position+"'\nPlease use 'absolute' or 'relative'");this.srs = 'EPSG:32632';this.updateCount = 0;this.busyCount = 0;this.xyscale = parseInt(mapdiv.style.width) / parseInt(mapdiv.style.height); this.boxVisible = false;this.useExtent = false;var bw;try {  bw = parseInt(mapdiv.style.borderWidth);  if (isNaN(bw)) bw=0;} catch (e) { bw = 0; }this.mapBorderWidth = bw;this.mapTop = mapdiv.offsetTop+bw;this.mapLeft = mapdiv.offsetLeft+bw;this.xofs = 0;this.yofs = 0;this.ScrollOffset = wmsScrollOffset;this.progressElement = null;this.minRectSize = 10;this.fractionDigits = 0;this.bboxCalcMode = 0;this.bboxValidated = false;this.abortRequest = false;this.resolution = 0;this.minResolution = 0;this.maxResolution = 0;this.mapAlerts = true;this.hiddenImgBBox = new mapboundingbox('0,0,0,0');this.intervalHandle = null;this.intervalHandleFade = null;this.tstep = 0;this.tstepFade = 0;this.updateHiddenImgOnMove = false;this.scrollInProgress = false;this.mapChangeComplete = wmsMapChangeComplete;this.mapTransitionComplete = true;this.firstLoad = true;this.defaultBehaviour = new wmsBehaviour(0,0,0,false,false,false,false,40,10,50,5);this.nextBehaviour = new wmsBehaviour(null,null,null,null,null,null,null,null,null,null,null);this.nextBehaviourEnabled = true;this.SetBBoxResult = new wmsSetBBoxResult();this.maxTimeTotal = 10; this.maxTimeStep = 3; this.confirmCanceled = false;this.time1 = 0;this.confirmMessage = 'Din computer arbejder kraftigt med at foretage avancerede overgange mellem forskellige kortsudsnit.\n'+ 'Dette kan have flere årsager:\n'+ '1) Din computer har midlertidigt være optaget med andre opgaver\n'+ '2) Din computer er ikke krafigt nok til at kunne foretage kortvisning med avancerede overgange\n'+ 'Hvis du får denne meddelelse gentagne gange, bør du slå avancerede overgange fra.\n\n'+ 'Ønsker du at slå avancerede overgange fra?';this.ImageMoveFct = null;this.imagePosCalc = wmsImagePosCalc;this.setOpacity = wmsSetOpacity;this.bboxCookie = new CookieManager('bbox','',1,3);this.tCursorBody = '';this.tCursorMapdiv = '';this.Cursors = new Array();this.Cursors[0] = 'auto';this.Cursors[1] = 'auto';this.Cursors[2] = 'auto';this.Cursors[3] = 'auto';this.Cursors[4] = 'auto';this.History = new History(this);this.mapLayerActive = true;this.eventelem = null;this.boundingbox = mapboundingbox;this.boundingbox(bbox);this.services = new Array();this.services[0] = new wmsServiceType(0,mapdiv,url,layers,styles,format,params);this.cosmeticLayers = new Array();this.AddCosmeticLayer = wmsAddCosmeticLayer;this.FireCmLEvent = wmsFireCmLEvent;this.DeactivateCosmeticLayers = wmsDeactivateCosmeticLayers;this.HideCosmeticLayers = wmsHideCosmeticLayers;this.ResetCosmeticLayers = wmsResetCosmeticLayers;this.CosmeticLayersFromState = wmsCosmeticLayersFromState;this.UseEventLayer(false);var ref = 'images/pixel.gif';this.imageTop = wmsCreateBox('imageTop',ref,mapdiv);this.imageBot = wmsCreateBox('imageBot',ref,mapdiv);this.imageRgt = wmsCreateBox('imageRgt',ref,mapdiv);this.imageLft = wmsCreateBox('imageLft',ref,mapdiv);try {this.vmlObjects = new Array();this.VmlCreateObject = wmsVmlCreateObject;this.VmlPoint = wmsVmlPoint;this.VmlWorldToScreen = wmsVmlWorldToScreen;this.VmlShow = wmsVmlShow;this.VmlCalc = wmsVmlCalc;this.VmlOffset = wmsVmlOffset;this.VmlClose = wmsVmlClose;this.VmlClear = wmsVmlClear;this.VmlRemovePoint = wmsVmlRemovePoint; this.vmlSupport = jsGlobals.browserDetector.vmlSupport_GS();this.snapObjects = new Array();this.snapPoints = new Array();this.snapLines = new Array();this.AddSnapGuide = wmsAddSnapGuide;this.SnapClear = wmsSnapClear;this.SnapShow = wmsSnapShow;this.SnapOffset = wmsSnapOffset;this.SnapCalc = wmsSnapCalc;this.BeginPaint = wmsBeginPaint;this.DonePaint = wmsDonePaint;this.SnapState = 1; this.PaintState = 0; this.PaintOffset = 0; this.SnapColor = 'red';this.SnapColor2 = 'green';this.SuperSnapColor = 'blue';this.SnapL1 = -1;this.lastSnapRef = -1;this.hiliteSnap = null;this.hiliteStroke = null;this.SnapObjectColorTemp = null;this.geometries = new Array();this.GeometryClearLast = wmsGeometryClearLast;this.GeometryClearAll = wmsGeometryClearAll;this.SnapGuidePointsEnabled = true;if (this.vmlSupport) {this.rubber = document.createElement('v:line');this.rubber.style.position = 'absolute';this.rubber.style.visibility = 'hidden'; this.rubber.style.zIndex=3;this.rubber.setAttribute('strokecolor','black'); this.rubber.setAttribute('strokeweight','1pt');this.rubber.setAttribute('opacity','1.0');this.rubber.fromWorldX = null;this.rubber.fromWorldY = null;this.rubber.fromScreenX = -1;this.rubber.fromScreenY = -1;this.mapdiv.appendChild(this.rubber);var stroke = document.createElement('v:stroke');stroke.setAttribute('dashstyle','dash');this.rubber.appendChild(stroke);this.OnDonePaint = null;}}catch(e) { DebugWriteln("VML is not supported on this computer."); this.vmlSupport = false;}} catch(e) { alert('Unexpected error found in "new mapservice()" error message is: '+e.message); }DebugWriteln("CreateService: +OK "); } 