function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

var map;

function gload() {
  if (GBrowserIsCompatible()) {
    var mapel = document.getElementById("map");
	if (mapel!=null){
		map = new GMap2(mapel);
		map.setCenter(new GLatLng(37.560908,-78.542633), 6); // center of virginia
		map.addControl(new GLargeMapControl());
        //map.addControl(new GMapTypeControl());
			   
		var vcards = getElementsByClass("vcard", document.getElementById("vcardcontainer"));
		
		var bounds = new GLatLngBounds();
		
        for (var i = 0; i < vcards.length; i++) {
		  if (vcards[i].className!='vcard nomap'){
			var geos = getElementsByClass("geo", vcards[i]);
			var point;
			
			var orgnameel = getElementsByClass("organization-unit", vcards[i]);
			var parentorg = getElementsByClass("org", vcards[i]);
			var currtitle = parentorg[0].innerHTML;
			if (orgnameel.length!=0){
				currtitle = currtitle + ": " + orgnameel[0].innerHTML;
			}
			
			
			// alert(geos.length);
			if (geos.length == 1){
				point = new GLatLng(
								getElementsByClass("latitude", geos[0])[0].innerHTML,
								getElementsByClass("longitude", geos[0])[0].innerHTML
								);
				if (!point){ 
					alert("map error: " + point);
				}
				else{
					var marker = new GMarker(point,{title:currtitle});
					var directionsurl = "http://maps.google.com/maps?saddrs=&daddr=" + point.toUrlValue();
					// var directions = "<div><a href=\"" + directionsurl + "\">Directions</a></div>";
					var direl = document.createElement("div");
					var ael = document.createElement("a");
					ael.setAttribute("href", directionsurl);
					ael.innerHTML = "Directions";
					vcards[i].appendChild(direl);
					vcards[i].lastChild.appendChild(ael);
					marker.bindInfoWindowHtml("<div class=\"mapcard\">" + vcards[i].innerHTML + "</div>");
					map.addOverlay(marker);
					bounds.extend(point);
				}
			}
		  }
        }
		map.setZoom(map.getBoundsZoomLevel(bounds));
		map.panTo(bounds.getCenter());
		if (map.getZoom()>10) map.setZoom(10);
	}
  }
}