/*
	Athene Query, get markers and parse retrieved XML data
*/

function searchMarkers()
{
	retrieveMarkers();
}

function openPrint()
{
	// Open a new window with the current query
	var url = 'print.php' + getQueryUrl();
	
	var printWindow = window.open(url, 'print', 'height=' + (screen.height * 0.8) + ',width=' + (screen.width * 0.8) + ',scrollbars=yes,menubar=yes,toolbar=yes,location=no,resizable=yes,status=no');
}

function getQueryUrl()
{
	var url = "?req=";
	
	if (document.getElementById('selected-category'))
	{
		var selectedCategory = document.getElementById('selected-category').value;
		
		if (selectedCategory != 'all' && selectedCategory != 'search')
			url += "&category=" + selectedCategory;
			
		if (selectedCategory == 'search')
		{
			url += "&search=" + document.getElementById('marker-search').value;
		}	
		else
		{
			if (document.getElementById(selectedCategory + "-field1"))
				if (document.getElementById(selectedCategory + "-field1").value != '')
					url += "&field1=" + document.getElementById(selectedCategory + "-field1").value;
			if (document.getElementById(selectedCategory + "-field2"))
				if (document.getElementById(selectedCategory + "-field2").value != '')
					url += "&field2=" + document.getElementById(selectedCategory + "-field2").value;
			if (document.getElementById(selectedCategory + "-field3"))
				if (document.getElementById(selectedCategory + "-field3").value != '')
					url += "&field3=" + document.getElementById(selectedCategory + "-field3").value;
			if (document.getElementById(selectedCategory + "-field4"))
				if (document.getElementById(selectedCategory + "-field4").value != '')
					url += "&field4=" + document.getElementById(selectedCategory + "-field4").value;
			if (document.getElementById(selectedCategory + "-field5"))
				if (document.getElementById(selectedCategory + "-field5").value != '')
					url += "&field5=" + document.getElementById(selectedCategory + "-field5").value;
		}
	}
		
	// Add the bounds of the map
	url += "&neLng=" + neLng();
	url += "&swLng=" + swLng();
	url += "&neLat=" + neLat();
	url += "&swLat=" + swLat();
	
	return url;
}

function retrieveMarkers()
{
	// Clear...
	clearPopularMarkers();
	
	// AJAX Query for retrieving markers
	var url = queryServiceLocation + getQueryUrl();
	
	// Analytics
	urchinTracker('/' + url);
		
	GDownloadUrl(url,
	function(data, responseCode)
	{
		// Clear all existing markers
		clearAllMarkers();
		
		// Parse retrieved data
		var xmlDoc;
		
		if (window.ActiveXObject)
		{
			// ie
			xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async = "false";
			xmlDoc.loadXML(data);
		}
		else
		{
			// for Mozilla, Firefox, Opera, etc.
			var parser = new DOMParser();
			xmlDoc = parser.parseFromString(data, "text/xml");
		}
		
		var root = xmlDoc.documentElement;
		
		if (root)
		{
			var items = root.childNodes;
			var popularMarkers = "";
			
			if (items.length == 0)
			{
				setPopularMarkers('<i>' + NO_MARKERS_FOUND + EXTEND_TO_FIND_MORE + '</i>');
			}
			else
			{			
				for (i = 0; i < items.length; i++)
				{
					var item = items[i];
					
					var name = item.childNodes[0].childNodes[0].nodeValue;
					var description = "";
					var url = "";
					var id = null;
					var hasImage;
					var externalImageUrl = "";
					
					if (item.childNodes[1].childNodes[0])
						description = item.childNodes[1].childNodes[0].nodeValue;
						
					if (item.childNodes[2].childNodes[0].nodeValue)
						url = item.childNodes[2].childNodes[0].nodeValue;
						
					if (item.childNodes[5].childNodes[0].nodeValue)
						id = item.childNodes[5].childNodes[0].nodeValue;
						
					if (item.childNodes[6])
						if (item.childNodes[6].childNodes[0])
							if (item.childNodes[6].childNodes[0].nodeValue)
								hasImage = item.childNodes[6].childNodes[0].nodeValue;
						
					if (item.childNodes[7])
						if (item.childNodes[7].childNodes[0])
							if (item.childNodes[7].childNodes[0].nodeValue)
								externalImageUrl = item.childNodes[7].childNodes[0].nodeValue;
					
					if (item.childNodes[3].childNodes[0].nodeValue && item.childNodes[4].childNodes[0].nodeValue)
					{
						var lat = item.childNodes[3].childNodes[0].nodeValue;
						var lng = item.childNodes[4].childNodes[0].nodeValue;
						
						var image = '';
						
						// Get image from server or from an external url
						if (hasImage == '0')
						{
							if (externalImageUrl != '')
							{
								image = externalImageUrl;
							}
							else
							{
								image = 'layout/' + layout + '/images/NoMarkerImage.png';
							}
						}
						else
						{
							image = 'marker.image.php?marker=' + id;
						}
						
						// Add to the map
						addMarker(parseFloat(lat), parseFloat(lng), url, id, name, description, image);
						
						// Add to the popular block
						popularMarkers += createMarkerForPopular(id, name, url, description, lat, lng);
					}
				}
				
				if (items.length <= 3)
				{
					popularMarkers += '<br /><i>' + EXTEND_TO_FIND_MORE + '</i>';
				}	
			
				setPopularMarkers(popularMarkers);
				
				if (window.markersLoaded)
				{
					markersLoaded();
				}
			}
		}
	}
	);
}

function clearPopularMarkers()
{
	var popularMarkers = document.getElementById('popular-markers');
	if (popularMarkers)
	{
		popularMarkers.innerHTML = '<div class="loading-block">' + LOADING_POPULAR_MARKS + '</div><img src="layout/' + layout + '/icons/LoadingForm.gif" />';
	}
}

function createMarkerForPopular(id, name, url, description, lat, lng)
{
	var popularMarker = '';
	popularMarker += '<a target="_blank" title="' + CLICK_TO_VISIT_URL + '" href="redirect.php?marker=' + id + '&url=' + escape(url) + '"><img alt="' + CLICK_TO_VISIT_URL + '" src="layout/' + layout + '/icons/OpenLink.png" /></a>&nbsp;<a href="javascript:void(gotoLocation(' + lat + ', ' + lng + ', 14));">' + name + '</a>&nbsp;'
					+ '<br />';
	return popularMarker;
}

function setPopularMarkers(contents)
{
	var popularMarkers = document.getElementById('popular-markers');
	if (popularMarkers)
	{
		popularMarkers.innerHTML = contents;
	}
}