    window.onload = function() {
		initMap();
		GDownloadUrl("/files/assets/locations.xml", function(data){
			var xml = GXml.parse(data);
			loadBranchMap(xml);
			loadBranchTable(xml,"DistibutionCenter");
			loadBranchTable(xml,"Fabrication");
			loadBranchTable(xml,"Chemical");
			loadBranchTable(xml,"CustomPackaging");
		});
    }
    
	window.onunload = function() {
		GUnload();
	}

	var mapMarkers = [];
    var map;

    // Initialize map - called when page is loaded
    function initMap(){
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map_canvas"));
        map.setCenter(new GLatLng(2,-55), 14);
        map.setMapType(G_NORMAL_MAP);
        map.addControl(new GLargeMapControl());

		baseIcon = new GIcon();
		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);
		baseIcon.infoShadowAnchor = new GPoint(18, 25);

		}  
    }

    function createbranchMarker(point, index) {
	  // Create a marker
	  var icon = new GIcon(baseIcon);
	  icon.image = "/themes/hisco/images/markers/marker" + (index + 1) + ".png";
	  var marker = new GMarker(point, icon);
      var infoTabs = 	[  
					new GInfoWindowTab("Contact Info", tabAddress),
					new GInfoWindowTab("Services", tabServices)
				];
	  
      GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowTabsHtml(infoTabs,{maxWidth:280,maxHeight:160,autoScroll:true});
      });
      return marker;
    }
  
    function loadBranchMap(xml) {
       //GDownloadUrl("/files/assets/locations2.xml", function(data){
        //var xml = GXml.parse(data);
        var markers = xml.documentElement.getElementsByTagName("Map");
        if (markers.length == 0){
          alert("Your query returned no results. Please broaden your search criteria and try again.");
        } else  {
          for (var i = 0; i < markers.length; i++) {

			if (markers[i].getElementsByTagName("BranchName")[0].hasChildNodes()) var branchName = markers[i].getElementsByTagName("BranchName")[0].firstChild.nodeValue;
			else var branchName = " " ;
			if (markers[i].getElementsByTagName("BranchStreet")[0].hasChildNodes()) var branchStreet = markers[i].getElementsByTagName("BranchStreet")[0].firstChild.nodeValue;
			else var branchStreet = " ";
			if (markers[i].getElementsByTagName("BranchCity")[0].hasChildNodes()) var branchCity = markers[i].getElementsByTagName("BranchCity")[0].firstChild.nodeValue;
			else var branchCity = " ";
			if (markers[i].getElementsByTagName("BranchState")[0].hasChildNodes()) var branchState = markers[i].getElementsByTagName("BranchState")[0].firstChild.nodeValue;
			else var branchState = " ";
			if (markers[i].getElementsByTagName("BranchZip")[0].hasChildNodes()) var branchZip = markers[i].getElementsByTagName("BranchZip")[0].firstChild.nodeValue;
			else var branchZip = " ";
			if (markers[i].getElementsByTagName("BranchPhone")[0].hasChildNodes()) var branchPhone = markers[i].getElementsByTagName("BranchPhone")[0].firstChild.nodeValue;
			else var branchPhone = " ";
			if (markers[i].getElementsByTagName("BranchFax")[0].hasChildNodes()) var branchFax = markers[i].getElementsByTagName("BranchFax")[0].firstChild.nodeValue;
			else var branchFax = " ";
			if (markers[i].getElementsByTagName("BranchEmail")[0].hasChildNodes()) var branchEmail = markers[i].getElementsByTagName("BranchEmail")[0].firstChild.nodeValue;
			else var branchEmail = " ";
			if (markers[i].getElementsByTagName("BranchImageURL")[0].hasChildNodes()) var branchImgURL = markers[i].getElementsByTagName("BranchImageURL")[0].firstChild.nodeValue;
			else var branchImgURL = " ";			
			
			if (markers[i].getElementsByTagName("BranchDC")[0].firstChild.nodeValue == 1) {
				branchDC = "<div class='service'><b>Distribution Center</b><br/>Stocking local inventory of electronic and industrial materials while providing technical support and fast, friendly service.</div>";
			} else {
				branchDC = "&nbsp;";
			}

			if (markers[i].getElementsByTagName("BranchFab")[0].firstChild.nodeValue == 1) {
				branchFab = "<div class='service'><b>Fabrication Facility</b><br/>Leading converter of high performance materials; capabilities include die-cutting, kiss-cutting, slitting, laminating and sheeting, and rapid prototyping.</div>";
			} else {
				branchFab = "&nbsp;";
			}
			
			if (markers[i].getElementsByTagName("BranchCP")[0].firstChild.nodeValue == 1) {
				branchCP = "<div class='service'><b>Adhesives Packaging Facility</b><br/>Custom packaging solutions of adhesives, sealants, and resins; custom urethane forumulation; and custom blending.</div>";
			} else {
				branchCP = "&nbsp;";
			}			

			if (markers[i].getElementsByTagName("BranchChem")[0].firstChild.nodeValue == 1) {
				branchChem = "<div class='service'><b>Chemical Management Facility</b><br/>Specializing in cold storage, hazardous materials and on-site chemical management.</div>";
			} else {
				branchChem = "&nbsp;";
			}

			tabAddress = "<img style='float:right;margin-left:5px;' src='" + branchImgURL + "' />";
			tabAddress  += "<div class='contact_info'><h2 class='loc'>" + (i + 1) + "</h2> <b>" + branchName + "</b><br/>";
			if (branchStreet != " ") {
				tabAddress  +=  branchStreet + "<br />" 
							+ branchCity + ", " + branchState + " " + branchZip +"<br />";
			}
			tabAddress += "Phone: " + branchPhone + "<br />"
							+ "Fax: " + branchFax + "<br />"
							+ "Email: <a href='mailto:" + branchEmail +"'>" + branchEmail + "</a> <br />"
							+ "<a href='http://maps.google.com/maps?q=" + branchStreet + "," + branchCity + "," + branchState + "," + branchZip + "'>Get map/directions for this branch</a></div>";
			
			tabServices = branchDC + branchCP + branchFab + branchChem;

			if (markers[i].getElementsByTagName("BranchID")[0].firstChild.nodeValue == "PRE") continue;
			if (markers[i].getElementsByTagName("BranchID")[0].firstChild.nodeValue == "PCS") continue;	
			if (markers[i].getElementsByTagName("BranchID")[0].firstChild.nodeValue == "PCW") continue;	

			var point = new GLatLng(
				parseFloat(markers[i].getElementsByTagName("BranchLatitude")[0].firstChild.nodeValue),
				parseFloat(markers[i].getElementsByTagName("BranchLongitude")[0].firstChild.nodeValue)
				);
		
			mapMarkers.push(createbranchMarker(point,i));           
          }          
          showMap();
        }
      //});           
    } 
   
    function loadBranchTable(xml, typeName) {
       //GDownloadUrl("/files/assets/locations2.xml", function(data){
        //var xml = GXml.parse(data);
		var divName = "div#" + typeName;
        var markers = xml.documentElement.getElementsByTagName(typeName);
        if (markers.length == 0){
          alert("Your query returned no results. Please broaden your search criteria and try again.");
        } else  {
          for (var i = 0; i < markers.length; i++) {
			if (markers[i].getElementsByTagName("BranchName")[0].hasChildNodes()) var branchName = markers[i].getElementsByTagName("BranchName")[0].firstChild.nodeValue;
			else var branchName = " " ;
			if (markers[i].getElementsByTagName("BranchStreet")[0].hasChildNodes()) var branchStreet = markers[i].getElementsByTagName("BranchStreet")[0].firstChild.nodeValue;
			else var branchStreet = " ";
			if (markers[i].getElementsByTagName("BranchCity")[0].hasChildNodes()) var branchCity = markers[i].getElementsByTagName("BranchCity")[0].firstChild.nodeValue;
			else var branchCity = " ";
			if (markers[i].getElementsByTagName("BranchState")[0].hasChildNodes()) var branchState = markers[i].getElementsByTagName("BranchState")[0].firstChild.nodeValue;
			else var branchState = " ";
			if (markers[i].getElementsByTagName("BranchZip")[0].hasChildNodes()) var branchZip = markers[i].getElementsByTagName("BranchZip")[0].firstChild.nodeValue;
			else var branchZip = " ";
			if (markers[i].getElementsByTagName("BranchPhone")[0].hasChildNodes()) var branchPhone = markers[i].getElementsByTagName("BranchPhone")[0].firstChild.nodeValue;
			else var branchPhone = " ";
			if (markers[i].getElementsByTagName("BranchFax")[0].hasChildNodes()) var branchFax = markers[i].getElementsByTagName("BranchFax")[0].firstChild.nodeValue;
			else var branchFax = " ";
			if (markers[i].getElementsByTagName("BranchEmail")[0].hasChildNodes()) var branchEmail = markers[i].getElementsByTagName("BranchEmail")[0].firstChild.nodeValue;
			else var branchEmail = " ";
			if (markers[i].getElementsByTagName("BranchImageURL")[0].hasChildNodes()) var branchImgURL = markers[i].getElementsByTagName("BranchImageURL")[0].firstChild.nodeValue;
			else var branchImgURL = " ";			

			pAddress  = "<div class='contact_info'><a target='_blank' href='http://maps.google.com/maps?q=" + branchStreet + "," + branchCity + "," + branchState + "," + branchZip + "'><b>" + branchName + "</b></a><br/>";
			if (branchStreet != " ") {
				pAddress  +=  branchStreet + "<br />" 
							+ branchCity + ", " + branchState + " " + branchZip +"<br />";
			}
			pAddress += "Phone: " + branchPhone + "<br />"
							+ "Fax: " + branchFax + "<br />"
							+ "Email: <a href='mailto:" + branchEmail +"'>" + branchEmail + "</a>"
							+ "</div>";
			$(document).ready(function(){
				$(divName).append("<div class=\"loctile\">" + pAddress +"</div>");
			});
          }
        }
      //});           
    }

    // Show Google map with branch data
    function showMap(){
      // Find boundary points of branch location
      var bounds = new GLatLngBounds();
      for (var i=0;i < mapMarkers.length;i++)  {
          map.addOverlay(mapMarkers[i]);
          bounds.extend(mapMarkers[i].getPoint());
       }
      // Reset center and zoom level based on queried branch locations 
      map.setCenter(bounds.getCenter());
      map.setZoom(map.getBoundsZoomLevel(bounds));
    }

    // Clear map points
    function clearMap(){
      mapPoints = []; 	     
      map.clearOverlays();
    }