var marker = new Marker();

var MARKER_SIZE = 16;
var MarkerAlt = 100.0;

var markerType = {undefined: 0, top: 1, side: 2};

var normalIcon;
var highlightIcon;

function Marker() {
  this.lat = 0; 
  this.lng = 0; 
  this.gmarker = null;
  
  this.target = new Point3D();
  
  this.findTarget = 
    function() {
      this.target.setFromLatLngAlt(this.lat,this.lng,0);
    };
    
  this.moved = 
    function() {
      this.findTarget();
//this.target.show();      
      
      var minZ = minZAtXY(this.target.x, this.target.y);
          
      if (minZ != slider.minZ) slider.setMinZ(minZ);
      
      syncBeams();
    }
  
  this.addToGM = 
    function() {
    
//log('adding marker');    
      this.lat = originLatitude;
      this.lng = originLongitude;
    
      var origin = new GLatLng(originLatitude,originLongitude);
      var icon = new GIcon();
      icon.image = "images/marker.png";
      icon.shadow = "images/shadow-marker.png";
      icon.iconSize = new GSize(19.0, 19.0);
      icon.shadowSize = new GSize(22.0, 14.0);
      icon.iconAnchor = new GPoint(7.0, 7.0);
      icon.infoWindowAnchor = new GPoint(7.0, 7.0);
      
      this.target.x = 0;
      this.target.y = 0;
      
      this.gmarker = new GMarker(origin, {icon:icon,draggable:true,bouncy:false,autoPan:false});//,dragCrossMove:false});
      
      GEvent.addListener(this.gmarker, "drag", function() {
        var latLng = marker.gmarker.getLatLng();
        marker.lat = latLng.lat();
        marker.lng = latLng.lng();
        marker.moved();
      });
      
      map.addOverlay(this.gmarker);
     }
     
   this.move = 
     function(lat,lng) {
       this.lat = lat;
       this.lng = lng;
       
       var latLng = new GLatLng(lat,lng);
       this.gmarker.setLatLng(latLng);
     }
     
   this.show = 
     function() {
       log('lat = ' + this.lat + ' lng = ' + this.lng);  
     }  
} 