function ravMap(gm_map_name) {
	this.gm_map;
	this.gm_errorAtLevel = 0;
	this.gm_errorOriginalType = false;
	this.gm_tilesPending = false;
	this.gm_start_marker = new Array();
	this.gm_location_marker = new Array();
	
	this.tempAddOverlay = new Array();
	
	// diverse Einstellungen
	this.gm_max_visible_markers = 50;
	// scheint fuer cambio gut zu sein
	this.gm_min_markers_per_cluster = 3;
	this.gm_marker_grid_size = 10;
	this.gm_cluster_lines_per_info_box = 2;

	this.gm_map_name = gm_map_name;
	
	this.MTMCbaseUrl = '/cambio/styles/gmaps/maptype/';
	this.setMTMCbaseUrl = function(burl) {
		MTMCbaseUrl = burl;
	}
	
	this.gm_show_control_overview = false;
	this.set_gm_show_control_overview = function(b) {
		this.gm_show_control_overview = b;
	}

	this.gm_show_control = false;
	this.set_gm_show_control = function(b) {
		this.gm_show_control = b;
		if(b) {
			this.gm_show_control_sm = false;
		}
	}

	this.gm_show_control_sm = true;
	this.set_gm_show_control_sm = function(b) {
		this.gm_show_control_sm = b;
		if(b) {
			this.gm_show_control = false;
		}
	}

	this.gm_show_control_type = true;
	this.set_gm_show_control_type = function(b) {
		this.gm_show_control_type = b;
		if(b) {
			this.gm_show_control_type_sm = false;
		}
	}

	this.gm_show_control_type_sm = false;
	this.set_gm_show_control_type_sm = function(b) {
		this.gm_show_control_type_sm = b;
		if(b) {
			this.gm_show_control_type = false;
		}
	}

	this.gm_show_control_scale = true;
	this.set_gm_show_control_scale = function(b) {
		this.gm_show_control_scale = b;
	}
	
	this.gm_center = null; //'53.08401,8.82865';
	this.set_gm_center = function(lat,lng) {
		if(lat && lng) {
			this.gm_center = new GLatLng(lat,lng);
		}
		else {
			this.gm_center = null;
		}
	}

	this.gm_zoom = null;
	this.set_gm_zoom = function(c) {
		if(c > 0 && c <= 17) {
			this.gm_zoom = c;
		}
		else {
			this.gm_zoom = null;
		}
	}

	this.gm_type = 'G_NORMAL_MAP';
	this.set_gm_type = function(c) {
		if(this.gm_type)
			this.gm_type = c;
	}

	this.gm_start_icon = null;
	//Icon fuer Startpunkt erstellen z.Z. 16x16
	this.set_gm_start_icon = function(iconurl) {
		var icon = new GIcon();
		icon.image = iconurl;
		icon.iconSize = new GSize(16, 16);
		icon.iconAnchor = new GPoint(10, 14);
		icon.infoWindowAnchor = new GPoint(14, 1);
		this.gm_start_icon = icon;
	}

	this.gm_locations_icon = null;
	//Icon fuer Orte erstellen erstellen z.Z. 16x16
	this.set_gm_locations_icon = function(iconurl) {
		var icon = new GIcon();
		icon.image = iconurl;
		icon.iconSize = new GSize(16, 16);
		icon.iconAnchor = new GPoint(10, 14);
		icon.infoWindowAnchor = new GPoint(14, 1);
		this.gm_locations_icon = icon;
	}

	this.gm_cluster_icon = null;
	//Cluster-Icon erstellen z.Z. 27x27
	this.set_gm_cluster_icon = function(iconurl) {
		var icon = new GIcon();
		icon.image = iconurl;
		icon.iconSize = new GSize(27, 27);
		icon.iconAnchor = new GPoint(14, 14);
		icon.infoWindowAnchor = new GPoint(25, 2);
		this.gm_cluster_icon = icon;
	}	
	
	/*this.load = gm_load;
	this.unload = gm_unload;
	this.zoom_in_details = gm_zoom_in_details;
	this.show_otherpage = gm_show_otherpage;
	this.addDraggableMarker = gm_addDraggableMarker;
	this.addTextOverlay = gm_addTextOverlay;
	
	this.add_startmarker = gm_add_startmarker;
	this.private_gm_show_start = private_gm_show_start;
	
	this.add_locationmarker = gm_add_locationmarker;
	this.private_gm_show_locations = private_gm_show_locations;
	
	this.private_handlemakerclick = private_handlemakerclick;*/
}

/*
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||| Methoden
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/

//enclosure f?r funtionen im listener - wie beim clusterer
ravMap.makeCaller = function ( func, arg, m ) {
		return function () { func( arg, m ); };
	};
ravMap.makeCaller_mitArg = function ( func, m ) {
		return function (arg) { func( arg, m ); };
	};


ravMap.prototype.private_gm_click_listener = function(overlay, m) {
		// ist dummerweise auch manchmal was anderes als ein marker
		if (overlay && overlay.openInfoWindowHtml) {
			m.private_handlemarkerclick(overlay, m.gm_start_marker);
			m.private_handlemarkerclick(overlay, m.gm_location_marker);
		}
	}
ravMap.prototype.private_gm_drag_listener = function(m) {
		m.gm_map.closeInfoWindow();
	}
	
ravMap.prototype.private_handlemarkerclick = function(marker,gmarr) {
	for(var i=0; i < gmarr.length; ++i) {
		var gm = gmarr[i];
		if(marker.getPoint().equals(gm.latlng_)) {
			if( gm.text_) { 
				// funktioniert anscheinend nicht
				marker.openInfoWindowHtml(gm.text_, { maxWidth: '100' });
			}
			else if( gm.gotlocation_) {
				document.location = gm.gotlocation_				
			}
			else {
				marker.showMapBlowup();
			}
		}
	}
}

ravMap.prototype.load = function() {
	//try {
		if(this.gm_map_name == undefined) {
			alert('Keine DIV-Id bekannt: '+this.gm_map_name);
			return false;
		}
		
		if (GBrowserIsCompatible()) {
			var map_div = document.getElementById(this.gm_map_name);
			this.gm_map = new GMap2(map_div);
			
			//CLUSTERER
			//http://www.acme.com/javascript/#Clusterer
			var clusterer = new Clusterer(this.gm_map);
			clusterer.SetMaxVisibleMarkers(this.gm_max_visible_markers);
			clusterer.SetMinMarkersPerCluster(this.gm_min_markers_per_cluster);
			clusterer.SetGridSize(this.gm_marker_grid_size);			
			clusterer.SetMaxLinesPerInfoBox(this.gm_cluster_lines_per_info_box);
			
			if(this.gm_cluster_icon != null) {
				clusterer.SetIcon(this.gm_cluster_icon);
			}			

			//CONTROLS
			if(this.gm_show_control) {
				this.gm_map.addControl(new GLargeMapControl());		
			}

			if(this.gm_show_control_sm) {
				this.gm_map.addControl(new GSmallMapControl());		
			}

			if(this.gm_show_control_scale) {
				this.gm_map.addControl(new GScaleControl());
			}

			if(this.gm_show_control_type) {
				this.gm_map.addControl(new GMapTypeControl());
			}
			
			if(this.gm_show_control_overview) {
				this.gm_map.addControl(new GOverviewMapControl());
			}

			//http://maps.tafoni.net/MapTypeMenuControl/	
			if(this.gm_show_control_type_sm) {
				MTMC.addMapControl(this.gm_map, new MTMC.MapTypeMenuControl());
			}

			var ll;
			var bounds = new GLatLngBounds();
			
			//startpunkt zeigen
			this.private_gm_show_start(bounds);
			
			//sollte auch schon hier gehen, auf die locations wir ja sowieso nicht gezoomt
			//-- spart einmal zentrieren
			this.center_and_zoom(bounds);
			
			//overlays hinzufuegen
			// --  muss nach dem zentrieren passieren
			for(var iAddOverlay = 0; iAddOverlay < this.tempAddOverlay.length; iAddOverlay++) {
				this.gm_map.addOverlay(this.tempAddOverlay[iAddOverlay]);
			}

			//andere symbole vorbereiten
			this.private_gm_show_locations(clusterer,bounds);

			
			this.center_and_zoom(bounds);			
			
			//maptyp setzen
			this.gm_map.setMapType(this.gm_type);
			
			//Mouse Zoom ermoeglichen
			this.gm_map.enableContinuousZoom();
			this.gm_map.enableScrollWheelZoom();
			
			//Klicks abfangen
			GEvent.addListener(this.gm_map, 'click',
				ravMap.makeCaller_mitArg(ravMap.prototype.private_gm_click_listener, this) 
				); //mitArg fuer overlay-parameter, this fuer zugriff auf objekt aus funktion heraus
				
			//Scrollen der Seite verhindern
			GEvent.addDomListener(map_div, "DOMMouseScroll", wheelevent);
			map_div.onmousewheel = wheelevent;
			
			/*
			//Rauszoomen wenn Kartenmaterial fehlt
			G_NORMAL_MAP.getErrorMessage = function() {
				var z = gm_map.getZoom();
				if (z > 8 && !gm_tilesPending) {
					gm_map.setZoom(z - 1);
					//alert('Die Zoomstufe wurde automatisch verkleinert, da leider kein Kartenmaterial fuer eine so hohe Zoomstufe vorhanden ist.');
					
				}
				return "";
			};
			
			//Zu normaler Map wechseln wenn Kartenmaterial fehlt
			G_HYBRID_MAP.getErrorMessage = function () {
				//alert('mt1');
				gm_errorAtLevel = gm_map.getZoom();
				gm_errorOriginalType = gm_map.getCurrentMapType();
				gm_map.setMapType(G_NORMAL_MAP); 
				//alert('mt1k');
			};
			G_SATELLITE_MAP.getErrorMessage = G_HYBRID_MAP.getErrorMessage;
			*/			
		} else {
			//Eventuell Meldung anzeigen
		}
	//} catch(e) {
	//	alert('Es ist ein Fehler aufgetreten:' + e);
	//}
}


//Automatisch zoomen und zentrieren
//http://www.econym.demon.co.uk/googlemaps/basic14.htm			
ravMap.prototype.center_and_zoom = function(bounds) {
	//center
	if(this.gm_center != null ) {
		this.gm_map.setCenter(this.gm_center);
	} else {
		this.gm_map.setCenter(bounds.getCenter());				
	}
	
	// zoom
	if(this.gm_zoom != null) {
		this.gm_map.setZoom(this.gm_zoom);
	}
	else {
		if(this.gm_map.getBoundsZoomLevel(bounds) < 17) {
			this.gm_map.setZoom(this.gm_map.getBoundsZoomLevel(bounds));
		}
		else {
			this.gm_map.setZoom(17);
		}
	}
}


ravMap.prototype.unload = function() {
	GUnload();
}


/**
	zoom is standard zoom factor
	if diff > 0 we might use it to extend selection
	a little be decreasing zoom factor
*/

ravMap.prototype.zoom_in_details = function(zoom,lat,lng,diff) {
	if (GBrowserIsCompatible() && this.gm_map != null) {
		// sicher stellen, dass alles zugemacht wird
		// wenn etwas offen ist - macht sonst probleme
		// aus einem Fenster raus zu justieren
		this.gm_map.closeInfoWindow();
		this.gm_map.setCenter(new GLatLng(lat,lng));

		if(zoom == null) {
			zoom = this.gm_zoom;
		}
		if(zoom == null) {
			zoom = 10;
		}
		
		if(diff) {
		/*
			var sub = Math.log(diff + 0.6)/Math.LN2;
			//alert("zoom: " + sub);
			// we assume we can cover about 1km
			if(sub > 0 ) { 
				zoom = Math.floor(zoom - sub);
				if(zoom < 1) {
					zoom = 1;
				}
			}
		*/
			// aw 2007-12-11 
			// Idee wir haben 4km durchmesser der Karte bei Stufe 13
			// dann
			zoom = Math.floor(14 -  Math.log(diff)/Math.LN2);

			alert("zoom: " + zoom);
			
			this.gm_map.setZoom(zoom);
		}
		else {
			this.gm_map.setZoom(zoom);
		}
	}
}

ravMap.prototype.addDraggableMarker = function() {	
	var center = this.gm_map.getCenter();
	var marker = new GMarker(this.center, {draggable: true});
	
	GEvent.addListener(marker, 'dragstart',
		GEvent.callbackArgs(ravMap, ravMap.prototype.private_gm_drag_listener, this)
		);
	
	GEvent.addListener(marker, "dragend", function() {
	  	marker.openInfoWindowHtml("Momentane Koordinaten (L&auml;ngengrad,Breitengrad)<br>" + marker.getPoint());
	  });
	
	this.gm_map.addOverlay(marker);
}


ravMap.prototype.addTextOverlay = function(point,text,maxzoom) {
	var to = new TextOverlay(point,text,maxzoom);
	this.gm_map.addOverlay(to);
	return to;
}


ravMap.prototype.add_startmarker = function(lat,lng,txt,label,titel,url,hide,drag) {
	var loc = new RWLocation(new GLatLng(lat,lng),txt,label,titel,null,url,hide,drag);
	this.gm_start_marker.push(loc);	
	return loc;
}

ravMap.prototype.private_gm_show_start = function(bounds) {
	for(var i=0; i < this.gm_start_marker.length; ++i) {
		var gm = this.gm_start_marker[i];
		var marker = null;

		if(gm.draggable_) {
			marker = new GMarker(gm.latlng_, {draggable: true});
			GEvent.addListener(marker, 'dragstart',
				GEvent.callbackArgs(ravMap, ravMap.prototype.private_gm_drag_listener, this)
				);
	
			if(gm.editable_) {
					
                GEvent.addListener(marker, "dragend", GEvent.callbackArgs(ravMap, function(m) {
                //GEvent.addListener(marker, "dragend", function() {
					var point =  marker.getPoint();
					if(false) {
						var html = "Momentane Koordinaten<br>" +point + "<br>"
							+ '<form action="" method="GET">'
							+ '<input type="hidden" name="gm_edit_lat" value="' + point.lat() + '">'
							+ '<input type="hidden" name="gm_edit_lng" value="' + point.lng() + '">'
							+ '<input type="hidden" name="gm_edit_zoom" value="' + m.gm_map.getZoom() + '">'
							+ '<input type="hidden" name="gm_edit_update" value="true">'
							+ '<input type="hidden" name="gm_edit_id" value="' + gm.edit_id_+ '">'
							+ '<input type="submit" name="dummy" value="eintragen">'
							+ '</form>'
							;
					  	marker.openInfoWindowHtml(html);
				  	}
					// oder	
					else {
						var html = "<b>" + gm.commonname_ + "</b><br>"
							+ "Momentane Koordinaten<br>" +point + "<br>"
					
						if(gm.edit_form_ != null) {
							gm.edit_form_.gm_edit_lng.value = point.lng();
							gm.edit_form_.gm_edit_lat.value = point.lat();
							gm.edit_form_.gm_edit_zoom.value = m.gm_map.getZoom();
							gm.edit_form_.gm_edit_lat.style.backgroundColor  = "lightgreen"
							gm.edit_form_.gm_edit_lng.style.backgroundColor = "lightgreen"
							gm.edit_form_.gm_edit_zoom.style.backgroundColor = "lightgreen"
							gm.edit_form_.gm_edit_button.style.backgroundColor = "lightgreen"
						}	
					  	marker.openInfoWindowHtml(html);
					  }
				  // });
                  },this));
                  
               GEvent.addListener(this.gm_map, "zoomend", function(vorher, nachher) {
                       if(vorher && nachher && vorher != nachher) {
                           if(gm.edit_form_ != null) {
                              gm.edit_form_.gm_edit_zoom.value = nachher;
                              gm.edit_form_.gm_edit_zoom.style.backgroundColor = "lightgreen";
                              gm.edit_form_.gm_edit_button.style.backgroundColor = "lightgreen"
                           }
                       }
                   });
                  
 			}
			else {
				GEvent.addListener(marker, "dragend", function() {
				  	marker.openInfoWindowHtml("Momentane Koordinaten<br>" + marker.getPoint());
				  });
			}  
		}
		else {
			marker = new GMarker(gm.latlng_,this.gm_start_icon);
		}
		
		//this.gm_map.addOverlay(marker);
		this.tempAddOverlay.push(marker);
		
		if(gm.inlcludeinbounds_) {
			bounds.extend(gm.latlng_);
		}
		
		if(gm.label_) {
			//  TODO 12 als zoomstufe festverdrahet
			var to = this.addTextOverlay(gm.latlng_,gm.label_,12);
		}
		
		if(gm.hide_) {
			marker.hide();
		}
		
		/*//Klicks abfangen
		GEvent.addListener(marker, 'click',
			GEvent.callbackArgs(ravMap, ravMap.prototype.private_gm_click_listener, marker, this)
			);*/
	}
}

ravMap.prototype.add_locationmarker = function(lat,lng,txt,label,title,clustertext,url,hide,drag) {
	var loc = new RWLocation(new GLatLng(lat,lng),txt,label,title,clustertext,url,hide,drag);
	this.gm_location_marker.push(loc);	
	return loc;
}

ravMap.prototype.private_gm_show_locations = function(clusterer, bounds) {
	for(var i=0; i < this.gm_location_marker.length; ++i) {
		// TODO doppelte Punkte rausnehmen
		var gm = this.gm_location_marker[i];
		if(gm.title_) {
			marker = new GMarker(gm.latlng_,{'icon': this.gm_locations_icon, 'title': gm.title_});
		}
		else {	
			marker = new GMarker(gm.latlng_,this.gm_locations_icon);
		}
		
		if(gm.clustertext_) {
			clusterer.AddMarker(marker, gm.clustertext_);
		}
		else if(gm.text_) {
			clusterer.AddMarker(marker, gm.text_);
		}
		else if(gm.title_) {
			clusterer.AddMarker(marker, gm.title_);
		}
		else if(gm.label_) {
			clusterer.AddMarker(marker, gm.label_);
		}
		else {
			clusterer.AddMarker(marker, '--');
		}
		
		/*GEvent.addListener(marker, 'click',
			GEvent.callbackArgs(ravMap, ravMap.prototype.private_gm_click_listener, marker, this)
			);*/
		
		if(gm.inlcludeinbounds_) {
			bounds.extend(gm.latlng_);
		}
			
		if(gm.label_) {
			//  TODO 12 als zoomstufe festverdrahet
			var to = this.addTextOverlay(gm.latlng_,gm.label_,12);
			/*		
				TODO wie machen wir das
					GEvent.addListener(to, 'click',
							function(maker, point) {
			//					gm_click_listener(marker,point);
								alert("test");
							}
						);
			*/				
		}
	}
}


/*
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
||| Andere Objekte + Funktionen
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
*/

//Scrollen der Seite verhindern
//aus .load aufgerufen
function wheelevent(e) {
	if (!e) e = window.event;
	
	if (e.preventDefault) e.preventDefault();
	e.returnValue = false;
}

function gm_show_otherpage(url) {
	if(window.name == 'gminnermap') {
		window.parent.location = url;
	}
	else {
		window.location = url;
	}
}
	
//Vergroessern
function ravVergroessern() {}
	ravVergroessern.prototype = new GControl();
	ravVergroessern.prototype.initialize = function(gm_map) {
	var div = document.createElement("div");
		
	div.style.textDecoration = "underline";
	div.style.color = "#0000cc";
	div.style.backgroundColor = "white";
	div.style.font = "small Arial";
	div.style.borderTop = "1px solid black";
	div.style.borderLeft = div.style.borderTop;
	div.style.padding = "2px";
	div.style.textAlign = "center";
	div.style.width = "6em";
	div.style.cursor = "pointer";
		
	div.appendChild(document.createTextNode("Vollansicht"));
		
	GEvent.addDomListener(div, "click", function() {
		alert('hier sollte jetzt parent.doVollansicht(gm_map.getCenter().toUrlValue(), gm_map.getZoom()) aufgerufen werden...');
		alert(gm_map.getCenter().toUrlValue() + '|' + gm_map.getZoom());
	});
		
	gm_map.getContainer().appendChild(div);
	return div;
}

ravVergroessern.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(0, 0));
}




/*
	Auswahl aus einer Liste mit gegebener lat,lng suchen 
*/
function submitSelectLocation(form, strasse, hausnr, plz, ort, lat, lng) {
	if(strasse) {	
		var hn = form.gm_hausnr.value;
		if( hn != '' && hausnr == '') {
			var idx = strasse.lastIndexOf(hn);
			if(idx == (strasse.length - hn.length) ) {
				hausnr = hn;
				strasse = strasse.substring(0,idx);
			}
		}
	}
	else {	strasse = "";	}
	form.gm_strasse.value = strasse;

	if(hausnr) {	}
	else {	hausnr = "";	}
	form.gm_hausnr.value = hausnr;

	if(ort) {	}
	else {		ort = "";	}
	form.gm_ort.value = ort;

	if(plz) {	}
	else {		plz = "";	}
	form.gm_plz.value = plz;

	if(lat) {	}
	else {		lat = "";	}
	form.gm_lat.value = lat;

	if(lng) {	}
	else {		lat = "";	}
	form.gm_lng.value = lng;
	
	form.submit();
}



// A Rectangle is a simple overlay that outlines a lat/lng bounds on the
// map. It has a border of the given weight and color and can optionally
// have a semi-transparent background color.
function TextOverlay(point,text,maxzoom,background) {
  this.latlng_ = point;
  this.text_ = text;
  this.maxzoom_ = 0 || maxzoom;
  this.background_ = background || 'white';  
}

TextOverlay.prototype = new GOverlay();

// Creates the DIV representing this rectangle.
TextOverlay.prototype.initialize = function(map) {
  // Create the DIV representing our rectangle
  var div = document.createElement("div");
  div.style.border = "1px solid black";
  div.style.position = "absolute";
  div.style.fontSize = "9px";
  div.style.paddingLeft = "2px";
  div.style.paddingRight = "2px";
  div.style.paddingTop = "0px";
  div.style.paddingBottom = "0px";
  //div.style.cursor = "pointer";
  div.style.backgroundColor = this.background_;
  div.appendChild(document.createTextNode(this.text_));
  // Our rectangle is flat against the map, so we add our selves to the
  // MAP_PANE pane, which is at the same z-index as the map itself (i.e.,
  // below the marker shadows)
  map.getPane(G_MAP_MAP_PANE).appendChild(div);

  this.map_ = map;
  this.div_ = div;
  
  
}

// Remove the main DIV from the map pane
TextOverlay.prototype.remove = function() {
  this.div_.parentNode.removeChild(this.div_);
}

// Copy our data to a new Rectangle
TextOverlay.prototype.copy = function() {
  return new TextOverlay(this.latlng_,this.text_);
}

// Redraw the rectangle based on the current projection and zoom level
TextOverlay.prototype.redraw = function(force) {
  // We only need to redraw if the coordinate system has changed
  if (!force) return;

  // Calculate the DIV coordinates of two opposite corners of our bounds to
  // get the size and position of our rectangle
  var c1 = this.map_.fromLatLngToDivPixel(this.latlng_);

  // Now position our DIV based on the DIV coordinates of our bounds
  //this.div_.style.width = Math.abs(c2.x - c1.x) + "px";
  //this.div_.style.height = Math.abs(c2.y - c1.y) + "px";
  this.div_.style.left = c1.x + "px";
  this.div_.style.top = c1.y + "px";
  
  if(this.map_.getZoom() < this.maxzoom_) {
  	this.div_.style.visibility = 'hidden';
  }
  else {
  	this.div_.style.visibility = 'visible';
  }
}


function RWLocation(latlng,text,label,title,clustertext,url,hide,draggable) {
  this.latlng_ = latlng;
  this.text_ = text;
  this.label_ = label;
  this.title_ = title || null;
  this.clustertext_ = clustertext || null;
  this.gotlocation_ = url || null;
  this.hide_ = hide || false;
  this.draggable_ = draggable || false;
  
  this.inlcludeinbounds_ = true;
  this.editable_ = false;
  this.edit_id_ = -1;
  this.edit_form_ = null;
  this.commonname_ = null;
  
	this.setLatLng = function(b) {
		this.latlng_ = b;
	}
	this.setText = function(b) {
		this.text_ = b;
	}
	this.setLabel = function(b) {
		this.label_ = b;
	}
	this.setTitle = function(b) {
		this.title_ = b;
	}
	this.setClusterText = function(b) {
		this.clustertext_ = b;
	}
	this.setGotLocation = function(b) {
		this.gotlocation_ = b;
	}
	this.setHide = function(b) {
		this.hide_ = b;
	}
	this.setDraggable = function(b) {
		this.draggable_ = b;
	}
  	
  this.setIncludeInBounds  = function( b )   {
	    this.inlcludeinbounds_ = b;
	};
	
  this.setEditable = function( b) {
  		this.editable_ = b;
  };
  
  this.setEditId = function(i)  {
  	this.edit_id_ = i;
  };

  this.setEditForm = function(f)  {
  	this.edit_form_ = f;
  };

  this.setCommonName = function(n)  {
  	this.commonname_ = n;
  };
  
}

