/*-----------------------------------------------------------------------
toolbar JavaScript File

version: 	4.1
author:		sebastian kupke
email:		sebastian.kupke@baral-geohaus.de
website:	http://www.baral.de
-----------------------------------------------------------------------*/

/* =namespace toolbar
-----------------------------------------------------------------------*/
ws.t = {
	
	t: {
		// defaultTool
		defaultTool: '',
		
		// fisheye
		halign: 'center',
		inactiveSize: 20,
		activeSize: 10,
		proximity: 20
	},
	
	// language
	l: {
		selectPolygon: '',
		selectPolygonComplete: ''
	},
	
	// select rect
	selectRectObj: null,
	
	// select polygon
	selectPolygonObj: null,
	
	// select circle
	selectCircleObj: null,
	
	// initialize fisheye
	init: function() {
		
		$('#toolbar').Fisheye({
			maxWidth: ws.t.t.activeSize,
			items: 'a',
			itemsText: 'span',
			container: '#fisheye',
			itemWidth: ws.t.t.inactiveSize,
			proximity: ws.t.t.proximity,
			halign : ws.t.t.halign
		});
	},
	
	/* =zoomin
	-----------------------------------------------------------------------*/
	zoomin: function() {
		
		ws.map.destroyEvents();
	
		$('#maps').css('cursor','url(style/' + ws.c.style + '/img/cursor/zoomin.cur),crosshair');
		
		var flag = false;
		var start = null;
		
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang 		
		var Elem_coords;
//stadtfix end			
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////			
		
		/* =mousedown
		----------------------------------------*/
		$('#maps').mousedown(function(e) {
				
			start = ws.map.getCurPx(e);
			
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang 
			
			// die Koordinaten von Imgs_px_start rechnen
		
			oEle = document.getElementsByName('oImg');
			var Img_sum=oEle.length;
			
			var Imgs_coords = [];
			for(var i=0;i<Img_sum;i++){			
				var Imgs_px_start= ws.map.getImgPos(oEle[i]);	
				Imgs_coords[i]=ws.map.px2Coords(Imgs_px_start);
			}
			
			// die start Koordinaten von Pin rechnen
			
			var Elem_px_start= ws.map.getElemPx();		
			Elem_coords=ws.map.px2Coords(Elem_px_start);
			
//stadtfix end			
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////			
			
			$('#zoomInRect').css({
				width: '0px',
				height: '0px',
				top: start.y + 'px',
				left: start.x + 'px',
				display: 'block'
			});
			
			flag = true;
		
			/* =mousemove
			----------------------------------------*/
			$('#maps').mousemove(function(e) {
				if (flag) {
			        var pos = ws.map.getCurPx(e);
			        
			        var top = (pos.y - start.y > 0) ? start.y : pos.y;
			        var left = (pos.x - start.x > 0) ? start.x : pos.x;
					
					$('#zoomInRect').css({
						width: Math.abs(pos.x - start.x) + 'px',
						height: Math.abs(pos.y - start.y) + 'px',
						top: top + 'px',
						left: left + 'px'
					});
				}
				
				return false;
			});
			
			/* =mouseup
			----------------------------------------*/
			$('#maps').mouseup(function(e) {
				flag = false;
		
				$('#zoomInRect').hide();
				
				$('#maps').unbind('mousemove');
				$('#maps').unbind('mouseup');
			       
				// Calculate center coords
				var pos = ws.map.getCurPx(e);
				
				var widthRect = Math.abs(pos.x - start.x);
				var heightRect = Math.abs(pos.y - start.y);
				
				if (widthRect > 1 || heightRect > 1) {
					
					var leftUpperX = (pos.x < start.x) ? pos.x : start.x;
			                var leftUpperY = (pos.y < start.y) ? pos.y : start.y;
					
					var leftUpperCoordsX = ws.map.center.x - (($('#map_div').width() / 2) * ws.map.scale);
					var leftUpperCoordsY = ws.map.center.y + (($('#map_div').height() / 2) * ws.map.scale);
					
					ws.map.center.x = leftUpperCoordsX + ((leftUpperX + (widthRect / 2)) * ws.map.scale);
					ws.map.center.y = leftUpperCoordsY - ((leftUpperY + (heightRect / 2)) * ws.map.scale);
					
					// Calculate scale factor
					if (widthRect > heightRect) {
						ws.map.scale = (widthRect * ws.map.scale) / $('#map_div').width();
			
					} else {
						ws.map.scale = (heightRect * ws.map.scale) / $('#map_div').height();
			
					}
				// Only mouse click
				} else {	
					var leftUpperCoordsX = ws.map.center.x - (($('#map_div').width() / 2) * ws.map.scale);
					var leftUpperCoordsY = ws.map.center.y + (($('#map_div').height() / 2) * ws.map.scale);
					
					ws.map.center.x = leftUpperCoordsX + (pos.x * ws.map.scale);
					ws.map.center.y = leftUpperCoordsY - (pos.y * ws.map.scale);
					
					// Calculate scale factor
					ws.map.scale = ws.map.scale / 2;
			
				}
				
				// Get zoomin map
				ws.map.load();
				
				
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///stadtfix anfang 
				 if(ws.c.stadtfix){
					// Pin einfügen		
					var Elem_px_end=ws.map.coords2Px(Elem_coords);
					
					$('#pin_select').css({					
						top: Elem_px_end.y + 'px',
						left: Elem_px_end.x + 'px'		
					});
					
					// Imgs einsetzen		
					for(var i=0;i<Img_sum;i++){					
						var Imgs_px_end=ws.map.coords2Px(Imgs_coords[i]);			
						oEle[i].style.position  = 'absolute';		
						oEle[i].style.top  = Imgs_px_end.y +"px";
						oEle[i].style.left = Imgs_px_end.x+"px";							  
					}
				 }
				
//stadtfix end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				return false;
			});
		
			return false;
		});
	},
	
	/* =zoomout
	-----------------------------------------------------------------------*/
	zoomout: function() {
		
		ws.map.destroyEvents();
	
		$('#maps').css('cursor','url(style/' + ws.c.style + '/img/cursor/zoomout.cur),crosshair');
		
		var flag = false;
		var start = null;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang 		
		var Elem_coords;
//stadtfix end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

		
		
		/* =mousedown
		----------------------------------------*/
		$('#maps').mousedown(function(e) {
				
			start = ws.map.getCurPx(e);
			
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang 			
			
			// die Koordinaten von Imgs_px_start rechnen
		
			oEle = document.getElementsByName('oImg');
			var Img_sum=oEle.length;
			
			var Imgs_coords = [];
			for(var i=0;i<Img_sum;i++){			
				var Imgs_px_start= ws.map.getImgPos(oEle[i]);	
				Imgs_coords[i]=ws.map.px2Coords(Imgs_px_start);
			}
			
			// die Koordinaten von Elem_px_start rechnen
			
			var Elem_px_start= ws.map.getElemPx();		
			Elem_coords=ws.map.px2Coords(Elem_px_start);
//stadtfix end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
			
				    
			$('#zoomOutRect').css({
				width: '0px',
				height: '0px',
				top: start.y + 'px',
				left: start.x + 'px',
				display: 'block'
			});
			
			flag = true;
			
			/* =mousemove
			----------------------------------------*/
			$('#maps').mousemove(function(e) {
				if (flag) {
			        var pos = ws.map.getCurPx(e);
			        var top = (pos.y - start.y > 0) ? start.y : pos.y;
			        var left = (pos.x - start.x > 0) ? start.x : pos.x;
					
					$('#zoomOutRect').css({
						width: Math.abs(pos.x - start.x) + 'px',
						height: Math.abs(pos.y - start.y) + 'px',
						top: top + 'px',
						left: left + 'px'
					});
				}
				
				return false;
			});
			
			/* =mouseup
			----------------------------------------*/
			$('#maps').mouseup(function(e) {
				flag = false;
		
				$('#zoomOutRect').hide();
				
				$('#maps').unbind('mousemove');
				$('#maps').unbind('mouseup');
				
				var pos = ws.map.getCurPx(e);
				
				// Calculate center coords
				var widthRect = Math.abs(pos.x - start.x);
				var heightRect = Math.abs(pos.y - start.y);
				    
				if (widthRect > 1 && heightRect > 1) {
					
					var leftUpperX = (pos.x < start.x) ? pos.x : start.x;
			                var leftUpperY = (pos.y < start.y) ? pos.y : start.y;
					
					var leftUpperCoordsX = ws.map.center.x - (($('#map_div').width() / 2) * ws.map.scale);
					var leftUpperCoordsY = ws.map.center.y + (($('#map_div').height() / 2) * ws.map.scale);
					
					ws.map.center.x = leftUpperCoordsX + ((leftUpperX + (widthRect / 2)) * ws.map.scale);
					ws.map.center.y = leftUpperCoordsY - ((leftUpperY + (heightRect / 2)) * ws.map.scale);
					
					// Calculate scale factor
					if (widthRect > heightRect) {
						ws.map.scale = ($('#map_div').width() * ws.map.scale) / widthRect;
	
					} else {
						ws.map.scale = ($('#map_div').height() * ws.map.scale) / heightRect;					}
				// Only mouse click
				} else {
					var leftUpperCoordsX = ws.map.center.x - (($('#map_div').width() / 2) * ws.map.scale);
					var leftUpperCoordsY = ws.map.center.y + (($('#map_div').height() / 2) * ws.map.scale);
					
					ws.map.center.x = leftUpperCoordsX + (ws.map.getCurPx(e).x * ws.map.scale);
					ws.map.center.y = leftUpperCoordsY - (ws.map.getCurPx(e).y * ws.map.scale);
					
					// Calculate scale factor
					ws.map.scale = ws.map.scale * 2;
				}
				
			        // Get zoomout map
				ws.map.load();
				
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang
                                if(ws.c.stadtfix){
					// Pin einfügen		
					var Elem_px_end=ws.map.coords2Px(Elem_coords);
					
					$('#pin_select').css({					
						top: Elem_px_end.y + 'px',
						left: Elem_px_end.x + 'px'		
					});
					
					
					// Imgs einsetzen		
					for(var i=0;i<Img_sum;i++){
						
						var Imgs_px_end=ws.map.coords2Px(Imgs_coords[i]);			
						oEle[i].style.position  = 'absolute';		
						oEle[i].style.top  = Imgs_px_end.y +"px";
						oEle[i].style.left = Imgs_px_end.x+"px";							  
					}
				}
				
//stadtfix end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						
				return false;
			});
			
			return false;
		});
	},
	
	/* =plus
	-----------------------------------------------------------------------*/
	plus: function() {
		
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang 		
		
		// die Koordinaten von Imgs_px_start rechnen
		
		oEle = document.getElementsByName('oImg');
		var Img_sum=oEle.length;
		
		var Imgs_coords = [];
		for(var i=0;i<Img_sum;i++){			
			var Imgs_px_start= ws.map.getImgPos(oEle[i]);	
			Imgs_coords[i]=ws.map.px2Coords(Imgs_px_start);
		}
		
		// die Koordinaten von Elem_px_start rechnen
		
		var Elem_px_start= ws.map.getElemPx();		
		var Elem_coords=ws.map.px2Coords(Elem_px_start);
		
//stadtfix end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
			
		
		// Calculate scale factor
		ws.map.scale /= 2;
	
		// Get zoomin map
		ws.map.load();
		
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang 		
		
		if(ws.c.stadtfix){
			//Pin einsetzen		
			var Elem_px_end=ws.map.coords2Px(Elem_coords);
			$('#pin_select').css({				
			top: Elem_px_end.y + 'px',
			left: Elem_px_end.x+ 'px'
			});
			
			// Imgs einsetzen		
			for(var i=0;i<Img_sum;i++){
				
				var Imgs_px_end=ws.map.coords2Px(Imgs_coords[i]);			
				oEle[i].style.position  = 'absolute';		
				oEle[i].style.top  = Imgs_px_end.y +"px";
				oEle[i].style.left = Imgs_px_end.x+"px";							  
			}
		}
//stadtfix end 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		
	
	},
	
	/* =minus
	-----------------------------------------------------------------------*/
	minus: function() {
		
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang 		
		// die Koordinaten von Imgs_px_start rechnen
		
		oEle = document.getElementsByName('oImg');
		var Img_sum=oEle.length;
		
		var Imgs_coords = [];
		for(var i=0;i<Img_sum;i++){			
			var Imgs_px_start= ws.map.getImgPos(oEle[i]);	
			Imgs_coords[i]=ws.map.px2Coords(Imgs_px_start);
		}
			
		// die Koordinaten von Elem_px_start rechnen	
		var Elem_px_start= ws.map.getElemPx();		
		var Elem_coords=ws.map.px2Coords(Elem_px_start);
//stadtfix end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		
						
		// Calculate scale factor
		ws.map.scale *= 2;
						
		// Get zoomin map
		ws.map.load();
		
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang

                if(ws.c.stadtfix){
			//Pin einsetzen		
			var Elem_px_end=ws.map.coords2Px(Elem_coords);
			$('#pin_select').css({				
			top: Elem_px_end.y + 'px',
			left: Elem_px_end.x+ 'px'
			});
			
			// Imgs einsetzen		
			for(var i=0;i<Img_sum;i++){
				
				var Imgs_px_end=ws.map.coords2Px(Imgs_coords[i]);			
				oEle[i].style.position  = 'absolute';		
				oEle[i].style.top  = Imgs_px_end.y +"px";
				oEle[i].style.left = Imgs_px_end.x+"px";							  
			}
		}
//stadtfix end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		
	},
	
	/* =pan
	-----------------------------------------------------------------------*/
	pan: function() {
		
		ws.map.destroyEvents();

		$('#maps').css('cursor','url(style/' + ws.c.style + '/img/cursor/pan.cur),move');
		
		var flag = false;
		var start = null;
	
			
		/* =mousedown
		----------------------------------------*/
		$('#map_div').mousedown(function(e) {
			
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang 			
			
			// die start Koordinaten von Imgs
		
			oEle = document.getElementsByName('oImg');
			var Img_sum=oEle.length;
			
			var Imgs_px_start=[];
			var Imgs_coords = [];
			
			for(var i=0;i<Img_sum;i++){			
				Imgs_px_start[i]= ws.map.getImgPos(oEle[i]);	
				Imgs_coords[i]=ws.map.px2Coords(Imgs_px_start);
			}
			
			// die start Koordinaten von Pin		
			start = ws.map.getCurPx(e);
			var Elem_px_start= ws.map.getElemPx();
			var Elem_coords=ws.map.px2Coords(Elem_px_start);
//stadtfix end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				
	    		    		    
		        flag = true;
		
			/* =mousemove
			----------------------------------------*/
			$('#map_div').mousemove(function(e) {
				if (flag) {
									
				var cur = ws.map.getCurPx(e);
			
				$('#map_div').css({
					
					top: (cur.y - start.y) + 'px',
					left: (cur.x - start.x) + 'px'		
				});
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang
                                if(ws.c.stadtfix){
				
					$('#pin_select').css({					
						top: Elem_px_start.y+ (cur.y - start.y)+'px',
						left: Elem_px_start.x+ (cur.x - start.x)+'px'		
					});
									
					for(var i=0;i<Img_sum;i++){									
						oEle[i].style.position = "absolute";						
						oEle[i].style.top=Imgs_px_start[i].y+ (cur.y - start.y)+'px';
						oEle[i].style.left=Imgs_px_start[i].x+ (cur.x - start.x)+'px';				
					}
				}
//stadtfix end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				
			}				
				return false;
			
			});
			
			/* =mouseup
			----------------------------------------*/
			$('#map_div').mouseup(function(e) {
				 
				flag = false;
				
				$('#map_div').unbind('mousemove');
			        $('#map_div').unbind('mouseup');
			    
			        var end = ws.map.getCurPx(e);
			  		    
				ws.map.center.x = ws.map.center.x - ((end.x - start.x) * ws.map.scale);
				ws.map.center.y = ws.map.center.y + ((end.y - start.y) * ws.map.scale);				
				
				// Get zoomin map
				ws.map.load();
				
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang 				
				if(ws.c.stadtfix){			
					//Pin einsetzen
					var Elem_px_end=ws.map.coords2Px(Elem_coords);
					$('#pin_select').css({						
						top: Elem_px_end.y + 'px',
						left: Elem_px_end.x + 'px'		
					});
																	
					// Imgs einsetzen		
					for(var i=0;i<Img_sum;i++){					
						var Imgs_px_end=ws.map.coords2Px(Imgs_coords[i]);			
						oEle[i].style.position  = 'absolute';		
						oEle[i].style.top  = Imgs_px_end.y +"px";
						oEle[i].style.left = Imgs_px_end.x+"px";							  
					}
				}
	//stadtfix end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
														
				return false;
			});		
			return false;
		});
	},
	
	/* =home
	-----------------------------------------------------------------------*/
	home: function() {
		
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang 		
		
		// die Koordinaten von Imgs_px_start rechnen
		
		oEle = document.getElementsByName('oImg');
		var Img_sum=oEle.length;
		
		var Imgs_coords = [];
		for(var i=0;i<Img_sum;i++){			
			var Imgs_px_start= ws.map.getImgPos(oEle[i]);	
			Imgs_coords[i]=ws.map.px2Coords(Imgs_px_start);
		}		
			
		// die Koordinaten von Elem_px_start rechnen	
		var Elem_px_start= ws.map.getElemPx();		
		var Elem_coords=ws.map.px2Coords(Elem_px_start);
//stadtfix end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		
			
		// Sets the center coords
		ws.map.center.x = (ws.map.startExtent.minx + ws.map.startExtent.maxx) / 2;
		ws.map.center.y = (ws.map.startExtent.miny + ws.map.startExtent.maxy) / 2;	
		ws.map.scale = (ws.map.startExtent.maxx - ws.map.startExtent.minx) / $('#map_div').width();
			
		// Now get the first map
		ws.map.load();
		
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang
                if(ws.c.stadtfix){
			//Pin einsetzen		
			var Elem_px_end=ws.map.coords2Px(Elem_coords);
			$('#pin_select').css({				
			top: Elem_px_end.y + 'px',
			left: Elem_px_end.x+ 'px'
			});
			
			// Imgs einsetzen		
			for(var i=0;i<Img_sum;i++){
				
				var Imgs_px_end=ws.map.coords2Px(Imgs_coords[i]);			
				oEle[i].style.position  = 'absolute';		
				oEle[i].style.top  = Imgs_px_end.y +"px";
				oEle[i].style.left = Imgs_px_end.x+"px";							  
			}
		}
//stadtfix end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		
	},
	
	/* =undo
	-----------------------------------------------------------------------*/
	undo: function() {
		
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang 				
		// die Koordinaten von Imgs_px_start rechnen
		
		oEle = document.getElementsByName('oImg');
		var Img_sum=oEle.length;
		
		var Imgs_coords = [];
		for(var i=0;i<Img_sum;i++){			
			var Imgs_px_start= ws.map.getImgPos(oEle[i]);	
			Imgs_coords[i]=ws.map.px2Coords(Imgs_px_start);			
		}
		// die Koordinaten von Elem_px_start rechnen	
		var Elem_px_start= ws.map.getElemPx();		
		var Elem_coords=ws.map.px2Coords(Elem_px_start);
//stadtfix end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
						
				
		if (ws.map.currentView > 0) {
			var view = ws.map.views[ws.map.currentView - 1];
			ws.map.center = view.center;
			ws.map.scale = view.scale;
			
			ws.map.currentView -= 1;
			
			ws.map.registerView = false;			
			ws.map.load();
			
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang
                        if(ws.c.stadtfix){		
				//Pin einsetzen		
				var Elem_px_end=ws.map.coords2Px(Elem_coords);
				$('#pin_select').css({				
				top: Elem_px_end.y + 'px',
				left: Elem_px_end.x+ 'px'
				});
				
				// Imgs einsetzen		
				for(var i=0;i<Img_sum;i++){
					
					var Imgs_px_end=ws.map.coords2Px(Imgs_coords[i]);			
					oEle[i].style.position  = 'absolute';		
					oEle[i].style.top  = Imgs_px_end.y +"px";
					oEle[i].style.left = Imgs_px_end.x+"px";							  
				}
			}
//stadtfix end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
			
		} else {
			//alert('Noch keine Karte aufgerufen!');
		}
	},
	
	/* =redo
	-----------------------------------------------------------------------*/
	redo: function() {
		
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang 				
		// die Koordinaten von Imgs_px_start rechnen
		
		oEle = document.getElementsByName('oImg');
		var Img_sum=oEle.length;
		
		var Imgs_coords = [];
		for(var i=0;i<Img_sum;i++){			
			var Imgs_px_start= ws.map.getImgPos(oEle[i]);	
			Imgs_coords[i]=ws.map.px2Coords(Imgs_px_start);
		}
		// die Koordinaten von Elem_px_start rechnen	
		var Elem_px_start= ws.map.getElemPx();		
		var Elem_coords=ws.map.px2Coords(Elem_px_start);
				
//stadtfix end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		
		if (ws.map.maxView > ws.map.currentView) {
			var view = ws.map.views[ws.map.currentView + 1];
			ws.map.center = view.center;
			ws.map.scale = view.scale;
			
			ws.map.currentView += 1;
			
			ws.map.registerView = false;
											
			ws.map.load();
			
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//stadtfix anfang
                        if(ws.c.stadtfix){
				//Pin einsetzen		
				var Elem_px_end=ws.map.coords2Px(Elem_coords);
				$('#pin_select').css({				
				top: Elem_px_end.y + 'px',
				left: Elem_px_end.x+ 'px'
				});
				
				// Imgs einsetzen		
				for(var i=0;i<Img_sum;i++){
					
					var Imgs_px_end=ws.map.coords2Px(Imgs_coords[i]);			
					oEle[i].style.position  = 'absolute';		
					oEle[i].style.top  = Imgs_px_end.y +"px";
					oEle[i].style.left = Imgs_px_end.x+"px";							  
				}
			}
//stadtfix end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
			
		} else {
			//alert('Noch keine neue Karte aufgerufen!');
		}
	},
	
	/* =identify
	-----------------------------------------------------------------------*/
	identify: function() {
		
		ws.map.destroyEvents();
		
		$('#maps').click(function(e) {
				
			var p = ws.map.getCurCoords(e);
			
			ws.usr.t.identify.end(p);
		});
	},
	
	/* =Select rect
	-----------------------------------------------------------------------*/
	selectRect: function() {
		
		ws.map.destroyEvents();
		
		// select clear
		$('#t_select_div').css('z-index', '2400').empty();
		
		// select rect
		ws.t.selectRectObj = {
			ll: new ws.cl.Point(0, 0),
			ur: new ws.cl.Point(0, 0)
		};
		
		// Set cursor
		$('#maps').css('cursor','url(style/' + ws.c.style + '/img/cursor/select.cur),crosshair');
		
		var flag = false;
		var start = null;
		
		// mousedown
		$('#maps').mousedown(function(e) {
				
			start = ws.map.getCurPx(e);
			
			$('#t_select_div').html('<div id="t_select_div_rect"></div>');
		    
			$('#t_select_div_rect').css({
				width: '0px',
				height: '0px',
				top: start.y + 'px',
				left: start.x + 'px',
				display: 'block',
				position: 'absolute',
				backgroundColor: '#d0ea59',
				opacity: '0.5',
				border: '1px solid #7E9612'
			});
			
			flag = true;
			
			$('#maps').mousemove(function(e) {
				if (flag) {
					
					var pos = ws.map.getCurPx(e);
			        var top = (pos.y - start.y > 0) ? start.y : pos.y;
			        var left = (pos.x - start.x > 0) ? start.x : pos.x;
					
					$('#t_select_div_rect').css({
						width: Math.abs(pos.x - start.x) + 'px',
						height: Math.abs(pos.y - start.y) + 'px',
						top: top + 'px',
						left: left + 'px'
					});
				}
				
				return false;
			});
			
			$('#maps').mouseup(function(e) {
				flag = false;
				
				$('#maps').unbind('mousemove');
				$('#maps').unbind('mouseup');
				
				var pos = ws.map.getCurPx(e);
				
				var x1,y1,x2,y2;
					
				if (start.x <= pos.x) {
					x1 = start.x;
					x2 = pos.x;
				} else {
					x1 = pos.x;
					x2 = start.x;
				}
				
				if (start.y <= pos.y) {
					y1 = pos.y;
					y2 = start.y;
				} else {
					y1 = start.y;
					y2 = pos.y;
				}
		        
				ws.t.selectRectObj = {
					ll: ws.map.px2Coords(new ws.cl.Point(x1, y1)),
					ur: ws.map.px2Coords(new ws.cl.Point(x2, y2))
				};
				
				ws.t.selectRectShow();
				
				ws.usr.t.selectRect.end(ws.t.selectRectObj);
				
				return false;
			});
			
			return false;
		});
	},
	
	selectRectShow: function() {
		
		var ll = ws.map.coords2Px(ws.t.selectRectObj.ll);
		var ur = ws.map.coords2Px(ws.t.selectRectObj.ur);
		
		var width = ur.x - ll.x;
		var height = ll.y - ur.y;
		
	    $('#t_select_div_rect').css({
	    	position: 'absolute',
	        top: ur.y + 'px',
	        left: ll.x + 'px',
	        width: width + 'px',
	        height: height + 'px',
	        display: 'block'
	    });
	},
	
	/* =Select polygon
	-----------------------------------------------------------------------*/
	selectPolygon: function() {
	    
		ws.map.destroyEvents();
		
		// select clear
		$('#t_select_div').css('z-index', '2400').empty();
		
		// select polygon
		ws.t.selectPolygonObj = {
			points: [],
			dragVertexes: true
		};
		
		// Cursor
		$('#maps').css('cursor','url(style/' + ws.c.style + '/img/cursor/select.cur),crosshair');
	    
	    /* =click
	    --------------------------------------*/
	    $('#maps').click(function(e) {
	    	if (e.target.id != 't_select_polygon_message_input') {
				var coords = ws.map.getCurCoords(e);
		        ws.t.selectPolygonObj.points.push(coords);
		        
		        ws.t.selectPolygonShow('open');
	    	}
	    });
	},
	
	selectPolygonShow: function(type) {
	
		// test if toaster should be opened
		var content = '<button onclick="ws.t.selectPolygonSubmit();" class="btn"><img src="style/' + ws.c.style + '/img/toolbar/selectPolygon/selectPolygon.gif" /> <span>' + ws.t.l.selectPolygonComplete + '</span></button>';
		ws.t.selectPolygonObj.points.length > 2 ? ws.tst.show(ws.t.l.selectPolygon, content) : ws.tst.hide();
		
		var mapDivWidth = $('#map_div').width();
		var mapDivHeight = $('#map_div').height();
		
		$('#t_select_div').empty().width(mapDivWidth).height(mapDivHeight);
		
		if ($.browser.msie) {
			var typeStr = type == 'open' ? '' : ' x';
			
			var coords = '';
			
			for (i = 0; i < ws.t.selectPolygonObj.points.length; i++) {
				var pos = ws.map.coords2Px(ws.t.selectPolygonObj.points[i], mapDivWidth, mapDivHeight);
				if (i == 0) {
					coords += 'm' + pos.x + ',' + pos.y + ' ';
				} else if (i == 1) {
					coords += 'l' + pos.x + ',' + pos.y + ' ';
				} else {
					coords += pos.x + ',' + pos.y + ' ';
				}
			}
			
			var line = $(document.createElement('v:shape')).attr({
				path: coords + typeStr + ' e',
				coordsize: mapDivWidth + ' ' + mapDivHeight,
				filled: false
			}).css({
				position: 'absolute',
				top: '0px',
				left: '0px',
				width: mapDivWidth + 'px',
				height: mapDivHeight + 'px'
			});
			
			var stroke = $(document.createElement('v:stroke')).attr({
				weight: '3',
				color: '#7c9311',
				opacity: '1.0'
			});
			
			line.append(stroke);
			
			$('#t_select_div').append(line);
			
		} else {
			var typeStr = type == 'open' ? 'polyline' : 'polygon';
			
	    	var svgNs = "http://www.w3.org/2000/svg";
			var svgRoot = document.createElementNS(svgNs, "svg");
			
			var line = document.createElementNS(svgNs, typeStr);
			
			var coords = '';
			for (i = 0; i < ws.t.selectPolygonObj.points.length; i++) {
				coords += i > 0 ? ' ' : '';
				var pos = ws.map.coords2Px(ws.t.selectPolygonObj.points[i], mapDivWidth, mapDivHeight);
				coords += pos.x + ',' + pos.y;
			}
			
			line.setAttribute('points', coords);
			line.setAttribute('fill', 'none');
			line.setAttribute('stroke', '#7c9311');
			line.setAttribute('stroke-width', '3');
			line.setAttribute('opacity', '1.0');
		    
			svgRoot.appendChild(line);
			
			// insert it into the dom
			$('#t_select_div').append(svgRoot);
		}
		
		// draw vertexes
		var vertexes = '';
	    
	    for (var i = 0; i < ws.t.selectPolygonObj.points.length; i++) {
	        var point = ws.map.coords2Px(ws.t.selectPolygonObj.points[i]);
	        
	        // vertex
	        var left = point.x - 8;
	        var top = point.y - 8;
	        
	        var title = 'x: ' + ws.t.selectPolygonObj.points[i].x + ' y: ' + ws.t.selectPolygonObj.points[i].y;
	        
	        vertexes += '<img id="vertex" vertex_id="' + i + '" class="vertex" src="style/' + ws.c.style + '/img/toolbar/selectPolygon/vertex.png" style="position: absolute; top: ' + top + 'px; left: ' + left + 'px; cursor: move; z-index: 20000;" title="' + title + '" />';
	    }
		
		$('#t_select_div').append(vertexes);
	    
	    // drag/drop vertexes?
	    if (ws.t.selectPolygonObj.dragVertexes) {
		    $('.vertex').draggable({
		        stop: function(e) {
		        	var id = $(this).attr('vertex_id');
		            
		            var coords = ws.map.getCurCoords(e);
		            ws.t.selectPolygonObj.points[id] = coords;
		            
		            ws.t.selectPolygonShow();
		        }
		    });
	    }
		
		$('#t_select_div').show();
	},
	
	selectPolygonSubmit: function() {
		ws.t.selectPolygonShow('closed');
		ws.usr.t.selectPolygon.end(ws.t.selectPolygonObj);
		ws.tst.hide();
	},
	
	/* =Select circle
	-----------------------------------------------------------------------*/
	selectCircle: function() {
	    
		ws.map.destroyEvents();
		
		// select clear
		$('#t_select_div').css('z-index', '2400').empty();
		
		// select circle
		ws.t.selectCircleObj = {
			center: new ws.cl.Point(0,0 ),
			r: 0
		};
		
		// Cursor
		$('#maps').css('cursor','url(style/' + ws.c.style + '/img/cursor/select.cur),crosshair');
	    
	    var step = 0;
	
	    /* =click
	    --------------------------------------*/
	    $('#maps').click(function(e) {
	    
	        if (step == 0) {
	            $('#t_select_div').empty();
	        
	            var point = ws.map.getCurPx(e);
	            ws.t.selectCircleObj.center = ws.map.px2Coords(point);
	            
	            // vertex
	            var left = point.x - 8;
	            var top = point.y - 8;
	            
	            var title = 'x: ' + ws.t.selectCircleObj.center.x + ' y: ' + ws.t.selectCircleObj.center.y;
	            
	            $('#t_select_div').append('<img src="style/' + ws.c.style + '/img/toolbar/selectCircle/vertex.png" style="position: absolute; top: ' + top + 'px; left: ' + left + 'px; z-index: 20000;" title="' + title + '" />');
	            
	            step++;
	            
	            $('#t_select_div').show();
	            
	        } else if (step == 1) {
	            
	            var radiusPoint = ws.map.getCurCoords(e);
	            
	            var diffX = Math.abs(radiusPoint.x - ws.t.selectCircleObj.center.x);
	            var diffY = Math.abs(radiusPoint.y - ws.t.selectCircleObj.center.y);
	            
	            var r = Math.round(Math.sqrt(diffX * diffX + diffY * diffY));
	            
	            ws.t.selectCircleObj.r = r;
	            
	            step = 0;
	            
	            ws.t.selectCircleShow();
	            
	            ws.usr.t.selectCircle.end(ws.t.selectCircleObj);
	        }
	    });
	},
	
	selectCircleShow: function() {
	
		var mapDivWidth = $('#map_div').width();
		var mapDivHeight = $('#map_div').height();
		
		$('#t_select_div').empty().width(mapDivWidth).height(mapDivHeight);
	    
	    var center = ws.map.coords2Px(ws.t.selectCircleObj.center);
	    var r = ws.t.selectCircleObj.r / ws.map.scale;
	    
	    if ($.browser.msie) {
			var diameter = r * 2;
			var top = center.y - r;
			var left = center.x - r;
			
			var circle = $(document.createElement('v:oval')).css({
				width: diameter + 'px',
				height: diameter + 'px',
				position: 'absolute',
				top: top + 'px',
				left: left + 'px'
			});
			
			var fill = $(document.createElement('v:fill')).attr({
				color: 'white',
				opacity: '0.0'
			});
			
			var stroke = $(document.createElement('v:stroke')).attr({
				color: '#7c9311',
				weight: '3',
				opacity: '1.0'
			});
			
			circle.append(fill);
			circle.append(stroke);

			$('#t_select_div').append(circle);
			
	    } else {
	    	var svgNs = "http://www.w3.org/2000/svg";
			var svgRoot = document.createElementNS(svgNs,"svg");
			
			var circle = document.createElementNS(svgNs,'circle');
			circle.setAttribute('r',r);
			circle.setAttribute('cx',center.x);
			circle.setAttribute('cy',center.y);
			circle.setAttribute('stroke','#7c9311');
			circle.setAttribute('stroke-width','3');
			circle.setAttribute('stroke-opacity','1.0');
			circle.setAttribute('fill','white');
			circle.setAttribute('fill-opacity','0.0');
			svgRoot.appendChild(circle);
			
			// insert it into the dom
			$('#t_select_div').append(svgRoot);
	    }
	    
	    $('#t_select_div').show();
	},
	
	/* =help
	-----------------------------------------------------------------------*/
	help: function() {
		
		alert('help pressed');
	},
	
	/* =ape
	-----------------------------------------------------------------------*/
	ape: function() {
		
		alert('ape pressed');
	},
	
	empty: function() {
		
		// nothing, only placeholder
	}
}
































/*pan: function() {
		
		ws.map.destroyEvents();

		$('#maps').css('cursor','url(style/' + ws.c.style + '/img/cursor/pan.cur),move');
		
		var flag = false;
		var start = null;
		var gx;
		var gy;
	

		$('#map_div').mousedown(function(e) {
				
		    start = ws.map.getCurPx(e);
		    
		    flag = true;
		    
		    
		
			$('#map_div').mousemove(function(e) {
				if (flag) {
					
					var cur = ws.map.getCurPx(e);

		
				  //var pin=ws.m.pin.mouseMove(e);
			  
				  py=parseInt(document.getElementById('pin_select').style.top);
          px=parseInt(document.getElementById('pin_select').style.left);
                 
          var centerPixX = ($('#map_div').width() / 2) - px;
					var centerPixY = ($('#map_div').height() / 2) - py;
			
					var diffMeterX = centerPixX * ws.map.scale;
					var diffMeterY = centerPixY * ws.map.scale;
					
					gx = Math.abs(diffMeterX - ws.map.center.x);
					gy = Math.abs(diffMeterY + ws.map.center.y);
					      
					$('#map_div').css({
						top: (cur.y - start.y) + 'px',
						left: (cur.x - start.x) + 'px'
		
					});													 					
				}		
				return false;
			});
			
		
		
			$('#map_div').mouseup(function(e) {
				flag = false;
				//dragObject=null;
				
				$('#map_div').unbind('mousemove');
			    $('#map_div').unbind('mouseup');
			    
			    var end = ws.map.getCurPx(e);
			  		    
				  ws.map.center.x = ws.map.center.x - ((end.x - start.x) * ws.map.scale);
				  ws.map.center.y = ws.map.center.y + ((end.y - start.y) * ws.map.scale);
				 
				  var widthHalf = $('#map_div').width() / 2;
					var heightHalf = $('#map_div').height() / 2;
					
					var lux = ws.map.center.x - widthHalf * ws.map.scale;
					var luy = ws.map.center.y + heightHalf * ws.map.scale;
					
				  // Pixel diff from left upper
				  var x = (gx - lux) / ws.map.scale;
					var y = (luy - gy) / ws.map.scale;
					
					//return new ws.cl.Point(Math.round(x), Math.round(y));
				
				 	$('#pin_select').css({
					 top: Math.round(y) + 'px',
						left:  Math.round(x) + 'px'
		
					});
										
			    // Get zoomin map
					ws.map.load();
				
				return false;
			});
		
			return false;
		});
	},*/






/*if (idObject != null){
			 			idObject.style.position = "absolute";					
						idObject.style.left =100+50*i + "px";
						idObject.style.top = 200+50*i  + "px";
						
						idObject.parentNode.removeChild(idObject);
						var oImg= ws.i.pin.set();				    
						//for(var i=0;i<oImg.length;i++){						
						oImg[i].style.position = "absolute";					
						oImg[i].style.left =100+50*i + "px";
						oImg[i].style.top = 200+50*i  + "px";			
						//}
					    }*/
/*var img_uhr="http://luo:8080/websis/style/default/img/modules/pin/clock.png";
			        var img_krankhaus="http://luo:8080/websis/style/default/img/modules/pin/krankenhaus.png";
				var xp =new Array();
			        var yp =new Array();
				var points= [				
				{p:img_uhr,x:3509103.178,y:5425187.344},
				{p:img_uhr,x:3509123.178,y:5425187.344},
				{p:img_krankhaus,x:3509143.178,y:5425187.344},
				{p:img_uhr,x:3509163.178,y:5425187.344},
				{p:img_uhr,x:3509183.178,y:5425187.344},						
			        ];
				var width = $('#map_div').width();
				var height = $('#map_div').height();
								
				var widthHalf = width / 2;
				var heightHalf = height / 2;
			
				var lux = ws.map.center.x - widthHalf * ws.map.scale;
			        var luy = ws.map.center.y + heightHalf * ws.map.scale;
								
				oEle = document.getElementsByName('oImg');
				var Img_sum=oEle.length;
				for(var i=0;i<Img_sum;i++){
					
					xp[i] = (points[i].x  - lux) / ws.map.scale;
				        yp[i] = (luy - points[i].y) / ws.map.scale;
										
					oEle[i].style.position = "absolute";					
					oEle[i].style.left =xp[i] + "px";
					oEle[i].style.top = yp[i] + "px";
					
					var idObject = document.getElementById('img_Id');   
				        if (idObject != null)   
				        idObject.parentNode.removeChild(idObject);
				
					oEle[i].style.position = "absolute";					
					oEle[i].style.left =100+50*i + "px";
					oEle[i].style.top = 200+50*i  + "px";	
			        }*/
						
						
						
						//Elements löschen
						
						
						
		/*oEle = document.getElementsByName('oImg');
		var Img_sum=oEle.length;
		
		for(var i=0;i<Img_sum;i++){					
		var idObject = document.getElementById('oImg');   
		if (idObject != null)   
		    idObject.parentNode.removeChild(idObject);				    
		}
		// neue Elements erstellen
		if(Img_sum!=0){
		    var oImg= ws.i.pin.set();	
		}*/
	
