/* Messtool */
function WlwMeasuringControl(map){
	IWControl.call(this,map,'WlwMeasuringControl');
	var _translations=new Object();
	_translations['de']=new Object();
	_translations['en']=new Object();
	_translations['fr']=new Object();
	_translations['nl']=new Object();
	_translations['de']['TITLE']='Messen';
	_translations['de']['RESET']='Zur\u00FCcksetzen';
	_translations['en']['TITLE']='Measuring';
	_translations['en']['RESET']='Reset';
	_translations['fr']['TITLE']='Mesurer';
	_translations['fr']['RESET']='Reculer';
	_translations['nl']['TITLE']='Meten';
	_translations['nl']['RESET']='Herstellen';
	var _language=map.getOptions().getLanguage();
	if(!_translations[_language])_language='en';
	this.activate=function(){
		if(!_isActive){
			var parent=_container.parentNode;
			parent.insertBefore(_measureDiv,parent.lastChild.nextSibling);
			this.writeStatistic();
			if(_infoPanel.getContainer().parentNode==null){
				_infoPanel.getContainer().style.position="absolute";
				_infoPanel.getContainer().style.left='20px';
				_infoPanel.getContainer().style.top='20px';
				_infoPanel.getContainer().style.zIndex='150';
				parent.appendChild(_infoPanel.getContainer());
			}
			_infoPanel.open();
			_isActive=true;
		}
	};
	this.deactivate=function(){if(_isActive){_infoPanel.close();}};
	this.getRenderer=function(){return _renderer;};
	this.getInfoWindow=function(){return _infoPanel;};
	this.setLastSegment=function(segment){_lastSegment=segment;};
	this.writeStatistic=function(){
		var total;
		if(_lastSegment==null){
			total=new Object();
			total['distance']=0;
			total['unit']='m';
		} else {
			total=_lastSegment.getFormattedDistance();
		}
		_statDiv.innerHTML='<span style="font-size:24px;font-weight:bold;color:#30538E;position:relative;top:10px;">'+total['distance']+'</span><span style="font-size:16px;font-weight:bold;color:#30538E;position:relative;top:10px;">'+total['unit']+'</span><br><br>';
	};
	this.reset=function(){
		var segment=_lastSegment;
		while(segment !=null){
			var tmp=segment;
			segment=segment.getPreviousSegment();
			tmp.destroy();
		}
		_lastSegment=null;
		_this.writeStatistic();
	};
	function createNewSegment(coordinate){
		var segment=new WlwMeasureSegment(_map,_this,coordinate);
		if(_lastSegment !=null){_lastSegment.setNextSegment(segment);segment.setPreviousSegment(_lastSegment);}
		_lastSegment=segment;
		_this.writeStatistic();
	}
	function buildGUI(){
		_container.style.width='0px';
		_container.style.height='0px';
		_container.id='WlwMeasuringControl';
		_measureDiv.id='measuringDiv';
		_measureDiv.style.position='absolute';
		_measureDiv.style.top='0px';
		_measureDiv.style.left='0px';
		_captureImg.id='captureImg';
		_captureImg.src=iwconst.GLOBAL_APP_URL + 'img/blank.gif';
		_captureImg.style.position='absolute';
		_captureImg.style.top='0px';
		_captureImg.style.left='0px';
		_captureImg.style.cursor='crosshair';
		_measureDiv.appendChild(_captureImg);
		_drawDiv.id='drawDiv';
		_drawDiv.style.position='absolute';
		_drawDiv.style.top='0px';
		_drawDiv.style.left='0px';
		_drawDiv.style.cursor='crosshair';
		_measureDiv.appendChild(_drawDiv);
		setSize(_map.getOptions().getSize());
		_statDiv.style.position='absolute';
		_statDiv.style.top='0px';
		_statDiv.style.left='0px';
		_statDiv.style.width=_infoPanel.getSize().getWidth()-10+'px';
		_statDiv.align='right';
		iw.append(_infoPanel.getContentPanel().getContainer(),_statDiv);
		
		iw.append(_infoPanel.getContentPanel().getContainer(),_imgReset);
		_imgReset.onload=function(){correctPNG(this);}.iwclosure(_imgReset);
		_imgReset.src=WLW_PATH_IMAGE+'/map_mibresetd.png';
		_imgReset.width='91';
		_imgReset.height='21';
		_imgReset.border='0';
		_imgReset.style.position='absolute';
		_imgReset.style.top=_infoPanel.getSize().getHeight()-26+'px';
		_imgReset.style.right='10px';
		
		iw.append(_infoPanel.getContentPanel().getContainer(),_divReset);
		_divReset.innerHTML=_translations[_language]['RESET'];
		_divReset.style.position='absolute';
		_divReset.style.top=_infoPanel.getSize().getHeight()-23+'px';
		_divReset.style.left=_infoPanel.getSize().getWidth()-101+'px';
		_divReset.style.color = '#30538E';
		_divReset.style.font = 'bold 12px Arial';
		_divReset.style.width = '91px';
		_divReset.style.cursor='pointer';
		
		IWEventManager.addDOMListener(_divReset,'onclick',_this.reset);
		IWEventManager.addDOMListener(_divReset,'onmousedown', function(event){_imgReset.src=WLW_PATH_IMAGE+'/map_mibreseta.png';});
		IWEventManager.addDOMListener(_divReset,'onmouseup',function(event){_imgReset.src=WLW_PATH_IMAGE+'/map_mibresetd.png';});
		IWEventManager.addDOMListener(_divReset,'onmouseout',function(event){_imgReset.src=WLW_PATH_IMAGE+'/map_mibresetd.png';});
	}
	function setSize(size){
		_measureDiv.style.width=size.getWidth()+ 'px';
		_measureDiv.style.height=size.getHeight()+ 'px';
		_captureImg.style.width=size.getWidth()+ 'px';
		_captureImg.style.height=size.getHeight()+ 'px';
		_drawDiv.style.width=size.getWidth()+ 'px';
		_drawDiv.style.height=size.getHeight()+ 'px';
	}
	function setLanguage(event){
		if(_translations[event.language]){
			_language=event.language;
			_infoPanel.setTitle(_translations[_language]['TITLE']);
			_this.writeStatistic();
		}
	}
	var _map=map;
	var _container=this.getContainer();
	var _this=this;
	var _isActive=false;
	var _measureDiv=iw.create('div');
	var _captureImg=iw.create('img');
	var _drawDiv=iw.create('div');
	var _statDiv=iw.create('div');
	var _infoPanel=new WlwMeasureWindowControl(_map,_translations[_language]['TITLE'],new IWSize(148,60));
	var _renderer=new IWGraphics(_drawDiv);
	var _mouseAdapter=new IWMouseAdapter();
	var _lastSegment=null;

	var _imgReset=iw.create('img');
	var _divReset=null;
	try{_divReset=iw.create('<div align="center">');}
	catch(e){
		_divReset=iw.create('div');
		_divReset.align='center';
	}
	
	buildGUI();
	_infoPanel.setRedrawable(false);
	_infoPanel.close();
	_infoPanel.beforeClose=function(){
		_this.reset();
		_measureDiv.parentNode.removeChild(_measureDiv);
		_isActive=false;
	};
	IWEventManager.addListener(_map,'afterlanguagechanged',setLanguage);
	IWEventManager.addListener(_map,'afterresized',function(e){setSize(e.newSize);});
	IWEventManager.addDOMListener(_measureDiv,"onmousedown",function(event){
			noPropagation(event);
		}.iwclosure(this));
	IWEventManager.addDOMListener(_measureDiv,"onmouseup",function(event){
			noPropagation(event);
		}.iwclosure(this));
	IWEventManager.addDOMListener(_measureDiv,"ondblclick",function(event){
			noPropagation(event);
		}.iwclosure(this));
	IWEventManager.addDOMListener(_measureDiv,"onclick",function(event){
			noPropagation(event);
			var mouseEvent=_mouseAdapter.toMouseEvent(event,_measureDiv);
			var coordinate=_map.getCurrentMapType().getProjection().pixelToMeter(mouseEvent.position);
			createNewSegment(coordinate);
		}.iwclosure(this));
}

/* Messinfobox des Messtools */
function WlwMeasureWindowControl(map,title,size){
	IWControl.call(this,map,'WlwMeasureWindowControl');
	this.beforeClose=function(){};
	this.afterClose=function(){};
	this.setCloseable=function(closeable){_closeable=closeable;};
	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.setVisible(true);
	};
	this.getSize=function(){return _panel.getSize();};
	this.setSize=function(size){
		_size=size;
		_container.style.height=size.getHeight()+ 20 + 'px';
		_container.style.width=size.getWidth()+ 'px';
		_header.style.width=_size.getWidth() + 'px';
		_header.style.height='20px';
		_panel.setSize(size);
	};
	this.getContentPanel=function(){return _panel;};
	this.getTitle=function(){return _title.innerHTML;};
	this.setTitle=function(title){_title.innerHTML=title;};
	this.afterAppend=function(){buildGUI();};
	this.triggerBeforeOpen=function(){IWEventManager.trigger(this,'beforeopen',null);};
	this.triggerBeforeClose=function(){IWEventManager.trigger(this,'beforeclose',null);};
	this.triggerAfterClose=function(){IWEventManager.trigger(this,'afterclose',null);};

	function buildGUI(){
		_header.style.position='relative';
		_header.style.top='0px';
		_header.style.left='0px';
		_header.style.border='0px solid #FFFFFF';
						
		var imgHeader=iw.create('img');
		_header.appendChild(imgHeader);
		imgHeader.style.position='absolute';
		imgHeader.style.left='0px';
		imgHeader.style.top='0px';
		imgHeader.style.border='0px solid #FFFFFF';
		imgHeader.src=WLW_PATH_IMAGE + '/map_mibhead.png';
		imgHeader.useMap='#mapHeader';
				
		var mapHeader=iw.create('map');
		iw.append(_container,mapHeader);
		mapHeader.name='mapHeader';
		mapHeader.id='mapHeader'; //wichtig fuer IE
		iw.append(mapHeader,_areaHeader);
		_areaHeader.shape='rect';
		_areaHeader.coords='132,4,144,16';
		_areaHeader.style.cursor='pointer';
		
		IWEventManager.addDOMListener(_areaHeader,'onclick',self.close);
		iw.append(_header,_title);
		iw.append(_container,_header);
		_panel.getContainer().style.position='absolute';
		_panel.getContainer().style.top='20px';
		_panel.getContainer().style.left='0px';
		_panel.setBackgroundColor('#FFFFFF');
		_panel.setOpacity(1);
		iw.append(_container,_panel.getContainer());
		self.setVisible(false);
	}
	
	var self=this;
	var _container=this.getContainer();
	var _header=iw.create('div');
	var _areaHeader = iw.create('area');
	var _size=null;
	try{_title=iw.create('<span style="color: #ABB8CD; font: bold 12px Arial; position: absolute; top: 3px; left: 6px; border:0px solid #FFFFFF;">');}
	catch(e){
		_title=iw.create('span');
		_title.style.color = '#ABB8CD';
		_title.style.position = 'absolute';
		_title.style.top = '4px';
		_title.style.left = '6px';
		_title.style.font = 'bold 12px Arial';
	}
	
	var _closeable=true;
	if(typeof size=='undefined'){size=new IWSize(100,100);}
	if(typeof title=='undefined'){title='Info window';}
	var _panel=new IWPanelControl(map,size);
	this.setSize(size);
	this.setTitle(title);
	this.allowDraggingOutsideParent(false);
	this.setDraggableContainer(_header);
	this.setDraggable(true);
}

/* Navigationselement */
function WlwNavigationControl(map){
	IWControl.call(this,map,'WlwNavigationControl');
	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 _res=new Object();
	_res['de']=new Object();
	_res['en']=new Object();
	_res['fr']=new Object();
	_res['nl']=new Object();
	_res['de']['UP']='Karte nach oben verschieben';
	_res['de']['RIGHT']='Karte nach rechts verschieben';
	_res['de']['DOWN']='Karte nach unten verschieben';
	_res['de']['LEFT']='Karte nach links verschieben';
	_res['en']['UP']='move map up';
	_res['en']['RIGHT']='move map right';
	_res['en']['DOWN']='move map down';
	_res['en']['LEFT']='move map left';
	_res['fr']['UP']='d\u00e9placer la carte ves le haut';
	_res['fr']['RIGHT']='d\u00e9placer la carte vers la droite';
	_res['fr']['DOWN']='d\u00e9placer la carte vers le bas';
	_res['fr']['LEFT']='d\u00e9placer la carte vers la gauche';
	_res['nl']['UP']='Kaart naar boven verschuiven';
	_res['nl']['RIGHT']='Kaart naar rechts verschuiven';
	_res['nl']['DOWN']='Kaart naar beneden verschuiven';
	_res['nl']['LEFT']='Kaart naar links verschuiven';
	var _sLanguage=map.getOptions().getLanguage();
	if(!_res[_sLanguage])_sLanguage='en';
	this.toString=function(){return 'WlwNavigationControl';};
	this.afterAppend=function(){buildGUI();};
	function buildGUI(){
		var imgNaviUp=iw.create('img');
		iw.append(_container,imgNaviUp);
		imgNaviUp.onload=function(){correctPNG(this);}.iwclosure(imgNaviUp);
		imgNaviUp.src=WLW_PATH_IMAGE + '/map_navdoben.png';
		imgNaviUp.width='58';
		imgNaviUp.height='21';
		imgNaviUp.border='0';
		imgNaviUp.useMap='#mapNaviUp';
		var mapNaviUp=iw.create('map');
		iw.append(_container,mapNaviUp);
		mapNaviUp.name='mapNaviUp';
		mapNaviUp.id='mapNaviUp'; //wichtig fuer IE
		iw.append(mapNaviUp,_areaUp);
		_areaUp.shape='rect';
		_areaUp.coords='20,10,35,20';
		_areaUp.style.cursor='pointer';
		_areaUp.alt=_res[_sLanguage]['UP'];
		_areaUp.title=_res[_sLanguage]['UP'];
		
		IWEventManager.addDOMListener(_areaUp,'onmousedown',function(event){
						imgNaviUp.src=WLW_PATH_IMAGE + '/map_navaoben.png';
						var offset=new IWPoint(0,Math.floor(this.getOptions().getSize().getHeight()/2));
						this.panBy(offset);
					}.iwclosure(_map));
		IWEventManager.addDOMListener(_areaUp,'onmouseup',function(event){
						imgNaviUp.src=WLW_PATH_IMAGE + '/map_navdoben.png';
					}.iwclosure(_map));
		IWEventManager.addDOMListener(_areaUp,'onmouseout',function(event){
						imgNaviUp.src=WLW_PATH_IMAGE + '/map_navdoben.png';
					}.iwclosure(_map));
		var imgNaviLeft=iw.create('img');
		iw.append(_container,imgNaviLeft);
		imgNaviLeft.onload=function(){correctPNG(this);}.iwclosure(imgNaviLeft);
		imgNaviLeft.src=WLW_PATH_IMAGE + '/map_navdlinks.png';
		imgNaviLeft.width='28';
		imgNaviLeft.height='20';
		imgNaviLeft.border='0';
		imgNaviLeft.useMap='#mapNaviLeft';
		var mapNaviLeft=iw.create('map');
		iw.append(_container,mapNaviLeft);
		mapNaviLeft.name='mapNaviLeft';
		mapNaviLeft.id='mapNaviLeft';
		iw.append(mapNaviLeft,_areaLeft);
		_areaLeft.shape='rect';
		_areaLeft.coords='5,2,18,16';
		_areaLeft.style.cursor='pointer';
		_areaLeft.alt=_res[_sLanguage]['LEFT'];
		_areaLeft.title=_res[_sLanguage]['LEFT'];
		IWEventManager.addDOMListener(_areaLeft,'onmousedown',function(event){
						imgNaviLeft.src=WLW_PATH_IMAGE + '/map_navalinks.png';
						var offset=new IWPoint(Math.floor(this.getOptions().getSize().getWidth()/2),0);
						this.panBy(offset);
					}.iwclosure(_map));
		IWEventManager.addDOMListener(_areaLeft,'onmouseup',function(event){
						imgNaviLeft.src=WLW_PATH_IMAGE + '/map_navdlinks.png';
					}.iwclosure(_map));
		IWEventManager.addDOMListener(_areaLeft,'onmouseout',function(event){
						imgNaviLeft.src=WLW_PATH_IMAGE + '/map_navdlinks.png';
					}.iwclosure(_map));
		
		var imgNaviRight=iw.create('img');
		iw.append(_container,imgNaviRight);
		imgNaviRight.onload=function(){correctPNG(this);}.iwclosure(imgNaviRight);
		imgNaviRight.src=WLW_PATH_IMAGE + '/map_navdrechts.png';
		imgNaviRight.width='30';
		imgNaviRight.height='20';
		imgNaviRight.border='0';
		imgNaviRight.useMap='#mapNaviRight';
		var mapNaviRight=iw.create('map');
		iw.append(_container,mapNaviRight);
		mapNaviRight.name='mapNaviRight';
		mapNaviRight.id='mapNaviRight';
		iw.append(mapNaviRight,_areaRight);
		_areaRight.shape='rect';
		_areaRight.coords='8,2,21,16';
		_areaRight.style.cursor='pointer';
		_areaRight.alt=_res[_sLanguage]['RIGHT'];
		_areaRight.title=_res[_sLanguage]['RIGHT'];
		IWEventManager.addDOMListener(_areaRight,'onmousedown',function(event){
						imgNaviRight.src=WLW_PATH_IMAGE + '/map_navarechts.png';
						var offset=new IWPoint(-Math.floor(this.getOptions().getSize().getWidth()/2),0);
						this.panBy(offset);
					}.iwclosure(_map));
		IWEventManager.addDOMListener(_areaRight,'onmouseup',function(event){
						imgNaviRight.src=WLW_PATH_IMAGE + '/map_navdrechts.png';
					}.iwclosure(_map));
		IWEventManager.addDOMListener(_areaRight,'onmouseout',function(event){
						imgNaviRight.src=WLW_PATH_IMAGE + '/map_navdrechts.png';
					}.iwclosure(_map));
		
		var imgNaviDown=iw.create('img');
		iw.append(_container,imgNaviDown);
		imgNaviDown.onload=function(){correctPNG(this);}.iwclosure(imgNaviDown);
		imgNaviDown.src=WLW_PATH_IMAGE + '/map_navdunten.png';
		imgNaviDown.width='58';
		imgNaviDown.height='18';
		imgNaviDown.border='0';
		imgNaviDown.useMap='#mapNaviDown';
		var mapNaviDown=iw.create('map');
		iw.append(_container,mapNaviDown);
		mapNaviDown.name='mapNaviDown';
		mapNaviDown.id='mapNaviDown';
		iw.append(mapNaviDown,_areaDown);
		_areaDown.shape='rect';
		_areaDown.coords='20,1,35,11';
		_areaDown.style.cursor='pointer';
		_areaDown.alt=_res[_sLanguage]['DOWN'];
		_areaDown.title=_res[_sLanguage]['DOWN'];
		IWEventManager.addDOMListener(_areaDown,'onmousedown',function(event){
						imgNaviDown.src=WLW_PATH_IMAGE + '/map_navaunten.png';
						var offset=new IWPoint(0,-Math.floor(this.getOptions().getSize().getHeight()/2));
						this.panBy(offset);
					}.iwclosure(_map));
		IWEventManager.addDOMListener(_areaDown,'onmouseup',function(event){
						imgNaviDown.src=WLW_PATH_IMAGE + '/map_navdunten.png';
					}.iwclosure(_map));
		IWEventManager.addDOMListener(_areaDown,'onmouseout',function(event){
						imgNaviDown.src=WLW_PATH_IMAGE + '/map_navdunten.png';
					}.iwclosure(_map));
		
		IWEventManager.addListener(_map,'afterlanguagechanged',setLanguage);
	}
	function setLanguage(event){
		if(_res[event.language]){
			_sLanguage=event.language;
			_areaUp.alt=_areaUp.title=_res[_sLanguage]['UP'];
			_areaLeft.alt=_areaLeft.title=_res[_sLanguage]['LEFT'];
			_areaRight.alt=_areaRight.title=_res[_sLanguage]['RIGHT'];
			_areaDown.alt=_areaDown.title=_res[_sLanguage]['DOWN'];
		}
	}
	_container.id='divNavigationControl';
	_container.style.width='58px';
	_container.style.height='59px';
}

/* Werkzeugleiste fuer Bewegen, Zoom und Messen */
function WlwToolbar(map, measuringTool) {
	IWControl.call(this,map,'WlwToolbar');
	var _map = map;
	var _measuringTool = measuringTool;
	var _self = this;
	var _container=this.getContainer();
	var _res=new Object();
	_res['de']=new Object();
	_res['en']=new Object();
	_res['fr']=new Object();
	_res['nl']=new Object();
	_res['de']['MOVE']='Karte bewegen';
	_res['de']['ZOOM']='Ausschnitt';
	_res['de']['MEASURE']='Massband';
	_res['en']['MOVE']='move map';
	_res['en']['ZOOM']='zoom map';
	_res['en']['MEASURE']='measure';
	_res['fr']['MOVE']='d\u00e9placer la carte';
	_res['fr']['ZOOM']='extrait';
	_res['fr']['MEASURE']='r\u00e8gle';
	_res['nl']['MOVE']='kaart bewegen';
	_res['nl']['ZOOM']='Uitsnede';
	_res['nl']['MEASURE']='Schaalstok';
	var _sLanguage=map.getOptions().getLanguage();
	if(!_res[_sLanguage])_sLanguage='en';
	
	var _areaMove=iw.create('area');
	var _areaZoom=iw.create('area');
	var _areaMeasure=iw.create('area');
	var _imgMove = null;
	var _imgZoom = null;
	var _imgMeasure = null;
	this.toString=function(){return '[WlwToolbar]';};

	this.afterAppend=function(){
		buildGUI();
		this.setActiveToolbarItem();
	};
	
	this.setLanguage=function(language){
		if(_res[language]){
			_areaMove.alt=_res[_sLanguage]['MOVE'];
			_areaMove.title=_res[_sLanguage]['MOVE'];
			_areaZoom.alt=_res[_sLanguage]['ZOOM'];
			_areaZoom.title=_res[_sLanguage]['ZOOM'];
			_areaMeasure.alt=_res[_sLanguage]['MEASURE'];
			_areaMeasure.title=_res[_sLanguage]['MEASURE'];
		}
	};
	
	this.setActiveToolbarItem=function() {
		if (_measuringTool.getInfoWindow().isVisible()) {
			_imgMove.src=WLW_PATH_IMAGE + '/map_tbdmove.png';
			_imgZoom.src=WLW_PATH_IMAGE + '/map_tbdzoom.png';
			_imgMeasure.src=WLW_PATH_IMAGE + '/map_tbameasure.png';
		} else {
			if (map.getOptions().getLeftMouseAction() == IWMapOptions.CONTROL_MOVE) {
				_imgMove.src=WLW_PATH_IMAGE + '/map_tbamove.png';
				_imgZoom.src=WLW_PATH_IMAGE + '/map_tbdzoom.png';
			}
			if (map.getOptions().getLeftMouseAction() == IWMapOptions.CONTROL_ZOOM) {
				_imgMove.src=WLW_PATH_IMAGE + '/map_tbdmove.png';
				_imgZoom.src=WLW_PATH_IMAGE + '/map_tbazoom.png';
			}
			_imgMeasure.src=WLW_PATH_IMAGE + '/map_tbdmeasure.png';
		}
	};

	function buildGUI(){
		var mapMove=iw.create('map');
		mapMove.name='mapMove';
		mapMove.id='mapMove';
		iw.append(_container,mapMove);
		iw.append(mapMove,_areaMove);
		_areaMove.shape='rect';
		_areaMove.coords='10,4,35,24';
		_areaMove.style.cursor='pointer';
		_areaMove.alt=_res[_sLanguage]['MOVE'];
		_areaMove.title=_res[_sLanguage]['MOVE'];
		IWEventManager.addDOMListener(_areaMove,'onclick',function(event){
				map.getOptions().setLeftMouseAction(IWMapOptions.CONTROL_MOVE);
				this.setActiveToolbarItem();
			}.iwclosure(_self));
		_imgMove=iw.create('img');
		iw.append(_container,_imgMove);
		_imgMove.onload=function(){correctPNG(this);}.iwclosure(_imgMove);
		_imgMove.src=WLW_PATH_IMAGE + '/map_tbdmove.png';
		_imgMove.width='39';
		_imgMove.height='31';
		_imgMove.border='0';
		_imgMove.useMap='#mapMove';
		
		//Zoom
		var mapZoom=iw.create('map');
		mapZoom.name='mapZoom';
		mapZoom.id='mapZoom';
		iw.append(_container,mapZoom);
		iw.append(mapZoom,_areaZoom);
		_areaZoom.shape='rect';
		_areaZoom.coords='1,4,28,24';
		_areaZoom.style.cursor='pointer';
		_areaZoom.alt=_res[_sLanguage]['ZOOM'];
		_areaZoom.title=_res[_sLanguage]['ZOOM'];
		IWEventManager.addDOMListener(_areaZoom,'onclick',function(event){
				map.getOptions().setLeftMouseAction(IWMapOptions.CONTROL_ZOOM);
				this.setActiveToolbarItem();
			}.iwclosure(_self));
		_imgZoom=iw.create('img');
		iw.append(_container,_imgZoom);
		_imgZoom.onload=function(){correctPNG(this);}.iwclosure(_imgZoom);
		_imgZoom.src=WLW_PATH_IMAGE + '/map_tbdzoom.png';
		_imgZoom.width='32';
		_imgZoom.height='31';
		_imgZoom.border='0';
		_imgZoom.useMap='#mapZoom';
		
		//Measure
		var mapMeasure=iw.create('map');
		mapMeasure.name='mapMeasure';
		mapMeasure.id='mapMeasure';
		iw.append(_container,mapMeasure);
		iw.append(mapMeasure,_areaMeasure);
		_areaMeasure.shape='rect';
		_areaMeasure.coords='3,4,28,24';
		_areaMeasure.style.cursor='pointer';
		_areaMeasure.alt=_res[_sLanguage]['MEASURE'];
		_areaMeasure.title=_res[_sLanguage]['MEASURE'];
		IWEventManager.addDOMListener(_areaMeasure,'onclick',function(event){
				if (_measuringTool.getInfoWindow().isVisible()) {
					_measuringTool.deactivate();
				} else {
					_measuringTool.activate();
				}
				this.setActiveToolbarItem();
			}.iwclosure(_self));
		_imgMeasure=iw.create('img');
		iw.append(_container,_imgMeasure);
		_imgMeasure.onload=function(){correctPNG(this);}.iwclosure(_imgMeasure);
		_imgMeasure.src=WLW_PATH_IMAGE + '/map_tbdmeasure.png';
		_imgMeasure.width='41';
		_imgMeasure.height='31';
		_imgMeasure.border='0';
		_imgMeasure.useMap='#mapMeasure';
		IWEventManager.addListener(_measuringTool.getInfoWindow(), 'afterclose', function(event) {
					_self.setActiveToolbarItem();
				});
	}
	
	_container.id='WlwToolbar';
	_container.style.width='112px';
	_container.style.height='31px';
}

/* Zoomfunktionselement */
function WlwZoomControl(map){
	IWControl.call(this,map,'WlwZoomControl');
	var _map=map;
	var _self=this;
	var _lowValue=_map.getCurrentMapType().getMaxLevel();
	var _highValue=_map.getCurrentMapType().getMinLevel();
	var _container=this.getContainer();
	var _res=new Object();
	_res['de']=new Object();
	_res['en']=new Object();
	_res['fr']=new Object();
	_res['nl']=new Object();
	_res['de']['PLUS']='vergr\u00F6\u00DFern';
	_res['de']['MINUS']='verkleinern';
	_res['en']['PLUS']='zoom in';
	_res['en']['MINUS']='zoom out';
	_res['fr']['PLUS']='agrandir';
	_res['fr']['MINUS']='r\u00e9duire';
	_res['nl']['PLUS']='inzoomen';
	_res['nl']['MINUS']='uitzoomen';
	var _sLanguage=map.getOptions().getLanguage();
	if(!_res[_sLanguage])_sLanguage='en';

	var _areaPlus=iw.create('area');
	var _area9=iw.create('area');
	var _area8=iw.create('area');
	var _area7=iw.create('area');
	var _area6=iw.create('area');
	var _area5=iw.create('area');
	var _area4=iw.create('area');
	var _area3=iw.create('area');
	var _area2=iw.create('area');
	var _area1=iw.create('area');
	var _areaMinus=iw.create('area');
	var _imgZoomArea9=iw.create('img');
	var _imgZoomArea8=iw.create('img');
	var _imgZoomArea7=iw.create('img');
	var _imgZoomArea6=iw.create('img');
	var _imgZoomArea5=iw.create('img');
	var _imgZoomArea4=iw.create('img');
	var _imgZoomArea3=iw.create('img');
	var _imgZoomArea2=iw.create('img');
	var _imgZoomArea1=iw.create('img');
	var _imgZoomArray = new Array(_imgZoomArea1, _imgZoomArea2, _imgZoomArea3, _imgZoomArea4, _imgZoomArea5, _imgZoomArea6, _imgZoomArea7, _imgZoomArea8, _imgZoomArea9);
	var _areaArray = new Array(9);
	var _imgZoomActiveUrls = new Array(WLW_PATH_IMAGE + '/map_zooma1.png', WLW_PATH_IMAGE + '/map_zooma2.png', WLW_PATH_IMAGE + '/map_zooma3.png', WLW_PATH_IMAGE + '/map_zooma4.png', WLW_PATH_IMAGE + '/map_zooma5.png', WLW_PATH_IMAGE + '/map_zooma6.png', WLW_PATH_IMAGE + '/map_zooma7.png', WLW_PATH_IMAGE + '/map_zooma8.png', WLW_PATH_IMAGE + '/map_zooma9.png');
	var _imgZoomInactiveUrls = new Array(WLW_PATH_IMAGE + '/map_zoomd1.png', WLW_PATH_IMAGE + '/map_zoomd2.png', WLW_PATH_IMAGE + '/map_zoomd3.png', WLW_PATH_IMAGE + '/map_zoomd4.png', WLW_PATH_IMAGE + '/map_zoomd5.png', WLW_PATH_IMAGE + '/map_zoomd6.png', WLW_PATH_IMAGE + '/map_zoomd7.png', WLW_PATH_IMAGE + '/map_zoomd8.png', WLW_PATH_IMAGE + '/map_zoomd9.png');
	var _zoomToArea = new Array(9,8,8,7,7,6,6,5,5,4,4,3,3,2,2,1,1);
	var _areaToZoom = new Array(16, 14, 12, 10, 8, 6, 4, 2, 0);
		
	this.setZoomLevel=function(value,ignore){
		if(typeof(ignore)=="undefined")ignore=false;
		if(typeof(value)=="string")value=parseInt(value);
		if(!ignore){_map.setZoom(value);}
	};
	this.setLanguage=function(language){
		if(_res[language]){
			_areaPlus.title=_res[language]['PLUS'];
			_areaMinus.title=_res[language]['MINUS'];
		}
	};
	this.afterAppend=function(){
		buildGUI();
		this.setZoomIndicator(_zoomToArea[_map.getZoom()]);
	};
	this.toString=function(){return '[WlwZoomControl]';};
	
	this.setZoomIndicator = function(intValue) {
		if (intValue > 0 && intValue < 10) {
			for (i=0 ; i<9; i++) {
				if (i == intValue-1) _imgZoomArray[i].src = _imgZoomActiveUrls[i]; else _imgZoomArray[i].src = _imgZoomInactiveUrls[i];
			}
		}
	};
	
	function buildGUI(){
		var mapZoomPlus=null;
		try{mapZoomPlus=iw.create('<map name="mapZoomPlus">');}
		catch(e){
			mapZoomPlus=iw.create('map');
			mapZoomPlus.name='mapZoomPlus';
		}
		iw.append(_container,mapZoomPlus);
		iw.append(mapZoomPlus,_areaPlus);
		_areaPlus.shape='rect';
		_areaPlus.coords='3,10,27,32';
		_areaPlus.style.cursor='pointer';
		IWEventManager.addDOMListener(_areaPlus,'onmousedown',function(event){
							_imgZoomPlus.src=WLW_PATH_IMAGE + '/map_zoomaplus.png';
							if(!map.isZooming()&&(_map.getCurrentMapType().getMaxLevel()<_map.getZoom())){
								_map.zoomIn();
							}
						}.iwclosure(_self)
					);
		IWEventManager.addDOMListener(_areaPlus,'onmouseup',function(event){
							_imgZoomPlus.src=WLW_PATH_IMAGE + '/map_zoomdplus.png';
						}.iwclosure(_self)
					);
		IWEventManager.addDOMListener(_areaPlus,'onmouseout',function(event){
							_imgZoomPlus.src=WLW_PATH_IMAGE + '/map_zoomdplus.png';
						}.iwclosure(_self)
					);
		var _imgZoomPlus=iw.create('img');
		iw.append(_container,_imgZoomPlus);
		_imgZoomPlus.useMap='#mapZoomPlus';
		_imgZoomPlus.onload=function(){correctPNG(this);}.iwclosure(_imgZoomPlus);
		_imgZoomPlus.src=WLW_PATH_IMAGE + '/map_zoomdplus.png';
		_imgZoomPlus.width='30';
		_imgZoomPlus.height='38';
		_imgZoomPlus.border='0';
		
		var mapZoomArea9=null;
		try{mapZoomArea9=iw.create('<map name="mapZoomArea9">');}
		catch(e){
			mapZoomArea9=iw.create('map');
			mapZoomArea9.name='mapZoomArea9';
		}
		iw.append(_container,mapZoomArea9);
		iw.append(mapZoomArea9,_area9);
		_area9.shape='rect';
		_area9.coords='1,1,30,6';
		_area9.style.cursor='pointer';
		IWEventManager.addDOMListener(_area9,'onmousedown',function(event){
							if(!map.isZooming()&&(_highValue>=_areaToZoom[8])){
								this.setZoomLevel(_areaToZoom[8],false);
							}
						}.iwclosure(_self)
					);
		iw.append(_container,_imgZoomArea9);
		_imgZoomArray[8].useMap='#mapZoomArea9';
		_imgZoomArray[8].onload=function(){correctPNG(this);}.iwclosure(_imgZoomArray[8]);
		_imgZoomArray[8].src=WLW_PATH_IMAGE + '/map_zoomd9.png';
		_imgZoomArray[8].width='30';
		_imgZoomArray[8].height='6';
		_imgZoomArray[8].border='0';
		
		var mapZoomArea8=null;
		try{mapZoomArea8=iw.create('<map name="mapZoomArea8">');}
		catch(e){
			mapZoomArea8=iw.create('map');
			mapZoomArea8.name='mapZoomArea8';
		}
		iw.append(_container,mapZoomArea8);
		iw.append(mapZoomArea8,_area8);
		_area8.shape='rect';
		_area8.coords='1,1,30,6';
		_area8.style.cursor='pointer';
		IWEventManager.addDOMListener(_area8,'onmousedown',function(event){
							if(!map.isZooming()&&(_highValue>=_areaToZoom[7])){
								this.setZoomLevel(_areaToZoom[7],false);
							}
						}.iwclosure(_self)
					);
		iw.append(_container,_imgZoomArray[7]);
		_imgZoomArray[7].useMap='#mapZoomArea8';
		_imgZoomArray[7].onload=function(){correctPNG(this);}.iwclosure(_imgZoomArray[7]);
		_imgZoomArray[7].src=WLW_PATH_IMAGE + '/map_zoomd8.png';
		_imgZoomArray[7].width='30';
		_imgZoomArray[7].height='6';
		_imgZoomArray[7].border='0';
		
		var mapZoomArea7=null;
		try{mapZoomArea7=iw.create('<map name="mapZoomArea7">');}
		catch(e){
			mapZoomArea7=iw.create('map');
			mapZoomArea7.name='mapZoomArea7';
		}
		iw.append(_container,mapZoomArea7);
		iw.append(mapZoomArea7,_area7);
		_area7.shape='rect';
		_area7.coords='1,1,30,6';
		_area7.style.cursor='pointer';
		IWEventManager.addDOMListener(_area7,'onmousedown',function(event){
							if(!map.isZooming()&&(_highValue>=_areaToZoom[6])){
								this.setZoomLevel(_areaToZoom[6],false);
							}
						}.iwclosure(_self)
					);
		iw.append(_container,_imgZoomArray[6]);
		_imgZoomArray[6].useMap='#mapZoomArea7';
		_imgZoomArray[6].onload=function(){correctPNG(this);}.iwclosure(_imgZoomArray[6]);
		_imgZoomArray[6].src=WLW_PATH_IMAGE + '/map_zoomd7.png';
		_imgZoomArray[6].width='30';
		_imgZoomArray[6].height='6';
		_imgZoomArray[6].border='0';
		
		var mapZoomArea6=null;
		try{mapZoomArea6=iw.create('<map name="mapZoomArea6">');}
		catch(e){
			mapZoomArea6=iw.create('map');
			mapZoomArea6.name='mapZoomArea6';
		}
		iw.append(_container,mapZoomArea6);
		iw.append(mapZoomArea6,_area6);
		_area6.shape='rect';
		_area6.coords='1,1,30,6';
		_area6.style.cursor='pointer';
		IWEventManager.addDOMListener(_area6,'onmousedown',function(event){
							if(!map.isZooming()&&(_highValue>=_areaToZoom[5])){
								this.setZoomLevel(_areaToZoom[5],false);
							}
						}.iwclosure(_self)
					);
		iw.append(_container,_imgZoomArray[5]);
		_imgZoomArray[5].useMap='#mapZoomArea6';
		_imgZoomArray[5].onload=function(){correctPNG(this);}.iwclosure(_imgZoomArray[5]);
		_imgZoomArray[5].src=WLW_PATH_IMAGE + '/map_zoomd6.png';
		_imgZoomArray[5].width='30';
		_imgZoomArray[5].height='6';
		_imgZoomArray[5].border='0';
		
		var mapZoomArea5=null;
		try{mapZoomArea5=iw.create('<map name="mapZoomArea5">');}
		catch(e){
			mapZoomArea5=iw.create('map');
			mapZoomArea5.name='mapZoomArea5';
		}
		iw.append(_container,mapZoomArea5);
		iw.append(mapZoomArea5,_area5);
		_area5.shape='rect';
		_area5.coords='1,1,30,6';
		_area5.style.cursor='pointer';
		IWEventManager.addDOMListener(_area5,'onmousedown',function(event){
							if(!map.isZooming()&&(_highValue>=_areaToZoom[4])){
								this.setZoomLevel(_areaToZoom[4],false);
							}
						}.iwclosure(_self)
					);
		iw.append(_container,_imgZoomArray[4]);
		_imgZoomArray[4].useMap='#mapZoomArea5';
		_imgZoomArray[4].onload=function(){correctPNG(this);}.iwclosure(_imgZoomArray[4]);
		_imgZoomArray[4].src=WLW_PATH_IMAGE + '/map_zoomd5.png';
		_imgZoomArray[4].width='30';
		_imgZoomArray[4].height='6';
		_imgZoomArray[4].border='0';
		
		var mapZoomArea4=null;
		try{mapZoomArea4=iw.create('<map name="mapZoomArea4">');}
		catch(e){
			mapZoomArea4=iw.create('map');
			mapZoomArea4.name='mapZoomArea4';
		}
		iw.append(_container,mapZoomArea4);
		iw.append(mapZoomArea4,_area4);
		_area4.shape='rect';
		_area4.coords='1,1,30,6';
		_area4.style.cursor='pointer';
		IWEventManager.addDOMListener(_area4,'onmousedown',function(event){
							if(!map.isZooming()&&(_highValue>=_areaToZoom[3])){
								this.setZoomLevel(_areaToZoom[3],false);
							}
						}.iwclosure(_self)
					);
		iw.append(_container,_imgZoomArray[3]);
		_imgZoomArray[3].useMap='#mapZoomArea4';
		_imgZoomArray[3].onload=function(){correctPNG(this);}.iwclosure(_imgZoomArray[3]);
		_imgZoomArray[3].src=WLW_PATH_IMAGE + '/map_zoomd4.png';
		_imgZoomArray[3].width='30';
		_imgZoomArray[3].height='6';
		_imgZoomArray[3].border='0';
		
		var mapZoomArea3=null;
		try{mapZoomArea3=iw.create('<map name="mapZoomArea3">');}
		catch(e){
			mapZoomArea3=iw.create('map');
			mapZoomArea3.name='mapZoomArea3';
		}
		iw.append(_container,mapZoomArea3);
		iw.append(mapZoomArea3,_area3);
		_area3.shape='rect';
		_area3.coords='1,1,30,6';
		_area3.style.cursor='pointer';
		IWEventManager.addDOMListener(_area3,'onmousedown',function(event){
							if(!map.isZooming()&&(_highValue>=_areaToZoom[2])){
								this.setZoomLevel(_areaToZoom[2],false);
							}
						}.iwclosure(_self)
					);
		iw.append(_container,_imgZoomArray[2]);
		_imgZoomArray[2].useMap='#mapZoomArea3';
		_imgZoomArray[2].onload=function(){correctPNG(this);}.iwclosure(_imgZoomArray[2]);
		_imgZoomArray[2].src=WLW_PATH_IMAGE + '/map_zoomd3.png';
		_imgZoomArray[2].width='30';
		_imgZoomArray[2].height='6';
		_imgZoomArray[2].border='0';
		
		var mapZoomArea2=null;
		try{mapZoomArea2=iw.create('<map name="mapZoomArea2">');}
		catch(e){
			mapZoomArea2=iw.create('map');
			mapZoomArea2.name='mapZoomArea2';
		}
		iw.append(_container,mapZoomArea2);
		iw.append(mapZoomArea2,_area2);
		_area2.shape='rect';
		_area2.coords='1,1,30,6';
		_area2.style.cursor='pointer';
		IWEventManager.addDOMListener(_area2,'onmousedown',function(event){
							if(!map.isZooming()&&(_highValue>=_areaToZoom[1])){
								this.setZoomLevel(_areaToZoom[1],false);
							}
						}.iwclosure(_self)
					);
		iw.append(_container,_imgZoomArray[1]);
		_imgZoomArray[1].useMap='#mapZoomArea2';
		_imgZoomArray[1].onload=function(){correctPNG(this);}.iwclosure(_imgZoomArray[1]);
		_imgZoomArray[1].src=WLW_PATH_IMAGE + '/map_zoomd2.png';
		_imgZoomArray[1].width='30';
		_imgZoomArray[1].height='6';
		_imgZoomArray[1].border='0';
		
		var mapZoomArea1=null;
		try{mapZoomArea1=iw.create('<map name="mapZoomArea1">');}
		catch(e){
			mapZoomArea1=iw.create('map');
			mapZoomArea1.name='mapZoomArea1';
		}
		iw.append(_container,mapZoomArea1);
		iw.append(mapZoomArea1,_area1);
		_area1.shape='rect';
		_area1.coords='1,1,30,6';
		_area1.style.cursor='pointer';
		IWEventManager.addDOMListener(_area1,'onmousedown',function(event){
							if(!map.isZooming()&&(_highValue>=_areaToZoom[0])){
								this.setZoomLevel(_areaToZoom[0],false);
							}
						}.iwclosure(_self)
					);
		iw.append(_container,_imgZoomArray[0]);
		_imgZoomArray[0].useMap='#mapZoomArea1';
		_imgZoomArray[0].onload=function(){correctPNG(this);}.iwclosure(_imgZoomArray[0]);
		_imgZoomArray[0].src=WLW_PATH_IMAGE + '/map_zoomd1.png';
		_imgZoomArray[0].width='30';
		_imgZoomArray[0].height='6';
		_imgZoomArray[0].border='0';
		
		var mapZoomMinus=null;
		try{mapZoomMinus=iw.create('<map name="mapZoomMinus">');}
		catch(e){
			mapZoomMinus=iw.create('map');
			mapZoomMinus.name='mapZoomMinus';
		}
		iw.append(_container,mapZoomMinus);
		iw.append(mapZoomMinus,_areaMinus);
		_areaMinus.shape='rect';
		_areaMinus.coords='3,3,27,30';
		_areaMinus.style.cursor='pointer';
		IWEventManager.addDOMListener(_areaMinus,'onmousedown',function(event){
							_imgZoomMinus.src=WLW_PATH_IMAGE + '/map_zoomaminus.png';
							if(!map.isZooming()&&(_map.getCurrentMapType().getMinLevel()>_map.getZoom())){
								_map.zoomOut();
							}
						}.iwclosure(_self)
					);
		IWEventManager.addDOMListener(_areaMinus,'onmouseup',function(event){
							_imgZoomMinus.src=WLW_PATH_IMAGE + '/map_zoomdminus.png';
						}.iwclosure(_self)
					);
		IWEventManager.addDOMListener(_areaMinus,'onmouseout',function(event){
							_imgZoomMinus.src=WLW_PATH_IMAGE + '/map_zoomdminus.png';
						}.iwclosure(_self)
					);
		var _imgZoomMinus=iw.create('img');
		iw.append(_container,_imgZoomMinus);
		_imgZoomMinus.useMap='#mapZoomMinus';
		_imgZoomMinus.onload=function(){correctPNG(this);}.iwclosure(_imgZoomMinus);
		_imgZoomMinus.src=WLW_PATH_IMAGE + '/map_zoomdminus.png';
		_imgZoomMinus.width='30';
		_imgZoomMinus.height='32';
		_imgZoomMinus.border='0';
	}
	_container.id='WlWZoomControl';
	_container.style.width='30px';
	_container.style.height='124px';
	this.setLanguage(_map.getOptions().getLanguage());
	
	IWEventManager.addListener(_map,'onzoom',function(event){
					this.setZoomIndicator(_zoomToArea[event.newZoomLevel]);
				}.iwclosure(this));
	IWEventManager.addListener(_map,'aftercentered',function(event){this.setZoomLevel(_map.getZoom(),true);}.iwclosure(this));
	IWEventManager.addListener(_map,'aftermaptypechanged',function(event){
			_lowValue=_map.getCurrentMapType().getMaxLevel();
			_highValue=_map.getCurrentMapType().getMinLevel();
		}.iwclosure(this)
	);
	IWEventManager.addListener(_map,'afterlanguagechanged',function(e){_self.setLanguage(e.language);});
}

function WlwMeasureSegment(map,measureControl,coordinate){
	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(),_this.getPosition());}
		else
			{if(_line !=null){deleteLine();}}
		_this.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);_this.calculateDistance();}
	};
	this.moveTailOfLine=function(position){if(_line !=null){_renderer.move(_line,position,_this.getPosition());}};
	this.destroy=function(){
		IWEventManager.clearInstanceListeners(_this);
		deletePoint();
		deleteLine();
		_point=null;
		_previousSegment=null;
		_nextSegment=null;
	};
	this.getDistance=function(){return _distance;};
	this.getFormattedDistance=function(){return formatDistance(_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 {_measureControl.writeStatistic();}
	}
	function createLine(){
		_line=_renderer.drawLine(_previousSegment.getPosition(),_this.getPosition(),2,_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(_this.getPosition(),new IWSize(8,8),1,_COLOR_NORMAL,_COLOR_START);
		} else if(_nextSegment==null){
			_point=_renderer.drawEllipse(_this.getPosition(),new IWSize(8,8),1,_COLOR_NORMAL,_COLOR_END);
		} else {
			_point=_renderer.drawEllipse(_this.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 distance=_this.getFormattedDistance();
						_map.openTooltip(_coordinate,distance['distance']+' '+distance['unit']);
					}
				}
			);
			_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 WlwMeasureSegment(_map,_measureControl,coordinate);
		newSegment.setPreviousSegment(_previousSegment);
		newSegment.setNextSegment(_this);
		_previousSegment.setNextSegment(newSegment);
		_this.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);}
		_this.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);
				_this.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,_this.getPosition());
		_this.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,_this.getPosition());
		if(_line !=null&&_previousSegment !=null){
			_renderer.move(_line,_previousSegment.getPosition(),_this.getPosition());
			_line.style.visibility='visible';
			_line.style.display='';
		}
		_point.style.visibility='visible';
		_point.style.display='';
	}
	function formatDistance(meter){
		var format=new Object();
		if(meter>=1000000){
			format['distance']=Math.round(meter/1000);format['unit']='km';
		} else if(meter>=10000){
			format['distance']=Math.round(meter/10)/100;format['unit']='km';
		} else {
			format['distance']=Math.round(meter);format['unit']='m';
		}
		return format;
	}
	var _COLOR_NORMAL='#0A2D69';
	var _COLOR_START='#9EB8D5';
	var _COLOR_END='#FFBC27';
	var _this=this;
	var _measureControl=measureControl;
	var _mouseAdapter=new IWMouseAdapter();
	var _map=map;
	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;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);
}
