// Expansion vars
var expanded = false;
var expandWidth = 150;
var expandHeight = 150;
var originalWidth;
var originalHeight;

if(!expandTo)
{
	var expandTo = 'left';
}

// Map controls
var enlargeControl;
var contractControl;
var gSmallZoomControl;
var gMapTypeControl;
var gSmallMapControl;

var vtk_hostname = 'www.naturaltherapypages.com.au';
var vtk_mapE = 'http://' + vtk_hostname + '/images/googlemaps/mapE.gif';
var vtk_mapR = 'http://' + vtk_hostname + '/images/googlemaps/mapR.gif';

// Initialises the map
function Gload() 
{

	// Don't try and load the map if browser is not compatible
	if (!GBrowserIsCompatible()) 
	{
		return;
	}
    
    // Load the map into the GenMapDiv id (this id should be used for all map apps across all pages)
    var mapObj = document.getElementById("google-map");
    map = new GMap2(mapObj);
    
    originalWidth = mapObj.offsetWidth - 6;
	originalHeight = mapObj.offsetHeight - 6;
          
    map.enableContinuousZoom();
    geoCoder = new GClientGeocoder();  
	
	// Setup the controls (views) for the map
	enlargeControl = new EnlargeControl();
	contractControl = new ContractControl();
	gSmallZoomControl = new GSmallZoomControl();
	gMapTypeControl = new GMapTypeControl();
	gSmallMapControl = new GSmallMapControl();
	
	map.addControl(enlargeControl, new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(0, 0)));
	map.addControl(gSmallZoomControl);
}

function EnlargeControl() 
{

}
EnlargeControl.prototype = new GControl();
EnlargeControl.prototype.initialize = function(map) 
{
  var container = document.createElement("div");
  
  // the button
  var enlargeDiv = document.createElement("div");
  container.appendChild(enlargeDiv)
  enlargeDiv.style.width="21px";
  enlargeDiv.style.height="21px";
  enlargeDiv.style.cursor = "pointer";
  enlargeDiv.style.backgroundImage = "url(" + vtk_mapE + ")";
  enlargeDiv.style.backgroundColor = "transparent";
   
  GEvent.addDomListener(enlargeDiv, "click", function() { enlargeMap(); });
  map.getContainer().appendChild(container);
  return container;
}

EnlargeControl.prototype.getDefaultPosition = function() 
{
	return new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(1, 1));
}

function enlargeMap() 
{

	var mapObj = document.getElementById("google-map");
	 	
	map.removeControl(enlargeControl);
	map.removeControl(gSmallZoomControl);
	map.addControl(contractControl, new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(0, 0)));
	map.addControl(gMapTypeControl, new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(20, 1)));
	map.addControl(gSmallMapControl);
	mapObj.style.width = originalWidth + expandWidth + 'px';
	mapObj.style.height = originalHeight + expandHeight + 'px';
	
	if(expandTo == 'left')
	{
		mapObj.style.left =  '-' + expandWidth + 'px';
	}
	
	var center = map.getCenter();
	map.checkResize();
	map.setCenter(center);
}

function contractMap() 
{
	var mapObj = document.getElementById("google-map");
	 	
	map.removeControl(contractControl);
	map.removeControl(gMapTypeControl);
	map.removeControl(gSmallMapControl);
	
	
	map.addControl(enlargeControl, new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(0, 0)));
	map.addControl(gSmallZoomControl);
	 
	mapObj.style.width  = originalWidth + 'px';
	mapObj.style.height = originalHeight + 'px';
	mapObj.style.left = '0px';
	
	var center = map.getCenter();
	map.checkResize();
	map.setCenter(center);
}

function ContractControl() 
{
}

ContractControl.prototype = new GControl();
ContractControl.prototype.initialize = function(map) 
{
  var container = document.createElement("div");
  
  // the button
  var enlargeDiv = document.createElement("div");
  container.appendChild(enlargeDiv)
  enlargeDiv.style.width="21px";
  enlargeDiv.style.height="21px";
  enlargeDiv.style.cursor = "pointer";
  enlargeDiv.style.backgroundImage = "url(" + vtk_mapR + ")";
  enlargeDiv.style.backgroundColor = "transparent";
   
  GEvent.addDomListener(enlargeDiv, "click", function() { contractMap(); });
  map.getContainer().appendChild(container);
  return container;
}

ContractControl.prototype.getDefaultPosition = function() 
{
	return new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(1, 1));
}

function defaultLocation() 
{
	var bounds = new GLatLngBounds();
	//sydney:
	var point = new GLatLng(-33.867749, 151.210245);
	bounds.extend(point);						
	//var markerIcon = getMarkerIcon(null, true);			
	//var marker = createGMarker(point, null, markerIcon);			
	//map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));		
	map.setCenter(bounds.getCenter(), 6);		
	//map.addOverlay(marker);
}

function showAddress(address) 
{
	if (geoCoder)
	{
		geocoder = geoCoder;
	}
	if (geocoder) 
	{
		geocoder.getLatLng
		(
			address,
			function(point) 
			{
				if (!point) 
				{
				  //alert(address + " not found");
				  defaultLocation();
				} 
				else 
				{
				  map.setCenter(point, 17);
				  var marker = new GMarker(point);
				  map.addOverlay(marker);
				  //marker.openInfoWindowHtml(address);
				}
			}
		);
	}
}
