/**
	* @author Kevin Ross
	* @fileoverview Create googlemap based on longitude and latitude of accommodations 
*/

var gmap;
var clusterer;
var zoomLevel = 8;

/**
*	Create and attach google map to container
* @param {integer} countyId County id
*/
function createGMap(countyId)
{ 
	showGMap();
	
	if (GBrowserIsCompatible())
	{
		gmap = new GMap2(document.getElementById("gmap_container"));
		gmap.addControl(new GLargeMapControl());
		gmap.addControl(new GMapTypeControl());
		loadLatLong(countyId);
	}
}


/**
*	Get the longitude and latitude for all accommodations within a county
* @param {integer} countyId County id
*/
function loadLatLong(countyId)
{
	var kajax = new Kajax();
	kajax.url = BBGRP_BASE_URL+"shared/get_member_lat_long_by_county.asp?countyid="+countyId;
	kajax.responseType = "text/xml";
	kajax.onCompletion = function(){createAccommOverlays(kajax.responseXML)};
	kajax.onError = function(){alert(BBGRP_ERR_1009_DESC)};
	kajax.sendRequest();
}

/**
*	Create accommodation marker with contact information and listing link
* @param {object} point GPoint object
* @param {object} member Member object
* @return {object} GMarker object
*/
function createAccommMarker(point, member)
{
  var marker = new GMarker(point);
	var htmlInfo; 
	htmlInfo = "<h1>" + member.name + "</h1>";
	htmlInfo += member.address + "<br />" 
	htmlInfo += member.region + "<br />";
	htmlInfo += member.county + "<br />";
	htmlInfo += member.postcode + "<br /><br />";
	htmlInfo += "<a href=\""+BBGRP_BASE_URL+"private/listing/listing.asp?id="+member.id+"\">More details</a>" ;
	
  GEvent.addListener(marker, "click", function(){marker.openInfoWindowHtml(htmlInfo);});
  return marker;
}

/**
*	Create overlays for all accommodations in county
* @param {xml} Longitude and latitude coords for all accommodations 
*/
function createAccommOverlays(responseXML)
{
	var totalLat = 0;
	var totalLong = 0;
	var totalValid = 0;
	var totalRows = 0;
		
	var rows = responseXML.getElementsByTagName("Row");
	totalRows = rows.length;
	
	for(var i=0;i<totalRows;i++)
	{
		var row = rows[i];
		var memberLongitude = row.childNodes[6].childNodes[0].nodeValue;
		var memberLatitude = row.childNodes[7].childNodes[0].nodeValue;
		
		if (memberLongitude != 0 && memberLatitude != 0)
		{	
			totalLat = totalLat + Number(memberLatitude);
			totalLong = totalLong + Number(memberLongitude);
			totalValid = totalValid + 1;
		}
		
	}	
	
	var avgLat = totalLat/totalValid;
	var avgLong = totalLong/totalValid;

	gmap.setCenter(new GLatLng(avgLat,avgLong),zoomLevel);
	clusterer = new Clusterer(gmap)
	
	for(var i=0;i<totalRows;i++)
	{
		var row = rows[i];
		var memberId = row.childNodes[0].childNodes[0].nodeValue;
		var memberName = row.childNodes[1].childNodes[0].nodeValue;
		var memberAddress = row.childNodes[2].childNodes[0].nodeValue;
		var memberRegion = row.childNodes[3].childNodes[0].nodeValue;
		var memberCounty = row.childNodes[4].childNodes[0].nodeValue;
		var memberPostcode = row.childNodes[5].childNodes[0].nodeValue;
		var memberLongitude = row.childNodes[6].childNodes[0].nodeValue;
		var memberLatitude = row.childNodes[7].childNodes[0].nodeValue;
		
		var member = {
		"id" : memberId,
		"name" : memberName,
		"address" : memberAddress,
		"region" : memberRegion,
		"county" : memberCounty,
		"postcode" : memberPostcode};
		
		if (memberLongitude != 0 && memberLatitude != 0)
		{
			var point = new GLatLng(memberLatitude,memberLongitude);
			clusterer.AddMarker(createAccommMarker(point,member),"");
		}
	}	
	
	
}

/**
*	Show map of country
*/
function showMap()
{
	document.getElementById("map_container").style.display = "block";
	document.getElementById("gmap_container").style.display = "none";
	document.getElementById("go_back_link").style.display = "none";
}

/**
*	Show google map
*/
function showGMap()
{
	document.getElementById("map_container").style.display = "none";
	document.getElementById("gmap_container").style.display = "block";
	document.getElementById("go_back_link").style.display = "block";
}

/**
*	Show the google map for the county the user previously visited
*/
function showPreviousGMap()
{
	var mapCountyId = readCookie("MapCountyID");
	if (mapCountyId > 0){createGMap(mapCountyId);}
}
