<!--

    var iconPhone = new GIcon(); 
    iconPhone.image = '/global/images/map_icons/code_blue_icon.jpg';
    iconPhone.iconSize = new GSize(15, 15);
    iconPhone.iconAnchor = new GPoint(7, 7);
    iconPhone.infoWindowAnchor = new GPoint(7, 0);
    iconPhone.printImage = '/global/images/map_icons/code_blue_icon.jpg';
    iconPhone.mozPrintImage = '/global/images/map_icons/code_blue_icon.jpg';
    iconPhone.imageMap = [0,0, 15,0, 15,15, 0,15];

    var iconPark = new GIcon(); 
    iconPark.image = '/global/images/map_icons/parking_lot_icon.jpg';
    iconPark.iconSize = new GSize(15, 15);
    iconPark.iconAnchor = new GPoint(7, 7);
    iconPark.infoWindowAnchor = new GPoint(7, 0);
    iconPark.printImage = '/global/images/map_icons/parking_lot_icon.jpg';
    iconPark.mozPrintImage = '/global/images/map_icons/parking_lot_icon.jpg';
    iconPark.imageMap = [0,0, 15,0, 15,15, 0,15];

    var iconWireless = new GIcon(); 
    iconWireless.image = '/global/images/map_icons/wireless-icon.gif';
    iconWireless.iconSize = new GSize(17, 18);
    iconWireless.iconAnchor = new GPoint(7, 7);
    iconWireless.infoWindowAnchor = new GPoint(7, 0);
    iconWireless.printImage = '/global/images/map_icons/parking_lot_icon.jpg';
    iconWireless.mozPrintImage = '/global/images/map_icons/parking_lot_icon.jpg';
    iconWireless.imageMap = [0,0, 17,0, 17,18, 0,18];

    var shuttlePolyline;
    var customIcons = [];
    customIcons["parking"] = iconPark;
    customIcons["phone"] = iconPhone;
    customIcons["wireless"] = iconWireless;
    var markerGroups = {"building": [], "parking": [], "phone": [], "wireless": []};

    function initialize() {
      if (GBrowserIsCompatible()) {
        // Create map and add controls
        var map = new GMap2(document.getElementById("map_canvas"));
        map.setMapType(G_NORMAL_MAP);
        map.setCenter(new GLatLng(43.044162, -87.906946), 16);
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.enableScrollWheelZoom();


        //Create all markers
        map.addOverlay(createMarker(new GLatLng(43.046579, -87.907504), "<b>Rosenberg Hall</b><br />1235 N. Milwaukee Street", 'building'));
        map.addOverlay(createMarker(new GLatLng(43.046739, -87.909017), "<b>Kern Center</b><br />1245 North Broadway", 'building'));
        map.addOverlay(createMarker(new GLatLng(43.045935, -87.908265), "<b>Humprey House</b><br />1200 North Broadway", 'building'));
        map.addOverlay(createMarker(new GLatLng(43.046015, -87.907733), "<b>Margaret Loock Residence Hall</b><br />324 E. Juneau Avenue", 'building'));
        map.addOverlay(createMarker(new GLatLng(43.045627, -87.907646), "<b>Roy W. Johnson Residence Hall</b><br />1121 N. Milwaukee Street", 'building'));
        map.addOverlay(createMarker(new GLatLng(43.045337, -87.90822), "<img src=\"/global/images/map_icons/apc_thumb.jpg\" height=80 width=54 align=right hspace=7 alt=Alumni Partnetship Center><b>Alumni Partnership Center</b><br />1120 North Broadway<br /><a href=\"/academics/outstanding_facilities/apc.shtml\">More information</a>", 'building'));
        //map.addOverlay(createMarker(new GLatLng(43.045416, -87.907473), "<b>Roy W. Johnson Residence Hall</b><br />1121 N. Milwaukee Street", 'building'));
        map.addOverlay(createMarker(new GLatLng(43.043963, -87.909052), "<b>Student Life and Campus Center</b><br />1025 North  Broadway", 'building'));
        map.addOverlay(createMarker(new GLatLng(43.044507, -87.908845), "<b>Todd Wehr Conference Center</b><br />1047 North Broadway", 'building'));
        map.addOverlay(createMarker(new GLatLng(43.043847, -87.907947), "<b>Grohmann Museum</b><br />1000 North Broadway<br /><a href=\"/manatwork\">More information</a>", 'building'));
        map.addOverlay(createMarker(new GLatLng(43.041742, -87.906573), "<b>Krueger Hall</b><br />820 N. Milwaukee Street", 'building'));
        map.addOverlay(createMarker(new GLatLng(43.042865, -87.90534), "<b>Walter Schroeder Library</b><br />500 E. Kilbourn Ave.", 'building'));
        map.addOverlay(createMarker(new GLatLng(43.04289, -87.906458), "<b>Allen-Bradley Hall of Science</b><br />432 E. Kilbourn Avenue", 'building'));
        map.addOverlay(createMarker(new GLatLng(43.044245, -87.906386), "<b>MSOE Athletic Field</b>", 'building'));
        
	map.addOverlay(createMarker(new GLatLng(43.044688, -87.907807), "<img src=\"/global/images/map_icons/emergency_phone_icon.jpg\" align=right height=80 alt=Code Blue Emergency Phone hspace=7 border=0><b>Code Blue Emergency Phone</b><br />Between the Broadway Lot and the Milwaukee Street B lot", 'phone'));
        map.addOverlay(createMarker(new GLatLng(43.04397, -87.907713), "<img src=\"/global/images/map_icons/emergency_phone_icon.jpg\" align=right height=80 alt=Code Blue Emergency Phone hspace=7 border=0><b>Code Blue Emergency Phone</b><br />Northeast corner of the Grohmann Museum", 'phone'));
        map.addOverlay(createMarker(new GLatLng(43.043209, -87.905918), "<img src=\"/global/images/map_icons/emergency_phone_icon.jpg\" align=right height=80 alt=Code Blue Emergency Phone hspace=7 border=0><b>Code Blue Emergency Phone</b><br />Northeast corner of the Allen-Bradley Hall of Science Building", 'phone'));
        map.addOverlay(createMarker(new GLatLng(43.046661, -87.907931), "<img src=\"/global/images/map_icons/emergency_phone_icon.jpg\" align=right height=80 alt=Code Blue Emergency Phone hspace=7 border=0><b>Code Blue Emergency Phone</b><br />Northwest corner of Rosenberg Hall", 'phone'));
        map.addOverlay(createMarker(new GLatLng(43.044627, -87.906965), "<img src=\"/global/images/map_icons/emergency_phone_icon.jpg\" align=right height=80 alt=Code Blue Emergency Phone hspace=7 border=0><b>Code Blue Emergency Phone</b><br />Northwest corner of the Athletic Field<br />(also includes an Automated External Heart Defibrillator)", 'phone'));
        map.addOverlay(createMarker(new GLatLng(43.044778, -87.908073), "<b>Broadway Lot</b>", 'parking'));
        map.addOverlay(createMarker(new GLatLng(43.043889, -87.907489), "<b>Milwaukee St. Lot A</b>", 'parking'));
        map.addOverlay(createMarker(new GLatLng(43.044448, -87.90752), "<b>Milwaukee St. Lot B</b>", 'parking'));
        map.addOverlay(createMarker(new GLatLng(43.044448, -87.90752), "<b>Milwaukee St. Lot C</b>", 'parking'));
        map.addOverlay(createMarker(new GLatLng(43.043379, -87.905079), "<b>State St. Lot A</b>", 'parking'));
        map.addOverlay(createMarker(new GLatLng(43.043407, -87.906151), "<b>State St. Lot B</b>", 'parking'));
        map.addOverlay(createMarker(new GLatLng(43.046208, -87.907468), "<b>State St. Lot C</b>", 'parking'));
        map.addOverlay(createMarker(new GLatLng(43.046805, -87.908180), "<b>Knapp St. Lot</b>", 'parking'));
        map.addOverlay(createMarker(new GLatLng(43.046107, -87.908006), "<b>Juneau Ave. Lot</b>", 'parking'));
        map.addOverlay(createMarker(new GLatLng(43.046742, -87.90917), "", 'wireless'));
        map.addOverlay(createMarker(new GLatLng(43.046589, -87.907658), "", 'wireless'));
        map.addOverlay(createMarker(new GLatLng(43.043984, -87.908885), "", 'wireless'));
        map.addOverlay(createMarker(new GLatLng(43.042928, -87.906223), "", 'wireless'));
        map.addOverlay(createMarker(new GLatLng(43.042838, -87.905537), "", 'wireless'));
	
        GDownloadUrl("/global/xml/buildings.xml", function(data, responseCode) {
          var xml = GXml.parse(data);  
          markers = xml.documentElement.getElementsByTagName("BUILDING");  
      
          for (var i = 0; i < markers.length; i++) {    
            map.addOverlay(createBuildingMarker(markers[i]));      
          }
      
          });

        // Create campus shuttle border
        shuttlePolyline = new GPolyline.fromEncoded({
          color: "#0000FF",
          weight: 10,
          points: "wmueGxxpwOaAmf@wYtAeNMG|^pFBB`GrFBIiGhEMFrEnFIG}EfF]BzF`GS",
    	    levels: "BBBBBBBBBBBBBBBB",
          zoomFactor: 32,
          numLevels: 4
        });
        map.addOverlay(shuttlePolyline);
      }
    }

    function createMarker(point, html, type) {
      var marker;

      if(type=='building')
      	{ marker = new GMarker(point); }
      else if(type=='wireless')
      	{ marker = new GMarker(point, {icon: customIcons[type], clickable: false}); }
      else
        { marker = new GMarker(point, customIcons[type]); }

      markerGroups[type].push(marker);

      if(html != "")
      	{ GEvent.addListener(marker, 'click', function() {
              marker.openInfoWindowHtml(html);
            }); }

      return marker;
    }

    function createBuildingMarker(markerXml) {
      var myMarker;
      var point = new GLatLng(parseFloat(markerXml.getAttribute("lat")),parseFloat(markerXml.getAttribute("long")));
      myMarker = new GMarker(point);

      var text = "";

      for(var a = 0; a < markerXml.childNodes.length; a++)
      {
        if(markerXml.childNodes[a].tagName=="TEXT")
        {
          text += "<p>" + markerXml.childNodes[a].firstChild.nodeValue + "</p>";
        }
	else if(markerXml.childNodes[a].tagName=="INFO")
        {
          text += "<p><a href='" + markerXml.childNodes[a].firstChild.nodeValue + "'>More Information</a></p>";
        }
      }

      var picture = "";

      if(markerXml.getAttribute("picture")!=null)
      {
        picture = "<img src='/global/images/map_icons/" + markerXml.getAttribute("picture") + "' align=right width=" + markerXml.getAttribute("pwidth") + " height=" + markerXml.getAttribute("pheight") + " hspace=7 alt='" + markerXml.getAttribute("name") + "' />";
      }

      GEvent.addListener(myMarker, "click", function() {
        myMarker.openInfoWindowHtml(picture + "<p><b>" + markerXml.getAttribute("name") + "</b></p>" + text + "<p><a href='javascript:map.closeInfoWindow();'>Close</a></p>");
        });


      markerGroups['building'].push(myMarker);

      return myMarker;
    }

    function toggleGroup(type) {
      for (var i = 0; i < markerGroups[type].length; i++) {
        var marker = markerGroups[type][i];
        if (marker.isHidden()) {
          marker.show();
        } else {
          marker.hide();
        }
      } 
    }

    function toggleShuttlePolyline() {
      if (shuttlePolyline.isHidden()) {
        shuttlePolyline.show();
      } else {
        shuttlePolyline.hide();
      }
    }

//-->
