
    
//>> CREATE GOOGLE MAP
	var map;
	var map2;
	var map_container_name = "side_map";
	var map_name = 'current_lodging_side_map';
	var map_width;
	var map_height;
	var str_site_path = '';
	var ovcontrol;
	var ovmap;

	var gps_x;
	var gps_y;
	var zoom;
	var ovcontrol;
	var ovmap;

	var selected_region;
	regions = new Array();

	//var geoXml = new GGeoXml("http://www.villasofalgarve.com/sites/villas/test_c.kml");
	//http://mapgadgets.googlepages.com/cta.kml
	//http://www.villasofalgarve.com/sites/villas/test.kml
	
	
	//======================================================================
	function createDefaultMap() {
		MochiKit.Style.showElement(map_name);

		if(GBrowserIsCompatible()) {
			map = new GMap2(MochiKit.DOM.getElement(map_name)); 
			map.enableScrollWheelZoom();

			map.setCenter(new GLatLng(gps_x, gps_y), zoom);

			//== Mini Map
			  ovcontrol = new GOverviewMapControl(new GSize(60,120)); 
			  map.addControl(ovcontrol);

			  
			  ovmap = ovcontrol.getOverviewMap();
			  
			  /* There is an issue with this in that ovmap is not always created when it should be. 
			     This tests to see if it is there and if not, adds it [jt]*/
			  GEvent.addListener(map, "zoomend", function() {
				  if (ovmap == null)
				  {
				  
					  ovmap = ovcontrol.getOverviewMap();
					  GEvent.addListener(ovmap, "zoomend", function() {
						  ovmap.setZoom(4);
					  });				  
				   } else {
					   	  ovmap.setZoom(4);
				   }
				  
			  }); 

			//== Loop Through regions if defined
			for (polyregion in regions )
			{
				region_hover(polyregion, 'on');
			}

		} // end If Is Compatible
	} //== End createDefaultMap




	//======================================================================	
	function reset_map() {
		createDefaultMap();
	} //== End reset_map


	//======================================================================
	function get_region_map(id, gps_x, gps_y, zoom, name) {            
		MochiKit.Style.showElement(map_name);

		//== Set Title
		region_name = label_region + ': ' + name;
		MochiKit.DOM.getElement('map_lodging_name').innerHTML = region_name;

		// Set Global Region ID
		region_id = id;

		var content = "region=" + id;              
		var header = {'Content-Type':'application/x-www-form-urlencoded', 'Connection':'close'};
		var req = MochiKit.Async.doXHR(str_site_path + 'map_functions.php?x=' + gps_x + '&y=' + gps_y + '&z=' + zoom, {method:'post', sendContent:content, headers:header});
		req.addCallback(function (req) { eval(req.responseText); if (self.load_overlays) load_overlays();}); 
		
		
	} //== End get_region_map
	
	

	//======================================================================
	function createSideMap(gpsX, gpsY, lodgeID, lodgeName, lodgePic, regionX, regionY, zoom, iconMap) {
		if (GBrowserIsCompatible()) {
			map = new GMap2(MochiKit.DOM.getElement(map_name)); 
			map.enableScrollWheelZoom();
			map.setCenter(new GLatLng(regionX, regionY), zoom); 

			//map.addOverlay(geoXml);

			//Markers for the near by lodges
			for(i = 0; i < gpsX.length; i++) {
				map.addOverlay(createSideMarker(gpsX[i], gpsY[i], lodgeID[i], lodgeName[i], lodgePic[i], iconMap[i], false));                        
			}

			//draw_regions();

		}
	}//== End createSideMap	
	

	//======================================================================
	function createSideMarker(gpsX, gpsY, id, name, pic, icon, notNearBy) {
		var map_marker = new GIcon();
		map_marker.image = standard_url + "/dynassets/lodging_types/" + icon;
		map_marker.iconSize = new GSize(18, 18);
		map_marker.shadowSize = new GSize(22, 20);
		map_marker.iconAnchor = new GPoint(6, 20);
		map_marker.infoWindowAnchor = new GPoint(5, 1); 

		var marker = new GMarker(new GLatLng(gpsX, gpsY), map_marker);

		GEvent.addListener(marker, "click", function() {

			//== Load Lodging
			try
			{
				//== if opened from another window
				window.opener.document.location.href = standard_url + '/detail.php?item=' + id;
			}
			catch (err)
			{
				//== if opened from main window
				document.location.href = standard_url + '/detail.php?item=' + id;
			}

		});

		GEvent.addListener(marker, "mouseover", function() {                                        
			var mapNormalProj = G_NORMAL_MAP.getProjection();
			var mapZoom = map.getZoom();

			var ne_bound = mapNormalProj.fromLatLngToPixel(map.getBounds().getNorthEast(), mapZoom);                    
			var sw_bound = mapNormalProj.fromLatLngToPixel(map.getBounds().getSouthWest(), mapZoom);
			var marker_location = mapNormalProj.fromLatLngToPixel(marker.getPoint(), mapZoom);
			var size = map.getSize();
			
			MochiKit.DOM.getElement('map_lodging_name').innerHTML = name;                    
			MochiKit.DOM.getElement('info').innerHTML = name;                    
			
			var x = (size.width * (marker_location.x - sw_bound.x)) / (ne_bound.x - sw_bound.x) + 14;

			var x_offset = MochiKit.DOM.getElement(map_container_name).offsetLeft
			var y_offset = MochiKit.DOM.getElement(map_container_name).offsetTop

			var y = (size.height * (marker_location.y - ne_bound.y)) / (sw_bound.y - ne_bound.y) + 22;
			
			var infoDimensions = MochiKit.Style.getElementDimensions('info');
								
			// Info Box Width = 2 + 5 + 100 + 5 + 2
			if((x + 114) > size.width) {
				if((x - (114 + 20)) > 0) {
					x -= (114 + 20);
				}
				else {
					if((y - infoDimensions.h) > 42) {
						x -= 65;
						y -= (infoDimensions.h + 4);
					}
					else {
						x -= 65;
						y += infoDimensions.h;
					}
				}
			}
			
			x += x_offset;
			y += y_offset;

			var location = new MochiKit.Style.Coordinates(x, y);

			MochiKit.Style.setElementPosition('info', location);
			MochiKit.Style.showElement('info'); 
		});
		
		GEvent.addListener(marker, "mouseout", function() {             
			MochiKit.Style.hideElement('info');
			MochiKit.DOM.getElement('map_lodging_name').innerHTML = region_name;
		});
		
		return marker;
	} //== End createSideMarker


	//======================================================================	
	function draw_regions(p_line_color, p_fill_color, p_points, p_levels) {

		var polygon1 = new GPolygon.fromEncoded({
		  polylines: [
			{points: p_points,
			 levels: p_levels,
			 color: p_line_color,
			 opacity: 0.7,
			 weight: 1,
			 numLevels: 18,
			 zoomFactor: 2}],
		  fill: true,
		  color: p_fill_color,
		  opacity: 0.4,
		  outline: true
		});

		map.addOverlay(polygon1);

		return polygon1;
	} //== End draw_regions
	//======================================================================	
	


	//==================================
	function region_hover(p_region, p_status) {
		try{
		
			//== Turn region off
			map.removeOverlay(regions[p_region]);
			
			//== Change opacity
			if (p_status == 'on')
			{
				new_opacity = ".4";
			} else {
				new_opacity = ".1";
			}

			//== Check to see if region is the selected region...
			if (p_region == selected_region)
			{
				new_opacity = ".0";
			}

			regions[p_region].opacity = new_opacity;
			
			//== Turn region on
			map.addOverlay(regions[p_region]);
		} 
		catch(er) {
			//alert(er);
		}
	}
	//======================================================================	
	

	
	//======================================================================	
	function zoomin_map() {
		if (GBrowserIsCompatible()) {
			map.zoomIn();
				  ovmap = ovcontrol.getOverviewMap();
			  ovmap.setZoom(3);
		}
	}//== End zoomin_map


	//======================================================================	
	function zoomout_map() {
		if (GBrowserIsCompatible()) {
			map.zoomOut();
			  ovmap.setZoom(3);
		}
	} //== End zoomout_map


	//======================================================================	
	function createMap(gpsX, gpsY, lodgeID, lodgeName, lodgePic, map_level) {
        if (GBrowserIsCompatible()) {
            map2 = new GMap2(document.getElementById("current_lodging_map"));                
            
            map2.addControl(new GSmallMapControl());
            map2.addControl(new GScaleControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10, 10)));
            map2.setCenter(new GLatLng(gpsX[0], gpsY[0]), map_level);                            
            
            //Markers for the near by lodges
            for(i = 0; i < gpsX.length; i++) {
                if(i == 0) {
                    map2.addOverlay(createMarker(gpsX[i], gpsY[i], lodgeID[i], lodgeName[i], lodgePic[i], true));
                }
                else {
                    map2.addOverlay(createMarker(gpsX[i], gpsY[i], lodgeID[i], lodgeName[i], lodgePic[i], false));
                }
            }
        }
    } //== End createMap



	//======================================================================    
    function createMarker(gpsX, gpsY, id, name, pic, notNearBy) {
        var redMarker = new GIcon();
        redMarker.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
        redMarker.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
        redMarker.iconSize = new GSize(12, 20);
        redMarker.shadowSize = new GSize(22, 20);
        redMarker.iconAnchor = new GPoint(6, 20);
        redMarker.infoWindowAnchor = new GPoint(5, 1);  
    
        var blueMarker = new GIcon();
        blueMarker.image = "http://labs.google.com/ridefinder/images/mm_20_blue.png";
        blueMarker.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
        blueMarker.iconSize = new GSize(12, 20);
        blueMarker.shadowSize = new GSize(22, 20);
        blueMarker.iconAnchor = new GPoint(6, 20);
        blueMarker.infoWindowAnchor = new GPoint(5, 1);     
            
        var marker;
        if(notNearBy) {
            marker = new GMarker(new GLatLng(gpsX, gpsY), blueMarker);
        }
        else {
            marker = new GMarker(new GLatLng(gpsX, gpsY), redMarker);
        }
        
        GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml('<center><a href="./detail.php?item=' + id + '">' + name + '<br><br>' + pic + '</a><br></center>'); });
        return marker;
    }//== End createMarker


	//======================================================================    
	function get_map_gps() {
		var bounds = map.getBounds();
		var southWest = bounds.getSouthWest();
		var northEast = bounds.getNorthEast();
		var lngMed = (northEast.lng() + southWest.lng())/2;
		var latMed = (northEast.lat() + southWest.lat())/2;

		MochiKit.DOM.getElement('map_lodging_name').innerHTML = '&nbsp;Lng: ' + lngMed + ' <br> &bsp;Lat: ' + latMed;
	} //== END get_map_gps




	//======================================================================    
	function newMapWindow() {
		var id = region_id;
		var lat = map.getCenter().lat();
		var lng = map.getCenter().lng();
		var zoom = map.getZoom();

		if (id == undefined)
		{
			id = "";
		}

		mapwindow = window.open(standard_url + '/sites/' + site_dir + '/largemap.php?id=' + id + '&lat=' + lat + '&lng=' + lng + '&zoom=' + zoom, 'large_map', 'width=' + map_width + ', height=' + map_height + ', resizable=1');
	}//== End newMapWindow
 
