/*
2005-09-08
+ Changed getMarkerById to getOverlayById
2005-09-10
+ Changed GMarker_ServerClick to call new server side event MarkerClick
+ Added ZoomLevel to GMap_SaveState
*/

GMap.prototype.getOverlayById=function(a){for(var b=0;b<this.overlays.length;b++){if(this.overlays[b].id==a)return this.overlays[b];}return null;};
GMap.prototype.getMarkerById=function(a){for(var b=0;b<this.overlays.length;b++){if(this.overlays[b].id==a)return this.overlays[b];}return null;};
function addListener(a,b,c,d){if(a.addEventListener){a.addEventListener(b,c,d);return true;}else if(a.attachEvent){var e=a.attachEvent("on"+b,c);return e;}else{alert("Handler could not be attached");}}
function bind(a,b,c,d){return window.addListener(a,b,function(){d.apply(c,arguments)});} 

function cbo_Complete(responseText, responseXML)
{	
  if (responseText.charAt(0) == "<")
	return;
	
  eval(responseText);
}

function cbo_Error(status, statusText, responseText)
{
  alert('Error: ' + status + '\n' + statusText + '\n' + responseText);
}

function __DoCallBack(eventTarget, eventArgument)
{
  var cbo = new CallBackObject();
  cbo.OnComplete = function(){cbo_Complete.apply(eventTarget, arguments)};
  cbo.OnError = cbo_Error;
  window.GMap_SaveState(eventTarget);
  cbo.DoCallBack(eventTarget.id, eventArgument);
}

function GMap_ServerClick(overlay, point)
{
  var arg = 'GMap_Click|'+point.x+','+point.y;
  __DoCallBack(this, arg);
}

function GMap_ServerMoveStart()
{
  var center = this.getCenterLatLng();
  var arg = 'GMap_MoveStart|'+center.x+','+center.y;
  __DoCallBack(this, arg);
}
      
function GMap_ServerMoveEnd()
{
  var center = this.getCenterLatLng();
  var arg = 'GMap_MoveEnd|'+center.x+','+center.y;
  __DoCallBack(this, arg);
}

function GMarker_ServerClick()
{
  var arg = 'GMarker_Click|'+this.point.x+','+this.point.y+','+this.id;
  __DoCallBack(this.map, arg);
}

function GMap_ServerZoom(oldZoomLevel, newZoomLevel)
{
  var arg = 'GMap_Zoom|'+oldZoomLevel+','+newZoomLevel;
  __DoCallBack(this, arg);
}  

function GMap_SaveState(eventTarget)
{
  var evt = eventTarget.pan?eventTarget:this;
  var evtId = evt.id;
  document.getElementById(evtId + '_CenterLatLng').value = evt.getCenterLatLng();
  document.getElementById(evtId + '_SpanLatLng').value   = evt.getSpanLatLng();
  document.getElementById(evtId + '_BoundsLatLng').value = evt.getBoundsLatLng();
  document.getElementById(evtId + '_ZoomLevel').value = evt.getZoomLevel();
}  