var iwconst = {MAPTYPES:[{NAME:'air',MAXLEVEL:0,PREFERREDLEVEL:4,MINLEVEL:15,COPYRIGHT:'GeoContent',PROXYURL:'http://map.duf.de/MapAPI-0.75/XMLHttpRequestProxy', PROJECTIONTYPE:'1',TILESSERVER:{BASE_DIR:'MapAPI-0.75',ALIAS: ['http://map.duf.de/'],URL:'localhost',PORTLIST:[5204],IMAGETYPE:'jpg'}},{NAME:'hybrid',MAXLEVEL:0,PREFERREDLEVEL:4,MINLEVEL:15,COPYRIGHT:'GeoContent,\u0020Tele\u0020Atlas',PROXYURL:'http://map.duf.de/MapAPI-0.75/XMLHttpRequestProxy', PROJECTIONTYPE:'1',TILESSERVER:{BASE_DIR:'MapAPI-0.75',ALIAS: ['http://map.duf.de/'],URL:'localhost',PORTLIST:[5205],IMAGETYPE:'jpg'},LABELSSERVER:{BASE_DIR:'MapAPI-0.75',ALIAS: ['http://map.duf.de/'],URL:'localhost',PORTLIST:[5210],IMAGETYPE:'gif'}},{NAME:'roadmap',MAXLEVEL:0,PREFERREDLEVEL:3,MINLEVEL:16,COPYRIGHT:'Tele\u0020Atlas',PROXYURL:'http://map.duf.de/MapAPI-0.75/XMLHttpRequestProxy', PROJECTIONTYPE:'1',TILESSERVER:{BASE_DIR:'MapAPI-0.75',ALIAS: ['http://map.duf.de/'],URL:'localhost',PORTLIST:[5200],IMAGETYPE:'gif'},LABELSSERVER:{BASE_DIR:'MapAPI-0.75',ALIAS: ['http://map.duf.de/'],URL:'localhost',PORTLIST:[5210],IMAGETYPE:'gif'}}],SESSION_ID: '80E2F538DE044B4EE971BF4DA36B45D0', WEBSERVER_PORT: '80',LOCAL_APP_URL: 'http://localhost/MapAPI-0.75/',GLOBAL_APP_URL: 'http://map.duf.de/MapAPI-0.75/',GLOBAL_PROXY_URL: 'http://map.duf.de/MapAPI-0.75/XMLHttpRequestProxy',GLOBAL_GETMAPTYPES_URL: 'http://map.duf.de/MapAPI-0.75/XMLHttpRequestProxy',CACHE_CLIENT_URL: 'http://gis3.infoware.de/cache/MapAPI/',CACHE_GROUP_SIZE: '10',CACHE_GROUP_LEVEL: '4',CACHE_BLOCK_SIZE: '10',CACHE_URL_USE: 'true',CACHE_MAPSERVER_GROUP: '',KEEPALIVE_INTERVAL: '120',A_TILESIZE_METER: [43, 80, 120, 200, 400, 800, 1600, 3200, 6400, 12800, 25600, 51200, 102400, 204800, 409600, 819200, 1638400],TILE_SIZE: 250};Function.prototype.iwclosure=function(obj){if(!window.__objs)window.__objs=[];if(!window.__funs)window.__funs=[];var fun=this;var objId=obj.__objId;if(!objId){__objs[objId=obj.__objId=__objs.length]=obj;}
var funId=fun.__funId;if(!funId){__funs[funId=fun.__funId=__funs.length]=fun;}
if(!obj.__closures)obj.__closures=[];var closure=obj.__closures[funId];if(closure)return closure;obj=null;fun=null;return __objs[objId].__closures[funId]=function(){return __funs[funId].apply(__objs[objId],arguments);};};var log4javascript;(function(){function ff(){return function(){}}function copy(obj,props){for(var i in props){obj[i]=props[i]}}var f=ff();var Logger=ff();copy(Logger.prototype,{addAppender:f,removeAppender:f,removeAllAppenders:f,log:f,setLevel:f,getLevel:f,trace:f,debug:f,info:f,warn:f,error:f,fatal:f});var getLogger=function(){return new Logger()};log4javascript={isStub:true,version:"dummy",logLog:{setQuietMode:f,setAlertAllErrors:f,debug:f,warn:f,error:f},addErrorListener:f,removeErrorListener:f,setEnabled:f,setShowStackTraces:f,isEnabled:f,evalInScope:f,getLogger:getLogger,getDefaultLogger:getLogger,getNullLogger:getLogger,Level:ff(),LoggingEvent:ff(),Layout:ff(),Appender:ff()};log4javascript.LoggingEvent.prototype={getThrowableStrRep:f};log4javascript.Level.prototype={toString:f,equals:f,isGreaterOrEqual:f};var level=new log4javascript.Level();copy(log4javascript.Level,{ALL:level,TRACE:level,DEBUG:level,INFO:level,WARN:level,ERROR:level,FATAL:level,OFF:level});log4javascript.Layout.prototype={defaults:{},format:f,ignoresThrowable:f,getContentType:f,allowBatching:f,getDataValues:f,setKeys:f,setCustomField:f,hasCustomFields:f};log4javascript.SimpleLayout=ff();log4javascript.SimpleLayout.prototype=new log4javascript.Layout();log4javascript.XmlLayout=ff();log4javascript.XmlLayout.prototype=new log4javascript.Layout();log4javascript.XmlLayout.prototype.escapeCdata=f;log4javascript.JsonLayout=ff();log4javascript.JsonLayout.prototype=new log4javascript.Layout();copy(log4javascript.JsonLayout.prototype,{setReadable:f,isReadable:f});log4javascript.HttpPostDataLayout=ff();log4javascript.HttpPostDataLayout.prototype=new log4javascript.Layout();log4javascript.PatternLayout=ff();log4javascript.PatternLayout.prototype=new log4javascript.Layout();log4javascript.NullLayout=ff();log4javascript.NullLayout.prototype=new log4javascript.Layout();log4javascript.Appender=ff();log4javascript.Appender.prototype={layout:new log4javascript.PatternLayout(),threshold:log4javascript.Level.ALL,doAppend:f,append:f,setLayout:f,getLayout:f,setThreshold:f,getThreshold:f,toString:f};log4javascript.AlertAppender=ff();log4javascript.AlertAppender.prototype=new log4javascript.Appender();log4javascript.ArrayAppender=ff();log4javascript.ArrayAppender.prototype=new log4javascript.Appender();log4javascript.AjaxAppender=ff();log4javascript.AjaxAppender.prototype=new log4javascript.Appender();copy(log4javascript.AjaxAppender.prototype,{isTimed:f,setTimed:f,getTimerInterval:f,setTimerInterval:f,isWaitForResponse:f,setWaitForResponse:f,getBatchSize:f,setBatchSize:f,setRequestSuccessCallback:f,setFailCallback:f,sendAll:f,defaults:{requestSuccessCallback:null,failCallback:null}});function ConsoleAppender(){}ConsoleAppender.prototype=new log4javascript.Appender();copy(ConsoleAppender.prototype,{create:f,isNewestMessageAtTop:f,setNewestMessageAtTop:f,isScrollToLatestMessage:f,setScrollToLatestMessage:f,getWidth:f,setWidth:f,getHeight:f,setHeight:f,getMaxMessages:f,setMaxMessages:f});log4javascript.InPageAppender=ff();log4javascript.InPageAppender.prototype=new ConsoleAppender();copy(log4javascript.InPageAppender.prototype,{isInitiallyMinimized:f,setInitiallyMinimized:f,hide:f,show:f,isVisible:f,close:f,defaults:{layout:new log4javascript.PatternLayout(),maxMessages:null}});log4javascript.InlineAppender=log4javascript.InPageAppender;log4javascript.PopUpAppender=ff();log4javascript.PopUpAppender.prototype=new ConsoleAppender();copy(log4javascript.PopUpAppender.prototype,{isUseOldPopUp:f,setUseOldPopUp:f,isComplainAboutPopUpBlocking:f,setComplainAboutPopUpBlocking:f,isFocusPopUp:f,setFocusPopUp:f,isReopenWhenClosed:f,setReopenWhenClosed:f,close:f,defaults:{layout:new log4javascript.PatternLayout(),maxMessages:null}});log4javascript.BrowserConsoleAppender=ff();log4javascript.BrowserConsoleAppender.prototype=new log4javascript.Appender()})();var log4javascript_dummy=log4javascript;function IWAsynchroneTransferObject(tileset,maxRequests){var self=this;var _tileset=tileset;var _types=new Object();var _cache=false;var _iMaxRequests=maxRequests;var _requests=new Array(_iMaxRequests);for(var nRequest=0;nRequest<_iMaxRequests;nRequest++){_requests[nRequest]=new IWXMLHttpRequest();}
this.PrepareTilesAsynchrone=function(request,data){request.onreadystatechange=function(){checkPrepareRequest(self,request,data);};var method='GET';if(data.sURL.length>2000){method='POST';}
request.open(method,data.sURL,true);request.send(null);};this.AbortAllRequests=function(){for(var i=0;i<_iMaxRequests;i++){_requests[i].abort();_requests[i].isActive=false;}
};this.getFreeRequest=function(){var request=null;for(var i=0;i<_requests.length;i++){if(_requests[i].isActive==false){request=_requests[i];request.isActive=true;break;}
}
return request;};this.getRequest=function(index){return _requests[index];};function checkPrepareRequest(self,oRequest,data){try{if(oRequest.readyState==4){if(oRequest.status==200){var xml=null;try{xml=IWXMLHelper.parse(oRequest.responseText).documentElement;}
catch(e){}
if(xml !=null){var url=unescape(data.sURL);if(url.indexOf('load=strip')>-1||url.indexOf('code=c')>-1){var cache=xml.getElementsByTagName('cache');var types=xml.getElementsByTagName('type');for(var i=0;i<types.length;i++){var sTypeName=types[i].getAttribute('id');var sAvailable=types[i].getAttribute('available');if(!_types[sTypeName]||_types[sTypeName]!=sAvailable||!_cache||_cache !=cache[0].getAttribute('available')){var event=new IWMapTypeAvailabilityChangedEvent();event.type=sTypeName;event.available=(sAvailable=='true');event.cache=(cache[0].getAttribute('available')=='true');IWEventManager.trigger(self,'aftermaptypeavailabilitychanged',event);}
_types[sTypeName]=sAvailable;_cache=cache[0].getAttribute('available');}
}
var status=getContent(oRequest,'status');if(status.toLowerCase()=='ok'){if(!_tileset.bLoadingLabels){_tileset.RequestNext();_tileset.LoadNextSection();}
_tileset.AddTilesToQueue(data.nTimestamp);}
else if(status.toLowerCase()=='no_data'){}
else
{alert('Map server returned an error:[' + status + ']');if(navigator.appName.indexOf("Internet Explorer")==-1)oRequest.send(null);}
}
}
}
}
catch(e){alert('CheckPrepareRequest Error:' + e);}
}
function getContent(request,sTagName){var xml=null;try{xml=IWXMLHelper.parse(request.responseText).documentElement;return xml.getElementsByTagName(sTagName)[0].firstChild.nodeValue;}
catch(e){return '';}
}
}
function IWXMLHttpRequest(){var self=this;var _logger=log4javascript.getLogger('IWXMLHttpRequest');var _currentRequestID='';var _request=null;var _form=null;var _method=null;var _ajaxRequests=null;this.isActive=false;this.url=null;this.onreadystatechange=null;this.readyState=0;this.status=null;this.statusText=null;this.responseText=null;var _callbackClosure=function(){if(_request){self.readyState=4;self.responseText=_request.loadedText;self.status=_request.statusCode;self.statusText=_request.statusText;if(self.onreadystatechange !=null){self.onreadystatechange();}
self.isActive=false;iw.remove(_request);}
_request=null;}
this.open=function(method,url,asyncFlag){this.readyState=1;if(asyncFlag==false){throw 'IWXMLHttpRequest:synchronious calls are not supported yet';}
if(method !='GET'&&method !='POST'){throw 'IWXMLHttpRequest:unsupported method. Use GET or POST.';}
_method=method;this.url=url;};this.send=function(content){if(this.url==null||this.readyState !=1){throw 'IWXMLHttpRequest:Call open before send';}
if(_currentRequestID==''){var date=new Date();_currentRequestID="IWXMLHttpRequest_" + date.getTime()+ "_" + iw.random(1,10000000);}
_ajaxRequests=iw.id('iw-ajax');if(!_ajaxRequests){_ajaxRequests=iw.create('div');_ajaxRequests.id='iw-ajax';iw.append(document.body,_ajaxRequests);}
if(_method=='GET'){sendGet();}
else if(_method=='POST'){sendPost();}
else
{this.abort();}
_ajaxRequests=null;};this.abort=function(){this.onreadystatechange=function(){};this.isActive=false;if(_request){iw.remove(_request);_request=null;}
};function sendGet(){if(self.url.substr(0,7)!='http://'){self.url=iwconst.LOCAL_APP_URL + self.url;}
_request=iw.create('script');iw.append(_ajaxRequests,_request);_request.type='text/javascript';_request.id=_currentRequestID;_request.loadedText='';_request.callback=_callbackClosure;if(self.url.indexOf('?')>-1)_request.src=self.url + '&callerID=' + _request.id;else
_request.src=self.url + '?callerID=' + _request.id;}
function sendPost(){try{_request=iw.create('<iframe name="' + _currentRequestID + '">');_request.attachEvent('onload',fetchPostResults);}
catch(e){_request=iw.create('iframe');_request.name=_currentRequestID;_request.onload=fetchPostResults;}
_request.id=_currentRequestID;_request.style.display='none';_request.style.visibility='hidden';_request.style.width='1px';_request.style.height='1px';iw.append(_ajaxRequests,_request);self.url=unescape(self.url);var temp=self.url.split('?');self.url=temp[0]+ ';jsessionid='+iwconst.SESSION_ID;_form=iw.create('form');iw.append(_ajaxRequests,_form);_form.method='post';_form.target=_currentRequestID;_form.action=self.url;for(var j=1;j<temp.length;j++){var attributes=temp[j].split('&');for(var i=0;i<attributes.length;i++){var keyValuePair=attributes[i].split('=');createHiddenInput(_form,keyValuePair[0],keyValuePair[1]);}
}
createHiddenInput(_form,'callerID',_currentRequestID);_form.submit();}
function fetchPostResults(){if(!IWBrowser.isInternetExplorer()){_request.src='';}
iw.destroy(_request);iw.destroy(_form);_form=null;_request=null;_method='GET';self.url +='?fetchPostResults=1';self.send();}
function createHiddenInput(form,name,value){var input=iw.create('input');input.type='hidden';input.name=name;input.value=value;iw.append(form,input);return input;}
}
function IWServerConfig(){var _url=null;var _baseDir='';var	_portList=null;var _aliases='';var _aliasIndex=0;var _aliases=null;var _imageType=null;var _cacheEnabled=false;this.setAliases=function(aliases){_aliases=aliases;};this.getAliases=function(){return _aliases;};this.getNextAlias=function(){var alias=_aliases[_aliasIndex];_aliasIndex=(_aliasIndex + 1)% _aliases.length;return alias;};this.setURL=function(url){_url=url;};this.getURL=function(){return _url;};this.setPortList=function(portList){_portList=portList;};this.getPortList=function(){return _portList;};this.setImageType=function(imageType){_imageType=imageType;};this.getImageType=function(){return _imageType;};this.setCacheEnabled=function(cacheEnabled){_cacheEnabeld=cacheEnabled;};this.isCacheEnabled=function(){return _cacheEnabled;};this.setBaseDir=function(baseDir){_baseDir=baseDir;};this.getBaseDir=function(){return _baseDir;};}
var IWAlignment=new function(){this.CENTER=0;this.LEFT=1;this.RIGHT=2;this.TOP=4;this.BOTTOM=8;};var IWButton=new function(){this.NONE=0;this.LEFT=1;this.RIGHT=2;this.MIDDLE=4;};function IWAddressSearchControl(map){IWWindowControl.call(this,map,'IWAddressSearchControl');var self=this;var geocoderClient=new IWGeocoderClient();var marker=null;var bestAddress=null;var language=null;var hasGUI=false;var MAX_ADDRESSES_PER_GEOCODE=100;var STREET=0;var HOUSENUMBER=1;var ZIPCODE=2;var CITY=3;var COUNTRY=4;var pack=new IWLanguagePack();pack.addLanguage(new IWLanguage('de',iwconst.LOCAL_APP_URL + 'lang/IWAddressSearchControl.lang.de'));pack.addLanguage(new IWLanguage('en',iwconst.LOCAL_APP_URL + 'lang/IWAddressSearchControl.lang.en'));pack.addLanguage(new IWLanguage('es',iwconst.LOCAL_APP_URL + 'lang/IWAddressSearchControl.lang.es'));pack.addLanguage(new IWLanguage('fr',iwconst.LOCAL_APP_URL + 'lang/IWAddressSearchControl.lang.fr'));pack.addLanguage(new IWLanguage('tr',iwconst.LOCAL_APP_URL + 'lang/IWAddressSearchControl.lang.tr'));IWMultiLanguageSupport.call(this,map,pack);function getContent(){var	html='<b>Ihre gesuchte Adresse</b><p><table><tr><td width="35"><img src=' + iwconst.GLOBAL_APP_URL + 'img/symbols/house/house_blue_30.gif' + '></td>';html +='<td valign="center">';if(bestAddress.getStreet()!=null&&bestAddress.getStreet()!=''){html +=bestAddress.getStreet();if(bestAddress.hasHouseNumber()){html +=' ' + bestAddress.getHouseNumber();}
html +='<br>';}
html +=bestAddress.getZipCode()+ ' ' + bestAddress.getCity()+ '</td></tr></table></p>';var content=iw.create('div');content.style.position='relative';content.style.width='210px';content.style.height='100px';content.style.overflow='auto';content.innerHTML=html;return content;};function setCenter(event){self.triggerAfterAddressFound(event);var bestResult=event.results[0];bestAddress=bestResult.getAddress();var coordinate=bestAddress.getLCC();if(marker==null){marker=new IWMarker(map,coordinate);IWEventManager.addListener(marker,'onclick',function(e){map.openInfoBalloon(marker.getCoordinate(),getContent());}
);map.getOverlayManager().getLayer(1000).addOverlay(marker);}
else
{marker.setCoordinate(coordinate);map.getOverlayManager().getLayer(1000).redraw();}
}
function createAddressFields(id){var div=iw.create('div');div.id=id;div.name='address';iw.append(div,createInputField('street','ADDRESS_STREET'));iw.append(div,createInputField('housenumber','ADDRESS_HOUSE_NUMBER'));iw.append(div,createInputField('zipcode','ADDRESS_ZIPCODE'));iw.append(div,createInputField('city','ADDRESS_CITY'));var selectCountry=iw.create('select');selectCountry.className='country';selectCountry.options[0]=createOptionField('ANDORRA','AND');selectCountry.options[1]=createOptionField('BELGIUM','B');selectCountry.options[2]=createOptionField('DENMARK','DK');selectCountry.options[3]=createOptionField('GERMANY','D');selectCountry.options[4]=createOptionField('FINNLAND','FIN');selectCountry.options[5]=createOptionField('FRANCE','F');selectCountry.options[6]=createOptionField('GREECE','GR');selectCountry.options[7]=createOptionField('GREAT_BRITAIN','GB');selectCountry.options[8]=createOptionField('IRELAND','IRL');selectCountry.options[9]=createOptionField('ITALY','I');selectCountry.options[10]=createOptionField('LUXEMBOURG','L');selectCountry.options[11]=createOptionField('NETHERLANDS','NL');selectCountry.options[12]=createOptionField('AUSTRIA','A');selectCountry.options[13]=createOptionField('NORWAY','N');selectCountry.options[14]=createOptionField('POLAND','PL');selectCountry.options[15]=createOptionField('PORTUGAL','P');selectCountry.options[16]=createOptionField('SAN_MARINO','RSM');selectCountry.options[17]=createOptionField('SWEDEN','S');selectCountry.options[18]=createOptionField('SWITZERLAND','CH');selectCountry.options[19]=createOptionField('SLOVAKIA','SK');selectCountry.options[20]=createOptionField('SPAIN','E');selectCountry.options[21]=createOptionField('CZECH_REPUBLIC','CZ');selectCountry.options[22]=createOptionField('HUNGARY','H');setSelectedIndex(selectCountry,'D');iw.append(div,selectCountry);return div;}
function createOptionField(languageKey,key){var option=new Option(language.get(languageKey),key);self.addLabelFor(new IWLabel(languageKey,option,'text'));return option;}
function setSelectedIndex(elem,value){for(var i=0;i<elem.options.length;i++){if(elem.options[i].value==value){elem.selectedIndex=i;return;}
}
}
function getSelectedText(elem){return elem.options[elem.selectedIndex].text;}
function createInputField(name,languageKey){var input=iw.create('input');input.name=name;input.className=name;input.value=language.get(languageKey);input.onfocus=function(){if(this.value==language.get(languageKey)){this.value='';}
}.iwclosure(input);input.onblur=function(){if(this.value==''){this.value=language.get(languageKey);}
}.iwclosure(input);IWEventManager.addDOMListener(input,'onkeypress',function(event){if(event.keyCode==13)startSearch();}.iwclosure(input)
);self.addLabelFor(new IWLabel(languageKey,input,'value'));return input;}
function getAddressFields(div){var address=new IWAddress();var street=div.childNodes[STREET].value;if(street !=language.get('ADDRESS_STREET')){address.setStreet(street);}
var houseNumber=div.childNodes[HOUSENUMBER].value;if(houseNumber !=language.get('ADDRESS_HOUSE_NUMBER')){address.setHouseNumber(houseNumber);}
var zipCode=div.childNodes[ZIPCODE].value;if(zipCode !=language.get('ADDRESS_ZIPCODE')){address.setZipCode(zipCode);}
var city=div.childNodes[CITY].value;if(city !=language.get('ADDRESS_CITY')){address.setCity(city);}
address.setCountry(getSelectedText(div.childNodes[COUNTRY]));address.setCountryCode(div.childNodes[COUNTRY].value);return address;}
function buildGUI(container){var divBody=iw.create('div');iw.append(container,divBody);divBody.style.position='absolute';divBody.style.left='0px';divBody.style.height='140px';divBody.style.width='340px';divBody.style.top='0px';divBody.style.padding='5px';divBody.style.left='0px';divBody.style.overflowX='hidden';divBody.style.overflowY='auto';_addressFields=createAddressFields('addressFields');iw.append(divBody,_addressFields);var buttonSearch=iw.create('button');iw.append(divBody,buttonSearch);buttonSearch.className='searchButton';self.addLabelFor(new IWLabel('BUTTON_SEARCH',buttonSearch,'innerHTML'));buttonSearch.onclick=function(){startSearch();};}
function startSearch(){var address=getAddressFields(_addressFields);if((address.getZipCode()==null||address.getZipCode().length==0)&&(address.getCity()==null||address.getCity().length==0)){alert(language.get('ERROR_INPUT_ADDRESS'));return;}
self.searchAddress(address);}
this.buildBody=function(container){IWEventManager.addListener(this,'afterlanguagepackloaded',function(event){language=event.language;self.setTitle(language.get('ADDRESS_SEARCH'));if(hasGUI==false){buildGUI(container);hasGUI=true;}
}
);this.loadLanguagePack(map.getOptions().getLanguage());};this.searchAddressString=function(addressString,countryCode){geocoderClient.geocodeAddressString(addressString,countryCode,MAX_ADDRESSES_PER_GEOCODE);};this.searchAddress=function(address){geocoderClient.geocodeAddress(address,MAX_ADDRESSES_PER_GEOCODE);};this.triggerAfterAddressFound=function(event){IWEventManager.trigger(this,'afteraddressfound',event);};this.setId('IWAddressSearchControl');this.setSize(new IWSize(350,150));this.setRedrawable(false);this.close();IWEventManager.addListener(geocoderClient,'aftergeocoded',setCenter);}
function IWBirdsViewControl(map){IWControl.call(this,map,'IWBirdsViewControl');var self=this;var _areaUp=iw.create('area');var _areaLeft=iw.create('area');var _areaRight=iw.create('area');var _areaDown=iw.create('area');var _img=iw.create('img');var pack=new IWLanguagePack();pack.addLanguage(new IWLanguage('de',iwconst.LOCAL_APP_URL + 'lang/IWBirdsViewControl.lang.de'));pack.addLanguage(new IWLanguage('en',iwconst.LOCAL_APP_URL + 'lang/IWBirdsViewControl.lang.en'));pack.addLanguage(new IWLanguage('es',iwconst.LOCAL_APP_URL + 'lang/IWBirdsViewControl.lang.es'));pack.addLanguage(new IWLanguage('tr',iwconst.LOCAL_APP_URL + 'lang/IWBirdsViewControl.lang.tr'));pack.addLanguage(new IWLanguage('fr',iwconst.LOCAL_APP_URL + 'lang/IWBirdsViewControl.lang.fr'));pack.addLanguage(new IWLanguage('it',iwconst.LOCAL_APP_URL + 'lang/IWBirdsViewControl.lang.it'));IWMultiLanguageSupport.call(this,map,pack);IWEventManager.addListener(this,'afterlanguagepackloaded',function(event){_areaUp.alt=_areaUp.title=event.language.get('NORTH');_areaLeft.alt=_areaLeft.title=event.language.get('WEST');_areaRight.alt=_areaRight.title=event.language.get('EAST');_areaDown.alt=_areaDown.title=event.language.get('SOUTH');}
);this.afterAppend=function(){buildGUI();changeVisibility();};this.toString=function(){return '[IWBirdsViewControl]';};function changeDir(iDirection){var mapType=map.getOptions().getMapTypeByName('birdsview');switch(iDirection){case IWBirdsViewControl.EAST:mapType.setRequestParameters('&direction=E');_img.src=iwconst.GLOBAL_APP_URL + 'img/controls/birdsview/bv_east.png';break;case IWBirdsViewControl.WEST:mapType.setRequestParameters('&direction=W');_img.src=iwconst.GLOBAL_APP_URL + 'img/controls/birdsview/bv_west.png';break;case IWBirdsViewControl.NORTH:mapType.setRequestParameters('&direction=N');_img.src=iwconst.GLOBAL_APP_URL + 'img/controls/birdsview/bv_north.png';break;case IWBirdsViewControl.SOUTH:mapType.setRequestParameters('&direction=S');_img.src=iwconst.GLOBAL_APP_URL + 'img/controls/birdsview/bv_south.png';break;}
map.setMapType(mapType);}
function changeVisibility(){var mapType=map.getCurrentMapType();self.setVisible(mapType.getName()=='birdsview');}
function buildGUI(){var container=self.getContainer();container.id='IWBirdsViewControl';container.style.width='60px';container.style.height='60px';iw.append(container,_img);_img.src=iwconst.GLOBAL_APP_URL + 'img/controls/birdsview/bv_north.png';_img.border='0';_img.useMap='#mapBirdsView';var mapBirdsView=iw.create('map');iw.append(container,mapBirdsView);mapBirdsView.id='mapBirdsView';mapBirdsView.name='mapBirdsView';iw.append(mapBirdsView,_areaUp);_areaUp.shape='rect';_areaUp.coords='18,4,38,18';IWEventManager.addDOMListener(_areaUp,'onmousedown',function(event){changeDir(IWBirdsViewControl.NORTH);});iw.append(mapBirdsView,_areaLeft);_areaLeft.shape='rect';_areaLeft.coords='4,18,18,38';IWEventManager.addDOMListener(_areaLeft,'onmousedown',function(event){changeDir(IWBirdsViewControl.WEST);});iw.append(mapBirdsView,_areaRight);_areaRight.shape='rect';_areaRight.coords='38,18,50,38';IWEventManager.addDOMListener(_areaRight,'onmousedown',function(event){changeDir(IWBirdsViewControl.EAST);});iw.append(mapBirdsView,_areaDown);_areaDown.shape='rect';_areaDown.coords='18,38,38,50';IWEventManager.addDOMListener(_areaDown,'onmousedown',function(event){changeDir(IWBirdsViewControl.SOUTH);});}
IWEventManager.addListener(map,'aftermaptypechanged',changeVisibility);this.loadLanguagePack(map.getOptions().getLanguage());}
IWBirdsViewControl.NORTH=1;IWBirdsViewControl.WEST=2;IWBirdsViewControl.EAST=3;IWBirdsViewControl.SOUTH=4;function IWControl(map,name){IWMapElement.call(this,iw.search(map.getContainer(),'divControl'));this.isControl=function(){return true;};this.isRedrawable=function(){return _redrawable;};this.setRedrawable=function(bool){_redrawable=bool;};this.getPadding=function(){return _padding;};this.setPadding=function(padding){_padding=padding;};this.setFirstOrientation=function(alignment){_firstOrientation=alignment;};this.getFirstOrientation=function(){return _firstOrientation;};this.setSecondOrientation=function(alignment){_secondOrientation=alignment;};this.getSecondOrientation=function(){return _secondOrientation;};this.getName=function(){return _name;};this.toString=function(){return '[IWControl]' +'Name:' + _name + ',' +'Padding:' + _padding + ',' +'Orientation:' + _firstOrientation + '/' + _secondOrientation + ',' +'Visible:' + this.isVisible()+ ',' +'Draggable:' + this.isDraggable()+ ',' +'Drag button:' + this.getDragButton()+ ',' +'Drag container:' + this.getDraggableContainer()+ ',' +'Allow dragging outside parent:' + this.isDraggingOutsideParentAllowed()+ ',' +'Printable:' + this.isPrintable()+ ',' +'Redrawable:' + this.isRedrawable();};var _name=name;var _padding=new IWSize(0,0);var _firstOrientation=IWAlignment.CENTER;var _secondOrientation=IWAlignment.CENTER;var _redrawable=true;IWDraggable.call(this,this.getContainer(),iw.search(map.getContainer(),'divZoomingAndDragging'));this.setPrintable(false);}
function IWCopyrightControl(map){IWControl.call(this,map,'IWCopyrightControl');var _map=map;var _container=this.getContainer();var _self=this;var _copyright='';var _logger=log4javascript.getLogger('IWCopyrightControl');this.getCopyrightText=function(){return _copyright;};this.afterAppend=function(){buildGUI();updateCopyright();};function buildGUI(){_logger.debug("creating GUI for IWCopyrightControl");_container.id='IWCopyrightControl';_container.className='IWCopyrightControl';iw.backgroundImage(_container,iwconst.GLOBAL_APP_URL + 'img/symbols/background_white_transparency.png');var div=iw.create('div');iw.append(_container,div);div.style.position='absolute';div.style.top='0px';div.style.left='2px';var span=iw.create('span');iw.append(div,span);span.style.whiteSpace='nowrap';span.style.verticalAlign='middle';}
function updateCopyright(){var mapType=_map.getCurrentMapType();if(mapType !=null){var newCopyright='&#169;&nbsp;' + new Date().getFullYear()+ '&nbsp;<a href="http://www.infoware.de" target="_blank">infoware</a>&nbsp;' + mapType.getCopyright();var userCopyright=_map.getOptions().getApplicationCopyright();if(userCopyright !=null&&userCopyright.length>0){newCopyright=newCopyright + userCopyright;}
if(_copyright !=newCopyright){_logger.info('setting copyright to ' + newCopyright);_copyright=newCopyright;var span=_container.lastChild.firstChild;span.innerHTML=_copyright;var width=0;if(_container.style.width){width=parseInt(_container.style.width);}
_container.style.width=span.offsetWidth + 5 + 'px';_container.style.height=span.offsetHeight + 1 + 'px';_container.style.left=(parseInt(_container.style.left)+ width - span.offsetWidth - 5)+ 'px';_map.getLayoutManager().redraw();}
}
}
this.setPrintable(true);IWEventManager.addListener(_map,'aftermaptypechanged',updateCopyright);IWEventManager.addListener(_map,'aftercopyrightchanged',updateCopyright);}
function IWLayerSelectionControl(map){IWControl.call(this,map,'IWLayerSelectionControl');var _translations=new Object();_translations['de']=new Object();_translations['en']=new Object();_translations['de']['DISPLAYED']='Dargestellte Statistik';_translations['de']['NONE']='Statistik ausblenden';_translations['de']['LEGEND']='Legende';_translations['de']['QUERY_MODE']='Abfragemodus';_translations['de']['POPULATION']='Einwohnerzahl';_translations['en']['DISPLAYED']='Displayed statistic';_translations['en']['NONE']='No statistic';_translations['en']['LEGEND']='Legend';_translations['en']['QUERY_MODE']='Query mode';_translations['en']['POPULATION']='Population';var _sLanguage=map.getOptions().getLanguage();if(!_translations[_sLanguage])_sLanguage='en';var _self=this;var _map=map;var _container=this.getContainer();var _layers=new Array(4);var _currentLayer=null;var _clickHandler=null;var _colors=['#ffff00','#ffdf00','#ffbf00','#ff9f00','#ff8000','#ff6000','#ff3900','#ff0000'];_container.id='layerSelectionDiv';function buildGUI(){var linkCSS=iw.create('link');iw.tag('head')[0].appendChild(linkCSS);linkCSS.type='text/css';linkCSS.rel='stylesheet';linkCSS.href=iwconst.GLOBAL_APP_URL + 'css/layerSelection.css';var form=document.createElement('form');form.id='formLayerSelection';_container.appendChild(form);var header=document.createElement('h1');header.appendChild(document.createTextNode(_translations[_sLanguage]['DISPLAYED']));form.appendChild(header);var catWithSubs=document.createElement('div');catWithSubs.className='category';var title=document.createElement('span');title.className='header';title.appendChild(document.createTextNode(_translations[_sLanguage]['POPULATION']));catWithSubs.appendChild(title);catWithSubs.appendChild(document.createElement('br'));for(var i=0;i<6;i++){var input=makeInputRadio();input.value=_layers[i].getName();var closure=new layerClickedClosure(input);IWEventManager.addDOMListener(input,'onclick',closure);var subCat=document.createElement('div');subCat.className='subcategory';subCat.appendChild(input);subCat.appendChild(document.createTextNode(_layers[i].getName()));catWithSubs.appendChild(subCat);}
form.appendChild(catWithSubs);for(var i=6;i<_layers.length;i++){var categories=document.createElement('div');categories.className='category';var inputDiv=document.createElement('div');inputDiv.className='radio';var input=makeInputRadio();inputDiv.appendChild(input);input.value=_layers[i].getName();var closure=new layerClickedClosure(input);IWEventManager.addDOMListener(input,'onclick',closure);var title=document.createElement('div');title.className='header';title.appendChild(document.createTextNode(_layers[i].getName()));categories.appendChild(inputDiv);categories.appendChild(title);form.appendChild(categories);}
var divAus=document.createElement('div');divAus.className='category';var radioDiv=document.createElement('div');radioDiv.className='radio';var input=makeInputRadio();input.value='Karte ausblenden';input.selected='selected';radioDiv.appendChild(input);var title=document.createElement('div');title.className='header';title.appendChild(document.createTextNode(_translations[_sLanguage]['NONE']));divAus.appendChild(radioDiv);divAus.appendChild(title);form.appendChild(divAus);var closure=new layerClickedClosure(input);IWEventManager.addDOMListener(input,'onclick',closure);var divShowStatistic=document.createElement('div');form.appendChild(divShowStatistic);divShowStatistic.id='divShowStatistic';divShowStatistic.style.display='none';divShowStatistic.appendChild(document.createElement('br'));var header2=document.createElement('h1');divShowStatistic.appendChild(header2);header2.appendChild(document.createTextNode(_translations[_sLanguage]['LEGEND']));var divLegend=document.createElement('div');divLegend.className='category';divShowStatistic.appendChild(divLegend);var table=document.createElement('table');divLegend.appendChild(table);table.id='tableLegend';table.style.padding='5px;'
var tbody=document.createElement('tbody');table.appendChild(tbody);for(var i=0;i<_colors.length;i++){var tr=document.createElement('tr');tbody.appendChild(tr);var td1=document.createElement('td');tr.appendChild(td1);var div=document.createElement('div');td1.appendChild(div);div.style.width='25px';div.style.height='16px';div.style.border='1px solid black';div.style.backgroundColor=_colors[i];var td2=document.createElement('td');tr.appendChild(td2);td2.appendChild(document.createTextNode(''));}
var input;try{input=document.createElement('<input name="queryPoint" type="checkbox">');}
catch(exception){input=document.createElement('input');input.name='queryPoint';input.type='checkbox';}
divShowStatistic.appendChild(input);var noStat=document.createElement('div');noStat.className='category';var checkDiv=document.createElement('div');checkDiv.className='radio';checkDiv.appendChild(input);var title=document.createElement('div');title.className='header';title.appendChild(document.createTextNode(_translations[_sLanguage]['QUERY_MODE']));noStat.appendChild(checkDiv);noStat.appendChild(title);divShowStatistic.appendChild(noStat);IWEventManager.addDOMListener(input,'onclick',function(event){if(!event)event=window.event;var target=event.target;if(!target)target=event.srcElement;if(target.nodeType==3)target=target.parentNode;if(target.checked){_clickHandler=IWEventManager.addListener(_map,'onclick',function(mouseEvent){queryCoord(mouseEvent.position,_currentLayer.getLayer(),_currentLayer.getShape());}.iwclosure(this));}
else
{IWEventManager.removeListener(_clickHandler);}
});}
function layerClickedClosure(refButton){var _button=refButton;return function(){_currentLayer=null;for(var i=0;i<_layers.length;i++){if(_layers[i].getName()==_button.value)_currentLayer=_layers[i];removeParam('layer' + _layers[i].getLayer());}
updateLegend(_currentLayer);if(_currentLayer !=null)szExtraUrlParm +='&layer' + _currentLayer.getLayer()+ '=' + _currentLayer.getShape();_map.setCenter(_map.getCenter());};}
function updateLegend(layer){var divShowStatistic=document.getElementById('divShowStatistic');if(layer==null){divShowStatistic.style.display='none';}
else
{divShowStatistic.style.display='block';var table=document.getElementById('tableLegend');var values=layer.getLegend().split(';');for(var i=0;i<table.firstChild.childNodes.length;i++){var secondTableData=table.firstChild.childNodes[i].lastChild;var newNode=document.createTextNode(values[i]+ ' - ' + values[i+1]);secondTableData.replaceChild(newNode,secondTableData.firstChild);}
}
IWEventManager.trigger(_self,'onredraw',null);}
function queryCoord(position,layer,shape){var coord=_map.fromPixelToCoordinate(position);var xmlHttp=new IWXMLHttpRequest();if(xmlHttp==null){alert("Browser does not support HTTP Request")
return;}
var sURL=iwconst.LOCAL_APP_URL
+ "servlet/FrontController"
+ "?cmd=getLocationStatistics"
+ '&VNR=' + IWAccessFilter.getCNR()
+ '&PNR=' + IWAccessFilter.getPNR()
+ "&app=ms"
+ "&layer=" + layer
+ "&shape=" + shape
+ "&x=" + coord.getX()
+ "&y=" + coord.getY();try{xmlHttp.open("GET",sURL,true);xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4){if(xmlHttp.status==200){var xmlDocument=IWXMLHelper.parse(xmlHttp.responseText);var sName=xmlDocument.getElementsByTagName('G_NAME')[0].firstChild.nodeValue;var sKGS=xmlDocument.getElementsByTagName('KGS22')[0].firstChild.nodeValue;var sEW=xmlDocument.getElementsByTagName('EW')[0].firstChild.nodeValue;var sEW0014=parseFloat(xmlDocument.getElementsByTagName('EWp0014')[0].firstChild.nodeValue).toFixed(1);var sEW1524=parseFloat(xmlDocument.getElementsByTagName('EWp1524')[0].firstChild.nodeValue).toFixed(1);var sEW2549=parseFloat(xmlDocument.getElementsByTagName('EWp2549')[0].firstChild.nodeValue).toFixed(1);var sEW5064=parseFloat(xmlDocument.getElementsByTagName('EWp5064')[0].firstChild.nodeValue).toFixed(1);var sEW65=parseFloat(xmlDocument.getElementsByTagName('EWp65')[0].firstChild.nodeValue).toFixed(1);var coordShort=new IWCoordinate(coord.getX().toFixed(0),coord.getY().toFixed(0));var sInfo='Koordinate:&nbsp;' + coordShort.toString()+ '<br>'
+ 'Ort:&nbsp;' + sName + '<br>'
+ 'KGS22:&nbsp;' + sKGS + '<br><br>'
+ 'Einwohner:&nbsp;' + sEW + '<br>'
+ 'Anteil 0 bis 14:&nbsp;' + sEW0014 + '%<br>'
+ 'Anteil 15 bis 24:&nbsp;' + sEW1524 + '%<br>'
+ 'Anteil 25 bis 49:&nbsp;' + sEW2549 + '%<br>'
+ 'Anteil 50 bis 64:&nbsp;' + sEW5064 + '%<br>'
+ 'Anteil \u00FCber 65:&nbsp;' + sEW65 + '%';var list=globalPOIList.getPOIList();for(var i=0;i<list.length;i++){var poi=list[i];var divPopup=document.getElementById("divPopup_" + poi);if(divPopup !=null)divPopup.parentNode.removeChild(divPopup);}
globalPOIList.clear();globalPOIList.addPOI('1_Window');var popup=new Sprechblase_Schatten();popup.activateMapSlide=true;popup.setContent(new StatisticsContent(coord,sInfo));popup.show(position.getX(),position.getY());}
else if(xmlHttp.status==401){alert(xmlHttp.statusText);}
else
{alert("Unable to query data from server");}
}
}.iwclosure(this);xmlHttp.send(null);}
catch(exception){alert("Exception:" + exception);}
}
function removeParam(parameter){var startIndex=szExtraUrlParm.indexOf('&' + parameter);if(startIndex>-1){var endIndex=szExtraUrlParm.indexOf('&',startIndex + 1);if(endIndex>-1)szExtraUrlParm=szExtraUrlParm.substring(0,startIndex)+ szExtraUrlParm.substring(endIndex);else
szExtraUrlParm=szExtraUrlParm.substring(0,startIndex);}
}
function setLanguage(event){alert(event.language);if(_translations[event.language]){_sLanguage=event.language;var text1=document.getElementById('headerDisplayedStatistics').firstChild;text1.data=_translations[_sLanguage]['DISPLAYED'];var text2=document.getElementById('formLayerSelection').children[1];text2.data=_translations[_sLanguage]['NONE'];var text3=document.getElementById('headerLegend').firstChild;text3.data=_translations[_sLanguage]['LEGEND'];}
}
function makeInputRadio(){var input;try{input=document.createElement('<input name="layer" type="radio">');}
catch(exception){input=document.createElement('input');input.name='layer';input.type='radio';}
return input;}
_layers[0]=new IWStatisticLayer('insgesamt','EW','wq06gk300_lcc_europe','0;347;637;921;1182;1465;1839;2429;3767');_layers[1]=new IWStatisticLayer('0- bis 14-j\u00E4hrig','EWp0014','wq06gk300_lcc_europe','0%;4,3%;9,8%;12,4%;14,8%;17,4%;20,4%;25,5%;45,6%');_layers[2]=new IWStatisticLayer('15- bis 24-j\u00E4hrig','EWp1524','wq06gk300_lcc_europe','0,0%;4,0%;8,3%;9,6%;10,7%;11,8%;13,2%;15,3%;60,0%');_layers[3]=new IWStatisticLayer('25- bis 49-j\u00E4hrig','EWp2549','wq06gk300_lcc_europe','0,0%;14,4%;28,6%;32,6%;35,6%;38,5%;42,2%;47,3%;72,4%');_layers[4]=new IWStatisticLayer('50- bis 64-j\u00E4hrig','EWp5064','wq06gk300_lcc_europe','0,0%;13,2%;15,4%;17,1%;18,5%;19,9%;21,6%;24,0%;40,0%');_layers[5]=new IWStatisticLayer('\u00DCber 65-j\u00E4hrig','EWp65','wq06gk300_lcc_europe','0,0%;6.7%;14,4%;17,3%;19,9%;22,6%;25,9%;31,4%;57,3%');_layers[6]=new IWStatisticLayer('Kaufkraft pro Einwohner in Euro','KK_EW','wq06gk300_lcc_europe','0;14859;16294;17554;18980;20667;23059;27296;55025');_layers[7]=new IWStatisticLayer('Firmen pro kmē','FZ_QKM','wq06gk300_lcc_europe','0;1,5;3,1;7,0;17,6;47,0;106,2;248,5;4711,8');buildGUI();IWEventManager.trigger(_self,'onredraw',null);IWEventManager.addListener(_map,'afterlanguagechanged',setLanguage);}
function IWStatisticLayer(name,layer,shape,legend){var _name=name;var _layer=layer;var _shape=shape;var _legend=legend;this.getName=function(){return _name;};this.getLayer=function(){return _layer;};this.getShape=function(){return _shape;};this.getLegend=function(){return _legend;};this.toString=function(){return 'IWStatisticLayer:' + name;};}
function IWMeasuringControl(map){IWControl.call(this,map,'IWMeasuringControl');var self=this;var hasGUI=false;var divMeasure=iw.create('div');var imgCapture=iw.create('img');var divDraw=iw.create('div');var infoWindow=new IWMeasuringInfoWindowControl(map,this);var logger=log4javascript.getLogger('IWMeasuringControl');var renderer=new IWGraphics(divDraw);var mouseAdapter=new IWMouseAdapter();var lastSegment=null;var afterDistanceChangedListener=null;this.afterAppend=function(){buildGUI(this.getContainer());};this.activate=function(){divMeasure.style.display='block';if(!infoWindow.isVisible()){infoWindow.open();}
};this.deactivate=function(){divMeasure.style.display='none';if(infoWindow.isVisible()){infoWindow.close();}
};this.getRenderer=function(){return renderer;};this.getInfoWindow=function(){return infoWindow;};this.reset=function(){logger.info('Calling reset');var segment=lastSegment;while(segment !=null){var tmp=segment;segment=segment.getPreviousSegment();tmp.destroy();tmp=null;}
segment=null;lastSegment=null;infoWindow.setDistance(0);};this.addPointBetween=function(previousSegment,nextSegment,coordinate){};this.addPoint=function(coordinate){logger.info('Calling addPoint with coordinate x:' + coordinate.getX()+ ',y:' + coordinate.getY());var newSegment=new IWMeasureSegment(map,self,coordinate);if(lastSegment !=null){lastSegment.setNextSegment(newSegment);newSegment.setPreviousSegment(lastSegment);}
lastSegment=newSegment;if(afterDistanceChangedListener !=null){logger.info("remove start " + afterDistanceChangedListener);afterDistanceChangedListener=IWEventManager.removeListener(afterDistanceChangedListener);logger.info("remove ende " + afterDistanceChangedListener);}
afterDistanceChangedListener=IWEventManager.addListener(lastSegment,'afterdistancechanged',function(){infoWindow.setDistance(lastSegment.getDistance());}
);infoWindow.setDistance(lastSegment.getDistance());};function buildGUI(container){self.setId('IWMeasuringControl');container.style.width='0px';container.style.height='0px';infoWindow.getContainer().style.position='absolute';infoWindow.getContainer().style.left='20px';infoWindow.getContainer().style.top='20px';infoWindow.getContainer().style.zIndex='150';var parent=self.getParent();parent.appendChild(infoWindow.getContainer());divMeasure.id='measuringDiv';divMeasure.style.position='absolute';divMeasure.style.top='0px';divMeasure.style.left='0px';divMeasure.style.display='none';parent.insertBefore(divMeasure,parent.lastChild.nextSibling);imgCapture.id='captureImg';imgCapture.src=iwconst.GLOBAL_APP_URL + 'img/symbols/blank.gif';imgCapture.style.position='absolute';imgCapture.style.top='0px';imgCapture.style.left='0px';imgCapture.style.cursor='crosshair';divMeasure.appendChild(imgCapture);divDraw.id='drawDiv';divDraw.style.position='absolute';divDraw.style.top='0px';divDraw.style.left='0px';divDraw.style.cursor='crosshair';divMeasure.appendChild(divDraw);setSize(map.getOptions().getSize());}
function setSize(size){divMeasure.style.width=size.getWidth()+ 'px';divMeasure.style.height=size.getHeight()+ 'px';imgCapture.style.width=size.getWidth()+ 'px';imgCapture.style.height=size.getHeight()+ 'px';divDraw.style.width=size.getWidth()+ 'px';divDraw.style.height=size.getHeight()+ 'px';}
IWEventManager.addListener(map,'afterresized',function(event){setSize(event.newSize);}
);IWEventManager.addDOMListener(divMeasure,'onmousedown',function(event){noPropagation(event);}
);IWEventManager.addDOMListener(divMeasure,'onmouseup',function(event){noPropagation(event);}
);IWEventManager.addDOMListener(divMeasure,'ondblclick',function(event){noPropagation(event);}
);IWEventManager.addDOMListener(divMeasure,'onclick',function(event){noPropagation(event);var mouseEvent=mouseAdapter.toMouseEvent(event,divMeasure);var coordinate=map.getCurrentMapType().getProjection().pixelToMeter(mouseEvent.position);self.addPoint(coordinate);}
);IWEventManager.addListener(infoWindow,'afterbuttonresetpressed',this.reset);IWEventManager.addListener(infoWindow,'afterclose',this.deactivate);}
function IWMeasureSegment(map,measureControl,coordinate){var self=this;var _measureControl=measureControl;var mouseAdapter=new IWMouseAdapter();var renderer=_measureControl.getRenderer();var _coordinate=coordinate;var _parent=renderer.getContainer();var _previousSegment=null;var _nextSegment=null;var _point=null;var _pointOnMouseDownListener=null;var _pointOnMoveListener=null;var _pointOnMouseUpListener=null;var _pointOnMouseOverListener=null;var _pointOnMouseOutListener=null;var _pointOnClickListener=null;var _line=null;var _lineOnClickListener=null;var _isDragged=false;var _distance=0;var COLOR_NORMAL='#0033FF';var COLOR_START='#660000';var COLOR_END='#FFFFFF';this.getPosition=function(){return map.getCurrentMapType().getProjection().meterToPixel(_coordinate);};this.getPreviousSegment=function(){return _previousSegment;};this.setPreviousSegment=function(segment){var oldSeg=_previousSegment;_previousSegment=segment;if((oldSeg !=null&&_previousSegment==null)||(oldSeg==null&&_previousSegment !=null))
{createPoint();}
if(_previousSegment !=null){if(_line==null){createLine();}
renderer.move(_line,_previousSegment.getPosition(),self.getPosition());}
else
{if(_line !=null){deleteLine();}
}
self.calculateDistance();}
this.setNextSegment=function(segment){var oldSeg=_nextSegment;_nextSegment=segment;if((oldSeg !=null&&_nextSegment==null)||(oldSeg==null&&_nextSegment !=null))
{createPoint();}
if(_nextSegment==null){_measureControl.setLastSegment(this);self.calculateDistance();}
}
this.moveTailOfLine=function(position){if(_line !=null){renderer.move(_line,position,self.getPosition());}
};this.destroy=function(){IWEventManager.clearInstanceListeners(self);deletePoint();deleteLine();_point=null;_previousSegment=null;_nextSegment=null;};this.getDistance=function(){return _distance;};this.getCoordinate=function(){return _coordinate;};this.calculateDistance=function(){if(_previousSegment==null){_distance=0;}
else
{_distance=_previousSegment.getDistance()+ _previousSegment.getCoordinate().distanceFrom(_coordinate);}
if(_nextSegment !=null){_nextSegment.calculateDistance();}
else
{this.triggerAfterDistanceChanged();}
};this.toString=function(){return '[IWMeasureSegment]';};function createLine(){_line=renderer.drawLine(_previousSegment.getPosition(),self.getPosition(),4,COLOR_NORMAL);_line.style.opacity='0.75';_line.style.filter='alpha(opacity=75)';_line.style.cursor='pointer';renderer.moveToBottom(_line);_lineOnMouseClickListener=IWEventManager.addDOMListener(_line,'onclick',function(e){noPropagation(e);var mouseEvent=mouseAdapter.toMouseEvent(e,_parent);insertNewSegment(mouseEvent.position);});}
function deleteLine(){if(_line !=null){IWEventManager.removeListener(_lineOnClickListener);renderer.removeElement(_line);_line=null;}
}
function createPoint(){deletePoint();if(_previousSegment==null){_point=renderer.drawEllipse(self.getPosition(),new IWSize(8,8),1,COLOR_NORMAL,COLOR_START);}
else if(_nextSegment==null){_point=renderer.drawEllipse(self.getPosition(),new IWSize(8,8),1,COLOR_NORMAL,COLOR_END);}
else
{_point=renderer.drawEllipse(self.getPosition(),new IWSize(6,6),1,COLOR_NORMAL,COLOR_NORMAL);}
_point.style.cursor='pointer';_pointOnMouseDownListener=IWEventManager.addDOMListener(_point,'onmousedown',function(e){noPropagation(e);var mouseEvent=mouseAdapter.toMouseEvent(e,_parent);if(mouseEvent.button==IWButton.RIGHT){if(_isDragged){stopDragging();}
removeSegment();}
else
{if(_isDragged){stopDragging();}
else
{_point.style.cursor='move';startDragging();}
}
});_pointOnClickListener=IWEventManager.addDOMListener(_point,'onclick',function(e){noPropagation(e);stopDragging();});if(_previousSegment !=null&&_nextSegment !=null){_pointOnMouseOverListener=IWEventManager.addDOMListener(_point,'onmouseover',function(e){if(!_isDragged){var formatter=new IWDistanceFormatter(self.getDistance());map.openTooltip(_coordinate,formatter.getDistance()+ '&nbsp;' + formatter.getUnit());}
});_pointOnMouseOutListener=IWEventManager.addDOMListener(_point,'onmouseout',function(e){map.removeTooltip();});}
}
function deletePoint(){if(_point !=null){renderer.removeElement(_point);}
IWEventManager.removeListener(_pointOnMouseDownListener);IWEventManager.removeListener(_pointOnMoveListener);IWEventManager.removeListener(_pointOnMouseUpListener);IWEventManager.removeListener(_pointOnMouseOverListener);IWEventManager.removeListener(_pointOnMouseOutListener);IWEventManager.removeListener(_pointOnClickListener);_pointOnMouseDownListener=null;_pointOnMoveListener=null;_pointOnMouseUpListener=null;_pointOnMouseOverListener=null;_pointOnMouseOutListener=null;_pointOnClickListener=null;}
function insertNewSegment(position){var coordinate=map.getCurrentMapType().getProjection().pixelToMeter(position);var newSegment=new IWMeasureSegment(map,_measureControl,coordinate);newSegment.setPreviousSegment(_previousSegment);newSegment.setNextSegment(self);_previousSegment.setNextSegment(newSegment);self.setPreviousSegment(newSegment);}
function removeSegment(){map.removeTooltip();if(_previousSegment !=null){_previousSegment.setNextSegment(_nextSegment);}
if(_nextSegment !=null){_nextSegment.setPreviousSegment(_previousSegment);}
if(_previousSegment==null&&_nextSegment==null){_measureControl.setLastSegment(null);}
self.destroy();}
function startDragging(){_pointOnMoveListener=IWEventManager.addDOMListener(document,'onmousemove',function(e){noPropagation(e);map.removeTooltip();var mouseEvent=mouseAdapter.toMouseEvent(e,_parent);renderer.moveToTop(_point);renderer.move(_point,mouseEvent.position);if(_previousSegment !=null){renderer.move(_line,_previousSegment.getPosition(),mouseEvent.position);}
if(_nextSegment !=null){_nextSegment.moveTailOfLine(mouseEvent.position);}
_coordinate=map.getCurrentMapType().getProjection().pixelToMeter(mouseEvent.position);self.calculateDistance();_isDragged=true;});_pointOnMouseUpListener=IWEventManager.addDOMListener(_point,'onmouseup',function(e){noPropagation(e);if(_isDragged){stopDragging();}
});}
function stopDragging(){_point.style.cursor='pointer';IWEventManager.removeListener(_pointOnMouseUpListener);IWEventManager.removeListener(_pointOnMoveListener);_pointOnMouseUpListener=null;_pointOnMoveListener=null;_coordinate=map.getCurrentMapType().getProjection().pixelToMeter(renderer.getPosition(_point));renderer.move(_point,self.getPosition());self.calculateDistance();_isDragged=false;}
function hideSegment(e){_point.style.visibility='hidden';_point.style.display='none';if(_line !=null){_line.style.visibility='hidden';_line.style.display='none';}
}
function showSegment(e){renderer.move(_point,self.getPosition());if(_line !=null&&_previousSegment !=null){renderer.move(_line,_previousSegment.getPosition(),self.getPosition());_line.style.visibility='visible';_line.style.display='';}
_point.style.visibility='visible';_point.style.display='';}
this.triggerAfterDistanceChanged=function(){IWEventManager.trigger(this,'afterdistancechanged',null);};createPoint();IWEventManager.addDOMListener(map,'beforezoom',hideSegment);IWEventManager.addDOMListener(map,'afterzoom',showSegment);IWEventManager.addDOMListener(map,'beforemove',hideSegment);IWEventManager.addDOMListener(map,'aftermove',showSegment);IWEventManager.addDOMListener(map,'aftercentered',showSegment);IWEventManager.addDOMListener(map,'aftermaptypechanged',showSegment);IWEventManager.addDOMListener(map,'afterresized',showSegment);}
function IWMeasuringInfoWindowControl(map){IWWindowControl.call(this,map,'',new IWSize(150,70));var self=this;var divBody=iw.create('div');var hasGUI=false;var logger=log4javascript.getLogger('IWMeasuringInfoWindowControl');var pack=new IWLanguagePack();pack.addLanguage(new IWLanguage('de',iwconst.LOCAL_APP_URL + 'lang/IWMeasuringControl.lang.de'));pack.addLanguage(new IWLanguage('en',iwconst.LOCAL_APP_URL + 'lang/IWMeasuringControl.lang.en'));IWMultiLanguageSupport.call(this,map,pack);this.buildBody=function(container){logger.info('Calling buildBody');IWEventManager.addListener(this,'afterlanguagepackloaded',function(event){self.setTitle(event.language.get('TITLE'));if(hasGUI==false){buildGUI(container);hasGUI=true;}
}
);this.loadLanguagePack(map.getOptions().getLanguage());};this.setDistance=function(meter){var formatter=new IWDistanceFormatter(meter);divBody.innerHTML='<span style="font-size:30px;font-weight:bold;">' + formatter.getDistance()+ '</span>&nbsp;' +'<span style="font-size:16px;font-weight:bold;">' + formatter.getUnit()+ '</span>' +'<br><br>';};this.toString=function(){return '[IWMeasuringInfoWindowControl]';};this.triggerAfterButtonResetPressed=function(){IWEventManager.trigger(self,'afterbuttonresetpressed',null);};function buildGUI(container){divBody.style.position='absolute';divBody.style.top='0px';divBody.style.left='0px';divBody.style.width=self.getSize().getWidth()- 10 + 'px';divBody.align='right';iw.append(container,divBody);var buttonReset=iw.create('button');buttonReset.style.position='absolute';buttonReset.style.top=self.getSize().getHeight()-28 + 'px';buttonReset.style.left='20px';buttonReset.style.width=self.getSize().getWidth()- 40 + 'px';self.addLabelFor(new IWLabel('RESET',buttonReset,'innerHTML'));iw.append(container,buttonReset);IWEventManager.addDOMListener(buttonReset,'onclick',self.triggerAfterButtonResetPressed);};this.setRedrawable(false);this.close();this.setDistance(0);}
function IWNavigationControl(map){IWControl.call(this,map,'IWNavigationControl');var _map=map;var _container=this.getContainer();var _self=this;var _areaUp=iw.create('area');var _areaRight=iw.create('area');var _areaDown=iw.create('area');var _areaLeft=iw.create('area');var pack=new IWLanguagePack();pack.addLanguage(new IWLanguage('de',iwconst.LOCAL_APP_URL + 'lang/IWNavigationControl.lang.de'));pack.addLanguage(new IWLanguage('en',iwconst.LOCAL_APP_URL + 'lang/IWNavigationControl.lang.en'));pack.addLanguage(new IWLanguage('es',iwconst.LOCAL_APP_URL + 'lang/IWNavigationControl.lang.es'));pack.addLanguage(new IWLanguage('tr',iwconst.LOCAL_APP_URL + 'lang/IWNavigationControl.lang.tr'));pack.addLanguage(new IWLanguage('fr',iwconst.LOCAL_APP_URL + 'lang/IWNavigationControl.lang.fr'));pack.addLanguage(new IWLanguage('it',iwconst.LOCAL_APP_URL + 'lang/IWNavigationControl.lang.it'));IWMultiLanguageSupport.call(this,map,pack);this.addLabelFor(new IWLabel('UP',_areaUp,'title'));this.addLabelFor(new IWLabel('UP',_areaUp,'alt'));this.addLabelFor(new IWLabel('LEFT',_areaLeft,'title'));this.addLabelFor(new IWLabel('LEFT',_areaLeft,'alt'));this.addLabelFor(new IWLabel('RIGHT',_areaRight,'title'));this.addLabelFor(new IWLabel('RIGHT',_areaRight,'alt'));this.addLabelFor(new IWLabel('DOWN',_areaDown,'title'));this.addLabelFor(new IWLabel('DOWN',_areaDown,'alt'));this.afterAppend=function(){buildGUI();};this.toString=function(){return '[IWNavigationControl]';};function buildGUI(){var imgNaviCross=iw.create('img');iw.append(_container,imgNaviCross);imgNaviCross.onload=function(){correctPNG(this);}.iwclosure(imgNaviCross);imgNaviCross.src=iwconst.GLOBAL_APP_URL + 'img/controls/navigation/navicross.png';imgNaviCross.width='58';imgNaviCross.height='55';imgNaviCross.border='0';imgNaviCross.useMap='#mapNaviCross';var mapNaviCross=iw.create('map');iw.append(_container,mapNaviCross);mapNaviCross.id='mapNaviCross';mapNaviCross.name='mapNaviCross';iw.append(mapNaviCross,_areaUp);_areaUp.shape='rect';_areaUp.coords='18,4,38,18';_areaUp.style.cursor='pointer';IWEventManager.addDOMListener(_areaUp,'onmousedown',function(event){var offset=new IWPoint(0,Math.floor(this.getOptions().getSize().getHeight()/2));this.panBy(offset);}.iwclosure(_map)
);iw.append(mapNaviCross,_areaLeft);_areaLeft.shape='rect';_areaLeft.coords='4,18,18,38';_areaLeft.style.cursor='pointer';IWEventManager.addDOMListener(_areaLeft,'onmousedown',function(event){var offset=new IWPoint(Math.floor(this.getOptions().getSize().getWidth()/2),0);this.panBy(offset);}.iwclosure(_map)
);iw.append(mapNaviCross,_areaRight);_areaRight.shape='rect';_areaRight.coords='38,18,50,38';_areaRight.style.cursor='pointer';IWEventManager.addDOMListener(_areaRight,'onmousedown',function(event){var offset=new IWPoint(-Math.floor(this.getOptions().getSize().getWidth()/2),0);this.panBy(offset);}.iwclosure(_map)
);iw.append(mapNaviCross,_areaDown);_areaDown.shape='rect';_areaDown.coords='18,38,38,50';_areaDown.style.cursor='pointer';IWEventManager.addDOMListener(_areaDown,'onmousedown',function(event){var offset=new IWPoint(0,-Math.floor(this.getOptions().getSize().getHeight()/2));this.panBy(offset);}.iwclosure(_map)
);}
_container.id='IWNavigationControl';_container.style.width='58px';_container.style.height='55px';this.loadLanguagePack(map.getOptions().getLanguage());}
function IWOverlaySelectionControl(map){IWWindowControl.call(this,map,'IWOverlaySelectionControl');var self=this;var treeview=null;var hasGUI=false;var divBody=iw.create('div');var pack=new IWLanguagePack();pack.addLanguage(new IWLanguage('de',iwconst.LOCAL_APP_URL + 'lang/IWOverlaySelectionControl.lang.de'));pack.addLanguage(new IWLanguage('en',iwconst.LOCAL_APP_URL + 'lang/IWOverlaySelectionControl.lang.en'));pack.addLanguage(new IWLanguage('es',iwconst.LOCAL_APP_URL + 'lang/IWOverlaySelectionControl.lang.es'));pack.addLanguage(new IWLanguage('tr',iwconst.LOCAL_APP_URL + 'lang/IWOverlaySelectionControl.lang.tr'));pack.addLanguage(new IWLanguage('fr',iwconst.LOCAL_APP_URL + 'lang/IWOverlaySelectionControl.lang.fr'));pack.addLanguage(new IWLanguage('it',iwconst.LOCAL_APP_URL + 'lang/IWOverlaySelectionControl.lang.it'));IWMultiLanguageSupport.call(this,map,pack);this.buildBody=function(container){IWEventManager.addListener(this,'afterlanguagepackloaded',function(event){self.setTitle(event.language.get('TITLE'));if(hasGUI==false){buildGUI1(container);hasGUI=true;}
}
);this.loadLanguagePack(map.getOptions().getLanguage());};this.getTreeView=function(){return treeview;};function buildGUI1(container){self.setId('IWOverlaySelectionControl');container.style.height='295px';container.style.width='220px';iw.append(container,divBody);}
this.setSize(new IWSize(220,270));this.setRedrawable(false);divBody.style.position='absolute';divBody.style.left='1px';divBody.style.height='270px';divBody.style.width='218px';divBody.style.top='0px';divBody.style.left='0px';divBody.style.overflowX='hidden';divBody.style.overflowY='auto';treeview=new IWTreeView(divBody);treeview.addNodes(map.getLayers());IWEventManager.addListener(treeview,'afternodeclicked',function(e){map.redraw();}
);}
function IWOverviewMapControl(map,mapTypeName,size){IWControl.call(this,map,'IWOverviewMapControl');var self=this;var _map=map;var _mapType=null;var _overviewMap=null;var _dragBoxControl=null;var _zoomStep=4;var _collapsible=false;var _collapsed=false;var _orientation=IWAlignment.BOTTOM + IWAlignment.RIGHT;var _size=(typeof size !='undefined' ? size:new IWSize(115,115));var _container=this.getContainer();var _buttonDiv=iw.create('div');var _img=iw.create('img');this.getSize=function(){return _size;};this.getMap=function(){return _map;};this.setZoomStep=function(zoomStep){_zoomStep=zoomStep;};this.getZoomStep=function(){return _zoomStep;};this.afterAppend=function(){buildGUI();};this.getOverviewMap=function(){return _overviewMap;};this.setCollapsible=function(collapsible){if(collapsible){_buttonDiv.style.visibility='visible';}
else
{_buttonDiv.style.visibility='hidden';}
};this.isCollapsible=function(){return(_buttonDiv.style.visibility=='visible');};this.isCollapsed=function(){return _collapsed;};this.collapse=function(){_container.style.width='11px';_container.style.height='11px';_collapsed=true;};this.expand=function(){_container.style.width=_size.getWidth()+ 'px';_container.style.height=_size.getHeight()+ 'px';_collapsed=false;};this.setCollapsibleButtonOrientation=function(orientation){_orientation=orientation;};this.getCollapsibleButtonOrientation=function(){return _orientation;};function buildGUI(){_container.id='IWOverviewMapControl';_container.className='iwoverviewmapcontrol';_container.style.overflow='hidden';_overviewMap=new IWMap(_container);iw.search(_overviewMap.getContainer(),'IWCopyrightControl').style.display='none';var options=_overviewMap.getOptions();options.setLeftMouseAction(IWMapOptions.CONTROL_NONE);options.setRightMouseAction(IWMapOptions.CONTROL_NONE);options.setDoubleClickAction(IWMapOptions.CONTROL_NONE);options.setMouseWheelAction(IWMapOptions.CONTROL_NONE);IWEventManager.addListener(_overviewMap,'afterinitialized',function(e){_dragBoxControl=new IWOverviewDragBoxControl(self);_overviewMap.getLayoutManager().getLayer(0).addControl(_dragBoxControl,IWAlignment.CENTER,IWAlignment.CENTER);}
);iw.append(_container,_buttonDiv);_buttonDiv.className='iwoverviewmap_collapsiblebutton';_buttonDiv.style.visibility='hidden';IWEventManager.addDOMListener(_img,'onclick',changeVisibility);iw.append(_buttonDiv,_img);_img.src=iwconst.GLOBAL_APP_URL + 'img/controls/overview/north_west.gif';_img.title='collapse';_mapType=_overviewMap.getOptions().getMapTypeByName(mapTypeName);_overviewMap.setCenter(_map.getCenter(),findZoomLevel(_map.getZoom()),_mapType);}
function findZoomLevel(zoomlevel){if(zoomlevel + _zoomStep<=_mapType.getMinLevel()){return zoomlevel + _zoomStep;}
else
{return _mapType.getMinLevel();}
}
function changeVisibility(){if(self.isCollapsed()){self.expand();}
else
{self.collapse();}
}
function onZoomHandler(event){_overviewMap.setCenter(event.newCenter,findZoomLevel(event.newZoomLevel),_mapType);_overviewMap.getLayoutManager().redraw();}
function afterCenteredHandler(event){var coordinate=event.coordinate;if(event.zoom !=event.lastZoom){_overviewMap.setCenter(coordinate,findZoomLevel(event.zoom));}
else
{_overviewMap.panTo(coordinate);}
}
with(_container.style){height=_size.getHeight()+ 'px';width=_size.getWidth()+ 'px';}
IWEventManager.addListener(_map,'onzoom',onZoomHandler);IWEventManager.addListener(_map,'aftercentered',afterCenteredHandler);}
function IWOverviewDragBoxControl(overviewMapControl){IWControl.call(this,overviewMapControl.getOverviewMap(),'IWOverviewDragBoxControl');var self=this;var _onMoveListener=null;var _afterMoveListener=null;var _container=this.getContainer();var _listener=null;var _map=overviewMapControl.getMap();var _overviewMap=overviewMapControl.getOverviewMap();var _mouseWheelAction=IWMapOptions.CONTROL_NONE;this.afterAppend=function(){buildGUI();};function buildGUI(){_container.id='IWOverviewDragBoxControl';_container.style.position='absolute';_container.className='iwoverviewdragboxcontrol_outer';var div=iw.create('div');div.style.position='absolute';div.style.top='0px';div.style.left='0px';div.className='iwoverviewdragboxcontrol_inner';iw.append(_container,div);iw.backgroundImage(div,iwconst.GLOBAL_APP_URL + 'img/symbols/background_white_transparency.png');updateBoxSize();_overviewMap.getLayoutManager().redraw();}
function updateBoxSize(){var size=calculateVisibleMapAreaSize();if(_overviewMap.getOptions().getSize().compareTo(size)==1){_container.style.width=size.getWidth()+ 'px';_container.style.height=size.getHeight()+ 'px';var div=_container.firstChild;div.style.width=size.getWidth()- 2 + 'px';div.style.height=size.getHeight()- 2 + 'px';self.setVisible(true);}
else
{self.setVisible(false);}
}
function calculateVisibleMapAreaSize(){var metersMapX=_map.getMapWidthInMeter();var metersMapY=_map.getMapHeightInMeter();var metersOverviewMapX=_overviewMap.getMapWidthInMeter();var metersOverviewMapY=_overviewMap.getMapHeightInMeter();var pixelsOverviewMapX=_overviewMap.getOptions().getSize().getWidth();var pixelsOverviewMapY=_overviewMap.getOptions().getSize().getHeight();var width=pixelsOverviewMapX/(metersOverviewMapX/metersMapX);var height=pixelsOverviewMapY/(metersOverviewMapY/metersMapY);var size=new IWSize(Math.round(width),Math.round(height));return size;}
function redraw(){updateBoxSize();_overviewMap.getLayoutManager().redraw();}
function beforeDraggedHandler(event){_mouseWheelAction=_map.getOptions().getMouseWheelAction();_map.getOptions().setMouseWheelAction(IWMapOptions.CONTROL_NONE);}
function afterDraggedHandler(event){var div=self.getContainer();var top=div.offsetTop;var left=div.offsetLeft;var width=div.offsetWidth;var height=div.offsetHeight;var center=new IWPoint(left +(width/2),top +(height/2));var coordinate=_overviewMap.getCurrentMapType().getProjection().pixelToMeter(center);coordinate=_map.getBoundsConstraintManager().adjustCenter(coordinate);var newCenter=_overviewMap.getCurrentMapType().getProjection().meterToPixel(coordinate);if(newCenter !=center){div.style.top=newCenter.getY()-(height/2)+ 'px';div.style.left=newCenter.getX()-(width/2)+ 'px';}
_map.getOptions().setMouseWheelAction(_mouseWheelAction);if(_listener !=null){IWEventManager.removeListener(_listener);listener=null;}
_listener=IWEventManager.addListener(_overviewMap,'onmove',function(e){div.style.top=parseInt(div.style.top)+ e.offset.getY()+ 'px';div.style.left=parseInt(div.style.left)+ e.offset.getX()+ 'px';});_map.panTo(coordinate);}
function afterMoveHandler(){if(_listener !=null){IWEventManager.removeListener(_listener);_listener=null;}
};function onMoveHandler(event){var coordinate=_map.getCenter();_overviewMap.panTo(coordinate);}
this.setDragButton(IWButton.LEFT + IWButton.RIGHT);this.allowDraggingOutsideParent(true);this.setDraggingBounds(_overviewMap.getOptions().getSize());this.setDraggable(true);IWEventManager.addListener(_map,'afterresized',redraw);IWEventManager.addListener(_map,'onmove',onMoveHandler);IWEventManager.addListener(_map,'afterzoom',redraw);IWEventManager.addListener(_overviewMap,'aftermove',afterMoveHandler);IWEventManager.addListener(this,'afterdragged',afterDraggedHandler);IWEventManager.addListener(this,'beforedragged',beforeDraggedHandler)
}
function IWPanelControl(map,size){function redraw(){_layoutManager.redraw();}
function setNewSize(event){if((_bounding_box.getWidth()<event.newSize.getWidth())||(_bounding_box.getHeight()<event.newSize.getHeight()))
{_bounding_box=new IWSize(event.newSize.getWidth(),event.newSize.getHeight());_background.style.width=event.newSize.getWidth()+ 'px';_background.style.height=event.newSize.getHeight()+ 'px';}
}
function recursiveSizesearch(o_size,div){var childNodes=div.childNodes;for(var i=0;i<childNodes.length;i++){if(childNodes.item(i).nodeName=='DIV')o_size=recursiveSizesearch(o_size,childNodes.item(i));var size=new IWSize(childNodes.item(i).offsetWidth,childNodes.item(i).offsetHeight);if((size.getWidth()>o_size.getWidth())&&(childNodes.item(i).id !="divPanelBackground")&&(childNodes.item(i).style.visibility !="hidden")&&(childNodes.item(i).style.display !="none")){o_size=new IWSize(size.getWidth(),o_size.getHeight());}
if((size.getHeight()>o_size.getHeight())&&(childNodes.item(i).id !="divPanelBackground")&&(childNodes.item(i).style.visibility !="hidden")&&(childNodes.item(i).style.display !="none")){o_size=new IWSize(o_size.getWidth(),size.getHeight());}
if((size.getHeight()>o_size.getHeight())&&(size.getWidth()>o_size.getWidth())&&(childNodes.item(i).id !="divPanelBackground")&&(childNodes.item(i).style.visibility !="hidden")&&(childNodes.item(i).style.display !="none")){o_size=new IWSize(size.getWidth(),size.getHeight());}
}
return o_size
}
this.isPanelControl=function(){return true;};this.getLayoutManager=function(){return _layoutManager;};this.setSize=function(size){_size=size;_container.style.width=size.getWidth()+'px';_container.style.height=size.getHeight()+'px';_background.style.width=size.getWidth()+'px';_background.style.height=size.getHeight()+'px';redraw();};this.setVerticalScroll=function(scroll){if(typeof _container.style.overflowY !='undefined'){_container.style.overflowY=scroll;}
else
{_container.style.overflow=scroll;}
};this.setHorizontalScroll=function(scroll){if(typeof _container.style.overflowX !='undefined'){_container.style.overflowX=scroll;}
else
{_container.style.overflow=scroll;}
};this.adjustBackground=function(){var newSize=this.getSize();newSize=recursiveSizesearch(this.getSize(),_container);_background.style.width=newSize.getWidth()+ 'px';if(newSize.getHeight()<=_size.getHeight()){_background.style.height=newSize.getHeight()+ 'px';}
else
{_background.style.height=newSize.getHeight()+ 15 + 'px';}
};this.getSize=function(){return new IWSize(parseInt(_container.style.width),parseInt(_container.style.height));};this.setOpacity=function(opa){opaf=parseFloat(opa);if((opaf<0)||(opaf>1)){throw('setOpacity:parameter not between 0 and 1');}
_opacity=opaf;_background.style.opacity=_opacity;_background.style.filter='alpha(opacity='+_opacity*100+')';};this.getOpacity=function(){return _opacity;};this.setBackgroundColor=function(color){_background.style.backgroundColor=color;};this.getBackgroundColor=function(){return _background.style.backgroundColor;};this.toString=function(){return '[IWPanelControl]' +'Size:' + this.getSize()+ ',' +'Backgroundcolor:' + this.getBackgroundColor()+ ',' +'Opacity:' + this.getOpacity();};IWControl.call(this,map,'IWPanelControl');var _container=this.getContainer();_container.id='divPanelControl';var _this=this;var _layoutManager=new IWLayoutManager(_container);var _size;if(typeof size=='undefined'){_size=new IWSize(100,100);}
else
{_size=size;}
var _bounding_box=_size;var _opacity=0.8;var _backgroundColor='';var _background=iw.create('div');_background.id='divPanelBackground';_background.style.zIndex=-1;_container.appendChild(_background);var _layer=new Array();this.setSize(_size);this.setOpacity(_opacity);this.setBackgroundColor(_backgroundColor);IWEventManager.addListener(_layoutManager,'onresize',function(event){setNewSize(event);}.iwclosure(this));}
function IWRoutingControl(map){IWControl.call(this,map,'IWRoutingControl');var self=this;var language=null;var hasGUI=false;var	uniqueInterstationId=0;var startAddressDiv=null;var destinationAddressDiv=null;var interstationAddressDivs=new Array();var interstationMenuDiv=null;var MAX_ADDRESSES_PER_GEOCODE=100;var STREET=0;var HOUSENUMBER=1;var ZIPCODE=2;var CITY=3;var COUNTRY=4;var pack=new IWLanguagePack();pack.addLanguage(new IWLanguage('de',iwconst.LOCAL_APP_URL + 'lang/IWRoutingControl.lang.de'));pack.addLanguage(new IWLanguage('en',iwconst.LOCAL_APP_URL + 'lang/IWRoutingControl.lang.en'));IWMultiLanguageSupport.call(this,map,pack);this.afterAppend=function(){IWEventManager.addListener(this,'afterlanguagepackloaded',function(event){language=event.language;if(hasGUI==false){buildGUI();hasGUI=true;}
}
);this.loadLanguagePack(map.getOptions().getLanguage());};this.setStartAddress=function(address){iw.strict([IWAddress],[address]);if(!startAddressDiv){throw('You should add the routing control to the DOM before calling this method.');}
else
{setAddressFields(startAddressDiv,address);}
};this.getStartAddress=function(){if(!startAddressDiv){throw('You should add the routing control to the DOM before calling this method.');}
else
{return getAddressFields(startAddressDiv);}
};this.resetStartAddress=function(){if(!startAddressDiv){throw('You should add the routing control to the DOM before calling this method.');}
else
{setAddressFields(startAddressDiv,new IWAddress());}
};this.setDestinationAddress=function(address){iw.strict([IWAddress],[address]);if(!destinationAddressDiv){throw('You should add the routing control to the DOM before calling this method.');}
else
{setAddressFields(destinationAddressDiv,address);}
};this.getDestinationAddress=function(){if(!destinationAddressDiv){throw('You should add the routing control to the DOM before calling this method.');}
else
{return getAddressFields(destinationAddressDiv);;}
};this.resetDestinationAddress=function(){if(!destinationAddressDiv){throw('You should add the routing control to the DOM before calling this method.');}
else
{setAddressFields(destinationAddressDiv,new IWAddress());}
};this.addInterstationAddress=function(address){iw.strict([IWAddress],[address]);if(!interstationMenuDiv){throw('You should add the routing control to the DOM before calling this method.');}
else
{var interstationAddressDiv=createAddressFields('interstationAddress' + uniqueInterstationId++);interstationAddressDiv.className='interstation';var button=iw.create('button');this.addLabelFor(new IWLabel('INTERSTATION_DELETE',button,'innerHTML'));interstationAddressDiv.appendChild(button);interstationAddressDivs.push(interstationAddressDiv);var h1=iw.create('h1');this.addLabelFor(new IWLabel('INTERSTATION',h1,'innerHTML'));var div=iw.create('div');div.appendChild(h1);div.appendChild(interstationAddressDiv);var n=interstationMenuDiv.childNodes[1];n.insertBefore(div,n.lastChild);setAddressFields(interstationAddressDiv,address);IWEventManager.trigger(self,'onredraw',null);var onClickListener=IWEventManager.addDOMListener(button,'onclick',function(){self.removeInterstationAddress(div);IWEventManager.removeListener(onClickListener);IWEventManager.trigger(self,'onredraw',null);}.iwclosure(self)
);}
};this.setInterstationAddresses=function(addresses){iw.strict(IWAddress,[addresses]);for(var i=0;i<addresses.length;i++){this.addInterstationAddress(addresses[i]);}
};this.removeInterstationAddress=function(div){div.parentNode.removeChild(div);for(var i=0;i<interstationAddressDivs.length;i++){if(div.lastChild.id==interstationAddressDivs[i].id){interstationAddressDivs.splice(i,1);break;}
}
IWEventManager.trigger(self,'onredraw',null);};this.removeInterstationAddresses=function(){for(var i=0;i<interstationAddressDivs.length;i++){this.removeInterstationAddress(interstationAddressDivs[0].parentNode);}
};this.getInterstationAddresses=function(){var addresses=new Array();for(var i=0;i<interstationAddressDivs.length;i++){addresses.push(getAddressFields(interstationAddressDivs[i]));}
return addresses;};this.changeAddressOrder=function(){var elems=iw.tag('select',_routePane2);var addresses=new Array();for(var i=0;i<elems.length;i++){addresses.push(_geocodeAddresses[i][elems[i].selectedIndex].getAddress());}
addresses.reverse();setAddressFields(startAddressDiv,addresses[0]);setAddressFields(destinationAddressDiv,addresses[addresses.length-1]);for(var i=0;i<interstationAddressDivs.length;i++){setAddressFields(interstationAddressDivs[i],addresses[i+1]);}
};this.getRoute=function(){return _route;};function startSearch(){if(_isAlreadySearching){return;}
_isAlreadySearching=true;_inputAddresses=new Array();var childNodes=iw.tag('div',_routePane1);for(var i=0;i<childNodes.length;i++){if(childNodes[i].name=='address'){var address=getAddressFields(childNodes[i]);if((address.getZipCode()==null||address.getZipCode().length==0)&&(address.getCity()==null||address.getCity().length==0)){alert(language.get('ERROR_INPUT_ADDRESS'));_isAlreadySearching=false;return;}
_inputAddresses.push(address);}
}
addressNodes=null;var childNodes=_routePane2.childNodes;while(childNodes.length>0){childNodes[0].parentNode.removeChild(childNodes[0]);}
var h2=iw.create('h2');self.addLabelFor(new IWLabel('ROUTE_SELECT',h2,'innerHTML'));_routePane2.appendChild(h2);var button=iw.create('button');_routePane2.appendChild(button);self.addLabelFor(new IWLabel('BACK',button,'innerHTML'));button.onclick=function(){hide(_routePane2);show(_routePane1);IWEventManager.trigger(self,'onredraw',null);};_addressIndex=0;_geocodeAddresses=new Array();_geocoderClient.geocodeAddress(_inputAddresses[_addressIndex],MAX_ADDRESSES_PER_GEOCODE);}
function buildGUI(){var container=self.getContainer();container.id='IWRoutingControl';var linkCSS=iw.create('link');iw.tag('head')[0].appendChild(linkCSS);linkCSS.type='text/css';linkCSS.rel='stylesheet';linkCSS.href=iwconst.GLOBAL_APP_URL + 'css/routing.css';_routePane1.id='routePane1';_routePane1.style.width='350px';_routePane1.className='routing';container.appendChild(_routePane1);var h2=iw.create('h2');self.addLabelFor(new IWLabel('SEARCH_ROUTE',h2,'innerHTML'));_routePane1.appendChild(h2);iw.append(_routePane1,createStartAddress());interstationMenuDiv=createInterstationMenu();iw.append(_routePane1,interstationMenuDiv);iw.append(_routePane1,createDestinationAddress());_routePane1.appendChild(createOptionsMenu());var searchButton=iw.create('button');searchButton.style.width='190px';_routePane1.appendChild(searchButton);self.addLabelFor(new IWLabel('SEARCH_ROUTE',searchButton,'innerHTML'));IWEventManager.addDOMListener(searchButton,'onclick',startSearch.iwclosure(searchButton));var _onGeocodeListener=IWEventManager.addListener(_geocoderClient,'aftergeocoded',function(event){var results=event.results;if(results.length==0){alert(language.get('ERROR_GEOCODING_ADDRESS')+ ':' + formatAddressString(event.inputAddress));return;}
else
{var caption='';if(_addressIndex==0){caption=language.get('START_ADDRESS');}
else if(_addressIndex==_inputAddresses.length-1){caption=language.get('DESTINATION_ADDRESS');}
else
{caption=language.get('INTERSTATION');}
var div=iw.create('div');div.className='dropDownContent';div.style.display='block';div.style.visibility='visible';div.style.marginBottom='5px';div.style.marginTop='5px';var h1=iw.create('h1');h1.innerHTML=caption;_routePane2.appendChild(div);var select=iw.create('select');select.name='address';select.style.width='280px';_geocodeAddresses.push(results);for(var i=0,j=0;i<results.length;i++,j++){var address=results[i].getAddress();select.options[j]=new Option(formatAddressString(address));select.options[j].address=address;}
div.appendChild(h1);div.appendChild(select);_routePane2.appendChild(div);}
if(_addressIndex<_inputAddresses.length-1){_addressIndex++;_geocoderClient.geocodeAddress(_inputAddresses[_addressIndex],MAX_ADDRESSES_PER_GEOCODE);}
else
{hide(_routePane1);_routePane2.appendChild(nextButton);show(_routePane2);nextButton.focus();IWEventManager.trigger(self,'onredraw',null);_isAlreadySearching=false;}
}.iwclosure(this)
);container.appendChild(_routePane2);_routePane2.id='routePane2';_routePane2.className='routing';_routePane2.style.width='350px';hide(_routePane2);var nextButton=iw.create('button');nextButton.style.width='190px';self.addLabelFor(new IWLabel('CALCULATE_ROUTE',nextButton,'innerHTML'));IWEventManager.addDOMListener(nextButton,'onclick',function(event){var options=new IWRouteOptions();var radios=iw.name('routeMode');for(var i=0;i<radios.length;i++){if(radios[i].checked){options.setType(radios[i].value);break;}
}
options.setCitySpeed(getSelectedText(iw.id('routeSpeedCity')));options.setCountryRoadSpeed(getSelectedText(iw.id('routeSpeedCountryRoad')));options.setHighwaySpeed(getSelectedText(iw.id('routeSpeedHighway')));_routerClient.setRouteOptions(options);var addressNodes=iw.tag('select',_routePane2);if(addressNodes.length>=2){var start=addressNodes[0].options[addressNodes[0].selectedIndex].address;var destination=addressNodes[addressNodes.length-1].options[addressNodes[addressNodes.length-1].selectedIndex].address;var interstations=null;if(addressNodes.length>=3){var interstations=new Array();for(var i=1;i<addressNodes.length-1;i++){var interstation=addressNodes[i].options[addressNodes[i].selectedIndex].address;;interstations.push(interstation);}
}
_routerClient.route(start,destination,interstations);}
else
{}
}
);IWEventManager.addListener(_routerClient,'afterrouted',function(event){hide(_routePane2);_route=event.route;var formatter=new IWRouteFormatter(_route);formatter.setLanguage('de');iw.id('headerRoute').innerHTML=formatter.createSummaryAsHTML();var table=iw.id('routeTable');for(var i=table.rows.length-1;i>=0;i--){table.deleteRow(i);}
if(_route.getSegments()==0){alert(language.get('ERROR_ROUTING'));}
else
{for(var i=0;i<_route.getSegments();i++){var tr=table.insertRow(i);tr.className=(i % 2 ? 'even':'odd');tr.style.cursor='pointer';var coordinate=_route.getEntry(i).getCoordinate();addRoutingPoint(i + 1,coordinate);IWEventManager.addDOMListener(tr,'onclick',function(event){var content=_routingMagnifierFactory.createRoutingMagnifierContent(this);map.openInfoBalloon(this,content);}.iwclosure(coordinate)
);var td=tr.insertCell(0);td.style.verticalAlign='top';td.innerHTML=i+1;td=tr.insertCell(1);td.style.verticalAlign='top';td.innerHTML=formatter.createImageAsHTML(i);td=tr.insertCell(2);td.style.verticalAlign='top';td.innerHTML=formatter.createDescriptionAsHTML(i);td=tr.insertCell(3);td.style.verticalAlign='top';td.innerHTML=formatter.createDistanceAsHTML(i);}
}
_routeLayer=new IWLayer(map,'route','ROUTE');_routeLayer.addShape(new IWShape(_route.getShape()));map.addLayer(_routeLayer);map.setCenter(_route.getBounds().getCenter(),map.getBoundsZoomlevel(_route.getBounds()));show(_routePane3);IWEventManager.trigger(self,'onredraw',null);return true;}.iwclosure(this));container.appendChild(_routePane3);_routePane3.id='routePane3';_routePane3.className='routing';_routePane3.style.width='350px';hide(_routePane3);var h2=iw.create('h2');iw.append(_routePane3,h2);self.addLabelFor(new IWLabel('ROUTE_DESCRIPTION',h2,'innerHTML'));var span=iw.create('span');iw.append(_routePane3,span);span.id='headerRoute';var waybackButton=iw.create('button');_routePane3.appendChild(waybackButton);waybackButton.style.width='190px';waybackButton.style.marginBottom='10px';self.addLabelFor(new IWLabel('CALCULATE_WAYBACK',waybackButton,'innerHTML'));waybackButton.onclick=function(){deleteRoute();this.changeAddressOrder();hide(_routePane3);show(_routePane1);IWEventManager.trigger(self,'onredraw',null);}.iwclosure(self);var newRouteButton=iw.create('button');_routePane3.appendChild(newRouteButton);newRouteButton.style.width='190px';newRouteButton.style.marginBottom='10px';self.addLabelFor(new IWLabel('CALCULATE_NEW_ROUTE',newRouteButton,'innerHTML'));newRouteButton.onclick=function(){deleteRoute();self.resetStartAddress();self.resetDestinationAddress();self.removeInterstationAddresses();hide(_routePane3);show(_routePane1);IWEventManager.trigger(self,'onredraw',null);}.iwclosure(self);var table=iw.create('table');_routePane3.appendChild(table);table.id='routeTable';}
function show(pane){pane.style.visibility='visible';pane.style.display='block';}
function hide(pane){pane.style.visibility='hidden';pane.style.display='none';}
function deleteRoute(){map.getOverlayManager().removeLayer(100);map.removeLayerByName('route');map.setCenter(map.getCenter());_route=null;_routeBounds=null;}
function createStartAddress(){var div=iw.create('div');div.className='dropDownContent';div.style.display='block';div.style.visibility='visible';var h1=iw.create('H1');self.addLabelFor(new IWLabel('START_ADDRESS',h1,'innerHTML'));div.appendChild(h1);startAddressDiv=createAddressFields('startAddress');iw.append(div,startAddressDiv);return div;}
function createDestinationAddress(){var div=iw.create('div');div.className='dropDownContent';div.style.display='block';div.style.visibility='visible';var h1=iw.create('H1');self.addLabelFor(new IWLabel('DESTINATION_ADDRESS',h1,'innerHTML'));div.appendChild(h1);destinationAddressDiv=createAddressFields('destinationAddress');iw.append(div,destinationAddressDiv);return div;}
function createAddressFields(id){var div=iw.create('div');div.id=id;div.name='address';iw.append(div,createInputField('street','ADDRESS_STREET'));iw.append(div,createInputField('housenumber','ADDRESS_HOUSE_NUMBER'));iw.append(div,createInputField('zipcode','ADDRESS_ZIPCODE'));iw.append(div,createInputField('city','ADDRESS_CITY'));var selectCountry=iw.create('select');selectCountry.className='country';selectCountry.options[0]=createOptionField('ANDORRA','AND');selectCountry.options[1]=createOptionField('BELGIUM','B');selectCountry.options[2]=createOptionField('DENMARK','DK');selectCountry.options[3]=createOptionField('GERMANY','D');selectCountry.options[4]=createOptionField('FINNLAND','FIN');selectCountry.options[5]=createOptionField('FRANCE','F');selectCountry.options[6]=createOptionField('GREECE','GR');selectCountry.options[7]=createOptionField('GREAT_BRITAIN','GB');selectCountry.options[8]=createOptionField('IRELAND','IRL');selectCountry.options[9]=createOptionField('ITALY','I');selectCountry.options[10]=createOptionField('LUXEMBOURG','L');selectCountry.options[11]=createOptionField('NETHERLANDS','NL');selectCountry.options[12]=createOptionField('AUSTRIA','A');selectCountry.options[13]=createOptionField('NORWAY','N');selectCountry.options[14]=createOptionField('POLAND','PL');selectCountry.options[15]=createOptionField('PORTUGAL','P');selectCountry.options[16]=createOptionField('SAN_MARINO','RSM');selectCountry.options[17]=createOptionField('SWEDEN','S');selectCountry.options[18]=createOptionField('SWITZERLAND','CH');selectCountry.options[19]=createOptionField('SLOVAKIA','SK');selectCountry.options[20]=createOptionField('SPAIN','E');selectCountry.options[21]=createOptionField('CZECH_REPUBLIC','CZ');selectCountry.options[22]=createOptionField('HUNGARY','H');setSelectedIndex(selectCountry,'D');iw.append(div,selectCountry);return div;}
function createOptionField(languageKey,key){var option=new Option(language.get(languageKey),key);self.addLabelFor(new IWLabel(languageKey,option,'text'));return option;}
function setSelectedIndex(elem,value){for(var i=0;i<elem.options.length;i++){if(elem.options[i].value==value){elem.selectedIndex=i;return;}
}
}
function getSelectedText(elem){return elem.options[elem.selectedIndex].text;}
function setAddressFields(div,address){var street=address.getStreet();div.childNodes[STREET].value=(street !=null&&street.length>0 ? street:language.get('ADDRESS_STREET'));var number=address.getHouseNumber();div.childNodes[HOUSENUMBER].value=(number !=0&&number !=null ? number:language.get('ADDRESS_HOUSE_NUMBER'));var zipcode=address.getZipCode();div.childNodes[ZIPCODE].value=(zipcode !=null&&zipcode.length>0 ? zipcode:language.get('ADDRESS_ZIPCODE'));var city=address.getCity();div.childNodes[CITY].value=(city !=null&&city.length>0 ? city:language.get('ADDRESS_CITY'));var country=address.getCountryCode();if(country !=null&&country.length>0){setSelectedIndex(div.childNodes[COUNTRY],country);}
else
{setSelectedIndex(div.childNodes[COUNTRY],'D');}
}
function getAddressFields(div){var address=new IWAddress();var street=div.childNodes[STREET].value;if(street !=language.get('ADDRESS_STREET')){address.setStreet(street);}
var houseNumber=div.childNodes[HOUSENUMBER].value;if(houseNumber !=language.get('ADDRESS_HOUSE_NUMBER')){address.setHouseNumber(houseNumber);}
var zipCode=div.childNodes[ZIPCODE].value;if(zipCode !=language.get('ADDRESS_ZIPCODE')){address.setZipCode(zipCode);}
var city=div.childNodes[CITY].value;if(city !=language.get('ADDRESS_CITY')){address.setCity(city);}
address.setCountry(getSelectedText(div.childNodes[COUNTRY]));address.setCountryCode(div.childNodes[COUNTRY].value);return address;}
function createInputField(name,languageKey){var input=iw.create('input');input.name=name;input.className=name;input.value=language.get(languageKey);input.onfocus=function(){if(this.value==language.get(languageKey)){this.value='';}
}.iwclosure(input);input.onblur=function(){if(this.value==''){this.value=language.get(languageKey);}
}.iwclosure(input);IWEventManager.addDOMListener(input,'onkeypress',function(event){if(event.keyCode==13)startSearch();}.iwclosure(input)
);self.addLabelFor(new IWLabel(languageKey,input,'value'));return input;}
function createOptionsMenu(){_optionsMenu=iw.create('div');_optionsMenu.id='optionsMenu';_optionsMenu.className='dropDownMenu';var header=iw.create('div');header.className='dropDownHeader'
header.name='modus';_optionsMenu.appendChild(header);header.onclick=function(){dropDown(header);};var img=iw.create('img');header.appendChild(img);img.src=iwconst.GLOBAL_APP_URL + 'img/controls/routing/oeffnen_route.gif';img.className='img';var p=iw.create('p');header.appendChild(p);self.addLabelFor(new IWLabel('ROUTE_OPTIONS',p,'innerHTML'));var content=iw.create('div');content.className='dropDownContent';_optionsMenu.appendChild(content);content.appendChild(createModusDIV());content.appendChild(createSpeedDIV());return _optionsMenu;}
function createInterstationMenu(){var div=iw.create('div');div.id='interstationMenu';div.className='dropDownMenu';var header=iw.create('div');header.className='dropDownHeader'
header.name='modus';div.appendChild(header);header.onclick=function(){dropDown(header);};var img=iw.create('img');header.appendChild(img);img.src=iwconst.GLOBAL_APP_URL + 'img/controls/routing/oeffnen_route.gif';img.className='img';var p=iw.create('p');self.addLabelFor(new IWLabel('INTERSTATIONS',p,'innerHTML'));header.appendChild(p);var content=iw.create('div');content.id='routeInterstationContent';content.className='dropDownContent';var button=iw.create('button');content.appendChild(button);button.style.width='190px';self.addLabelFor(new IWLabel('INTERSTATION_ADD',button,'innerHTML'));button.onclick=function(){self.addInterstationAddress(new IWAddress());};iw.append(div,content);return div;}
function createModusDIV(){var div=iw.create('div');div.id='modusDiv';var h1=iw.create('h1');self.addLabelFor(new IWLabel('ROUTE_MODE_SETTINGS',h1,'innerHTML'));div.appendChild(h1);div.appendChild(createModusTable());return div;}
function createModusTable(){var radio1=null;var radio2=null;var radio3=null;if(IWBrowser.isInternetExplorer()){radio1=iw.create('<input type="radio" name="mode" value="1" className="modus" checked>');radio2=iw.create('<input type="radio" name="mode" value="2" className="modus">');radio3=iw.create('<input type="radio" name="mode" value="3" className="modus">');}
else
{radio1=iw.create('input');radio1.type='radio';radio1.name='routeMode';radio1.value='SPEED';radio1.checked=true;radio1.className='modus';radio2=iw.create('input');radio2.type='radio';radio2.name='routeMode';radio2.value='LENGTH';radio2.className='modus';radio3=iw.create('input');radio3.type='radio';radio3.name='routeMode';radio3.value='ECONOMY';radio3.className='modus';}
var table=iw.create('table');var tr=table.insertRow(0);var td=tr.insertCell(0);td.style.width='65px';iw.append(td,radio1);self.addLabelFor(new IWLabel('ROUTE_FASTEST',tr.insertCell(1),'innerHTML'));var tr=table.insertRow(1);tr.insertCell(0).appendChild(radio2);self.addLabelFor(new IWLabel('ROUTE_SHORTEST',tr.insertCell(1),'innerHTML'));var tr=table.insertRow(2);tr.insertCell(0).appendChild(radio3);self.addLabelFor(new IWLabel('ROUTE_ECONOMIEST',tr.insertCell(1),'innerHTML'));return table;}
function createSpeedDIV(){var div=iw.create('div');div.id='speedDiv';var h1=iw.create('h1');self.addLabelFor(new IWLabel('ROUTE_SPEED_SETTINGS',h1,'innerHTML'));div.appendChild(h1);div.appendChild(createSpeedTable());return div;}
function createSpeedTable(){var highway=iw.create('select');highway.id='routeSpeedHighway';highway.className='speed';highway.options[0]=new Option('130');highway.options[1]=new Option('120');highway.options[2]=new Option('110');highway.options[3]=new Option('100');highway.options[4]=new Option('90');highway.options[5]=new Option('80');highway.selectedIndex=3;var countryroad=iw.create('select');countryroad.id='routeSpeedCountryRoad';countryroad.className='speed';countryroad.options[0]=new Option('100');countryroad.options[1]=new Option('90');countryroad.options[2]=new Option('80');countryroad.options[3]=new Option('70');countryroad.options[4]=new Option('60');countryroad.options[5]=new Option('50');countryroad.selectedIndex=4;var city=iw.create('select');city.id='routeSpeedCity';city.className='speed';city.options[0]=new Option('50');city.options[1]=new Option('40');city.options[2]=new Option('30');city.selectedIndex=2;var table=iw.create('table');table.id='speedTable';var tr=table.insertRow(0);var td=tr.insertCell(0);td.style.width='65px';iw.append(td,highway);self.addLabelFor(new IWLabel('ROUTE_SPEED_HIGHWAY',tr.insertCell(1),'innerHTML'));var tr=table.insertRow(1);tr.insertCell(0).appendChild(countryroad);self.addLabelFor(new IWLabel('ROUTE_SPEED_COUNTRYROAD',tr.insertCell(1),'innerHTML'));var tr=table.insertRow(2);tr.insertCell(0).appendChild(city);self.addLabelFor(new IWLabel('ROUTE_SPEED_CITY',tr.insertCell(1),'innerHTML'));return table;}
function dropDown(menu){var img=null;var content=null;for(var i=0;i<menu.childNodes.length;i++){if(menu.childNodes[i].className){if(menu.childNodes[i].className=='img'){img=menu.childNodes[i];break;}
}
}
var sibling=menu.nextSibling;while(sibling){if(sibling.className=='dropDownContent'){content=sibling;break;}
sibling=sibling.nextSibling;}
if(content.style.display=='block'){content.style.display='none';img.src=iwconst.GLOBAL_APP_URL + 'img/controls/routing/oeffnen_route.gif'
}
else
{content.style.display='block';img.src=iwconst.GLOBAL_APP_URL + 'img/controls/routing/schliessen_route.gif'
}
IWEventManager.trigger(self,'onredraw',null);}
function formatAddressString(address){var s='';if(address.getStreet()!=null){s=s.concat(address.getStreet());if(address.getHouseNumber()!=null){s=s.concat(address.getHouseNumber());}
}
if(address.getZipCode()!=null){if(s.length>0){s=s.concat(',');}
s=s.concat(address.getZipCode()).concat(' ');}
if(address.getCity()!=null){s=s.concat(address.getCity());}
return s;}
function addRoutingPoint(number,coordinate){var marker=new IWMarker(map,coordinate);marker.setDefaultIcon(new IWIcon(iwconst.GLOBAL_APP_URL + '/img/controls/routing/bullet_white_10.gif',new IWPoint(10,10)));var div=iw.create('div');marker.getContainer().appendChild(div);div.innerHTML='<p align="center" style="margin:0px">' + number + '</p>';div.style.position='absolute';div.style.top='2px';div.style.left='0px';div.style.width='20px';div.style.color='black';div.style.fontSize='8pt';div.style.fontWeight='bold';var listener=IWEventManager.addListener(marker,'onclick',function(e){var content=_routingMagnifierFactory.createRoutingMagnifierContent(coordinate);map.openInfoBalloon(coordinate,content);}.iwclosure(marker)
);map.getOverlayManager().getLayer(100).addOverlay(marker);}
this.getRouteBounds=function(){return _routeBounds;};var _routeLayer=null;var _logger=log4javascript.getLogger('IWRoutingControl');var _inputAddresses=null;var _geocoderClient=new IWGeocoderClient();var _routerClient=new IWRoutingClient();var _route=null;var _routeBounds=null;var _addressIndex=0;var _geocodeAddresses=null;var _routePane1=iw.create('div');var _routePane2=iw.create('div');var _routePane3=iw.create('div');var _optionsMenu=null;var _isAlreadySearching=false;var _routingMagnifierFactory=new IWRoutingMagnifierFactory(map);map.getOverlayManager().getLayer(100).setVisibilityRange(new IWRange(0,120));}
function IWScalarControl(map){IWControl.call(this,map,'IWScalarControl');var self=this;var _container=this.getContainer();var _left=5;var _width=0;var _scaleUnits=[20,50,100,200,500,1000,2000,5000,10000,20000,50000,100000,200000,500000,1000000,2000000,5000000];var _scaleUnitsText=['20 m','50 m','100 m','200 m','500 m','1 km','2 km','5 km','10 km','20 km','50 km','100 km','200 km','500 km','1000 km','2000 km','5000 km'];this.afterAppend=function(){buildGUI();redraw();};function buildGUI(){var container=self.getContainer();self.setId('IWScalarControl');var divBackground=iw.create('div');iw.append(container,divBackground);iw.backgroundImage(divBackground,iwconst.GLOBAL_APP_URL + 'img/symbols/background_white_transparency.png');with(divBackground.style){position='absolute';top='0px';left='0px';width='120px';height='25px';zIndex='3';border='1px solid #dddddd';}
var divForeground=iw.create('div');iw.append(container,divForeground);with(divForeground.style){position='absolute';textAlign='center';top='0px';left='0px';zIndex='3';}
var divText=iw.create('div');iw.append(_container.lastChild,divText);with(divText.style){fontSize='9px';textAlign='center';width=divText.parentNode.style.width;}
createSeperator();createBlueBox();createSeperator();createWhiteBox();createSeperator();createBlueBox();createSeperator();createWhiteBox();createSeperator();}
function createSeperator(){var div=iw.create('div');iw.append(_container.lastChild,div);with(div.style){position='absolute';borderBottom='1px solid #0066CC';width='1px';height='8px';top='15px';}
iw.backgroundImage(div,iwconst.GLOBAL_APP_URL + 'img/symbols/background_blue.jpg');return div;}
function createBlueBox(){var div=createBox();iw.append(_container.lastChild,div);iw.backgroundImage(div,iwconst.GLOBAL_APP_URL + 'img/symbols/background_blue.jpg');}
function createWhiteBox(){var div=createBox();iw.append(_container.lastChild,div);iw.backgroundImage(div,iwconst.GLOBAL_APP_URL + 'img/symbols/background_white.jpg');return div;}
function createBox(){var div=iw.create('div');with(div.style){position='absolute';borderBottom='1px solid #0066CC';height='5px';top='18px';}
return div;}
function redraw(){var meter=Math.round(map.getMapWidthInMeter()/10);var i=0;while(meter>=_scaleUnits[i]&&i<(_scaleUnits.length-1)){i++;}
var left=5;var pixelPerMeter=map.getOptions().getSize().getWidth()/map.getMapWidthInMeter();var width=Math.round(_scaleUnits[i]*pixelPerMeter/4)- 1;_container.style.width=_container.firstChild.style.width=_container.lastChild.style.width=(4*width + 15)+ 'px';var nodes=_container.lastChild.childNodes;nodes[0].innerHTML=_scaleUnitsText[i];nodes[1].style.left=left + 'px';left=left + 1;nodes[2].style.left=left + 'px';nodes[2].style.width=width + 'px';left=left + width;nodes[3].style.left=left + 'px';left=left + 1;nodes[4].style.left=left + 'px';nodes[4].style.width=width + 'px';left=left + width;nodes[5].style.left=left + 'px';left=left + 1;nodes[6].style.left=left + 'px';nodes[6].style.width=width + 'px';left=left + width;nodes[7].style.left=left + 'px';left=left + 1;nodes[8].style.left=left + 'px';nodes[8].style.width=width + 'px';left=left + width;nodes[9].style.left=left - 1 + 'px';}
_container.style.width='120px';_container.style.height='25px';this.setPrintable(true);IWEventManager.addListener(map,'afterzoom',function(event){redraw();});IWEventManager.addListener(map,'afterresized',function(event){redraw();});IWEventManager.addListener(map,'aftercentered',function(event){redraw();});IWEventManager.addListener(map,'aftermaptypechanged',function(event){redraw();});}
function IWSlideInMenuControl(map,size,slideDirection){IWControl.call(this,map,'IWSlideInMenuControl');function _move(){var size=null;var switch_=null;if(_slideDirection==IWAlignment.LEFT){size=_size.getWidth();switch_=-1;if(!_isOpen){self.getContainer().style.width=_size.getWidth()+ 11 + 'px';self.getContainer().style.left=parseInt(self.getContainer().style.left)-_size.getWidth()+'px';_container.style.left=_size.getWidth()+ 'px';}
}
else if(_slideDirection==IWAlignment.RIGHT){size=_size.getWidth();switch_=1;if(!_isOpen){self.getContainer().style.width=_size.getWidth()+11+'px';}
}
else if(_slideDirection==IWAlignment.TOP){size=_size.getHeight();switch_=-1;if(!_isOpen){self.getContainer().style.height=_size.getHeight()+11+'px';self.getContainer().style.top=parseInt(self.getContainer().style.top)-_size.getHeight()+'px';_container.style.top=_size.getHeight()+ 'px';}
}
else if(_slideDirection==IWAlignment.BOTTOM){size=_size.getHeight();switch_=1;if(!_isOpen){self.getContainer().style.height=_size.getHeight()+11+'px';}
}
_isOpen=!_isOpen;if(!_isOpen){self.triggerBeforeClose();_oflowX=_panel.getContainer().style.overflowX;_oflowY=_panel.getContainer().style.overflowY;_panel.getContainer().style.overflowX='hidden';_panel.getContainer().style.overflowY='hidden';_saveOverflowDiv(_panel.getContainer());_moveWindow(size,switch_,0,0);}
else
{self.triggerBeforeOpen();_moveWindow(size,-1*switch_,0,0);_panel.getContainer().style.overflowX=_oflowX;_panel.getContainer().style.overflowY=_oflowY;for(var i=0;i<_overflowSave.length;i++){if(_overflowSave[i][0]=='v')_overflowSave[i][1].style.overflow=_overflowSave[i][2];if(_overflowSave[i][0]=='x')_overflowSave[i][1].style.overflowX=_overflowSave[i][2];if(_overflowSave[i][0]=='y')_overflowSave[i][1].style.overflowY=_overflowSave[i][2];}
_overflowSave=new Array();}
}
function _saveOverflowDiv(div){for(var i=0;i<div.childNodes.length;i++){if(div.childNodes.item(i).nodeName=='DIV'){_saveOverflowDiv(div.childNodes.item(i));}
}
if(div.style.overflow=='auto'||div.style.overflow=='scroll'){_overflowSave.push(new Array('v',div,div.style.overflow));div.style.overflow='hidden';}
if(div.style.overflowY=='auto'||div.style.overflowY=='scroll'){_overflowSave.push(new Array('y',div,div.style.overflowY));div.style.overflowY='hidden';}
if(div.style.overflowX=='auto'||div.style.overflowX=='scroll'){_overflowSave.push(new Array('x',div,div.style.overflowX));div.style.overflowX='hidden';}
}
function _moveWindow(size,switch_,nStep,nRest){if(nStep<_slideSteps.length){var nStepMovementX=Math.round(_slideSteps[nStep]*size);nStepMovementX +=nRest;nRest=nStepMovementX - Math.round(nStepMovementX);if(_slideDirection==IWAlignment.LEFT||_slideDirection==IWAlignment.RIGHT){var nLeft=parseInt(_container.style.left)- switch_*nStepMovementX;_container.style.left=nLeft + 'px';}
else if(_slideDirection==IWAlignment.TOP||_slideDirection==IWAlignment.BOTTOM){var nHeight=parseInt(_container.style.top)- switch_*nStepMovementX;_container.style.top=nHeight + 'px';}
window.setTimeout(function(){_moveWindow(size,switch_,++nStep,nRest);},35);}
else
{_setCorrectPosition();_addArrowImg();}
}
function _setCorrectPosition(){if(_isOpen){if(_slideDirection==IWAlignment.LEFT)_container.style.left='11px';else if(_slideDirection==IWAlignment.RIGHT)_container.style.left='0px';else if(_slideDirection==IWAlignment.TOP)_container.style.top='11px';else if(_slideDirection==IWAlignment.BOTTOM)_container.style.top='0px';}
else
{if(_slideDirection==IWAlignment.LEFT){_container.style.left='11px';self.getContainer().style.width='11px';if(!self.getContainer().style.left)self.getContainer().style.left=_size.getWidth()+'px';else
self.getContainer().style.left=parseInt(self.getContainer().style.left)+_size.getWidth()+'px';}
else if(_slideDirection==IWAlignment.RIGHT){_container.style.left=- _size.getWidth()+'px';self.getContainer().style.width='11px';}
else if(_slideDirection==IWAlignment.TOP){_container.style.top='11px';self.getContainer().style.height='11px';if(!self.getContainer().style.top)self.getContainer().style.top=_size.getHeight()+'px';else
self.getContainer().style.top=parseInt(self.getContainer().style.top)+_size.getHeight()+'px';}
else if(_slideDirection==IWAlignment.BOTTOM){_container.style.top=- _size.getHeight()+'px';self.getContainer().style.height='11px';}
}
}
function _addArrowImg(){if(_slideDirection==IWAlignment.RIGHT){_slideWindowImg.src=iwconst.GLOBAL_APP_URL +(_isOpen ? 'img/controls/slidemenu/links.gif':'img/controls/slidemenu/rechts.gif');}
else if(_slideDirection==IWAlignment.LEFT){_slideWindowImg.src=iwconst.GLOBAL_APP_URL +(_isOpen ? 'img/controls/slidemenu/rechts.gif':'img/controls/slidemenu/links.gif');}
else if(_slideDirection==IWAlignment.TOP){_slideWindowImg.src=iwconst.GLOBAL_APP_URL +(_isOpen ? 'img/controls/slidemenu/unten.gif':'img/controls/slidemenu/oben.gif');}
else if(_slideDirection==IWAlignment.BOTTOM){_slideWindowImg.src=iwconst.GLOBAL_APP_URL +(_isOpen ? 'img/controls/slidemenu/oben.gif':'img/controls/slidemenu/unten.gif');}
}
this.triggerBeforeOpen=function(){IWEventManager.trigger(this,'beforeopen',null);};this.triggerBeforeClose=function(){IWEventManager.trigger(this,'beforeclose',null);};this.setSize=function(size){_size=size;var width=_size.getWidth();var height=_size.getHeight();if(_slideDirection==IWAlignment.LEFT||_slideDirection==IWAlignment.RIGHT){_container.style.width=width + 11 + 'px';_container.style.height=height + 'px';this.getContainer().style.width=width + 11 + 'px';this.getContainer().style.height=height + 'px';_slider.style.height=height - 2 + 'px';_slider.style.width='9px';_slideArrow.style.top=(height/2 - 10)+ 'px';_slideArrow.style.left='0px';_slider.style.top='0px';}
else if(_slideDirection==IWAlignment.TOP||_slideDirection==IWAlignment.BOTTOM){_container.style.width=width + 'px';_container.style.height=height + 11 +'px';this.getContainer().style.width=width + 'px';this.getContainer().style.height=height + 11 + 'px';_slider.style.width=width - 2 + 'px';_slider.style.height='9px';_slideArrow.style.left=(width/2 - 10)+ 'px';_slideArrow.style.bottom='0px';_slider.style.left='0px';}
_panel.setSize(size);_setCorrectPosition();};this.setVerticalScroll=function(scroll){_oflowY=scroll;_panel.setVerticalScroll(scroll);};this.setHorizontalScroll=function(scroll){_oflowX=scroll;_panel.setHorizontalScroll(scroll);};this.getSize=function(){return _panel.getSize();};this.setBackgroundColor=function(color){_panel.setBackgroundColor(color);_slider.style.backgroundColor=color;};this.adjustBackground=function(){_panel.adjustBackground();};this.setOpacity=function(alpha){_panel.setOpacity(alpha);_slider.style.opacity=alpha;_slider.style.filter='alpha(opacity='+alpha*100+')';};this.getOpacity=function(){return _panel.getOpacity();};this.getBackgroundColor=function(){return _panel.getBackgroundColor();};this.getLayoutManager=function(){return _panel.getLayoutManager();};this.expand=function(){if(!_isOpen){_move();}
};this.collapse=function(){if(_isOpen){_move();}
};this.open=function(){if(_isOpen){return;}
this.triggerBeforeOpen();_isOpen=true;_addArrowImg();if(_slideDirection==IWAlignment.LEFT){self.getContainer().style.width=_size.getWidth()+11+'px';self.getContainer().style.left=parseInt(self.getContainer().style.left)-_size.getWidth()+'px';_container.style.left=_size.getWidth()+ 'px';}
else if(_slideDirection==IWAlignment.RIGHT){self.getContainer().style.width=_size.getWidth()+11+'px';}
else if(_slideDirection==IWAlignment.TOP){self.getContainer().style.height=_size.getHeight()+11+'px';self.getContainer().style.top=parseInt(self.getContainer().style.top)-_size.getHeight()+'px';_container.style.top=_size.getHeight()+ 'px';}
else if(_slideDirection==IWAlignment.BOTTOM){self.getContainer().style.height=_size.getHeight()+11+'px';}
_setCorrectPosition();};this.close=function(){if(!_isOpen){return;}
this.triggerBeforeClose();_isOpen=false;_addArrowImg();_setCorrectPosition();};this.isOpen=function(){return _isOpen;};this.toString=function(){return '[IWSlideInMenuControl]' +'Size:' + this.getSize()+ ',' +'Backgroundcolor:' + this.getBackgroundColor()+ ',' +'Opacity:' + this.getOpacity();};if(typeof slideDirection=='undefined'||slideDirection<0||slideDirection>4){throw('IWSlideInMenuControl:adding control failed:slideDirection not valid!');}
var self=this;var _slideSteps=[0.03,0.07,0.12,0.18,0.20,0.18,0.12,0.07,0.03];this.getContainer().id='divSlideInMenu';var _slideDirection=slideDirection;var _isOpen=false;var _oflowX='inherit';var _oflowY='inherit';var _overflowSave=new Array();var _size=null;if(typeof size=='undefined'){_size=new IWSize(100,100);}
else
{_size=size;}
var _container=iw.create('div');_container.style.position='absolute';this.getContainer().appendChild(_container);this.getContainer().style.overflow='hidden';var _panel=new IWPanelControl(map);_container.appendChild(_panel.getContainer());var _slider=iw.create('div');_container.appendChild(_slider);var _slideArrow=iw.create('div');var _slideWindowImg=iw.create('img');_slideArrow.appendChild(_slideWindowImg);_slider.appendChild(_slideArrow);_slideArrow.style.position='absolute';_addArrowImg();_slider.style.position='absolute';_slider.style.right='0px';_slider.style.cursor='pointer';_slider.style.borderLeftWidth='1px';_slider.style.borderLeftStyle='solid';_slider.style.borderLeftColor='#689acd';_slider.style.borderRightWidth='1px';_slider.style.borderRightStyle='solid';_slider.style.borderRightColor='#689acd';_slider.style.borderTopWidth='1px';_slider.style.borderTopStyle='solid';_slider.style.borderTopColor='#689acd';_slider.style.borderBottomWidth='1px';_slider.style.borderBottomStyle='solid';_slider.style.borderBottomColor='#689acd';this.setOpacity(0.8);this.setBackgroundColor('');this.setSize(_size);_setCorrectPosition();IWEventManager.addDOMListener(_slider,'onclick',_move);}
function IWSliderControl(map){IWControl.call(this,map,'IWSliderControl');var _map=map;var _self=this;var _tilesizeArray=iwconst.A_TILESIZE_METER;var _lowValue=_map.getCurrentMapType().getMaxLevel();var _highValue=_map.getCurrentMapType().getMinLevel();var _offsetX=23;var _offsetY=21;var _maxSlide=161 - _offsetY;var _currentPos=_map.getZoom();var _mouseAdapter=new IWMouseAdapter();var _container=this.getContainer();var _divSliderButton=iw.create('div');var _areaPlus=iw.create('area');var _areaMinus=iw.create('area');var pack=new IWLanguagePack();pack.addLanguage(new IWLanguage('de',iwconst.LOCAL_APP_URL + 'lang/IWSliderControl.lang.de'));pack.addLanguage(new IWLanguage('en',iwconst.LOCAL_APP_URL + 'lang/IWSliderControl.lang.en'));pack.addLanguage(new IWLanguage('es',iwconst.LOCAL_APP_URL + 'lang/IWSliderControl.lang.es'));pack.addLanguage(new IWLanguage('tr',iwconst.LOCAL_APP_URL + 'lang/IWSliderControl.lang.tr'));pack.addLanguage(new IWLanguage('fr',iwconst.LOCAL_APP_URL + 'lang/IWSliderControl.lang.fr'));pack.addLanguage(new IWLanguage('it',iwconst.LOCAL_APP_URL + 'lang/IWSliderControl.lang.it'));IWMultiLanguageSupport.call(this,map,pack);IWEventManager.addListener(this,'afterlanguagepackloaded',function(event){_areaPlus.alt=_areaPlus.title=event.language.get('ZOOM_IN');_areaMinus.alt=_areaMinus.title=event.language.get('ZOOM_OUT');}
);this.getValue=function(round){if(typeof(round)=='undefined'){round=true;}
var value=_lowValue +(_highValue-_lowValue)*(parseInt(_divSliderButton.style.top)-_offsetY)/_maxSlide;if(round){return Math.round(value);}
else
{return value;}
};this.setValue=function(value,ignore){if(typeof(ignore)=='undefined')ignore=false;if(typeof(value)=='string')value=parseInt(value);var rangeValue=Math.min(Math.max(value,_lowValue),_highValue)- _lowValue;_divSliderButton.style.top=_maxSlide*rangeValue/(_highValue-_lowValue)+ _offsetY + 'px';_currentPos=value;if(!ignore){_map.setZoom(value);}
};this.afterAppend=function(){buildGUI();this.setValue(_map.getZoom(),true);};this.toString=function(){return '[IWSliderControl]';};function _fromSteptoPixel(step){return parseInt(_maxSlide/_highValue)*step + _offsetY;}
function buildGUI(){var mapSlider=null;try{mapSlider=iw.create('<map name="mapSlider">');}
catch(e){mapSlider=iw.create('map');mapSlider.name='mapSlider';}
iw.append(_container,mapSlider);iw.append(mapSlider,_areaPlus);_areaPlus.shape='rect';_areaPlus.coords='8,1,45,20';_areaPlus.style.cursor='pointer';IWEventManager.addDOMListener(_areaPlus,'onmousedown',function(event){_currentPos=_map.getZoom();if(!map.isZooming()&&(_map.getCurrentMapType().getMaxLevel()<_currentPos)){_currentPos--;this.setValue(_currentPos,true);if(!_map.zoomIn()){_currentPos++;this.setValue(_currentPos,true);}
}
}.iwclosure(_self)
);iw.append(mapSlider,_areaMinus);_areaMinus.shape='rect';_areaMinus.coords='8,193,45,218';_areaMinus.style.cursor='pointer';IWEventManager.addDOMListener(_areaMinus,'onmousedown',function(event){_currentPos=_map.getZoom();if(!map.isZooming()&&(_map.getCurrentMapType().getMinLevel()>_currentPos)){_currentPos++;this.setValue(_currentPos,true);if(!_map.zoomOut()){_currentPos--;this.setValue(_currentPos,true);}
}
}.iwclosure(_self)
);var areaPanel=iw.create('area');iw.append(mapSlider,areaPanel);areaPanel.shape='rect';areaPanel.coords='20,21,35,218';IWEventManager.addDOMListener(areaPanel,'onmousedown',function(event){if(map.isZooming())return;if(!event)event=window.event;var _mouseAdapter=new IWMouseAdapter();var mouseEvent=_mouseAdapter.toMouseEvent(event,_container);var y=mouseEvent.position.getY()- 20;if(y>=0&&y<=170){var idx=Math.min(Math.round((y/161)*_highValue),_highValue);_map.setZoom(idx);}
}.iwclosure(_self)
);var imgSlider=iw.create('img');iw.append(_container,imgSlider);imgSlider.useMap='#mapSlider';imgSlider.onload=function(){correctPNG(this);}.iwclosure(imgSlider);imgSlider.src=iwconst.GLOBAL_APP_URL + 'img/controls/slider/slider.png';imgSlider.width='58';imgSlider.height='218';imgSlider.border='0';iw.append(_container,_divSliderButton);_divSliderButton.style.position='absolute';_divSliderButton.style.left=_offsetX + 'px';_divSliderButton.style.top=_offsetY + 'px';_divSliderButton.style.width='13px';_divSliderButton.style.height='35px';_divSliderButton.style.cursor='pointer';IWEventManager.addDOMListener(_divSliderButton,'onmousedown',function(event){if(!event){event=window.event;}
if(event.cancelable){event.preventDefault();}
event.cancelBubble=false;event.returnValue=false;var mouseEvent=_mouseAdapter.toMouseEvent(event,_container);if((mouseEvent.button !=IWButton.LEFT)||map.isZooming()||!map.startOpticalZoom())return;IWEventManager.trigger(_map,'beforezoom',null);limitHigh=_offsetY;limitLow=_maxSlide+_offsetY;var oldPosY=mouseEvent.position.getY();var onMouseMoveListener=IWEventManager.addListener(document.body,'onmousemove',function(event){if(!event){event=window.event;}
var mouseEvent=_mouseAdapter.toMouseEvent(event,_container);var mouseY=mouseEvent.position.getY();if(event.cancelable){event.preventDefault();}
event.cancelBubble=false;event.returnValue=false;var y=parseInt(_divSliderButton.style.top)+ mouseY - oldPosY;if((limitHigh<y)&&(y<limitLow)){_divSliderButton.style.top=y +'px';oldPosY=mouseY;var alpha=this.getValue(false)- this.getValue()+1;var meter;if(this.getValue()==_lowValue)meter=alpha*_tilesizeArray[this.getValue()];else
meter=alpha*_tilesizeArray[this.getValue()]+(1-alpha)*_tilesizeArray[this.getValue()-1];_map.setOpticalZoomStep(meter);}
}.iwclosure(this)
);var onMouseUpListener=IWEventManager.addListener(document.body,'onmouseup',function(event){_currentPos=this.getValue();var newLevel=_map.endOpticalZoom(_currentPos);if(_currentPos !=newLevel){_currentPos=newLevel;this.setValue(newLevel,true);}
IWEventManager.removeListener(onMouseMoveListener);IWEventManager.removeListener(onMouseUpListener);}.iwclosure(this)
);}.iwclosure(_self)
);var imgButton=iw.create('img');iw.append(_divSliderButton,imgButton);imgButton.src=iwconst.GLOBAL_APP_URL + 'img/controls/slider/slider_button.png';imgButton.style.width='13px';imgButton.style.height='35px';}
_container.id='IWSliderControl';_container.style.width='58px';_container.style.height='218px';IWEventManager.addListener(_map,'onmousewheel',function(event){if(map.isZooming()||map.getOptions().getMouseWheelAction()!=IWMapOptions.CONTROL_ZOOM){return;}
_currentPos=Math.min(Math.max(_currentPos - event.delta,_map.getCurrentMapType().getMaxLevel()),_map.getCurrentMapType().getMinLevel());this.setValue(_currentPos,true);}.iwclosure(this)
);IWEventManager.addListener(_map,'onzoom',function(event){this.setValue(event.newZoomLevel,true);}.iwclosure(this)
);IWEventManager.addListener(_map,'aftercentered',function(event){this.setValue(_map.getZoom(),true);}.iwclosure(this)
);IWEventManager.addListener(_map,'aftermaptypechanged',function(event){_currentPos=_map.getZoom();_lowValue=_map.getCurrentMapType().getMaxLevel();_highValue=_map.getCurrentMapType().getMinLevel();this.setValue(_currentPos,true);}.iwclosure(this)
);this.loadLanguagePack(map.getOptions().getLanguage());}
function IWTabbedPanelControl(map,size){IWControl.call(this,map,'IWTabbedPanelControl');this.setSize=function(size){_size=size;_container.style.width=_size.getWidth()+ 'px';_container.style.height=_size.getHeight()+ 'px';};this.setTabTextSize=function(size){_tabsDiv.style.fontSize=size;};this.setTabColor=function(color){_tabsDiv.style.color=color;_borderColor=color;_panelsDiv.style.borderLeftColor=_borderColor;_panelsDiv.style.borderRightColor=_borderColor;_panelsDiv.style.borderBottomColor=_borderColor;};this.setTabHeight=function(height){_tabDivHeight=parseInt(height);};this.addPanel=function(panel,title){if((typeof panel.isPanelControl=="undefined")||!panel.isPanelControl()){alert('IWTabbedPanelControl:Only IWPanelControls allowed!');return;}
for(var i=0;i<_panels.length;i++){if(_panels[i][0]==panel){alert('IWTabbedPanelControl:Panel already added:'+panel);return;}
}
var tab=document.createElement('div');tab.style.position='absolute';tab.style.height=_tabDivHeight+'px';tab.style.cursor="pointer";tab.style.whiteSpace='nowrap';tab.appendChild(document.createTextNode(title));_tabsDiv.appendChild(tab);IWEventManager.addDOMListener(tab,'onclick',function(){this.showTab(panel);}.iwclosure(this));panel.setSize(new IWSize(_size.getWidth(),_size.getHeight()-_tabDivHeight-1));_panels.push(new Array(panel,title,tab));redrawTabDiv();if(_panels.length>=1)this.showTab(_panels[0][0]);};this.removePanel=function(panel){for(var i=0;i<_panels.length;i++){if(_panels[i][0]==panel){_tabsDiv.removeChild(_panels[i][2]);if(_currentVisiblePanel==panel)_panelsDiv.removeChild(_panels[i][0].getContainer());var temp=new Array();for(var j=0;j<_panels.length;j++){if(i!=j)temp.push(_panels[j])
}
_panels=temp;redrawTabDiv();if(_currentVisiblePanel==panel)this.showTab(_panels[0][0]);else
drawTabColors();return true;}
}
return false;};this.showTab=function(panel){for(var i=0;i<_panels.length;i++){if(_panels[i][0]==panel){if(_currentVisiblePanel)_panelsDiv.removeChild(_currentVisiblePanel.getContainer());_panelsDiv.appendChild(panel.getContainer());_currentVisiblePanel=panel;drawTabColors();return true;}
}
return false;};function redrawTabDiv(){var tabsize=_size.getWidth()/_panels.length;for(var i=0;i<_panels.length;i++){if(i==_panels.length-1)_panels[i][2].style.width=tabsize-2+'px';else
_panels[i][2].style.width=tabsize-1+'px';_panels[i][2].style.left=tabsize*i + 'px';}
}
function drawTabColors(){var greyscale=new Array('dddddd','cccccc','bbbbbb','aaaaaa','999999','888888','777777','666666','555555');if(_panels.length-1<greyscale.length)step=parseInt(greyscale.length/_panels.length-1);if(step==0)step++;var currentVisibleReached=false;for(var i=0;i<_panels.length;i++){if(_panels[i][0]==_currentVisiblePanel){_panels[i][2].style.backgroundColor=_panels[i][0].getBackgroundColor();_panels[i][2].style.borderLeftWidth='1px';_panels[i][2].style.borderLeftStyle='solid';_panels[i][2].style.borderLeftColor=_borderColor;_panels[i][2].style.borderTopWidth='1px';_panels[i][2].style.borderTopStyle='solid';_panels[i][2].style.borderTopColor=_borderColor;_panels[i][2].style.borderBottomWidth='0px';_panels[i][2].style.borderBottomStyle='solid';_panels[i][2].style.borderBottomColor=_borderColor;currentVisibleReached=true;}
else
{var j=i;if(currentVisibleReached)j--;if(i<greyscale.length){_panels[i][2].style.backgroundColor='#'+greyscale[step*j];}
else
{_panels[i][2].style.backgroundColor='#'+greyscale[greyscale.length-1];}
_panels[i][2].style.borderLeftWidth='1px';_panels[i][2].style.borderLeftStyle='solid';_panels[i][2].style.borderLeftColor=_borderColor;_panels[i][2].style.borderTopWidth='1px';_panels[i][2].style.borderTopStyle='solid';_panels[i][2].style.borderTopColor=_borderColor;_panels[i][2].style.borderBottomWidth='1px';_panels[i][2].style.borderBottomStyle='solid';_panels[i][2].style.borderBottomColor=_borderColor;}
if(i==_panels.length-1){_panels[i][2].style.borderRightWidth='1px';_panels[i][2].style.borderRightStyle='solid';_panels[i][2].style.borderRightColor=_borderColor;}else{_panels[i][2].style.borderRightWidth='0px';_panels[i][2].style.borderRightStyle='solid';_panels[i][2].style.borderRightColor=_borderColor;}
}
}
this.getContainer().id="divTabbedPanelControl";var _this=this;var _container=this.getContainer();var _tabDivHeight=15;var _borderColor="black";var _currentVisiblePanel=null;_panels=new Array();var _size;if(typeof size=='undefined')_size=new IWSize(100,100);else
_size=size;var _tabsDiv=document.createElement('div');_tabsDiv.id="divTabs";_container.appendChild(_tabsDiv);_tabsDiv.style.position="absolute";_tabsDiv.style.top='0px';_tabsDiv.style.left='0px';_tabsDiv.style.width=_size.getWidth()+ 'px';_tabsDiv.style.height=_tabDivHeight+'px';this.setTabTextSize('9pt');var _panelsDiv=document.createElement('div');_panelsDiv.id="divPanels";_container.appendChild(_panelsDiv);_panelsDiv.style.position="absolute";_panelsDiv.style.visibility='inherit';_panelsDiv.style.top=_tabDivHeight+1 + 'px';_panelsDiv.style.left='0px';_panelsDiv.style.width=_size.getWidth()-2 + 'px';_panelsDiv.style.height=_size.getHeight()- _tabDivHeight -2 + 'px';_panelsDiv.style.borderLeftWidth='1px';_panelsDiv.style.borderLeftStyle='solid';_panelsDiv.style.borderLeftColor=_borderColor;_panelsDiv.style.borderRightWidth='1px';_panelsDiv.style.borderRightStyle='solid';_panelsDiv.style.borderRightColor=_borderColor;_panelsDiv.style.borderBottomWidth='1px';_panelsDiv.style.borderBottomStyle='solid';_panelsDiv.style.borderBottomColor=_borderColor;this.setSize(size);}
function IWToolbarControl(map){IWControl.call(this,map,'IWToolbarControl');var self=this;var _items=new Object();var _container=this.getContainer();var _left=0;this.addItem=function(item){_items[item.getName()]=item;var event=new IWToolbarEvent();event.item=item;this.triggerBeforeAppended(event);var node=event.item.getNode();if(node==null){throw 'IWToolbarControl.addItem failed. The item.getNode()returns null.';}
iw.append(_container,node);var nodeWidth=parseInt(node.style.width);var nodeHeight=parseInt(node.style.height);_container.style.width=parseInt(_container.style.width)+ nodeWidth + 'px';this.triggerAfterAppended(event);node.style.left=_left + 'px';_left +=nodeWidth;if(nodeHeight>parseInt(_container.style.height)){_container.style.height=nodeHeight + 'px';}
var mapItem=null;try{mapItem=iw.create('<map name="toolbarMap' + item.getName()+ '">');}
catch(e){mapItem=iw.create('map');mapItem.name='toolbarMap' + item.getName();}
mapItem.id='toolbarMap' + item.getName();var area=iw.create('area');iw.append(mapItem,area);area.shape='rect';area.coords='0,0,' + nodeWidth + ',' + nodeHeight;try{iw.append(node,mapItem);}
catch(e){return;}
var blank=iw.create('img');iw.append(node,blank);blank.useMap='#toolbarMap' + item.getName();blank.src=iwconst.GLOBAL_APP_URL + 'img/symbols/blank.gif';blank.border='0px';blank.style.position='absolute';blank.style.top='0px';blank.style.height='100%';blank.style.width='100%';blank.style.left='0px';IWEventManager.addDOMListener(area,'onclick',function(e){var event=new IWToolbarEvent();event.item=item;self.triggerOnClickEvent(event);}.iwclosure(item)
);IWEventManager.addDOMListener(area,'onmouseover',function(e){var event=new IWToolbarEvent();event.item=item;self.triggerOnMouseOverEvent(event);}.iwclosure(item)
);IWEventManager.addDOMListener(area,'onmouseout',function(e){var event=new IWToolbarEvent();event.item=item;self.triggerOnMouseOutEvent(event);}.iwclosure(item)
);};this.removeItem=function(item){if(item !=null&&_items[item.getName()]){var node=item.getNode();var width=parseInt(node.style.width);_container.style.width=parseInt(_container.style.width)- width + 'px';_left=_left - width;var neighbor=node.nextSibling;while(neighbor){neighbor.style.left=parseInt(neighbor.style.left)- width + 'px';neighbor=neighbor.nextSibling;}
_items[item.getName()]=null;iw.remove(node);var event=new IWToolbarEvent();event.item=item;this.triggerAfterRemoved(event);}
};this.getItem=function(name){return _items[name];};this.toString=function(){return '[IWToolbarControl]';};this.triggerOnMouseOverEvent=function(event){IWEventManager.trigger(this,'onmouseover',event);};this.triggerOnMouseOutEvent=function(event){IWEventManager.trigger(this,'onmouseout',event);};this.triggerOnClickEvent=function(event){IWEventManager.trigger(this,'onclick',event);};this.triggerBeforeAppended=function(event){IWEventManager.trigger(this,'beforeappended',event);};this.triggerAfterAppended=function(event){IWEventManager.trigger(this,'afterappended',event);};this.triggerAfterRemoved=function(event){IWEventManager.trigger(this,'afterremoved',event);};function buildGUI(){_container.id='IWToolbarControl';_container.style.position='absolute';_container.style.height='0px';_container.style.width='0px';}
buildGUI();}
function IWToolbarItem(name){var _name=name;var _node=null;this.getName=function(){return _name;};this.getNode=function(){return _node;};this.setNode=function(node){_node=node;};this.toString=function(){return '[IWToolbarItem]name:' + _name;};}
function IWToolbarEvent(){this.item=null;this.toString=function(){return '[IWToolbarEvent]\u0020' +(this.item !=null ? this.item.getName():'');};}
function IWWindowControl(map,title,size){IWControl.call(this,map,'IWWindowControl');var self=this;var container=this.getContainer();var divHeader=iw.create('div');var spanTitle=iw.create('span');var closeable=true;var panel=new IWPanelControl(map,size);var hasGUI=false;var pack=new IWLanguagePack();pack.addLanguage(new IWLanguage('de',iwconst.LOCAL_APP_URL + 'lang/IWWindowControl.lang.de'));pack.addLanguage(new IWLanguage('en',iwconst.LOCAL_APP_URL + 'lang/IWWindowControl.lang.en'));pack.addLanguage(new IWLanguage('es',iwconst.LOCAL_APP_URL + 'lang/IWWindowControl.lang.es'));pack.addLanguage(new IWLanguage('tr',iwconst.LOCAL_APP_URL + 'lang/IWWindowControl.lang.tr'));pack.addLanguage(new IWLanguage('fr',iwconst.LOCAL_APP_URL + 'lang/IWWindowControl.lang.fr'));pack.addLanguage(new IWLanguage('it',iwconst.LOCAL_APP_URL + 'lang/IWWindowControl.lang.it'));var languageSupport=new Object();IWMultiLanguageSupport.call(languageSupport,map,pack);this.buildBody=function(container){};this.beforeOpen=function(){};this.afterOpen=function(){};this.beforeClose=function(){};this.afterClose=function(){};this.setCloseable=function(isCloseable){closeable=isCloseable;};this.isCloseable=function(){return closeable;};this.close=function(){self.triggerBeforeClose();self.beforeClose();self.setVisible(false);self.afterClose();self.triggerAfterClose();};this.open=function(){self.triggerBeforeOpen();self.beforeOpen();self.setVisible(true);self.afterOpen();self.triggerAfterOpen();};this.getSize=function(){return panel.getSize();};this.setSize=function(newSize){size=newSize;container.style.height=size.getHeight()+ 25 + 'px';container.style.width=size.getWidth()+ 'px';divHeader.style.width=size.getWidth()- 10 + 'px';panel.setSize(size);};this.getContentPanel=function(){return panel;};this.getTitle=function(){return spanTitle.innerHTML;};this.setTitle=function(title){spanTitle.innerHTML=title;};this.afterAppend=function(){IWEventManager.addListener(languageSupport,'afterlanguagepackloaded',function(event){if(hasGUI==false){buildGUI();hasGUI=true;}
}
);languageSupport.loadLanguagePack(map.getOptions().getLanguage());};this.triggerBeforeOpen=function(){IWEventManager.trigger(this,'beforeopen',null);};this.triggerAfterOpen=function(){IWEventManager.trigger(this,'afteropen',null);};this.triggerBeforeClose=function(){IWEventManager.trigger(this,'beforeclose',null);};this.triggerAfterClose=function(){IWEventManager.trigger(this,'afterclose',null);};function buildGUI(){divHeader.style.position='absolute';divHeader.style.top='0px';divHeader.style.font='bold 12px Arial';divHeader.style.color='#ffffff';divHeader.style.backgroundColor='#1B57B1';divHeader.style.padding='4px';divHeader.style.border='1px solid #ffffff';iw.append(divHeader,spanTitle);if(self.isCloseable()){var imgClose=iw.create('img');divHeader.appendChild(imgClose);imgClose.style.position='absolute';imgClose.style.right='4px';imgClose.style.top='6px';imgClose.src=iwconst.GLOBAL_APP_URL + 'img/symbols/close.png';imgClose.style.cursor='pointer';languageSupport.addLabelFor(new IWLabel('CLOSE',imgClose,'alt'));languageSupport.addLabelFor(new IWLabel('CLOSE',imgClose,'title'));IWEventManager.addDOMListener(imgClose,'onclick',self.close);}
iw.append(container,divHeader);panel.getContainer().style.position='absolute';panel.getContainer().style.top='25px';panel.getContainer().style.left='0px';panel.setBackgroundColor('#FFFFFF');panel.setOpacity(1);iw.append(container,panel.getContainer());self.buildBody(self.getContentPanel().getContainer());}
if(typeof size=='undefined'){size=new IWSize(100,100);}
if(typeof title=='undefined'){title='IWWindowControl';}
this.setSize(size);this.setTitle(title);this.allowDraggingOutsideParent(false);this.setDraggableContainer(divHeader);this.setDraggable(true);this.setVisible(false);}
function IWZoomBoxControl(map){IWControl.call(this,map,'IWZoomBoxControl');var self=this;var divZoomBox=this.getContainer();var divMiddel=null;var divContent=null;var startPosition=null;var mouseAdapter=new IWMouseAdapter();this.afterAppend=function(){buildGUI();};function buildGUI(){self.setId('IWZoomBoxControl');with(divZoomBox.style){backgroundColor='#ffffff';opacity='0.6';filter='alpha(opacity=60)';position='absolute';overflow='hidden';zIndex='0';}
var divHorizontal=iw.create('div');iw.append(divZoomBox,divHorizontal);with(divHorizontal.style){position='absolute';top='50%';left='0px';width='100%';height='1px';overflow='visible';}
divMiddel=iw.create('div');iw.append(divHorizontal,divMiddel);with(divMiddel.style){marginLeft='-48px';position='absolute';top='50%';left='50%';width='96px';height='96px';textAlign='center';color='#d0d0d0';overflow='visible';}
divContent=iw.create('div');iw.append(divMiddel,divContent);divContent.style.fontSize='96px';}
function redrawZoomingBox(mouseEvent){var x1=startPosition.getX();var y1=startPosition.getY();var x2=mouseEvent.position.getX();var y2=mouseEvent.position.getY();var boxLeft=Math.min(x2,x1)+ 2;var boxRight=Math.max(x2,x1);var boxWidth=Math.max(boxRight - boxLeft,0);var boxTop=Math.min(y2,y1)+ 2;var boxBottom=Math.max(y2,y1);var boxHeight=Math.max(boxBottom - boxTop,0);with(divZoomBox.style){visibility='visible';height=boxHeight + 'px';width=boxWidth + 'px';top=boxTop + 'px';left=boxLeft + 'px';}
if(x1<x2){divMiddel.style.marginTop='-54px';divContent.innerHTML='+';}
else
{divMiddel.style.marginTop='-63px';divContent.innerHTML='-';}
}
function prepareMouseZooming(mouseEvent){startPosition=mouseEvent.position;var onMouseMoveListener=IWEventManager.addDOMListener(document.body,'onmousemove',function(event){var mouseEvent=mouseAdapter.toMouseEvent(event,map.getContainer());if(map.getOptions().getSize().containsPoint(mouseEvent.position)){if(map.getZoomingAndDraggingContainer().style.cursor !='crosshair'){map.getZoomingAndDraggingContainer().style.cursor='crosshair';}
redrawZoomingBox(mouseEvent);}
}
);var onMouseUpListener=IWEventManager.addListener(map,'onmouseup',function(mouseEvent){divZoomBox.style.visibility='hidden';IWEventManager.removeListener(onMouseMoveListener);IWEventManager.removeListener(onMouseUpListener);onMouseMoveListener=null;onMouseUpListener=null;map.getZoomingAndDraggingContainer().style.cursor='auto';map.mouseZoom(startPosition,mouseEvent.position);}
);}
IWEventManager.addDOMListener(map.getZoomingAndDraggingContainer(),'onmousedown',function(event){var mouseEvent=mouseAdapter.toMouseEvent(event,map.getContainer());if((mouseEvent.button==IWButton.LEFT
&&map.getOptions().getLeftMouseAction()==IWMapOptions.CONTROL_ZOOM)||(mouseEvent.button==IWButton.RIGHT
&&map.getOptions().getRightMouseAction()==IWMapOptions.CONTROL_ZOOM))
{prepareMouseZooming(mouseEvent);}
}
);}
var iw={id:function(id){return document.getElementById(id);},search:function(node,id){if(node.id==id){return node;}
for(var i=0;i<node.childNodes.length;i++){var elem=this.search(node.childNodes[i],id);if(elem !=null){return elem;}
}
return null;},name:function(name){return document.getElementsByName(name);},tag:function(name,elem){return(elem||document).getElementsByTagName(name);},hasClass:function(name,type){var r=[];var re=new RegExp("(^|\\s)" + name + "(\\s|$)");var e=document.getElementsByTagName(type||"*");for(var i=0;i<e.length;i++){if(re.test(e[i]))r.push(e[i]);}
return r;},clone:function(obj){if(obj==null||typeof(obj)!='object'){return obj;}
var temp=new obj.constructor();for(var key in obj){if(obj[key].cloneNode){temp[key]=obj[key].cloneNode(true);}
else
{temp[key]=clone(obj[key]);}
}
return temp;},create:function(name){return document.createElement(name);},before:function(parent,before,elem){if(elem==null){elem=before;before=parent;parent=before.parentNode;}
try{parent.insertBefore(iw.checkElem(elem),before);}
catch(e){}
},append:function(parent,elem){parent.appendChild(iw.checkElem(elem));},checkElem:function(elem){if(elem !=null&&elem.constructor==String){var span=iw.create('span');span.innerHTML=elem;return span;}
return elem;},remove:function(elem){if(elem&&elem.parentNode){elem.parentNode.removeChild(elem);}
},empty:function(elem){while(elem.firstChild){if(elem.firstChild.firstChild)iw.empty(elem.firstChild.firstChild);iw.remove(elem.firstChild);}
},absolute:function(elem,parent){var e=elem;var x=0;var y=0;do
{var left=(e.style.left ? parseInt(e.style.left):0);var top=(e.style.top ? parseInt(e.style.top):0);if(e.style.position !='absolute'&&(left !=0||top !=0)){throw 'Invalid positioning attribute:' + e.style.position + '. Require absolute positioning.';}
x +=left;y +=top;e=e.parentNode;}
while(e.parentNode !=null&&e !=parent)return new IWPoint(x,y);},backgroundImage:function(parent,imageURL){var img=iw.create('img');with(img.style){position='absolute';top='0px';left='0px';width='100%';height='100%';}
if(imageURL.match('.*\.png$')){img.onload=function(){correctPNG(this);}.iwclosure(img);}
iw.append(parent,img);img.src=imageURL;},strict:function(types,args){if(types.length !=args.length){throw "Invalid number of arguments. Excepted " + types.length +",received " + args.length + " instead.";}
for(var i=0;i<args.length;i++){if(args[i].constructor !=types[i]){throw 'Invalid argument type. Excepted ' + types[i].name +',received ' + args[i].constructor.name + ' instead.';}
}
},extractFilePath:function(filepath){var m=filepath.match(/(.*)\/([^\/\\]+)(\.\w+)$/);if(m==null||m.length<=3){throw 'extractFilePath:invalid filepath '+filepath;}
return{path:m[1],file:m[2],extension:m[3]}
},fireMouseEvent:function(fireOnThis,eventName,mouseEvent){var screenX=0;var screenY=0;var clientX=0;var clientY=0;var button=0;if(typeof mouseEvent !='undefined'){screenX=mouseEvent.screenX;screenY=mouseEvent.screenY;clientX=mouseEvent.clientX;clientY=mouseEvent.clientY;button=mouseEvent.button;}
if(document.createEvent){var eventObj=document.createEvent('MouseEvents');eventObj.initMouseEvent(eventName,true,false,window,0,0,0,clientX,clientY,false,false,false,false,button,null);fireOnThis.dispatchEvent(eventObj);}
else if(document.createEventObject){var eventObj=document.createEventObject();eventObj.detail=0;eventObj.screenX=screenX;eventObj.screenY=screenY;eventObj.clientX=clientX;eventObj.clientY=clientY;eventObj.ctrlKey=false;eventObj.altKey=false;eventObj.shiftKey=false;eventObj.metaKey=false;eventObj.button=button;eventObj.relatedTarget=null;fireOnThis.fireEvent('on' + eventName,eventObj);}
},destroy:function(elem){var a=elem.attributes,i,l,n;if(a){l=a.length;for(i=0;i<l;i +=1){n=a[i].name;if(typeof elem[n]==='function'){elem[n]=null;}
}
}
a=elem.childNodes;if(a){l=a.length;for(i=l;i>0;i--){iw.destroy(a[i-1]);}
}
iw.remove(elem);if(typeof elem.outerHTML !='undefined'){try{elem.outerHTML=null;}
catch(e){}
}
},getPageOffset:function(){var offset=null;if(window.pageYOffset){offset=new IWPoint(window.pageXOffset,window.pageYOffset);}
else if(document.documentElement&&document.documentElement.scrollTop){offset=new IWPoint(document.documentElement.scrollLeft,document.documentElement.scrollTop);}
else if(document.body){offset=new IWPoint(document.body.scrollLeft,document.body.scrollTop);}
else
{offset=new IWPoint(0,0);}
return offset;},random:function(min,max){return Math.floor(Math.random()*(max - min + 1))+ min;},windowSize:function(){var width=0;var height=0;if(window.innerWidth&&window.innerHeight){width=window.innerWidth;height=window.innerHeight;}
else if(document.body.clientWidth&&document.body.clientHeight){width=document.documentElement.clientWidth;height=document.documentElement.clientHeight;}
else
{alert("Error reading window size!");return;}
return new IWSize(width,height);},replace:function(text,searchChars,replaceChars){if(text==null||searchChars==null){return null;}
if(text.length==0||searchChars.length==0){return text;}
if(replaceChars==null||replaceChars.length==0){replaceChars='';}
var lenSearchChars=searchChars.length;var lenReplaceChars=replaceChars.length;var pos=text.indexOf(searchChars,0);while(pos>=0){text=text.substring(0,pos)+ replaceChars + text.substring(pos + lenSearchChars);pos=text.indexOf(searchChars,pos + lenReplaceChars);}
return text;}
};function IWCloneable(){this.clone=function(){alert('Methode clone is not implemented.');};}
function IWDraggable(container,parent){var self=this;var _logger=log4javascript.getLogger('IWDraggable');var _parent=(typeof parent !='undefined' ? parent:null);var _draggable=false;var _container=(typeof container !='undefined' ? container:null);var _dragContainer=null;var _allowDraggingOutsideParent=false;var _dragButton=IWButton.LEFT;var _onMouseMoveListener=null;var _onMouseUpListener=null;var _onMouseDownListener=null;var _mouseAdapter=new IWMouseAdapter();var _startDraggingPosition=null;var _mouseOffsetPosition=null;var _lastPosition=null;var _draggingBounds=null;var _onMouseMoveContainer=window.document;this.allowDraggingOutsideParent=function(allowDraggingOutsideParent){if(allowDraggingOutsideParent==true||allowDraggingOutsideParent==false){_allowDraggingOutsideParent=allowDraggingOutsideParent;}
else
{throw 'Type exception allowDraggingOutsideParent:' + allowDraggingOutsideParent + '. A boolean value is needed.';}
};this.isDraggingOutsideParentAllowed=function(){return _allowDraggingOutsideParent;};this.setOnMouseMoveContainer=function(container){_onMouseMoveContainer=container;};this.getOnMouseMoveContainer=function(){return _onMouseMoveContainer;};this.setDraggingBounds=function(bounds){_draggingBounds=bounds;};this.getDraggingBounds=function(){return _draggingBounds;};this.setDraggable=function(draggable){if(draggable==true||draggable==false){_draggable=draggable;}
else
{throw 'Type exception draggable:' + draggable + '. A boolean value is needed.';}
if(_draggable){IWEventManager.addDOMListener(_dragContainer,'ondrag',function(event){noPropagation(event);return false;});_onMouseDownListener=IWEventManager.addDOMListener(_dragContainer,'onmousedown',function(event){if(!event){event=window.event;}
if(event.cancelable)event.preventDefault();var mouseEvent=_mouseAdapter.toMouseEvent(event,_parent);if(_draggable&&(_dragButton & mouseEvent.button)){var x=parseInt(_container.style.left);var y=parseInt(_container.style.top)
var offset=iw.absolute(_container,_parent);var mouseOffsetX=mouseEvent.position.getX()- offset.getX();var mouseOffsetY=mouseEvent.position.getY()- offset.getY();_mouseOffsetPosition=new IWPoint(mouseOffsetX,mouseOffsetY);var divPosX=mouseEvent.position.getX()- _mouseOffsetPosition.getX()-(offset.getX()- x);var divPosY=mouseEvent.position.getY()- _mouseOffsetPosition.getY()-(offset.getY()- y);_startDraggingPosition=new IWPoint(divPosX,divPosY);_lastPosition=_startDraggingPosition;document.body.style.cursor=_dragContainer.style.cursor='move';prepareDragging();}
}
);}
else
{if(_onMouseDownListener !=null){document.body.style.cursor=_dragContainer.style.cursor='auto';IWEventManager.removeListener(_onMouseDownListener);}
}
}
this.isDraggable=function(){return _draggable;};this.setDraggableContainer=function(container){if(container.style){_dragContainer=container;}
else
{throw 'Type exception container:' + container + '.';}
};this.getDraggableContainer=function(){return _dragContainer;};this.setDragButton=function(button){var intValue=parseInt(button)
if(intValue &(IWButton.LEFT + IWButton.MIDDLE + IWButton.RIGHT)){_dragButton=button;}
else
{throw 'Invalid drag button ' + button + '. ' +'Use one of the following constants:IWButton.LEFT,IWButton.MIDDLE or IWButton.RIGHT.';}
};this.getDragButton=function(){return _dragButton;};this.triggerBeforeDragged=function(event){_logger.debug('Calling triggerBeforeDragged with ' + event + '.');IWEventManager.trigger(this,'beforedragged',event);};this.triggerDrag=function(event){_logger.debug('Calling triggerDrag with ' + event + '.');IWEventManager.trigger(this,'ondrag',event);};this.triggerAfterDragged=function(event){_logger.debug('Calling triggerAfterDragged with ' + event + '.');IWEventManager.trigger(this,'afterdragged',event);};function prepareDragging(){_logger.trace('Function prepareDragging is called.');var dragEvent=new IWMouseEvent();dragEvent.position=_lastPosition;dragEvent.lastPosition=_lastPosition;dragEvent.offset=new IWPoint(0,0);self.triggerBeforeDragged(dragEvent);if(_onMouseMoveListener !=null){IWEventManager.removeListener(_onMouseMoveListener);}
if(_onMouseUpListener !=null){IWEventManager.removeListener(_onMouseUpListener);}
_onMouseMoveListener=IWEventManager.addDOMListener(_onMouseMoveContainer,'onmousemove',function(event){var mouseEvent=_mouseAdapter.toMouseEvent(event,_parent);if(_draggingBounds==null||_draggingBounds.containsPoint(mouseEvent.position)){dragContainer(mouseEvent);}
else
{dropContainer();}
}
);_onMouseUpListener=IWEventManager.addDOMListener(_onMouseMoveContainer,'onmouseup',function(event){dropContainer();}
);}
function dragContainer(mouseEvent){_logger.trace('Function dragContainer is called with ' + mouseEvent + '.');var mousePos=mouseEvent.position;var newDivPos=new IWPoint(mousePos.getX()- _mouseOffsetPosition.getX(),mousePos.getY()- _mouseOffsetPosition.getY());if(!_allowDraggingOutsideParent){var width=parseInt(_parent.style.width);var height=parseInt(_parent.style.height);if(newDivPos.getX()+ _container.offsetWidth>=width){newDivPos.setX(width - container.offsetWidth);}
else if(newDivPos.getX()<=0){newDivPos.setX(0);}
if(newDivPos.getY()+ container.offsetHeight>=height){newDivPos.setY(height - container.offsetHeight);}
else if(newDivPos.getY()<=0){newDivPos.setY(0);}
}
var x=parseInt(_container.style.left);var y=parseInt(_container.style.top);var offset=iw.absolute(_container,_parent);_container.style.left=newDivPos.getX()-(offset.getX()- x)+ 'px';_container.style.top=newDivPos.getY()-(offset.getY()- y)+ 'px';var dragX=newDivPos.getX()- _lastPosition.getX();var dragY=newDivPos.getY()- _lastPosition.getY();var dragEvent=new IWMoveEvent();dragEvent.position=newDivPos;dragEvent.lastPosition=_lastPosition;dragEvent.offset=new IWPoint(dragX,dragY);_lastPosition=newDivPos;self.triggerDrag(dragEvent);};function dropContainer(){_logger.trace('Function dropContainer is called.');IWEventManager.removeListener(_onMouseMoveListener);IWEventManager.removeListener(_onMouseUpListener);_onMouseMoveListener=null;_onMouseUpListener=null;_dragContainer.style.cursor='pointer';document.body.style.cursor='auto';var dragX=_lastPosition.getX()- _startDraggingPosition.getX();var dragY=_lastPosition.getY()- _startDraggingPosition.getY();var dragEvent=new IWMoveEvent();dragEvent.position=_lastPosition;dragEvent.lastPosition=_startDraggingPosition;dragEvent.offset=new IWPoint(dragX,dragY);self.triggerAfterDragged(dragEvent);}
this.setDraggableContainer(_container);}
function IWNodeElement(name){var _parent=null;var _children=new Array();var _name=name;var _marked=false;var _collapsed=false;this.isNodeElement=true;this.setParent=function(parent){if(parent !=null&&!parent.isNodeElement){throw 'NodeElement.setParent:"'+ parent + '" does not implement tree functionality!';}
_parent=parent;};this.hasChildren=function(){return(_children !=null&&_children.length !=0);};this.hasChild=function(child){for(var i=0;i<_children.length;i++){if(child==_children[i]){return true;}
}
return false;};this.getChildren=function(){return _children;};this.getParent=function(){return _parent;};this.add=function(node){if(!node.isNodeElement){throw 'NodeElement.add:"'+ node + '" does not implement tree functionality!';}
if(this.hasChild(node)||this.checkIfExistsAsParent(node)||node.getParent()!=null)
{throw 'NodeElement.add:Node "'+node.getName()+'" could not be added';}
node.setParent(this);this.getChildren().push(node);};this.remove=function(node){if(!this.hasChild(node)){throw 'NodeElement.remove:Node not found';}
node.setParent(null);for(var i=0;i<this.getChildren().length;i++){if(node==this.getChildren()[i]){this.getChildren().splice(i,1);break;}
}
};this.getName=function(){return _name;};this.setName=function(name){_name=name;};this.checkIfExistsAsParent=function(node){if(node==this){return true;}
if(this.getParent()==null){return false;}
return this.getParent().checkIfExistsAsParent(node);};this.mark=function(){var oldValue=_marked;_marked=true;if(oldValue !=_marked){this.triggerStateChangedEvent();}
};this.unmark=function(){var oldValue=_marked;_marked=false;if(oldValue !=_marked){this.triggerStateChangedEvent();}
};this.isMarked=function(){return _marked;};this.collapse=function(){var oldValue=_collapsed;_collapsed=true;if(oldValue !=_collapsed){this.triggerViewChangedEvent();}
};this.expand=function(){var oldValue=_collapsed;_collapsed=false;if(oldValue !=_collapsed){this.triggerViewChangedEvent();}
};this.isCollapsed=function(){return _collapsed;};this.triggerStateChangedEvent=function(){IWEventManager.trigger(this,'statechanged',null);};this.triggerViewChangedEvent=function(){IWEventManager.trigger(this,'viewchanged',null);};}
function IWSessionKeeper(){var _img=iw.create('img');_img.width='0px';_img.height='0px';_img.style.position='absolute';_img.style.left='0px';_img.style.top='0px';_img.style.display='none';document.body.appendChild(_img);if(iwconst.KEEPALIVE_INTERVAL>0){window.setInterval
(function(){_img.src=iwconst.GLOBAL_APP_URL +	'img/symbols/blank.gif?randomKey='+iw.random(0,1000000000);}
,iwconst.KEEPALIVE_INTERVAL*1000);}
};function IWFormatNodeEvent(){this.obj=null;this.node=null;this.toString=function(){return '[IWFormatNodeEvent]';};}
function IWTreeNode(node){var _node=node;var _state=null;var _lastChild=null;var _checked=null;var _container=null;var _treeImage=null;var _parent=null;var _children=new Array();var _checkbox=null;this.hasParent=function(){return _parent !=null;};this.setParent=function(parent){_parent=parent;};this.hasChildren=function(){return(_children.length>0);};this.addChild=function(treeNode){_children.push(treeNode);};this.getChildren=function(){return _children;};this.getNode=function(){return _node;};this.getCheckbox=function(){return _checkbox;};this.setCheckbox=function(checkbox){_checkbox=checkbox;};this.setState=function(state){var value=state.toLowerCase();if(value=='expanded'||value=='collapsed'){_state=value;}
else
{throw 'Invalid state:' + state;}
};this.getState=function(){return _state;};this.setContainer=function(container){_container=container;};this.getContainer=function(){return _container;};this.setLastChild=function(lastChild){_lastChild=lastChild;};this.isLastChild=function(){return _lastChild;};this.isExpanded=function(){return(_state=='expanded');};this.isCollapsed=function(){return(_state=='collapsed');};this.isChecked=function(){return _checked;};this.setTreeImage=function(treeImage){_treeImage=treeImage;};this.getTreeImage=function(){return _treeImage;};this.toString=function(){return '[IWTreeNode]' +'node:' + _node.toString()+ ',' +'state:' + _state + ',' +'hasParent:' + this.hasParent()+ ',' +'hasChildren:' + this.hasChildren()+ ',' +'isLastChild:' + _lastChild + ',' +'isExpanded:' + this.isExpanded()+ ',' +'isCollapsed:' + this.isCollapsed()+ ',' +'isChecked:' + this.isChecked();};}
function IWTreeNodeClickedEvent(){this.treeNode=null;this.toString=function(){return '[IWTreeNodeClickedEvent]' +'treeNode:' + this.treeNode.toString();};}
function IWTreeView(parent){var self=this;var _blankImageURL=iwconst.GLOBAL_APP_URL + 'img/controls/treeview/blank.gif';var _backgroundLineImageURL=iwconst.GLOBAL_APP_URL + 'img/controls/treeview/background_line.gif';var _childImageURL=iwconst.GLOBAL_APP_URL + 'img/controls/treeview/child.gif';var _lastChildImageURL=iwconst.GLOBAL_APP_URL + 'img/controls/treeview/last_child.gif';var _parentCollapsedImageURL=iwconst.GLOBAL_APP_URL + 'img/controls/treeview/parent_collapsed.gif';var _lastParentCollapsedImageURL=iwconst.GLOBAL_APP_URL + 'img/controls/treeview/last_parent_collapsed.gif';var _parentExpandedImageURL=iwconst.GLOBAL_APP_URL + 'img/controls/treeview/parent_expanded.gif';var _lastParentExpandedImageURL=iwconst.GLOBAL_APP_URL + 'img/controls/treeview/last_parent_expanded.gif';var _nodes=new Array();var _treenodes=new Array();var _container=iw.create('div');var _parent=parent;this.addNodes=function(nodes){for(var i=0;i<nodes.length;i++){this.addNode(nodes[i]);}
};this.addNode=function(node){_nodes.push(node);};this.getNodes=function(){return _nodes;};this.getContainer=function(){return _container;};this.getParent=function(){return _parent;};this.getTreenodes=function(){return _treenodes;};this.build=function(){iw.empty(_parent);_container.style.visibility='hidden';iw.append(_parent,_container);for(var i=0;i<_nodes.length;i++){var node=_nodes[i];if(i==(_nodes.length-1)){createChildDiv(null,node,2,'1',false);}
else
{createChildDiv(null,node,2,'0',false);}
}
_container.style.visibility='visible';};function buildGUI(container){container.id='treeview';container.style.position='relative';container.style.top='0px';container.style.left='0px';container.style.width=_parent.style.width;container.style.height=_parent.style.height;container.style.overflow='auto';}
function createChildDiv(parentNode,node,depth,islastchild,isHidden){var nodeContainer=iw.create('div');iw.append(_container,nodeContainer);nodeContainer.style.display='block';var treeNode=new IWTreeNode(node);if(node.isCollapsed()){treeNode.setState('collapsed');}
else
{treeNode.setState('expanded');}
treeNode.setContainer(nodeContainer);treeNode.setLastChild(islastchild.charAt(islastchild.length-1)=='1');IWEventManager.addListener(node,'statechanged',function(){this.getCheckbox().checked=this.getNode().isMarked();}.iwclosure(treeNode)
);IWEventManager.addListener(node,'viewchanged',function(){if(this.getNode().isCollapsed()){collapse(this);}
else
{expand(this);}
}.iwclosure(treeNode)
);if(parentNode !=null){parentNode.addChild(treeNode);treeNode.setParent(parentNode);}else{_treenodes.push(treeNode);}
var table=iw.create('table');iw.append(nodeContainer,table);table.border='0px';table.cellPadding='0px';table.cellSpacing='0px';var tr=table.insertRow(0);for(i=0;i<depth;i++){var td=iw.create('td');iw.append(tr,td);td.style.verticalAlign='top';td.style.margin='0px';if(i==(depth-1)){var checkbox=null;if(IWBrowser.isInternetExplorer()){if(node.isMarked()){checkbox=iw.create('<input type=\'checkbox\' checked>');}
else
{checkbox=iw.create('<input type=\'checkbox\'>');}
}
else
{checkbox=iw.create('input');checkbox.type='checkbox';checkbox.checked=node.isMarked();}
checkbox.style.border='0px';treeNode.setCheckbox(checkbox);td.className='treeviewNode';iw.append(td,checkbox);var event=new IWFormatNodeEvent();event.obj=null;event.node=node;self.triggerFormatNodeEvent(event);if(event.obj !=null){iw.append(td,event.obj);}
else
{iw.append(td,node.getName());}
IWEventManager.addDOMListener(checkbox,'onclick',function(){this.getNode().setVisible(this.getCheckbox().checked);var event=new IWTreeNodeClickedEvent();event.treeNode=this;self.triggerAfterNodeClickedEvent(event);}.iwclosure(treeNode)
);}
else
{td.style.width='16px';td.style.height='22px';var image=iw.create('img');iw.append(td,image);treeNode.setTreeImage(image);if(i==(depth-2)){if(node.hasChildren()){if(treeNode.isExpanded()){if(islastchild.charAt(i)=='1'){image.src=_lastParentExpandedImageURL;}
else
{image.src=_parentExpandedImageURL;}
}
else
{if(islastchild.charAt(i)=='1'){image.src=_lastParentCollapsedImageURL;}
else
{image.src=_parentCollapsedImageURL;}
}
image.style.verticalAlign='top';image.style.cursor='pointer';IWEventManager.addDOMListener(image,'onclick',function(e){if(this.isCollapsed()){expand(this);}
else if(this.isExpanded()){collapse(this);}
}.iwclosure(treeNode)
);}
else
{if(islastchild.charAt(i)=='1'){image.src=_lastChildImageURL;}
else
{image.src=_childImageURL;}
}
}
else
{image.src=_blankImageURL;if(islastchild.charAt(i)=='0'){td.style.backgroundImage='url(' + _backgroundLineImageURL + ')';td.style.backgroundRepeat='repeat-y';}
}
image.style.display='block';}
}
if(isHidden){treeNode.getContainer().style.display='none';treeNode.getContainer().style.visibility='hidden';}
if(node.hasChildren()){depth++;var children=node.getChildren();for(var i=0;i<children.length;i++){var child=children[i];var s=islastchild;if(i==(children.length-1)){s +='1';}
else
{s +='0';}
createChildDiv(treeNode,child,depth,s,(isHidden||treeNode.isCollapsed()));}
}
}
this.triggerAfterNodeClickedEvent=function(event){IWEventManager.trigger(this,'afternodeclicked',event);};this.triggerFormatNodeEvent=function(event){IWEventManager.trigger(this,'formatnode',event);};function collapse(treeNode){collapseChildren(treeNode);treeNode.setState('collapsed');treeNode.getTreeImage().alt='collapse';if(treeNode.isLastChild()==true){treeNode.getTreeImage().src=_lastParentCollapsedImageURL;}
else
{treeNode.getTreeImage().src=_parentCollapsedImageURL;}
}
function collapseChildren(treeNode){var children=treeNode.getChildren();for(var i=0;i<children.length;i++){var treeNode=children[i];treeNode.getContainer().style.display='none';treeNode.getContainer().style.visibility='hidden';if(treeNode.hasChildren()){collapseChildren(treeNode);}
}
}
function expand(treeNode){expandChildren(treeNode);treeNode.setState('expanded');if(treeNode.isLastChild()==true){treeNode.getTreeImage().src=_lastParentExpandedImageURL;}
else
{treeNode.getTreeImage().src=_parentExpandedImageURL;}
}
function expandChildren(treeNode){var children=treeNode.getChildren();for(var i=0;i<children.length;i++){var treeNode=children[i];treeNode.getContainer().style.display='block';treeNode.getContainer().style.visibility='visible';if(treeNode.hasChildren()&&treeNode.isExpanded()){expandChildren(treeNode);}
}
}
buildGUI(_container);}
function IWAbstractPosition(){this.getX=function(){alert('IWAbstractPosition.getX():Method not implemented');return 'undefined';};this.getY=function(){alert('IWAbstractPosition.getY():Method not implemented');return 'undefined';};this.equals=function(otherPoint){alert('IWAbstractPosition.equals():Method not implemented');return 'undefined';};this.toString=function(){return 'IWAbstractPosition';};}
function IWBounds(coordNW,coordSE){var _coordNW=coordNW;var _coordSE=coordSE;this.getNorthWest=function(){return _coordNW;};this.getSouthEast=function(){return _coordSE;};this.getCenter=function(){var iCenterX=_coordNW.getX()+(_coordSE.getX()- _coordNW.getX())/2;var iCenterY=_coordSE.getY()+(_coordNW.getY()- _coordSE.getY())/2;return new _coordNW.constructor(iCenterX,iCenterY);};this.getSize=function(){var width=_coordSE.getX()- _coordNW.getX();var height=_coordNW.getY()- _coordSE.getY();return new IWSize(width,height);};this.isEmpty=function(){return _coordNW.equals(_coordSE);};this.containsCoordinate=function(coord){var minX=Math.min(_coordNW.getX(),_coordSE.getX());var maxX=Math.max(_coordNW.getX(),_coordSE.getX());if(minX<=coord.getX()&&maxX>=coord.getX()){var minY=Math.min(_coordNW.getY(),_coordSE.getY());var maxY=Math.max(_coordNW.getY(),_coordSE.getY());if(minY<=coord.getY()&&maxY>=coord.getY()){return true;}
}
return false;};this.extendBy=function(coord){if(coord.getX()<_coordNW.getX())_coordNW=new _coordNW.constructor(coord.getX(),_coordNW.getY());else if(coord.getX()>_coordSE.getX())_coordSE=new _coordSE.constructor(coord.getX(),_coordSE.getY());if(coord.getY()>_coordNW.getY())_coordNW=new _coordNW.constructor(_coordNW.getX(),coord.getY());else if(coord.getY()<_coordSE.getY())_coordSE=new _coordSE.constructor(_coordSE.getX(),coord.getY());};this.equals=function(boundsOther){if(this.getNorthWest().equals(boundsOther.getNorthWest()))if(this.getSouthEast().equals(boundsOther.getSouthEast()))return true;return false;};this.contains=function(boundsOther){if(this.containsCoordinate(boundsOther.getNorthWest()))if(this.containsCoordinate(boundsOther.getSouthEast()))return true;return false;};this.intersects=function(boundsOther){if(this.containsCoordinate(boundsOther.getNorthWest())||boundsOther.containsCoordinate(this.getNorthWest()))return true;if(this.containsCoordinate(boundsOther.getSouthEast())||boundsOther.containsCoordinate(this.getSouthEast()))return true;var thisNorthEast=new _coordNW.constructor(_coordSE.getX(),_coordNW.getY());var otherNorthEast=new _coordNW.constructor(boundsOther.getSouthEast().getX(),boundsOther.getNorthWest().getY());if(this.containsCoordinate(otherNorthEast)||boundsOther.containsCoordinate(thisNorthEast))return true;var thisSouthWest=new _coordNW.constructor(_coordNW.getX(),_coordSE.getY());var otherSouthWest=new _coordNW.constructor(boundsOther.getNorthWest().getX(),boundsOther.getSouthEast().getY());if(this.containsCoordinate(otherSouthWest)||boundsOther.containsCoordinate(thisSouthWest))return true;return false;};this.toString=function(){return _coordNW.toString()+ ' - ' + _coordSE.toString();};}
function IWCoordinate(x,y){IWAbstractPosition.call(this);IWCloneable.call(this);var _EPSILON=5;var _x=parseFloat(x);var _y=parseFloat(y);if(typeof y=='undefined'){_x=0;_y=0;}
this.getX=function(){return _x;};this.setX=function(x){_x=x;};this.getY=function(){return _y;};this.setY=function(y){_y=y;};this.equals=function(otherCoord){return this.distanceFrom(otherCoord)<_EPSILON;};this.distanceFrom=function(otherCoord){var nDiffX=_x - otherCoord.getX();var nDiffY=_y - otherCoord.getY();return Math.sqrt(nDiffX*nDiffX + nDiffY*nDiffY);};this.clone=function(){return new IWCoordinate(_x,_y);};this.toString=function(){return '(' + _x + '/' + _y + ')';};}
function IWIcon(iconURL,hotspot,size){var _iconURL='';var _hotspot=new IWPoint(0,0);var _size=null;this.setURL=function(iconURL){_iconURL=iconURL;};this.getURL=function(){return _iconURL;};this.setHotspot=function(hotspot){_hotspot=hotspot;};this.getHotspot=function(){return _hotspot;};this.setSize=function(size){iw.strict([IWSize],[size]);_size=size;};this.getSize=function(){return _size;};this.toString=function(){return '[IWIcon]url:' + _iconURL + ',' +'hotspot:' +(_hotspot !=null ? _hotspot.toString():'null')+ ',' +'size:' +(_size !=null ? _size.toString():'null');};if(typeof iconURL !='undefined'){this.setURL(iconURL);}
if(typeof hotspot !='undefined'){this.setHotspot(hotspot);}
if(typeof size !='undefined'){this.setSize(size);}
}
function IWLine(point1,point2){var _dSlope;var _dIntercept;this.getSlope=function(){return _dSlope;};this.getIntercept=function(){return _dIntercept;};this.getIntersection=function(other){var x;var y;if(_dSlope==other.getSlope())x=-1000000;else
x=(other.getIntercept()- _dIntercept)/(_dSlope - other.getSlope());y=_dSlope*x + _dIntercept;return new IWCoordinate(x,y);};this.toString=function(){return "y=" + _dSlope + "*x + " + _dIntercept;};if(point1.getX()==point2.getX())_dSlope=1000;else
_dSlope=(point2.getY()- point1.getY())/(point2.getX()- point1.getX());_dIntercept=point1.getY()- _dSlope*point1.getX();}
function IWPoint(x,y){IWAbstractPosition.call(this);IWCloneable.call(this);var _x=0;var _y=0;this.setX=function(x){var intVal=Math.floor(x);if(intVal==NaN){throw 'IWPoint:X parameter must be an integer value.';}
_x=intVal;};this.getX=function(){return _x;};this.setY=function(y){var intVal=Math.floor(y);if(intVal==NaN){throw 'IWPoint:Y parameter must be an integer value.';}
_y=intVal;};this.getY=function(){return _y;};this.substract=function(other){return new IWPoint(_x - other.getX(),_y - other.getY());};this.add=function(other){return new IWPoint(_x + other.getX(),_y + other.getY());};this.distanceFrom=function(other){var iDiffX=_x - other.getX();var iDiffY=_y - other.getY();return Math.sqrt(iDiffX*iDiffX + iDiffY*iDiffY);};this.equals=function(otherPoint){return(otherPoint.getX()==_x&&otherPoint.getY()==_y);};this.clone=function(){return new IWPoint(_x,_y);};this.toString=function(){return '[IWPoint](' + _x + '/' + _y + ')';};if(typeof x !='undefined'&&typeof y !='undefined'){this.setX(x);this.setY(y);}
}
function IWRange(min,max){var _min=Number.MIN_VALUE;var _max=Number.MAX_VALUE;this.setMin=function(min){if(isNaN(min)){throw 'Minimum value is not a number:' + min;}
if(min>_max){throw 'Minimum value is greater than the maximum value:' + min + '>' + _max;}
_min=min;};this.setMax=function(max){if(isNaN(max)){throw 'Maximum value is not a number:' + max;}
if(max<_min){throw 'Maximum value is less than the minimum value:' + max + '<' + _min;}
_max=max;};this.getMin=function(){return _min;};this.getMax=function(){return _max;};this.contains=function(value){iw.strict([Number],arguments)
return(_min<=value&&value<=_max);}
this.toString=function(){return '[IWRange]' + _min + ' .. ' + _max;};this.setMin(min);this.setMax(max);}
function IWScaleDependentIcon(iconURL,hotspot,size,range){IWIcon.call(this,iconURL,hotspot,size);var _range=new IWRange(0,100);this.setRange=function(range){iw.strict([IWRange],[range]);_range=range;};this.getRange=function(){return _range;};this.toString=function(){return '[IWScaleDependentIcon]';};if(typeof range !='undefined'){this.setRange(range);}
}
function IWSize(width,height){IWCloneable.call(this);var _width=0;var _height=0;this.setWidth=function(width){var intVal=parseInt(width);if(intVal==NaN||intVal<0){throw 'IWSize:Width parameter must be a positive integer value.';}
_width=intVal;};this.getWidth=function(){return _width;};this.setHeight=function(height){var intVal=parseInt(height);if(intVal==NaN||intVal<0){throw 'IWSize:Height parameter must be a positive integer value.';}
_height=intVal;};this.getHeight=function(){return _height;};this.equals=function(sizeOther){return(this.getWidth()==sizeOther.getWidth()&&this.getHeight()==sizeOther.getHeight());};this.compareTo=function(otherSize){var area1=_width*_height;var area2=otherSize.getWidth()*otherSize.getHeight();if(area1>area2){return 1;}
else if(area1<area2){return -1;}
else
{return 0;}
}
this.containsPoint=function(point){return(point.getX()>=0&&point.getX()<=this.getWidth()
&&point.getY()>=0&&point.getY()<=this.getHeight());};this.multiplicate=function(scalar){return new IWSize(_width*scalar,_height*scalar);};this.divide=function(scalar){return new IWSize(_width/scalar,_height/scalar);};this.clone=function(){return new IWSize(_width,_height);};this.toString=function(){return '[IWSize]' + _width + ' x ' + _height;};this.setWidth(width);this.setHeight(height);}
function IWCopyrightChangedEvent(){this.copyright='';}
function IWEventListener(){this.id=IWEventListener.prototype.instanceId++;this.type='';this.objectHandler=null;this.removeFunction=null;this.obj=null;this.toString=function(){return '[IWEventListener]' +'id:' + this.id + ',' +'type:' + this.type + ',' +'objectHandler:' + this.objectHandler + ',' +'removeFunction:' + this.removeFunction + ',' +'obj:' + this.obj;};}
IWEventListener.prototype.instanceId=0;var IWEventManager=new function(){var logger=log4javascript.getLogger('IWEventManager');this.addListener=function(obj,eventName,eventHandler){var eventListener=this.bind(obj,eventName,null,eventHandler);logger.info('Calling addListener ' + eventListener.id + ' of type ' + eventListener.type + ' for ' + eventName + ' on ' + getObjectName(obj));return eventListener;};this.addDOMListener=function(obj,eventName,eventHandler){var eventListener=null;if(obj.addEventListener||obj.attachEvent){eventListener=new IWEventListener();if(!obj.domListenerDelegate)obj.domListenerDelegate=new Object();if(!obj.domListenerDelegate[eventName])obj.domListenerDelegate[eventName]=new Array();if(obj.addEventListener){var name=eventName.indexOf('on')==0 ? eventName.substring(2):eventName;obj.addEventListener(name,eventHandler,false);eventListener.type='W3C';eventListener.removeFunction=function(){obj.removeEventListener(name,eventHandler,false);var arr=obj.domListenerDelegate[eventName];for(var i=arr.length;i>0;i--){if(arr[(i-1)].method==eventHandler){arr.splice(i-1,1);}
}
};}
else if(obj.attachEvent){obj.attachEvent(eventName,eventHandler);eventListener.type='MS';eventListener.removeFunction=function(){obj.detachEvent(eventName,eventHandler);var arr=obj.domListenerDelegate[eventName];for(var i=arr.length;i>0;i--){if(arr[(i-1)].method==eventHandler){arr.splice(i-1,i)
}
}
};}
var objectHandler=new Object();objectHandler.listenerObject=eventListener;objectHandler.method=eventHandler;obj.domListenerDelegate[eventName].push(objectHandler);}
else
{eventListener=this.bind(obj,eventName,null,eventHandler);}
logger.info('Calling addDOMListener ' + eventListener.id + ' of type ' + eventListener.type + ' for ' + eventName + ' on ' + getObjectName(obj));return eventListener;};this.trigger=function(obj,eventName,theEvent){try{var f=eval('obj.' + eventName);if(typeof f !='undefined'){logger.debug('Triggering ' + eventName + ' on ' + obj + ' with parameter ' + theEvent);f(theEvent);}
}
catch(e){logger.error('Trigger error:' + e);}
};this.removeListener=function(eventListener){if(eventListener==null){}
else if(eventListener.removeFunction){logger.debug('Calling removeFunction for event listener ' + eventListener.id + ' of type ' + eventListener.type);eventListener.removeFunction();}
else
{logger.error('Could not remove event listener ' + eventListener + ' ' + this.removeListener.caller);}
return null;};this.clearListeners=function(obj,eventName){if(obj.iwListenerDelegate&&obj.iwListenerDelegate[eventName]){obj.iwListenerDelegate[eventName]=null;logger.debug('Removed all ' + eventName + ' listeners from ' + obj);}
if(obj.domListenerDelegate&&obj.domListenerDelegate[eventName]){var arr=obj.domListenerDelegate[eventName];for(var i=arr.length;i>0;i--){arr[(i-1)].listenerObject.removeFunction();}
logger.debug('Removed all ' + eventName + ' listeners from ' + obj);}
else
{logger.debug('Removing ' + eventName + ' listeners from ' + obj + ':Nothing registered');}
};this.clearInstanceListeners=function(obj){if(typeof obj.iwListenerDelegate !='undefined'){obj.iwListenerDelegate=null;}
if(typeof obj.domListenerDelegate !='undefined'){for(eventName in obj.domListenerDelegate){var arr=obj.domListenerDelegate[eventName];for(var i=arr.length;i>0;i--){arr[(i-1)].listenerObject.removeFunction();}
}
}
};this.bind=function(obj,eventName,listenerObj,eventHandler){logger.debug('Binding ' + eventName + ' to object ' + getObjectName(obj));if(!obj.iwListenerDelegate){obj.iwListenerDelegate=new Object();}
if(!obj.iwListenerDelegate[eventName]){obj.iwListenerDelegate[eventName]=new Array();}
var objectHandler=new Object();objectHandler.listenerObject=listenerObj;objectHandler.method=eventHandler;obj.iwListenerDelegate[eventName].push(objectHandler);obj[eventName]=function(e){if(obj.iwListenerDelegate !=null&&obj.iwListenerDelegate[eventName]!=null){var objectHandlerArr=obj.iwListenerDelegate[eventName];for(var i=objectHandlerArr.length;i>0;i--){var theObjectHandler=objectHandlerArr[(i-1)];var theObject=theObjectHandler.listenerObject;var theMethod=theObjectHandler.method;try{if(theObject !=null){theMethod.call(theObject,e);}
else
{theMethod(e);}
}
catch(ex){logger.warn('Listener method for ' + eventName + ' threw an exception:' + theMethod + ' exception:' + ex);}
}
}
};var eventListener=new IWEventListener();eventListener.type='IW';eventListener.objectHandler=objectHandler;eventListener.removeFunction=function(){if(obj==null){logger.debug('Removing event listener aborted. The object is not accessible.');}
if(obj.iwListenerDelegate==null){logger.debug('Removing event listener aborted. The object has no listener delegate.');}
else
{var arr=obj.iwListenerDelegate[eventName];for(var i=arr.length;i>0;i--){if(arr[(i-1)]==eventListener.objectHandler){arr.splice(i-1,1);logger.debug('Removing event listener ' + eventListener.id + ' of type ' + eventListener.type);}
}
}
};return eventListener;};function getObjectName(obj){if(obj.id&&(('' + obj.id).length>0)){return obj.id;}
else if(obj.name&&(('' + obj.name).length>0)){return obj.name;}
else if(obj.toString&&obj.toString().length>0){return obj.toString();}
else
{return 'unnamed object';}
}
}
function IWLanguageChangedEvent(){this.language='';}
function IWMapCenteredEvent(){this.coordinate=null;this.lastCoordinate=null;this.offset=null;this.zoom=null;this.lastZoom=null;this.toString=function(){return '[IWMapCenteredEvent]' +'coordinate:' + this.coordinate + ',' +'last coordinate:' + this.lastCoordinate + ',' +'offset:' + this.offset + ',' +'zoom:' + this.zoom + ',' +'last zoom:' + this.lastZoom;};}
function IWMapInitializedEvent(){this.toString=function(){return '[IWMapInitializedEvent]';};}
function IWMapTypeAvailabilityChangedEvent(){this.type=null;this.available=null;this.toString=function(){return '[IWMapTypeAvailabilityChangedEvent]' + 'type:' + this.type + ',available:' + this.available;};}
function IWMapTypeChangedEvent(){this.oldMapType=null;this.newMapType=null;this.toString=function(){return '[IWMapTypeChangedEvent]';};}
function IWMapTypesChangedEvent(){this.mapTypes=null;this.toString=function(){return '[IWMapTypesChangedEvent]';};}
function IWMouseAdapter(){var _lastPosition=null;var _lastEvent=null;var _lastMouseEvent=null;this.getButton=function(event){if(!event){event=window.event;}
if(event.which==null){return(event.button<2)? IWButton.LEFT:((event.button==4)? IWButton.MIDDLE:IWButton.RIGHT);}
else
{return(event.which<2)? IWButton.LEFT:((event.which==2)? IWButton.MIDDLE:IWButton.RIGHT);}
}
this.toMouseEvent=function(event,container){if(!event){event=window.event;}
if(_lastEvent&&_lastEvent==event){return _lastMouseEvent;}
var mouseEvent=new IWMouseEvent();var pageOffset=iw.getPageOffset();mouseEvent.scrollbarOffset=pageOffset;var position=this.getPosition(event,container);mouseEvent.position=new IWPoint(position.getX()+ pageOffset.getX(),position.getY()+ pageOffset.getY());if(_lastPosition==null){mouseEvent.lastPosition=mouseEvent.position;}
else
{mouseEvent.lastPosition=_lastPosition;}
_lastPosition=mouseEvent.position;var xOffset=mouseEvent.position.getX()- mouseEvent.lastPosition.getX();var yOffset=mouseEvent.position.getY()- mouseEvent.lastPosition.getY();mouseEvent.offset=new IWPoint(xOffset,yOffset);mouseEvent.button=this.getButton(event);_lastMouseEvent=mouseEvent;_lastEvent=event;return mouseEvent;}
this.getPosition=function(event,container){var x=0;var y=0;var left=0;var top=0;if(!event){event=window.event;}
if(typeof container !='undefined'&&container !=null){left=(container.offsetLeft ? container.offsetLeft:0);top=(container.offsetTop ? container.offsetTop:0);while(container.offsetParent){container=container.offsetParent;left +=(container.offsetLeft ? container.offsetLeft:0);top +=(container.offsetTop ? container.offsetTop:0);}
}
if(event.clientX){x=event.clientX - left;y=event.clientY - top;}
return new IWPoint(x,y);}
this.toString=function(){return '[IWMouseAdapter]last mouse event:' +(_lastMouseEvent !=null ? _lastMouseEvent.toString():'');};}
function IWMouseControlChangedEvent(){this.mouseAction='';this.controlMethod=-1;this.toString=function(){return '[IWMouseControlChangedEvent]' +'mouseAction:' + this.mouseAction + ',' +'controlMethod:' + this.controlMethod;};}
function IWMouseEvent(){this.position=null;this.lastPosition=null;this.offset=null;this.scrollbarOffset=null;this.button=IWButton.NONE;this.toString=function(){return '[IWMouseEvent]' +'position:' +(this.position==null ? '':this.position.toString())+ ',' +'lastPosition:' +(this.lastPosition==null ? '':this.lastPosition.toString())+ ',' +'offset:' +(this.offset==null ? '':this.offset.toString())+ ',' +'scrollbarOffset:' +(this.scrollbarOffset==null ? '':this.scrollbarOffset.toString())+ ',' +'button:' + this.button;};}
function IWMouseWheelEvent(){this.delta=null;this.toString=function(){return "[IWMouseWheelEvent]" +"delta:" +(this.delta==null ? "":this.delta.toString());}
}
function IWMoveEvent(){this.position=null;this.lastPosition=null;this.offset=new IWPoint(0,0);this.toString=function(){return '[IWMoveEvent]' +'position:' +(this.position==null ? 'null':this.position.toString())+ ',' +'lastPosition:' +(this.lastPosition==null ? 'null':this.lastPosition.toString())+ ',' +'offset:' + this.offset.toString();};}
function IWResizeEvent(){this.oldSize=null;this.newSize=null;this.toString=function(){return '[IWResizeEvent]' +'oldSize:' +(this.oldSize==null ? 'null':this.oldSize.toString())+ ',' +'newSize:' +(this.newSize==null ? 'null':this.newSize.toString());};}
function IWTileLoadedEvent(){this.column=null;this.row=null;this.toString=function(){return '[IWTileLoadedEvent]' +'column:' + this.column + ',' +'row:' + this.row;};}
function IWToolboxEvent(){this.PRINTMAP=0;this.TMC=1;this.type=null;this.toString=function(){return '[IWToolboxEvent]' +'type:' + this.type;};}
function IWZoomEvent(){this.newZoomLevel=null;this.newCenter=null;this.toString=function(){return '[IWZoomEvent]' +'newZoomLevel:' + this.newZoomLevel + ',' +'newCenter:' + this.newCenter;};}
function IWAddress(){var _street='';var _houseNumber='';var _zipCode='';var _city='';var _country='';var _countryCode='';var _lcc=null;var _wgs84=null;this.setZipCode=function(zipCode){_zipCode=zipCode;};this.getZipCode=function(){return _zipCode;};this.setCity=function(city){_city=city;};this.getCity=function(){return _city;};this.setStreet=function(street){_street=street;};this.getStreet=function(){return _street;};this.setHouseNumber=function(houseNumber){_houseNumber=houseNumber;};this.getHouseNumber=function(){return _houseNumber;};this.setCountry=function(country){_country=country;};this.getCountry=function(){return _country;};this.setCountryCode=function(countryCode){_countryCode=countryCode;}
this.getCountryCode=function(){return _countryCode;};this.hasHouseNumber=function(){return(_houseNumber !=null&&_houseNumber !='');};this.setLCC=function(lcc){_lcc=lcc;}
this.getLCC=function(){return _lcc;};this.setWGS84=function(wgs84){_wgs84=wgs84;};this.getWGS84=function(){return _wgs84;};this.toString=function(){return '[IWAddress]' +'Street:' +(_street==null ? 'null':_street)+ ',' +'HouseNumber:' +(_houseNumber==null ? 'null':_houseNumber)+ ',' +'ZipCode:' +(_zipCode==null ? 'null':_zipCode)+ ',' +'City:' +(_city==null ? 'null':_city)+ ',' +'Country:' +(_country==null ? 'null':_country)+ ',' +'CountryCode:' +(_countryCode==null ? 'null':_countryCode)+ ','
'lcc cooordinate:' + _lcc.toString()+ ',' +'wgs84 coordinate:' + _wgs84.toString();};this.equals=function(anotherAddress){return(this.getStreet()==anotherAddress.getStreet()&&this.getHouseNumber()==anotherAddress.getHouseNumber()&&this.getCity()==anotherAddress.getCity()&&this.getZipCode()==anotherAddress.getZipCode()&&this.getCountry()==anotherAddress.getCountry()&&this.getCountryCode()==anotherAddress.getCountryCode()
);};}
function IWGeocoderClient(){var logger=log4javascript.getLogger('IWGeocoderClient');this.geocodeAddressString=function(inputAddress,countryCode,maximumHits,parameterObject){logger.info('Calling geocodeAddressString with address ' + inputAddress + '(' + countryCode + '),maximumHits:' + maximumHits);var maxHits=1;if(typeof maximumHits !='undefined'){maxHits=parseInt(maximumHits);}
var url=iwconst.LOCAL_APP_URL + '/servlet/FrontController' +'?cmd=geocode' +'&app=ms' +'&VNR=' + IWAccessFilter.getCNR()+'&PNR=' + IWAccessFilter.getPNR()+'&RTVDIR=mapapi-0.70' +'&RTVADR=' + inputAddress +'&RTVLAND=' + countryCode +'&RTVMODE=' +(maxHits==1 ? '1':'0');var xmlHttp=new IWXMLHttpRequest();xmlHttp.open('GET',iwconst.GLOBAL_PROXY_URL + '?serverURL=' + escape(url),true);xmlHttp.onreadystatechange=function(){geocodedCallback(this,xmlHttp,inputAddress,maxHits,parameterObject);}.iwclosure(this);xmlHttp.send(null);};this.geocodeAddress=function(inputAddress,maximumHits,parameterObject){logger.info('Calling geocodeAddress with address ' + inputAddress + ',maximumHits:' + maximumHits);var maxHits=1;if(typeof maximumHits !='undefined'){maxHits=parseInt(maximumHits);}
var url=iwconst.LOCAL_APP_URL + '/servlet/FrontController' +'?cmd=geocode' +'&app=ms' +'&VNR=' + IWAccessFilter.getCNR()+'&PNR=' + IWAccessFilter.getPNR()+'&RTVDIR=mapapi-0.70' +'&RTVMODE=' +(maxHits==1 ? '1':'0')+'&RTVPLZ=' + inputAddress.getZipCode()+'&RTVORT=' + inputAddress.getCity()+'&RTVSTR=' + inputAddress.getStreet()+'&RTVHNR=' + inputAddress.getHouseNumber()+'&RTVLAND=' + inputAddress.getCountryCode();var xmlHttp=new IWXMLHttpRequest();xmlHttp.open('GET',iwconst.GLOBAL_PROXY_URL + '?serverURL=' + escape(url),true);xmlHttp.onreadystatechange=function(){geocodedCallback(this,xmlHttp,inputAddress,maxHits,parameterObject);}.iwclosure(this);xmlHttp.send(null);};this.reverseGeocode=function(projection,inputCoordinate,searchMode,searchCriteria,parameterObject){logger.info('Calling reverseGeocode with projection ' + projection + ',coordinate:' + inputCoordinate + ',searchMode:' + searchMode + ',searchCriteria:' + searchCriteria);var url=iwconst.LOCAL_APP_URL + '/servlet/FrontController' +'?cmd=locate' +'&app=ms' +'&VNR=' + IWAccessFilter.getCNR()+'&PNR=' + IWAccessFilter.getPNR()+'&RTVDIR=mapapi-0.70' +'&RTVLAND=EU' +'&REVPROJ=' + projection +'&REVMODE=' + searchMode +'&REVX=' + inputCoordinate.getX()+'&REVY=' + inputCoordinate.getY()+'&REVOPT=' + searchCriteria;var xmlHttp=new IWXMLHttpRequest();xmlHttp.open('GET',iwconst.GLOBAL_PROXY_URL + '?serverURL=' + escape(url),true);xmlHttp.onreadystatechange=function(){reverseGeocodedCallback(this,xmlHttp,inputCoordinate,parameterObject);}.iwclosure(this);xmlHttp.send(null);};this.toString=function(){return '[IWGeocoderClient]';};this.triggerAfterGeocoded=function(event){IWEventManager.trigger(this,'aftergeocoded',event);};this.triggerAfterReverseGeocoded=function(event){IWEventManager.trigger(this,'afterreversegeocoded',event);};function geocodedCallback(self,xmlHttp,inputAddress,maxHits,parameterObject){var results=new Array();if(xmlHttp.readyState==4){if(xmlHttp.statusText=='OK'){var root=IWXMLHelper.parse(xmlHttp.responseText).documentElement;if(root.getElementsByTagName('fail').length==0){var streets=root.getElementsByTagName('street');var houseNumbers=root.getElementsByTagName('housenumber');var zipCodes=root.getElementsByTagName('zipcode');var cities=root.getElementsByTagName('city');var countries=root.getElementsByTagName('country')
var country_codes=root.getElementsByTagName('country_code');var lcc_x=root.getElementsByTagName('lcc_x');var lcc_y=root.getElementsByTagName('lcc_y');var wgs84_long=root.getElementsByTagName('wgs84_long');var wgs84_lat=root.getElementsByTagName('wgs84_lat');var hitprobabilities=root.getElementsByTagName('hitprobability');var qualities=root.getElementsByTagName('quality');for(var i=0,hit=0;i<zipCodes.length&&hit<maxHits;i++,hit++){var houseNumber=IWXMLHelper.getNodeValue(houseNumbers[i]);var address=new IWAddress();address.setStreet(IWXMLHelper.getNodeValue(streets[i]));address.setHouseNumber((houseNumber !='X'&&houseNumber !='0' ? houseNumber:''));address.setZipCode(IWXMLHelper.getNodeValue(zipCodes[i]));address.setCity(IWXMLHelper.getNodeValue(cities[i]));address.setCountry(IWXMLHelper.getNodeValue(countries[i]));address.setCountryCode(IWXMLHelper.getNodeValue(country_codes[i]));address.setLCC(new IWCoordinate(IWXMLHelper.getNodeValue(lcc_x[i]),IWXMLHelper.getNodeValue(lcc_y[i])));address.setWGS84(new IWCoordinate(IWXMLHelper.getNodeValue(wgs84_long[i]),IWXMLHelper.getNodeValue(wgs84_lat[i])));var result=new IWGeocodingResult();result.setAddress(address);result.setHitprobability(parseInt(IWXMLHelper.getNodeValue(hitprobabilities[i])));result.setQuality(IWXMLHelper.getNodeValue(qualities[i]));results.push(result);}
}
}
else if(xmlHttp.status==401){alert('IWGeocoderClient:Access denied.(' + xmlHttp.status + ')' + xmlHttp.statusText);}
else
{alert('IWGeocoderClient:(' + xmlHttp.status + ')' + xmlHttp.statusText);}
}
var event=new IWGeocodingEvent();event.inputAddress=inputAddress;event.status=xmlHttp.statusText;event.results=results;event.parameterObject=parameterObject;self.triggerAfterGeocoded(event);}
function reverseGeocodedCallback(self,xmlHttp,inputCoordinate,parameterObject){var results=new Array();if(xmlHttp.readyState==4){if(xmlHttp.statusText=='OK'){var root=IWXMLHelper.parse(xmlHttp.responseText).documentElement;if(root.getElementsByTagName('fail').length==0){var hits=root.getElementsByTagName('zipcode').length;var countries=root.getElementsByTagName('country');var country_codes=root.getElementsByTagName('country_code');var zipCodes=root.getElementsByTagName('zipcode');var cities=root.getElementsByTagName('city');var streets=root.getElementsByTagName('street');var houseNumbers=root.getElementsByTagName('housenumber');var lcc_x=root.getElementsByTagName('lcc_x');var lcc_y=root.getElementsByTagName('lcc_y');var wgs84_long=root.getElementsByTagName('wgs84_long');var wgs84_lat=root.getElementsByTagName('wgs84_lat');var distances=root.getElementsByTagName('distance');for(var i=0;i<hits;i++){var result=new IWReverseGeocodingResult();var address=new IWAddress();address.setStreet(IWXMLHelper.getNodeValue(streets[i]));address.setZipCode(IWXMLHelper.getNodeValue(zipCodes[i]));address.setCity(IWXMLHelper.getNodeValue(cities[i]));address.setLCC(new IWCoordinate(IWXMLHelper.getNodeValue(lcc_x[i]),IWXMLHelper.getNodeValue(lcc_y[i])));address.setWGS84(new IWCoordinate(IWXMLHelper.getNodeValue(wgs84_long[i]),IWXMLHelper.getNodeValue(wgs84_lat[i])));var houseNumber=IWXMLHelper.getNodeValue(houseNumbers[i]);address.setHouseNumber((houseNumber !='X'&&houseNumber !='0' ? houseNumber:''));address.setCountry(IWXMLHelper.getNodeValue(countries[i]));address.setCountryCode(IWXMLHelper.getNodeValue(country_codes[i]));result.setAddress(address);result.setDistance(IWXMLHelper.getNodeValue(distances[i]));results.push(result);}
}
}
else if(xmlHttp.status==401){alert(xmlHttp.statusText);}
else
{alert('Reverse-Geocoding failed:' + xmlHttp.status + ' ' + xmlHttp.statusText);}
}
var event=new IWReverseGeocodingEvent();event.status=xmlHttp.statusText;event.inputCoordinate=inputCoordinate;event.results=results;event.parameterObject=parameterObject;self.triggerAfterReverseGeocoded(event);}
}
function IWGeocodingEvent(){this.status=null;this.inputAddress=null;this.results=null;this.parameterObject=null;this.toString=function(){return '[IWGeocodingEvent]' +'InputAddress:' +(this.inputAddress==null ? 'null':this.inputAddress)+ ',' +'Status:' +(this.status==null ? 'null':this.status)+ ',' +'Results:' +(this.results==null ? 'null':this.results.length);};}
function IWGeocodingResult(){var _address=null;var _hitprobability=null;var _quality=null;this.setAddress=function(address){_address=address;};this.getAddress=function(){return _address;};this.setHitprobability=function(hitprobability){_hitprobability=hitprobability;};this.getHitprobability=function(){return _hitprobability;};this.setQuality=function(quality){_quality=quality;};this.getQuality=function(){return _quality;};this.toString=function(){return '[IWGeocodingResult]' +'address:' + _address.toString()+ ',' +'hitprobability:' + _hitprobability + ',' +'quality:' + _quality;};}
function IWReverseGeocodingEvent(){this.status=null;this.inputCoordinate=null;this.results=null;this.parameterObject=null;}
function IWReverseGeocodingResult(){var _address=null;var _distance=0;this.setAddress=function(address){_address=address;}
this.getAddress=function(){return _address;};this.setDistance=function(distance){_distance=distance;};this.getDistance=function(){return _distance;};this.toString=function(){return '[IWReverseGeocodingResult]' +'lcc coordinate:' + _lcc.toString()+ ',' +'wgs84 coordinate:' + _wgs84.toString()+ ',' +'address:' + _address.toString()+ ',' +'distance:' + _distance;};}
function IWSimpleGeocoderClient(){var _url='http://localhost/gc_simple/Simple.jsp';this.setURL=function(url){_url=url;};this.getURL=function(){return _url;};this.geocodeAddress=function(inputAddress,multihits){var multi=0;if(typeof multihits !='undefined'&&multihits==true){multi=1;}
var serverUrl=_url +'?VNR=' + IWAccessFilter.getCNR()+'&PNR=' + IWAccessFilter.getPNR()+'&PLZ=' + inputAddress.getZipCode()+'&ORT=' + inputAddress.getCity()+'&STR=' + inputAddress.getStreet()+'&HNR=' + inputAddress.getHouseNumber()+'&LND=' + inputAddress.getCountryCode()+'&MULTI=' + multi;var xmlHttp=new IWXMLHttpRequest();var url=iwconst.GLOBAL_PROXY_URL + '?serverURL=' + escape(serverUrl);xmlHttp.open('GET',url,true);xmlHttp.onreadystatechange=function(){geocodedCallback(this,xmlHttp,inputAddress);}.iwclosure(this);xmlHttp.send(null);};this.toString=function(){return '[IWSimpleGeocoderClient]';};this.triggerAfterGeocoded=function(event){IWEventManager.trigger(this,'aftergeocoded',event);};function geocodedCallback(self,xmlHttp,inputAddress){var results=new Array();if(xmlHttp.readyState==4){if(xmlHttp.statusText=='OK'){var root=IWXMLHelper.parse(xmlHttp.responseText).documentElement;var errorText=IWXMLHelper.getNodeValue(root.getElementsByTagName('error'));if(errorText==null||errorText==''){var zipCodes=root.getElementsByTagName('zipcode');var cities=root.getElementsByTagName('city');var parts=root.getElementsByTagName('part');var streets=root.getElementsByTagName('street');var houseNumbers=root.getElementsByTagName('housenumber');var wgs84=root.getElementsByTagName('wgs84');var lccEurope=root.getElementsByTagName('lcc_europe');var matchcode=root.getElementsByTagName('matchcode');for(var i=(zipCodes.length-1);i>=0;i--){var houseNumber=IWXMLHelper.getNodeValue(houseNumbers[i]);var address=new IWAddress();address.setStreet(IWXMLHelper.getNodeValue(streets[i]));address.setHouseNumber((houseNumber !='X'&&houseNumber !='0' ? houseNumber:''));address.setZipCode(IWXMLHelper.getNodeValue(zipCodes[i]));var city=IWXMLHelper.getNodeValue(cities[i]);var part=IWXMLHelper.getNodeValue(parts[i]);if(part !=null&&part !=''){city +='\u0020/\u0020' + part;}
address.setCity(city);address.setCountryCode(inputAddress.getCountryCode());address.setLCC(new IWCoordinate(IWXMLHelper.getNodeValue(lccEurope[i].childNodes[0]),IWXMLHelper.getNodeValue(lccEurope[i].childNodes[1])));address.setWGS84(new IWCoordinate(IWXMLHelper.getNodeValue(wgs84[i].childNodes[0]),IWXMLHelper.getNodeValue(wgs84[i].childNodes[1])));var result=new IWSimpleGeocodingResult();result.setAddress(address);result.setMatchCode(IWXMLHelper.getNodeValue(matchcode[i]));results.push(result);}
}
}
else if(xmlHttp.status==401){alert(xmlHttp.statusText);}
else
{alert('Geocoding failed:' + xmlHttp.status + '\n' + xmlHttp.statusText);}
}
var event=new IWSimpleGeocodingEvent();event.inputAddress=inputAddress;event.status=xmlHttp.statusText;event.results=results;self.triggerAfterGeocoded(event);}
}
function IWSimpleGeocodingEvent(){this.status=null;this.inputAddress=null;this.results=null;this.toString=function(){return '[IWSimpleGeocodingEvent]' +'InputAddress:' +(this.inputAddress==null ? 'null':this.inputAddress)+ ',' +'Status:' +(this.status==null ? 'null':this.status)+ ',' +'Results:' +(this.results==null ? 'null':this.results.length);};}
function IWSimpleGeocodingResult(){var _address=null;var _matchcode=null;this.setAddress=function(address){_address=address;};this.getAddress=function(){return _address;};this.setMatchCode=function(matchcode){_matchcode=matchcode;};this.getMatchCode=function(){return _matchcode;};this.toString=function(){return '[IWSimpleGeocodingResult]' +'address:' + _address.toString()+ ',' +'matchcode:' + _matchcode;};}
function IWLabel(key,domElement,domAttribute){this.getKey=function(){return key;};this.getDOMElement=function(){return domElement;};this.getDOMAttribute=function(){return domAttribute;};this.toString=function(){return '[IWLabel]' +'key:' + this.getKey()+ ',' +'domElement:' + this.getDOMElement()+ ',' +'domAttribute:' + this.getDOMAttribute();};}
function IWLanguage(name,file){var translations=new Object();this.getName=function(){return name;};this.getFile=function(){return file;};this.put=function(key,value){translations[key]=value;};this.get=function(key){if(typeof translations[key]=='undefined'){alert('Language key ' + key + ' not found in ' + this.getFile());}
return translations[key];};this.toString=function(){return '[IWLanguage]' +'Name:' + this.getName()+ ',' +'File:' + this.getFile();};}
var IWLanguageCacheManager=new function(){var cache=new Object();this.putLanguage=function(language){cache[language.getFile()]=language;};this.isCached=function(language){return(this.getLanguage(language)!=null);};this.getLanguage=function(language){return cache[language.getFile()];};this.toString=function(){return '[IWLanguageLoadManager]';};}
function IWLanguagePack(){var languages=new Object();this.getLanguage=function(name){return languages[name];};this.addLanguage=function(language){languages[language.getName()]=language;};this.toString=function(){var s='';for(l in languages){s +=languages[l].toString();}
return '[IWLanguagePack]' + s;};}
function IWMultiLanguageSupport(map,languagePack){var self=this;var labels=new Array();var language=null;var afterLanguageChangedListener=null;if(typeof languagePack=='undefined'||languagePack==null){languagePack=new IWLanguagePack();}
this.addLabelFor=function(label){if(language){updateLabel(label);}
labels.push(label);};this.getLanguagePack=function(){return languagePack;};this.triggerAfterLanguagePackLoaded=function(event){IWEventManager.trigger(this,'afterlanguagepackloaded',event);};this.loadLanguagePack=function(lang){language=languagePack.getLanguage(lang);if(language){if(IWLanguageCacheManager.isCached(language)==false){var url=iwconst.LOCAL_APP_URL + '/servlet/FrontController' +'?cmd=getLanguagePack' +'&languagePack=' + language.getFile()+'&app=ms' +'&VNR=' + IWAccessFilter.getCNR()+'&PNR=' + IWAccessFilter.getPNR();var xmlHttp=new IWXMLHttpRequest();xmlHttp.open('GET',iwconst.GLOBAL_PROXY_URL + '?serverURL=' + escape(url),true);xmlHttp.onreadystatechange=function(){callbackAfterLanguagePackLoaded(xmlHttp,language);};xmlHttp.send(null);}
else
{language=IWLanguageCacheManager.getLanguage(language);notifyAll(language);}
}
else
{alert('Missing language pack:' + lang);}
};this.destroyMultiLanguageSupport=function(){IWEventManager.removeListener(afterLanguageChangedListener);for(var i=labels.length;i>0;i--){iw.destroy(labels[i-1]);}
};this.toString=function(){return '[IWMultiLanguageSupport]';};function updateLabels(){for(var i=0;i<labels.length;i++){updateLabel(labels[i]);}
}
function updateLabel(label){var key=label.getKey();if(!key){alert('Key is not specified.');return;}
var obj=label.getDOMElement();if(!obj){alert('DOM Element for key ' + key + ' is not specified.');return;}
var attr=label.getDOMAttribute();if(!attr){alert('The attribute of the DOM element ' + obj + ' is not specified.');return;}
obj[attr]=language.get(key);}
function callbackAfterLanguagePackLoaded(xmlHttp,language){if(xmlHttp.readyState==4){if(xmlHttp.statusText=='OK'){var obj=eval(xmlHttp.responseText);for(key in obj.LANGUAGE_PACK){language.put(key,obj.LANGUAGE_PACK[key]);}
IWLanguageCacheManager.putLanguage(language);notifyAll(language);}
else if(xmlHttp.status==401){alert('IWMultiLanguageSupport:Access denied.(' + xmlHttp.status + ')' + xmlHttp.statusText);}
else
{alert('IWMultiLanguageSupport:(' + xmlHttp.status + ')' + xmlHttp.statusText);}
}
}
function notifyAll(language){updateLabels(language);var event=new IWMultiLanguageSupportEvent();event.language=language;self.triggerAfterLanguagePackLoaded(event);}
afterLanguageChangedListener=IWEventManager.addListener(map,'afterlanguagechanged',function(event){self.loadLanguagePack(event.language);}
);}
function IWMultiLanguageSupportEvent(){this.language=null;this.toString=function(){return '[IWMultiLanguageSupportEvent]' +'language:' + this.language;};}
var popupAppender=new log4javascript.PopUpAppender();popupAppender.setLayout(new log4javascript.PatternLayout('%d{HH:mm:ss}%-5p %c - %m%n'));function setupLogger(className,appender,logLevel){var logger=log4javascript.getLogger(className);logger.addAppender(popupAppender);logger.setLevel(logLevel);}
setupLogger('IWEventManager',popupAppender,log4javascript.Level.TRACE);setupLogger('IWActionStack',popupAppender,log4javascript.Level.TRACE);setupLogger('IWCopyrightControl',popupAppender,log4javascript.Level.TRACE);setupLogger('IWDraggable',popupAppender,log4javascript.Level.TRACE);setupLogger('IWGeocoderClient',popupAppender,log4javascript.Level.TRACE);setupLogger('IWLayout',popupAppender,log4javascript.Level.TRACE);setupLogger('IWLayoutManager',popupAppender,log4javascript.Level.TRACE);setupLogger('IWLayerInfoManager',popupAppender,log4javascript.Level.TRACE);setupLogger('IWMap',popupAppender,log4javascript.Level.TRACE);setupLogger('IWMarker',popupAppender,log4javascript.Level.TRACE);setupLogger('IWMeasuringControl',popupAppender,log4javascript.Level.TRACE);setupLogger('IWMeasuringInfoWindowControl',popupAppender,log4javascript.Level.TRACE);setupLogger('IWProjectionClient',popupAppender,log4javascript.Level.TRACE);setupLogger('IWRoutingClient',popupAppender,log4javascript.Level.TRACE);setupLogger('IWRoutingControl',popupAppender,log4javascript.Level.TRACE);setupLogger('IWTile',popupAppender,log4javascript.Level.TRACE);setupLogger('IWTileset',popupAppender,log4javascript.Level.TRACE);setupLogger('IWXMLHttpRequest',popupAppender,log4javascript.Level.TRACE);function IWActionStack(map,maxActions){var _map=map;var _maxActions=(typeof maxActions !='undefined' ? maxActions:20)
var _undoStack=new Array();var _redoStack=new Array();var _logger=log4javascript.getLogger('IWActionStack');this.clear=function(){_logger.debug('IWActionStack:Clearing stack');_undoStack=new Array();_redoStack=new Array();};this.addAction=function(action){if(action.isMapAction&&action.isMapAction()){_undoStack.push(action);_logger.debug('IWActionStack:Adding ' + action.toString()+ ',new stack size is ' + _undoStack.length);if(_redoStack.length>0){_redoStack=new Array();}
if(_undoStack.length>_maxActions){_logger.debug('IWActionStack:Stack size exceeds maximum,removing oldest action');_undoStack.shift();}
}
else
{_logger.error('IWActionStack:Adding action failed:Parameter has to implement IWMapAction');}
};this.undoAction=function(){var action=_undoStack.pop();if(action){_logger.debug('IWActionStack:Undoing ' + action.toString());action.undo(_map);_redoStack.push(action);}
else
{_logger.debug('IWActionStack:Cannot undo operation:Stack is empty');}
};this.redoAction=function(){var action=_redoStack.pop();if(action){_logger.debug('IWActionStack:Redoing ' + action.toString());action.redo(_map);_undoStack.push(action);}
else
{_logger.debug('IWActionStack:Cannot redo operation:Stack is empty');}
};this.toString=function(){return '[IWActionStack]' +'max actions:' + _maxActions + ',' +'undo stack length:' + _undoStack.length + ',' +'redo stack length:' + _redoStack.length;};_logger.debug('IWActionStack:Created new stack with ' + _maxActions + ' actions');}
function IWBoundsConstraintManager(tileset){var _tileset=tileset;var _map=_tileset.getMap();var _boundsConstraint=null;this.setBoundsConstraint=function(bounds){if(bounds.constructor !=IWBounds&&bounds !=null){alert('IWBoundsConstraint]invalid argument:\''+bounds.constructor+'\' given,IWBounds or null expected');}
_boundsConstraint=bounds;}
this.getBoundsConstraint=function(){return _boundsConstraint;}
this.getMinimumZoomLevel=function(){if(_boundsConstraint==null){return _map.getCurrentMapType().getMinLevel();}
else
{return _map.getBoundsZoomlevel(_boundsConstraint);}
}
this.isZoomOutOfBounds=function(zoomFactor){if(_boundsConstraint==null){return false;}
var mapSize=_map.getBounds().getSize().divide(zoomFactor);var constraintSize=_boundsConstraint.getSize();return(mapSize.compareTo(constraintSize)>0);}
this.adjustCenterForTileSize=function(tileSizeInMeter,centerCoordinate){if(_boundsConstraint !=null){var halfMapHeightInMeter=_tileset.getMapHeightForTile(tileSizeInMeter)/2;var halfMapWidthInMeter=_tileset.getMapWidthForTile(tileSizeInMeter)/2;var coordinateNorth=centerCoordinate.getY()+ halfMapHeightInMeter;var coordinateSouth=centerCoordinate.getY()- halfMapHeightInMeter;var coordinateEast=centerCoordinate.getX()+ halfMapWidthInMeter;var coordinateWest=centerCoordinate.getX()- halfMapWidthInMeter;var differenceNorth=coordinateNorth - _boundsConstraint.getNorthWest().getY();var differenceSouth=_boundsConstraint.getSouthEast().getY()- coordinateSouth;var differenceEast=coordinateEast -_boundsConstraint.getSouthEast().getX();var differenceWest=_boundsConstraint.getNorthWest().getX()- coordinateWest;if(differenceNorth>0&&differenceSouth>0){centerCoordinate=new IWCoordinate(centerCoordinate.getX(),_boundsConstraint.getCenter().getY());}
else if(differenceNorth>0){centerCoordinate=new IWCoordinate(centerCoordinate.getX(),centerCoordinate.getY()- differenceNorth);}
else if(differenceSouth>0){centerCoordinate=new IWCoordinate(centerCoordinate.getX(),centerCoordinate.getY()+ differenceSouth);}
if(differenceEast>0&&differenceWest>0){centerCoordinate=new IWCoordinate(_boundsConstraint.getCenter().getX(),centerCoordinate.getY());}
else if(differenceEast>0){centerCoordinate=new IWCoordinate(centerCoordinate.getX()- differenceEast,centerCoordinate.getY());}
else if(differenceWest>0){centerCoordinate=new IWCoordinate(centerCoordinate.getX()+ differenceWest,centerCoordinate.getY());}
}
return centerCoordinate;};this.adjustCenter=function(centerCoordinate){return this.adjustCenterForTileSize(_tileset.nTilesizeMeter,centerCoordinate);};this.isMoveAllowed=function(offset){if(_boundsConstraint==null){return true;}
var halfMapSizeInMeter=_map.getBounds().getSize().divide(2);var newNorthWest=new IWCoordinate(_boundsConstraint.getNorthWest().getX()+ halfMapSizeInMeter.getWidth(),_boundsConstraint.getNorthWest().getY()- halfMapSizeInMeter.getHeight());var newSouthEast=new IWCoordinate(_boundsConstraint.getSouthEast().getX()- halfMapSizeInMeter.getWidth(),_boundsConstraint.getSouthEast().getY()+ halfMapSizeInMeter.getHeight());var constraint=new IWBounds(newNorthWest,newSouthEast);var centerInPixel=new IWPoint(_map.getOptions().getSize().getWidth()/2,_map.getOptions().getSize().getHeight()/2);var newCenterInPixel=centerInPixel.substract(offset);var newCenter=_map.getCurrentMapType().getProjection().pixelToMeter(newCenterInPixel);if(!constraint.containsCoordinate(newCenter)){return false;}
return true;};}
function IWCentralProjection(map){IWProjection.call(this);var _map=map;var _cameraAltitude;var _cameraLongitude;var _cameraLatitude;var _viewWidth;var _viewHeight;var _viewElevation;var _viewPoints=new Array(4);var _sectionFactor;var _sectionOffset;var _moved=new IWPoint(0,0);this.initialize=function(obj){_cameraLongitude=obj.CAMERA.LONGITUDE;_cameraLatitude=obj.CAMERA.LATITUDE;_cameraAltitude=obj.CAMERA.ALTITUDE;_viewWidth=obj.VIEW.WIDTH;_viewHeight=obj.VIEW.HEIGHT;_viewElevation=obj.VIEW.ELEVATION;_viewPoints[0]=new IWCoordinate(obj.VIEW.POINTS[0].X,obj.VIEW.POINTS[0].Y);_viewPoints[1]=new IWCoordinate(obj.VIEW.POINTS[1].X,obj.VIEW.POINTS[1].Y);_viewPoints[2]=new IWCoordinate(obj.VIEW.POINTS[2].X,obj.VIEW.POINTS[2].Y);_viewPoints[3]=new IWCoordinate(obj.VIEW.POINTS[3].X,obj.VIEW.POINTS[3].Y);_sectionFactor=parseFloat(obj.SECTION.FACTOR);_sectionOffset=new IWPoint(obj.SECTION.OFFSET_X,obj.SECTION.OFFSET_Y);_moved=new IWPoint(0,0);};this.meterToPixel=function(coord){var offsetInView=getOffset(coord);var iPointX=((offsetInView.getX()- _sectionOffset.getX())/_sectionFactor)- _moved.getX();var iPointY=((_sectionOffset.getY()- offsetInView.getY())/_sectionFactor)- _moved.getY();return new IWPoint(iPointX,iPointY);};this.pixelToMeter=function(point){var iViewX=_sectionOffset.getX()+(point.getX()+ _moved.getX())*_sectionFactor;var iViewY=_sectionOffset.getY()-(point.getY()+ _moved.getY())*_sectionFactor;return getCoordinate(new IWPoint(iViewX,iViewY));};this.needsReload=function(coord,size){var iHalfWidth=size.getWidth()/2;var iHalfHeight=size.getHeight()/2;var points=new Array(4);points[0]=getOffset(new IWCoordinate(coord.getX()- iHalfWidth,coord.getY()- iHalfHeight));points[1]=getOffset(new IWCoordinate(coord.getX()+ iHalfWidth,coord.getY()- iHalfHeight));points[2]=getOffset(new IWCoordinate(coord.getX()- iHalfWidth,coord.getY()+ iHalfHeight));points[3]=getOffset(new IWCoordinate(coord.getX()+ iHalfWidth,coord.getY()+ iHalfHeight));for(var i=0;i<4;i++){if(points[i].getX()<0||points[i].getX()>_viewWidth)return true;if(points[i].getY()<0||points[i].getY()>_viewHeight)return true;}
return false;};this.toString=function(){return '[IWCentralProjection]' +'camera altitude:' + _cameraAltitude + ',' +'camera longitude:' + _cameraLongitude + ',' +'camera latitude:' + _cameraLatitude + ',' +'view width:' + _viewWidth + ',' +'view height:' + _viewHeight + ',' +'view elevation:' + _viewElevation + ',' +'view points:{' + _viewPoints[0]+ ',' + _viewPoints[1]+ ',' + _viewPoints[2]+ ',' + _viewPoints[3]+ '},' +'section factor:' + _sectionFactor + ',' +'section offset:' + _sectionOffset;};function getDistance(x1,y1,z1,x2,y2,z2){var dx=x2 - x1;var dy=y2 - y1;var dz=z2 - z1;return Math.sqrt(dx*dx + dy*dy + dz*dz);}
function getAngle(d0,d1,d2){return Math.acos((d0*d0 - d1*d1 - d2*d2)/(- 2*d1*d2));}
function calcTriangle(x0,y0,z0,x1,y1,z1,x2,y2,z2){var d0=getDistance(x1,y1,z1,x2,y2,z2);var d1=getDistance(x2,y2,z2,x0,y0,z0);var d2=getDistance(x1,y1,z1,x0,y0,z0);var dW0=getAngle(d0,d1,d2);var dW1=getAngle(d1,d0,d2);var dW2=getAngle(d2,d1,d0);var result=[d0,d1,d2,dW0,dW1,dW2];return result;}
function getProjectedLength(dLength,dLengthMax,point1,point2){var dTriangle1=calcTriangle(point1.getX(),point1.getY(),0,point2.getX(),point2.getY(),0,_cameraLongitude,_cameraLatitude,_cameraAltitude - _viewElevation);var dTriangle2=new Array(6);dTriangle2[1]=dTriangle1[1];dTriangle2[3]=dTriangle1[3];dTriangle2[5]=dTriangle1[5]/2 + Math.atan((dLength - dLengthMax/2)*(Math.tan(dTriangle1[5]/2)/(dLengthMax/2)));dTriangle2[4]=Math.PI - dTriangle2[5]- dTriangle2[3];dTriangle2[2]=dTriangle2[1]/Math.sin(dTriangle2[4])*Math.sin(dTriangle2[5]);return dTriangle2[2]/dTriangle1[2];}
function getAlong(coord1,coord2,dAlong){var x=coord1.getX()+(coord2.getX()- coord1.getX())*dAlong;var y=coord1.getY()+(coord2.getY()- coord1.getY())*dAlong;return new IWCoordinate(x,y);}
function getCoordinate(point){var point01=getAlong(_viewPoints[0],_viewPoints[1],getProjectedLength(point.getX(),_viewWidth,_viewPoints[0],_viewPoints[1]));var point23=getAlong(_viewPoints[2],_viewPoints[3],getProjectedLength(point.getX(),_viewWidth,_viewPoints[2],_viewPoints[3]));var point02=getAlong(_viewPoints[0],_viewPoints[2],getProjectedLength(point.getY(),_viewHeight,_viewPoints[0],_viewPoints[2]));var point13=getAlong(_viewPoints[1],_viewPoints[3],getProjectedLength(point.getY(),_viewHeight,_viewPoints[1],_viewPoints[3]));var line0123=new IWLine(point01,point23);var line0213=new IWLine(point02,point13);return line0123.getIntersection(line0213);}
function getIntersections(point,point0,point1,point2,point3){var intersections=new Array(3);var line01=new IWLine(point0,point1);var line23=new IWLine(point2,point3);var line02=new IWLine(point0,point2);var line13=new IWLine(point1,point3);intersections[0]=line01.getIntersection(line23);var line4=new IWLine(intersections[0],point);intersections[1]=line4.getIntersection(line02);intersections[2]=line4.getIntersection(line13);return intersections;}
function getOffset(coord){var dCameraZ=_cameraAltitude - _viewElevation;var dTriangle1;var dTriangle2;var intersections=getIntersections(coord,_viewPoints[0],_viewPoints[1],_viewPoints[2],_viewPoints[3]);dTriangle1=calcTriangle(_viewPoints[0].getX(),_viewPoints[0].getY(),0,_viewPoints[2].getX(),_viewPoints[2].getY(),0,_cameraLongitude,_cameraLatitude,dCameraZ);dTriangle2=calcTriangle(_viewPoints[0].getX(),_viewPoints[0].getY(),0,intersections[1].getX(),intersections[1].getY(),0,_cameraLongitude,_cameraLatitude,dCameraZ);if(Math.abs(dTriangle1[3]- dTriangle2[3])>=0.001)dTriangle2[5]*=-1;var y=0.5 - 0.5*Math.tan(dTriangle1[5]/2 - dTriangle2[5])/Math.tan(dTriangle1[5]/2);intersections=getIntersections(coord,_viewPoints[0],_viewPoints[2],_viewPoints[1],_viewPoints[3]);dTriangle1=calcTriangle(_viewPoints[0].getX(),_viewPoints[0].getY(),0,_viewPoints[1].getX(),_viewPoints[1].getY(),0,_cameraLongitude,_cameraLatitude,dCameraZ);dTriangle2=calcTriangle(_viewPoints[0].getX(),_viewPoints[0].getY(),0,intersections[1].getX(),intersections[1].getY(),0,_cameraLongitude,_cameraLatitude,dCameraZ);if(Math.abs(dTriangle1[3]- dTriangle2[3])>=0.001)dTriangle2[5]*=-1;var x=0.5 - 0.5*Math.tan(dTriangle1[5]/2 - dTriangle2[5])/Math.tan(dTriangle1[5]/2);return new IWPoint(x*_viewWidth,y*_viewHeight);}
IWEventManager.addListener(_map,'onmove',function(moveEvent){_moved=_moved.add(new IWPoint(-moveEvent.offset.getX(),-moveEvent.offset.getY()));}
);}
function IWLayout(container,zIndex){var logger=log4javascript.getLogger('IWLayout');this.setBorder=function(x,y){_mapBorder=new IWSize(x,y);this.redraw();};this.getZIndex=function(){return _zIndex;};this.getControlByName=function(name){var control=null;for(var i=0;i<_controls.length;i++){if(_controls[i].getName()==name){control=_controls[i];break;}
}
return control;};this.getControls=function(){return _controls;};this.redraw=function(){resetBorders();for(var i=0;i<_controls.length;i++){calculateControlPosition(_controls[i]);}
};this.addControl=function(control,firstOrientation,secondOrientation,paddingX,paddingY){if((typeof control.isControl=='undefined')||!control.isControl()){logger.warn('Adding control failed:control has to implement IWControl!')
throw('IWLayoutManager:adding control failed:control has to implement IWControl!');}
if(firstOrientation !=IWAlignment.TOP&&firstOrientation !=IWAlignment.RIGHT&&firstOrientation !=IWAlignment.BOTTOM&&firstOrientation !=IWAlignment.LEFT&&firstOrientation !=IWAlignment.CENTER){logger.warn('Adding control failed:first orientation not valid!')
throw('IWLayoutManager:adding control failed:first orientation not valid!');}
if(secondOrientation !=IWAlignment.TOP&&secondOrientation !=IWAlignment.RIGHT&&secondOrientation !=IWAlignment.BOTTOM&&secondOrientation !=IWAlignment.LEFT&&secondOrientation !=IWAlignment.CENTER){logger.error('Adding control failed:second orientation not valid!');throw('IWLayoutManager:adding control failed:second orientation not valid!');}
for(var i=0;i<_controls.length;i++){if(control==_controls[i]){logger.error('Adding control failed:control already added!');throw('IWLayoutManager:adding control failed:control already added!');}
}
logger.debug('Calling addControl with ' + control.toString()+ ' to map.');if((typeof paddingX !='undefined')||(typeof paddingY !='undefined')){control.setPadding(new IWSize(parseInt(paddingX),parseInt(paddingY)));}
control.setFirstOrientation(firstOrientation);control.setSecondOrientation(secondOrientation);control.onresizeListener=IWEventManager.addListener(control,'onresize',function(){this.redraw();}.iwclosure(this));_controls.push(control);control.getContainer().style.zIndex=_zIndex;_old_bb=new IWSize(_bounding_box.getWidth(),_bounding_box.getHeight());calculateControlPosition(control);control.beforeAppend();_container.appendChild(control.getContainer());control.afterAppend();if(!_old_bb.equals(_bounding_box)){var event=new IWResizeEvent();event.newSize=_bounding_box;IWEventManager.trigger(this,'onresize',event);}
logger.error('Adding done');};this.removeControl=function(control){for(var i=0;i<_controls.length;i++){if(control==_controls[i]){_controls.splice(i,1);control.beforeRemove();iw.remove(control.getContainer());this.redraw();control.afterRemove();IWEventManager.removeListener(control.onresizeListener);break;}
}
};function resetBorders(){_top_left=new IWSize(0,0);_top_right=new IWSize(0,0);_bottom_left=new IWSize(0,0);_bottom_right=new IWSize(0,0);_center_x=new IWSize(0,0);_center_y=new IWSize(0,0);_center_top=new Array();_center_bottom=new Array();_center_left=new Array();_center_right=new Array();}
function getMainWidth(){var unit=_container.style.width.replace(/\d/g,'');var width;if(unit=='px'){width=parseInt(_container.style.width);}
else
{width=_container.offsetWidth;}
return width;}
function getMainHeight(){var unit=_container.style.height.replace(/\d/g,'');var height;if(unit=='px'){height=parseInt(_container.style.height);}
else
{height=_container.offsetHeight;}
return height;}
function calculateControlPosition(control){logger.debug('calculateControlPosition for ' + control);size=IWDOMHelper.getSize(control.getContainer(),control.getParent());var controlWidth=size.getWidth();var controlHeight=size.getHeight();switch(control.getFirstOrientation()){case IWAlignment.TOP:switch(control.getSecondOrientation()){case IWAlignment.LEFT:var top=_mapBorder.getHeight()+ control.getPadding().getHeight();var left=_mapBorder.getWidth()+ _top_left.getWidth()+ control.getPadding().getWidth();setPosition(control,top,left)
if(_top_left.equals(new IWSize(0,0))){_top_left=new IWSize(_top_left.getWidth()+ control.getPadding().getWidth()*2 + controlWidth,_top_left.getHeight()+ control.getPadding().getHeight()*2 + controlHeight);}
else
{_top_left=new IWSize(_top_left.getWidth()+ control.getPadding().getWidth()*2 + controlWidth,_top_left.getHeight());}
if(_top_left.getWidth()>getMainWidth()){_bounding_box=new IWSize(_top_left.getWidth()+_mapBorder.getWidth(),_bounding_box.getHeight());}
break;case IWAlignment.RIGHT:var top=_mapBorder.getHeight()+ control.getPadding().getHeight();var left=getMainWidth()-(_mapBorder.getWidth()+ _top_right.getWidth()+ control.getPadding().getWidth()+controlWidth);setPosition(control,top,left)
if(_top_right.equals(new IWSize(0,0))){_top_right=new IWSize(_top_right.getWidth()+ control.getPadding().getWidth()*2 + controlWidth,_top_right.getHeight()+ control.getPadding().getHeight()*2 + controlHeight);}
else
{_top_right=new IWSize(_top_right.getWidth()+ control.getPadding().getWidth()*2 + controlWidth,_top_right.getHeight());}
break;case IWAlignment.CENTER:case IWAlignment.TOP:_center_top.push(control);var length=0;for(var i=0;i<_center_top.length;i++){length +=parseInt(_center_top[i].getContainer().style.width);length +=2*_center_top[i].getPadding().getWidth();}
var start=Math.round((getMainWidth()- length)/2.0);var pos=start;for(var i=0;i<_center_top.length;i++){var top=_mapBorder.getHeight()+ _center_top[i].getPadding().getHeight();var left=pos + _center_top[i].getPadding().getWidth();setPosition(_center_top[i],top,left)
pos +=parseInt(_center_top[i].getContainer().style.width);pos +=2*_center_top[i].getPadding().getWidth();}
if(length>getMainWidth()){_bounding_box=new IWSize(getMainWidth()+(length-getMainWidth())/2,_bounding_box.getHeight());}
break;default:alert("Invalid positioning!");}
break;case IWAlignment.RIGHT:switch(control.getSecondOrientation()){case IWAlignment.TOP:var top=_top_right.getHeight()+ _mapBorder.getHeight()+ control.getPadding().getHeight();var left=getMainWidth()-(_mapBorder.getWidth()+ control.getPadding().getWidth()+controlWidth);setPosition(control,top,left)
if(_top_right.equals(new IWSize(0,0))){_top_right=new IWSize(_top_right.getWidth()+ control.getPadding().getWidth()*2 + controlWidth,_top_right.getHeight()+ control.getPadding().getHeight()*2 + controlHeight);}
else
{_top_right=new IWSize(_top_right.getWidth(),_top_right.getHeight()+control.getPadding().getHeight()*2 + controlHeight);}
if(_top_right.getHeight()>getMainHeight()){_bounding_box=new IWSize(_bounding_box.getWidth(),_top_right.getHeight()+_mapBorder.getHeight());}
break;case IWAlignment.BOTTOM:var top=getMainHeight()-(_bottom_right.getHeight()+_mapBorder.getHeight()+ control.getPadding().getHeight()+ controlHeight);var left=getMainWidth()-(_mapBorder.getWidth()+ control.getPadding().getWidth()+controlWidth);setPosition(control,top,left)
if(_bottom_right.equals(new IWSize(0,0))){_bottom_right=new IWSize(_bottom_right.getWidth()+ control.getPadding().getWidth()*2 + controlWidth,_bottom_right.getHeight()+ control.getPadding().getHeight()*2 + controlHeight);}
else
{_bottom_right=new IWSize(_bottom_right.getWidth(),_bottom_right.getHeight()+control.getPadding().getHeight()*2 + controlHeight);}
break;case IWAlignment.CENTER:case IWAlignment.RIGHT:_center_right.push(control);var totalHeight=0
for(var i=0;i<_center_right.length;i++){var height=parseInt(_center_right[i].getContainer().style.height);if(isNaN(height)){logger.warn('The style.height attribute of ' + _center_right[i]+ ' must be set.');}
totalHeight +=height;totalHeight +=2*_center_right[i].getPadding().getHeight();}
var start=Math.round((getMainHeight()- totalHeight)/2.0);var pos=start;for(var i=0;i<_center_right.length;i++){var top=pos + _center_right[i].getPadding().getHeight();var left=getMainWidth()-(_mapBorder.getWidth()+ _center_right[i].getPadding().getWidth()+parseInt(_center_right[i].getContainer().style.width));setPosition(_center_right[i],top,left);pos +=parseInt(_center_right[i].getContainer().style.height);pos +=2*_center_right[i].getPadding().getHeight();}
if(totalHeight>getMainHeight()){_bounding_box=new IWSize(_bounding_box.getWidth(),getMainHeight()+(totalHeight-getMainHeight())/2);}
break;default:alert("Invalid positioning!");break;}
break;case IWAlignment.BOTTOM:switch(control.getSecondOrientation()){case IWAlignment.LEFT:var top=getMainHeight()-(_mapBorder.getHeight()+ control.getPadding().getHeight()+ controlHeight);var left=_mapBorder.getWidth()+ _bottom_left.getWidth()+ control.getPadding().getWidth();setPosition(control,top,left);if(_bottom_left.equals(new IWSize(0,0))){_bottom_left=new IWSize(_bottom_left.getWidth()+ control.getPadding().getWidth()*2 + controlWidth,_bottom_left.getHeight()+ control.getPadding().getHeight()*2 + controlHeight);}
else
{_bottom_left=new IWSize(_bottom_left.getWidth()+ control.getPadding().getWidth()*2 + controlWidth,_bottom_left.getHeight());}
if(_bottom_left.getWidth()>getMainWidth()){_bounding_box=new IWSize(_top_right.getWidth()+_mapBorder.getWidth(),_bounding_box.getHeight());}
break;case IWAlignment.RIGHT:var top=getMainHeight()-(_mapBorder.getHeight()+ control.getPadding().getHeight()+ controlHeight);var left=getMainWidth()-(_mapBorder.getWidth()+ _bottom_right.getWidth()+ control.getPadding().getWidth()+controlWidth);setPosition(control,top,left);if(_bottom_right.equals(new IWSize(0,0))){_bottom_right=new IWSize(_bottom_right.getWidth()+ control.getPadding().getWidth()*2 + controlWidth,_bottom_right.getHeight()+ control.getPadding().getHeight()*2 + controlHeight);}
else
{_bottom_right=new IWSize(_bottom_right.getWidth()+ control.getPadding().getWidth()*2 + controlWidth,_bottom_right.getHeight());}
break;case IWAlignment.CENTER:case IWAlignment.BOTTOM:_center_bottom.push(control);var length=0;for(var i=0;i<_center_bottom.length;i++){length +=parseInt(_center_bottom[i].getContainer().style.width);length +=2*_center_bottom[i].getPadding().getWidth();}
var start=Math.round((getMainWidth()- length)/2.0);var pos=start;for(var i=0;i<_center_bottom.length;i++){var top=getMainHeight()-(_mapBorder.getHeight()+ _center_bottom[i].getPadding().getHeight()+ parseInt(_center_bottom[i].getContainer().style.height));var left=pos + _center_bottom[i].getPadding().getWidth();setPosition(_center_bottom[i],top,left);pos +=parseInt(_center_bottom[i].getContainer().style.width);pos +=2*_center_bottom[i].getPadding().getWidth();}
if(length>getMainWidth()){_bounding_box=new IWSize(getMainWidth()+(length-getMainWidth())/2,_bounding_box.getHeight());}
break;default:alert("Invalid positioning!");}
break;case IWAlignment.LEFT:switch(control.getSecondOrientation()){case IWAlignment.TOP:var top=_top_left.getHeight()+ _mapBorder.getHeight()+ control.getPadding().getHeight();var left=_mapBorder.getWidth()+ control.getPadding().getWidth();setPosition(control,top,left);if(_top_left.equals(new IWSize(0,0))){_top_left=new IWSize(_top_left.getWidth()+ control.getPadding().getWidth()*2 + controlWidth,_top_left.getHeight()+ control.getPadding().getHeight()*2 + controlHeight);}
else
{_top_left=new IWSize(_top_left.getWidth(),_top_left.getHeight()+control.getPadding().getHeight()*2 + controlHeight);}
if(_top_left.getHeight()>getMainHeight()){_bounding_box=new IWSize(_bounding_box.getWidth(),_top_left.getHeight()+_mapBorder.getHeight());}
break;case IWAlignment.BOTTOM:var top=getMainHeight()-(_bottom_left.getHeight()+_mapBorder.getHeight()+ control.getPadding().getHeight()+ controlHeight);var left=_mapBorder.getWidth()+ control.getPadding().getWidth();setPosition(control,top,left);if(_bottom_left.equals(new IWSize(0,0))){_bottom_left=new IWSize(_bottom_left.getWidth()+ control.getPadding().getWidth()*2 + controlWidth,_bottom_left.getHeight()+ control.getPadding().getHeight()*2 + controlHeight);}
else
{_bottom_left=new IWSize(_bottom_left.getWidth(),_bottom_left.getHeight()+control.getPadding().getHeight()*2 + controlHeight);}
break;case IWAlignment.CENTER:case IWAlignment.LEFT:_center_left.push(control);var length=0;for(var i=0;i<_center_left.length;i++){length +=parseInt(_center_left[i].getContainer().style.height);length +=2*_center_left[i].getPadding().getHeight();}
var start=Math.round((getMainHeight()- length)/2.0);var pos=start;for(var i=0;i<_center_left.length;i++){var top=pos + _center_left[i].getPadding().getHeight();var left=_mapBorder.getWidth()+ _center_left[i].getPadding().getWidth();setPosition(_center_left[i],top,left);pos +=parseInt(_center_left[i].getContainer().style.height);pos +=2*_center_left[i].getPadding().getHeight();}
if(length>getMainHeight()){_bounding_box=new IWSize(_bounding_box.getWidth(),getMainHeight()+(length-getMainHeight())/2);}
break;default:alert("Invalid positioning!");}
break;case IWAlignment.CENTER:var x_center=Math.round(getMainWidth()/2.0);var y_center=Math.round(getMainHeight()/2.0);if(_center_x.equals(new IWSize(0,0))&&_center_y.equals(new IWSize(0,0))){con_y=Math.round(controlHeight/2.0);con_x=Math.round(controlWidth/2.0);_center_x=new IWSize(x_center + con_x + control.getPadding().getWidth(),x_center + con_x + control.getPadding().getWidth());_center_y=new IWSize(y_center + con_y + control.getPadding().getHeight(),y_center + con_y + control.getPadding().getHeight());var top=y_center - con_y;var left=x_center - con_x;setPosition(control,top,left);}
else
{switch(control.getSecondOrientation()){case IWAlignment.TOP:var top=getMainHeight()-(_center_y.getWidth()+ controlHeight + control.getPadding().getHeight());var left=x_center - Math.round(controlWidth/2.0);setPosition(control,top,left);_center_y=new IWSize(_center_y.getWidth()+ controlHeight + control.getPadding().getHeight()*2,_center_y.getHeight());break;case IWAlignment.RIGHT:case IWAlignment.CENTER:var top=y_center - Math.round(controlHeight/2.0);var left=_center_x.getHeight()+ control.getPadding().getWidth();setPosition(control,top,left);_center_x=new IWSize(_center_x.getWidth(),_center_x.getHeight()+ controlWidth + control.getPadding().getWidth()*2);break;case IWAlignment.BOTTOM:var top=_center_y.getHeight()+ control.getPadding().getHeight();var left=x_center - Math.round(controlWidth/2.0);setPosition(control,top,left);_center_y=new IWSize(_center_y.getWidth(),_center_y.getHeight()+ controlHeight + control.getPadding().getHeight()*2);break;case IWAlignment.LEFT:var top=y_center - Math.round(controlHeight/2.0);var left=getMainWidth()-(_center_x.getWidth()+ controlWidth + control.getPadding().getWidth());setPosition(control,top,left);_center_x=new IWSize(_center_x.getWidth()+ controlWidth + control.getPadding().getWidth()*2,_center_x.getHeight());break;default:alert("Invalid positioning!");}
}
if(_center_x.getHeight()>getMainWidth()){_bounding_box=new IWSize(_center_x.getHeight(),_bounding_box.getHeight());}
if(_center_y.getHeight()>getMainHeight()){_bounding_box=new IWSize(_bounding_box.getWidth(),_center_y.getHeight());}
break;default:alert("Invalid positioning!");}
};function setPosition(control,left,top){if(control.isRedrawable()||control.positionedFirstTime==null){control.getContainer().style.top=left+'px';control.getContainer().style.left=top+'px';control.positionedFirstTime=true;}
else
{size=IWDOMHelper.getSize(control.getContainer());var controlWidth=size.getWidth();var controlHeight=size.getHeight();var controlTop=parseInt(control.getContainer().style.top);var controlLeft=parseInt(control.getContainer().style.left);if(controlTop + controlHeight>getMainHeight()){var newTop=getMainHeight()- controlHeight;if(newTop<0)newTop=0;control.getContainer().style.top=newTop + 'px';}
if(controlLeft + controlWidth>getMainWidth()){var newLeft=getMainWidth()- controlWidth;if(newLeft<0)newLeft=0;control.getContainer().style.left=newLeft + 'px';}
}
}
if((typeof zIndex !='number')||(parseInt(zIndex)!=zIndex)){logger.error('Layer is not an int:'+ zIndex+',type:'+typeof zIndex);}
var _zIndex=zIndex;var _mapBorder=new IWSize(4,4);var _container=container;var _bounding_box=new IWSize(getMainWidth(),getMainHeight());var _controls=new Array();var _center_top=new Array();var _center_bottom=new Array();var _center_left=new Array();var _center_right=new Array();var _top_left;var _top_right;var _bottom_left;var _bottom_right;var _center_x;var _center_y;resetBorders();}
function IWLayoutManager(div){this.getLayer=function(zIndex){if((typeof zIndex !='number')||(parseInt(zIndex)!=zIndex)){throw('Layer is not an int:'+ zIndex+',type:'+typeof zIndex);}
zIndex +=_OFFSET;var found=false;var i=0;for(i=0;i<_layer.length;i++){if((typeof _layer[i][0]=='number')&&(_layer[i][0]==zIndex)){found=true
break;}
}
if(found==false){var layout=new IWLayout(_divMap,zIndex);_layer.push(new Array(zIndex,layout));i=_layer.length-1;IWEventManager.addListener(layout,'onresize',function(event){if(_boundingBoxChanged(event.newSize)){IWEventManager.trigger(this,'onresize',event);}}.iwclosure(this));}
return _layer[i][1];};this.getLayers=function(){return _layer;};this.redraw=function(){for(var i=0;i<_layer.length;i++){_layer[i][1].redraw();}
};function _boundingBoxChanged(newSize){if((_bounding_box.getWidth()<newSize.getWidth())||(_bounding_box.getHeight()<newSize.getHeight()))
{_bounding_box=new IWSize(newSize.getWidth(),newSize.getHeight());return true;}
return false;}
var _logger=log4javascript.getLogger('IWLayoutManager');var _layer=new Array();var _divMap=div;var _bounding_box=new IWSize(0,0);var _OFFSET=30;}
var IWLockManager=new function(){var _lockObjects=new Object();this.lock=function(lockObject){if(typeof _lockObjects[lockObject]!='undefined'){return false;}
_lockObjects[lockObject]=lockObject;return true;};this.unlock=function(lockObject){if(typeof _lockObjects[lockObject]=='undefined'){return false;}
delete _lockObjects[lockObject];return true;};this.isLocked=function(lockObject){return(typeof _lockObjects[lockObject]!='undefined'&&_lockObjects[lockObject]==lockObject);};};function IWMap(container){var _divCSS=iw.create('div');var _divClipping=iw.create('div');var _divLabels=iw.create('div');var _divLabels2=iw.create('div');var _divZoomingAndDragging=iw.create('div');var _divOverlaysAndControls=iw.create('div');var _divOverlay=iw.create('div');var _divControl=iw.create('div');var _divWindowOverlay=iw.create('div');var _imgZoomingAndDragging=iw.create('img');var _imgLabels=iw.create('img');var _imgLabels2=iw.create('img');var _imgPrintMap=iw.create('img');var self=this;var _logger=log4javascript.getLogger('IWMap');var _container=container;var _options=new IWMapOptions(this);var _tileset=null;var _savedCenter=null;var _savedZoom=null;var _actionStack=new IWActionStack(this);var _layoutManager=new IWLayoutManager(_divControl);var _windowOverlayManager=new IWWindowOverlayManager(this);var sessionKeeper=new IWSessionKeeper();var _layers=new Array();var _overlayManager=null;var _isOpticalZooming=false;var _layerInfoManager=new IWLayerInfoManager(this);var _mouseAdapter=new IWMouseAdapter();var _mouseStopTimeout=null;var _oldZoomBounds=null;var _dragOnMouseMoveListener=null;var _dragOnMouseUpListener=null;var _startDragPosition=null;var _timeoutWheel=null;var _clickTimeout=null;var _clickTimestamp=null;var _dblClickTimestamp=null;var _onMouseDownPosition=null;var _isOnClickEvent=false;var _dragClosure=function(event){if(_divZoomingAndDragging.style.cursor !='pointer'){_divZoomingAndDragging.style.cursor='pointer';}
dragMap(_mouseAdapter.toMouseEvent(event,_divZoomingAndDragging));}.iwclosure(this);var _dropClosure=function(event){dropMap(_mouseAdapter.toMouseEvent(event,_container));IWLockManager.unlock(self);}.iwclosure(this);var _onmousestopClosure=function(event){if(typeof event.returnValue=='undefined'||event.returnValue !=false){window.clearTimeout(_mouseStopTimeout);var mouseEvent=_mouseAdapter.toMouseEvent(event,_container);if(mouseEvent.lastPosition==null||!mouseEvent.position.equals(mouseEvent.lastPosition)){_mouseStopTimeout=window.setTimeout(function(){if(!IWLockManager.isLocked(self)){window.clearTimeout(_mouseStopTimeout);self.triggerOnMouseStop(mouseEvent);}
},350
);}
}
this.triggerOnMouseMove(mouseEvent);}.iwclosure(this);var _mouseWheelClosure=wheelZoom.iwclosure(this);this.createPrintMap=function(){var mapType=this.getCurrentMapType();var url=mapType.getTilesServerConfig().getNextAlias()+mapType.getTilesServerConfig().getBaseDir()+'/servlet/FrontController?cmd=getPrintMap' +'&app=ms' +'&VNR=' + IWAccessFilter.getCNR()+'&PNR=' + IWAccessFilter.getPNR()+'&mapcx=' + this.getCenter().getX()+'&mapcy=' + this.getCenter().getY()+'&mapdx=' + this.getMapWidthInMeter()+'&mapdy=' + this.getMapHeightInMeter()+'&width=' + this.getOptions().getSize().getWidth()+'&height=' + this.getOptions().getSize().getHeight()+'&projc=lcc_europe' +'&maptype=' + mapType.getName()+IWRequestFormatter.getLayerParameter(this.getZoom(),this.getLayers());if(url.length<2000){_imgPrintMap.src=url;}
else
{var xmlHttp=new IWXMLHttpRequest();xmlHttp.open('POST',mapType.getProxyURL()+ '?serverURL=' + escape(url),true);xmlHttp.onreadystatechange=function(){callbackGetPrintMapRequest(xmlHttp);}.iwclosure(this);xmlHttp.send(null);}
};this.addWindowOverlay=function(windowOverlay){windowOverlay.beforeAppend();windowOverlay.redraw();iw.append(windowOverlay.getParent(),windowOverlay.getContainer());windowOverlay.afterAppend();};this.removeWindowOverlay=function(windowOverlay){if(windowOverlay.getContainer){windowOverlay.beforeRemove();iw.remove(windowOverlay.getContainer());windowOverlay.afterRemove();}
};this.openInfoBalloon=function(coordinate,content){_windowOverlayManager.openInfoBalloon(coordinate,content);};this.removeInfoBalloon=function(){_windowOverlayManager.removeInfoBalloon();};this.openTooltip=function(coordinate,text){_windowOverlayManager.openTooltip(coordinate,text);};this.removeTooltip=function(){_windowOverlayManager.removeTooltip();};this.getContainer=function(){return _container;};this.getCenter=function(){var center=null;if(_tileset.getCenter()!=null){center=_tileset.getCenter().clone();}
return center;};this.getMapWidthInMeter=function(){return _tileset.GetMeterWidth();};this.getMapHeightInMeter=function(){return _tileset.GetMeterHeight();};this.getMeterPerPixel=function(){if(_options.getSize().getWidth()==0){return 0;}
return Math.round(this.getMapWidthInMeter()/_options.getSize().getWidth());};this.getZoom=function(){return _tileset.FindBestScalingLevel();};this.getZoomByMeter=function(meter){var zoomlevel=null;var n=iwconst.A_TILESIZE_METER.length-1;var meterPerTile=meter/(this.getOptions().getSize().getWidth()/IWTile.SIZE);if(meterPerTile<=iwconst.A_TILESIZE_METER[0]){zoomlevel=0;}
else if(meterPerTile>=iwconst.A_TILESIZE_METER[n]){zoomlevel=n;}
else
{for(var i=0;i<n;i++){if(meterPerTile>=iwconst.A_TILESIZE_METER[i]&&meterPerTile<=iwconst.A_TILESIZE_METER[i+1]){var a=meterPerTile - iwconst.A_TILESIZE_METER[i];var b=iwconst.A_TILESIZE_METER[i+1]- meterPerTile;if(a<=b){zoomlevel=i;}
else
{zoomlevel=i+1;}
break;}
}
}
_logger.info('getZoomByMeter(' + meter + ')meterPerTile:' + meterPerTile + ',tilesX:' + _tileset.getTilesAxis().getWidth()+ ' returning zoomlevel ' + zoomlevel);return zoomlevel;};this.getBounds=function(){var nDiffX=_tileset.GetMeterWidth()/2;var nDiffY=_tileset.GetMeterHeight()/2;var center=this.getCenter();var coordNW=new IWCoordinate(center.getX()- nDiffX,center.getY()+ nDiffY);var coordSE=new IWCoordinate(center.getX()+ nDiffX,center.getY()- nDiffY);return new IWBounds(coordNW,coordSE);};this.getBoundsZoomlevel=function(bounds){return _tileset.getBoundsZoomlevel(bounds);};this.getCurrentMapType=function(){return _tileset.getCurrentMapType();};this.getOptions=function(){return _options;};this.getLayoutManager=function(){return _layoutManager;};this.getOverlayManager=function(){return _overlayManager;};this.getLayerInfoManager=function(){return _layerInfoManager;};this.setCenter=function(coordinate,zoom,mapType){var lastZoom=_tileset.FindBestScalingLevel();var lastCenter=_tileset.getCenter();if(typeof zoom !='undefined'){_tileset.setZoomLevel(zoom,false);}
if(mapType){_tileset.setMapType(mapType,false);}
_tileset.setCenter(coordinate,true);var event=new IWMapCenteredEvent();event.coordinate=_tileset.getCenter();if(lastCenter !=null){event.lastCoordinate=lastCenter;}
else
{event.lastCoordinate=event.coordinate;}
var offsetX=event.coordinate.getX()- event.lastCoordinate.getX();var offsetY=event.coordinate.getY()- event.lastCoordinate.getY();event.offset=new IWCoordinate(offsetX,offsetY);event.zoom=_tileset.FindBestScalingLevel();event.lastZoom=lastZoom;this.triggerAfterCentered(event);};this.panTo=function(coord){var oldCenter=this.fromCoordinateToPixel(this.getCenter());var newCenter=this.fromCoordinateToPixel(coord);var offset=new IWPoint(oldCenter.getX()- newCenter.getX(),oldCenter.getY()- newCenter.getY());_tileset.panTo(coord);if(this.panTo.caller.caller !=_actionStack.undoAction)if(this.panTo.caller.caller !=_actionStack.redoAction)_actionStack.addAction(new IWMapActionMove(offset));};this.panBy=function(offset,undoable){_tileset.panBy(offset);if(undoable||typeof undoable=='undefined'){_actionStack.addAction(new IWMapActionMove(offset));}
};this.setZoom=function(zoomLevel,undoable){var oldBounds=this.getBounds();_tileset.setZoomLevel(zoomLevel,true);if(undoable||typeof undoable=='undefined'){_actionStack.addAction(new IWMapActionZoom(oldBounds,this.getBounds()));}
};this.isZooming=function(){return _tileset.isZooming()
};this.zoomIn=function(undoable){var oldBounds=this.getBounds();if(_tileset.zoomIn()){if(undoable||typeof undoable=='undefined'){_actionStack.addAction(new IWMapActionZoom(oldBounds,this.getBounds()));}
return true;}
return false;};this.zoomOut=function(undoable){var oldBounds=this.getBounds();if(_tileset.zoomOut()){if(undoable||typeof undoable=='undefined'){_actionStack.addAction(new IWMapActionZoom(oldBounds,this.getBounds()));}
return true;}
return false;};this.setOpticalZoomStep=function(tileSizeInMeter){if(!_isOpticalZooming){return false;}
return _tileset.oZoomObject.opticalZoom(tileSizeInMeter);}
this.startOpticalZoom=function(){if(!_isOpticalZooming){_tileset.createZoomDIV();_isOpticalZooming=true;return true;}
return false;}
this.endOpticalZoom=function(step){if(_isOpticalZooming){_isOpticalZooming=false;return _tileset.endOpticalZoom(step);}
return null;}
this.setMapType=function(mapType,undoable){if(mapType==null){_logger.debug('The specified map type is null.');}
else
{if(undoable||typeof undoable=='undefined'){var oldMapType=_tileset.getCurrentMapType();_actionStack.addAction(new IWMapActionTypeChange(oldMapType,mapType));}
_tileset.setMapType(mapType,(this.getCenter()!=null));_logger.debug('New map type is ' + mapType.toString());}
}
this.fromCoordinateToPixel=function(coord){return _tileset.fromCoordinateToPixel(coord);};this.fromPixelToCoordinate=function(point){return _tileset.fromPixelToCoordinate(point);};this.savePosition=function(){_savedCenter=this.getCenter();_savedZoom=this.getZoom();_logger.debug('Position saved');};this.returnToSavedPosition=function(){if(_savedCenter&&_savedZoom){this.setCenter(_savedCenter,_savedZoom);_logger.debug('Returning to saved position');}
else
{_logger.debug('No position saved yet');}
};this.undo=function(){_actionStack.undoAction();};this.redo=function(){_actionStack.redoAction();};this.addLayer=function(layer){for(var i=0;i<_layers.length;i++){if(layer==_layers[i]){_layers[i]=layer;return;}
}
_layers.push(layer);};this.removeLayerByName=function(layerName){for(var i=0;i<_layers.length;i++){if(layerName==_layers[i].getName()){var removeLayer=_layers[i];_layers.splice(i,1);removeLayer.triggerOnRemove();return removeLayer;}
}
return null;};this.removeLayer=function(layer){for(var i=0;i<_layers.length;i++){if(layer==_layers[i]){var removeLayer=_layers[i];_layers.splice(i,1);removeLayer.triggerOnRemove();break;}
}
};this.redraw=function(){_tileset.showLabels(true);};this.getLayers=function(){return _layers;};this.getLayerByName=function(layerName){for(var i=0;i<_layers.length;i++){if(layerName==_layers[i].getName()){return _layers[i];;}
}
return null;};this.getSessionId=function(){return iwconst.SESSION_ID;};this.getClippingContainer=function(){return _divClipping;};this.getWindowOverlayContainer=function(){return _divWindowOverlay;};this.getZoomingAndDraggingContainer=function(){return _divZoomingAndDragging;};this.getOverlayContainer=function(){return _divOverlay;};this.setBoundsConstraint=function(bounds){_tileset.getBoundsConstraintManager().setBoundsConstraint(bounds);};this.getBoundsConstraint=function(){return _tileset.getBoundsConstraintManager().getBoundsConstraint();};this.getBoundsConstraintManager=function(){return _tileset.getBoundsConstraintManager();};this.mouseZoom=function(startPixel,endPixel){_tileset.mouseZoom(startPixel,endPixel);};this.toString=function(){return 'IWMap';};this.triggerOnMouseWheel=function(event){if(!event){event=window.event;}
var delta=0;if(event.wheelDelta){delta=parseInt(event.wheelDelta);if(delta<0){delta=-1;}
else
{delta=1;}
}
else if(event.detail){delta=parseInt(event.detail);if(delta<0){delta=1;}
else
{delta=-1;}
if(window.opera){delta=-delta;}
}
if(this.getOptions().getMouseWheelAction()==IWMapOptions.CONTROL_ZOOM){_mouseWheelClosure(event,delta);}
var mouseWheelEvent=new IWMouseWheelEvent();mouseWheelEvent.delta=delta;IWEventManager.trigger(this,'onmousewheel',mouseWheelEvent);};this.triggerOnMouseDown=function(event){IWEventManager.trigger(this,'onmousedown',event);};this.triggerOnMouseUp=function(event){IWEventManager.trigger(this,'onmouseup',event);};this.triggerOnMouseMove=function(event){IWEventManager.trigger(this,'onmousemove',event);};this.triggerOnMouseStop=function(event){IWEventManager.trigger(this,'onmousestop',event);};this.triggerOnClick=function(event){_clickTimestamp=new Date().getTime();_clickTimeout=null;if(_isOnClickEvent){IWEventManager.trigger(this,'onclick',event);}
};this.triggerAfterInitialized=function(event){IWEventManager.trigger(this,'afterinitialized',event);};this.triggerAfterCentered=function(event){IWEventManager.trigger(this,'aftercentered',event);};this.triggerBeforeMove=function(event){IWEventManager.trigger(this,'beforemove',event);};this.triggerOnMove=function(event){IWEventManager.trigger(this,'onmove',event);};this.triggerAfterMove=function(event){IWEventManager.trigger(this,'aftermove',event);};this.triggerBeforeZoom=function(){IWEventManager.trigger(this,'beforezoom',null);};this.triggerOnZoom=function(event){IWEventManager.trigger(this,'onzoom',event);};this.triggerAfterZoom=function(){IWEventManager.trigger(this,'afterzoom',null);};this.triggerAfterMapTypeChanged=function(event){IWEventManager.trigger(this,'aftermaptypechanged',event);};this.triggerBeforeMapTypeChanged=function(event){IWEventManager.trigger(this,'beforemaptypechanged',event);};this.triggerAfterMapTypesChanged=function(event){IWEventManager.trigger(this,'aftermaptypeschanged',event);};this.triggerAfterMapTypeAvailabilityChanged=function(event){IWEventManager.trigger(this,'aftermaptypeavailabilitychanged',event);};this.triggerAfterResized=function(event){var size=event.newSize;var width=parseInt(_container.style.width);var height=parseInt(_container.style.height);if(_tileset !=null){if(isNaN(width)||isNaN(height)||size.getWidth()!=width||size.getHeight()!=height){resize(size);_layoutManager.redraw();IWEventManager.trigger(this,'afterresized',event);}
}
};this.triggerAfterMouseControlChanged=function(event){IWEventManager.trigger(this,'aftermousecontrolchanged',event);};this.triggerAfterLanguageChanged=function(event){IWEventManager.trigger(this,'afterlanguagechanged',event);};this.triggerAfterCopyrightChanged=function(event){IWEventManager.trigger(this,'aftercopyrightchanged',event);};function callbackGetPrintMapRequest(xmlHttp){if(xmlHttp.readyState==4){if(xmlHttp.statusText=='OK'){_imgPrintMap.src=xmlHttp.responseText;}
else if(xmlHttp.status==401){alert(xmlHttp.statusText);}
}
else
{alert('GetPrintMap failed:' + xmlHttp.statusText);}
}
function wheelZoom(event,nDelta){if(_tileset.isZooming())return;if(!event)event=window.event;if(_timeoutWheel==null){self.triggerBeforeZoom();_tileset.createZoomDIV();_iCurrectWheelstep=self.getZoom();_oldZoomBounds=self.getBounds();var listener=IWEventManager.addListener(self,'afterzoom',function(e){var action=new IWMapActionZoom(_oldZoomBounds,self.getBounds());_actionStack.addAction(action);IWEventManager.removeListener(listener);}
);}
else
{window.clearTimeout(_timeoutWheel);}
var mapType=self.getCurrentMapType();_iCurrectWheelstep=Math.min(Math.max(_iCurrectWheelstep - nDelta,mapType.getMaxLevel()),mapType.getMinLevel());var iSizeMeter=iwconst.A_TILESIZE_METER[_iCurrectWheelstep];var zoomFactor=_tileset.nTilesizeMeter/iSizeMeter;_timeoutWheel=window.setTimeout(function(){this.loadZoomMap();_timeoutWheel=null;}.iwclosure(_tileset),500
);_tileset.oZoomObject.opticalZoom(iSizeMeter);if(event.preventDefault){event.preventDefault();}
}
function prepareMouseDragging(mouseEvent){if(IWLockManager.lock(self)){if(_dragOnMouseMoveListener !=null)IWEventManager.removeListener(_dragOnMouseMoveListener);if(_dragOnMouseUpListener !=null)IWEventManager.removeListener(_dragOnMouseUpListener);var moveEvent=new IWMoveEvent();moveEvent.position=mouseEvent.position;moveEvent.lastPosition=mouseEvent.lastPosition;moveEvent.offset=new IWPoint(0,0);self.triggerBeforeMove(moveEvent);_startDragPosition=mouseEvent.position;_divZoomingAndDragging.style.cursor='pointer';_dragOnMouseMoveListener=IWEventManager.addDOMListener(_divZoomingAndDragging,'onmousemove',_dragClosure);_dragOnMouseUpListener=IWEventManager.addDOMListener(_divZoomingAndDragging,'onmouseup',_dropClosure);}
}
function dragMap(mouseEvent){if(_options.getSize().containsPoint(mouseEvent.position)){if(_divZoomingAndDragging.style.cursor !='pointer'){_divZoomingAndDragging.style.cursor='pointer';}
_tileset.move(mouseEvent.offset);}
else
{dropMap(mouseEvent);}
}
function dropMap(mouseEvent){if(_dragOnMouseMoveListener==null||_dragOnMouseUpListener==null){return;}
IWEventManager.removeListener(_dragOnMouseMoveListener);IWEventManager.removeListener(_dragOnMouseUpListener);_dragOnMouseMoveListener=null;_dragOnMouseUpListener=null;_divZoomingAndDragging.style.cursor='auto';var moveEvent=new IWMoveEvent();moveEvent.position=mouseEvent.position;moveEvent.lastPosition=_startDragPosition;var moveX=mouseEvent.position.getX()- _startDragPosition.getX();var moveY=mouseEvent.position.getY()- _startDragPosition.getY();moveEvent.offset=new IWPoint(moveX,moveY);if(moveX !=0||moveY !=0){_tileset.showLabels(true);if(_tileset.needsReload()){_tileset.reload();}
}
self.triggerAfterMove(moveEvent);}
function buildGUI(container){var newWidth=_options.getSize().getWidth()+ 'px';var newHeight=_options.getSize().getHeight()+ 'px';iw.empty(container);_divCSS.className='iwmapcss';_divCSS.style.position='relative';_divCSS.style.top='0px';_divCSS.style.left='0px';iw.append(container,_divCSS);iw.append(container.firstChild,_divClipping);_divClipping.id='divClipping';_divClipping.name='divClipping';with(_divClipping.style){position='relative';left='0px';top='0px';width=newWidth;height=newHeight;overflow='hidden';clip='rect(0px ' + newWidth + ' ' + newHeight + ' 0px)';}
iw.append(_divClipping,_divLabels);_divLabels.id='divLabels';_divLabels.className='iwnoprint';with(_divLabels.style){position='absolute';left='0px';top='0px';zIndex='2';width=newWidth;height=newHeight;}
iw.append(_divLabels,_imgLabels);_imgLabels.id='imgLabels';_imgLabels.className='iwnoprint';with(_imgLabels.style){width=newWidth;height=newHeight;}
_imgLabels.src=iwconst.GLOBAL_APP_URL + 'img/symbols/blank.gif';iw.append(_divClipping,_divLabels2);_divLabels2.id='divLabels2';_divLabels2.className='iwnoprint';with(_divLabels2.style){position='absolute';left='0px';top='0px';zIndex='2';width=newWidth;height=newHeight;}
iw.append(_divLabels2,_imgLabels2);_imgLabels2.id='imgLabels2';_imgLabels2.className='iwnoprint';with(_imgLabels2.style){width=newWidth;height=newHeight;}
_imgLabels2.src=iwconst.GLOBAL_APP_URL + 'img/symbols/blank.gif';iw.append(_divClipping,_divZoomingAndDragging);_divZoomingAndDragging.id='divZoomingAndDragging';with(_divZoomingAndDragging.style){position='absolute';left='0px';top='0px';zIndex='3';width=newWidth;height=newHeight;}
_imgPrintMap.id='IWPrintMap';_imgPrintMap.className='iwnoscreen';iw.append(_divClipping,_imgPrintMap);_imgPrintMap.src=iwconst.GLOBAL_APP_URL + 'img/symbols/blank.gif';iw.append(_divZoomingAndDragging,_imgZoomingAndDragging);_imgZoomingAndDragging.id='imgZoomingAndDragging';_imgZoomingAndDragging.src=iwconst.GLOBAL_APP_URL + 'img/symbols/blank.gif';_imgZoomingAndDragging.galleryimg='no';_imgZoomingAndDragging.style.width=newWidth;_imgZoomingAndDragging.style.height=newHeight;iw.append(_divZoomingAndDragging,_divOverlaysAndControls);_divOverlaysAndControls.id='divOverlaysAndControls';with(_divOverlaysAndControls.style){position='absolute';left='0px';top='0px';width='0px';height='0px';}
iw.append(_divOverlaysAndControls,_divControl);_divControl.id='divControl';with(_divControl.style){position='absolute';left='0px';top='0px';width=newWidth;height=newHeight;zIndex='0';}
iw.append(_divControl,_divOverlay);_divOverlay.id='divOverlay';with(_divOverlay.style){position='absolute';left='0px';top='0px';width='0px';height='0px';zIndex='0';}
iw.append(_divOverlaysAndControls,_divWindowOverlay);_divWindowOverlay.id='divWindowOverlay';with(_divWindowOverlay.style){position='absolute';left='0px';top='0px';zIndex='1';}
IWEventManager.addListener(self,'onmove',function(event){var vis=_divWindowOverlay.style.display;if(IWBrowserDetect.browser !='Explorer'||IWBrowserDetect.version>=7){_divWindowOverlay.style.display='none';}
_divWindowOverlay.style.top=parseInt(_divWindowOverlay.style.top)+ event.offset.getY()+ 'px';_divWindowOverlay.style.left=parseInt(_divWindowOverlay.style.left)+ event.offset.getX()+ 'px';_divWindowOverlay.style.display=vis;}
);_divOverlay.oncontextmenu=function(){return false;};_divOverlay.onselectstart=function(){return false;};_divOverlay.ondrag=function(){return false;};_divControl.oncontextmenu=function(){return false;};_divControl.onselectstart=function(){return false;};_divControl.ondrag=function(){return false;};_divOverlaysAndControls.oncontextmenu=function(){return false;};_divOverlaysAndControls.onselectstart=function(){return false;};_divOverlaysAndControls.ondrag=function(){return false;};_divWindowOverlay.oncontextmenu=function(){return false;};_divWindowOverlay.onselectstart=function(){return false;};_divWindowOverlay.ondrag=function(){return false;};_divZoomingAndDragging.oncontextmenu=function(){return false;};_divZoomingAndDragging.onselectstart=function(){return false;};_divZoomingAndDragging.ondrag=function(){return false;};IWEventManager.addDOMListener(_divClipping,'onmousemove',_onmousestopClosure);IWEventManager.addDOMListener(_divClipping,'onmouseover',function(e){if(_options.getMouseWheelAction()!=IWMapOptions.CONTROL_NONE){window.onmousewheel=document.onmousewheel=function(e){return false;};}
}.iwclosure(self)
);IWEventManager.addDOMListener(_divClipping,'onmouseout',function(e){if(_options.getMouseWheelAction()!=IWMapOptions.CONTROL_NONE){window.onmousewheel=document.onmousewheel=function(e){return true;};}
var mouseEvent=_mouseAdapter.toMouseEvent(e,this.getContainer());if(!_options.getSize().containsPoint(mouseEvent.position)){_dropClosure(e);}
window.clearTimeout(_mouseStopTimeout);}.iwclosure(self)
);IWEventManager.addDOMListener(_divZoomingAndDragging,'onmousedown',function(event){_isOnClickEvent=false;_divZoomingAndDragging.style.cursor='pointer';var mouseEvent=_mouseAdapter.toMouseEvent(event,_container);_onMouseDownPosition=mouseEvent.position;if(mouseEvent.button==IWButton.LEFT){var leftMouseAction=this.getOptions().getLeftMouseAction();if(leftMouseAction==IWMapOptions.CONTROL_MOVE){prepareMouseDragging(mouseEvent);}
}
else if(mouseEvent.button==IWButton.RIGHT){var rightMouseAction=this.getOptions().getRightMouseAction();if(rightMouseAction==IWMapOptions.CONTROL_MOVE){prepareMouseDragging(mouseEvent);}
}
this.triggerOnMouseDown(mouseEvent);}.iwclosure(self)
);IWEventManager.addDOMListener(_divZoomingAndDragging,'onmouseup',function(event){_divZoomingAndDragging.style.cursor='auto';var mouseEvent=_mouseAdapter.toMouseEvent(event,_container);if(_onMouseDownPosition&&_onMouseDownPosition.distanceFrom(mouseEvent.position)<2){_isOnClickEvent=true;}
_onMouseDownPosition=null;this.triggerOnMouseUp(mouseEvent);}.iwclosure(self)
);IWEventManager.addDOMListener(_divZoomingAndDragging,'onclick',function(event){window.clearTimeout(_mouseStopTimeout);_clickTimestamp=new Date().getTime();if(_clickTimeout){return;}
if(_dblClickTimestamp){var time=_clickTimestamp - _dblClickTimestamp;if(time<10){return;}
}
if(!event)event=window.event;var mouseEvent=_mouseAdapter.toMouseEvent(event,_container);_clickTimeout=window.setTimeout(function(){self.triggerOnClick(mouseEvent);}.iwclosure(mouseEvent),200);}.iwclosure(self)
);IWEventManager.addDOMListener(_divZoomingAndDragging,'ondblclick',function(event){_dblClickTimestamp=new Date().getTime();if(_clickTimeout){window.clearTimeout(_clickTimeout);_clickTimeout=null;}
if(this.getOptions().getDoubleClickAction()==IWMapOptions.CONTROL_ZOOM){var mouseEvent=_mouseAdapter.toMouseEvent(event,_container);var pixel=mouseEvent.position;var pixelNW=pixel.add(new IWPoint(-20,-20));var pixelSE=pixel.add(new IWPoint(20,20));var coord=this.fromPixelToCoordinate(pixel);var coordNW=this.fromPixelToCoordinate(pixelNW);var coordSE=this.fromPixelToCoordinate(pixelSE);var maxLevel=this.getCurrentMapType().getMaxLevel();var newZoomLevel=this.getBoundsZoomlevel(new IWBounds(coordNW,coordSE));if(newZoomLevel>=maxLevel){_divZoomingAndDragging.style.cursor='pointer';_tileset.mouseZoom(pixelNW,pixelSE);IWEventManager.addListener(this,'afterzoom',function(e){_divZoomingAndDragging.style.cursor='auto'}.iwclosure(this));}
}
}.iwclosure(self)
);IWEventManager.addDOMListener(_divZoomingAndDragging,'onmousewheel',function(e){self.triggerOnMouseWheel(e);});IWEventManager.addDOMListener(_divZoomingAndDragging,'DOMMouseScroll',function(e){self.triggerOnMouseWheel(e);});}
function resize(size){var newWidth=size.getWidth()+ 'px';var newHeight=size.getHeight()+ 'px';var containerSize=_options.getSizeInUnit();_container.style.width=containerSize.size.getWidth()+ containerSize.unit;_container.style.height=containerSize.size.getHeight()+ containerSize.unit;if(_tileset !=null&&_tileset.getCenter()!=null){_tileset.Hide();_tileset.showLabels(false);_tileset.oAsynchroneTransferObject.AbortAllRequests();}
with(_divCSS.style){width=newWidth;height=newHeight;}
with(_divClipping.style){clip='rect(0px,' + newWidth + ',' + newHeight + ',0px)';width=newWidth;height=newHeight;}
with(_divLabels.style){width=newWidth;height=newHeight;}
with(_divLabels2.style){width=newWidth;height=newHeight;}
with(_imgLabels.style){width=newWidth;height=newHeight;}
with(_imgLabels2.style){width=newWidth;height=newHeight;}
with(_divZoomingAndDragging.style){width=newWidth;height=newHeight;}
with(_divOverlaysAndControls.style){width=newWidth;height=newHeight;}
with(_imgZoomingAndDragging.style){width=newWidth;height=newHeight;}
with(_divControl.style){width=newWidth;height=newHeight;}
_tileset.createTiles();_tileset.oZoomObject=new IWZoom(_tileset);if(_tileset !=null&&_tileset.getCenter()!=null){_tileset.PlaceTiles();_tileset.LoadWholeMap();}
}
if(!container){alert('Das angegebene Karten-Element wurde nicht gefunden');return false;}
if(container.style.position==''){container.style.position='relative';}
var width=parseInt(container.style.width);var height=parseInt(container.style.height);var unit=container.style.width.replace(/\d/g,'');if(_options.getSize()==null){if(!isNaN(width)&&!isNaN(height)&&width>0&&height>0){_options.setSize(new IWSize(width,height),unit);}
else
{_options.setSize(new IWSize(600,400),'px');}
}
buildGUI(container);_overlayManager=new IWOverlayManager(this,_divOverlay);_tileset=new IWTileset(this);this.getLayoutManager().getLayer(0).addControl(new IWCopyrightControl(this),IWAlignment.RIGHT,IWAlignment.BOTTOM,0,0);this.getLayoutManager().getLayer(0).addControl(new IWZoomBoxControl(this),IWAlignment.RIGHT,IWAlignment.BOTTOM,0,0);IWEventManager.addListener(_tileset,'onclick',function(e){self.triggerOnClick(e);});IWEventManager.addListener(_tileset,'ontypeavailabilitychange',function(e){self.triggerAfterMapTypeAvailabilityChanged(e);});IWEventManager.addListener(this,'beforezoom',function(e){window.clearTimeout(_timeoutWheel);});}
function IWMapAction(){this.isMapAction=function(){return true;};this.redo=function(){throw('Method IWMapAction.redo is not implemented.');};this.undo=function(){throw('Method IWMapAction.undo is not implemented.');};this.toString=function(){throw('Method IWMapAction.toString is not implemented.');};}
function IWMapActionMove(offset){IWMapAction.call(this);var _offset=offset;this.redo=function(map){map.panBy(_offset,false);};this.undo=function(map){map.panBy(new IWPoint(-_offset.getX(),-_offset.getY()),false);};this.toString=function(){return 'IWMapActionMove ' + _offset.toString();};}
function IWMapActionTypeChange(oldType,newType){IWMapAction.call(this);var _oldType=oldType;var _newType=newType;this.redo=function(map){map.setMapType(_newType,false);};this.undo=function(map){map.setMapType(_oldType,false);};this.toString=function(){return 'IWMapActionTypeChange(' + _oldType.toString()+ ',' + _newType.toString()+ ')';};}
function IWMapActionZoom(oldBounds,newBounds){IWMapAction.call(this);var _oldBounds=oldBounds;var _newBounds=newBounds;this.redo=function(map){var zoom=map.getBoundsZoomlevel(_newBounds);map.setZoom(map.getBoundsZoomlevel(_newBounds));};this.undo=function(map){var zoom=map.getBoundsZoomlevel(_oldBounds);map.setZoom(zoom);};this.toString=function(){return '[IWMapActionZoom]' +'old bounds:' + _oldBounds.toString()+ ',' +'new bounds:' + _newBounds.toString();};}
function IWMapElement(parent){var self=this;var _container=null;var _parent=parent;this.isDisplayed=function(){var e=_container.parentNode;while(e){if(e==parent)return true;e=e.parentNode;}
return false;};this.getParent=function(){return _parent;};this.setParent=function(parent){_parent=parent;};this.isVisible=function(){return(_container.style.visibility !='hidden');};this.setVisible=function(visible){if(visible==true){_container.style.visibility='visible';_container.style.display='block';}
else if(visible==false){_container.style.visibility='hidden';_container.style.display='none';}
};this.setPrintable=function(printable){if(printable==false){_container.className='iwnoprint';}
else if(printable==true){_container.removeAttribute('class');}
};this.isPrintable=function(){return _container.className !='iwnoprint';};this.getContainer=function(){return _container;};this.setContainer=function(container){_container=container;};this.setId=function(id){_container.id=id;};this.getId=function(){return _container.id;};this.onContextMenu=function(event){};this.onMouseUp=function(event){};this.onMouseDown=function(event){};this.onMouseMove=function(event){event.returnValue=false;};this.onMouseOut=function(event){};this.onMouseOver=function(event){noPropagation(event);if(event.preventDefault){event.preventDefault();}
};this.onClick=function(event){};this.onDblClick=function(event){};this.onSelect=function(event){noPropagation(event);event.preventDefault();};this.onMouseWheel=function(event){noPropagation(event);};this.beforeAppend=function(){};this.afterAppend=function(){};this.beforeRemove=function(){};this.afterRemove=function(){};this.destroyMapElement=function(){iw.destroy(_container);IWEventManager.clearInstanceListeners(_container);_container=null;};function handleMouseEvent(eventName,event){if(!event){event=window.event;}
switch(eventName){case 'oncontextmenu':noPropagation(event);self.onContextMenu(event);break;case 'onmouseup':self.onMouseUp(event);break;case 'onmousedown':noPropagation(event);self.onMouseDown(event);break;case 'onmousemove':self.onMouseMove(event);break;case 'onmouseout':noPropagation(event);self.onMouseOut(event);break;case 'onmouseover':self.onMouseOver(event);break;case 'onclick':noPropagation(event);self.onClick(event);break;case 'ondblclick':noPropagation(event);self.onDblClick(event);break;case 'onselect':self.onSelect(event);break;case 'onmousewheel':self.onMouseWheel(event);break;}
}
_container=iw.create('div');_container.id='IWMapElement';_container.style.position='absolute';IWEventManager.addDOMListener(_container,'oncontextmenu',function(e){handleMouseEvent('oncontextmenu',e);});IWEventManager.addDOMListener(_container,'onmouseup',function(e){handleMouseEvent('onmouseup',e);});IWEventManager.addDOMListener(_container,'onmousedown',function(e){handleMouseEvent('onmousedown',e);});IWEventManager.addDOMListener(_container,'onmousemove',function(e){handleMouseEvent('onmousemove',e);});IWEventManager.addDOMListener(_container,'onmouseout',function(e){handleMouseEvent('onmouseout',e);});IWEventManager.addDOMListener(_container,'onmouseover',function(e){handleMouseEvent('onmouseover',e);});IWEventManager.addDOMListener(_container,'ondblclick',function(e){handleMouseEvent('ondblclick',e);});IWEventManager.addDOMListener(_container,'onclick',function(e){handleMouseEvent('onclick',e);});IWEventManager.addDOMListener(_container,'onmousewheel',function(e){handleMouseEvent('onmousewheel',e);});IWEventManager.addDOMListener(_container,'DOMMouseScroll',function(e){handleMouseEvent('onmousewheel',e);});}
function IWMapOptions(map){var _size=null;var _unit='px';var _language='en';var _applicationCopyright='';var _leftMouseAction=IWMapOptions.CONTROL_ZOOM;var _rightMouseAction=IWMapOptions.CONTROL_MOVE;var _mouseWheelAction=IWMapOptions.CONTROL_ZOOM;var _doubleClickAction=IWMapOptions.CONTROL_ZOOM;var _mapTypes=new Array();this.getSize=function(){var retValue=null;if(_size==null){retValue=null;}
else if(_unit=='px'){retValue=_size;}
else
{retValue=calculateSizeInPixel();}
return retValue;};this.getSizeInUnit=function(){var o=new Object();o.size=_size;o.unit=_unit;return o;};this.getLanguage=function(){return _language;};this.getApplicationCopyright=function(){return _applicationCopyright;};this.setSize=function(size,unit){if(typeof unit=='undefined'){unit='px';}
var event=new IWResizeEvent();event.oldSize=this.getSize();_size=size;_unit=unit;event.newSize=this.getSize();map.triggerAfterResized(event);};this.setMapTypes=function(mapTypes){_mapTypes=mapTypes;var event=new IWMapTypesChangedEvent(_mapTypes)
event.mapTypes=_mapTypes;map.triggerAfterMapTypesChanged(event);};this.getMapTypes=function(){return _mapTypes;};this.getMapTypeByName=function(name){var mapType=null;for(var i=0;i<_mapTypes.length;i++){if(_mapTypes[i].getName()==name){mapType=_mapTypes[i];break;}
}
return mapType;};this.setLanguage=function(language){_language=language;var event=new IWLanguageChangedEvent();event.language=_language;map.triggerAfterLanguageChanged(event);};this.setApplicationCopyright=function(applicationCopyright){_applicationCopyright=applicationCopyright;var event=new IWCopyrightChangedEvent();event.copyright=_applicationCopyright;map.triggerAfterCopyrightChanged(event);};this.getLeftMouseAction=function(){return _leftMouseAction;};this.getRightMouseAction=function(){return _rightMouseAction;};this.getMouseWheelAction=function(){return _mouseWheelAction;};this.getDoubleClickAction=function(){return _doubleClickAction;};this.setLeftMouseAction=function(action){if(action !=IWMapOptions.CONTROL_MOVE&&action !=IWMapOptions.CONTROL_ZOOM&&action !=IWMapOptions.CONTROL_NONE)throw('Invalid action:' + action);_leftMouseAction=action;var event=new IWMouseControlChangedEvent();event.mouseAction='left';event.controlMethod=action;map.triggerAfterMouseControlChanged(event);};this.setRightMouseAction=function(action){if(action !=IWMapOptions.CONTROL_MOVE&&action !=IWMapOptions.CONTROL_ZOOM&&action !=IWMapOptions.CONTROL_NONE)throw('Invalid action:' + action);_rightMouseAction=action;var event=new IWMouseControlChangedEvent();event.mouseAction='right';event.controlMethod=action;map.triggerAfterMouseControlChanged(event);};this.setMouseWheelAction=function(action){if(action !=IWMapOptions.CONTROL_ZOOM&&action !=IWMapOptions.CONTROL_NONE)throw('Invalid action:' + action);_mouseWheelAction=action;var event=new IWMouseControlChangedEvent();event.mouseAction='wheel';event.controlMethod=action;map.triggerAfterMouseControlChanged(event);};this.setDoubleClickAction=function(action){if(action !=IWMapOptions.CONTROL_ZOOM&&action !=IWMapOptions.CONTROL_NONE)throw('Invalid action:' + action);_doubleClickAction=action;var event=new IWMouseControlChangedEvent();event.mouseAction='doubleclick';event.controlMethod=action;map.triggerAfterMouseControlChanged(event);};function parseMapTypes(){var mapTypes=new Array();var records=iwconst.MAPTYPES;for(var i=0;i<records.length;i++){var mapType=new IWMapType(map);mapType.setName(records[i].NAME);mapType.setCopyright(records[i].COPYRIGHT);mapType.setMinLevel(records[i].MINLEVEL);mapType.setPreferredLevel(records[i].PREFERREDLEVEL);mapType.setMaxLevel(records[i].MAXLEVEL);mapType.setProxyURL(records[i].PROXYURL);if(records[i].PROJECTIONTYPE=='1'){mapType.setProjection(new IWParallelProjection(map));}
else if(records[i].PROJECTIONTYPE=='2'){mapType.setProjection(new IWCentralProjection(map));}
else
{alert("Projection not set or unknown:" + records[i].PROJECTIONTYPE);}
var tilesServerConfig=new IWServerConfig();tilesServerConfig.setBaseDir(records[i].TILESSERVER.BASE_DIR);tilesServerConfig.setURL(records[i].TILESSERVER.URL);tilesServerConfig.setImageType(records[i].TILESSERVER.IMAGETYPE);tilesServerConfig.setPortList(records[i].TILESSERVER.PORTLIST);tilesServerConfig.setAliases(records[i].TILESSERVER.ALIAS);tilesServerConfig.setCacheEnabled(records[i].TILESSERVER.CACHEENABELD);mapType.setTilesServerConfig(tilesServerConfig);if(records[i].LABELSSERVER){var labelsServerConfig=new IWServerConfig();labelsServerConfig.setBaseDir(records[i].LABELSSERVER.BASE_DIR);labelsServerConfig.setURL(records[i].LABELSSERVER.URL);labelsServerConfig.setImageType(records[i].LABELSSERVER.IMAGETYPE);labelsServerConfig.setPortList(records[i].LABELSSERVER.PORTLIST);labelsServerConfig.setAliases(records[i].LABELSSERVER.ALIAS);labelsServerConfig.setCacheEnabled(records[i].LABELSSERVER.CACHEENABELD);mapType.setLabelsServerConfig(labelsServerConfig);}
mapTypes.push(mapType);}
return mapTypes;}
function calculateSizeInPixel(){var y=map.getContainer().offsetHeight;var x=map.getContainer().offsetWidth;return new IWSize(x,y);}
_mapTypes=parseMapTypes();}
IWMapOptions.CONTROL_NONE=0;IWMapOptions.CONTROL_MOVE=1;IWMapOptions.CONTROL_ZOOM=2;function IWMapType(map){var _map=map;var _name='';var _copyright='';var _direction=0;var _maxLevel=0;var _preferredLevel=0;var _minLevel=0;var _available=false;var _projection=null;var _proxyURL='';var _requestParameters='';var _tilesserverConfig=null;var _labelsserverConfig=null;this.setName=function(name){_name=name;};this.getName=function(){return _name;};this.setCopyright=function(copyright){_copyright=copyright;};this.getCopyright=function(){return _copyright;};this.setMaxLevel=function(maxLevel){_maxLevel=maxLevel;};this.getMaxLevel=function(){return _maxLevel;};this.setPreferredLevel=function(preferredLevel){_preferredLevel=preferredLevel;};this.getPreferredLevel=function(){return _preferredLevel;};this.setMinLevel=function(minLevel){_minLevel=minLevel;};this.getMinLevel=function(){return _minLevel;};this.setProjection=function(projection){_projection=projection;};this.getProjection=function(){return _projection;};this.hasLabels=function(){return(_labelsserverConfig !=null);};this.setRequestParameters=function(requestParameters){_requestParameters=requestParameters;};this.getTilesServerConfig=function(){return _tilesserverConfig;};this.setTilesServerConfig=function(serverConfig){_tilesserverConfig=serverConfig;};this.setLabelsServerConfig=function(serverConfig){_labelsserverConfig=serverConfig;};this.getLabelsServerConfig=function(){return _labelsserverConfig;};this.setProxyURL=function(proxyURL){_proxyURL=proxyURL;};this.getProxyURL=function(){return _proxyURL;};this.getRequestParameters=function(){return _requestParameters;};this.toString=function(){return '[IWMapType]' +'name:' + this.getName()+ ',' +'copyright:' + this.getCopyright()+ ',' +'maxlevel:' + this.getMaxLevel()+ ',' +'preferredlevel:' + this.getPreferredLevel()+ ',' +'minlevel:' + this.getMinLevel()+ ',' +'proxy url:' + this.getProxyURL();};this.isAvailable=function(){return _available;};this.checkAvailableAt=function(coordinate){var url=iwconst.LOCAL_APP_URL +'servlet/FrontController?' +'cmd=checkAvailableAt' +'&VNR=' + IWAccessFilter.getCNR()+'&PNR=' + IWAccessFilter.getPNR()+'&app=ms' +'&mapcx=' + coordinate.getX()+'&mapcy=' + coordinate.getY()+'maptype=' + _name;var xmlHttp=new IWXMLHttpRequest();xmlHttp.open('GET',_proxyURL + '?serverURL=' + escape(url),true);xmlHttp.onreadystatechange=function(){callbackCheckAvailableAt(xmlHttp,eventName,coordinate);};xmlHttp.send(null);};function callbackCheckAvailableAt(xmlHttp,eventName,coordinate){}
IWEventManager.addListener(_map,'aftermaptypeavailabilitychanged',function(event){if(event.type==_name){_available=event.available;}
}
);}
function IWOverlay(map,coordinate){var _hotspot=new IWPoint(0,0);var _self=this;var _missingOnMouseOutEvent=false;var _logger=log4javascript.getLogger('IWOverlay');IWMapElement.call(this,iw.search(map.getContainer(),'divOverlay'));var _container=this.getContainer();IWDraggable.call(this,_container,map.getContainer());this.setDraggableContainer(_container);this.setHotspot=function(hotspot){iw.strict([IWPoint],[hotspot]);_hotspot=hotspot;};this.getHotspot=function(){return _hotspot;};this.getLayer=function(){var intValue=parseInt(_container.style.zIndex);if(isNaN(intValue)){_logger.error('Calling getLayer:The layer number is not set.');return null;}
else
{_logger.info('Calling getLayer:' + intValue);return intValue;}
};this.setCoordinate=function(newCoordinate){iw.strict([IWCoordinate],[coordinate]);coordinate=newCoordinate;this.triggerAfterPositionUpdated();};this.getCoordinate=function(){return coordinate;};this.beforeAppend=function(){};this.afterAppend=function(){};this.beforeRemove=function(){if(_missingOnMouseOutEvent){iw.fireMouseEvent(_container,'mouseout');}
};this.afterRemove=function(){};this.redraw=function(){this.triggerBeforeRedraw();var position=map.fromCoordinateToPixel(this.getCoordinate());var div=this.getContainer();if(div.parentNode&&div.parentNode.parentNode){var divOverlay=div.parentNode.parentNode;div.style.top=position.getY()- this.getHotspot().getY()- parseInt(divOverlay.style.top)+ 'px';div.style.left=position.getX()- this.getHotspot().getX()- parseInt(divOverlay.style.left)+ 'px';divOverlay=null;}
this.triggerAfterRedraw();div=null;};this.triggerAfterPositionUpdated=function(){IWEventManager.trigger(this,'afterpositionupdated',null);};this.triggerBeforeRedraw=function(){IWEventManager.trigger(this,'beforeredraw');};this.triggerAfterRedraw=function(){IWEventManager.trigger(this,'afterredraw');};this.destroyOverlay=function(){this.destroyMapElement();};IWEventManager.addDOMListener(_container,'onclick',function(e){if(!IWLockManager.isLocked(map)){IWEventManager.trigger(_self,'onclick',e);}
});IWEventManager.addDOMListener(_container,'ondblclick',function(e){if(!IWLockManager.isLocked(map)){IWEventManager.trigger(_self,'ondblclick',e);}
});IWEventManager.addDOMListener(_container,'onmouseover',function(e){if(!IWLockManager.isLocked(map)){_container.style.cursor='pointer';IWEventManager.trigger(_self,'onmouseover',e);_missingOnMouseOutEvent=true;}
});IWEventManager.addDOMListener(_container,'onmouseout',function(e){if(!IWLockManager.isLocked(map)){_container.style.cursor='auto';IWEventManager.trigger(_self,'onmouseout',e);_missingOnMouseOutEvent=false;}
});}
function IWOverlayLayer(map,parent,layer){var _self=this;var _map=map;var _parent=parent;var _container=iw.create('div');var _layer=layer;var _visibilityRange=new IWRange(0,Number.MAX_VALUE);var _visible=true;var _references=new Object();var _overlayId=1;var _divZoomingAndDragging=iw.search(map.getContainer(),'divZoomingAndDragging');this.getOverlayById=function(id){var overlay=null;for(var p in _references){if(_references[p].getId()==id){overlay=_references[p];break;}
}
return overlay;};this.getOverlays=function(){var arr=new Array();for(var attr in _references){arr.push(_references[attr]);}
return arr;};this.addOverlay=function(overlay){if(overlay.overlayId==null){overlay.beforeAppend();overlay.getContainer().style.zIndex=_layer;IWEventManager.addListener(overlay,'afterdragged',function(event){var e=overlay.getContainer();var x=parseInt(e.style.left)+ overlay.getHotspot().getX();var y=parseInt(e.style.top)+ overlay.getHotspot().getY();while(e.parentNode !=null&&e.parentNode !=_divZoomingAndDragging){e=e.parentNode;if(e.style.left)x +=parseInt(e.style.left);if(e.style.top)y +=parseInt(e.style.top);}
overlay.setCoordinate(_map.fromPixelToCoordinate(new IWPoint(x,y)));}
);iw.append(_container,overlay.getContainer());overlay.redraw();addReference(overlay);overlay.afterAppend();}
};this.removeOverlay=function(overlay){if(overlay.overlayId){removeReference(overlay);overlay.beforeRemove();iw.remove(overlay.getContainer());overlay.afterRemove();}
};this.removeAllOverlays=function(){for(var p in _references){this.removeOverlay(_references[p]);}
};this.setVisibilityRange=function(range){_visibilityRange=range;};this.redraw=function(){for(p in _references){var overlay=_references[p];overlay.redraw();overlay=null;}
if(_visible){var isVisibleByRange=false;if(_visibilityRange.getMin()<=_map.getZoom()&&_map.getZoom()<=_visibilityRange.getMax()){isVisibleByRange=true;}
setVisible(isVisibleByRange);}
};this.getVisibilityRange=function(){return _visibilityRange;};this.setVisible=function(visible){_visible=visible;setVisible(_visible);};this.isVisible=function(){return(_container.style.visibility !='hidden');};function setVisible(visible){if(visible==true){_container.style.visibility='inherit';}
else if(visible==false){_container.style.visibility='hidden';}
}
function addReference(overlay){overlay.overlayId=_overlayId;_references[overlay.overlayId]=overlay;_overlayId++;}
function removeReference(overlay){delete _references[overlay.overlayId];overlay.overlayId=null;}
_container.id='IWOverlayLayer_' + layer;_container.style.position='absolute';_container.style.top='0px';_container.style.left='0px';_container.style.zIndex=layer;iw.append(_parent,_container);}
function IWOverlayManager(map,container){var _self=this;var _map=map;var _container=container;var _overlayLayers=new Object;var _visibility=null;this.setVisible=function(visible){if(visible==true){_container.style.visibility='inherit';}
else if(visible==false){_container.style.visibility='hidden';}
};this.isVisible=function(){return(_container.style.visibility !='hidden');};this.getLayer=function(layerNumber){iw.strict([Number],arguments);if(_overlayLayers[layerNumber]==null){_overlayLayers[layerNumber]=new IWOverlayLayer(_map,_container,layerNumber);}
return _overlayLayers[layerNumber];};this.removeLayer=function(layerNumber){iw.strict([Number],arguments);var layer=_overlayLayers[layerNumber];if(layer !=null){layer.removeAllOverlays();_overlayLayers[layerNumber]=null;delete _overlayLayers[layerNumber];}
};this.removeAllLayers=function(){for(layerNumber in _overlayLayers){this.removeLayer(parseInt(layerNumber));}
};this.getAllOverlays=function(){var arr=new Array();for(layerNumber in _overlayLayers){var layer=_overlayLayers[layerNumber];arr=layer.getOverlays().concat(arr);}
return arr;};this.redraw=function(){for(layerNumber in _overlayLayers){_overlayLayers[layerNumber].redraw();}
};this.toString=function(){return '[IWOverlayManager]';};IWEventManager.addListener(map,'onmove',function(e){var display=_container.style.display;if(IWBrowserDetect.browser !='Explorer'||IWBrowserDetect.version>=7){_container.style.display='none';}
_container.style.top=parseInt(_container.style.top)+ e.offset.getY()+ 'px';_container.style.left=parseInt(_container.style.left)+ e.offset.getX()+ 'px';_container.style.display=display;}
);IWEventManager.addListener(map,'aftercentered',function(e){_container.style.display='none';_self.redraw();_container.style.display='block';}
);IWEventManager.addListener(map,'beforemaptypechanged',function(e){_container.style.display='none';}
);IWEventManager.addListener(map,'aftermaptypechanged',function(e){_self.redraw();_container.style.display='block';}
);IWEventManager.addListener(map,'beforezoom',function(){_container.style.display='none';}
);IWEventManager.addListener(map,'afterzoom',function(){_self.redraw();_container.style.display='block';}
);IWEventManager.addListener(_map,'afterresized',function(){_container.style.display='none';_self.redraw();_container.style.display='block';}
);}
function IWParallelProjection(map){IWProjection.call(this);var _map=map;var _meterPerPixel=1;this.initialize=function(obj){_meterPerPixel=obj.METER_PER_PIXEL;};this.meterToPixel=function(coord){var centerMeter=_map.getCenter();var offsetMeter=new IWCoordinate(coord.getX()- centerMeter.getX(),coord.getY()- centerMeter.getY());var size=_map.getOptions().getSize();var centerPixel=new IWPoint(size.getWidth()/2,size.getHeight()/2);var offsetPixel=new IWPoint(offsetMeter.getX()/_meterPerPixel,-1*offsetMeter.getY()/_meterPerPixel);return new IWPoint(centerPixel.getX()+ offsetPixel.getX(),centerPixel.getY()+ offsetPixel.getY());};this.pixelToMeter=function(point){var size=_map.getOptions().getSize();var centerPixel=new IWPoint(size.getWidth()/2,size.getHeight()/2);var offsetPixel=new IWPoint(point.getX()- centerPixel.getX(),point.getY()- centerPixel.getY());var centerMeter=_map.getCenter();var offsetMeter=new IWCoordinate(offsetPixel.getX()*_meterPerPixel,-1*offsetPixel.getY()*_meterPerPixel);return new IWCoordinate(centerMeter.getX()+ offsetMeter.getX(),centerMeter.getY()+ offsetMeter.getY());};this.needsReload=function(coord,size){return false;};this.toString=function(){return '[IWParallelProjection]' +'Meter per pixel:' + _meterPerPixel;};}
function IWProjection(){this.initialize=function(xmlDocument){alert('Method not implemented');};this.meterToPixel=function(coord){alert('Method not implemented');return 'undefined';};this.pixelToMeter=function(offset){alert('Method not implemented');return 'undefined';};this.needsReload=function(coord,size){alert('Method not implemented');return 'undefined';};this.toString=function(){alert('Method not implemented');return 'undefined';};}
function IWTile(tileset,cellIndex){var _self=this;var _tileset=tileset;var _logger=log4javascript.getLogger('IWTile');var _position=new IWPoint(0,0);var _sSource='';var _iState=IWTile.STATE_WAITING;var _iTimestamp=0;var _cellIndex=cellIndex;var _img=iw.create('img');_img.id='imgTile_' + _cellIndex.getX()+ '_' + _cellIndex.getY();with(_img.style){position='absolute';zIndex='1';left='0px';top='0px';width=IWTile.SIZE;height=IWTile.SIZE;visibility='hidden';}
tileset.getTilesContainer().appendChild(_img);IWEventManager.addDOMListener(_img,'onload',function(){if(_iState==IWTile.STATE_LOADING){_img.style.visibility='visible';_iState=IWTile.STATE_COMPLETE;}
var event=new IWTileLoadedEvent();event.column=_cellIndex.getX();event.row=_cellIndex.getY();IWEventManager.trigger(_self,'onload',event);}
);this.getPosition=function(){return _position;};this.getImage=function(){return _img;};this.destroy=function(){IWEventManager.clearInstanceListeners(this);IWEventManager.clearInstanceListeners(_img);iw.destroy(_img);_img=null;};this.getBounds=function(){var lowerRight=new IWPoint(_position.getX()+ IWTile.SIZE,_position.getY()+ IWTile.SIZE);return new IWBounds(_position,lowerRight);};this.getState=function(){return _iState;};this.setState=function(state){_iState=state;};this.getTimestamp=function(){return _iTimestamp;};this.setSource=function(source,timestamp){_iState=IWTile.STATE_WAITING;this.hide();_iTimestamp=timestamp;_sSource=source;};this.setState=function(state){_iState=state;};this.hide=function(){if(_img)_img.style.visibility='hidden';};this.move=function(offset){_position=_position.add(offset);_img.style.left=_position.getX()+ 'px';_img.style.top=_position.getY()+ 'px';};this.moveTo=function(position){_position=position;_img.style.left=_position.getX()+ 'px';_img.style.top=_position.getY()+ 'px';};this.load=function(){_img.style.visibility='hidden';var bottomLeftPixel=new IWPoint(_position.getX()+ IWTile.SIZE/2,_position.getY()+ IWTile.SIZE/2);var bottomLeftMeter=_tileset.getCurrentMapType().getProjection().pixelToMeter(bottomLeftPixel);if(iwconst.CACHE_URL_USE=='false'||!_tileset.isCacheEnabled()){var cached=_tileset.isCacheEnabled()? '1':'0';var sCacheParam='&left=' + bottomLeftMeter.getX()+'&bottom=' + bottomLeftMeter.getY()+'&tilemeter=' + _tileset.nTilesizeMeter +'&tile=' + IWTile.SIZE +'&maptype=' + _tileset.getCurrentMapType().getName()+'&cached=' + cached;var config=tileset.getCurrentMapType().getTilesServerConfig();var url=config.getNextAlias()+config.getBaseDir()+'/servlet/FrontController' +'?cmd=getTile' +'&VNR=' + IWAccessFilter.getCNR()+'&PNR=' + IWAccessFilter.getPNR()+'&app=ms' +'&file=' + _sSource +sCacheParam +szExtraUrlParm;_img.src=url;}
else
{var cacheURL=getTileCacheName(new IWCoordinate(bottomLeftMeter.getX(),bottomLeftMeter.getY()));_img.src=cacheURL + '?file=' + _sSource;}
_iState=IWTile.STATE_LOADING;};this.compare=function(tile1,tile2){var mapCenterX=_tileset.getSize().getWidth()/2;var mapCenterY=_tileset.getSize().getHeight()/2;var iWeight1=Math.pow(mapCenterX -(tile1.getPosition().getX()+ IWTile.SIZE/2),2)
+ Math.pow(mapCenterY -(tile1.getPosition().getY()+ IWTile.SIZE/2),2);var iWeight2=Math.pow(mapCenterX -(tile2.getPosition().getX()+ IWTile.SIZE/2),2)
+ Math.pow(mapCenterY -(tile2.getPosition().getY()+ IWTile.SIZE/2),2);return iWeight2 - iWeight1;};this.toString=function(){return '[IWTile]' +'cellIndex:' + _cellIndex + ',' +'position:' + _position;};function getTileCacheName(coordinate){var sPathFile='';var dTilesizeMeter=tileset.nTilesizeMeter;var dX=coordinate.getX();var dY=coordinate.getY();var iPreX=dX<0 ? -1:1;var iPreY=dY<0 ? -1:1;var dGroupMeter=(dTilesizeMeter*iwconst.CACHE_BLOCK_SIZE);for(var level=iwconst.CACHE_GROUP_LEVEL;level>0;level--){var iGroupX=parseInt(Math.ceil(Math.abs(dX/(dGroupMeter*Math.pow(iwconst.CACHE_GROUP_SIZE,(level-1))))));var iGroupY=parseInt(Math.ceil(Math.abs(dY/(dGroupMeter*Math.pow(iwconst.CACHE_GROUP_SIZE,(level-1))))));if(iPreX>=0){if(Math.ceil(dX/(dGroupMeter*Math.pow(iwconst.CACHE_GROUP_SIZE,(level-1))))==dX/(dGroupMeter*Math.pow(iwconst.CACHE_GROUP_SIZE,(level-1))))iGroupX++;}
if(iPreY>=0){if(Math.ceil(dY/(dGroupMeter*Math.pow(iwconst.CACHE_GROUP_SIZE,(level-1))))==dY/(dGroupMeter*Math.pow(iwconst.CACHE_GROUP_SIZE,(level-1))))iGroupY++;}
dX=dX - iPreX*dGroupMeter*Math.pow(iwconst.CACHE_GROUP_SIZE,(level-1))*(iGroupX - 1);dY=dY - iPreY*dGroupMeter*Math.pow(iwconst.CACHE_GROUP_SIZE,(level-1))*(iGroupY - 1);if(iPreX>=0)iGroupX=(iGroupX-1)*iPreX;if(iPreY>=0)iGroupY=(iGroupY-1)*iPreY;if(level !=iwconst.CACHE_GROUP_LEVEL){if(iPreX<0)iGroupX=iwconst.CACHE_GROUP_SIZE - iGroupX;if(iPreY<0)iGroupY=iwconst.CACHE_GROUP_SIZE - iGroupY;}
else
{if(iPreX<0)iGroupX=iGroupX*iPreX;if(iPreY<0)iGroupY=iGroupY*iPreY;}
sPathFile +=iGroupX + '_' + iGroupY + '/';if(level==1){var iTileX=Math.ceil(Math.abs(dX/dTilesizeMeter));var iTileY=Math.ceil(Math.abs(dY/dTilesizeMeter));if(iPreX>=0){if(Math.ceil(dX/dTilesizeMeter)==dX/dTilesizeMeter)iTileX++;}
if(iPreY>=0){if(Math.ceil(dY/dTilesizeMeter)==dY/dTilesizeMeter)iTileY++;}
if(iPreX<0)iTileX=iwconst.CACHE_BLOCK_SIZE - iTileX;else
iTileX--;if(iPreY<0)iTileY=iwconst.CACHE_BLOCK_SIZE - iTileY;else
iTileY--;sPathFile +=iTileX + '_' + iTileY;}
}
var mapType=tileset.getCurrentMapType().getName();var imageType=tileset.getCurrentMapType().getTilesServerConfig().getImageType();var sRootPath=iwconst.CACHE_CLIENT_URL + mapType + '/' + IWTile.SIZE + '/' + parseInt(dTilesizeMeter);var sCachename=sRootPath + '/' + sPathFile + '.' + imageType;return sCachename;}
function isCacheUsed(maptype){if(iwconst.CACHE_MAPSERVER_GROUP.indexOf(maptype)!=-1)return true;else
return false;}
}
IWTile.SIZE=iwconst.TILE_SIZE;IWTile.STATE_INACTIVE=-1;IWTile.STATE_WAITING=0;IWTile.STATE_QUEUED=1;IWTile.STATE_LOADING=2;IWTile.STATE_COMPLETE=3;function IWWindowOverlay(map,coordinate){var self=this;var _map=map;var _coordinate=coordinate;var _anchor=new IWPoint(0,0);IWMapElement.call(this,map.getWindowOverlayContainer());this.getAnchor=function(){return _anchor;};this.setAnchor=function(anchor){if(this.isDisplayed()){var container=this.getContainer();var top=parseInt(container.style.top);var left=parseInt(container.style.left)
container.style.top=top - _anchor.getY()+ anchor.getY()+ 'px';container.style.left=left - _anchor.getX()+ anchor.getX()+ 'px';}
_anchor=anchor;};this.setCoordinate=function(coordinate){iw.strict([IWCoordinate],[coordinate]);_coordinate=coordinate;};this.getCoordinate=function(){return _coordinate;};this.destroyWindowOverlay=function(){IWEventManager.removeListener(_afterCenteredListener);IWEventManager.removeListener(_beforeZoomListener);IWEventManager.removeListener(_afterZoomedListener);IWEventManager.removeListener(_afterResizedListener);this.destroyMapElement();};this.redraw=function(){var container=this.getContainer();var parent=this.getParent();var pixel=map.fromCoordinateToPixel(_coordinate);container.style.top=pixel.getY()+ _anchor.getY()- parseInt(parent.style.top)+ 'px';container.style.left=pixel.getX()+ _anchor.getX()- parseInt(parent.style.left)+ 'px';};var _afterCenteredListener=IWEventManager.addListener(map,'aftercentered',function(e){self.setVisible(false);self.redraw();self.setVisible(true);}
);var _beforeZoomListener=IWEventManager.addListener(map,'beforezoom',function(){self.setVisible(false);}
);var _afterZoomedListener=IWEventManager.addListener(map,'afterzoom',function(){self.redraw();self.setVisible(true);}
);var _afterResizedListener=IWEventManager.addListener(map,'afterresized',function(){self.redraw();}
);}
function IWWindowOverlayManager(map){var _infoBalloon=null;var _tooltip=null;var _map=map;this.openInfoBalloon=function(coordinate,content){var myContent=null;if(content.constructor==String){var elem=iw.checkElem(content);myContent=iw.create('div');myContent.style.top='0px'
myContent.style.left='0px';myContent.style.overflow='auto';iw.append(myContent,elem);}
else
{myContent=content;}
myContent.style.position='relative';var contentSize=IWDOMHelper.getSize(myContent,map.getContainer());var left=myContent.style.left=='' ? 0:parseInt(myContent.style.left);var top=myContent.style.top=='' ? 0:parseInt(myContent.style.top);var mapsize=map.getOptions().getSize();var maxHeight=Math.ceil(mapsize.getHeight()- 80);var maxWidth=Math.ceil(mapsize.getWidth()- 50);if(contentSize.getHeight()<80){contentSize.setHeight(80);}
else if(contentSize.getHeight()>maxHeight){contentSize.setHeight(maxHeight);}
if(contentSize.getWidth()<160){contentSize.setWidth(160);}
else if(contentSize.getWidth()>maxWidth){contentSize.setWidth(maxWidth);}
myContent.style.height=contentSize.getHeight()- 15 + 'px';myContent.style.width=contentSize.getWidth()+ 'px';this.removeInfoBalloon();_infoBalloon=new IWInfoBalloon(_map,coordinate,myContent);_infoBalloon.setSize(new IWSize(contentSize.getWidth()+ 30 + left,contentSize.getHeight()+ 58 + top));_map.addWindowOverlay(_infoBalloon);};this.removeInfoBalloon=function(){if(_infoBalloon !=null){map.removeWindowOverlay(_infoBalloon);_infoBalloon.destroy();_infoBalloon=null;}
};this.openTooltip=function(coordinate,text){this.removeTooltip();_tooltip=new IWTooltip(_map,coordinate,text);_map.addWindowOverlay(_tooltip);};this.removeTooltip=function(){if(_tooltip !=null){map.removeWindowOverlay(_tooltip);_tooltip.destroy();_tooltip=null;}
};}
function IWInfoBalloon(map,coordinate,content){var _map=map;var _coordinate=coordinate;var _size=new IWSize(240,180);var _border=5;var _self=this;var _content=content;var _divMain=iw.create('div');var _divContent=iw.create('div');var _divTopBorder=iw.create('div');var _divRightBorder=iw.create('div');var _divBottomBorder=iw.create('div');var _divLeftBorder=iw.create('div');var _imgArrow=iw.create('img');var _imgClose=iw.create('img');IWWindowOverlay.call(this,map,coordinate);var pack=new IWLanguagePack();pack.addLanguage(new IWLanguage('de',iwconst.LOCAL_APP_URL + 'lang/IWInfoBalloon.lang.de'));pack.addLanguage(new IWLanguage('en',iwconst.LOCAL_APP_URL + 'lang/IWInfoBalloon.lang.en'));pack.addLanguage(new IWLanguage('es',iwconst.LOCAL_APP_URL + 'lang/IWInfoBalloon.lang.es'));pack.addLanguage(new IWLanguage('fr',iwconst.LOCAL_APP_URL + 'lang/IWInfoBalloon.lang.fr'));pack.addLanguage(new IWLanguage('tr',iwconst.LOCAL_APP_URL + 'lang/IWInfoBalloon.lang.tr'));pack.addLanguage(new IWLanguage('it',iwconst.LOCAL_APP_URL + 'lang/IWInfoBalloon.lang.it'));IWMultiLanguageSupport.call(this,map,pack);this.getContent=function(){return _content;};this.setContent=function(newContent){_content=newContent;};this.afterAppend=function(){_container.style.visibility='visible';var position=iw.absolute(_container,_map.getContainer());if(_map.getBounds().containsCoordinate(_coordinate)){var offsetRight=position.getX()+ _size.getWidth()+ _border - _map.getOptions().getSize().getWidth();var offsetLeft=position.getX()- _border;var offsetTop=position.getY()- _border;var offsetBottom=position.getY()+ _size.getHeight()+ _border - _map.getOptions().getSize().getHeight();if(offsetRight>0||offsetLeft<0||offsetTop<0||offsetBottom>0){var x=0;var y=0;if(offsetRight>0){x=-offsetRight;}
else if(offsetLeft<0){x=-offsetLeft;}
if(offsetTop<0){y=-offsetTop;}
else if(offsetBottom>0){y=-offsetBottom;}
_map.panBy(new IWPoint(x,y),true);}
}
else
{var pixelCoordinate=_map.fromCoordinateToPixel(_coordinate);var pixelOffsetY=this.getSize().getHeight()/2;var centerX=pixelCoordinate.getX();var centerY=pixelCoordinate.getY()- pixelOffsetY;var pixelCenter=new IWPoint(centerX,centerY);_map.setCenter(_map.fromPixelToCoordinate(pixelCenter));}
};this.setSize=function(size){iw.strict([IWSize],[size]);_size=size;resize();this.setAnchor(new IWPoint(-(_size.getWidth()/2),-(_size.getHeight())));};this.getSize=function(){return _size;};this.destroy=function(){IWEventManager.clearInstanceListeners(this);this.destroyMultiLanguageSupport();this.destroyWindowOverlay();_content=null;_divMain=null;_divContent=null;_divTopBorder=null;_divRightBorder=null;_divBottomBorder=null;_divLeftBorder=null;_imgArrow=null;_imgClose=null;_container=null;};this.toString=function(){return '[IWInfoBalloon]';};function buildGUI(){_container.style.height=_size.getHeight()+ 'px';_container.style.width=_size.getWidth()+ 'px';_container.style.visibility='hidden';iw.append(_container,_divMain);_divMain.style.position='absolute';_divMain.style.top='0px';_divMain.style.left='0px';_divMain.style.width=_size.getWidth()+ 'px';_divMain.style.height=_size.getHeight()- 51 + 'px';var imgTopLeft=iw.create('img');iw.append(_divMain,imgTopLeft);imgTopLeft.src=iwconst.GLOBAL_APP_URL + 'img/overlays/infoballoon/etl2.gif';with(imgTopLeft.style){position='absolute';top='0px';left='0px';height='21px';width='21px';}
var imgTopRight=iw.create('img');iw.append(_divMain,imgTopRight);imgTopRight.src=iwconst.GLOBAL_APP_URL + 'img/overlays/infoballoon/etr2.gif';with(imgTopRight.style){position='absolute';top='0px';right='0px';height='21px';width='21px';}
var imgBottomLeft=iw.create('img');iw.append(_divMain,imgBottomLeft);imgBottomLeft.src=iwconst.GLOBAL_APP_URL + 'img/overlays/infoballoon/ebl2.gif';with(imgBottomLeft.style){position='absolute';bottom='0px';left='0px';height='21px';width='21px';}
var imgBottomRight=iw.create('img');iw.append(_divMain,imgBottomRight);imgBottomRight.src=iwconst.GLOBAL_APP_URL + 'img/overlays/infoballoon/ebr2.gif';with(imgBottomRight.style){position='absolute';bottom='0px';right='0px';height='21px';width='21px';}
iw.append(_divMain,_divTopBorder);iw.backgroundImage(_divTopBorder,iwconst.GLOBAL_APP_URL + '/img/symbols/background_white.jpg');with(_divTopBorder.style){position='absolute';borderTop='1px solid #cfcfd1';top='0px';left='21px';height='21px';width=_size.getWidth()- 42 + 'px';}
iw.append(_divMain,_divRightBorder);iw.backgroundImage(_divRightBorder,iwconst.GLOBAL_APP_URL + '/img/symbols/background_white.jpg');with(_divRightBorder.style){position='absolute';borderRight='1px solid #cfcfd1';top='21px';right='0px';width='21px';height=_size.getHeight()- 51 - 42 + 'px';}
iw.append(_divMain,_divBottomBorder);iw.backgroundImage(_divBottomBorder,iwconst.GLOBAL_APP_URL + '/img/symbols/background_white.jpg');with(_divBottomBorder.style){position='absolute';borderBottom='1px solid #cfcfd1';bottom='0px';left='21px';height='21px';width=_size.getWidth()- 42 + 'px';}
iw.append(_divMain,_divLeftBorder);iw.backgroundImage(_divLeftBorder,iwconst.GLOBAL_APP_URL + '/img/symbols/background_white.jpg');with(_divLeftBorder.style){borderLeft='1px solid #cfcfd1';position='absolute';top='21px';left='0px';width='21px';height=_size.getHeight()- 51 - 42 + 'px';}
_divContent.id='divContent';iw.append(_divMain,_divContent);iw.backgroundImage(_divContent,iwconst.GLOBAL_APP_URL + '/img/symbols/background_white.jpg');with(_divContent.style){position='absolute';top='17px';left='15px';width=_size.getWidth()- 30 + 'px';height=_size.getHeight()- 53 - 5 - 15 + 'px';overflow='hidden';}
var div=iw.create('div');div.style.position='absolute';div.style.overflow='auto';iw.append(_divContent,div);iw.append(div,_content);iw.append(_divMain,_imgClose);_self.addLabelFor(new IWLabel('CLOSE',_imgClose,'title'));_self.addLabelFor(new IWLabel('CLOSE',_imgClose,'alt'));_imgClose.src=iwconst.GLOBAL_APP_URL + 'img/symbols/close.png';with(_imgClose.style){position='absolute';top='3px';right='16px';cursor='pointer';}
iw.append(_container,_imgArrow);_imgArrow.src=iwconst.GLOBAL_APP_URL + 'img/overlays/infoballoon/arrow7.gif';with(_imgArrow.style){position='absolute';bottom='0px';height='53px';width='105px';left=Math.round(_size.getWidth()/2)+ 'px';}
_imgClose.onclick=function(){map.removeWindowOverlay(_self);};}
function resize(){_container.style.height=_size.getHeight()+ 'px';_container.style.width=_size.getWidth()+ 'px';_divMain.style.width=_size.getWidth()+ 'px';_divMain.style.height=_size.getHeight()- 51 + 'px';_divContent.style.width=_size.getWidth()- 30 + 'px';_divContent.style.height=_size.getHeight()- 53 - 5 - 15 + 'px';_divTopBorder.style.width=_size.getWidth()- 42 + 'px';_divRightBorder.style.height=_size.getHeight()- 51 - 42 + 'px';_divBottomBorder.style.width=_size.getWidth()- 42 + 'px';_divLeftBorder.style.height=_size.getHeight()- 51 - 42 + 'px';_imgArrow.style.left=Math.round(_size.getWidth()/2)+ 'px';}
var _container=this.getContainer();buildGUI();this.setAnchor(new IWPoint(-(_size.getWidth()/2),-(_size.getHeight())));this.loadLanguagePack(map.getOptions().getLanguage());}
function IWMarker(map,coordinate){IWOverlay.call(this,map,coordinate);var _self=this;var _defaultIcon=new IWIcon(iwconst.GLOBAL_APP_URL + 'img/symbols/house/house_blue_30.gif',new IWPoint(15,13),new IWSize(30,26));var _scaleDependentIcons=new Array();var _container=this.getContainer();var _logger=log4javascript.getLogger('IWMarker');var _iconImage=iw.create('img');this.setDefaultIcon=function(icon){_defaultIcon=icon;if(this.isDisplayed()){loadScaleDependentImage();}
};this.getDefaultIcon=function(){return _defaultIcon;};this.addScaleDependentIcon=function(scaleDependentIcon){_scaleDependentIcons.push(scaleDependentIcon);};this.setScaleDependentIcons=function(scaleDependentIcons){_scaleDependentIcons=scaleDependentIcons;};this.getScaleDependentIcons=function(){return _scaleDependentIcons;};this.afterAppend=function(){iw.append(_container,_iconImage);loadScaleDependentImage();};this.beforeRemove=function(){IWEventManager.clearInstanceListeners(_iconImage);iw.remove(_iconImage);};this.toString=function(){return '[IWMarker]' +'coordinate:' + coordinate.toString()+ ',' +'default icon:' + _defaultIcon.toString();};this.destroy=function(){this.destroyOverlay();IWEventManager.clearInstanceListeners(this);};function loadScaleDependentImage(){var icon=null;for(var i=0;i<_scaleDependentIcons.length;i++){var scaleIcon=_scaleDependentIcons[i];if(scaleIcon.getRange().getMin()<=map.getZoom()&&map.getZoom()<=scaleIcon.getRange().getMax()){icon=scaleIcon;break;}
}
var myIcon=(icon !=null ? icon:_defaultIcon);if(_iconImage.src !=myIcon.getURL()){var imageURL=myIcon.getURL();if(myIcon.getSize()!=null){_iconImage.width=myIcon.getSize().getWidth();_iconImage.height=myIcon.getSize().getHeight();}
if(IWBrowser.isInternetExplorer()&&iw.extractFilePath(imageURL).extension=='.png'){_iconImage.onload=function(){correctPNG(_iconImage);};}
else
{_iconImage.onload=null;}
_iconImage.src=imageURL;}
_self.setHotspot(myIcon.getHotspot());}
this.setDraggable(false);this.setDragButton(IWButton.LEFT);this.setDraggableContainer(_container);this.allowDraggingOutsideParent(false);IWEventManager.addListener(this,'beforeredraw',loadScaleDependentImage);}
function IWTooltip(map,coordinate,obj){var self=this;var _map=map;var _size=null;var _xAnchor=15;var _yAnchor=0;var _mapSize=map.getOptions().getSize();IWWindowOverlay.call(this,map,coordinate);this.beforeAppend=function(){this.setAnchor(new IWPoint(_xAnchor,_yAnchor));};this.afterAppend=function(){var position=iw.absolute(this.getContainer(),_map.getContainer());var spaceRight=_mapSize.getWidth()-(position.getX()+ _size.getWidth()+ 5);var spaceBottom=_mapSize.getHeight()-(position.getY()+ _size.getHeight()+ 5);var newAnchorX=_xAnchor;var newAnchorY=_yAnchor;if(spaceRight<0){newAnchorX=-(_xAnchor + _size.getWidth());}
if(spaceBottom<0){newAnchorY=-(_yAnchor + _size.getHeight());}
if(newAnchorX !=_xAnchor||newAnchorY !=_yAnchor){this.setAnchor(new IWPoint(newAnchorX,newAnchorY));}
this.getContainer().style.visibility='visible';};this.destroy=function(){obj=null;this.destroyWindowOverlay();IWEventManager.clearInstanceListeners(this);};function buildGUI(container){container.style.visibility='hidden';iw.backgroundImage(container,iwconst.GLOBAL_APP_URL + 'img/symbols/background_white.jpg');var div=iw.create('div');if(typeof obj=='string'){obj=obj.replace(/\u0020/g,'&nbsp;');}
iw.append(div,obj);iw.append(container,div);_size=IWDOMHelper.getSize(container,self.getParent());with(div.style){position='absolute';left='0px';top='0px';width=_size.getWidth()+ 4 + 'px';height=_size.getHeight()+ 'px';textAlign='center';}
container.style.border='1px solid #dddddd';container.style.width=div.style.width;container.style.height=div.style.height;}
buildGUI(this.getContainer());}
function IWRoutingMagnifierFactory(map){var _self=this;var _map=map;var _mapType=_map.getOptions().getMapTypeByName('roadmap');var _zoomLevel=200;this.createRoutingMagnifierContent=function(coordinate){var div=iw.create('div');with(div.style){position='relative';width='230px';height='260px';}
var img=iw.create('img');iw.append(div,img);img.onload=function(){this.style.display='block';}.iwclosure(div);loadRoutingMagnifierImage(img,coordinate,_mapType);var imgZoomIn=iw.create('img');iw.append(div,imgZoomIn);imgZoomIn.src=iwconst.GLOBAL_APP_URL + 'img/controls/magnifier/zoomIn.gif';with(imgZoomIn.style){position='absolute';top='5px';left='5px';cursor='pointer';}
imgZoomIn.onclick=function(){if(_zoomLevel>400){_zoomLevel -=400;loadRoutingMagnifierImage(img,coordinate,_mapType);}
}.iwclosure(_self);var imgZoomOut=iw.create('img');iw.append(div,imgZoomOut);imgZoomOut.src=iwconst.GLOBAL_APP_URL + 'img/controls/magnifier/zoomOut.gif';with(imgZoomOut.style){position='absolute';top='23px';left='5px';cursor='pointer';}
imgZoomOut.onclick=function(){_zoomLevel +=400;loadRoutingMagnifierImage(img,coordinate,_mapType);}.iwclosure(_self);var imgMap=iw.create('img');iw.append(div,imgMap);imgMap.src=iwconst.GLOBAL_APP_URL + 'img/controls/magnifier/map.gif';with(imgMap.style){position='absolute';top='5px';left='30px';cursor='pointer';}
imgMap.onclick=function(){_mapType=_map.getOptions().getMapTypeByName('roadmap');loadRoutingMagnifierImage(img,coordinate,_mapType);}.iwclosure(_self);var imgHybrid=iw.create('img');iw.append(div,imgHybrid);imgHybrid.src=iwconst.GLOBAL_APP_URL + 'img/controls/magnifier/air.gif';with(imgHybrid.style){position='absolute';top='5px';left='77px';cursor='pointer';}
imgHybrid.onclick=function(){_mapType=_map.getOptions().getMapTypeByName('hybrid');loadRoutingMagnifierImage(img,coordinate,_mapType);}.iwclosure(_self);return div;};function loadRoutingMagnifierImage(img,coordinate,mapType){var config=mapType.getTilesServerConfig();img.src=config.getNextAlias()+config.getBaseDir()+'/servlet/FrontController?cmd=getPrintMap' +'&app=ms' +'&VNR=' + IWAccessFilter.getCNR()+'&PNR=' + IWAccessFilter.getPNR()+'&mapcx=' + coordinate.getX()+'&mapcy=' + coordinate.getY()+'&mapdx=' + _zoomLevel +'&mapdy=' + _zoomLevel +'&width=230' +'&height=240' +'&projc=lcc_europe' +'&maptype=' + mapType.getName()+IWRequestFormatter.getLayerParameter(_map.getZoom(),_map.getLayers());}
}
function IWProjectionClient(){var logger=log4javascript.getLogger('IWProjectionClient');this.project=function(coordinate,fromProjection,toProjection,parameterObject){logger.info('Calling project with ' + fromProjection + ' coordinate x:' + coordinate.getX()+' y:' + coordinate.getY()+ ' to ' + toProjection);var url=iwconst.LOCAL_APP_URL + '/servlet/FrontController' +'?cmd=project' +'&app=ms' +'&VNR=' + IWAccessFilter.getCNR()+'&PNR=' + IWAccessFilter.getPNR()+'&FROM_X=' + coordinate.getX()+'&FROM_Y=' + coordinate.getY()+'&FROM_PROJ=' + fromProjection +'&TO_PROJ=' + toProjection;var xmlHttp=new IWXMLHttpRequest();xmlHttp.open('GET',iwconst.GLOBAL_PROXY_URL + '?serverURL=' + escape(url),true);xmlHttp.onreadystatechange=function(){projectionCallback(this,xmlHttp,coordinate,fromProjection,toProjection,parameterObject);}.iwclosure(this);xmlHttp.send(null);};this.toString=function(){return '[IWProjectionClient]';};this.triggerOnProjection=function(event){IWEventManager.trigger(this,'onprojection',event);};function projectionCallback(self,xmlHttp,inputCoordinate,fromProjection,toProjection,parameterObject){if(xmlHttp.readyState==4){if(xmlHttp.statusText=='OK'){if(xmlHttp.responseText.length>0){var root=IWXMLHelper.parse(xmlHttp.responseText).documentElement;var event=new IWProjectionEvent();event.inputCoordinate=inputCoordinate;event.fromProjection=fromProjection;event.toProjection=toProjection;event.parameterObject=parameterObject;var outputCoordinate=null;if(root.getElementsByTagName('PROJECTION_RESULT')[0]){event.status='OK';var x=IWXMLHelper.getNodeValue(root.getElementsByTagName('PROJECTED_X')[0]);var y=IWXMLHelper.getNodeValue(root.getElementsByTagName('PROJECTED_Y')[0]);event.outputCoordinate=new IWCoordinate(x,y);}
else
{event.status=IWXMLHelper.getNodeValue(root.getElementsByTagName('ERROR_CODE')[0]);event.errorDescription=IWXMLHelper.getNodeValue(root.getElementsByTagName('ERROR_MSG')[0]);}
}
else
{alert('IWProjectionClient:Response text is empty.');}
}
else if(xmlHttp.status==401){alert('IWProjectionClient:Access denied.(' + xmlHttp.status + ')' + xmlHttp.statusText);}
else
{alert('IWProjectionClient:(' + xmlHttp.status + ')' + xmlHttp.statusText);}
self.triggerOnProjection(event);}
}
}
function IWProjectionEvent(){this.status=null;this.errorDescription=null;this.inputCoordinate=null;this.outputCoordinate=null;this.fromProjection=null;this.toProjection=null;this.parameterObject=null;this.toString=function(){var s='[IWProjectionEvent]status:' + this.status + ',';if(this.status=='OK'){s +='inputCoordinate:' +(this.inputCoordinate ? this.inputCoordinate.toString():'null')+ ',' +'outputCoordinate:' +(this.outputCoordinate ? this.outputCoordinate.toString():'null')+ ',' +'fromProjection:' + this.fromProjection + ',' +'toProjection:' + this.toProjection;}
else
{s +='errorDescription:' + this.errorDescription;}
return s;};}
var IWProjectionType=new function(){this.WGS84='WGS84';this.LCC_EUROPE='LCC_EUROPE';};function IWRoute(){var _startAddress=null;var _destinationAddress=null;var _interstationAddresses=null;var _entries=new Array();var _drivingTime=0;var _fuelConsumption=0;var _routeLength=0;var _bounds=null;var _shape=''
this.setStartAddress=function(startAddress){_startAddress=startAddress;};this.getStartAddress=function(){return _startAddress;};this.setDestinationAddress=function(destinationAddress){_destinationAddress=destinationAddress;};this.getDestinationAddress=function(){return _destinationAddress;};this.setInterstationAddresses=function(interstationAddresses){_interstationAddresses=interstationAddresses;};this.getInterstationAddresses=function(){return _interstationAddresses;};this.setShape=function(shape){_shape=shape;};this.getShape=function(){return _shape;};this.setBounds=function(bounds){_bounds=bounds;};this.getBounds=function(){return _bounds;};this.setDrivingTime=function(drivingTime){_drivingTime=drivingTime;};this.getDrivingTime=function(){return _drivingTime;};this.setFuelConsumption=function(fuelConsumption){_fuelConsumption=fuelConsumption;};this.getFuelConsumption=function(){return _fuelConsumption;};this.setRouteLength=function(routeLength){_routeLength=routeLength;};this.getRouteLength=function(){return _routeLength;};this.getSegments=function(){return _entries.length;};this.getEntry=function(index){return _entries[index];};this.addEntry=function(entry){_entries.push(entry);};this.toString=function(){return '[IWRoute]';};}
function IWRouteEntry(){var _type='';var _streetType='';var _entryDistance=0;var _totalDistance=0;var _entryTime=0;var _totalTime=0;var _segment='';var _connector='';var _direction='';var _coordinate=null;var _orientation=0;var _roundaboutType='';var _roundaboutNumber='';var _signpost='';this.setType=function(type){_type=type;};this.getType=function(){return _type;};this.setStreetType=function(streetType){_streetType=streetType;};this.getStreetType=function(){return _streetType;};this.setEntryDistance=function(distance){_entryDistance=distance;};this.getEntryDistance=function(){return _entryDistance;};this.setTotalDistance=function(distance){_totalDistance=distance;};this.getTotalDistance=function(){return _totalDistance;};this.setEntryTime=function(time){_entryTime=time;};this.getEntryTime=function(){return _entryTime;};this.setTotalTime=function(time){_totalTime=time;};this.getTotalTime=function(){return _totalTime;};this.setSegment=function(segment){_segment=segment;};this.getSegment=function(){return _segment;};this.setConnector=function(connector){_connector=connector;};this.getConnector=function(){return _connector;};this.setDirection=function(direction){var intValue=parseInt(direction);_direction=direction;};this.getDirection=function(){return _direction;};this.setCoordinate=function(newCoordinate){_coordinate=newCoordinate;}
this.getCoordinate=function(){return _coordinate;};this.setOrientation=function(orientation){_orientation=orientation;}
this.getOrientation=function(){return _orientation;};this.setRoundaboutType=function(type){_roundaboutType=type;}
this.getRoundaboutType=function(){return _roundaboutType;};this.setRoundaboutNumber=function(number){_roundaboutNumber=number;}
this.getRoundaboutNumber=function(){return _roundaboutNumber;};this.setSignPost=function(signpost){_signpost=signpost;}
this.getSignPost=function(){return _signpost;};this.toString=function(){return '[IWRouteEntry]' +'Type:' + _type + ',' +'Street type:' + _streetType + ',' +'Entry distance:' + _entryDistance + ',' +'Total distance:' + _totalDistance + ',' +'Entry Time:' + _entryTime + ',' +'Total Time:' + _totalTime + ',' +'Segment:' + _segment + ',' +'Connector:' + _connector + ',' +'Direction:' + _direction + ',' +'Coordinate:' + _coordinate + ',' +'Orientation:' + _orientation + ',' +'Signpost:' + _signpost;};}
function IWRouteFormatter(route){this.setLanguage=function(language){_language=language;};this.getLanguage=function(){return _language;};this.createSummaryAsHTML=function(){var html='';html +='<p>von\u0020<b>' + formatAddress(_route.getStartAddress())+ '</b>\u0020nach\u0020<b>' + formatAddress(_route.getDestinationAddress())+ '</b><br>';html +=formatMeter(_route.getRouteLength())+ '\u0020-\u0020ca.&nbsp;' + formatTime(_route.getDrivingTime())+ '</p>';return html;};this.createImageAsHTML=function(index){var image='';var defaultImage='';var previousEntry=_route.getEntry(index-1);var entry=_route.getEntry(index);var nextEntry=route.getEntry(index+1);switch(entry.getDirection()){case -3:defaultImage='blue_sharp_left.gif';break;case -2:defaultImage='blue_left.gif';break;case -1:defaultImage='blue_half_left.gif';break;case 0:defaultImage='blue_straight_ahead.gif';break;case 1:defaultImage='blue_half_right.gif';break;case 2:defaultImage='blue_right.gif';break;case 3:defaultImage='blue_sharp_right.gif';break;case 10:defaultImage='blue_destination.gif';break;case 11:defaultImage='blue_roundabout.gif';break;}
if(entry.getConnector()!=''){if(previousEntry.getStreetType()=='highway'){if(entry.getStreetType()=='highway'){image='blue_highway_junction.gif';}
else
{image='blue_highway_exit.gif';}
}
else
{if(entry.getStreetType()=='highway'){image='blue_highway.gif';}
else
{image=defaultImage;}
}
}
else
{image=defaultImage;}
return '<img src="' + iwconst.GLOBAL_APP_URL + '/img/controls/routing/' + image + '">';};this.createDistanceAsHTML=function(index){var distance='';var entry=_route.getEntry(index);var nextEntry=_route.getEntry(index+1);if(typeof nextEntry !='undefined'){distance='<b>' + formatMeter(nextEntry.getEntryDistance())+ '</b>&nbsp;<font size=-2>weiter</font><br>';}
distance +='<font size=-2>gesamt&nbsp;' + formatMeter(entry.getTotalDistance())+ '</font>';return distance;};this.createDescriptionAsHTML=function(index){var desc='';var nextEntry=null;var previousEntry=_route.getEntry(index-1);var entry=_route.getEntry(index);var nextEntry=_route.getEntry(index+1);if(index==0){desc='Sie\u0020starten\u0020<b>' + formatDirection(entry)+ '</b>\u0020auf\u0020<b>' + entry.getSegment()+ '</b>\u0020Richtung\u0020';if(entry.getSignPost()!=''){desc +='<b>' + entry.getSignPost()+ '</b>';}
else
{desc +='<b>' + nextEntry.getSegment()+ '</b>';}
}
else
{switch(entry.getDirection()){case -3:if(nextEntry.getStreetType()=='other'){desc='Scharf\u0020links\u0020abbiegen';if(entry.getSegment()!=''){desc +='\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
}
else if(nextEntry.getStreetType()=='interstate'){desc='Scharf\u0020links\u0020abbiegen';if(entry.getSegment()!=''){desc +='\u0020und\u0020<b>' + entry.getSegment()+ '</b>\u0020folgen';}
}
else if(nextEntry.getStreetType()=='highway'){desc='Fahren\u0020Sie\u0020scharf\u0020links\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
break;case -2:if(nextEntry.getStreetType()=='other'){desc='Links\u0020abbiegen';if(entry.getSegment()!=''){desc +='\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
}
else if(nextEntry.getStreetType()=='interstate'){desc='Links\u0020abbiegen';if(entry.getSegment()!=''){desc +='\u0020und\u0020<b>' + entry.getSegment()+ '</b>\u0020folgen';}
}
else if(nextEntry.getStreetType()=='highway'){desc='Fahren\u0020Sie\u0020links\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
break;case -1:if(nextEntry.getStreetType()=='other'){desc='Links\u0020abbiegen';if(entry.getSegment()!=''){desc +='\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
}
else if(nextEntry.getStreetType()=='interstate'){desc='Links\u0020einbiegen';if(entry.getSegment()!=''){desc +='\u0020und\u0020<b>' + entry.getSegment()+ '</b>\u0020folgen';}
}
else if(nextEntry.getStreetType()=='highway'){desc='Fahren\u0020Sie\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
break;case 0:if(entry.getConnector()!=''){if(previousEntry.getStreetType()=='highway'&&entry.getStreetType()=='highway'){desc='Wechseln\u0020Sie\u0020bei\u0020<b>' + entry.getConnector()+ '</b>\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
else if(previousEntry.getStreetType()!='highway'&&entry.getStreetType()=='highway'){desc='Nehmen\u0020Sie\u0020die\u0020Auffahrt\u0020<b>' + entry.getConnector()+ '</b>';}
else if(previousEntry.getStreetType()!='highway'&&entry.getStreetType()!='highway'){desc='Fahren\u0020Sie\u0020weiter\u0020zu\u0020<b>' + entry.getConnector()+ '</b>';}
else
{desc='Nehmen\u0020Sie\u0020die\u0020Ausfahrt\u0020<b>' + entry.getConnector()+ '</b>';}
}
else if(nextEntry.getStreetType()=='other'){desc='Weiter\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
else if(nextEntry.getStreetType()=='interstate'){desc='Geradeaus\u0020und\u0020<b>' + entry.getSegment()+ '</b>\u0020folgen';}
else if(nextEntry.getStreetType()=='highway'){desc='Geradeaus\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
break;case 1:if(entry.getConnector()!=''){if(previousEntry.getStreetType()=='highway'&&entry.getStreetType()=='highway'){desc='Wechseln\u0020Sie\u0020bei\u0020<b>' + entry.getConnector()+ '</b>\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
else if(previousEntry.getStreetType()!='highway'&&entry.getStreetType()=='highway'){desc='Nehmen\u0020Sie\u0020die\u0020Auffahrt\u0020<b>' + entry.getConnector()+ '</b>';}
else if(previousEntry.getStreetType()!='highway'&&entry.getStreetType()!='highway'){desc='Fahren\u0020Sie\u0020weiter\u0020zu\u0020<b>' + entry.getConnector()+ '</b>';}
else
{desc='Nehmen\u0020Sie\u0020die\u0020Ausfahrt\u0020<b>' + entry.getConnector()+ '</b>';}
}
else if(nextEntry.getStreetType()=='other'){desc='Rechts\u0020abbiegen';if(entry.getSegment()!=''){desc +='\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
}
else if(nextEntry.getStreetType()=='interstate'){desc='Rechts\u0020einbiegen';if(entry.getSegment()!=''){desc +='\u0020und\u0020<b>' + entry.getSegment()+ '</b>\u0020folgen';}
}
else if(nextEntry.getStreetType()=='highway'){desc='Fahren\u0020Sie\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
break;case 2:if(entry.getConnector()!=''){if(previousEntry.getStreetType()=='highway'&&entry.getStreetType()=='highway'){desc='Wechseln\u0020Sie\u0020bei\u0020<b>' + entry.getConnector()+ '</b>\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
else if(previousEntry.getStreetType()!='highway'&&entry.getStreetType()=='highway'){desc='Nehmen\u0020Sie\u0020die\u0020Auffahrt\u0020<b>' + entry.getConnector()+ '</b>';}
else if(previousEntry.getStreetType()!='highway'&&entry.getStreetType()!='highway'){desc='Fahren\u0020Sie\u0020weiter\u0020zu\u0020<b>' + entry.getConnector()+ '</b>';}
else
{desc='Nehmen\u0020Sie\u0020die\u0020Ausfahrt\u0020<b>' + entry.getConnector()+ '</b>';}
}
else if(nextEntry.getStreetType()=='other'){desc='Rechts\u0020abbiegen';if(entry.getSegment()!=''){desc+='\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
}
else if(nextEntry.getStreetType()=='interstate'){desc='Rechts\u0020abbiegen';if(entry.getSegment()!=''){desc +='\u0020und\u0020<b>' + entry.getSegment()+ '</b>\u0020folgen';}
}
else if(nextEntry.getStreetType()=='highway'){desc='Fahren\u0020Sie\u0020rechts\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
break;case 3:if(entry.getConnector()!=''){if(previousEntry.getStreetType()=='highway'&&entry.getStreetType()=='highway'){desc='Wechseln\u0020Sie\u0020bei\u0020<b>' + entry.getConnector()+ '</b>\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
else if(previousEntry.getStreetType()!='highway'&&entry.getStreetType()=='highway'){desc='Nehmen\u0020Sie\u0020die\u0020Auffahrt\u0020<b>' + entry.getConnector()+ '</b>';}
else if(previousEntry.getStreetType()!='highway'&&entry.getStreetType()!='highway'){desc='Fahren\u0020Sie\u0020weiter\u0020zu\u0020<b>' + entry.getConnector()+ '</b>';}
else
{desc='Nehmen\u0020Sie\u0020die\u0020Ausfahrt\u0020<b>' + entry.getConnector()+ '</b>';}
}
else if(nextEntry.getStreetType()=='other'){desc='Scharf\u0020rechts\u0020abbiegen';if(entry.getSegment()!=''){desc+='\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
}
else if(nextEntry.getStreetType()=='interstate'){desc='Scharf\u0020rechts\u0020abbiegen';if(entry.getSegment()!=''){desc +='\u0020und\u0020<b>' + entry.getSegment()+ '</b>\u0020folgen';}
}
else if(nextEntry.getStreetType()=='highway'){desc='Fahren\u0020Sie\u0020scharf\u0020rechts\u0020auf\u0020<b>' + entry.getSegment()+ '</b>';}
break;case 10:var address=null;if(typeof nextEntry=='undefined'){address=route.getDestinationAddress();}
else
{var n=0;for(var i=index-1;i>=0;i--){if(route.getEntry(i).getDirection()==10){n++;}
}
address=route.getInterstationAddresses()[n];}
desc='Nach\u0020ca.\u0020' + formatMeter(entry.getEntryDistance())+ '\u0020haben\u0020Sie\u0020Ihr\u0020Ziel,\u0020<b>' + formatAddress(address)+ '</b>\u0020erreicht.';break;case 11:desc='Im\u0020Kreisverkehr\u0020<b>' + entry.getSegment()+ '</b>\u0020die\u0020<b>' + formatNumberAsString(entry.getRoundaboutNumber())+ '</b>\u0020Ausfahrt\u0020nehmen';break;}
if(entry.getDirection()!=10&&entry.getSignPost()!=''){desc +='\u0020Richtung\u0020<b>' + entry.getSignPost()+ '</b>';}
if(typeof nextEntry !='undefined'){var time=formatTime(nextEntry.getEntryTime());if(time){desc +='<br>Ca.&nbsp;' + time;}
}
}
return desc;};function formatAddress(address){var addr='';if(address.getStreet()){addr +=address.getStreet();if(address.hasHouseNumber()){addr +='&nbsp;' + address.getHouseNumber();}
addr +=',\u0020';}
if(address.getZipCode()){addr +=address.getZipCode()+ '&nbsp;';}
addr +=address.getCity();return addr;}
function getDirectionCode(entry){var g=entry.getDirection();if((g>=337.5&&g<=0)||(g>=0&&g<=22.5))return 1;else if(g>=22.5&&g<=67.5)return 2;else if(g>=67.5&&g<=112.5)return 3;else if(g>=112.5&&g<=157.5)return 4;else if(g>=157.5&&g<=202.5)return 5;else if(g>=202.5&&g<=247.5)return 6;else if(g>=247.5&&g<=292.5)return 7;else if(g>=292.5&&g<=337.5)return 8;}
function formatDirection(entry){var direction='';var code=getDirectionCode(entry);if(_language.toLowerCase()=='de'){switch(code){case 1:direction='n&ouml;rdlich';break;case 2:direction='nord&ouml;stlich';break;case 3:direction='&ouml;stlich';break;case 4:direction='s&uuml;d&ouml;stlich';break;case 5:direction='s&uuml;dlich';break;case 6:direction='s&uuml;dwestlich';break;case 7:direction='westlich';break;case 8:direction='nordwestlich';break;}
}
return direction;}
function formatTime(seconds){var time='';var minutes=Math.round(seconds/60);var hours=Math.floor(minutes/60);var minutesAfterHours=minutes -(hours*60);if(hours==1){time='1&nbsp;Stunde';}
else if(hours>1){time=hours + '&nbsp;Stunden';}
if(minutes==0){time='';}
else if(minutes==1){time='1&nbsp;Minute';}
else if(minutes<60){time=minutes + '&nbsp;Minuten';}
else
{time +=',&nbsp;' + minutesAfterHours + '&nbsp;Minuten';}
return time;}
function formatMeter(meter){var distance='';if(meter<100){distance=(Math.round(meter/10)*10)+ '&nbsp;m';}
else
{distance=(Math.round(meter/100)/10)+ '&nbsp;km';}
return distance;}
function formatNumberAsString(number){var string='';if(number==1){string='erste';}
else if(number==2){string='zweite';}
else if(number==3){string='dritte';}
else if(number==4){string='vierte';}
else
{string=number;}
return string;}
var _language='de';var _route=route;}
function IWRouteOptions(){this.TYPE_SPEED='SPEED';this.TYPE_LENGTH='LENGTH';this.TYPE_ECONOMY='ECONOMY';var _type=this.TYPE_SPEED;var _citySpeed=30;var _countryRoadSpeed=70;var _highwaySpeed=130;var _shapeEnabled=true;this.setShapeEnabled=function(shapeEnabled){if(shapeEnabled==true||shapeEnabled==false){_shapeEnabled=shapeEnabled;}
};this.isShapeEnabled=function(){return _shapeEnabled;};this.setType=function(type){if(type==this.TYPE_SPEED||type==this.TYPE_LENGTH||type==this.TYPE_ECONOMY){_type=type;}
else
{throw 'Unkown type:' + type + '.';}
};this.getType=function(){return _type;};this.setCitySpeed=function(citySpeed){var intVal=parseInt(citySpeed);if(intVal>0){_citySpeed=intVal;}
else
{throw "The average driving speed in cities must be greater than 0.";}
};this.getCitySpeed=function(){return _citySpeed;};this.setCountryRoadSpeed=function(countryRoadSpeed){var intVal=parseInt(countryRoadSpeed);if(intVal>0){_countryRoadSpeed=intVal;}
else
{throw "The average driving speed on country roads must be greater than 0.";}
};this.getCountryRoadSpeed=function(){return _countryRoadSpeed;};this.setHighwaySpeed=function(highwaySpeed){var intVal=parseInt(highwaySpeed);if(intVal>0){_highwaySpeed=intVal;}
else
{throw 'The average driving speed on highways must be greater than 0.';}
};this.getHighwaySpeed=function(){return _highwaySpeed;};this.toString=function(){return '[IWRouteOptions]' +'Routing type:' + _type + ',' +'Average driving speed in cities:' + _citySpeed + ',' +'Average driving speed on country roads:' + _countryRoadSpeed + ',' +'Average driving speed on highways:' + _highwaySpeed;};}
function IWRouteSegment(){var _instruction=null;var _coordinate=null;var _direction=null;var _length=null;var _time=null;var _routeLength=null;var _routeTime=null;this.DC_START=0;this.DC_DESTINATION=1;this.DC_STRAIGHTAHEAD=2;this.DC_HALFRIGHT=3;this.DC_RIGHT=4;this.DC_SHARPRIGHT=5;this.DC_HALFLEFT=6;this.DC_LEFT=7;this.DC_SHARPLEFT=8;this.DC_ROUNDABOUT=9;this.setInstruction=function(newInstruction){_instruction=newInstruction;}
this.getInstruction=function(){return _instruction;};this.setCoordinate=function(newCoordinate){_coordinate=newCoordinate;}
this.getCoordinate=function(){return _coordinate;};this.setDirection=function(newDirection){var intValue=parseInt(newDirection);if(intValue>=0&&intValue<=12){_direction=newDirection;}
else
{throw "The direction " + newDirection + " is out of range. The value must be between 0 and 12.";}
};this.getDirection=function(){return _direction;};this.setLength=function(newSegmentLength){_length=newSegmentLength;}
this.getLength=function(){return _length;};this.setRouteLength=function(newRouteLength){_routeLength=newRouteLength;}
this.getRouteLength=function(){return _routeLength;}
this.setTime=function(newTime){_time=newTime;};this.getTime=function(){return _time;}
this.setRouteTime=function(newRouteTime){_routeTime=newRouteTime;};this.getRouteTime=function(){return _routeTime;}
this.toString=function(){return "[IWRouteSegment]" +"Instruction text:" + _instruction + "," +"Coordinate:" + _coordinate.toString()+ "," +"Driving direction code:" + _direction + "," +"Segment Length:" + _length + "," +"Segment Driving Time:" + _time + "," +"Route Driving Time:" + _routeTime + "," +"Route Length:" + _routeLength;};}
function IWRoutingClient(){var _logger=log4javascript.getLogger('IWRoutingClient');var _routeOptions=new IWRouteOptions();this.setRouteOptions=function(routeOptions){_routeOptions=routeOptions;};this.getRouteOptions=function(){return _routeOptions;};this.route=function(start,destination,interstations){var params='';params=params.concat('&X1=').concat(start.getLCC().getX());params=params.concat('&Y1=').concat(start.getLCC().getY());params=params.concat('&X2=').concat(destination.getLCC().getX());params=params.concat('&Y2=').concat(destination.getLCC().getY());if((interstations !=null)&&(typeof interstations !='undefined')){for(var i=0,n=1;i<interstations.length;i++,n++){params=params.concat('&IX').concat(n).concat('=').concat(interstations[i].getLCC().getX());params=params.concat('&IY').concat(n).concat('=').concat(interstations[i].getLCC().getY());}
}
if(_routeOptions !=null){params=params.concat('&TYPE=').concat(_routeOptions.getType());params=params.concat('&SPEED_CI=').concat(_routeOptions.getCitySpeed());params=params.concat('&SPEED_CO=').concat(_routeOptions.getCountryRoadSpeed());params=params.concat('&SPEED_HI=').concat(_routeOptions.getHighwaySpeed());params=params.concat('&SHAPE=').concat(_routeOptions.isShapeEnabled()? '1':'0');}
var url=iwconst.LOCAL_APP_URL + '/servlet/FrontController' +'?cmd=route' +'&app=ms' +'&VNR=' + IWAccessFilter.getCNR()+'&PNR=' + IWAccessFilter.getPNR()+params;var xmlHttp=new IWXMLHttpRequest();xmlHttp.open('GET',iwconst.GLOBAL_PROXY_URL + '?serverURL=' + escape(url),true);xmlHttp.onreadystatechange=function(){routeCallback(this,xmlHttp,start,destination,interstations);}.iwclosure(this);xmlHttp.send(null);};this.toString=function(){return '[IWRoutingClient]' +(_routeOptions !=null ? _routeOptions.toString():'null');};this.triggerAfterRouted=function(event){IWEventManager.trigger(this,'afterrouted',event);};function routeCallback(self,xmlHttp,start,destination,interstations){if(xmlHttp.readyState==4){if(xmlHttp.statusText=='OK'){if(xmlHttp.responseText.length>0){var json=eval(xmlHttp.responseText);var route=new IWRoute();route.setStartAddress(start);route.setDestinationAddress(destination);route.setInterstationAddresses(interstations);route.setShape(json.route.shape);var coordNW=new IWCoordinate(json.route.boundsNW.split(";")[0],json.route.boundsNW.split(";")[1]);var coordSE=new IWCoordinate(json.route.boundsSE.split(";")[0],json.route.boundsSE.split(";")[1]);route.setBounds(new IWBounds(coordNW,coordSE));route.setDrivingTime(json.route.drivingTime);route.setFuelConsumption(json.route.fuelConsumption);route.setRouteLength(json.route.routeLength*1000);var entries=json.route.entries;for(var i=0;i<entries.length;i++){var e=entries[i];var entry=new IWRouteEntry();entry.setType(e.type);entry.setStreetType(e.streettype);entry.setEntryDistance(parseInt(e.entryDistance));entry.setTotalDistance(parseInt(e.totalDistance));entry.setEntryTime(parseInt(e.entryTime));entry.setTotalTime(parseInt(e.totalTime));entry.setSegment(e.segment);entry.setConnector(e.connector);entry.setDirection(parseInt(e.direction));entry.setCoordinate(new IWCoordinate(e.coordinateX,e.coordinateY));entry.setOrientation(parseInt(e.orientation));entry.setRoundaboutType(e.roundaboutType);entry.setRoundaboutNumber(e.roundaboutNumber);entry.setSignPost(e.signpost);route.addEntry(entry);}
}
else
{alert('IWRoutingClient:Response text is empty.');}
}
else if(xmlHttp.status==401){alert('IWRoutingClient:Access denied.(' + xmlHttp.status + ')' + xmlHttp.statusText);}
else
{alert('IWRoutingClient:(' + xmlHttp.status + ')' + xmlHttp.statusText);}
}
else
{throw 'Error. ReadyState:' + xmlHttp.readyState + ',Status:' + xmlHttp.statusText + ',Content-length:' + xmlHttp.responseText.length;}
var event=new IWRoutingEvent();event.statusCode=xmlHttp.statusText;event.route=route;self.triggerAfterRouted(event);}
}
function IWRoutingEvent(){this.status=null;this.bounds=null;this.shape='';this.route=null;this.parameterObject=null;this.toString=function(){return '[IWRoutingEvent]';};}
var IWAccessFilter=new function(){var _CNR=0;var _PNR=0;this.setCNR=function(cnr){_CNR=parseInt(cnr);};this.getCNR=function(){return _CNR;};this.setPNR=function(pnr){_PNR=parseInt(pnr);};this.getPNR=function(){return _PNR;};this.toString=function(){return '[IWAccessFilter]CNR=' + _CNR + ',PNR=' + _PNR;};};function IWLayer(map,layerTitle,layerName,idfLayerName){IWLayerInterface.call(this,layerTitle);var _map=map;var _layerName=layerName;var _idfLayerName=(typeof idfLayerName=='undefined')? layerName:idfLayerName;var _shapes=new Array();var _this=this;this.add=function(node){throw 'IWLayer is not allowed to add childnodes.'
};this.expand=function(node){throw 'IWLayer cannot expand childnodes.'
};this.collapse=function(node){throw 'IWLayer cannot collapse childnodes.'
};this.addLayer=function(node){this.add(node);};this.setLayerName=function(layerName){_layerName=layerName;};this.getLayerName=function(){return _layerName;};this.setLayerTitle=function(layerTitle){this.setName(layerTitle);};this.getLayerTitle=function(){return this.getName();};this.getCurrentShapeName=function(newZoomLevel){for(var i=0;i<_shapes.length;i++){if(_shapes[i].getRange().contains(newZoomLevel)){return _shapes[i].getShapeName();}
}
return null;};this.setVisibility=function(visibility){iw.strict([Boolean],arguments);this.setUseDefaults(false);if(this.isMarked()!=visibility){if(visibility)this.mark();else
this.unmark();updateParentVisibility(this.getParent());}
};this.setIdfLayerName=function(idfLayerName){_idfLayerName=idfLayerName;};this.getIdfLayerName=function(){return _idfLayerName;};this.addShape=function(shape){this.removeShape(shape.getShapeName());_shapes.push(shape);updateVisibility(_map.getZoom());};this.removeShape=function(shapeName){iw.strict([String],arguments);for(var i=0;i<_shapes.length;i++){if(_shapes[i].getShapeName()==shapeName){_shapes.splice(i,1);updateVisibility(_map.getZoom());return true;}
}
return false;};this.getShapes=function(){return _shapes;};this.isVisible=function(){return this.isMarked();};this.toString=function(){return '[IWLayer]' +'layertitle:' + this.getName()+ ',' +'layername:' + _layerName + ',' +'idfLayerName:' + _idfLayerName + ',' +'shapes:' + _shapes;};this.triggerOnRemove=function(){IWEventManager.trigger(this,'onremove',null);};function updateVisibility(newZoomLevel){if(_this.useDefaults()){if(_this.getCurrentShapeName(newZoomLevel)==null){_this.unmark();}
else
{_this.mark();}
updateParentVisibility(_this.getParent());}
}
function updateParentVisibility(parent){if(parent==null){return;}
var children=parent.getChildren();var visibleFound=false;for(var i=0;i<children.length;i++){if(children[i].isMarked()){visibleFound=true;break;}
}
if(!parent.isMarked()&&visibleFound){parent.mark();updateParentVisibility(parent.getParent());}
else if(parent.isMarked()&&!visibleFound){parent.unmark();updateParentVisibility(parent.getParent());}
}
if(typeof layerTitle !='string'){throw 'IWLayer:layerTitle has to be specified';}
if(typeof layerName !='string'){throw 'IWLayer:layerName has to be specified';}
IWEventManager.addListener(_map,'onzoom',function(event){updateVisibility(event.newZoomLevel);});IWEventManager.addListener(_map,'aftercentered',function(){updateVisibility(_map.getZoom());});}
function IWLayerGroup(groupName){IWLayerInterface.call(this,groupName);this.getGroupName=function(){return this.getName();};this.setGroupName=function(groupName){iw.strict([String],arguments);this.setName(groupName);};this.isVisible=function(){return this.isMarked();};this.addLayer=function(layer){this.add(layer);if(!this.isMarked()&&layer.isMarked()){this.mark();}
};this.removeLayer=function(layer){this.remove(layer);layer.triggerOnRemove();if(this.isMarked()&&layer.isMarked()){var visibleFound=false;for(var i=0;i<this.getChildren().length;i++){if(this.getChildren()[i].isMarked()){visibleFound=true;break;}
}
if(!visibleFound){this.unmark();}
}
};this.removeLayerByName=function(layerName){var layer=null;for(var i=0;i<this.getChildren().length;i++){if(this.getChildren()[i].getName()==layerName){layer=this.getChildren()[i];break;}
}
if(layer==null){throw 'IWLayerGroup.removeLayerByName:Layer(Group)\'' + layerName + '\' not found!';}
this.removeLayer(layer);return layer;};this.triggerOnRemove=function(){for(var i=0;i<this.getChildren().length;i++){this.getChildren()[i].triggerOnRemove();}
};this.toString=function(){return '[IWLayerGroup]' +'groupName:' + this.getName()+ ',' +'isVisible:' + this.isVisible()+ ',' +'useDefaults:' + this.useDefaults()+ ',' +'hasChildren:' + this.hasChildren();};if(typeof groupName !='string'){throw 'IWLayerGroup:groupName has to be specified';}
}
function IWLayerInfoEvent(){this.requestedId=null;this.requestedEvent=null;this.json=null;this.mouseCoordinate=null;this.records=0;this.toString=function(){return '[IWLayerInfoEvent]' +'requestedId:' + this.requestedId + ',' +'requestedEvent:' + this.requestedEvent + ',' +'json:' + this.json + ',' +'mouseCoordinate:' + this.mouseCoordinate + ',' +'records:' + this.records;};}
function IWLayerInfoManager(map){var _this=this;var _map=map;var _requestLayers=new Array();var _eventListeners=new Object();var _captureSize=new IWSize(25,25);var _requestIdCounter=0;var _maxHits=100;var _logger=log4javascript.getLogger('IWLayerInfoManager');this.setMaximumHits=function(maxHits){if(maxHits==null){_maxHits=null;}
else
{var intValue=parseInt(maxHits);if(intValue<0){throw('Invalid value for maxHits:' + intValue);}
_maxHits=intValue;}
};this.getMaximumHits=function(){return _maxHits;};
var _captureOffset = new IWPoint(0, 0);
this.setCaptureOffset = function(captureOffset)
{
	_captureOffset = captureOffset;
};

this.setCaptureSize=function(captureSize){
iw.strict([IWSize],arguments);_captureSize=captureSize;};
this.getCaptureSize=function(){return _captureSize;};this.addRequestLayer=function(requestLayer){iw.strict([IWRequestLayer],arguments);for(var i=0;i<_requestLayers.length;i++){if(_requestLayers[i]==requestLayer){return false;}
}
_requestLayers.push(requestLayer);var newEvents=requestLayer.getEvents();for(var eventName in newEvents){addEvent(eventName);}
requestLayer.onRegisterListener=IWEventManager.addListener(requestLayer,'onregisterevent',function(e){addEvent(e.eventName);}
);requestLayer.onUnregisterListener=IWEventManager.addListener(requestLayer,'onunregisterevent',function(e){removeEvent(e.eventName);}
);return true;};this.removeRequestLayer=function(requestLayer){iw.strict([IWRequestLayer],arguments);var layerIndex=null;for(var i=0;i<_requestLayers.length;i++){if(_requestLayers[i]==requestLayer){layerIndex=i;break
}
}
if(layerIndex==null){return false;}
IWEventManager.removeListener(requestLayer.onRegisterListener);IWEventManager.removeListener(requestLayer.onUnregisterListener);var oldEvents=requestLayer.getEvents();for(var eventName in oldEvents){removeEvent(eventName);}
_requestLayers.splice(layerIndex,1);return true;};this.triggerDataReceived=function(event){IWEventManager.trigger(this,'datareceived',event);};this.toString=function(){return '[IWLayerInfoManager]' +'capture size:' + _captureSize.toString();};function addEvent(eventName){if(_eventListeners[eventName]==null){_eventListeners[eventName]=new Array();_eventListeners[eventName].push(1);var listener=IWEventManager.addListener(_map,eventName,function(e){sendServerRequest(e,eventName);});_eventListeners[eventName].push(listener);}
else
{_eventListeners[eventName][0]++;}
}
function removeEvent(eventName){if(_eventListeners[eventName]==null){throw 'IWLayerInfoManager:Event not found:' + eventName;}
else
{if(_eventListeners[eventName][0]==1){IWEventManager.removeListener(_eventListeners[eventName][1]);_eventListeners[eventName]=null;}
else
{_eventListeners[eventName][0]--;}
}
}


function sendServerRequest(event,eventName){var layernames='';var idfIndex=1;for(var i=0;i<_requestLayers.length;i++){if(_requestLayers[i].getEvents()[eventName]&&_requestLayers[i].getLayer().isVisible()){var layer=_requestLayers[i].getLayer();layernames +=idfIndex + ',' + layer.getIdfLayerName()+ ',' + layer.getLayerName()+ ',' + layer.getCurrentShapeName(_map.getZoom());if(_requestLayers[i].getMaximumHits()!=null){layernames +=',' + _requestLayers[i].getMaximumHits();}
layernames +=';';}
idfIndex++;}
if(layernames !=''){var dxPixel=_captureSize.getWidth();var dyPixel=_captureSize.getHeight();var coordD=_map.fromPixelToCoordinate(new IWPoint(dxPixel,dyPixel));var coord0=_map.fromPixelToCoordinate(new IWPoint(0,0));var dxMeter=Math.abs(coordD.getX()- coord0.getX());var dyMeter=Math.abs(coordD.getY()- coord0.getY());




var corrected = new IWPoint(event.position.getX() + _captureOffset.getX(), event.position.getY() + _captureOffset.getY());
var mouseCoordinate=_map.fromPixelToCoordinate(corrected);

var url=iwconst.LOCAL_APP_URL +'servlet/FrontController?' +'cmd=getIdentifyInfo' +'&VNR=' + IWAccessFilter.getCNR()+'&PNR=' + IWAccessFilter.getPNR()+'&app=ms' +'&mapcx=' + mouseCoordinate.getX()+'&mapcy=' + mouseCoordinate.getY()+'&mapdx=' + dxMeter +'&mapdy=' + dyMeter +'&width=' + dxPixel +'&height=' + dyPixel +'&projc=lcc_europe' +'&borderpolygon=no' +'&maxidentifyobjects=' + _maxHits +'&layers=' + layernames;var method='GET';if(url.length>2000){method='POST';}
//alert(_captureOffset + ', ' + corrected + ', ' + url);

var xmlHttp=new IWXMLHttpRequest();xmlHttp.open(method,iwconst.GLOBAL_PROXY_URL + '?serverURL=' + escape(url),true);xmlHttp.onreadystatechange=function(){_logger.fatal("A");callbackSendServerRequest(xmlHttp,eventName,mouseCoordinate);_logger.fatal("B");}.iwclosure(_this);xmlHttp.send(null);}
}


function callbackSendServerRequest(xmlHttp,eventName,mouseCoordinate){_logger.info("callbackSendSeverRequest start");var json=null;if(xmlHttp.readyState==4){if(xmlHttp.statusText=='OK'){if(xmlHttp.responseText.length>0){json=eval(xmlHttp.responseText);}
else
{alert('IWLayerInfoManager:Response text is empty.');}
}
else if(xmlHttp.status==401){alert(xmlHttp.statusText);}
}
else
{alert('GetIdentifyInfo failed:' + xmlHttp.statusText);}
_requestIdCounter++;var records=0;for(var layerData in json){records +=json[layerData].meta.records;}
var infoManagerEvent=new IWLayerInfoEvent();infoManagerEvent.requestId=_requestIdCounter;infoManagerEvent.mouseCoordinate=mouseCoordinate;infoManagerEvent.requestedEvent=eventName;infoManagerEvent.json=json;infoManagerEvent.test=xmlHttp.responseText;infoManagerEvent.records=records;_this.triggerDataReceived(infoManagerEvent);var dataEvent=new IWLayerInfoEvent();dataEvent.requestedEvent=eventName;dataEvent.mouseCoordinate=mouseCoordinate;for(var i=0;i<_requestLayers.length;i++){if(_requestLayers[i].getEvents()[eventName]&&_requestLayers[i].getLayer().isVisible())
{var layer=_requestLayers[i].getLayer();if(json[layer.getIdfLayerName()]){var jsonLayer=json[layer.getIdfLayerName()];dataEvent.json=jsonLayer.recordset;dataEvent.requestId=_requestIdCounter;dataEvent.records=jsonLayer.meta.records;_requestLayers[i].triggerDataReceived(dataEvent);}
}
}
_logger.info("callbackSendSeverRequest ende");}
}
function IWLayerInterface(name){IWNodeElement.call(this,name);var _useDefaults=true;this.isVisible=function(){throw 'Function isVisible is not implemented!';};this.setUseDefaults=function(useDefaults){_useDefaults=useDefaults;};this.useDefaults=function(){return _useDefaults;};this.setVisible=function(visible){iw.strict([Boolean],arguments);var node=this;if(visible){while(node){node.setUseDefaults(false);node.mark();node=node.getParent();}
}
else
{node.setUseDefaults(false);node.unmark();var visibleFound=false;node=node.getParent();while(node){if(!visibleFound){for(var i=0;i<node.getChildren().length;i++){if(node.getChildren()[i].isMarked()){visibleFound=true
node.setUseDefaults(false);node.mark();break;}
}
if(!visibleFound){node.setUseDefaults(false);node.unmark();}
}
else
{break;}
node=node.getParent();}
}
if(this.hasChildren()){for(var i=0;i<this.getChildren().length;i++){this.getChildren()[i].setVisible(visible);}
}
};}
function IWRequestLayer(layer){var _layer=layer;var _maxHits=5;var _events=new Object();this.setMaximumHits=function(maxHits){if(maxHits==null){_maxHits=null;}
else
{var intValue=parseInt(maxHits);if(intValue<0){throw('Invalid value for maxHits:' + intValue);}
_maxHits=intValue;}
};this.getMaximumHits=function(){return _maxHits;};this.registerEvent=function(eventName){iw.strict([String],arguments)
if(_events[eventName]==null){_events[eventName]=true;var e=new IWRequestLayerEvent();e.eventName=eventName;this.triggerOnRegisterEvent(e);return true;}
return false;};this.unregisterEvent=function(eventName){iw.strict([String],arguments)
if(_events[eventName]!=null){_events[eventName]=null;var e=new IWRequestLayerEvent();e.eventName=eventName;this.triggerOnUnregisterEvent(e);return true;}
return false;};this.getEvents=function(){return _events;};this.getLayer=function(){return _layer;};this.triggerOnRegisterEvent=function(event){iw.strict([IWRequestLayerEvent],arguments);IWEventManager.trigger(this,'onregisterevent',event)
};this.triggerOnUnregisterEvent=function(event){iw.strict([IWRequestLayerEvent],arguments);IWEventManager.trigger(this,'onunregisterevent',event)
};this.triggerDataReceived=function(event){IWEventManager.trigger(this,'datareceived',event);};}
function IWRequestLayerEvent(){this.eventName=null;this.toString=function(){return '[IWRequestLayerEvent]eventName:' + this.eventName;};}
function IWShape(shapeName,range){var _shapeName=shapeName;var _range=(typeof range !='undefined' ? range:new IWRange(0,100));this.setShapeName=function(shapeName){_shapeName=shapeName;};this.getShapeName=function(){return _shapeName;};this.setRange=function(range){_range=range;};this.getRange=function(){return _range;};this.toString=function(){return '[IWShape]' +'shapeName:' + _shapeName + ',' +'range:' + _range;};}
function IWShapeCreateEvent(){this.statuscode='';this.errordesc='';this.shapename='';this.bounds=null;this.toString=function(){return '[IWShapeCreateEvent]' +'Statuscode:' +(this.statuscode==null ? 'null':this.statuscode)+ ',' +'ErrorDesc:' +(this.errordesc==null ? 'null':this.errordesc)+ ',' +'Shapename:' +(this.shapename==null ? 'null':this.shapename);};}
function IWShapeService(){this.createFromKML=function(kmlfile){var url=iwconst.LOCAL_APP_URL + '/servlet/FrontController' +'?cmd=createShape' +'&app=ms' +'&VNR=' + IWAccessFilter.getCNR()+'&PNR=' + IWAccessFilter.getPNR()+'&kmlfile=' + kmlfile;var xmlHttp=new IWXMLHttpRequest();xmlHttp.open("GET",url,true);xmlHttp.onreadystatechange=function(){createFromKMLCallback(this,xmlHttp);}.iwclosure(this);xmlHttp.send(null);};this.toString=function(){return '[IWShapeService]';};this.triggerOncreatefromkml=function(event){IWEventManager.trigger(this,'oncreatefromkml',event);};function createFromKMLCallback(self,xmlHttp){if(xmlHttp.readyState==4){if(xmlHttp.statusText=='OK'){if(xmlHttp.responseText.length>0){var root=IWXMLHelper.parse(xmlHttp.responseText).documentElement;var event=new IWShapeCreateEvent();event.statuscode=IWXMLHelper.getNodeValue(root.getElementsByTagName('status')[0]);if(event.statuscode=='ERROR'){event.errordesc=IWXMLHelper.getNodeValue(root.getElementsByTagName('errdesc')[0]);}
else if(event.statuscode=='OK'){event.shapename=IWXMLHelper.getNodeValue(root.getElementsByTagName('shapename')[0]);var coordNW=IWXMLHelper.getNodeValue(root.getElementsByTagName('coordNW')[0]).split(',');var coordSE=IWXMLHelper.getNodeValue(root.getElementsByTagName('coordSE')[0]).split(',');event.bounds=new IWBounds(new IWCoordinate(coordNW[0],coordNW[1]),new IWCoordinate(coordSE[0],coordSE[1]));}
else
{throw('Undefined statuscode:' + event.statuscode);}
}
else
{alert('IWShapeService:Response text is empty.');}
}
else if(xmlHttp.status==401){alert(xmlHttp.statusText);}
else
{alert('Shape service failed:' + xmlHttp.statusText);}
self.triggerOncreatefromkml(event);}
}
}var IWBrowser=new function(){this.isInternetExplorer=function(){return((document.all)&&(window.offscreenBuffering))? true:false;};this.isNetscape=function(){return((document.captureEvents)&&(!document.getElementById))? true:false;};this.isMozilla=function(){return((document.getElementById)&&(!document.all)&&(document.documentElement))? true:false;};this.isOpera=function(){return window.opera ? true:false;};};var IWBrowserDetect={init:function(){this.browser=this.searchString(this.dataBrowser)||"An unknown browser";this.version=this.searchVersion(navigator.userAgent)
||this.searchVersion(navigator.appVersion)
||"an unknown version";this.OS=this.searchString(this.dataOS)||"an unknown OS";},searchString:function(data){for(var i=0;i<data.length;i++){var dataString=data[i].string;var dataProp=data[i].prop;this.versionSearchString=data[i].versionSearch||data[i].identity;if(dataString){if(dataString.indexOf(data[i].subString)!=-1)return data[i].identity;}
else if(dataProp)return data[i].identity;}
},searchVersion:function(dataString){var index=dataString.indexOf(this.versionSearchString);if(index==-1)return;return parseFloat(dataString.substring(index+this.versionSearchString.length+1));},dataBrowser:[
{string:navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"
},{string:navigator.vendor,subString:"Apple",identity:"Safari"
},{prop:window.opera,identity:"Opera"
},{string:navigator.vendor,subString:"iCab",identity:"iCab"
},{string:navigator.vendor,subString:"KDE",identity:"Konqueror"
},{string:navigator.userAgent,subString:"Firefox",identity:"Firefox"
},{string:navigator.vendor,subString:"Camino",identity:"Camino"
},{string:navigator.userAgent,subString:"Netscape",identity:"Netscape"
},{string:navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"
},{string:navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"
},{string:navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"
}
],dataOS:[
{string:navigator.platform,subString:"Win",identity:"Windows"
},{string:navigator.platform,subString:"Mac",identity:"Mac"
},{string:navigator.platform,subString:"Linux",identity:"Linux"
}
]
};IWBrowserDetect.init();var IWDOMHelper=new function(){this.getSize=function(node,targetNode){var width=parseInt(node.style.width);var height=parseInt(node.style.height);if(isNaN(width)){width=node.offsetWidth;}
if(isNaN(height)){height=node.offsetHeight;}
if(isNaN(width)||width==0||isNaN(height)||height==0){var position=node.style.position;var parentNode=node.parentNode;var visibility=node.style.visibility;node.style.position='absolute';node.style.visibility='hidden';if(targetNode !=null&&typeof targetNode !='undefined'&&targetNode.parentNode !=null){iw.append(targetNode,node);}
else
{iw.append(document.body,node);}
if(isNaN(width)||width==0){width=node.offsetWidth;}
if(isNaN(height)||height==0){height=node.offsetHeight;}
iw.remove(node);node.style.position=position;node.style.visibility=visibility;if(parentNode){iw.append(parentNode,node);}
}
return new IWSize(width,height);};}
function IWDistanceFormatter(meter){var distance=0;var unit='m';this.getDistance=function(){return distance;};this.getUnit=function(){return unit;};this.getMeter=function(){return meter;};function formatDistance(meter){if(meter>=1000000){distance=Math.round(meter/1000);unit='km';}
else if(meter>=10000){distance=Math.round(meter/10)/100;unit='km';}
else
{distance=Math.round(meter);unit='m';}
};formatDistance(meter);}
var IWRequestFormatter=new function(){this.getLayerParameter=function(zoomLevel,array){var layerstring='';for(var i=0;i<array.length;i++){if(array[i].constructor==IWLayerGroup){layerstring=layerstring + this.getLayerParameter(zoomLevel,array[i].getChildren());}
else if(array[i].constructor==IWLayer){if(array[i].getLayerName()!=null&&array[i].getLayerName()!=''&&array[i].isVisible()){layerstring=layerstring + '&layer' + array[i].getLayerName()+ '=';if(array[i].getCurrentShapeName(zoomLevel)!=null){layerstring=layerstring + array[i].getCurrentShapeName(zoomLevel);}
}
}
}
return layerstring;};}
var IWXMLHelper=new function(){this.parse=function(xmlString){var doc=null;if(document.implementation&&document.implementation.createDocument){var parser=new DOMParser();try{doc=parser.parseFromString(xmlString,'text/xml');}
catch(e){}
}
else if(window.ActiveXObject){doc=new ActiveXObject("Microsoft.XMLDOM");doc.async="false";if(xmlString&&xmlString.length>0){doc.loadXML(xmlString);}
}
else if(document.implementation&&document.implementation.createLSParser){var mode=document.implementation.MODE_SYNCHRONOUS;var schemaType='http:/' + '/www.w3.org/TR/REC-xml';var parser=document.implementation.createLSParser(mode,schemaType);var input=document.implementation.createLSInput();input.stringData=sXMLString;doc=parser.parse(input);}
else
{throw('Your browser can\'t handle this script');}
return doc;};this.getNodeValue=function(obj){if(typeof obj !='undefined'&&obj !=null){if(obj.childNodes&&obj.childNodes[0]!=null){return obj.childNodes[0].nodeValue;}
}
return null;};this.getFloatAttribute=function(node,attributeName){var attribute=node.getAttribute(attributeName);if(attribute){var value=parseFloat(attribute);if(!isNaN(value))return value;else
throw 'Attribute is not a number';}
else
throw 'Attribute not found';};}
function IWGraphics(containerDiv){var svg_support=!!window.devicePixelRatio||(typeof SVGAngle=="object"||(document&&document.implementation&&document.implementation.hasFeature("org.w3c.dom.svg","1.0")));/*@cc_on @*//*@if(@_jscript_version>=5.5)var vml_support=true;@else @*/var vml_support=false;/*@end @*/var renderer=null;if(svg_support){renderer=new IWSVGRenderer(containerDiv);}
else if(vml_support){renderer=new IWVMLRenderer(containerDiv);}
else
{alert('Sorry,your Browser cannot show vector graphics!');}
return renderer;}
function IWGraphicsRenderer(containerDiv){this.getContainer=function(){return _container;}
this.removeElement=function(element){element.parentNode.removeChild(element);};this.moveToTop=function(element){element.parentNode.appendChild(element);};this.moveToBottom=function(element){element.parentNode.insertBefore(element,element.parentNode.firstChild);};this.clearContainer=function(){alert('IWGraphicsRenderer.clearContainer()not implemented!');};this.move=function(element,position1,position2){alert('IWGraphicsRenderer.move()not implemented!');};this.getPosition=function(element){alert('IWGraphicsRenderer.getPosition()not implemented!');};this.drawLine=function(point1,point2,width,color){alert('IWGraphicsRenderer.drawLine()not implemented!');};this.drawEllipse=function(point,size,width,lineColor,fillColor){alert('IWGraphicsRenderer.drawEllipse()not implemented!');};this.drawRectangle=function(point,size,width,lineColor,fillColor){alert('IWGraphicsRenderer.drawRectangle()not implemented!');};var _container=containerDiv;_container.style.overflow='hidden';}
function IWSVGRenderer(containerDiv){IWGraphicsRenderer.call(this,containerDiv);this.clearContainer=function(){if(_svgContainer.hasChildNodes()){while(_svgContainer.childNodes.length>0){this.removeElement(_svgContainer.firstChild);}
}
};this.drawLine=function(point1,point2,width,lineColor){var line=_container.ownerDocument.createElementNS('http://www.w3.org/2000/svg','line');line.id='line';line.style.position='absolute';line.setAttributeNS(null,'x1',point1.getX()+ 'px');line.setAttributeNS(null,'y1',point1.getY()+ 'px');line.setAttributeNS(null,'x2',point2.getX()+ 'px');line.setAttributeNS(null,'y2',point2.getY()+ 'px');setLineAttributes(line,width,lineColor);_svgContainer.appendChild(line);return line;};this.drawEllipse=function(point,size,width,lineColor,fillColor){var ellipse=_container.ownerDocument.createElementNS('http://www.w3.org/2000/svg','ellipse');ellipse.id='ellipse';ellipse.style.position='absolute';ellipse.setAttributeNS(null,'cx',point.getX()+ 'px');ellipse.setAttributeNS(null,'cy',point.getY()+ 'px');ellipse.setAttributeNS(null,'rx',size.getWidth()+ 'px');ellipse.setAttributeNS(null,'ry',size.getHeight()+ 'px');setLineAttributes(ellipse,width,lineColor);setFillAttributes(ellipse,fillColor);_svgContainer.appendChild(ellipse);return ellipse;};this.drawRectangle=function(point,size,width,lineColor,fillColor){var rect=_container.ownerDocument.createElementNS('http://www.w3.org/2000/svg','rect');rect.id='rect';rect.style.position='absolute';rect.setAttributeNS(null,'x',point.getX()+ 'px');rect.setAttributeNS(null,'y',point.getY()+ 'px');rect.setAttributeNS(null,'width',size.getWidth()+ 'px');rect.setAttributeNS(null,'height',size.getHeight()+ 'px');setLineAttributes(rect,width,lineColor);setFillAttributes(rect,fillColor);_svgContainer.appendChild(rect);return rect;};this.move=function(element,position1,position2){if(element.tagName=='line'){if(typeof position2=='undefined'){return;}
element.setAttributeNS(null,'x1',position1.getX()+ 'px');element.setAttributeNS(null,'y1',position1.getY()+ 'px');element.setAttributeNS(null,'x2',position2.getX()+ 'px');element.setAttributeNS(null,'y2',position2.getY()+ 'px');}
else if(element.tagName=='ellipse'){element.setAttributeNS(null,'cx',position1.getX()+ 'px');element.setAttributeNS(null,'cy',position1.getY()+ 'px');}
else
{element.setAttributeNS(null,'x',position1.getX()+ 'px');element.setAttributeNS(null,'y',position1.getY()+ 'px');}
};this.getPosition=function(element){if(element.tagName=='line'){return;}
else if(element.tagName=='ellipse'){return new IWPoint(parseInt(element.getAttributeNS(null,'cx')),parseInt(element.getAttributeNS(null,'cy')));}
else
{return new IWPoint(parseInt(element.getAttributeNS(null,'x')),parseInt(element.getAttributeNS(null,'y')));}
};function setLineAttributes(element,width,lineColor){if(typeof lineColor=='undefined'){lineColor='none';}
element.setAttributeNS(null,'stroke',lineColor);element.setAttributeNS(null,'stroke-width',width);}
function setFillAttributes(element,fillColor){if(typeof fillColor=='undefined'){fillColor='none';}
element.setAttributeNS(null,'fill',fillColor);}
var _this=this;var _container=this.getContainer();var _svgContainer=null;_svgContainer=document.createElementNS('http://www.w3.org/2000/svg',"svg");_container.appendChild(_svgContainer);}
function IWVMLRenderer(containerDiv){IWGraphicsRenderer.call(this,containerDiv);this.clearContainer=function(){if(_container.hasChildNodes()){while(_container.childNodes.length>0){this.removeElement(_container.firstChild);}
}
};this.drawLine=function(point1,point2,width,lineColor){if(width>=15)width -=5;else if(width>=10)width -=4;else if(width>=7)width -=3;else if(width>=4)width -=2;else if(width==3)width -=1;var line=_container.ownerDocument.createElement('v:line');line.id='line';line.style.position='absolute';line.setAttribute('from',point1.getX()+ 'px,' + point1.getY()+ 'px');line.setAttribute('to',point2.getX()+ 'px,' + point2.getY()+ 'px');setLineAttributes(line,width,lineColor);_container.appendChild(line);reload();return line;};this.drawEllipse=function(point,size,width,lineColor,fillColor){var ellipse=_container.ownerDocument.createElement('v:oval');ellipse.id='ellipse';ellipse.style.position='absolute';ellipse.style.top=point.getY()- size.getHeight();ellipse.style.left=point.getX()- size.getWidth();ellipse.style.width=size.getWidth()*2;ellipse.style.height=size.getHeight()*2;setFillAttributes(ellipse,fillColor);setLineAttributes(ellipse,width,lineColor);_container.appendChild(ellipse);reload();return ellipse;};this.drawRectangle=function(point,size,width,lineColor,fillColor){var rect=_container.ownerDocument.createElement('v:rect');rect.id='rect';rect.style.position='absolute';rect.style.top=point.getY();rect.style.left=point.getX();rect.style.width=size.getWidth();rect.style.height=size.getHeight();setFillAttributes(rect,fillColor);setLineAttributes(rect,width,lineColor);_container.appendChild(rect);reload();return rect;};this.move=function(element,position1,position2){if(element.tagName=='line'){if(typeof position2=='undefined'){return;}
element.setAttribute('from',position1.getX()+ 'px,' + position1.getY()+ 'px');element.setAttribute('to',position2.getX()+ 'px,' + position2.getY()+ 'px');}
else if(element.tagName=='oval'){element.style.left=position1.getX()- parseInt(element.style.width)/2+'px';element.style.top=position1.getY()- parseInt(element.style.height)/2+'px';}
else
{element.style.left=position1.getX()+'px';element.style.top=position1.getY()+'px';}
};this.getPosition=function(element){if(element.tagName=='line'){return;}
else if(element.tagName=='oval'){return new IWPoint(parseInt(element.style.left)+ parseInt(element.style.width)/2,parseInt(element.style.top)+ parseInt(element.style.height)/2);}
else
{return new IWPoint(parseInt(element.style.left),parseInt(element.style.top));}
};function setLineAttributes(element,width,lineColor){if(typeof lineColor !='undefined'){element.setAttribute('stroked','true');element.setAttribute('strokecolor',lineColor);element.setAttribute('strokeweight',width+'pt');}
else
{element.setAttribute('stroked','false');}
}
function setFillAttributes(element,fillColor){if(typeof fillColor !='undefined'){element.setAttribute('filled','true');element.setAttribute('fillcolor',fillColor);}
else
{element.setAttribute('filled','false');}
}
function initialize(){document.namespaces.add("v","urn:schemas-microsoft-com:vml");var style=document.createStyleSheet();style.addRule('v\\:*',"behavior:url(#default#VML);");IWVMLRenderer.isInitialized=true;}
function reload(){var xmlHttp=new IWXMLHttpRequest();try{xmlHttp.open('GET','',true);xmlHttp.send(null);}
catch(exception){}
}
var _this=this;var _container=this.getContainer();if(!IWVMLRenderer.isInitialized){initialize();}
}
IWVMLRenderer.isInitialized=false;function IWZoom(tileset){var _tileset=null;var _map=null;var _imageArea=null;var _zoomImagesContainer=null;var _zoomImageZIndex=0;var _zoomImagePropertyList=null;var _zoomFactor=1;var _zoomSteps=4;var _nZoomStepNumber=0;var _nZoomSingleStepX=0;var _nZoomSingleStepY=0;var _nMoveSingleStepX=0;var _nMoveSingleStepY=0;var _limitationOfTileSize=4200;var _zoomTimeout=null;var _nLastTilesizeMeter=0;var _currentTilesizeMeter=0;var _self=this;var _prepareZoom=false;this.zoom=function(centralPoint,zoomFactor){_imageArea.init();_imageArea.getZoomArea().getCenter().setX(centralPoint.getX());_imageArea.getZoomArea().getCenter().setY(centralPoint.getY());_imageArea.getZoomArea().getSize().setWidth(_imageArea.getSize().getWidth());_imageArea.getZoomArea().getSize().setHeight(_imageArea.getSize().getHeight());zoomWithSteps(_imageArea.getZoomArea().getCenter(),zoomFactor);};this.opticalZoom=function(tileSizeInMeter){var zoomFactor=_tileset.nTilesizeMeter/tileSizeInMeter;var centralPoint=_tileset.getCurrentMapType().getProjection().meterToPixel(_map.getCenter());if(!this.isPrepareZoom()){this.resetPrepareZoom(true);_imageArea.init();createZoomContainer();var children=_tileset.getTilesContainer().childNodes;for(var i=0;i<children.length;i++){children[i].style.visibility="hidden";}
}
_imageArea.getZoomArea().getCenter().setX(centralPoint.getX());_imageArea.getZoomArea().getCenter().setY(centralPoint.getY());_imageArea.getZoomArea().getSize().setWidth(_imageArea.getSize().getWidth());_imageArea.getZoomArea().getSize().setHeight(_imageArea.getSize().getHeight());zoomWithOneStep(_imageArea.getZoomArea().getCenter(),zoomFactor);return true;};this.removeZoomContainer=function(){if(_imageArea !=null){for(var i=_imageArea.getImageList().length;i>0;i--){var imgZoomTile=_imageArea.getImageList().pop();iw.destroy(imgZoomTile);}
}
this.resetPrepareZoom();};this.hasZoomContainer=function(){return(_zoomImagesContainer.childNodes.length>0);};this.getZoomCentral=function(){return _imageArea.getZoomArea().getCenter();};this.setZoomFactor=function(zoomFactor){_zoomFactor=zoomFactor;};this.getZoomFactor=function(){return _zoomFactor;};this.GetCurrentTilesizeMeter=function(){return _currentTilesizeMeter;};this.isPrepareZoom=function(){return _prepareZoom;};this.resetPrepareZoom=function(prepare){if(typeof prepare=='undefined'){_prepareZoom=false;}
else
{_prepareZoom=prepare;}
};function createPropertyList(){var tileXTotal=_imageArea.getAreaSize().getWidth();var tileYTotal=_imageArea.getAreaSize().getHeight();var tileWidth=_imageArea.getImageSize().getWidth();var tileHeight=_imageArea.getImageSize().getHeight();var tileXIndex=_imageArea.getLeftTop().getPosition().getX();var tileYIndex=_imageArea.getLeftTop().getPosition().getY();_zoomImagePropertyList=new Array(tileXTotal*tileYTotal);var tileIndex=0;for(var row=0;row<tileYTotal;row++){for(var column=0;column<tileXTotal;column++){var image=new IWImage();image.getLeftTop().setX(tileXIndex + tileWidth*column);image.getLeftTop().setY(tileYIndex + tileHeight*row);image.getSize().setWidth(tileWidth);image.getSize().setHeight(tileHeight);image.setZIndex(_zoomImageZIndex);image.setZooming(true);_zoomImagePropertyList[tileIndex++]=image;}
}
}
function zoomTilesHorizontal(variationX,numX,numY){var averageVar=Math.floor(Math.abs(variationX)/numX);var remainVar=Math.abs(variationX)% numX;var pre_step=1;if(variationX<0){pre_step=-1;}
var y=0;for(var i=0;i<numX;i++){var nPos=i +y*numX;_zoomImagePropertyList[nPos].getLeftTop().setX(_zoomImagePropertyList[nPos].getLeftTop().getX()+ pre_step*i*averageVar);_zoomImagePropertyList[nPos].getSize().setWidth(_zoomImagePropertyList[nPos].getSize().getWidth()+ pre_step*averageVar);}
var indexTile=0;var tempSizeTile=_zoomImagePropertyList[y*numX].getSize().getWidth();for(var j=remainVar-1;j>=0;j--){for(var i=0;i<numX;i++){var nPos=i + y*numX;if(pre_step<0){if((_zoomImagePropertyList[nPos].getSize().getWidth())>=tempSizeTile){tempSizeTile=(_zoomImagePropertyList[nPos].getSize().getWidth());indexTile=i;}
}
else
{if((_zoomImagePropertyList[nPos].getSize().getWidth())<tempSizeTile){tempSizeTile=(_zoomImagePropertyList[nPos].getSize().getWidth());indexTile=i;}
}
}
var ni=indexTile + y*numX;_zoomImagePropertyList[ni].getSize().setWidth(_zoomImagePropertyList[ni].getSize().getWidth()+ pre_step);for(var k=indexTile+1;k<numX;k++){var nk=k + y*numX;_zoomImagePropertyList[nk].getLeftTop().setX(_zoomImagePropertyList[nk].getLeftTop().getX()+ pre_step);}
}
for(y=1;y<numY;y++){for(var i=0;i<numX;i++){var newPosition=_zoomImagePropertyList[i].getLeftTop().getX();var newSize=_zoomImagePropertyList[i].getSize().getWidth();var nPos=i +y*numX;_zoomImagePropertyList[nPos].getLeftTop().setX(newPosition);_zoomImagePropertyList[nPos].getSize().setWidth(newSize);}
}
}
function zoomTilesVertical(variationY,numX,numY){var averageVar=Math.floor(Math.abs(variationY)/numY);var remainVar=Math.abs(variationY)% numY;var pre_step=1;if(variationY<0){pre_step=-1;}
var x=0;for(var i=0;i<numY;i++){var nPos=numX*i + x;_zoomImagePropertyList[nPos].getLeftTop().setY(_zoomImagePropertyList[nPos].getLeftTop().getY()+ pre_step*i*averageVar);_zoomImagePropertyList[nPos].getSize().setHeight(_zoomImagePropertyList[nPos].getSize().getHeight()+pre_step*averageVar);}
var indexTile=0;var tempSizeTile=(_zoomImagePropertyList[x].getSize().getHeight());for(var j=remainVar-1;j>=0;j--){for(var i=0;i<numY;i++){var nPos=numX*i + x;if(pre_step<0){if((_zoomImagePropertyList[nPos].getSize().getHeight())>=tempSizeTile){tempSizeTile=(_zoomImagePropertyList[nPos].getSize().getHeight());indexTile=i;}
}
else
{if((_zoomImagePropertyList[nPos].getSize().getHeight())<tempSizeTile){tempSizeTile=(_zoomImagePropertyList[nPos].getSize().getHeight());indexTile=i;}
}
}
var ni=indexTile*numX + x;_zoomImagePropertyList[ni].getSize().setHeight(_zoomImagePropertyList[ni].getSize().getHeight()+pre_step);for(var k=indexTile+1;k<numY;k++){ni=k*numX + x;_zoomImagePropertyList[ni].getLeftTop().setY(_zoomImagePropertyList[ni].getLeftTop().getY()+ pre_step);}
}
for(x=1;x<numX;x++){for(var i=0;i<numY;i++){var newPosition=_zoomImagePropertyList[numX*i].getLeftTop().getY();var newSize=_zoomImagePropertyList[numX*i].getSize().getHeight();var nPos=numX*i + x;_zoomImagePropertyList[nPos].getLeftTop().setY(newPosition);_zoomImagePropertyList[nPos].getSize().setHeight(newSize);}
}
}
function zoomTiles(variationX,variationY){zoomTilesHorizontal(variationX,_imageArea.getAreaSize().getWidth(),_imageArea.getAreaSize().getHeight());zoomTilesVertical(variationY,_imageArea.getAreaSize().getWidth(),_imageArea.getAreaSize().getHeight());}
function moveTiles(offsetX,offsetY){for(var i=0;i<_zoomImagePropertyList.length;i++){_zoomImagePropertyList[i].getLeftTop().setX(_zoomImagePropertyList[i].getLeftTop().getX()+ offsetX);_zoomImagePropertyList[i].getLeftTop().setY(_zoomImagePropertyList[i].getLeftTop().getY()+ offsetY);}
}
function zoomEnd(){for(var i=0;i<_zoomImagePropertyList.length;i++){_zoomImagePropertyList[i].setZooming(false);}
_nZoomStepNumber=_zoomSteps;window.clearTimeout(_zoomTimeout);_zoomTimeout=null;}
function doZoom(){if(_nZoomStepNumber>0){if(_nZoomStepNumber==1){var center=_imageArea.getZoomArea().getCenter();zoomWithOneStep(center,_zoomFactor);}
else
{zoomTiles(_nZoomSingleStepX,_nZoomSingleStepY,_imageArea.getAreaSize().getWidth(),_imageArea.getAreaSize().getHeight());moveTiles(_nMoveSingleStepX,_nMoveSingleStepY);_imageArea.placeImageList(_zoomImagePropertyList);}
_nZoomStepNumber --;_zoomTimeout=window.setTimeout(doZoom,0);}
else
{zoomEnd();}
}
function zoomWithSteps(newCenterPoint,zoomFactor){var ZoomCenterPixelX=newCenterPoint.getX();var ZoomCenterPixelY=newCenterPoint.getY();createPropertyList();createZoomContainer();_nZoomStepNumber=_zoomSteps;_zoomFactor=zoomFactor;_nZoomSingleStepX=Math.round(_imageArea.getImageSize().getWidth()*_imageArea.getAreaSize().getWidth()*(zoomFactor - 1)/_zoomSteps);_nZoomSingleStepY=Math.round(_imageArea.getImageSize().getHeight()*_imageArea.getAreaSize().getHeight()*(zoomFactor - 1)/_zoomSteps);var nVisibleCenterX=_imageArea.getSize().getWidth()/2 - _imageArea.getLeftTop().getPosition().getX();var nVisibleCenterY=_imageArea.getSize().getHeight()/2 - _imageArea.getLeftTop().getPosition().getY();var nNewZoomCenterX=(ZoomCenterPixelX - _imageArea.getLeftTop().getPosition().getX())*zoomFactor;var nNewZoomCenterY=(ZoomCenterPixelY - _imageArea.getLeftTop().getPosition().getY())*zoomFactor;_nMoveSingleStepX=Math.round((nVisibleCenterX - nNewZoomCenterX)/_zoomSteps);_nMoveSingleStepY=Math.round((nVisibleCenterY - nNewZoomCenterY)/_zoomSteps);doZoom();}
function zoomWithOneStep(newCenterPoint,zoomFactor){if(_tileset.getBoundsConstraintManager().isZoomOutOfBounds(zoomFactor)){return false;}
var tileSizeInMeter=_tileset.nTilesizeMeter/zoomFactor;var zoomCenter=_tileset.getCurrentMapType().getProjection().pixelToMeter(newCenterPoint);var newCenterPointinMeter=_tileset.getBoundsConstraintManager().adjustCenterForTileSize(tileSizeInMeter,zoomCenter);newCenterPoint=_tileset.getCurrentMapType().getProjection().meterToPixel(newCenterPointinMeter);var ZoomCenterPixelX=newCenterPoint.getX();var ZoomCenterPixelY=newCenterPoint.getY();var nSliderTileLeft=_imageArea.getLeftTop().getPosition().getX();var nSliderTileTop=_imageArea.getLeftTop().getPosition().getY();var nSliderTileWidth=_imageArea.getImageSize().getWidth();var nSliderTileHeight=_imageArea.getImageSize().getHeight();createPropertyList();_zoomFactor=zoomFactor;_nZoomSingleStepX=Math.round(nSliderTileWidth*_imageArea.getAreaSize().getWidth()*(_zoomFactor - 1));_nZoomSingleStepY=Math.round(nSliderTileHeight*_imageArea.getAreaSize().getHeight()*(_zoomFactor - 1));zoomTiles(_nZoomSingleStepX,_nZoomSingleStepY,_imageArea.getAreaSize().getWidth(),_imageArea.getAreaSize().getHeight());var nVisibleCenterX=_imageArea.getSize().getWidth()/2 - nSliderTileLeft;var nVisibleCenterY=_imageArea.getSize().getHeight()/2 - nSliderTileTop;var nNewZoomCenterX=0;var nOriginalX=ZoomCenterPixelX - nSliderTileLeft;var nCenterTileNumX=Math.floor(nOriginalX/_imageArea.getImageSize().getWidth());var nXinTile=nOriginalX - _imageArea.getImageSize().getWidth()*nCenterTileNumX;nCenterTileNumX=nCenterTileNumX + 1;if(nCenterTileNumX<2){nNewZoomCenterX=nXinTile/_imageArea.getImageSize().getWidth()*_zoomImagePropertyList[0].getSize().getWidth();}
else
{try{for(var nTileNum=0;nTileNum<=nCenterTileNumX - 2;nTileNum++){nNewZoomCenterX +=_zoomImagePropertyList[nTileNum].getSize().getWidth();}
nNewZoomCenterX +=nXinTile/_imageArea.getImageSize().getWidth()*_zoomImagePropertyList[nCenterTileNumX-1].getSize().getWidth();}catch(e){}
}
var nNewZoomCenterY=0;var nOriginalY=ZoomCenterPixelY - nSliderTileTop;var nCenterTileNumY=Math.floor(nOriginalY/_imageArea.getImageSize().getHeight());var nYinTile=nOriginalY - _imageArea.getImageSize().getHeight()*nCenterTileNumY;nCenterTileNumY=nCenterTileNumY + 1;if(nCenterTileNumY<2){nNewZoomCenterY=nYinTile/_imageArea.getImageSize().getHeight()*_zoomImagePropertyList[0].getSize().getHeight();}
else
{for(var nTileNumY=0;nTileNumY<=nCenterTileNumY - 2;nTileNumY++){nNewZoomCenterY=nNewZoomCenterY + _zoomImagePropertyList[nCenterTileNumX + _imageArea.getAreaSize().getWidth()*nTileNumY].getSize().getHeight();}
nNewZoomCenterY=nNewZoomCenterY + nYinTile/_imageArea.getImageSize().getHeight()*_zoomImagePropertyList[nCenterTileNumX-1 + _imageArea.getAreaSize().getWidth()*(nCenterTileNumY-1)].getSize().getHeight();}
_nMoveSingleStepX=Math.round((nVisibleCenterX - nNewZoomCenterX));_nMoveSingleStepY=Math.round((nVisibleCenterY - nNewZoomCenterY));moveTiles(_nMoveSingleStepX,_nMoveSingleStepY);if(_zoomImagePropertyList[0].getSize().getWidth()<_limitationOfTileSize){_imageArea.placeImageList(_zoomImagePropertyList);}
}
function buildZoomContainer(){var oldZoomImagesContainer=iw.search(tileset.getTilesContainer().parentNode,'divTileMapZoom')
if(oldZoomImagesContainer !=null){iw.remove(oldZoomImagesContainer);}
_zoomImagesContainer=iw.create('div');_zoomImagesContainer.id='divTileMapZoom';_zoomImagesContainer.style.zIndex=0;var n=iw.search(_tileset.getTilesContainer().parentNode,'divTileMap');iw.before(_tileset.getTilesContainer().parentNode,n,_zoomImagesContainer);}
function createZoomContainer(){for(var i=0;i<_imageArea.getImageList().length;i++){var imgZoomTile=_imageArea.getImageList()[i];iw.append(_zoomImagesContainer,imgZoomTile);}
}
function getZoomLimitation(){var mapType=_tileset.getMap().getCurrentMapType();var CurrentTilesizeMeter=_tileset.nTilesizeMeter;if(CurrentTilesizeMeter/_zoomFactor<iwconst.A_TILESIZE_METER[mapType.getMaxLevel()]){_zoomFactor=CurrentTilesizeMeter/iwconst.A_TILESIZE_METER[mapType.getMaxLevel()];return iwconst.A_TILESIZE_METER[mapType.getMaxLevel()];}
if(CurrentTilesizeMeter/_zoomFactor>iwconst.A_TILESIZE_METER[mapType.getMinLevel()]){_zoomFactor=CurrentTilesizeMeter/iwconst.A_TILESIZE_METER[mapType.getMinLevel()];return iwconst.A_TILESIZE_METER[mapType.getMinLevel()];}
}
_tileset=tileset;_map=_tileset.getMap();_imageArea=new IWTileSetArea(_tileset);buildZoomContainer();_zoomImageZIndex=1;if(navigator.appName=="Microsoft Internet Explorer"){_zoomSteps=8;_limitationOfTileSize=10000;}
else
{_zoomSteps=4;_limitationOfTileSize=4200;}
}
function IWImage(){var _pixelLeftTop=new IWPoint(0,0);;var _pixelSize=new IWSize(0,0);var _zIndex=1;var _zooming=true;this.getLeftTop=function(){return _pixelLeftTop;};this.getSize=function(){return _pixelSize;};this.setLeftTop=function(leftTop){_pixelLeftTop=leftTop;};this.setSize=function(size){_pixelSize=size;};this.isZooming=function(){return _zooming;};this.setZooming=function(zoom){_zooming=zoom;};this.setZIndex=function(zindex){_zIndex=zindex;}
this.getZIndex=function(){return _zIndex;}
}
function IWImageArea(imgAreaSize,imgSize){var _size=null;var _imageSize=null;var _imageList=null;var _leftTop=new IWPoint(0,0);this.getSize=function(){return _size;};this.getImageSize=function(){return _imageSize;};this.getImageList=function(){return _imageList;};this.setImageList=function(imgList){_imageList=imgList;};this.placeImageList=function(imgList){};this.getLeftTop=function(){return _leftTop;};this.setLeftTop=function(lefttop){_leftTop=lefttop;};_size=imgAreaSize;_imageSize=imgSize;_imageList=new Array(_size.getWidth()*_size.getHeight());}
function IWImageTile(){var _position=new IWPoint(0,0);var _index=new IWPoint(0,0);this.getPosition=function(){return _position;}
this.setPosition=function(position){_position=postion;}
this.getIndex=function(){return _index;}
this.setIndex=function(index){_index=index;}
}
function ZoomArea(startPoint,endPoint){var _size=new IWSize(0,0);var _center=new IWPoint(0,0);this.setSize=function(size){_size=size;};this.getSize=function(){return _size;};this.setCentral=function(center){_center=center;};this.getCenter=function(){return _center;};this.create=function(startPoint,endPoint){_center.setX((startPoint.getX()+ endPoint.getX())/2);_center.setY((startPoint.getY()+ endPoint.getY())/2);_size.setWidth(Math.abs(startPoint.getX()- endPoint.getX()));_size.setHeight(Math.abs(startPoint.getY()- endPoint.getY()));};if(typeof startPoint !="undefined"&&typeof endPoint !="undefined"){this.create(startPoint,endPoint);}
}
function IWTileSetArea(tileset){IWImageArea.call(this,tileset.getSize(),new IWSize(IWTile.SIZE,IWTile.SIZE));var _zoomArea=new ZoomArea();var _leftTop=new IWImageTile();var _imageList=null;var _areaSize=tileset.getTilesAxis();this.getZoomArea=function(){return _zoomArea;}
this.getAreaSize=function(){return _areaSize;};this.getLeftTop=function(){return _leftTop;};this.getImageList=function(){return _imageList;};this.setImageList=function(tilesetContainer){if(_imageList !=null){_imageList=null;}
_imageList=new Array();for(var row=0;row<this.getAreaSize().getHeight();row++){for(var column=0;column<this.getAreaSize().getWidth();column++){var imgTile=null;var imgTileId='imgTile_'+((this.getLeftTop().getIndex().getX()+ column)% this.getAreaSize().getWidth())+'_'+((this.getLeftTop().getIndex().getY()+ row)% this.getAreaSize().getHeight())
for(var pos=0;pos<tilesetContainer.childNodes.length;pos++){if(tilesetContainer.childNodes[pos].id==imgTileId){imgTile=tilesetContainer.childNodes[pos];break;}
}
var imgZoomTile=iw.create('img');imgZoomTile.id='z' + imgTile.id;imgZoomTile.src=imgTile.src;imgZoomTile.style.position='absolute';_imageList.push(imgZoomTile);}
}
}
this.placeImageList=function(zoomImageList){if(_imageList.length==0){return false;}
var i=0;for(var y=0;y<this.getAreaSize().getHeight();y++){for(var x=0;x<this.getAreaSize().getWidth();x++){var image=getImage(i);image.style.top=zoomImageList[i].getLeftTop().getY()+ 'px';image.style.left=zoomImageList[i].getLeftTop().getX()+ 'px';image.style.width=zoomImageList[i].getSize().getWidth()+ 'px';image.style.height=zoomImageList[i].getSize().getHeight()+ 'px';i++;}
}
}
this.setLeftTop=function(tilesetContainer){var nStartTilesX=0;var nStartTilesY=0;var nTilesX=0;var nTilesY=0;var aZoomTilesNodes=tilesetContainer.childNodes;var nLeftMin=parseInt(aZoomTilesNodes[0].style.left);nStartTilesX=(parseInt(aZoomTilesNodes[0].id.substring(aZoomTilesNodes[0].id.indexOf("_",1)+1,aZoomTilesNodes[0].id.lastIndexOf("_"))));var nTopMin=parseInt(aZoomTilesNodes[0].style.top);nStartTilesY=(parseInt(aZoomTilesNodes[0].id.substring(aZoomTilesNodes[0].id.lastIndexOf("_")+1)));var nRightMax=parseInt(aZoomTilesNodes[0].style.left);nTilesX=(parseInt(aZoomTilesNodes[0].id.substring(aZoomTilesNodes[0].id.indexOf("_",1)+1,aZoomTilesNodes[0].id.lastIndexOf("_"))));var nBottomMax=parseInt(aZoomTilesNodes[0].style.top);nTilesY=(parseInt(aZoomTilesNodes[0].id.substring(aZoomTilesNodes[0].id.lastIndexOf("_")+1)));for(var nTileNum=1;nTileNum<aZoomTilesNodes.length;nTileNum++){if(parseInt(aZoomTilesNodes[nTileNum].style.left)<nLeftMin){nLeftMin=parseInt(aZoomTilesNodes[nTileNum].style.left);nStartTilesX=(parseInt(aZoomTilesNodes[nTileNum].id.substring(aZoomTilesNodes[nTileNum].id.indexOf("_",1)+1,aZoomTilesNodes[nTileNum].id.lastIndexOf("_"))));}
if(parseInt(aZoomTilesNodes[nTileNum].style.top)<nTopMin){nTopMin=parseInt(aZoomTilesNodes[nTileNum].style.top);nStartTilesY=(parseInt(aZoomTilesNodes[nTileNum].id.substring(aZoomTilesNodes[nTileNum].id.lastIndexOf("_")+1)));}
if(parseInt(aZoomTilesNodes[nTileNum].style.left)>nRightMax){nRightMax=parseInt(aZoomTilesNodes[nTileNum].style.left);nTilesX=(parseInt(aZoomTilesNodes[nTileNum].id.substring(aZoomTilesNodes[nTileNum].id.indexOf("_",1)+1,aZoomTilesNodes[nTileNum].id.lastIndexOf("_"))));}
if(parseInt(aZoomTilesNodes[nTileNum].style.top)>nBottomMax){nBottomMax=parseInt(aZoomTilesNodes[nTileNum].style.top);nTilesY=(parseInt(aZoomTilesNodes[nTileNum].id.substring(aZoomTilesNodes[nTileNum].id.lastIndexOf("_")+1)));}
}
var nZoomTilesX1=nTilesX - nStartTilesX + 1;var nZoomTilesY1=nTilesY - nStartTilesY + 1;if(nZoomTilesX1<=0){nZoomTilesX1=nZoomTilesX1 + _areaSize.getWidth();}
if(nZoomTilesY1<=0){nZoomTilesY1=nZoomTilesY1 + _areaSize.getHeight();}
this.getAreaSize().setWidth(nZoomTilesX1);this.getAreaSize().setHeight(nZoomTilesY1);this.getLeftTop().getPosition().setX(nLeftMin);this.getLeftTop().getPosition().setY(nTopMin);this.getLeftTop().getIndex().setX(nStartTilesX);this.getLeftTop().getIndex().setY(nStartTilesY);aZoomTilesNodes=null;}
this.getMouseZoomArea=function(startZoomPosition,endZoomPosition){if(startZoomPosition.equals(endZoomPosition))return;var startPosition=new IWPoint(startZoomPosition.getX(),startZoomPosition.getY());var endPosition=new IWPoint(endZoomPosition.getX(),endZoomPosition.getY());var pixelX=Math.round((startPosition.getX()+ endPosition.getX())/2);var pixelY=Math.round((startPosition.getY()+ endPosition.getY())/2);this.getZoomArea().getCenter().setX(pixelX);this.getZoomArea().getCenter().setY(pixelY);var width=Math.abs(startPosition.getX()- endPosition.getX());var height=Math.abs(startPosition.getY()- endPosition.getY());this.getZoomArea().getSize().setWidth(width);this.getZoomArea().getSize().setHeight(height);var visibleRatio=this.getSize().getWidth()/this.getSize().getHeight();var zoomAreaRatio=this.getZoomArea().getSize().getWidth()/this.getZoomArea().getSize().getHeight();if(zoomAreaRatio<visibleRatio){var diffWidth=(this.getZoomArea().getSize().getHeight()*visibleRatio - this.getZoomArea().getSize().getWidth())/2;var signed=(startPosition.getX()- endPosition.getX())/Math.abs(startPosition.getX()- endPosition.getX())
startPosition.setX(Math.round(startPosition.getX()+ signed*diffWidth));endPosition.setX(Math.round(endPosition.getX()- signed*diffWidth));}
else
{var diffHeight=(this.getZoomArea().getSize().getWidth()/visibleRatio - this.getZoomArea().getSize().getHeight())/2;var signed=(startPosition.getY()- endPosition.getY())/Math.abs(startPosition.getY()- endPosition.getY())
startPosition.setY(Math.round(startPosition.getY()+ signed*diffHeight));endPosition.setY(Math.round(endPosition.getY()- signed*diffHeight));}
this.getZoomArea().getSize().setWidth(Math.abs(startPosition.getX()- endPosition.getX()));this.getZoomArea().getSize().setHeight(Math.abs(startPosition.getY()- endPosition.getY()));}
this.init=function(){var tilesetContainer=tileset.getTilesContainer();this.setLeftTop(tilesetContainer);this.setImageList(tilesetContainer);}
function addImage(imageObject){_imageList.push(imageObject);}
function getImage(index){return _imageList[index];}
}
function IWTileset(map){var self=this;var _map=map;var _visibleSectionCounter=Number.MAX_VALUE;var TILES_OUTSIDE=1;var N_MAX_REQUESTS=5;var N_MAX_LOADING_TILES=8;var _logger=log4javascript.getLogger('IWTileset');var _center=null;var _oldCenter=null;var _bFirstLoad=true;var _bIsZooming=false;var _nMovedX=0;var _nMovedY=0;var _nRemainderX=0;var _nRemainderY=0;var _iLoadingTiles=0;var _mapType=null;var _aQueueTiles=new Array();var _aQueueRequests=new Array();var _aQueueSection=new Array();var _bIsCorrectLabel=false;var _lastMousePosition=null;var _bMousePressed=false;var _bMovementNeedsReload=false;var _imgLabelsName="imgLabels2";var _slideSteps=[0.10,0.25,0.30,0.25,0.10];var _slideTimeout=null;var _boundsConstraintManager=null;var _cacheEnabled=false;var _firstLoad=true;var _divTileMap=null;var _divLabels=iw.search(map.getContainer(),'divLabels');var _divLabels2=iw.search(map.getContainer(),'divLabels2');var _imgCountClicks=null;var _tilesAxis=null;this.nTilesizeMeter=2000;this.oAsynchroneTransferObject=null;this.oZoomObject=null;var _tiles=null;this.fChangeToMap=null;IWEventManager.addListener(this,'afterVisibleSectionLoaded',function(event){self.showLabels(true);if(map.isZooming()){if(self.oZoomObject.hasZoomContainer()){self.oZoomObject.removeZoomContainer();}
self.zooming=false;_bIsZooming=false;_map.triggerAfterZoom();}
if(_firstLoad){_firstLoad=false;var event=new IWMapInitializedEvent();_map.triggerAfterInitialized(event);}
}
);function slide(offset,coord){var moveEvent=new IWMoveEvent();moveEvent.position=null;moveEvent.lastPosition=null;moveEvent.offset=offset;_map.triggerBeforeMove(moveEvent);window.clearTimeout(_slideTimeout);slideStep(offset,0,0,0,coord);}
function slideStep(offset,nStep,nRestX,nRestY,coord){_bIsCorrectLabel=false;if(nStep<_slideSteps.length){var nStepMovementX=_slideSteps[nStep]*offset.getX();var nStepMovementY=_slideSteps[nStep]*offset.getY();nStepMovementX +=nRestX;nRestX=nStepMovementX - Math.floor(nStepMovementX);nStepMovementX=Math.floor(nStepMovementX);nStepMovementY +=nRestY;nRestY=nStepMovementY - Math.floor(nStepMovementY);nStepMovementY=Math.floor(nStepMovementY);self.move(new IWPoint(nStepMovementX,nStepMovementY));_slideTimeout=window.setTimeout(function(){slideStep(offset,++nStep,nRestX,nRestY,coord);},40);}
else
{if(coord !=null){self.setCenter(coord,false);}
self.showLabels(true);var moveEvent=new IWMoveEvent();moveEvent.position=null;moveEvent.lastPosition=null;moveEvent.offset=offset;_map.triggerAfterMove(moveEvent);if(_bMovementNeedsReload){_logger.debug('No more tiles left in this view,reload needed');self.setCenter(_center,true,self.getCurrentMapType());_bMovementNeedsReload=false;}
}
}
this.getMap=function(){return _map;};this.getTilesContainer=function(){return _divTileMap;};this.getSize=function(){return _map.getOptions().getSize();};this.getCenter=function(){return _center;};this.setCenter=function(center,bRefresh,maptype){_center=center;_logger.debug('The new map center is ' + _center.toString());if(bRefresh){this.Hide();this.PlaceTiles();this.LoadWholeMap(maptype);}
};this.panTo=function(coord){if(this.oZoomObject.hasZoomContainer()){return false;}
var northEast=map.fromPixelToCoordinate(new IWPoint(0,0));if(coord.distanceFrom(_center)<northEast.distanceFrom(_center)){var pointCenter=map.fromCoordinateToPixel(_center);var pointCoord=map.fromCoordinateToPixel(coord);var offsetX=pointCenter.getX()- pointCoord.getX();var offsetY=pointCenter.getY()- pointCoord.getY();var point=new IWPoint(offsetX,offsetY);slide(point,coord);}
else
{var event=new IWMapCenteredEvent();event.coordinate=coord;event.lastCoordinate=_center;var offsetX=event.coordinate.getX()- event.lastCoordinate.getX();var offsetY=event.coordinate.getY()- event.lastCoordinate.getY();event.offset=new IWCoordinate(offsetX,offsetY);this.setCenter(coord,true);event.zoom=this.FindBestScalingLevel();event.lastZoom=event.zoom;map.triggerAfterCentered(event);}
};this.panBy=function(offset){if(this.oZoomObject.hasZoomContainer()){return;}
var offsetX=Math.abs(offset.getX());var offsetY=Math.abs(offset.getY())
if(offsetX>3000||offsetY>3000){alert("panBy " + offset + " is not allowed. The offset must not exceed a maximum of 3000 x 3000 pixel.");return;}
var width=_map.getOptions().getSize().getWidth();var height=_map.getOptions().getSize().getHeight();if(offsetX<=width*0.5&&offsetY<=height*0.5){slide(offset);}
else
{this.move(offset);this.showLabels(true);}
};this.getCurrentMapType=function(){return _mapType;};this.setMapType=function(mapType,bRefresh){var oldMapType=_mapType;_mapType=mapType;if(oldMapType !=null&&oldMapType.getName()!=_mapType.getName()){var event=new IWMapTypeChangedEvent();event.oldMapType=oldMapType;event.newMapType=_mapType;map.triggerBeforeMapTypeChanged(event);}
var iCurrentZoom=this.FindBestScalingLevel();if(iCurrentZoom>=mapType.getMinLevel()){this.setZoomLevel(mapType.getMinLevel(),false);}
else if(iCurrentZoom<=mapType.getMaxLevel()){this.setZoomLevel(mapType.getMaxLevel(),false);}
if(bRefresh){this.Hide();this.PlaceTiles();this.LoadWholeMap(oldMapType);}
};this.loadZoomMap=function(){if(!this.oZoomObject.isPrepareZoom()){return false;}
if(IWLockManager.lock(this.oZoomObject)){this.oZoomObject.resetPrepareZoom();this.oAsynchroneTransferObject.AbortAllRequests();var tileSizeInMeter=null;var newZoomLevel=null;if(_boundsConstraintManager.isZoomOutOfBounds(this.oZoomObject.getZoomFactor())){newZoomLevel=_boundsConstraintManager.getMinimumZoomLevel();tileSizeInMeter=iwconst.A_TILESIZE_METER[newZoomLevel];}
else
{tileSizeInMeter=this.nTilesizeMeter/this.oZoomObject.getZoomFactor();newZoomLevel=this.FindBestScalingLevel(tileSizeInMeter);}
var center=map.fromPixelToCoordinate(this.oZoomObject.getZoomCentral());var newCenter=_boundsConstraintManager.adjustCenterForTileSize(tileSizeInMeter,center);var zoomEvent=new IWZoomEvent();zoomEvent.newZoomLevel=newZoomLevel;zoomEvent.newCenter=newCenter;_map.triggerOnZoom(zoomEvent);this.setCenter(newCenter,false);this.nTilesizeMeter=tileSizeInMeter;this.createTiles();this.PlaceTiles();this.LoadWholeMap();}
}
this.endOpticalZoom=function(nScalingLevel){this.oZoomObject.resetPrepareZoom();if(IWLockManager.lock(this.oZoomObject)){var newCenter=_center;var maxZoom=_boundsConstraintManager.getMinimumZoomLevel();if(maxZoom<nScalingLevel){nScalingLevel=maxZoom;newCenter=_map.getBoundsConstraint().getCenter();}
else
{var tileSizeInMeter=iwconst.A_TILESIZE_METER[nScalingLevel];newCenter=_boundsConstraintManager.adjustCenterForTileSize(tileSizeInMeter,this.getCenter());}
var zoomEvent=new IWZoomEvent();zoomEvent.newZoomLevel=nScalingLevel;zoomEvent.newCenter=newCenter;_map.triggerOnZoom(zoomEvent);if(newCenter !=this.getCenter()){this.setCenter(newCenter,false);}
this.nTilesizeMeter=iwconst.A_TILESIZE_METER[nScalingLevel];this.oAsynchroneTransferObject.AbortAllRequests();this.showLabels(false);_aQueueTiles.length=0;this.createTiles();this.PlaceTiles();this.LoadWholeMap();}
return nScalingLevel;}
this.getZoomObject=function(){return this.oZoomObject;};this.createTiles=function(){var tilesX=Math.ceil(_map.getOptions().getSize().getWidth()/IWTile.SIZE)+ 2*TILES_OUTSIDE;var tilesY=Math.ceil(_map.getOptions().getSize().getHeight()/IWTile.SIZE)+ 2*TILES_OUTSIDE;_logger.info("ceating tiles:" + _map.getOptions().getSize());_tilesAxis=new IWSize(tilesX,tilesY);if(_divTileMap==null){_divTileMap=iw.create('div');_divTileMap.className='iwnoprint';iw.append(map.getClippingContainer(),_divTileMap);_divTileMap.id="divTileMap";with(_divTileMap.style){zIndex='1';position='absolute';left='0px';top='0px';}
}
_divTileMap.style.width=_map.getOptions().getSize().getWidth()+ 'px';_divTileMap.style.height=_map.getOptions().getSize().getHeight()+ 'px';if(_imgCountClicks==null){_imgCountClicks=iw.create('img');_imgCountClicks.id='imgCountClicks';_imgCountClicks.width='0px';_imgCountClicks.height='0px';_imgCountClicks.style.position='absolute';_imgCountClicks.style.top='0px';_imgCountClicks.style.left='0px';iw.append(map.getClippingContainer(),_imgCountClicks);}
if(_tiles !=null){for(var i=_tiles.length;i>0;i--){_tiles[(i-1)].destroy();}
}
_tiles=new Array(_tilesAxis.getWidth()*_tilesAxis.getHeight());for(var row=0;row<_tilesAxis.getHeight();row++){for(var column=0;column<_tilesAxis.getWidth();column++){var cellIndex=row*_tilesAxis.getWidth()+ column;var tile=new IWTile(this,new IWPoint(column,row));_tiles[cellIndex]=tile;tile.onloadListener=IWEventManager.addListener(tile,'onload',function(event){try{if(_iLoadingTiles>0)_iLoadingTiles--;var cellIndex=event.row*_tilesAxis.getWidth()+ event.column;var tile=_tiles[cellIndex];_logger.warn("tile:" + "," + _tiles[cellIndex]+ " cellIndex:" + cellIndex + " event:" + event + "," + event.row + "," + event.column);var nLeft=tile.getPosition().getX();var nRight=nLeft + IWTile.SIZE;var nTop=tile.getPosition().getY();var nBottom=nTop + IWTile.SIZE;var nMapWidth=self.getSize().getWidth();var nMapHeight=self.getSize().getHeight();}
catch(e){_logger.fatal("Tile onload:" + e);}
self.LoadNext();});}
}
};this.PlaceTiles=function(){var aTopLeftBorderMeter=new Array(2);aTopLeftBorderMeter[0]=_center.getX()- _tilesAxis.getWidth()/2*this.nTilesizeMeter;aTopLeftBorderMeter[1]=_center.getY()+ _tilesAxis.getHeight()/2*this.nTilesizeMeter;this.FindBestTilePosition(aTopLeftBorderMeter);var nMeterOffsetX=aTopLeftBorderMeter[0]
-(_center.getX()- _tilesAxis.getWidth()/2*this.nTilesizeMeter);var nTilesetStartX=(_map.getOptions().getSize().getWidth()/2)
-(_tilesAxis.getWidth()*IWTile.SIZE/2)
+ nMeterOffsetX/this.nTilesizeMeter*IWTile.SIZE;_logger.debug("nTilesetStartX:" + nTilesetStartX +" "+ nMeterOffsetX +"/"+ this.nTilesizeMeter +"*"+ IWTile.SIZE);var nMeterOffsetY=aTopLeftBorderMeter[1]
-(_center.getY()+ _tilesAxis.getHeight()/2*this.nTilesizeMeter);var nTilesetStartY=(_map.getOptions().getSize().getHeight()/2)
-(_tilesAxis.getHeight()*IWTile.SIZE/2)
- nMeterOffsetY/this.nTilesizeMeter*IWTile.SIZE;var nBorderTilesX=(_tilesAxis.getWidth()-(_map.getOptions().getSize().getWidth()/IWTile.SIZE))/2;var nBorderTilesY=(_tilesAxis.getHeight()-(_map.getOptions().getSize().getHeight()/IWTile.SIZE))/2;_nMovedX=nTilesetStartX + nBorderTilesX*IWTile.SIZE;_nMovedY=nTilesetStartY + nBorderTilesY*IWTile.SIZE;for(var row=0;row<_tilesAxis.getHeight();row++){for(var column=0;column<_tilesAxis.getWidth();column++){var nIndex=row*_tilesAxis.getWidth()+ column;var nPositionX=Math.floor(nTilesetStartX + column*IWTile.SIZE);var nPositionY=Math.floor(nTilesetStartY + row*IWTile.SIZE);var nTileCenterMeterX=aTopLeftBorderMeter[0]
+ column*this.nTilesizeMeter
+	0.5*this.nTilesizeMeter;var nTileCenterMeterY=aTopLeftBorderMeter[1]
- row*this.nTilesizeMeter
-	0.5*this.nTilesizeMeter;_tiles[nIndex].moveTo(new IWPoint(nPositionX,nPositionY));}
}
};this.SendPrepareTilesRequest=function(nTimestamp,sectionURL,bounds){var oRequest=new Object();oRequest.sURL=sectionURL;oRequest.nTimestamp=nTimestamp;oRequest.oSectionExtent=bounds;_aQueueRequests.push(oRequest);this.RequestNext();};var _t=null;this.RequestNext=function(){while(_aQueueRequests.length>0){var request=self.oAsynchroneTransferObject.getFreeRequest()
_logger.warn("Requesting next...");if(request !=null){_logger.warn("Free Request");var data=_aQueueRequests.pop();self.oAsynchroneTransferObject.PrepareTilesAsynchrone(request,data);}
else
{_logger.warn("no request object available");break;}
}
};this.LoadWholeMap=function(oldMapType){this.oAsynchroneTransferObject.AbortAllRequests();_oldCenter=_center;var xmlHttp=new IWXMLHttpRequest();if(xmlHttp==null){alert("Browser does not support HTTP Request")
return;}
var upperLeft=_tiles[this.FindTopRow()*_tilesAxis.getWidth()+ this.FindLeftCol()];var url=iwconst.LOCAL_APP_URL +'servlet/FrontController' +'?cmd=getMapTypes' +'&VNR=' + IWAccessFilter.getCNR()+'&PNR=' + IWAccessFilter.getPNR()+'&app=ms' +'&tileSize=' + IWTile.SIZE +'&mapcx='	+ _center.getX()+'&mapcy='	+ _center.getY()+'&mapdx='	+ _tilesAxis.getWidth()*this.nTilesizeMeter +'&mapdy='	+ _tilesAxis.getHeight()*this.nTilesizeMeter +'&width=' + _tilesAxis.getWidth()*IWTile.SIZE +'&height=' + _tilesAxis.getHeight()*IWTile.SIZE +'&visibleOffsetX=' +(-upperLeft.getPosition().getX())+'&visibleOffsetY=' +(-upperLeft.getPosition().getY())+'&maptype=' + _mapType.getName()+_mapType.getRequestParameters();try{xmlHttp.open('GET',iwconst.GLOBAL_GETMAPTYPES_URL + '?serverURL=' + escape(url),true);_logger.info('requesting maptypes');xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4){if(xmlHttp.status==200){var json=eval(xmlHttp.responseText);var projection=_mapType.getProjection();projection.initialize(json.MAPTYPES[_mapType.getName()].PROJECTION);if(oldMapType){var event=new IWMapTypeChangedEvent();event.newMapType=_mapType;event.oldMapType=oldMapType;_map.triggerAfterMapTypeChanged(event);}
this.LoadWholeMap2();}
else if(xmlHttp.status==401){alert(xmlHttp.statusText);}
else
{alert('Unable to request projections from server.');}
}
}.iwclosure(this);xmlHttp.send(null);}
catch(exception){alert('Exception:' + exception);}
};this.LoadWholeMap2=function(){this.showLabels(false);_aQueueTiles.length=0;_aQueueRequests.length=0;_aQueueSection.length=0;_iLoadingTiles=0;for(var row=0;row<_tilesAxis.getHeight();row++){for(var column=0;column<_tilesAxis.getWidth();column++){_tiles[column + row*_tilesAxis.getWidth()].setState(IWTile.STATE_INACTIVE);}
}
_logger.info("tileset loadWholeMap tilesizemeter:" + this.nTilesizeMeter + " " + map.getMapWidthInMeter());var nLeft=-1;var nMiddleX=-1;var nRight=-1;var nMinLeft=10000;var nMinMiddleX=10000;var nMinRight=10000;for(var nTileX=0;nTileX<_tilesAxis.getWidth();nTileX++){var nTilePosition=_tiles[nTileX].getPosition().getX();_logger.debug('tile Position:'+nTileX+":" + _tiles[nTileX].getPosition());if(nTilePosition + IWTile.SIZE<=0){if(nTilePosition<nMinLeft){nMinLeft=nTilePosition;nLeft=nTileX;}
}
else if(nTilePosition<_map.getOptions().getSize().getWidth()){if(nTilePosition<nMinMiddleX){nMinMiddleX=nTilePosition;nMiddleX=nTileX;}
}
else if(nTilePosition<nMinRight){nMinRight=nTilePosition;nRight=nTileX;}
}
var nTop=-1;var nMiddleY=-1;var nBottom=-1;var nMinTop=10000;var nMinMiddleY=10000;var nMinBottom=10000;for(var nTileY=0;nTileY<_tilesAxis.getHeight();nTileY++){var nTilePosition=_tiles[nTileY*_tilesAxis.getWidth()].getPosition().getY();if(nTilePosition + IWTile.SIZE<=0){if(nTilePosition<nMinTop){nMinTop=nTilePosition;nTop=nTileY;}
}
else if(nTilePosition<_map.getOptions().getSize().getHeight()){if(nTilePosition<nMinMiddleY){nMinMiddleY=nTilePosition;nMiddleY=nTileY;}
}
else if(nTilePosition<nMinBottom){nMinBottom=nTilePosition;nBottom=nTileY;}
}
if(nLeft==-1){nLeft=nMiddleX;}
if(nRight==-1){nRight=nLeft;}
if(nTop==-1){nTop=nMiddleY;}
if(nBottom==-1){nBottom=nTop;}
_logger.debug("Section starts X:" + nLeft + '/' + nMiddleX + '/' + nRight);_logger.debug("Section starts Y:" + nTop + '/' + nMiddleY + '/' + nBottom);var oSection=new Object();oSection.nTimestamp=new Date().getTime()+ Math.random();oSection.nLeft=nMiddleX;oSection.nTop=nMiddleY;_logger.debug("calculateIndexDistance(nRight,nMiddleX,_tilesAxis.getWidth()" + nRight + "," + nMiddleX + "," + _tilesAxis.getWidth());oSection.nTilesX=calculateIndexDistance(nRight,nMiddleX,_tilesAxis.getWidth());oSection.nTilesY=calculateIndexDistance(nBottom,nMiddleY,_tilesAxis.getHeight());oSection.sURL=createSectionURL(oSection.nLeft,oSection.nTop,oSection.nTilesX,oSection.nTilesY,oSection.nTimestamp,'c',true);_logger.debug('Visible section:' + oSection.nTilesX + ' x ' + oSection.nTilesY + ' tiles');this.LoadSection(oSection.nLeft,oSection.nTop,oSection.nTilesX,oSection.nTilesY,oSection.sURL,oSection.nTimestamp,oSection.nTilesX*oSection.nTilesY);if(_divTileMap){if(IWBrowserDetect.browser=="Safari"||IWBrowserDetect.browser=="Konqueror"){_divTileMap.style.visibility="visible";}
}
oSection=new Object();oSection.nTimestamp=new Date().getTime()+ Math.random();oSection.nLeft=nLeft;oSection.nTop=nTop;oSection.nTilesX=calculateIndexDistance(nMiddleX,nLeft,_tilesAxis.getWidth());oSection.nTilesY=_tilesAxis.getHeight();oSection.sURL=createSectionURL(oSection.nLeft,oSection.nTop,oSection.nTilesX,oSection.nTilesY,oSection.nTimestamp,'l',true);if(oSection.nTilesX>0&&oSection.nTilesY>0){_aQueueSection.push(oSection);}
oSection=new Object();oSection.nTimestamp=new Date().getTime()+ Math.random();oSection.nLeft=nRight;oSection.nTop=nTop;oSection.nTilesX=calculateIndexDistance(nLeft,nRight,_tilesAxis.getWidth());oSection.nTilesY=_tilesAxis.getHeight();oSection.sURL=createSectionURL(oSection.nLeft,oSection.nTop,oSection.nTilesX,oSection.nTilesY,oSection.nTimestamp,'r',true);if(oSection.nTilesX>0&&oSection.nTilesY>0){_aQueueSection.push(oSection);}
oSection=new Object();oSection.nTimestamp=new Date().getTime()+ Math.random();oSection.nLeft=nMiddleX;oSection.nTop=nTop;oSection.nTilesX=calculateIndexDistance(nRight,nMiddleX,_tilesAxis.getWidth());oSection.nTilesY=calculateIndexDistance(nMiddleY,nTop,_tilesAxis.getHeight());oSection.sURL=createSectionURL(oSection.nLeft,oSection.nTop,oSection.nTilesX,oSection.nTilesY,oSection.nTimestamp,'t',true);if(oSection.nTilesX>0&&oSection.nTilesY>0){_aQueueSection.push(oSection);}
oSection=new Object();oSection.nTimestamp=new Date().getTime()+ Math.random();oSection.nLeft=nMiddleX;oSection.nTop=nBottom;oSection.nTilesX=calculateIndexDistance(nRight,nMiddleX,_tilesAxis.getWidth());oSection.nTilesY=calculateIndexDistance(nTop,nBottom,_tilesAxis.getHeight());oSection.sURL=createSectionURL(oSection.nLeft,oSection.nTop,oSection.nTilesX,oSection.nTilesY,oSection.nTimestamp,'b',true);if(oSection.nTilesX>0&&oSection.nTilesY>0){_aQueueSection.push(oSection);}
};this.getTilesAxis=function(){return _tilesAxis;};this.getTiles=function(){return _tiles;};this.LoadSection=function(nLeft,nTop,nTilesX,nTilesY,url,nTimestamp,numOfVisibleTiles){var nLeftBorder=_tiles[nLeft].getPosition().getX();var nUpperBorder=_tiles[nTop*_tilesAxis.getWidth()].getPosition().getY();var nRightBorder=nLeftBorder + nTilesX*IWTile.SIZE;var nLowerBorder=nUpperBorder + nTilesY*IWTile.SIZE;var upperLeft=_mapType.getProjection().pixelToMeter(new IWPoint(nLeftBorder,nUpperBorder));var lowerRight=_mapType.getProjection().pixelToMeter(new IWPoint(nRightBorder,nLowerBorder));if(numOfVisibleTiles){_visibleSectionCounter=numOfVisibleTiles;}
for(var row=0;row<nTilesY;row++){for(var column=0;column<nTilesX;column++){var nTileRow=(row + nTop)% _tilesAxis.getHeight();var nTileCol=(column + nLeft)% _tilesAxis.getWidth();var cellIndex=nTileRow*_tilesAxis.getWidth()+ nTileCol;var sTilename=this.GetTileImageName(nTimestamp,row + 1,column + 1);var tile=_tiles[cellIndex];if(tile.getState()==IWTile.STATE_INACTIVE){tile.setSource(sTilename,nTimestamp);if(numOfVisibleTiles){tile.onloadListener=IWEventManager.addListener(tile,'onload',function(e){_visibleSectionCounter--;if(_visibleSectionCounter==0){IWEventManager.trigger(self,'afterVisibleSectionLoaded');}
IWEventManager.removeListener(this.onloadListener);}.iwclosure(tile)
);}
}
else
{_logger.error('tile state:' + tile.getState()+ ',should be INACTIVE');}
}
}
this.SendPrepareTilesRequest(nTimestamp,url,new IWBounds(upperLeft,lowerRight));};this.isVisibleSectionLoaded=function(){return(_visibleSectionCounter==0);};this.GetTileImageName=function(nTimestamp,nRow,nCol){return "Tile_" + _map.getSessionId()+ "_" + nTimestamp + "_" + nRow + "_" + nCol + '.' + _mapType.getTilesServerConfig().getImageType();};this.move=function(offset){if(this.oZoomObject.hasZoomContainer()||!_boundsConstraintManager.isMoveAllowed(offset)){return false;}
var offsetX=offset.getX();var offsetY=offset.getY();_nRemainderX +=offsetX - Math.floor(offsetX);_nRemainderY +=offsetY - Math.floor(offsetY);offsetX=Math.floor(offsetX);offsetY=Math.floor(offsetY);if(_nRemainderX>=1){_nRemainderX -=1;offsetX +=1;}
if(_nRemainderY>=1){_nRemainderY -=1;offsetY +=1;}
var size=_map.getOptions().getSize();var centerPixel=new IWPoint(size.getWidth()/2 - offsetX,size.getHeight()/2 - offsetY);var projection=_map.getCurrentMapType().getProjection();_center=projection.pixelToMeter(centerPixel);_nMovedX +=offsetX;_nMovedY +=offsetY;var nLeft=parseInt(_divLabels.style.left)+ offsetX;var nTop=parseInt(_divLabels.style.top)+ offsetY;var vis=_divLabels.style.display;if(IWBrowserDetect.browser !='Explorer'||IWBrowserDetect.version>=7){_divLabels.style.display='none';}
_divLabels.style.left=nLeft	+ 'px';_divLabels.style.top=nTop	+ 'px';_divLabels.style.display=vis;var nLeft2=parseInt(_divLabels2.style.left)+ offsetX;var nTop2=parseInt(_divLabels2.style.top)+ offsetY;vis=_divLabels2.style.display;if(IWBrowserDetect.browser !='Explorer'||IWBrowserDetect.version>=7){_divLabels2.style.display='none';}
_divLabels2.style.left=nLeft2	+ 'px';_divLabels2.style.top=nTop2 + 'px';_divLabels2.style.display=vis;vis=_divTileMap.style.display;if(IWBrowserDetect.browser !='Explorer'||IWBrowserDetect.version>=7){_divTileMap.style.display='none';}
var offset=new IWPoint(offsetX,offsetY);for(var nTile=0;nTile<_tilesAxis.getWidth()*_tilesAxis.getHeight();nTile++){_tiles[nTile].move(offset);}
_divTileMap.style.display=vis;var moveEvent=new IWMoveEvent();moveEvent.position=null;moveEvent.lastPosition=null;moveEvent.offset=new IWPoint(offsetX,offsetY);_map.triggerOnMove(moveEvent);var bDiscarded=false;if(_nMovedX>IWTile.SIZE){var nDiscard=Math.floor(_nMovedX/IWTile.SIZE);var nLeftBorder=_tiles[this.FindLeftCol()].getPosition().getX();var nUpperBorder=_tiles[this.FindTopRow()*_tilesAxis.getWidth()].getPosition().getY();var nRightBorder=nLeftBorder + nDiscard*IWTile.SIZE;var nLowerBorder=nUpperBorder + nDiscard*IWTile.SIZE;var upperLeft=_mapType.getProjection().pixelToMeter(new IWPoint(nLeftBorder,nUpperBorder));var lowerRight=_mapType.getProjection().pixelToMeter(new IWPoint(nRightBorder,nLowerBorder));var nSectionCenterX=nLeftBorder + nDiscard*IWTile.SIZE + nDiscard*IWTile.SIZE/2;var nSectionCenterY=nUpperBorder + _tilesAxis.getHeight()*IWTile.SIZE/2;var sectionCenter=_mapType.getProjection().pixelToMeter(new IWPoint(nSectionCenterX,nSectionCenterY));var sectionSize=new IWSize(nDiscard*this.nTilesizeMeter,_tilesAxis.getHeight()*this.nTilesizeMeter);if(projection.needsReload(sectionCenter,sectionSize)){_bMovementNeedsReload=true;}
else
{_bMovementNeedsReload=false;_logger.debug('Discarding ' + nDiscard + ' tiles on the right border');this.DiscardRightBorder(nDiscard,sectionCenter,new IWBounds(upperLeft,lowerRight));_nMovedX -=(IWTile.SIZE*nDiscard);bDiscarded=true;}
}
else if(_nMovedX<- IWTile.SIZE){var nDiscard=- Math.floor(_nMovedX/IWTile.SIZE);var nRightCol=(this.FindLeftCol()+ _tilesAxis.getWidth()- 1)% _tilesAxis.getWidth();var nRightBorder=_tiles[nRightCol].getPosition().getX()+ IWTile.SIZE;var nUpperBorder=_tiles[this.FindTopRow()*_tilesAxis.getWidth()].getPosition().getY();var nLeftBorder=nRightBorder - nDiscard*IWTile.SIZE;var nLowerBorder=nUpperBorder + nDiscard*IWTile.SIZE;var upperLeft=_mapType.getProjection().pixelToMeter(new IWPoint(nLeftBorder,nUpperBorder));var lowerRight=_mapType.getProjection().pixelToMeter(new IWPoint(nRightBorder,nLowerBorder));var nSectionCenterX=nRightBorder - nDiscard*IWTile.SIZE/2;var nSectionCenterY=nUpperBorder + _tilesAxis.getHeight()*IWTile.SIZE/2;var sectionCenter=_mapType.getProjection().pixelToMeter(new IWPoint(nSectionCenterX,nSectionCenterY));var sectionSize=new IWSize(nDiscard*this.nTilesizeMeter,_tilesAxis.getHeight()*this.nTilesizeMeter);if(projection.needsReload(sectionCenter,sectionSize)){_bMovementNeedsReload=true;}
else
{_bMovementNeedsReload=false;_logger.debug('Discarding ' + nDiscard + ' tiles on the left border');this.DiscardLeftBorder(nDiscard,sectionCenter,new IWBounds(upperLeft,lowerRight));_nMovedX +=(IWTile.SIZE*nDiscard);bDiscarded=true;}
}
else if(_nMovedY>IWTile.SIZE){var nDiscard=Math.floor(_nMovedY/IWTile.SIZE);var nLeftBorder=_tiles[this.FindLeftCol()].getPosition().getX();var nUpperBorder=_tiles[this.FindTopRow()*_tilesAxis.getWidth()].getPosition().getY();var nRightBorder=nLeftBorder + nDiscard*IWTile.SIZE;var nLowerBorder=nUpperBorder + nDiscard*IWTile.SIZE;var upperLeft=_mapType.getProjection().pixelToMeter(new IWPoint(nLeftBorder,nUpperBorder));var lowerRight=_mapType.getProjection().pixelToMeter(new IWPoint(nRightBorder,nLowerBorder));var nSectionCenterX=nLeftBorder + _tilesAxis.getWidth()*IWTile.SIZE/2;var nSectionCenterY=nUpperBorder + nDiscard*IWTile.SIZE/2;var sectionCenter=_mapType.getProjection().pixelToMeter(new IWPoint(nSectionCenterX,nSectionCenterY));var sectionSize=new IWSize(_tilesAxis.getWidth()*this.nTilesizeMeter,nDiscard*this.nTilesizeMeter);if(projection.needsReload(sectionCenter,sectionSize)){_bMovementNeedsReload=true;}
else
{_bMovementNeedsReload=false;_logger.debug('Discarding ' + nDiscard + ' tiles on the lower border');this.DiscardLowerBorder(nDiscard,sectionCenter,new IWBounds(upperLeft,lowerRight));_nMovedY -=(IWTile.SIZE*nDiscard);bDiscarded=true;}
}
else if(_nMovedY<- IWTile.SIZE){var nDiscard=- Math.floor(_nMovedY/IWTile.SIZE);var nBottomRow=(this.FindTopRow()+ _tilesAxis.getHeight()- 1)% _tilesAxis.getHeight();var nLeftBorder=_tiles[this.FindLeftCol()].getPosition().getX();var nLowerBorder=_tiles[nBottomRow*_tilesAxis.getWidth()].getPosition().getY()+ IWTile.SIZE;var nRightBorder=nLeftBorder + nDiscard*IWTile.SIZE;var nUpperBorder=nLowerBorder - nDiscard*IWTile.SIZE;var upperLeft=_mapType.getProjection().pixelToMeter(new IWPoint(nLeftBorder,nUpperBorder));var lowerRight=_mapType.getProjection().pixelToMeter(new IWPoint(nRightBorder,nLowerBorder));var nSectionCenterX=nLeftBorder + _tilesAxis.getWidth()*IWTile.SIZE/2;var nSectionCenterY=nLowerBorder - nDiscard*IWTile.SIZE/2;var sectionCenter=_mapType.getProjection().pixelToMeter(new IWPoint(nSectionCenterX,nSectionCenterY));var sectionSize=new IWSize(_tilesAxis.getWidth()*this.nTilesizeMeter,nDiscard*this.nTilesizeMeter);if(projection.needsReload(sectionCenter,sectionSize)){_bMovementNeedsReload=true;}
else
{_bMovementNeedsReload=false;_logger.debug('Discarding ' + nDiscard + ' tiles on the upper border');this.DiscardUpperBorder(nDiscard,sectionCenter,new IWBounds(upperLeft,lowerRight));_nMovedY +=(IWTile.SIZE*nDiscard);bDiscarded=true;}
}
if(bDiscarded){_aQueueTiles.length=0;this.BuildQueue();this.move(new IWPoint(0,0));}
};this.needsReload=function(){return _bMovementNeedsReload;};this.reload=function(){this.setCenter(_center,true);_bMovementNeedsReload=false;};this.DiscardLeftBorder=function(nBorderNum,sectionCenter,bounds){var nTimestamp=new Date().getTime()+ Math.random();for(var nBorder=1;nBorder<=nBorderNum;nBorder++){var nLeftCol=this.FindLeftCol();var nRightCol=(nLeftCol + _tilesAxis.getWidth()- 1)% _tilesAxis.getWidth();var nTopRow=this.FindTopRow();for(var nRow=0;nRow<_tilesAxis.getHeight();nRow++){var nTile=(nRow + nTopRow)% _tilesAxis.getHeight()*_tilesAxis.getWidth()+ nLeftCol;_tiles[nTile].setSource(this.GetTileImageName(nTimestamp,nRow + 1,nBorder),nTimestamp);_tiles[nTile].moveTo(new IWPoint(_tiles[nRightCol].getPosition().getX()+ IWTile.SIZE,_tiles[nTile].getPosition().getY()));}
}
var nRightCol=(this.FindLeftCol()+ _tilesAxis.getWidth()- 1)% _tilesAxis.getWidth();var nSectionLeftCol=(nRightCol - nBorderNum + 1)% _tilesAxis.getWidth();if(nSectionLeftCol<0)nSectionLeftCol +=_tilesAxis.getWidth();var url=createSectionURL(nSectionLeftCol,this.FindTopRow(),nBorderNum,_tilesAxis.getHeight(),nTimestamp,'r',false);this.SendPrepareTilesRequest(nTimestamp,url,bounds);};this.DiscardRightBorder=function(nBorderNum,sectionCenter,bounds){var nTimestamp=new Date().getTime()+ Math.random()+ 1;for(var nBorder=nBorderNum;nBorder>0;nBorder--){var nLeftCol=this.FindLeftCol();var nRightCol=(nLeftCol + _tilesAxis.getWidth()- 1)% _tilesAxis.getWidth();var nTopRow=this.FindTopRow();for(var nRow=0;nRow<_tilesAxis.getHeight();nRow++){var nTile=(nRow + nTopRow)% _tilesAxis.getHeight()*_tilesAxis.getWidth()+ nRightCol;_tiles[nTile].setSource(this.GetTileImageName(nTimestamp,nRow + 1,nBorder),nTimestamp);_tiles[nTile].moveTo(new IWPoint(_tiles[nLeftCol].getPosition().getX()- IWTile.SIZE,_tiles[nTile].getPosition().getY()));}
}
var url=createSectionURL(this.FindLeftCol(),this.FindTopRow(),nBorderNum,_tilesAxis.getHeight(),nTimestamp,'l',false);this.SendPrepareTilesRequest(nTimestamp,url,bounds);};this.DiscardLowerBorder=function(nBorderNum,sectionCenter,bounds){var nTimestamp=new Date().getTime()+ Math.random();for(var nBorder=nBorderNum;nBorder>0;nBorder--){var nLeftCol=this.FindLeftCol();var nTopRow=this.FindTopRow();var nBottomRow=(nTopRow + _tilesAxis.getHeight()- 1)% _tilesAxis.getHeight();for(var nCol=0;nCol<_tilesAxis.getWidth();nCol++){var nTile=nBottomRow*_tilesAxis.getWidth()+(nLeftCol + nCol)% _tilesAxis.getWidth();_tiles[nTile].setSource(this.GetTileImageName(nTimestamp,nBorder,nCol + 1),nTimestamp);_tiles[nTile].moveTo(new IWPoint(_tiles[nTile].getPosition().getX(),_tiles[nTopRow*_tilesAxis.getWidth()].getPosition().getY()- IWTile.SIZE));}
}
var url=createSectionURL(this.FindLeftCol(),this.FindTopRow(),_tilesAxis.getWidth(),nBorderNum,nTimestamp,'t',false);this.SendPrepareTilesRequest(nTimestamp,url,bounds);};this.DiscardUpperBorder=function(nBorderNum,sectionCenter,bounds){var nTimestamp=new Date().getTime()+ Math.random();for(var nBorder=1;nBorder<=nBorderNum;nBorder++){var nLeftCol=this.FindLeftCol();var nTopRow=this.FindTopRow();var nBottomRow=(nTopRow + _tilesAxis.getHeight()- 1)% _tilesAxis.getHeight();for(var nCol=0;nCol<_tilesAxis.getWidth();nCol++){var nTile=nTopRow*_tilesAxis.getWidth()+(nLeftCol + nCol)% _tilesAxis.getWidth();_tiles[nTile].setSource(this.GetTileImageName(nTimestamp,nBorder,nCol + 1),nTimestamp);_tiles[nTile].moveTo(new IWPoint(_tiles[nTile].getPosition().getX(),_tiles[nBottomRow*_tilesAxis.getWidth()].getPosition().getY()+ IWTile.SIZE));}
}
var nBottomRow=(this.FindTopRow()+ _tilesAxis.getHeight()- 1)% _tilesAxis.getHeight();var nSectionTopRow=(nBottomRow - nBorderNum + 1)% _tilesAxis.getHeight();if(nSectionTopRow<0)nSectionTopRow +=_tilesAxis.getHeight();var url=createSectionURL(this.FindLeftCol(),nSectionTopRow,_tilesAxis.getWidth(),nBorderNum,nTimestamp,'b',false);this.SendPrepareTilesRequest(nTimestamp,url,bounds);};this.FindTopRow=function(){var nMinRow=0;var nMinRowValue=_tiles[0].getPosition().getY();for(var nRow=0;nRow<_tilesAxis.getHeight();nRow++){var nIndex=nRow*_tilesAxis.getWidth();if(_tiles[nIndex].getPosition().getY()<nMinRowValue){nMinRow=nRow;nMinRowValue=_tiles[nIndex].getPosition().getY();}
}
return nMinRow;};this.FindLeftCol=function(){var nMinCol=0;var nMinColValue=_tiles[0].getPosition().getX();for(var nCol=0;nCol<_tilesAxis.getWidth();nCol++){var nIndex=nCol;if(_tiles[nIndex].getPosition().getX()<nMinColValue){nMinCol=nCol;nMinColValue=_tiles[nIndex].getPosition().getX();}
}
return nMinCol;};this.BuildQueue=function(nCenterX,nCenterY){_aQueueTiles.length=0;for(var nTile=0;nTile<_tiles.length;nTile++){if(_tiles[nTile].getState()==IWTile.STATE_QUEUED){_aQueueTiles.push(_tiles[nTile]);}
}
_aQueueTiles.sort(_tiles[0].compare);};this.LoadNextSection=function(){if(_aQueueSection.length>0){var oSection=_aQueueSection.pop();this.LoadSection(oSection.nLeft,oSection.nTop,oSection.nTilesX,oSection.nTilesY,oSection.sURL,oSection.nTimestamp);}
};this.LoadNext=function(){while(_aQueueTiles.length>0&&_iLoadingTiles<N_MAX_LOADING_TILES){var oTile=_aQueueTiles.pop();_logger.info('Loading tile ' + oTile.toString());oTile.load();_iLoadingTiles++;}
};this.AddTilesToQueue=function(nTimestamp){_logger.info('Adding tiles with timestamp ' + nTimestamp + ' to the queue;total tiles:' + _tiles.length);var nCounter=0;for(var nTile=0;nTile<_tiles.length;nTile++){if(_tiles[nTile].getState()==IWTile.STATE_WAITING){if(_tiles[nTile].getTimestamp()==nTimestamp){_tiles[nTile].setState(IWTile.STATE_QUEUED);nCounter++;}
}
}
_logger.debug('Added ' + nCounter + ' tiles to the queue');this.BuildQueue();this.LoadNext();};this.FindBestTilePosition=function(aPosition){var nPosX1=Math.floor(aPosition[0]/this.nTilesizeMeter)*this.nTilesizeMeter;var nPosX2=Math.ceil(aPosition[0]/this.nTilesizeMeter)*this.nTilesizeMeter;if(aPosition[0]- nPosX1<nPosX2 - aPosition[0])aPosition[0]=nPosX1;else
aPosition[0]=nPosX2;var nPosY1=Math.floor(aPosition[1]/this.nTilesizeMeter)*this.nTilesizeMeter;var nPosY2=Math.ceil(aPosition[1]/this.nTilesizeMeter)*this.nTilesizeMeter;if(aPosition[1]- nPosY1<nPosY2 - aPosition[1])aPosition[1]=nPosY1;else
aPosition[1]=nPosY2;};this.fromCoordinateToPixel=function(coord){if(_center==null){return new IWPoint(0,0);}
else
{var iLeftMeter=_center.getX()-(_map.getOptions().getSize().getWidth()/2)*(this.nTilesizeMeter/IWTile.SIZE);var iTopMeter=_center.getY()+(_map.getOptions().getSize().getHeight()/2)*(this.nTilesizeMeter/IWTile.SIZE);var iPixelX=(coord.getX()- iLeftMeter)/this.nTilesizeMeter*IWTile.SIZE;var iPixelY=(iTopMeter - coord.getY())/this.nTilesizeMeter*IWTile.SIZE;return new IWPoint(iPixelX,iPixelY);}
};this.fromPixelToCoordinate=function(point){if(_center==null){return new IWCoordinate(0,0);}
else
{var iLeftMeter=_center.getX()-(_map.getOptions().getSize().getWidth()/2)*(this.nTilesizeMeter/IWTile.SIZE);var iTopMeter=_center.getY()+(_map.getOptions().getSize().getHeight()/2)*(this.nTilesizeMeter/IWTile.SIZE);var iMeterX=iLeftMeter + point.getX()/IWTile.SIZE*this.nTilesizeMeter;var iMeterY=iTopMeter - point.getY()/IWTile.SIZE*this.nTilesizeMeter;return new IWCoordinate(iMeterX,iMeterY);}
};this.Hide=function(){for(var nTile=0;nTile<_tiles.length;nTile++){_tiles[nTile].hide();}
this.showLabels(false);};this.getBoundsZoomlevel=function(bounds){var zoomlevel=null;var n=iwconst.A_TILESIZE_METER.length-1;var width=bounds.getSouthEast().getX()- bounds.getNorthWest().getX();var height=bounds.getNorthWest().getY()- bounds.getSouthEast().getY();var tilesX=_map.getOptions().getSize().getWidth()/IWTile.SIZE;var tilesY=_map.getOptions().getSize().getHeight()/IWTile.SIZE;var meterPerTile=Math.max(width/tilesX,height/tilesY);if(meterPerTile<=iwconst.A_TILESIZE_METER[0]){zoomlevel=0;}
else if(meterPerTile>=iwconst.A_TILESIZE_METER[n]){zoomlevel=n;}
else
{for(var i=0;i<n;i++){if(meterPerTile>=iwconst.A_TILESIZE_METER[i]&&meterPerTile<=iwconst.A_TILESIZE_METER[i+1]){zoomlevel=i+1;break;}
}
}
_logger.info('getBoundsZoomlevel(' + bounds + ')meterPerTile:' + meterPerTile + ' returning zoomlevel ' + zoomlevel);return zoomlevel;};this.FindBestScalingLevel=function(tileSize){if(typeof tileSize=='undefined'){tileSize=this.nTilesizeMeter;}
var minZoomLevel=this.getCurrentMapType().getMaxLevel();var maxZoomLevel=this.getCurrentMapType().getMinLevel();var nBestFit=minZoomLevel;var nBestFitValue=Math.abs(iwconst.A_TILESIZE_METER[minZoomLevel]- tileSize);for(var i=minZoomLevel+1;i<maxZoomLevel+1;i++){var nDifference=Math.abs(iwconst.A_TILESIZE_METER[i]- tileSize);if(nDifference<nBestFitValue){nBestFit=i;nBestFitValue=nDifference;}
}
return nBestFit;};this.zoomIn=function(){var nScalingLevel=this.FindBestScalingLevel();return this.setZoomLevel(--nScalingLevel,true);};this.isZooming=function(){return IWLockManager.isLocked(this.oZoomObject);};this.zoomOut=function(){var nScalingLevel=this.FindBestScalingLevel();return this.setZoomLevel(++nScalingLevel,true);};this.setZoomLevel=function(zoomlevel,bRefresh){if(_boundsConstraintManager.getMinimumZoomLevel()>=zoomlevel&&zoomlevel>=_mapType.getMaxLevel()&&zoomlevel<=_mapType.getMinLevel())
{var nOldTilesizeMeter=this.nTilesizeMeter;this.nTilesizeMeter=iwconst.A_TILESIZE_METER[zoomlevel];if(bRefresh){if(IWLockManager.lock(this.oZoomObject)){_map.triggerBeforeZoom();this.oAsynchroneTransferObject.AbortAllRequests();this.showLabels(false);_aQueueTiles.length=0;var factor=nOldTilesizeMeter/iwconst.A_TILESIZE_METER[zoomlevel];var newCenter=_boundsConstraintManager.adjustCenterForTileSize(iwconst.A_TILESIZE_METER[zoomlevel],this.getCenter());var event=new IWZoomEvent();event.newZoomLevel=zoomlevel;event.newCenter=newCenter;_map.triggerOnZoom(event);this.oZoomObject.zoom(this.fromCoordinateToPixel(newCenter),factor);this.setCenter(newCenter,false);this.createTiles();this.PlaceTiles();this.LoadWholeMap();return true;}
}
}
return false;};this.getMeterExtent=function(){var nLeftBorder=_tiles[this.FindLeftCol()].getPosition().getX();var nUpperBorder=_tiles[this.FindTopRow()*_tilesAxis.getWidth()].getPosition().getY();var nRightBorder=nLeftBorder + _tilesAxis.getWidth()*IWTile.SIZE;var nLowerBorder=nUpperBorder + _tilesAxis.getHeight()*IWTile.SIZE;var upperLeft=_mapType.getProjection().pixelToMeter(new IWPoint(nLeftBorder,nUpperBorder));var lowerRight=_mapType.getProjection().pixelToMeter(new IWPoint(nRightBorder,nLowerBorder));return new IWBounds(upperLeft,lowerRight);};this.getMapWidthForTile=function(tileSize){return tileSize*(_map.getOptions().getSize().getWidth()/IWTile.SIZE);};this.getMapHeightForTile=function(tileSize){return tileSize*(_map.getOptions().getSize().getHeight()/IWTile.SIZE);};this.GetMeterWidth=function(){return this.nTilesizeMeter*(_map.getOptions().getSize().getWidth()/IWTile.SIZE);};this.GetMeterHeight=function(){return this.nTilesizeMeter*(_map.getOptions().getSize().getHeight()/IWTile.SIZE);};this.getBoundsConstraintManager=function(){return _boundsConstraintManager;}
this.SetChangeToMap=function(fCallback){this.fChangeToMap=fCallback;};function calculateIndexDistance(index1,index2,total){var distance=index1 - index2;if(distance<0){distance +=total;}
return distance;};function createSectionURL(nLeft,nTop,nTilesX,nTilesY,nTimestamp,sSectionCode,isWholeMap){var nLeftBorder=_tiles[nLeft].getPosition().getX();var nUpperBorder=_tiles[nTop*_tilesAxis.getWidth()].getPosition().getY();var nSectionCenterX=nLeftBorder + nTilesX*IWTile.SIZE/2;var nSectionCenterY=nUpperBorder + nTilesY*IWTile.SIZE/2;var centerSection=_mapType.getProjection().pixelToMeter(new IWPoint(nSectionCenterX,nSectionCenterY));var upperLeft=_tiles[self.FindTopRow()*_tilesAxis.getWidth()+ self.FindLeftCol()];var config=_mapType.getTilesServerConfig();var url='http://localhost:' + iwconst.WEBSERVER_PORT + '/' + config.getBaseDir()+ '/' +'servlet/FrontController' +'?cmd=prepareTiles' +'&app=ms' +'&VNR=' + IWAccessFilter.getCNR()+'&PNR=' + IWAccessFilter.getPNR()+'&code=' + sSectionCode +'&mapcx=' + centerSection.getX()+'&mapcy=' + centerSection.getY()+'&oldcx='	+ _oldCenter.getX()+'&oldcy='	+ _oldCenter.getY()+'&mapdx='	+ nTilesX*self.nTilesizeMeter +'&mapdy='	+ nTilesY*self.nTilesizeMeter +'&width='	+ nTilesX*IWTile.SIZE +'&height=' + nTilesY*IWTile.SIZE +'&tileSize=' + IWTile.SIZE +'&tilex='	+ IWTile.SIZE +'&tiley='	+ IWTile.SIZE +'&tilenx=' + nTilesX +'&tileny=' + nTilesY +'&visibleOffsetX=' +(-upperLeft.getPosition().getX())+'&visibleOffsetY=' +(-upperLeft.getPosition().getY())+'&tileprefix=Tile_' + _map.getSessionId()+ '_' + nTimestamp +IWRequestFormatter.getLayerParameter(_map.getZoom(),_map.getLayers())+'&pictureformat=' + _mapType.getTilesServerConfig().getImageType()+'&maptype=' + _mapType.getName()+_mapType.getRequestParameters()+szExtraUrlParm +'&load=' +(isWholeMap ? 'map':'strip');return _mapType.getProxyURL()+ '?serverURL=' + escape(url);};this.mouseZoom=function(startMousePosition,endMousePosition){if(IWLockManager.lock(this.oZoomObject)){var x1=startMousePosition.getX();var y1=startMousePosition.getY();var x2=endMousePosition.getX();var y2=endMousePosition.getY();if(Math.abs(x1 - x2)<5&&Math.abs(y1 - y2)<5){IWLockManager.unlock(this.oZoomObject)
return false;}
var myImgName="";if(_imgLabelsName=="imgLabels2")myImgName="imgLabels";else
myImgName="imgLabels2";var myImg=iw.search(map.getContainer(),myImgName);myImg.style.visibility="hidden";this.oAsynchroneTransferObject.AbortAllRequests();this.showLabels(false);_map.triggerBeforeZoom();var zoomArea=new ZoomArea(startMousePosition,endMousePosition);var zoomFactor=1;if(zoomArea.getSize().getWidth()>zoomArea.getSize().getHeight()){if(startMousePosition.getX()<endMousePosition.getX()){zoomFactor=this.getSize().getWidth()/zoomArea.getSize().getWidth();}
else
{zoomFactor=zoomArea.getSize().getWidth()/this.getSize().getWidth();}
}
else
{if(startMousePosition.getX()<endMousePosition.getX()){zoomFactor=this.getSize().getHeight()/zoomArea.getSize().getHeight();}
else
{zoomFactor=zoomArea.getSize().getHeight()/this.getSize().getHeight();}
}
var oldTilesizeMeter=this.nTilesizeMeter;this.nTilesizeMeter=this.nTilesizeMeter/zoomFactor;var newZoomLevel=this.FindBestScalingLevel();var maxZoom=_boundsConstraintManager.getMinimumZoomLevel();if(newZoomLevel>=maxZoom){newZoomLevel=maxZoom;}
this.nTilesizeMeter=iwconst.A_TILESIZE_METER[newZoomLevel];zoomFactor=oldTilesizeMeter/this.nTilesizeMeter;var center=_mapType.getProjection().pixelToMeter(zoomArea.getCenter());center=_boundsConstraintManager.adjustCenter(center);centerPixel=_mapType.getProjection().meterToPixel(center);var zoomEvent=new IWZoomEvent()
zoomEvent.newZoomLevel=newZoomLevel;zoomEvent.newCenter=center;_map.triggerOnZoom(zoomEvent);this.oZoomObject.zoom(centerPixel,zoomFactor);this.createTiles();this.setCenter(center,true);}
}
var labelSelect=0;var myDivLabels="divLabels2";var switchLabelLock=false;var anotherEntry=0;var onloadSet=false;var bLoadingLabels=false;var forceHideLabels=false;var oTimeoutLabels=null;function switchLabelLayer(){if(switchLabelLock)return;if(labelSelect==0){labelSelect=1;_imgLabelsName="imgLabels2";myDivLabels="divLabels2";}
else{labelSelect=0;_imgLabelsName="imgLabels";myDivLabels="divLabels";}
}
function getFrontLabelDiv(){if(labelSelect==0){return _divLabels;}
return _divLabels2;}
function getBackLabelDiv(){if(labelSelect==0){return _divLabels2;}
return _divLabels;}
function showBackLabelLayer(){var back=getBackLabelDiv();var front=getFrontLabelDiv();front.style.display="none";back.style.display="block";}
function showFrontLabelLayer(){var back=getBackLabelDiv();var front=getFrontLabelDiv();back.style.display="none";front.style.display="block";}
function hideLabelLayer(){var back=getBackLabelDiv();var front=getFrontLabelDiv();back.style.display="none";front.style.display="none";}
this.createZoomDIV=function(nX,nY){this.showLabels(false);}
this.showLabels=function(bVisible){if(forceHideLabels)bVisible=false;if(IWBrowserDetect.browser=="Safari"||IWBrowserDetect.browser=="Konqueror"){var img=iw.search(map.getContainer(),_imgLabelsName);img.onload=null;img.src=iwconst.GLOBAL_APP_URL + "img/symbols/blank.gif";}
if(bVisible){if(switchLabelLock)anotherEntry++;switchLabelLayer();switchLabelLock=true;showBackLabelLayer();var nMapWidthMeter=self.nTilesizeMeter*_map.getOptions().getSize().getWidth()/IWTile.SIZE;var nMapHeightMeter=self.nTilesizeMeter*_map.getOptions().getSize().getHeight()/IWTile.SIZE;countClick();var img=iw.search(map.getContainer(),_imgLabelsName);img.onload=iwRenderLabelsVisible;if(switchLabelLock&&onloadSet)anotherEntry--;onloadSet=true;if(IWBrowserDetect.browser=="Safari"||IWBrowserDetect.browser=="Konqueror"){iwRenderDivLabelsVisible();}
if(_mapType.hasLabels()){_bIsCorrectLabel=true;var config=_mapType.getLabelsServerConfig();

var url=config.getBaseDir()+'/servlet/FrontController' +'?cmd=getLabel' +'&VNR=' + IWAccessFilter.getCNR()+'&PNR=' + IWAccessFilter.getPNR()+'&app=ms' +'&mapcx=' + _center.getX()+'&mapcy=' + _center.getY()+'&mapdx=' + nMapWidthMeter +'&mapdy=' + nMapHeightMeter +'&width=' + _map.getOptions().getSize().getWidth()+'&height=' + _map.getOptions().getSize().getHeight()+'&projc=lcc_europe' +IWRequestFormatter.getLayerParameter(_map.getZoom(),_map.getLayers())+'&maptype=' + _mapType.getName()+'&randomKey=' + iw.random(0,1000000000);szExtraUrlParm;var img=iw.search(map.getContainer(),_imgLabelsName);


if(url.length<1900){
 img.src=config.getNextAlias()+url;
}
else
{
  var xmlHttp=new IWXMLHttpRequest();
  xmlHttp.open('POST',iwconst.GLOBAL_PROXY_URL + '?serverURL=' + escape('http://localhost/' + url),true);xmlHttp.onreadystatechange=function(){if(xmlHttp.readyState==4){if(xmlHttp.statusText=='OK'){if(xmlHttp.responseText.length>0){img.src=xmlHttp.responseText;}
else
{alert('GetLabel post request failed:Response text is empty.');}
}
else if(xmlHttp.status==401){alert(xmlHttp.statusText);}
}
else
{alert('GetLabel post request failed:' + xmlHttp.statusText);}
};xmlHttp.send(null);}
bLoadingLabels=true;}
else
{var img=iw.search(map.getContainer(),_imgLabelsName);img.onload=null;img.style.visibility="hidden";}
}
else
{if(oTimeoutLabels){window.clearTimeout(oTimeoutLabels);oTimeoutLabels=null;}
var img=iw.search(map.getContainer(),_imgLabelsName);img.onload=null;img.style.visibility="hidden";hideLabelLayer();}
};function iwRenderLabelsVisible(){onloadSet=false;if(anotherEntry>0){anotherEntry--;switchLabelLock=false;return;}
var imgLabels=iw.search(map.getContainer(),_imgLabelsName);if(_bIsCorrectLabel){imgLabels.style.visibility='visible';bLoadingLabels=false;self.RequestNext();self.LoadNextSection();var divLabels=iw.search(map.getContainer(),myDivLabels);divLabels.style.left='0px';divLabels.style.top='0px';showFrontLabelLayer();switchLabelLock=false;}
}
function iwRenderDivLabelsVisible(){var divLabels=iw.search(map.getContainer(),myDivLabels);if(divLabels)divLabels.style.visibility="visible";divLabels.style.left='0px';divLabels.style.top='0px';if(anotherEntry>0){anotherEntry=0;switchLabelLock=false;return;}
showFrontLabelLayer();switchLabelLock=false;self.RequestNext();self.LoadNextSection();var imgLabels=iw.search(map.getContainer(),_imgLabelsName);imgLabels.style.visibility="visible";}
this.Print=function(){var nPaperWidthA4=0;var nPrintableWidth=0;var nPrintableHeight=0;if(navigator.appName=="Microsoft Internet Explorer"){nPaperWidthA4=610;}
else
{nPaperWidthA4=1000;}
if(_map.getOptions().getSize().getWidth()>nPaperWidthA4){nPrintableWidth=nPaperWidthA4;nPrintableHeight=_map.getOptions().getSize().getHeight()/_map.getOptions().getSize().getWidth()*nPrintableWidth;}
else
{nPrintableWidth=_map.getOptions().getSize().getWidth();nPrintableHeight=_map.getOptions().getSize().getHeight();}
var printWinWidth=nPrintableWidth + 30;var sStyle="left=100,top=50,width=" + printWinWidth + ",height=750,resizable=yes,status=yes,scrollbars=yes";var PrintWindow=window.open("PrintMap.htm","iwPrintWindow",sStyle);var oThis=this;window.setTimeout(function(){oThis.PrintInit(PrintWindow,nPrintableWidth,nPrintableHeight);},500);return false;};this.PrintInit=function(PrintWindow,PrintableWidth,PrintableHeight){var nPrintableWidth=PrintableWidth;var nPrintableHeight=PrintableHeight;var PointList=new Array();for(var nIndex=0;nIndex<nShowAddress;nIndex++){var divAddress=document.getElementById('Address' + nIndex);if(divAddress)PointList.push(divAddress.cloneNode(true));}
for(var nIndex=0;nIndex<nPOIMax;nIndex++){var divPOI=document.getElementById('divPOI' + nIndex);if(divPOI)PointList.push(divPOI.cloneNode(true));}
var divScalar=document.getElementById('divScalar');if(divScalar)PointList.push(divScalar.cloneNode(true));var divMapArea=PrintWindow.document.getElementById('divMapArea');var divContentArea=PrintWindow.document.getElementById('divContentArea');var divCopyrightArea=PrintWindow.document.getElementById('divCopyrightArea');if(divMapArea&&divContentArea){countClick();divMapArea.style.width=nPrintableWidth;divMapArea.style.height=nPrintableHeight;var sURL=iwconst.GLOBAL_APP_URL
+	'servlet/FrontController?cmd=getPrintMap'
+ '&app=ms'
+ "&VNR=" + IWAccessFilter.getCNR()
+ "&PNR=" + IWAccessFilter.getPNR()
+	'&layermaske=maske_gs'
+ '&mapcx=' + _center.getX()
+ '&mapcy=' + _center.getY()
+ "&oldcx="	+ _oldCenter.getX()
+ "&oldcy="	+ _oldCenter.getY()
+ '&mapdx=' + this.GetMeterWidth()
+ '&mapdy=' + this.GetMeterHeight()
+ '&width=' + nPrintableWidth
+ '&height=' + nPrintableHeight
+ '&projc=lcc_europe'
+ IWRequestFormatter.getLayerParameter(_map.getZoom(),_map.getLayers())
+ '&maptype=' + _mapType.getName()
+ szExtraUrlParm
+ _mapType.getRequestParameters();divMapArea.innerHTML +='<img width=' +nPrintableWidth+ ' height=' +nPrintableHeight+ ' onload="window.print()" src="' + sURL + '"/>';if(navigator.appName=="Microsoft Internet Explorer"){var sDiv='';for(var nIndex=0;nIndex<PointList.length;nIndex++){var oDivPoint=PointList[nIndex];var sDivPointID=oDivPoint.id;if(sDivPointID=="divScalar"){sDiv +='<div id=' + sDivPointID
+ ' style="'
+ ' position:' + oDivPoint.style.position +';'
+ ' left:' + parseInt(oDivPoint.style.left)+'px;'
+ ' top:' +(nPrintableHeight - 34)+'px;'
+ ' z-index:' + oDivPoint.style.zIndex +';'
+ ' width:' + oDivPoint.style.width +';'
+ ' height:' + oDivPoint.style.height +';'
+ '"'
+ '>'
+ oDivPoint.innerHTML
+ '</div>';}
else
{sDiv +='<div id=' + sDivPointID
+ ' style="'
+ ' overflow:' + oDivPoint.style.overflow +';'
+ ' font-size:' + oDivPoint.style.fontSize +';'
+ ' position:' + oDivPoint.style.position +';'
+ ' left:' + parseInt(oDivPoint.style.left)*nPrintableWidth/_map.getOptions().getSize().getWidth()+'px;'
+ ' top:' + parseInt(oDivPoint.style.top)*nPrintableWidth/_map.getOptions().getSize().getWidth()+'px;'
+ ' z-index:' + oDivPoint.style.zIndex +';'
+ ' visibility:' + oDivPoint.style.visibility +';'
+ '"'
+ '>'
+ oDivPoint.innerHTML
+ '</div>';}
}
divMapArea.innerHTML +=sDiv;}
else
{for(var nIndex=0;nIndex<PointList.length;nIndex++){var oDivPoint=PointList[nIndex];oDivPoint.style.left=parseInt(oDivPoint.style.left)*nPrintableWidth/_map.getOptions().getSize().getWidth();oDivPoint.style.top=parseInt(oDivPoint.style.top)*nPrintableWidth/_map.getOptions().getSize().getWidth();divMapArea.appendChild(oDivPoint);}
}
var divSpecialContent=document.getElementById('divSpecialContent');if(routingControl.getRouteSegments()){var routeTable=document.getElementById("routeTable");var sRouteTable="";sRouteTable +='<table id=' + routeTable.id
+ ' style="'
+ ' border:' + routeTable.style.border +';'
+ '"'
+ '>'
+ routeTable.innerHTML
+ '</table>';divContentArea.innerHTML=sRouteTable;}
else
{if(divSpecialContent){divContentArea.innerHTML=divSpecialContent.innerHTML;}
}
if(divCopyrightArea){var copyrightControl=document.getElementById("IWCopyrightControl");var divCopyright=copyrightControl.lastChild;if(divCopyright)divCopyrightArea.innerHTML=divCopyright.innerHTML;}
}
else
{var oThis=this;window.setTimeout(function(){oThis.PrintInit(PrintWindow,nPrintableWidth,nPrintableHeight);},500);}
};this.resize=function(){var newSize=_map.getOptions().getSize();var newWidth=newSize.getWidth();var newHeight=newSize.getHeight();this.Hide();this.showLabels(false);this.oAsynchroneTransferObject.AbortAllRequests();with(_divCSS.style){width=newWidth + 'px';height=newHeight + 'px';}
with(_divClipping.style){clip="rect(0px," + newWidth + "px," + newHeight + "px,0px)";width=newWidth + 'px';height=newHeight + 'px';}
with(_divLabels.style){width=newWidth + 'px';height=newHeight + 'px';}
with(_divLabels2.style){width=newWidth + 'px';height=newHeight + 'px';}
with(_imgLabels.style){width=newWidth + 'px';height=newHeight + 'px';}
with(_imgLabels2.style){width=newWidth + 'px';height=newHeight + 'px';}
with(_divZoomingAndDragging.style){width=newWidth + 'px';height=newHeight + 'px';}
with(_divOverlaysAndControls.style){width=newWidth + 'px';height=newHeight + 'px';}
with(_imgZoomingAndDragging.style){width=newWidth + 'px';height=newHeight + 'px';}
this.createTiles();alert("resize 1");this.oZoomObject=new IWZoom(this);alert("resize 2");this.PlaceTiles();this.LoadWholeMap();}
this.toString=function(){return 'IWTileset';};function countClick(){if(_imgCountClicks){var sURL=iwconst.GLOBAL_APP_URL
+ "servlet/FrontController"
+ "?cmd=writeAccessStatistics"
+ "&VNR=" + IWAccessFilter.getCNR()
+ "&PNR=" + IWAccessFilter.getPNR()
+ "&app=ms"
+ "&mapcx=" + _center.getX()
+ "&mapcy=" + _center.getY()
+ "&mapdx=" + self.GetMeterWidth()
+ "&mapdy=" + self.GetMeterHeight()
+ "&width=" + _map.getOptions().getSize().getWidth()
+ "&height=" + _map.getOptions().getSize().getHeight()
+ "&projc=lcc_europe"
+ "&type=" + _mapType.getName()
+ "&overview=0"
+ "&session=" + map.getSessionId()
+ szExtraUrlParm
+ _mapType.getRequestParameters();_imgCountClicks.src=sURL;}
}
this.isCacheEnabled=function(){return _cacheEnabled;};this.setCacheEnabled=function(enabled){_cacheEnabled=enabled;};_boundsConstraintManager=new IWBoundsConstraintManager(this);var mapType=_map.getOptions().getMapTypeByName("roadmap");this.setMapType(mapType,false);this.oAsynchroneTransferObject=new IWAsynchroneTransferObject(this,N_MAX_REQUESTS);IWEventManager.addListener(this.oAsynchroneTransferObject,'aftermaptypeavailabilitychanged',function(e){_map.triggerAfterMapTypeAvailabilityChanged(e);self.setCacheEnabled(e.cache);}
);this.createTiles();this.oZoomObject=new IWZoom(this);IWEventManager.addListener(map,'afterzoom',function(e){IWLockManager.unlock(self.oZoomObject);}
);}
var commonCSS=document.createElement('link');document.getElementsByTagName('head')[0].appendChild(commonCSS);commonCSS.title='standard';commonCSS.type='text/css';commonCSS.rel='stylesheet';commonCSS.href=iwconst.GLOBAL_APP_URL + 'css/common.css';var screenCSS=document.createElement('link');document.getElementsByTagName('head')[0].appendChild(screenCSS);screenCSS.title='standard';screenCSS.media='screen';screenCSS.type='text/css';screenCSS.rel='stylesheet';screenCSS.href=iwconst.GLOBAL_APP_URL + 'css/screen.css';var printCSS=document.createElement('link');document.getElementsByTagName('head')[0].appendChild(printCSS);printCSS.title='standard';printCSS.media='print';printCSS.type='text/css';printCSS.rel='stylesheet';printCSS.href=iwconst.GLOBAL_APP_URL + 'css/print.css';function correctPNG(img){/*@cc_on @*//*@if(@_jscript_version>=5)if(navigator.appVersion.indexOf("MSIE 7.0")==-1){var imgName=img.src.toUpperCase();if(imgName.substring(imgName.length - 3,imgName.length)=="PNG"){img.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + img.src + ",sizingmethod=scale)";img.src=iwconst.GLOBAL_APP_URL + 'img/symbols/blank.gif';}
}
@end @*/}
function ignorePOIRequest(event){if(!oTileset.getCurrentMapType().hasLabels())return true;if(oTileset.zooming)return true;if(!oTileset.getSize().containsPoint(event.position))return true;if(!oTileset.bCompletelyVisible)return true;return false;}
var nShowAddress=0;var nAddressXMeter=new Array();var nAddressYMeter=new Array();var bControlsBlocked=false;var szExtraUrlParm="";var szOverlayGroups="";var mapSlider=null;function noPropagation(event){if(!event)event=window.event;event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;}

