var GeoLocator = {
	getValue: function(elementId, scopeId) {
		if (scopeId) {
		  elem = $$('#'+scopeId+' #'+elementId).first();
			return elem.value
		} else {
			return $(elementId).value;
		}
	},
	
	setValue: function(elementId, value, scopeId) {
		if (scopeId) {
		  elem = $$('#'+scopeId+' #'+elementId).first();
		  if(elem) {
	  	  elem.value = value;
	  	}
  	} else {
  		$(elementId).value = value;
  	}		
	},
	
	updateLatLng: function(sourceId, latId, lngId, scopeId) {
		pos = $(sourceId).innerHTML;
		if (pos.strip() != "") {
		     latlng = pos.split(', ');
		     this.setValue(latId, latlng[0], scopeId);
		     this.setValue(lngId, latlng[1], scopeId);		            
		}		
	},

	lite: function(map, overlay, point, element) {
		if (!map.draggingEnabled()) {
	  	if (overlay) {
	  		if (overlay == this.locMarker) {
	      	map.removeOverlay(overlay);
	      	Element.update(element, "");   
	      }
	    } else if (point) {
	    	//map.clearOverlays();
	      map.removeOverlay(this.locMarker);
	    	var marker = new GMarker(point,{title : point });
	      Element.update(element, point.lat() +", " + point.lng());
		    map.addOverlay(marker);
	    	this.locMarker = marker
		  }
		}
	},
	
	displayZoomLvl: function(oldLvl, newLvl, displayId) { 
		console.info(newLvl); 
		console.info(displayId); 
		Element.update(displayId, newLvl.toString());
	},
	
	full: function(overlay, point, element) {
		if (!map.draggingEnabled()) {
	  	if (overlay) {
	//      map.removeOverlay(overlay);      
	    } else if (point) {
	    	var marker = new GMarker(point,{title : point });
		    console.info(element);
	      Element.update(element, "lat: " + point.lat() +", lng: " + point.lng() );
	      console.info(point);
	      GEvent.addListener(marker,"mouseover", function() {
	//            console.info(marker);
	            html = "<p><b>Latitude & Longitude</b></p>";
	            html += "<p>"+ point + "</p>";
	            html += "<p>Click on marker to remove it.</p>"
	            marker.openInfoWindowHtml(html);
	      }); 
	      GEvent.addListener(marker,"mouseout", function() {
	//            map.closeInfoWindow();
	      });
		    GEvent.addListener(marker, "click", function() {
		        GEvent.clearListeners(marker, 'mouseover');
		        map.closeInfoWindow();
		        map.removeOverlay(marker);
		    });  
		    map.addOverlay(addInfoWindowToMarker(marker, point));      
		  }
		}
	}

}

// old stuff
function updateFields(windowId, latElementId, lngElementId) {
  pos = $('show-lat-lng').innerHTML;
  if ( pos.strip() != "") {
     latlng = pos.split(', ')
     updateInput(windowId, latElementId, latlng[0]);
     updateInput(windowId, lngElementId, latlng[1]);       
  }
}

function updateInput(windowId, inputElementId, value) {
  elem = $$('#'+windowId+' #'+inputElementId).first();
  if(elem) {
    elem.value = value;
  }
}

function obtainerLite(overlay, point, element) {
	if (!map.draggingEnabled()) {
  	if (overlay) {
      map.removeOverlay(overlay);
      Element.update(element, "");   
    } else if (point) {
    	map.clearOverlays();
    	var marker = new GMarker(point,{title : point });
	    console.info(element);
      //Element.update(element, "lat: " + point.lat() +", lng: " + point.lng() );
      Element.update(element, point.lat() +", " + point.lng());
      console.info(point);
	    map.addOverlay(marker);
	  }
	}
}