
function loadData(map) {
 	var request = GXmlHttp.create();
    request.open("GET", "deployment.xml?" + (new Date().getTime()), true);
    //request.open("GET", "http://srv2.fra.de.geant2.net:8080/lg/deployment.xml?" + (new Date().getTime()), true);
    request.onreadystatechange = function() {
    	if (request.readyState == 4) {
       		var xmlDoc = request.responseXML;
          	// obtain the array of metadata and loop through it
	        var metadata = xmlDoc.documentElement.getElementsByTagName("metadata");
          	if(metadata.length==0) {
          		alert("Unable to load information from the deployment file. Please alert Webmaster");
          		return;
          	}
          	
          	var icon = createIcon();
          	
          	for (var i = 0; i < metadata.length; i++) {
	            // obtain subject information
	            var subject = metadata[i].getElementsByTagName("subject");
	           	if(subject.length==0)
	           		continue;
	           	
				for (var itr=0;itr<subject.length;itr++) {
				
					var authRealm = subject[itr].getElementsByTagName("authRealm");
					if(authRealm.length==0)
						continue;
					
					var orgName= authRealm[0].firstChild.nodeValue;
					var location = subject[itr].getElementsByTagName("location");
					
					if(location == null || location[0]==0)
						continue;
					
					var latitudeElement = location[0].getElementsByTagName("latitude");
					var longitudeElement = location[0].getElementsByTagName("longitude");
					var cityElement = location[0].getElementsByTagName("city");
					
			
					if(latitudeElement==null || latitudeElement[0] == null 
						|| longitudeElement==null || longitudeElement[0]==null) {
						
						//alert("location info missing");
						continue;
					}
						
					var latitudeNode = latitudeElement[0].firstChild;
					var longitudeNode = longitudeElement[0].firstChild;
				
					if(latitudeNode==null || longitudeNode==null)
						continue;

					var latitude = latitudeNode.nodeValue;
					var longitude = longitudeNode.nodeValue;
					var city = null;
					
					if(cityElement!=null && cityElement[0]!=null) {
						var cityNode = cityElement[0].firstChild;
						if(cityNode!=null)
							city = cityElement[0].firstChild.nodeValue;
					}
					
					var infoWindowText = "";
					
					var serviceElement = subject[itr].getElementsByTagName("service");
					
					if(serviceElement==null 
						|| serviceElement.length==0) { 
						continue;
					}
						
					for(var itr2 = 0;itr2<serviceElement.length;itr2++) {
				
						if(serviceElement[itr2]==null) 
							continue;
						
						var serviceNameElement = 
							serviceElement[itr2].getElementsByTagName("serviceName");
						var serviceTypeElement = 
							serviceElement[itr2].getElementsByTagName("serviceType");
						var serviceDescriptionElement =
							serviceElement[itr2].getElementsByTagName("serviceDescription");
						
						if(serviceNameElement.length==0 
							|| serviceTypeElement.length==0 
							|| serviceDescriptionElement.length ==0) {
							continue;
						}
						
						var serviceNameNode = serviceNameElement[0].firstChild;
						var serviceTypeNode = serviceTypeElement[0].firstChild;
						var serviceDescrNode = serviceDescriptionElement[0].firstChild;

						if(serviceNameNode==null || serviceTypeNode==null 
							|| serviceDescrNode==null) {
							continue;
						}
					
						var serviceName = serviceNameNode.nodeValue;
						var serviceType = serviceTypeNode.nodeValue;
						var serviceDescr = serviceDescrNode.nodeValue;
				
						if(infoWindowText=="") {
							infoWindowText = "<B>Organisation: </B>"+orgName+"</br>";
							if(city!=null)
								infoWindowText = infoWindowText
									+"<br>&nbsp;&nbsp;Organisation location: "
									+city
							infoWindowText = infoWindowText+"<br/><br/>";
						}
						if(itr2>0)
							infoWindowText = infoWindowText +"<br/><br/>"
							
						if(serviceType=="MA")
							serviceType="Measurement Archive Service";
						
						if(serviceType=="LS")
							serviceType="Lookup Service";
							
						if(serviceType=="MP")
							serviceType="Measurement Point Service";

						infoWindowText = infoWindowText+
							"<B>"+serviceType+"</B>: "+serviceName+"<br/>"
							+"&nbsp;&nbsp;Description: "+serviceDescr;
							
						//alert("text: "+infoWindowText);
															
						
					}
					
					if (infoWindowText == "") 
						continue;
					
					var point = new GPoint(longitude, latitude);
					marker = createMarker(point,icon,orgName,infoWindowText);
					map.addOverlay(marker);
				}
		            
          	}          
        }
     }
    request.send(null);
}

function createMarker(point,icon,orgName,infoWindowText) {
    var marker = new GMarker(point,{icon:icon, title:orgName});
	GEvent.addListener(marker, "click", function () {
    	var currentTime = new Date();
     	var id = currentTime.getTime();
     	infoWindowText = "<div id=\"" + id + "\" style=\"white-space:nowrap;\">" + infoWindowText + "</div>";
     	marker.openInfoWindowHtml(infoWindowText);
    });
    return marker;
}

function createIcon() {



	var icon = new GIcon();
	icon.image = "images/ps.gif";
	//icon.shadow = "images/marker-shadow.png";
	icon.iconSize = new GSize(12, 12);
	//icon.shadowSize = new GSize(12, 12);
	icon.iconAnchor = new GPoint(6, 6);
	icon.infoWindowAnchor = new GPoint(5, 1);
	
	return icon;
}


