/* NOTES:
Here we don't use the GEOXML method to take care of the display of marker data - we need more control of the data display within this part of the app.
Instead we import the KML file and create JSON and work with this.

Andy Kirkpatrick has set up a PERL module which parses XML data into JSON - it only takes XML mime types so rename the .KML file to .XML if you update the building data at /campuses/googlemap/kml/ntbuildingmarkers.xml.


*/

// THE FOLLOWING FUNCTIONS ARE FOR BUILDING SEARCH AND INDEXING

// store the building data as JSON.
var building_placemarkers;
// history manaegment for 'find buildings' section
var buildinghistory;


function find_building_content() {
	cleanup_overlays();
	var $sidehtml = '<div class="search-info"><h2>Building Search</h2><input class="searchinput" id="buildingsearch" type="text" title="Search for buildings" size="30" value="" maxlength="255" name="words"/><input type="image" alt="Go" title="show building location" src="/global/images/search_icon_btn.gif" id="buildingsearchbutton" value="Search" name="search" onClick="search_building();"/><br></div><div class="search-info"><h2>Building Index</h2><div id="buildingindex"></div><br /></div>';
	$("#sidebar").empty();
	$("#sidebar").append($sidehtml);

	ReadBuildingData();
}


// loads KML for buildings and adds relevent data to a global JSON 'building_placemarkers'
function LoadBuildingData() {
    $.getJSON("/cgi-bin/misc-bin/xml2json.pl?file=/apps/web_docs/adeluweb/campuses/northtce/googleapp/kml/ntbuildingmarkers.kml",
              function(data) {
                  building_placemarkers = data.kml.Document.Folder.Placemark;
              });
}

// KML data for building is assign to the global var 'building_placemarkers' by the function loadbuildingdata.
function ReadBuildingData() {
    var building_names = [];
	for (var i = 0; i < building_placemarkers.length; i++) {
		var name = building_placemarkers[i].name.$t;
		building_names.push(name);
	}
	// populate the autocomplete
		$("#buildingsearch").autocomplete(building_names, {
			minChars: 0,
			width: 310,
			matchContains: "word",
			autoFill: false
		});
	//populate autocomplete and search when enter/return key is pressed
    $("#buildingsearch").keyup(function (e) {
        if (e.keyCode == 13) {
          $('#buildingsearchbutton').trigger('click');
        }
    });

		
	// create the building index list
	var $ul = $("<ul class=\"nobullet\" ></ul>");
	var $li = $("<li></li>");

	building_names.sort();

	for (i=0; i<building_names.length; i++){
		var name = building_names[i];
		var $href = $("<a href=\"#\">" + name + "</a>").click(function(){
            display_building($(this).html());
            return false;
        });
		$li.append($href);
		$li.append("<br>");
		$ul.append($li);
	}
	$("#buildingindex").append($ul);
}


// looks in global JSON object 'building_placemarker' for a match.
function display_building(building_name){
	for (var i = 0; i < building_placemarkers.length; i++) {
		var name = building_placemarkers[i].name.$t;
		if (name == building_name)
		{
			 var markertitle = name;
			 var markerdes = building_placemarkers[i].description.$t;
			 var point = building_placemarkers[i].Point.coordinates.$t;
			 var LatLng = point.split(',');
			 var Lng = LatLng[0];
			 var Lat = LatLng[1];
			 break;
		}
	}
	// show marker on map
	var point = new GLatLng(Lat,Lng);
	// map.setCenter(point);
	var marker = new GMarker(point);
		// remove last marker if one exists;
		if (buildinghistory == undefined)
		{
		buildinghistory = marker;
		} else {
		map.removeOverlay(buildinghistory);
		buildinghistory = marker;
		}
	map.setZoom(17);
	var myHtml = "<div style='width:350px'><h2>"+ markertitle + "</h2><p>" + markerdes + "</p></div>";
	map.openInfoWindowHtml(point, myHtml ,{onCloseFn: function() { centre_map();map.removeOverlay(buildinghistory) }});
}




function search_building(){
	var searchbuilding = $("#buildingsearch").val();
	display_building(searchbuilding);
}

