// SCRIPT TO HANDLE THE PLOTTING OF THE BOUNDARIES OF UWE'S NEW CAMPUS
// WRITTEN BY ROB CHARLWOOD 2009

   // CHECK THE USERS BROWSER IS COMPATIBLE WITH GOOGLE MAPS
   if (GBrowserIsCompatible()) {

     // CREATE EMPTY ARRAYS TO STORE THE GPOLYS AND THEIR RELEVANT LABELS
     var polys = [];
     var labels = [];
     var descs = [];

     // DISPLAY THE MAP WITH SOME CONTROLS AND INITIAL LOCATION SET
     var map = new GMap2(document.getElementById("gmap"));
	 map.removeMapType(G_NORMAL_MAP);
     map.addControl(new GSmallMapControl());
     map.addControl(new GMapTypeControl());
     map.setCenter(new GLatLng(51.461708066319034, -2.5814008712768555), 18);
     
     // CREATE ICON
     var omnicon = new GIcon(G_DEFAULT_ICON);
     omnicon.image = "/site_media/images/houseofomni/map_icon.png";
     omnicon.iconSize = GSize(30, 60);
     //omnicon.shadow = '/site_media/images/houseofomni/map_icon_shadow.png';
     //omnicon.shadowSize = GSize(95, 57);
     omnicon.printImage = "/site_media/images/houseofomni/map_icon_print.gif";
     omnicon.iconAnchor = new GPoint(1, 35);
     
     // CREATE OFFICE LOC
     var office_point = new GLatLng(51.461666, -2.581540);
     var office_html = '<div style="width: 195px; height:110px; padding-right: 10px; background: url(/site_media/images/houseofomni/map_icon_print.gif) center right no-repeat;"><h4>The House Of Omni</h4><p>14 Wilson Place<br /> Bristol<br /> BS2 9HJ<br />England, UK<br /></p>';
     var office_marker = new GMarker(office_point, {icon:omnicon})

     // LISTEN FOR OFFICE MARKER CLICK
     GEvent.addListener(office_marker, 'click', function(){
          office_marker.openInfoWindowHtml(office_html);
     });

     // ADD LISTENER FOR POPUP BOX ON CLICK
     GEvent.addListener(map, "click", function(overlay,point) {
	        if (!overlay) {
			polys = polys.reverse();
			labels = labels.reverse();
			descs = descs.reverse();
	          for (var i=0; i<polys.length; i++) {
	            if (polys[i].Bound.contains(point)) {
	              if (polys[i].Contains(point)) {
	                
	                if(labels[i] == 'office'){
	                   map.openInfoWindowHtml(point,office_html);
	                }else{
	                   map.openInfoWindowHtml(point,"<strong>"+labels[i]+"</strong><br/>"+descs[i]);
	                }
	                i = Infinity; // JUMP OUT OF LOOP
	              }
	            }
	          }
	        }
	      });

	      // READ THE CO-ORDINATES FROM THE BOUNDARIES XML FILE
	      var request = GXmlHttp.create();
	      request.open("GET", "/site_media/js/thehouseofomni/boundaries.xml", true);
	      request.onreadystatechange = function() {
	        if (request.readyState == 4) {
	          var xmlDoc = GXml.parse(request.responseText);
	          // PROCESS THE POLY LINES
	          var states = xmlDoc.documentElement.getElementsByTagName("state");

	          // REACH EACH LINE
	          for (var a = 0; a < states.length; a++) {

	            // GET THE BOUNDARY NAME AND COLOUR ATTRIBUTES
	            var label  = states[a].getAttribute("name");
	            var desc  = states[a].getAttribute("desc");
	            var colour = states[a].getAttribute("colour");
               
	            // READ THE LONG AND LATS FOR THAT PARTICULAR BOUNDARY
	            var points = states[a].getElementsByTagName("point");
	            var pts = [];
	            var bound = new GLatLngBounds()
	            for (var i = 0; i < points.length; i++) {
	               pts[i] = new GLatLng(parseFloat(points[i].getAttribute("lat")),
	                                   parseFloat(points[i].getAttribute("lng")));
	               bound.extend(pts[i]);
	            }
	            var poly = new GPolygon(pts,"#000000",1,1,colour,0.5,{clickable:false});
	            polys.push(poly);
	            labels.push(label);
	            descs.push(desc);
	            map.addOverlay(poly);
	            poly.Bound = bound;
	          }
	        }
	      }
	      map.addOverlay(office_marker);
	      request.send(null);
	    }


   // DISPLAY A WARNING IF THE BROWSER IS NOT COMPATIBLE
   else {
     alert("Sorry, the Google Maps API is not compatible with this browser");
   }
