function initialize(full_url, MAP_TYPE, MAP_CONTROLS, MAP_PIN_SELECTOR) {
  var myLatlng = new google.maps.LatLng(-27.9167666412491, 133.681640625);

  switch(MAP_TYPE)
  {
     case 'ROADMAP':
         var map_type_string = google.maps.MapTypeId.ROADMAP;
         break;
     case 'HYBRID':
         var map_type_string = google.maps.MapTypeId.HYBRID;
         break;
     case 'SATELLITE':
         var map_type_string = google.maps.MapTypeId.SATELLITE;
         break;
     case 'TERRAIN':
         var map_type_string = google.maps.MapTypeId.TERRAIN;
         break;
     default:
        var map_type_string = google.maps.MapTypeId.ROADMAP;
  } // end swich

  switch(MAP_CONTROLS)
  {
     case 'TRUE':
         var map_controls_string = true;
         break;
     case 'FALSE':
         var map_controls_string = false;
         break;
     default:
        var map_controls_string = false;
  } // end swich

  var myOptions = {
    zoom: 5,
    center: myLatlng,
    mapTypeId: map_type_string,
    disableDefaultUI: map_controls_string
  };
  var map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
  var bounds = new google.maps.LatLngBounds();
  var project_category_id = document.getElementById('project_category_id').value;
  var status_project = document.getElementById('status_project').value;
//  alert(project_category_id);

  var infoWindow = new google.maps.InfoWindow;

      downloadUrl("/project_map_xml.php?project_category_id=" + project_category_id + "&status_project=" + status_project, function(data) {
        var xml = parseXml(data);


//        alert(xml);
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          var name = markers[i].getAttribute("name");
//          alert(name);
          var description = markers[i].getAttribute("description");
          var pdf = markers[i].getAttribute("pdf");
          var link = markers[i].getAttribute("link");
          var lat = parseFloat(markers[i].getAttribute("lat"));
          var lng = parseFloat(markers[i].getAttribute("lng"));
          var status_project = markers[i].getAttribute("status_project");
          var category_colour = markers[i].getAttribute("category_colour");
          var point = new google.maps.LatLng(lat,lng);
//          alert(point);

         if (pdf.length > 0)
         {
            var pdf_link = "<a href=\"" + pdf + "\" alt=\"pdf link\" title=\"pdf link\">View PDF</a><br />";
         }
         else
         {
            var pdf_link = '';
         }

          var html = "<strong>" + name + "</strong> <br/>" + description + "<br />" + pdf_link + "<br /><a href=\"" + link + "\" alt=\"view more info\" title=\"view more info\">View More</a>";


          if (MAP_PIN_SELECTOR == 'CATEGORY')
          {
              var icon = 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld='+ i +'|'+ category_colour +'|'+ category_colour;
          }
          else
          {
              if (status_project == 1)
              {
                var icon = 'http://labs.google.com/ridefinder/images/mm_20_green.png';
              }
              else
              {
                var icon = 'http://labs.google.com/ridefinder/images/mm_20_red.png';
              } // end if else
          } // end if else

          var marker = new google.maps.Marker({
            map: map,
            position: point,
            icon: icon
          });
          bindInfoWindow(marker, map, infoWindow, html);

          bounds.extend(point);
          map.fitBounds(bounds);

        }
      });

};

function bindInfoWindow(marker, map, infoWindow, html) {
  google.maps.event.addListener(marker, 'click', function() {
    infoWindow.setContent(html);
    infoWindow.open(map, marker);
  });
}

function downloadUrl(url, callback) {
  var request = window.ActiveXObject ?
      new ActiveXObject('Microsoft.XMLHTTP') :
      new XMLHttpRequest;

  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      request.onreadystatechange = doNothing;
      callback(request.responseText, request.status);
    }
  };

  request.open('GET', url, true);
  request.send(null);
}

function parseXml(str) {
  if (window.ActiveXObject) {
    var doc = new ActiveXObject('Microsoft.XMLDOM');
    doc.loadXML(str);
    return doc;
  } else if (window.DOMParser) {
    return (new DOMParser).parseFromString(str, 'text/xml');
  }
}

function doNothing() {}

