    var map;
    var geocoder;
    var myPano;
    var myPano;
    var panoClient;
    var nextPanoId;

    function load() {
      if (GBrowserIsCompatible()) {
        var lat = -30.852726;
        var lng = 135.941845;
        geocoder = new GClientGeocoder();
        map = new GMap2(document.getElementById('map'));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        map.setCenter(new GLatLng(lat,lng), 3);
        map.setUIToDefault();

        // Create a base icon for all of our markers that specifies the
        // shadow, icon dimensions, etc.
        var baseIcon = new GIcon(G_DEFAULT_ICON);
        baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
        baseIcon.iconSize = new GSize(20, 34);
        baseIcon.shadowSize = new GSize(37, 34);
        baseIcon.iconAnchor = new GPoint(9, 34);
        baseIcon.infoWindowAnchor = new GPoint(9, 2);

        function createMemberMarker(point, name, address, suburb, state, post_code, website, tel, fax,  m_id) {
      var marker = new GMarker(point);
      var html = '<b>' + name + '</b> <br/>' + address + '<br />' + suburb + ', ' + state + ' ' + post_code + '<br/>Tel: ' + tel + '<br/>Fax: ' + fax +'<br/><a class ="linkonwhitebg" href="' + website + '">' + website + '</a><br /><a href=members.php?m_id=' + m_id + '><strong style="color:red">Click to view Profile</strong></a>' ;
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });

      return marker;
    }

        var point = new GLatLng(lat,lng);
        panoramaOptions = { latlng:point };
        pano = new GStreetviewPanorama(document.getElementById("streetview"), panoramaOptions);
        GEvent.addListener(pano);

          // Add 10 markers to the map at random locations
        var bounds = map.getBounds();
        var southWest = bounds.getSouthWest();
        var northEast = bounds.getNorthEast();
        var lngSpan = northEast.lng() - southWest.lng();
        var latSpan = northEast.lat() - southWest.lat();

     var membersUrl = 'phpsqlmembers_genxml.php';
     GDownloadUrl(membersUrl, function(data) {
       var xml = GXml.parse(data);
       var markers = xml.documentElement.getElementsByTagName('marker');
       map.clearOverlays();
        for (var i = 0; i < markers.length; i++) {
        var name = markers[i].getAttribute('name');
                var address = markers[i].getAttribute('address');
                var suburb = markers[i].getAttribute('suburb');
                var state = markers[i].getAttribute('state');
                var post_code = markers[i].getAttribute('post_code');
                var fax = markers[i].getAttribute('fax');
                var website = markers[i].getAttribute('website');
                var tel = markers[i].getAttribute('tel');
                var m_id = markers[i].getAttribute('m_id');
                var distance = parseFloat(markers[i].getAttribute('distance'));
          var latlng = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                                 parseFloat(markers[i].getAttribute('lng')));

          var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                                 parseFloat(markers[i].getAttribute('lng')));

        var marker = createMemberMarker(point, name, address, suburb, state, post_code,  website, tel, fax, m_id);
         map.addOverlay(marker);
        }
        });

      }
    }


    function streetview(point) {
        panoramaOptions = { latlng:point };
        pano = new GStreetviewPanorama(document.getElementById("streetview"), panoramaOptions);
        GEvent.addListener(pano);

    }
    function handleNoFlash(errorCode) {
      if (errorCode == FLASH_UNAVAILABLE) {
        alert("Error: Flash doesn't appear to be supported by your browser");
        return;
      }
    }

   function searchLocations() {
   document.getElementById('statusmessage').innerHTML = 'Loading <img src="images/ajax-loader.gif">';

     var address = document.getElementById('stateInput').value + ' ' + document.getElementById('addressInput').value;
     geocoder.getLatLng(address, function(latlng) {
       if (!latlng) {
         alert(address + ' not found');
       } else {
         searchLocationsNear(latlng);
       }
     });

   }

   function searchLocationsNear(center) {
     var radius = document.getElementById('radiusSelect').value;
     var searchUrl = 'phpsqlsearch_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
     GDownloadUrl(searchUrl, function(data) {
       var xml = GXml.parse(data);
       var markers = xml.documentElement.getElementsByTagName('marker');
       map.clearOverlays();

       var sidebar = document.getElementById('sidebar');
       sidebar.innerHTML = '';
       if (markers.length == 0) {
         sidebar.innerHTML = 'No results found.';
         map.setCenter(new GLatLng(-33.852726, 150.941845), 15);
         return;
       }

       var bounds = new GLatLngBounds();
       for (var i = 0; i < markers.length; i++) {
         var name = markers[i].getAttribute('name');
         var suburb = markers[i].getAttribute('suburb');
        var state = markers[i].getAttribute('state');
        var post_code = markers[i].getAttribute('post_code');
         var address = markers[i].getAttribute('address') + '<br />' + suburb + ', ' + state + ' ' + post_code ;
         var website = markers[i].getAttribute('website');
         var tel = markers[i].getAttribute('tel');
         var m_id = markers[i].getAttribute('m_id');
         var fax = markers[i].getAttribute('fax');

         var distance = parseFloat(markers[i].getAttribute('distance'));
         var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                                 parseFloat(markers[i].getAttribute('lng')));

         var marker = createMarker(point, name, address, website, tel, m_id, fax);
         map.addOverlay(marker);
         var sidebarEntry = createSidebarEntry(marker, name, address, distance, tel, fax);
         sidebar.appendChild(sidebarEntry);
         bounds.extend(point);

       }

       map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
     });
   }

    function createMarker(point, name, address, website, tel, m_id, fax) {

      var marker = new GMarker(point);
      var html = '<b>' + name + '</b> <br/>' + address + '<br/>Tel: ' + tel + '<br/>Fax: ' + fax + '<br/><a class ="linkonwhitebg" href="' + website + '">' + website + '</a><br /><a class ="linkonwhitebg" href="members.php?m_id=' + m_id + '">View Profile</a>' ;
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });

      return marker;
    }

    function createSidebarEntry(marker, name, address, distance, tel, fax) {
      var div = document.createElement('div');
      var html = '<b>' + name + '</b> (' + distance.toFixed(1) + ')<br/>' + address + '<br/>T:' + tel + '<br/>F:' + fax;
      div.innerHTML = html;
      div.style.cursor = 'pointer';
      div.style.marginBottom = '5px';
      GEvent.addDomListener(div, 'click', function() {
        GEvent.trigger(marker, 'click');
        openWindow(marker)
      });
      GEvent.addDomListener(div, 'mouseover', function() {
        div.style.backgroundColor = '#eee';
      });
      GEvent.addDomListener(div, 'mouseout', function() {
        div.style.backgroundColor = '#fff';
      });
      document.getElementById('statusmessage').innerHTML = '';

      return div;
    }

    function openWindow(marker)
        {
                var fenwayPOV = {yaw:370.64659986187695,pitch:-20};
                myPano = new GStreetviewPanorama(document.getElementById("streetview"));
                var latlang = marker.getLatLng();
                myPano.setLocationAndPOV(latlang,fenwayPOV);

        }

