var markers = null;
var marker = null;
var params  = null;
var count = 0;
var redIconPath;
var shadowPath;
var blueIconPath;
var yellowIconPath;
var voidCallBack;
var _gMapRegX = new RegExp(":", "gi");
_gMapRegX.compile(":", "gi");

function __DoCallBack(eventTarget, eventArgument)
{


  __theFormPostData = '';
  WebForm_InitCallback();
  window.GMap_SaveState(eventTarget);
  WebForm_DoCallback(eventTarget.id, eventArgument, function(){Callback_Complete.apply(eventTarget, arguments)}, '', Callback_Error, true);
}





    //*********************Marker Params***********************************
    function MarkerParams(lat, lng )
    {
    var mIcon = null;

    this.Lat = lat;
    this.Lng = lng;
    this.Title = null;
    this.Dragable = false;
    this.PostBack =null;
    this.Icon =null;
    this.EnablePostBack = false;
         
    this.SetIcon = function(iconColor){
    var icon = new GIcon();
    if(iconColor != null)
    {
    //the next two items are critical if we use a custom marker
    //icon.iconSize = new GSize(25, 25);
    icon.iconAnchor = new GPoint(6, 20);
    icon.iconSize = new GSize(32, 30);
    icon.shadowSize = new GSize(32, 30);
    }

    switch(iconColor)
    {
    case "Red":
    icon.image = redIconPath;
    icon.shadow  = shadowPath;
		break;
		case "Blue":
		icon.image = blueIconPath;
		break;
		case "Yellow":
		icon.image = yellowIconPath;
    break;
    }
    this.Icon = icon;
    return icon;
    }
    }
    //*********************End Marker Params***********************************

    //*********************Marker Object***************************************
    function Marker(params)
    {
    var point;var marker;var opts;var icon;
    
    this.Point = new GLatLng(params.Lat,params.Lng);
    this.Params = params;

    this.Marker = function()
    {
    var marker = null;
    if(this.Params != null)
    {
    var opt = new Object();
    opt.title = this.Params.Title;
    opt.icon = this.Params.Icon;
    opt.dragable = this.Params.Dragable;
    marker = new GMarker(this.Point, opt);
    if(this.Params.EnablePostBack == true)
    {
    marker.EnablePostBack = true;
    }

    }
    else
    {
    marker = new GMarker(this.Point);
    }
    marker.Params = this.Params;
    return marker;
    }
    }
    //*********************End Marker Object***************************************

    //*********************Marker Collection***************************************
    function Markers(map)
    {
    map.clearOverlays();
    var oMap = map;
    var mrks = new Array();
    //this.Items = markers;
    this.Items = mrks;
    this.Markers = function(){return markers;};
    this.Add = function(item)
    {
        var marker = item.Marker();
        marker.id = item.id;
        if(marker.EnablePostBack == true)
        {
            GEvent.addListener(marker, "click", GMap_ServerMarkerClicked);
            GEvent.addListener(marker, "infowindowopen", GMap_ServerInfoWindowOpen);
        }
        marker.parent = oMap;
        oMap.addOverlay(marker);
        mrks[mrks.length] = item;
    }
    }
    //*********************End Marker Collection************************************
    

//function Void(){}
function addEvent(obj, evType, fn){if (obj.addEventListener){obj.addEventListener(evType, fn, false);return true;} else if (obj.attachEvent){var r = obj.attachEvent("on"+evType, fn);return r;} else {return false;}}

function setMapCenter(map, lat, lng,zoom, mapType)
{
map.setCenter(new GLatLng(lat, lng),zoom);
map.setMapType(mapType)

}



				


function GMap_SaveState(eventTarget)
{

    var evt = eventTarget.pan?eventTarget:this;
    
  var mapType = 'G_NORMAL_MAP';
  switch( eventTarget.getCurrentMapType() )
  {
      case G_NORMAL_MAP:  
      mapType = 'G_NORMAL_MAP';
      break;
      case G_SATELLITE_MAP:
      mapType = 'G_SATELLITE_MAP';
      break;
      case G_HYBRID_MAP:
      mapType = 'G_HYBRID_MAP';
      break;
      case G_DEFAULT_MAP_TYPES:
      mapType = 'G_DEFAULT_MAP_TYPES';
      break;
      default:
      mapType = 'G_NORMAL_MAP';
      break;
  }
  
  if(enablePostBacks == true)
  {
  document.getElementById(eventTarget.id + '_MapType').value = mapType;
  document.getElementById(eventTarget.id + '_Center').value = eventTarget.getCenter();
  document.getElementById(eventTarget.id + '_Bounds').value = eventTarget.getBounds();
  document.getElementById(eventTarget.id + '_Zoom').value = eventTarget.getZoom();
   }
}	

function GMap_ReturnSavedState(eventTarget,type)
{
var mapType;
var center ;
var bounds;
var zoom;
var str;

    mapType = document.getElementById(eventTarget.id + '_MapType').value ;
    str = document.getElementById(eventTarget.id + '_Center').value;
    
    if(str != null && str.length > 0)
    {
         str = str.replace(/\(|\)/gi, "");
         var aValues = str.split(/,/);
         center = new GLatLng(aValues[0],aValues[1]);
    }
    zoom = document.getElementById(eventTarget.id + '_Zoom').value;


    switch(type)
    {
    case "MapType":
     return mapType;
    break;
        case "Center":
        return center;
    break;
        case "Bounds":
        return bounds;
    break;
        case "Zoom":
        return zoom;
    break;
    }
}
	