
// Add in mouse wheel based zooming :
GMap2.prototype.wheelZoom = function(event) { 
  if((event.detail || -event.wheelDelta) < 0)
    { map.zoomIn();} else { map.zoomOut();}
  return false;
}
 

function setupMapType(text, urlMethod, zoomStart, zoomEnd, copyrightText, hybrid) {

  var tileLayer = new GTileLayer(new GCopyrightCollection(copyrightText),zoomStart,zoomEnd);
  tileLayer.getTileUrl = urlMethod;
  tileLayer.getCopyright = function(a,b) {return copyrightText;}    
  var tileLayers = new Array();
  tileLayers[0] = tileLayer;

  if (hybrid) {
    tileLayers[1] = G_HYBRID_MAP.getTileLayers()[1];
  }

  var _mMapError = "We are sorry, but we don\'t have maps at this zoom level for this region.Try zooming out for a broader look.";
  var mt = new GMapType(tileLayers, G_SATELLITE_MAP.getProjection(), text,{errorMessage:_mMapError, maxResolution:zoomEnd, minResolution:zoomStart});      
  map.addMapType(mt);
  return mt;
}

function setupHybridMapType(text, urlMethods, zoomStart, zoomEnd, copyrightText) {
  // Setup a new map type with the default satellite layer, and the given layers on top.

  var tileLayers = [G_HYBRID_MAP.getTileLayers()[0]];  // Get the background default satellite layer
  for (var i=0;i <urlMethods.length;i++) {
    var tileLayer = new GTileLayer(new GCopyrightCollection(copyrightText),zoomStart,zoomEnd);
    tileLayer.getTileUrl = urlMethods[i];
    tileLayer.getCopyright = function(a,b) {return copyrightText;}    
    tileLayers[tileLayers.length] = tileLayer;
  }
  var mt = new GMapType(tileLayers, G_SATELLITE_MAP.getProjection(), text, {maxResolution:zoomEnd,minResolution:zoomStart,errorMessage:''});
  map.addMapType(mt);
  return mt;
}

function setupHybridMapType2(text, urlMethods, zoomStart, zoomEnd, copyrightText) {
  // Setup a new map type with the default satellite and map layer (Hybrid).  The new layers given go in between the default layers.

  var tileLayers = [G_HYBRID_MAP.getTileLayers()[0]]; // Get the background default satellite layer
  for (var i=0;i <urlMethods.length;i++) {
    var tileLayer = new GTileLayer(new GCopyrightCollection(copyrightText),zoomStart,zoomEnd);
    tileLayer.getTileUrl = urlMethods[i];
    tileLayer.getCopyright = function(a,b) {return copyrightText;}    
    tileLayers[tileLayers.length] = tileLayer;
  }
  tileLayers[tileLayers.length] = G_HYBRID_MAP.getTileLayers()[1]; // Add in the map layer on top
  var mt = new GMapType(tileLayers, G_SATELLITE_MAP.getProjection(), text, {maxResolution:zoomEnd,minResolution:zoomStart,errorMessage:''});
  map.addMapType(mt);
  return mt;
}

function getCurrentCurrentLinkParams(isEmailFormat) {
    // Get parameters for a link that refers to the current page.
    // Encodes the parameters for email if needed

    var zoom = map.getZoom();
    var center = map.getCenter();
    var lat = center.y;
    var lon = center.x;
    if (isEmailFormat) 
	return 'lat=' + lat + '%26lon=' + lon + '%26zoom=' + zoom;
    else
	return 'lat=' + lat + '&lon=' + lon + '&zoom=' + zoom;
}

function setURLViewport() {
    // Set the lat, lon and zoom from the current url where possible.

    var q = getQueryString();

    var lat = q['lat'];
    var lon = q['lon'];
    if (typeof lat == 'undefined') lat = q['latitude'];
    if (typeof lon == 'undefined') lon = q['longitude'];

    if ((typeof lat != 'undefined') && (typeof lon != 'undefined')) {
	var position = new GLatLng(parseFloat(lat), parseFloat(lon));
	map.setCenter(position);
    }

    var zoom = q['zoom'];
    if (typeof zoom == 'undefined') zoom = q['z'];

    if (typeof zoom != 'undefined') {

 	zoom = parseFloat(zoom);
	map.setZoom(zoom);
    }
}
