//MakeMapMarkersFromXML.js
//===========  This function creates an array of custom Google Map api marker icons   ============
//===========  NOTE: Add new icons to the end of the array to avoid breaking exiting code  ========
	/*	map marker icons majic decoder ring
	markerIcons[0] = parking Icon
	markerIcons[1] = metro Icon 
	markerIcons[2] = about Icon (red)
	markerIcons[3] = blue about Icon
	markerIcons[4] = green about Icon
	markerIcons[5] = orange about Icon
	markerIcons[6] = pink about Icon
	markerIcons[7] = yellow about Icon
	markerIcons[8] = info Icon
	markerIcons[9] = pumpkin patch Icon
	markerIcons[10] = greencircleIcon
	markerIcons[11] = yellowcircleIcon
	markerIcons[12] = bluecircleIcon
	markerIcons[13] = orangecircleIcon
	markerIcons[14] = purplecircleIcon
	markerIcons[15] = silvercircleIcon
	markerIcons[16] = airport marker icon
	markerIcons[17] = bar or pub marker icon
	markerIcons[18] = restaurant or food marker icon
	markerIcons[19] = hiking trail marker icon
	markerIcons[20] = trees or park marker icon 
	markerIcons[21] = fireworks marker icon 
	*/	

	function createMarkerIcons()
	{
	//create array to hold custom map marker icons
	var markerIcons = [];
		for (var i = 0; i < 22; i++) 
		{
		markerIcons[i] = new GIcon();
		}
	
	// Use a custom parking marker icon 
    markerIcons[0].image = "http://z.about.com/d/dc/1/0/6/_/parking-sign-marker1.png";
    markerIcons[0].shadow = "http://z.about.com/d/dc/1/0/7/_/shadow-parking-sign-marker1.png";
    markerIcons[0].iconSize = new GSize(20.0, 34.0);
    markerIcons[0].shadowSize = new GSize(39.0, 34.0);
    markerIcons[0].iconAnchor = new GPoint(10.0, 34.0);
    markerIcons[0].infoWindowAnchor = new GPoint(10.0, 10.0);
    markerIcons[0].infoShadowAnchor = new GPoint(18, 25);
    markerIcons[0].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
    markerIcons[0].printImage = "http://z.about.com/d/dc/1/0/5/_/parking-sign-marker1ie.gif";
    markerIcons[0].mozPrintImage = "http://z.about.com/d/dc/1/0/4/_/parking-sign-marker1ff.gif";

    // Use a custom Metro station marker icon 
    markerIcons[1].image = "http://z.about.com/d/dc/1/0/x/Y/metro-marker.png";
    markerIcons[1].shadow = "http://z.about.com/d/dc/1/0/u/Y/shadow-metro-marker.png";
    markerIcons[1].iconSize = new GSize(20.0, 34.0);
    markerIcons[1].shadowSize = new GSize(39.0, 34.0);
    markerIcons[1].iconAnchor = new GPoint(10.0, 34.0);
    markerIcons[1].infoWindowAnchor = new GPoint(10.0, 10.0);
    markerIcons[1].infoShadowAnchor = new GPoint(18, 25);
    markerIcons[1].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
    markerIcons[1].printImage = "http://z.about.com/d/dc/1/0/w/Y/metro-markerie.gif";
    markerIcons[1].mozPrintImage = "http://z.about.com/d/dc/1/0/v/Y/metro-markerff.gif";
	  
    // Use a custom red About.com marker icon 
    markerIcons[2].image = "http://z.about.com/d/dc/1/0/V/Y/aboutmarker.png";
    markerIcons[2].shadow = "http://z.about.com/d/dc/1/0/U/Y/shadow-aboutmarker.png";
    markerIcons[2].iconSize = new GSize(21.0, 34.0);
	markerIcons[2].shadowSize = new GSize(39.0, 34.0);
    markerIcons[2].iconAnchor = new GPoint(10.0, 34.0);
    markerIcons[2].infoWindowAnchor = new GPoint(10.0, 10.0);
    markerIcons[2].infoShadowAnchor = new GPoint(18, 25);
    markerIcons[2].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
    markerIcons[2].printImage = "http://z.about.com/d/dc/1/0/S/Y/aboutmarkerie.gif";
    markerIcons[2].mozPrintImage = "http://z.about.com/d/dc/1/0/R/Y/aboutmarkerff.gif";

    // Use a custom blue About.com marker icon 
    markerIcons[3].image = "http://z.about.com/d/dc/1/0/E/l/blue_aboutmarker.png";
    markerIcons[3].shadow = "http://z.about.com/d/dc/1/0/U/Y/shadow-aboutmarker.png";
    markerIcons[3].iconSize = new GSize(21.0, 34.0);
    markerIcons[3].shadowSize = new GSize(39.0, 34.0);
    markerIcons[3].iconAnchor = new GPoint(10.0, 34.0);
    markerIcons[3].infoWindowAnchor = new GPoint(10.0, 10.0);
    markerIcons[3].infoShadowAnchor = new GPoint(18, 25);
    markerIcons[3].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
    markerIcons[3].printImage = "http://z.about.com/d/dc/1/0/H/l/blue_aboutmarkerie.gif";
    markerIcons[3].mozPrintImage = "http://z.about.com/d/dc/1/0/G/l/blue_aboutmarkerff.gif";

    // Use a custom green About.com marker icon 
    markerIcons[4].image = "http://z.about.com/d/dc/1/0/9/l/grn_aboutmarker.png";
    markerIcons[4].shadow = "http://z.about.com/d/dc/1/0/U/Y/shadow-aboutmarker.png";
    markerIcons[4].iconSize = new GSize(21.0, 34.0);
    markerIcons[4].shadowSize = new GSize(39.0, 34.0);
    markerIcons[4].iconAnchor = new GPoint(10.0, 34.0);
    markerIcons[4].infoWindowAnchor = new GPoint(10.0, 10.0);
    markerIcons[4].infoShadowAnchor = new GPoint(18, 25);
    markerIcons[4].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
    markerIcons[4].printImage = "http://z.about.com/d/dc/1/0/F/l/grn_aboutmarkerie.gif";
    markerIcons[4].mozPrintImage = "http://z.about.com/d/dc/1/0/I/l/grn_aboutmarkerff.gif";

    // Use a custom orange About.com marker icon 
    markerIcons[5].image = "http://z.about.com/d/dc/1/0/C/l/orange_aboutmarker.png";
    markerIcons[5].shadow = "http://z.about.com/d/dc/1/0/U/Y/shadow-aboutmarker.png";
    markerIcons[5].iconSize = new GSize(21.0, 34.0);
    markerIcons[5].shadowSize = new GSize(39.0, 34.0);
    markerIcons[5].iconAnchor = new GPoint(10.0, 34.0);
    markerIcons[5].infoWindowAnchor = new GPoint(10.0, 10.0);
    markerIcons[5].infoShadowAnchor = new GPoint(18, 25);
    markerIcons[5].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
    markerIcons[5].printImage = "http://z.about.com/d/dc/1/0/K/l/orange_aboutmarkerie.gif";
    markerIcons[5].mozPrintImage = "http://z.about.com/d/dc/1/0/J/l/orange_aboutmarkerff.gif";

    // Use a custom pink About.com marker icon 
    markerIcons[6].image = "http://z.about.com/d/dc/1/0/B/l/pink_aboutmarker.png";
    markerIcons[6].shadow = "http://z.about.com/d/dc/1/0/U/Y/shadow-aboutmarker.png";
    markerIcons[6].iconSize = new GSize(21.0, 34.0);
    markerIcons[6].shadowSize = new GSize(39.0, 34.0);
    markerIcons[6].iconAnchor = new GPoint(10.0, 34.0);
    markerIcons[6].infoWindowAnchor = new GPoint(10.0, 10.0);
    markerIcons[6].infoShadowAnchor = new GPoint(18, 25);
    markerIcons[6].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
    markerIcons[6].printImage = "http://z.about.com/d/dc/1/0/O/l/pink_aboutmarkerie.gif";
    markerIcons[6].mozPrintImage = "http://z.about.com/d/dc/1/0/N/l/pink_aboutmarkerff.gif";

    // Use a custom yellow About.com marker icon 
    markerIcons[7].image = "http://z.about.com/d/dc/1/0/D/l/yellow_aboutmarker.png";
    markerIcons[7].shadow = "http://z.about.com/d/dc/1/0/U/Y/shadow-aboutmarker.png";
    markerIcons[7].iconSize = new GSize(21.0, 34.0);
    markerIcons[7].shadowSize = new GSize(39.0, 34.0);
    markerIcons[7].iconAnchor = new GPoint(10.0, 34.0);
    markerIcons[7].infoWindowAnchor = new GPoint(10.0, 10.0);
    markerIcons[7].infoShadowAnchor = new GPoint(18, 25);
    markerIcons[7].transparent = "http://z.about.com/d/dc/1/0/M/l/yellow_aboutmarkerie.gif";
    markerIcons[7].printImage = "http://z.about.com/d/dc/1/0/O/l/pink_aboutmarkerie.gif";
    markerIcons[7].mozPrintImage = "http://z.about.com/d/dc/1/0/L/l/yellow_aboutmarkerff.gif";
	  	  	  
    // Use a custom information marker icon 
    markerIcons[8].image = "http://z.about.com/d/dc/1/0/h/Y/info-sign-marker.png";
    markerIcons[8].shadow = "http://z.about.com/d/dc/1/0/q/Y/shadow-signmarker.png";
    markerIcons[8].iconSize = new GSize(20.0, 34.0);
    markerIcons[8].shadowSize = new GSize(39.0, 34.0);
    markerIcons[8].iconAnchor = new GPoint(10.0, 34.0);
    markerIcons[8].infoWindowAnchor = new GPoint(10.0, 10.0);
    markerIcons[8].infoShadowAnchor = new GPoint(18, 25);
    markerIcons[8].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
    markerIcons[8].printImage = "http://z.about.com/d/dc/1/0/j/Y/info-sign-markerie.gif";
    markerIcons[8].mozPrintImage = "http://z.about.com/d/dc/1/0/i/Y/info-sign-markerff.gif";
	
      // Use a custom pumpkin patch marker icon 
      markerIcons[9].image = "http://z.about.com/d/dc/1/0/z/g/pumpkinmarker.png";
      markerIcons[9].shadow = "http://z.about.com/d/dc/1/0/y/g/shadow-pumpkinmarker.png";
      markerIcons[9].iconSize = new GSize(20.0, 27.0);
      markerIcons[9].shadowSize = new GSize(35.0, 27.0);
      markerIcons[9].iconAnchor = new GPoint(10.0, 27.0);
      markerIcons[9].infoWindowAnchor = new GPoint(10.0, 10.0);
      markerIcons[9].infoShadowAnchor = new GPoint(17, 18);
      markerIcons[9].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
      markerIcons[9].printImage = "http://z.about.com/d/dc/1/0/0/h/pumpkinmarkerie.gif";
      markerIcons[9].mozPrintImage = "http://z.about.com/d/dc/1/0/-/h/pumpkinmarkerff.gif";

	// Use a custom green checkpoint marker icon (small circle)
      markerIcons[10].image = "http://z.about.com/d/dc/1/0/X/l/checkpoint.png";
      markerIcons[10].shadow = "http://z.about.com/d/dc/1/0/p/l/shadow_checkpoint.png";
      markerIcons[10].iconSize = new GSize(10.0, 10.0);
      markerIcons[10].shadowSize = new GSize(16.0, 10.0);
      markerIcons[10].iconAnchor = new GPoint(5.0, 5.0);
      markerIcons[10].infoWindowAnchor = new GPoint(5.0, 5.0);
      markerIcons[10].infoShadowAnchor = new GPoint(5, 5);
      markerIcons[10].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
      markerIcons[10].printImage = "http://z.about.com/d/dc/1/0/f/l/checkpointie.gif";
      markerIcons[10].mozPrintImage = "http://z.about.com/d/dc/1/0/e/l/checkpointff.gif";

	// Use a custom yellow checkpoint marker icon (small circle)
      markerIcons[11].image = "http://z.about.com/d/dc/1/0/t/l/yellow_checkpoint.png";
      markerIcons[11].shadow = "http://z.about.com/d/dc/1/0/p/l/shadow_checkpoint.png";
      markerIcons[11].iconSize = new GSize(10.0, 10.0);
      markerIcons[11].shadowSize = new GSize(16.0, 10.0);
      markerIcons[11].iconAnchor = new GPoint(5.0, 5.0);
      markerIcons[11].infoWindowAnchor = new GPoint(5.0, 5.0);
      markerIcons[11].infoShadowAnchor = new GPoint(5, 5);
      markerIcons[11].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
      markerIcons[11].printImage = "http://z.about.com/d/dc/1/0/f/l/yellow_checkpointie.gif";
      markerIcons[11].mozPrintImage = "http://z.about.com/d/dc/1/0/e/l/yellow_checkpointff.gif";

      // Use a custom blue checkpoint marker icon (small circle)
      markerIcons[12].image = "http://z.about.com/d/dc/1/0/s/l/blue_checkpoint.png";
      markerIcons[12].shadow = "http://z.about.com/d/dc/1/0/p/l/shadow_checkpoint.png";
      markerIcons[12].iconSize = new GSize(10.0, 10.0);
      markerIcons[12].shadowSize = new GSize(16.0, 10.0);
      markerIcons[12].iconAnchor = new GPoint(5.0, 5.0);
      markerIcons[12].infoWindowAnchor = new GPoint(5.0, 5.0);
      markerIcons[12].infoShadowAnchor = new GPoint(5, 5);
      markerIcons[12].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
      markerIcons[12].printImage = "http://z.about.com/d/dc/1/0/n/l/blue_checkpointie.gif";
      markerIcons[12].mozPrintImage = "http://z.about.com/d/dc/1/0/m/l/blue_checkpointff.gif";

      // Use a custom orange checkpoint marker icon (small circle)
      markerIcons[13].image = "http://z.about.com/d/dc/1/0/r/l/orange_checkpoint.png";
      markerIcons[13].shadow = "http://z.about.com/d/dc/1/0/p/l/shadow_checkpoint.png";
      markerIcons[13].iconSize = new GSize(10.0, 10.0);
      markerIcons[13].shadowSize = new GSize(16.0, 10.0);
      markerIcons[13].iconAnchor = new GPoint(5.0, 5.0);
      markerIcons[13].infoWindowAnchor = new GPoint(5.0, 5.0);
      markerIcons[13].infoShadowAnchor = new GPoint(5, 5);
      markerIcons[13].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
      markerIcons[13].printImage = "http://z.about.com/d/dc/1/0/l/l/orange_checkpointie.gif";
      markerIcons[13].mozPrintImage = "http://z.about.com/d/dc/1/0/k/l/orange_checkpointff.gif";

      // Use a custom purple checkpoint marker icon (small circle)
      markerIcons[14].image = "http://z.about.com/d/dc/1/0/u/l/purple_checkpoint.png";
      markerIcons[14].shadow = "http://z.about.com/d/dc/1/0/p/l/shadow_checkpoint.png";
      markerIcons[14].iconSize = new GSize(10.0, 10.0);
      markerIcons[14].shadowSize = new GSize(16.0, 10.0);
      markerIcons[14].iconAnchor = new GPoint(5.0, 5.0);
      markerIcons[14].infoWindowAnchor = new GPoint(5.0, 5.0);
      markerIcons[14].infoShadowAnchor = new GPoint(5, 5);
      markerIcons[14].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
      markerIcons[14].printImage = "http://z.about.com/d/dc/1/0/j/l/purple_checkpointie.gif";
      markerIcons[14].mozPrintImage = "http://z.about.com/d/dc/1/0/i/l/purple_checkpointff.gif";

      // Use a custom silver checkpoint marker icon (small circle)
      markerIcons[15].image = "http://z.about.com/d/dc/1/0/q/l/silver_checkpoint.png";
      markerIcons[15].shadow = "http://z.about.com/d/dc/1/0/p/l/shadow_checkpoint.png";
      markerIcons[15].iconSize = new GSize(10.0, 10.0);
      markerIcons[15].shadowSize = new GSize(16.0, 10.0);
      markerIcons[15].iconAnchor = new GPoint(5.0, 5.0);
      markerIcons[15].infoWindowAnchor = new GPoint(5.0, 5.0);
      markerIcons[15].infoShadowAnchor = new GPoint(5, 5);
      markerIcons[15].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
      markerIcons[15].printImage = "http://z.about.com/d/dc/1/0/h/l/silver_checkpointie.gif";
      markerIcons[15].mozPrintImage = "http://z.about.com/d/dc/1/0/g/l/silver_checkpointff.gif";

    // Use a custom airport marker icon 
    markerIcons[16].image = "http://z.about.com/d/dc/1/0/W/Y/airport-sign-marker.png";
    markerIcons[16].shadow = "http://z.about.com/d/dc/1/0/q/Y/shadow-signmarker.png";
	markerIcons[16].iconSize = new GSize(20.0, 34.0);
    markerIcons[16].shadowSize = new GSize(39.0, 34.0);
    markerIcons[16].iconAnchor = new GPoint(10.0, 34.0);
    markerIcons[16].infoWindowAnchor = new GPoint(10.0, 10.0);
    markerIcons[16].infoShadowAnchor = new GPoint(18, 25);
    markerIcons[16].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
    markerIcons[16].printImage = "http://z.about.com/d/dc/1/0/Y/Y/airport-sign-markerie.gif";
    markerIcons[16].mozPrintImage = "http://z.about.com/d/dc/1/0/X/Y/airport-sign-markerff.gif";

    // Use a custom bar or pub marker icon 
    markerIcons[17].image = "http://z.about.com/d/dc/1/0/Z/Y/bar-sign-marker.png";
    markerIcons[17].shadow = "http://z.about.com/d/dc/1/0/q/Y/shadow-signmarker.png";
    markerIcons[17].iconSize = new GSize(20.0, 34.0);
    markerIcons[17].shadowSize = new GSize(39.0, 34.0);
    markerIcons[17].iconAnchor = new GPoint(10.0, 34.0);
    markerIcons[17].infoWindowAnchor = new GPoint(10.0, 10.0);
    markerIcons[17].infoShadowAnchor = new GPoint(18, 25);
    markerIcons[17].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
    markerIcons[17].printImage = "http://z.about.com/d/dc/1/0/a/Y/bar-sign-markerie.gif";
    markerIcons[17].mozPrintImage = "http://z.about.com/d/dc/1/0/_/Y/bar-sign-markerff.gif";

    // Use a custom restaurant or food marker icon 
    markerIcons[18].image = "http://z.about.com/d/dc/1/0/b/Y/food-sign-marker.png";
    markerIcons[18].shadow = "http://z.about.com/d/dc/1/0/q/Y/shadow-signmarker.png";
    markerIcons[18].iconSize = new GSize(20.0, 34.0);
    markerIcons[18].shadowSize = new GSize(39.0, 34.0);
    markerIcons[18].iconAnchor = new GPoint(10.0, 34.0);
    markerIcons[18].infoWindowAnchor = new GPoint(10.0, 10.0);
    markerIcons[18].infoShadowAnchor = new GPoint(18, 25);
    markerIcons[18].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
    markerIcons[18].printImage = "http://z.about.com/d/dc/1/0/d/Y/food-sign-markerie.gif";
    markerIcons[18].mozPrintImage = "http://z.about.com/d/dc/1/0/c/Y/food-sign-markerff.gif";

	// Use a custom hiking trail marker icon 
    markerIcons[19].image = "http://z.about.com/d/dc/1/0/e/Y/hiking-sign-marker.png";
    markerIcons[19].shadow = "http://z.about.com/d/dc/1/0/q/Y/shadow-signmarker.png";
    markerIcons[19].iconSize = new GSize(20.0, 34.0);
    markerIcons[19].shadowSize = new GSize(39.0, 34.0);
    markerIcons[19].iconAnchor = new GPoint(10.0, 34.0);
    markerIcons[19].infoWindowAnchor = new GPoint(10.0, 10.0);
    markerIcons[19].infoShadowAnchor = new GPoint(18, 25);
    markerIcons[19].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
    markerIcons[19].printImage = "http://z.about.com/d/dc/1/0/g/Y/hiking-sign-markerie.gif";
    markerIcons[19].mozPrintImage = "http://z.about.com/d/dc/1/0/f/Y/hiking-sign-markerff.gif";

    // Use a custom trees or park marker icon 
    markerIcons[20].image = "http://z.about.com/d/dc/1/0/r/Y/trees-sign-marker.png";
    markerIcons[20].shadow = "http://z.about.com/d/dc/1/0/q/Y/shadow-signmarker.png";
    markerIcons[20].iconSize = new GSize(20.0, 34.0);
    markerIcons[20].shadowSize = new GSize(39.0, 34.0);
    markerIcons[20].iconAnchor = new GPoint(10.0, 34.0);
    markerIcons[20].infoWindowAnchor = new GPoint(10.0, 10.0);
    markerIcons[20].infoShadowAnchor = new GPoint(18, 25);
    markerIcons[20].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
    markerIcons[20].printImage = "http://z.about.com/d/dc/1/0/t/Y/trees-sign-markerie.gif";
    markerIcons[20].mozPrintImage = "http://z.about.com/d/dc/1/0/s/Y/trees-sign-markerff.gif";
	  
    // Use a custom fireworks marker icon 
    markerIcons[21].image = "http://z.about.com/d/dc/1/0/I/d/fireworksmarker.png";
    markerIcons[21].shadow = "http://z.about.com/d/dc/1/0/L/d/shadow-fireworksmarker.png";
    markerIcons[21].iconSize = new GSize(21.0, 34.0);
	markerIcons[21].shadowSize = new GSize(39.0, 34.0);
    markerIcons[21].iconAnchor = new GPoint(10.0, 34.0);
    markerIcons[21].infoWindowAnchor = new GPoint(10.0, 10.0);
    markerIcons[21].infoShadowAnchor = new GPoint(18, 25);
    markerIcons[21].transparent = "http://www.google.com/intl/en_ALL/mapfiles/markerTransparent.png";
    markerIcons[21].printImage = "http://z.about.com/d/dc/1/0/K/d/fireworksmarkerie.gif";
    markerIcons[21].mozPrintImage = "http://z.about.com/d/dc/1/0/J/d/fireworksmarkerff.gif";

	return markerIcons;
	}	

	
//================================================================================================================================================	
	// This function creates a map marker with custom icon, tooltip, and html info window
	function createMarker(point,myIcon,tooltip,html) 
	{
	var marker = new GMarker(point,{icon:myIcon, title:tooltip})
        GEvent.addListener(marker, "click", function() 
		{
          marker.openInfoWindowHtml(html);
        });
    return marker;
    }

	// This function picks up the click and opens the corresponding info window
	function myclick(i) 
	{
	gmarkers[i].openInfoWindowHtml(htmls[i]);
    }
	
//================================================================================================================================================	

//This function loads XML data using either IE or FF
	function loadXML(filename) 
	{
	try //Internet Explorer
		{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		}
		catch(e)
		{
			try //Firefox, Mozilla, Opera, etc.
			{
			xmlDoc=document.implementation.createDocument("","",null);
			}
				catch(e)
				{
				alert("browser does not support XML");
				return;
				}
		}
	xmlDoc.async=false;
	xmlDoc.load(filename);
	}

//================================================================================================================================================	

//This function reads the xmldoc loaded above and parses it for marker data, then  creates the infoWindows and adds the markers to the map
/*  Required vars: 
map is the Google map to display the markers on, 
icon is an array of marker icons to display, its length must be the same as for markerName
width is an array of infoWindow widths in pixels, its length must be the same as for markerName
displayMarker is an array of boolean flags to trun on/off display of the associated marker, its length must be the same as for markerName

Optional vars:
excludeMarker is an array of boolean flags, the correllary of displayMarker, that turns off markers within the bounding box excludeBox. Its length must be the same as for markerName
excludeBox is a bounding box that, if not = null, uses the excludeMarker flags to skip over markers within its boundaries
If either excludeMarker or excludeBox is null, then all markers are shown.
searchString is a text string that, if not null, is used to display only markers that contain the string somewhere in the infoWindow html text.
*/
function createMarkers(map, icon, width, displayMarker, excludeMarker, excludeBox, searchString)
{
    // initialize map marker names (tagnames in xml file)
	var markerName = new Array();
	markerName[0] = "parking";
	markerName[1] = "metro";
	markerName[2] = "museum";
	markerName[3] = "monument";
	markerName[4] = "poi";
	markerName[5] = "park";
	markerName[6] = "embassy";
	markerName[7] = "pumpkin";
	markerName[8] = "fireworks";
	
/*	if (icon.length < markerName.length) {alert ("Number of icons defined is less than number of marker types in the xml data"); return;}
	if (width.length < markerName.length) {alert ("Number of infoWindow widths defined is less than number of marker types in xml data"); return;}
	if (displayMarker.length < markerName.length) {alert ("Number of display flags defined is less than number of marker types in xml data"); return;}
*/	
	
	if (excludeMarker == null) 
	{
	excludeMarker = [];
	for (var k = 0; k < markerName.length; k++)
		{
		excludeMarker[k] = false;
		}
	}
	if (excludeBox == null) 
	{
	for (var k = 0; k < markerName.length; k++)
		{
		excludeMarker[k] = false;
		}
	}
//	if (excludeMarker.length < markerName.length) {alert ("Number of exclude flags defined is less than number of marker types in xml data"); return;}

    // obtain the array of markers by xml tag and loop through it
	for (var j = 0; j < markerName.length; j++) 
	{
		var markers = xmlDoc.documentElement.getElementsByTagName(markerName[j]);
		if (displayMarker[j]) // parse xml for attributes if display flag is true
		{
        for (var i = 0; i < markers.length; i++) 
			{
            // obtain the attribues of each marker and associated html for it's infoWindow
            var lat = parseFloat(markers[i].getAttribute("lat"));
            var lng = parseFloat(markers[i].getAttribute("lng"));
            var point = new GLatLng(lat,lng);
            var tooltip = markers[i].getAttribute("tooltip");
			var html_title_url = markers[i].getAttribute("html_title_url");
            var html_title = markers[i].getAttribute("html_title");
            var html_addr = markers[i].getAttribute("html_addr");
            var html_tel = markers[i].getAttribute("html_tel");
            var html_link_url = markers[i].getAttribute("html_link_url");
            var html_link_text = markers[i].getAttribute("html_link_text");
			//build the html for the infoWindow
			if (html_title_url != "") 
				{ 
				html_title = '<a href="' + html_title_url + '">' + html_title + "</a>";
				}
			if (html_addr != "") 
				{
				html_addr = "<br>" + html_addr;
				if (j==1) //test for metro station icons and change the background colors for the different lines
					{
					html_addr = html_addr.replace(/Blue/i, '<font style="BACKGROUND-COLOR: blue; color: white"><strong>'+'&nbsp;'+'Blue'+'&nbsp;'+'</strong></font>');
					html_addr = html_addr.replace(/Green/i, '<font style="BACKGROUND-COLOR: green; color: white"><strong>'+'&nbsp;'+'Green'+'&nbsp;'+'</strong></font>');
					html_addr = html_addr.replace(/Orange/i, '<font style="BACKGROUND-COLOR: orange; color: black"><strong>'+'&nbsp;'+'Orange'+'&nbsp;'+'</strong></font>');
					html_addr = html_addr.replace(/Red/i, '<font style="BACKGROUND-COLOR: red; color: white"><strong>'+'&nbsp;' +'Red'+'&nbsp;'+'</strong></font>');
					html_addr = html_addr.replace(/Yellow/i, '<font style="BACKGROUND-COLOR: yellow; color: black"><strong>'+'&nbsp;'+'Yellow'+'&nbsp;'+'</strong></font>');
					}
				}
			if (html_tel != "") 
				{
				html_tel = "<br>" + html_tel;
				}
			if (html_link_url != "") 
				{
				html_link_text = '<br><a href="' + html_link_url + '">' + html_link_text + "</a>";
				}
			//Build infoWindow html string
			var html = '<div style="width:' + width[j] + 'px"><strong>' + html_title + "</strong>" + html_addr + html_tel + html_link_text;
			//Add a "get directions" link 
			html += '<br> <a href="' + "http://maps.google.com/maps?saddr=&daddr=" + point.toUrlValue() + '" target ="_blank">Get Directions</a></div>';

			// create the marker
			var marker = createMarker(point,icon[j],tooltip,html);
				 
				if (excludeMarker[j]==true) //Exclude selected markers in the bounding box 
				{
					if (excludeBox.containsLatLng(point) == false) //If the marker location is within the bounding box, then skip it
					{
						if (searchString != null)  //Filter out any markers that do not contain the searchString text
						{
							if (html.indexOf(searchString)>0)
							{
								map.addOverlay(marker); //If the marker location is outside of the bounding box AND contains the search string, then add it to the map
							}
						}
						else
						{
							map.addOverlay(marker); //If the marker location is outside of the bounding box AND searchSting is null, then add it to the map
						}
					}
				}
				else 
				{
					if (searchString != null)  //Filter out any markers that do not contain the searchString text
					{
						if (html.indexOf(searchString)>0)
						{
							map.addOverlay(marker); //If the marker contains the search string, then add it to the map
						}
					}
					else
					{
						map.addOverlay(marker); //If searchString is null, then add marker to the map
					}
				}
			}
		}
	}
}
