 
    var map, actual; 
    var gmarkers = []; 
    var count = 0; 
    var allowedBounds; 
    var geoXML = [];
    //var main_url = "/php/live-com/";
    var main_url = "/php/php/live-com/";

 
    function createMarker(point, icon) { 
 
     count++; 
     // Set draggable markers 
     var marker1 = new GMarker(point, {icon:icon, draggable:true, bouncy:false, dragCrossMove:true}); 
     marker1.content = count; 
     gmarkers.push(marker1); 

 
 
 
     GEvent.addListener(marker1, "dragstart", function() { 
     // Close infowindow when dragging a marker 
     map.closeInfoWindow(); 
 

 
 
     }); 
 
     GEvent.addListener(marker1, "dragend", function() { 
     // Update gmarkers array to get the right points 
     for(var i = 0; i < gmarkers.length; i++) { 
     if(gmarkers[i] == marker1) { 
        gmarkers.splice(i, 1, marker1); 
     } 
     } 
     }); 
 
     GEvent.addListener(marker1, "click", function() { 
     actual = marker1; // Store this clicked marker  
     // Make the html variable more flexible  
     var html = makeHTML(marker1); 
     marker1.openInfoWindowHtml(html); 
     }); 
     return marker1; 
    } 
 
    // If the map position is out of range, move it back 
    function checkBounds() { 
     // Perform the check and return if OK 
     if (allowedBounds.contains(map.getCenter())) { 
        return; 
     } 
     // It`s not OK, so find the nearest allowed point and move there 
     var C = map.getCenter(); 
     var X = C.lng(); 
     var Y = C.lat(); 
 
     var AmaxX = allowedBounds.getNorthEast().lng(); 
     var AmaxY = allowedBounds.getNorthEast().lat(); 
     var AminX = allowedBounds.getSouthWest().lng(); 
     var AminY = allowedBounds.getSouthWest().lat(); 
 
     if (X < AminX) {X = AminX;} 
     if (X > AmaxX) {X = AmaxX;} 
     if (Y <AminY) {Y = AminY;} 
     if (Y > AmaxY) {Y = AmaxY;} 
     //alert ("Restricting "+Y+" "+X); 
     map.setCenter(new GLatLng(Y,X)); 
    } 
 
    function removeMarker() { 
 
     for(var i = 0; i <gmarkers.length; i++) { 
     if(gmarkers[i] == actual) { 
     map.removeOverlay(actual); 
     // Delete removed marker in gmarkers array 
     gmarkers.splice(i, 1); break; 
     } 
     } 
 
     if(gmarkers.length == 0) { count = 0; } 
     else { 
     count = gmarkers[gmarkers.length-1].content; 
     } 
 
     return false; 
    }	 
 
    var iconAuto = new GIcon();  
    iconAuto.image = 'images/auto.png'; 
    iconAuto.shadow = 'images/shadow.png'; 
    iconAuto.iconSize = new GSize(30, 30); 
    iconAuto.shadowSize = new GSize(30, 30); 
    iconAuto.iconAnchor = new GPoint(6, 20); 
    iconAuto.infoWindowAnchor = new GPoint(5, 1); 
 
    var iconBicycle = new GIcon();  
    iconBicycle.image = 'images/bicycle.png'; 
    iconBicycle.shadow = 'images/shadow.png'; 
    iconBicycle.iconSize = new GSize(30, 30); 
    iconBicycle.shadowSize = new GSize(30, 30); 
    iconBicycle.iconAnchor = new GPoint(6, 20); 
    iconBicycle.infoWindowAnchor = new GPoint(5, 1); 
      
    var iconBus = new GIcon();  
    iconBus.image = 'images/bus.png'; 
    iconBus.shadow = 'images/shadow.png'; 
    iconBus.iconSize = new GSize(30, 30); 
    iconBus.shadowSize = new GSize(30, 30); 
    iconBus.iconAnchor = new GPoint(6, 20); 
    iconBus.infoWindowAnchor = new GPoint(5, 1);	 
     
     
     
    var iconPedestrian = new GIcon();  
    iconPedestrian.image = 'images/pedestrian.png'; 
    iconPedestrian.shadow = 'images/shadow.png'; 
    iconPedestrian.iconSize = new GSize(30, 30); 
    iconPedestrian.shadowSize = new GSize(30, 30); 
    iconPedestrian.iconAnchor = new GPoint(6, 20); 
    iconPedestrian.infoWindowAnchor = new GPoint(5, 1); 
 
    var iconBalloon = new GIcon();  
    iconBalloon.image = 'images/balloon.png'; 
    iconBalloon.shadow = 'images/shadow.png'; 
    iconBalloon.iconSize = new GSize(30, 30); 
    iconBalloon.shadowSize = new GSize(30, 30); 
    iconBalloon.iconAnchor = new GPoint(6, 20); 
    iconBalloon.infoWindowAnchor = new GPoint(5, 1); 
 
    var customIcons = []; 
    customIcons["automobile"] = iconAuto; 
    customIcons["bicycle"] = iconBicycle; 
    customIcons["bus"] = iconBus; 
    //customIcons["motorcycle"] = iconMotorcycle; 
    customIcons["walk"] = iconPedestrian; 
    customIcons["balloon"] = iconBalloon; 
 
    function makeHTML(marker) { 
 
     // Loop through gmarkers array for the appropriate point 
     for(var j = 0; j < gmarkers.length; j++) { 
     if(gmarkers[j] == marker) { 
     var point= gmarkers[j].getLatLng(); 
     } 
     } 
    map.setCenter(point, 13); 

    var html ="<div class='infowindow'>" + "Please give us for feedback / comment<br>for this location:<br><textarea name='comment' cols='32' rows='3'></textarea>" + "<br><input type='hidden' name='ip' value='127.0.0.1 '> Name:<input type='text' name='name' value='' size='25'><input type='hidden' name='lat' size='18' value='" + point.lat().toFixed(14) +"'/>"+"<br>Email: <input type='text' name='email' size='25' value='' ><input type='hidden' name='lon' size='18' value='" + point.lng().toFixed(14)+ "'/>" + "<br>Transportation Method:<br><img src='" + main_url + "images/auto.png' title='Automobile' /><input type='hidden' name='approved'><input type='radio' name='type' id='type0' value='automobile' checked='checked' /><img src='" + main_url + "images/bicycle.png' title='Bicycle' /><input type='radio' name='type' id='type1' value='bicycle' /><img src='"+ main_url +"images/bus.png' title='Bus' /><input type='radio' name='type' id='type2' value='bus' />" + "<br><img src='" + main_url + "images/pedestrian.png' title='Walk' width='40' height='40' /><input type='radio' name='type' id='type4' value='walk' />" + "<br><input name='submit' type='submit' value='Submit Location' /><p><a href='#' onclick='return removeMarker()'>Cancel this marker<\/a>" + "<\/p><\/div>";
 
     return html; 
    } 

      var geocoder = new GClientGeocoder();

       function showAddress(address) {
          geocoder.getLatLng(
            address,
            function(point) {
              if (!point) {
                alert(address + " not found");
              } else {
                map.setCenter(point, 13);
                var marker = new GMarker(point);
                map.addOverlay(marker);
                marker.openInfoWindowHtml(address);
              }
            }
          );
      }

      function go () {
        showAddress($("#address").val());
      }

 
    function buildMap() { 
 
     if(GBrowserIsCompatible()) { 
     map=new GMap2(document.getElementById("map"),{draggableCursor:'auto',draggingCursor:'move'}); 
     var terr =new GMapType(G_PHYSICAL_MAP.getTileLayers(),G_PHYSICAL_MAP.getProjection(),"Relief"); 
     map.addMapType(terr); 
 
     map.setCenter(new GLatLng(33.890794974499,-98.53079795837), 11); 
     map.addControl(new GLargeMapControl()); 
     map.addControl(new GMenuMapTypeControl()); 
      
     map.enableScrollWheelZoom(); 
     GEvent.addListener(map, "click", mapClick); 
      
     // Add a move listener to restrict the bounds range 
     GEvent.addListener(map, "move", function() { 
        checkBounds(); 
     }); 
 
     // The allowed region which the whole map must be within 
     allowedBounds = new GLatLngBounds(new GLatLng(33.79,-98.59), new GLatLng(33.999,-98.43)); 
 
     // Panoramic overlay listener    
     GEvent.addListener(map,'click', function(overlay,latlng) { 
        //myPano.setLocationAndPOV(latlng); 
     }); 

      
     var myDate = Date.parse(Date()); // for testing purposes, maps wont be updated very often.
     var myDate = 0; 
     var url = "http://www.wfmpo.net/php/kml/";
     var kml = {
      "mpo" : "mpo-boundary.kml?time=" + myDate,
      "tr" : "transit-routes.kml?time=" + myDate,
      "weja" : "wfmpo-env-justice-area.kml?time=" + myDate,
      "zone" : "zoning.kml?time=" + myDate,
      "projects" : "wfmpo_projects.kml?time=" + myDate
     }

    $(".controls").click(function(){
      file = kml[$(this).val()];
      myKML = url + file;
      geoXML = new GGeoXml(myKML); 

      if($(this).is(":checked")){
        map.clearOverlays();
        map.addOverlay(geoXML);
      }else{
        map.clearOverlays();
      }
    });

         
     GDownloadUrl( main_url + "markers.xml?<?=rand(0,20000);?>", function(data) { 
         var xml = GXml.parse(data); 
         var markers = xml.documentElement.getElementsByTagName("marker"); 
         for (var i = 0; i <markers.length; i++) { 
            var comments = markers[i].getAttribute("comments"); 
            var type = markers[i].getAttribute("type"); 
            var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), 
                                    parseFloat(markers[i].getAttribute("lon"))); 
            var marker = buildMarker(point, comments, type); 
            map.addOverlay(marker);  
    }}); } } 
 
    function buildMarker(point, comments, type) { 
     var marker = new GMarker(point, customIcons[type]); 
     var html = '<table  width="200" height="100" border="0" cellspacing="0" cellpadding="0"><tr><td style="font-size: 10px; color: #000000;">'+ comments + '</td></tr></table>' 
     GEvent.addListener(marker, 'click', function() { 
        marker.openInfoWindow(html); 
     }); 
     return marker;  
    }  
      
     function mapClick(overlay, point) { 
     if(point) { 
        // Yellow marker icons 
        var icon = new GIcon(); 
        icon.image = main_url + "images/mm_20_yellow.png"; 
        addIcon(icon); 
        map.addOverlay(createMarker(point, icon)); 
     } 
    }  
 
    function addIcon(icon) {	 icon.shadow= main_url + "images/mm_20_shadow.png"; 
     icon.iconSize = new GSize(12, 20); 
     icon.shadowSize = new GSize(22, 20); 
     icon.iconAnchor = new GPoint(6, 20); 
     icon.infoWindowAnchor = new GPoint(5, 1); 
    } 
 
    function showHelp() 
    { 
        objhelpDIV = document.getElementById("helpDIV"); 
 
        var top = self.pageYOffset ? self.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body ? document.body.scrollTop : null; 
         
        // change the top position 
        if(window.navigator.userAgent.indexOf("Firefox")>0 || window.navigator.userAgent.indexOf("Safari")>0) 
        { 
         // for FireFox 
         objhelpDIV.style.top = (top +150) + "px"; 
        } 
        else 
        { 
         // for IE 
         objhelpDIV.style.top = (top +150) + "px"; 
        } 
 
        // change the left position (works good in both IE and FireFox) 
        objhelpDIV.style.left = (document.body.clientWidth / 2) - (objhelpDIV.style.width.replace('px','') / 2) + 50 + "px"; 
         
         
        objhelpDIV.style.display = "block"; 
    } 
 
    function hideHelp() 
    { 
        objhelpDIV = document.getElementById("helpDIV"); 
        objhelpDIV.style.display = "none"; 
    } 
 
    function verify(form1) 
    { 
     var sFields = ''; 
     if(form1.name.value == '') 
        sFields = sFields + '• Name\r\n'; 
     if(form1.email.value == '') 
        sFields = sFields + '• Email\r\n'; 
 
     if(sFields != '') 
     { 
        alert('The following fields are required:\r\n\r\n' + sFields); 
        return false; 
     } 
    } 



