jQuery(document).ready(function() {

  var script = document.createElement("script");
  script.type = "text/javascript";
  script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=initialize";
  document.body.appendChild(script);

});

function initialize() {
	var obj = jQuery('.map_placeholder');
	if(obj.length == 0) {
		return;
	}
	var myLatlng = new google.maps.LatLng(51.071012, -0.314843);
	var myOptions = {
		zoom: 16,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	}
	var bg_image = obj.attr('src');
	var w = obj.attr('width');
	var h = obj.attr('height');
	var map_canvas = jQuery('<div style="position: relative; width: ' + (w - 34) + 'px; height: ' + (h - 34) + 'px; padding: 7px 27px 27px 7px; background: url(' + bg_image + ');"><div id="map_canvas" style="width: 100%; height: 100%;"></div></div>');
	obj.before(map_canvas);
	obj.remove();
	var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

  if(navigator.geolocation) {
    browserSupportFlag = true;
    navigator.geolocation.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
      map.setCenter(initialLocation);
    }, function() {
      handleNoGeolocation(browserSupportFlag);
    });
  // Try Google Gears Geolocation
  } else if (google.gears) {
    browserSupportFlag = true;
    var geo = google.gears.factory.create('beta.geolocation');
    geo.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.latitude,position.longitude);
      map.setCenter(initialLocation);
    }, function() {
      handleNoGeoLocation(browserSupportFlag);
    });
  // Browser doesn't support Geolocation
  } else {
    browserSupportFlag = false;
    handleNoGeolocation(browserSupportFlag);
  }
  
  function handleNoGeolocation(errorFlag) {
    initialLocation = myLatlng;
    map.setCenter(initialLocation);
  }
}

