function SlideMap() {
  var this1 = this;
  var debug = true;
 	this1.id = "SlideMap"; // name of this object
 	var initMapText = "Show Map";
 	
 	var settings = {
 		update:false
 	};
  
  var mapavail  = false;
	//this1.filen = "";
  this1.map1 = null; // google maps map

  this1.showMapUpdate = function() {
		logit("empty showMapUpdate ---------------------------------------------------------------");
  }
  /*----------------------------------------------------------------------------------------
  
   Internal Function : show
  
   -----------------------------------------------------------------------------------------*/
	var showMap = function() {
		logit('showMapsmall');
		if (this1.pic.imagethumb.title != '') {
			var vspace1 = getTopMargin(this1.pic.imagethumb.height,120);
			logit('humb:'+this1.pic.imagethumb.src+'/'+this1.pic.imagethumb.height+'/'+this1.pic.imagethumb.title+'/'+vspace1);
			$("#randomThumbImage").attr("src",this1.pic.imagethumb.src).css({"margin-top":vspace1});
			$("#map_geobig").hide();
			$("#randomMap1").hide();
			$("#randomThumb").show();
			$("#mapText").html(this1.pic.pictext);
		}
		$("#picslide").hide();
		$("#map_canvas2").show(); // double show, checkout why
		$("#map_show").show();
		this1.mapshown = true;
		if (googleOn) {
			this1.orglatlng = new GLatLng(this1.pic.point.lat,this1.pic.point.lng);
			if (this1.map1) {
				if (this1.pic.point.lat != null || this1.pic.point.lng != null) {
					this1.marker.setLatLng(this1.orglatlng);
					logit("set center to:"+this1.pic.point.lat+'/'+this1.pic.point.lng);
					this1.map1.setCenter(this1.orglatlng);
				}
			} else {
				//google.load("maps", "2");
				
				if (GBrowserIsCompatible()) {
					logit("create new map");
				  this1.map1 = new google.maps.Map2(document.getElementById("map_canvas2"));
				  //this1.map1.setCenter(new google.maps.LatLng(0,0), 2);
			    //this1.map1.addControl(new GLargeMapControl());
			    this1.map1.addControl(new GLargeMapControl());
			    this1.map1.addControl(new GMapTypeControl());
			    this1.map1.addControl(new GOverviewMapControl());
			    this1.map1.addMapType(G_PHYSICAL_MAP);
					this1.map1.setMapType(G_PHYSICAL_MAP);
					this1.map1.setCenter(this1.orglatlng,7);
				} else {
					alert("Sorry Google maps not available");
					return false;
				}
				var redIcon = new GIcon(G_DEFAULT_ICON);
				// Set up our GMarkerOptions object
				var markerOptions = { icon:redIcon, draggable:settings.update };
				
				if (settings.update) {
					//map1.disableDoubleClickZoom();
					GEvent.addListener(this1.map1, "click", function(overlay,point){
						logit("map clicked:"+point.lat()+'/'+point.lng());
						this1.marker.setLatLng(point);
					});
				}
			  this1.marker = new GMarker(this1.orglatlng, markerOptions);
			  
			  this1.map1.addOverlay(this1.marker);
			}
		} else {
			this1.orglatlng = null;
			this1.marker = null;
			logit("NO GOOGLE");
		}			
	}
	
	
  /*----------------------------------------------------------------------------------------
  
   Internal Function : release
  
   -----------------------------------------------------------------------------------------*/
	var release = function()  {
		this1.mapshown = false;
		$("#map_geobig").hide();
		//$("#map_canvas2").hide();
		$("#map_show").hide();
		$("#picslide").show();
		$("#randomThumb").hide();
		$("#randomMap1").show();
	}
  /*----------------------------------------------------------------------------------------
  
   Method : mapAvail
   
   called when status changed to 'received'
   
   NOTE : could also be called by addStatusCallback (see in init) 
   
   -----------------------------------------------------------------------------------------*/
	var setMapAvail = function(hasMap) {
		logit("-----------------------mapAvail:"+hasMap);
		if (hasMap) {
			if (this1.mapshown) {
				$("#mapButton").removeClass().html("Show Photo").addClass("blueBack");
			} else {
				$("#mapButton").removeClass().html("Show Map").addClass("blueBack");
			}
		} else {
			$("#mapButton").removeClass().html("No GPS Info").addClass("grayBack");
		}
		// for update show map
		if (hasMap || settings.update) {
			mapavail = true;
		} else {
			mapavail = false;
		}
	}
  /*----------------------------------------------------------------------------------------
  
   Method : swapMap - swap between google-map or image
   
   -----------------------------------------------------------------------------------------*/
	this1.swapMap = function() {

    if (this1.mapshown) {
    	this1.mapshown = false;
    	$("#mapButton").html(initMapText);
    	release();
    	//this1.pauseOff();
    	//triggerTimeout();
    } else if (mapavail) {
    	this1.mapshown = true;
    	$("#mapButton").html("Show Photo");
    	//this1.pauseOn();
    	showMap();
    	this1.showMapUpdate();
	  }
	}
  /*----------------------------------------------------------------------------------------
  
   Method : initSlideMap
   
   -----------------------------------------------------------------------------------------*/
	this1.initSlideMap = function(options) {
		this1 = this;

		if (options) $.extend(settings, options);
		
		logit('initSlideMap update:'+settings.update);
	  initMapText = $("ul#sddm > li > a#mapButton").html();

		//if (ie6) initMapText = "show Map"; 
		
		this1.initSlideMenu();

		this1.addStatusCallback(function(statusCd) {
			switch (this1.statuscd) {
		  case "received":
				if (this1.pic.point.lat != null) {
					setMapAvail(true);
				} else {
					setMapAvail(false);
				}
		    break;
		  case "ready":
		  	if (this1.noimage) {  	
		  		setMapAvail(false);	
			  } 
		    break;
		  }
		});

		$("#map_canvas2").hide();
		$("#randomTumb").hide();

		$("#randomThumb,#imageMap1").click(function() {
			logit("randomThumb clicked");
			this1.swapMap();
		});
	}
  function logit(text) {
		logitAll("SlideMap-"+text);
	}
}
logit("extend SlideControl to SlideMenu");
SlideMap.prototype = new SlideMenu();
SlideMap.prototype.constructor = SlideMap;

