var xmlHttp;
var t;
var geocoder;
var locationSearchTimeout;
var markerClusterer = null;
var commentsPage = 1;

function addVisitor(locationid) {
	$("#arcadelocationvisitors").html("Updating...");
	$.fancybox.showActivity();
	$.get("arcadelocations_ajax.php", {
		"add": "1",
		"action": "visitor",
		"locationid": locationid
	}, updateVisitors);
}

function deleteVisitor(locationid) {
	$("#arcadelocationvisitors").html("Updating...");
	$.fancybox.showActivity();
	$.get("arcadelocations_ajax.php", {
		"delete": "1",
		"action": "visitor",
		"locationid": locationid
	}, updateVisitors);
}

function updateVisitors(data) {
	$.fancybox.hideActivity();
	$("#arcadelocationvisitors").html(data);
}

function addNRVisitor(locationid) {
	$("#arcadelocationnrvisitors").html("Updating...");
	$.fancybox.showActivity();
	$.get("arcadelocations_ajax.php", {
		"add": "1",
		"action": "nrvisitor",
		"locationid": locationid
	}, updateNRVisitors);
}

function deleteNRVisitor(locationid) {
	$("#arcadelocationnrvisitors").html("Updating...");
	$.fancybox.showActivity();
	$.get("arcadelocations_ajax.php", {
		"delete": "1",
		"action": "nrvisitor",
		"locationid": locationid
	}, updateNRVisitors);
}

function updateNRVisitors(data) {
	$.fancybox.hideActivity();
	$("#arcadelocationnrvisitors").html(data);
}

function addPicture(locationid, pictureid) {

	$("#arcadelocationpictures").html("Updating...");
	$.fancybox.showActivity();
	$.get("arcadelocations_ajax.php", {
		"add": "1",
		"action": "picture",
		"locationid": locationid,
		"pictureid": pictureid
	}, updatePictures);

}

function deletePicture(locationid, pictureid) {

	$("#arcadelocationpictures").html("Updating...");
	$.fancybox.showActivity();
	$.get("arcadelocations_ajax.php", {
		"delete": "1",
		"action": "picture",
		"locationid": locationid,
		"pictureid": pictureid
	}, updatePictures);
}

function updatePictures(data) {
	$.fancybox.hideActivity();
	$("#arcadelocationpictures").html(data);
}

function addComment(locationid, userid, content) {
	$.fancybox.showActivity();
	$.post("arcadelocations_ajax.php", {
		"add": "1",
		"action": "comment",
		"locationid": locationid,
		"userid": userid,
		"content": content
	}, updateComments);
}

function deleteComment(locationid, commentid) {
	$.fancybox.showActivity();
	$.get("arcadelocations_ajax.php", {
		"delete": "1",
		"action": "comment",
		"locationid": locationid,
		"commentid": commentid
	}, updateComments);
}

function updateComments(data) {
	$.fancybox.hideActivity();
	$("#arcadelocationcomments").html(data);
	commentsPage = 1;
}

function showMoreComments(locationid) {
	
	commentsPage = commentsPage+1;

	$.fancybox.showActivity();
	$.get("arcadelocations_ajax.php", {
		"action": "comment",
		"locationid": locationid,
		"page": commentsPage
	}, function(data) {
		$("#show-more-comments").before(data);
		$.fancybox.hideActivity();
		
		if(data.indexOf("#1 ")!=-1) {
			$("#show-more-comments").hide();
		}
		
	});
}

function searchGame() {

	var gameids = $("#search_gameid").val();
	var series_types = $("#search_series_types").val();
	var continentid = $("#search_continentid").val();
	var countryname = $("#search_countryname").val()
	var locationname = $("#search_locationname").val().toLowerCase();

	// Refresh markers on map
	var markers = [];
	var arcadeHtml = []; // for rows
	var machineCount = 0;

	for(var i=0; i<arcadeLocations.arcades.length; i++) {

		// Default to show then apply criterion
		var showArcade = true;

		var currentArcade = arcadeLocations.arcades[i];

		if(continentid != 0 && currentArcade.r1id != continentid) {
			showArcade = false;
		}
		if(showArcade && countryname != 0 && currentArcade.r2id != countryname) {
			showArcade = false;
		}
		if(showArcade && locationname != "") {
			var r1n = continent_items[currentArcade.r1id]["n"].toLowerCase();
			var r3n = county_items[currentArcade.r3id]["n"].toLowerCase();
			var r4n = city_items[currentArcade.r4id]["n"].toLowerCase();

			if(currentArcade["n"].toLowerCase().indexOf(locationname)==-1 && r1n.indexOf(locationname)==-1 && currentArcade.r2id.indexOf(locationname)==-1 && r3n.indexOf(locationname)==-1 && r4n.indexOf(locationname)==-1) {
				showArcade = false;
			}
		}

		var anyGame = true;

		if(showArcade && gameids!=null && gameids.length > 0) {
			var found = false;
			for(var j=0; j<gameids.length; j++) {
				var gameList = currentArcade.games;

				if(gameids[j]==0 || gameids[j]=="") {
					break;
				}
				else {
					anyGame = false;
				}

				for(var k=0; k<gameList.length; k++) {
					var machine = gameList[k];
					if(machine["id"] == gameids[j]) {
						found = true;
						machineCount++;
					}
				}
			}
			if(!found && !anyGame) {
				showArcade = false;
			}
		}

		if(showArcade && series_types!=null && series_types.length > 0 && anyGame) {
			var found = false;
			for(var j=0; j<series_types.length; j++) {
				var gameList = currentArcade.games;

				for(var k=0; k<gameList.length; k++) {
					var machine = gameList[k];
					if(game_items[machine["id"]]["t"] == series_types[j]) {
						found = true;
						machineCount++;
					}
				}
			}
			if(!found) {
				showArcade = false;
			}
		}

		if(showArcade) {
			markers.push(createMarker(currentArcade));

			tempHtml = "<tr>";
			tempHtml += "<td><strong style=\"font-size: 1.5em;\"><a href=\"arcadelocations.php?locationid="+currentArcade["id"]+"\">"+currentArcade["n"]+"</a></strong><br />";
			
			var countryFilename = currentArcade["r2id"].toLowerCase().replace(/\s/g, "");
			
			tempHtml += "<div style=\"width: 16px; height: 16px; margin-right: 4px; float: left; background: url('/flags/"+countryFilename+".png') center no-repeat\"></div>";
				
			tempHtml += "<a href=\"arcadelocations.php?cityid="+currentArcade["r4id"]+"\">"+city_items[currentArcade["r4id"]]["n"]+"</a>, ";
			tempHtml += "<a href=\"arcadelocations.php?countyid="+currentArcade["r3id"]+"\">"+county_items[currentArcade["r3id"]]["n"]+"</a>, ";
			tempHtml += "<a href=\"arcadelocations.php?countryname="+currentArcade["r2id"]+"\">"+currentArcade["r2id"]+"</a>, ";
			tempHtml += "<a href=\"arcadelocations.php?continentid="+currentArcade["r1id"]+"\">"+continent_items[currentArcade["r1id"]]["n"]+"</a></td>";

			tempHtml += "<td>";

			tempHtml += "<a href=\"#\" title=\""+currentArcade.p[0]+", "+currentArcade.p[1]+"\" class=\"rightfloat fb show-on-map\">Show On Map</a>";

			var gamesList = currentArcade.games;
			var gamesListHtml = [];

			for(var l=0; l<gamesList.length; l++) {

				var style = getMachineStyle(parseInt(gamesList[l]["c"]));

				if(series_types == null) {
					gamesListHtml.push("<span style=\""+style+"\">"+game_items[gamesList[l]["id"]]["n"]+"</span>");
				}
				// Either exact match of the game OR match of the series (when any game)
				else {

					if(gameids == null) {
						gameids = [""];
					}

					var index = gameids.indexOf(gamesList[l]["id"]);
					var gameCheck = index!=-1;

					var index = series_types.indexOf(game_items[gamesList[l]["id"]]["t"]);
					var seriesCheck = index!=-1;

					var index = gameids.indexOf("0");
					var indexCheck1 = index>=0;
					var index = gameids.indexOf("");
					var indexCheck2 = index>=0;

					if(gameCheck || (seriesCheck && (indexCheck1 || indexCheck2))) {
						gamesListHtml.push("<strong style=\""+style+" font-size: 16px;\">"+game_items[gamesList[l]["id"]]["n"]+"</strong>");
					}
					else {
						gamesListHtml.push("<span style=\""+style+"\">"+game_items[gamesList[l]["id"]]["n"]+"</span>");
					}
				}
			}

			if(gamesListHtml.length == 0) {
				var gamesListText = "<em>There are no arcade machines at this location.</em>";
			}
			else {
				var gamesListText = gamesListHtml.join(", ");
			}

			tempHtml += "<strong>Games:</strong> "+gamesListText;

			tempHtml += "</td>";
			tempHtml += "</tr>";

			arcadeHtml.push({
				"n": currentArcade["n"],
				"html": tempHtml
			});

		}


	}

	arcadeHtml.sort(sortArcadeSearch);

	var htmlArray = [];

	for(var i=0; i<arcadeHtml.length; i++) {
		htmlArray.push(arcadeHtml[i].html);
	}

	var html = "<table width=\"100%\">";
	html += "<col width=\"35%\" /><col width=\"65%\" />";
	html += "<tr><th>Search Results</th><th class=\"right\">"+arcadeHtml.length+" Arcades Found ("+machineCount+" Machines)</th></tr>\n";
	html += "<tr><td colspan=\"2\" class=\"centre\"><strong>Condition Legend:</strong> ";

	html += "<span style=\""+getMachineStyle(5)+"\">Perfect</span>";
	html += " <span style=\""+getMachineStyle(4)+"\">Good</span>";
	html += " <span style=\""+getMachineStyle(3)+"\">Moderate</span>";
	html += " <span style=\""+getMachineStyle(2)+"\">Bad</span>";
	html += " <span style=\""+getMachineStyle(1)+"\">Broken</span>";
	html += " <span style=\""+getMachineStyle(0)+"\">Unknown</span>";

	html += "</td></tr>\n";

	if(arcadeHtml.length == 0) {
		html += "<tr><td colspan=\"2\" class=\"centre\"><em>No arcade locations were found.</em></td></tr>\n";
	}
	else {
		html += htmlArray.join("\n");
	}

	html += "</table>";

	markerClusterer.clearMarkers();
	markerClusterer.addMarkers(markers);
	$("#arcadelocationsearch").html(html);

}

function sortArcadeSearch(a, b) {

	if(a["n"].toLowerCase() < b["n"].toLowerCase()) return -1;
	if(a["n"].toLowerCase() > b["n"].toLowerCase()) return 1;
	return 0;
}
function sortGameList(a, b) {
	if(a["n"].toLowerCase() < b["n"].toLowerCase()) return -1;
	if(a["n"].toLowerCase() > b["n"].toLowerCase()) return 1;

	if(a["r"] < b["r"]) return -1;
	if(a["r"] > b["r"]) return 1;

	return 0;
}

function resetMap() {

	markerClusterer.clearMarkers();
	var markers = getMarkers();
	markerClusterer.addMarkers(markers);

}


function getMarkers() {

	var arcades = arcadeLocations.arcades;
	var markers = [];

	for(var i=0; i<arcades.length; i++) {
		var arcade = arcades[i];
		markers.push(createMarker(arcade));
	}

	return markers;
}

function createMarker(object) {

	var arcade = false;
	if(object["r1id"])  arcade = true;

	var id = object["id"];
	var n = object["n"];
	var p = object["p"];

	if(arcade) {
		var r1id = object["r1id"];
		var r2id = object["r2id"];
		var r3id = object["r3id"];
		var r4id = object["r4id"];
		var games = object["games"]; // Array
		var lastupdate = object["t"];

		var r1n = continent_items[r1id]["n"];
		var r3n = county_items[r3id]["n"];
		var r4n = city_items[r4id]["n"];

		if(games.length == 1) {
			var title = n+" - 1 game";
		}
		else {
			var title = n+" - "+games.length+" games"
		}
		
		var marker = new google.maps.Marker({
			position: new google.maps.LatLng(p[0], p[1]),
			title: title
		});
		
		if(games.length == 0) {
			marker.icon = "/images/marker_gray.png";
		}
		
		var difference = "";
		

		google.maps.event.addListener(marker, "click", function() {
			
			if(lastupdate) {
				var date = new Date();
				var currentMsecs = date.getTime();
				var lastUpdateMsecs = Date.parse(lastupdate);
				var difference = Math.floor((currentMsecs - lastUpdateMsecs)/1000);
				
				var differenceText = timeDifference(difference);
			}
			
			var link = "<div style=\"margin-right: 20px; white-space: nowrap;\"><strong><a href=\"arcadelocations.php?locationid="+id+"\">"+n+"</a></strong><br />";
			link += "<a href=\"arcadelocations.php?cityid="+r4id+"\">"+r4n+"</a>, ";
			link += "<a href=\"arcadelocations.php?countyid="+r3id+"\">"+r3n+"</a>, ";
			link += "<a href=\"arcadelocations.php?countryname="+r2id+"\">"+r2id+"</a>, ";
			link += "<a href=\"arcadelocations.php?continentid="+r1id+"\">"+r1n+"</a><br />";
			link += "<strong>Last Updated:</strong> "+lastupdate;
			
			if(differenceText && differenceText.indexOf("NaN")==-1) {
				link += " "+differenceText;
			}
			
			link += "<br />";
			link += "<br />";

			var lastSeriesType = "";

			if(games.length == 0) {
				link += "No games.";
			}
			else {
				for(i=0; i<games.length; i++) {
					var game = games[i];

					var gameid = game["id"];
					var condition = game["c"];
					var name = game_items[gameid]["n"];
					var region = game_items[gameid]["r"];
					var price = game["p"];
					var continuePrice = game["pc"];
					var seriesType = game_items[gameid]["t"];
					var seriesTypeName = game_series_types[seriesType]["n"];
					var songs = game["s"];

					if(lastSeriesType != seriesTypeName) {
						if(lastSeriesType != "") {
						}
						link += "<div class=\"section\">"+seriesTypeName+"</div>";
						lastSeriesType = seriesTypeName;
					}

					link += "<div style=\"position: relative;\">";

					var price = " <strong>"+price+"</strong>";

					if(seriesType == 1) {
						price += " for "+songs;
						price += (songs == 1) ? " song" : " songs";
					}
					if(continuePrice.length > 0 && continuePrice.indexOf("0.00")==-1 && continuePrice.indexOf("0,00")==-1) {
						price += " ("+continuePrice+" to continue)";
					}


					link += "<div style=\"position: absolute; right: 0px;\">";
					link += price;
					link += "</div>";

					link += "<span class=\"con\"><img class=\"con-"+condition+"\" src=\"spacer.gif\" alt=\"\" /></span> "+name+" ("+region+")<span style=\"visibility: hidden;\">"+price+"</span>";
					
					for(var j=0; j<10; j++) {
						link += "&nbsp;";
					}

					link += "</div>";

				}
			}

			link += "</div>";

			if(infoWindow) {
				infoWindow.close();
			}

			infoWindow = new google.maps.InfoWindow({
				content: link
			});

			infoWindow.open(map, marker);
		});
	}

	return marker;

}

function executeLocationSearch() {

	var searchString = $("#arcade-location-search").val();

	if(searchString.length > 0) {

		$.fancybox.showActivity();
		geocoder.geocode({
			"address": searchString
		}, function(results, status) {
			if(status == google.maps.GeocoderStatus.OK) {
				map.setCenter(results[0].geometry.location);
				map.fitBounds(results[0].geometry.viewport);
			}
			else {
			}
			$.fancybox.hideActivity();
		});
	}

}

$(function() {

	// Initialise geocoder
	geocoder = new google.maps.Geocoder();
	
	$("#show-more-comments").live("click", function() {
		showMoreComments(locationid);
	});

	$("#arcade-location-search").keyup(function() {
		if(locationSearchTimeout) {
			clearTimeout(locationSearchTimeout);
		}

		locationSearchTimeout = setTimeout(executeLocationSearch, 1000);

	});

	$("#a-add-machine").click(function(event) {
		event.stopPropagation();
		event.preventDefault();

		var link = $(this);
		$.fancybox.showActivity();
		$("#machineform").hide().load("arcadelocations_ajax.php", {
			"action": "add_machine",
			"locationid": locationid
		}, function(data, status) {
			$.fancybox.hideActivity();
			$("#machineform").fadeIn(400);
			scrollTo($("#a-add-machine").offset().top);
		});
	});

	$("#input-add-game").live("click", function(event) {
		$(this).attr("disabled", "disabled");
		var freeplay = ($("#freeplay:checked").length==1) ? 1 : 0;
		$.fancybox.showActivity();
		$("#arcadelocationmachines").load("arcadelocations_ajax.php", {
			"add": 1,
			"action": "machine",
			"locationid": locationid,
			"gameid": $("#gameid").val(),
			"condition": $("#condition").val(),
			"pricepercredit": $("#pricepercredit").val(),
			"songspercredit": $("#songspercredit").val(),
			"pricecontinue": $("#pricecontinue").val(),
			"location": $("#location").val(),
			"comment": $("#comment").val(),
			"freeplay": freeplay
		}, function(data, status) {
			$.fancybox.hideActivity();
			$("#machineform").fadeOut(400);
			appendMachineListEffects();
		});
	});

	$("a[id^=input-edit-game]").live("click", function(event) {
		var machineid = this.id.split("-")[3];
		$(this).attr("disabled", "disabled");
		if($("#freeplay:checked").length==1) {
			var freeplay = 1;
		}
		else {
			var freeplay = 0;
		}
		$.fancybox.showActivity();
		$("#arcadelocationmachines").load("arcadelocations_ajax.php", {
			"edit": 1,
			"action": "machine",
			"machineid": machineid,
			"locationid": locationid,
			"gameid": $("#gameid").val(),
			"condition": $("#condition").val(),
			"pricepercredit": $("#pricepercredit").val(),
			"songspercredit": $("#songspercredit").val(),
			"pricecontinue": $("#pricecontinue").val(),
			"location": $("#location").val(),
			"comment": $("#comment").val(),
			"freeplay": freeplay
		}, function(data, status) {
			$.fancybox.hideActivity();
			$("#machineform").fadeOut(400);
			appendMachineListEffects();
		});
	});

	$("a[id^=edit-machine]").live("click", function(event) {
		event.stopPropagation(); event.preventDefault();
		var machineid = this.id.split("-")[2];

		var link = $(this);
		$.fancybox.showActivity();
		$("#machineform").hide().load("arcadelocations_ajax.php", {
			"action": "edit_machine",
			"locationid": locationid,
			"machineid": machineid
		}, function(data, status) {
			$.fancybox.hideActivity();
			$("#machineform").fadeIn(400);
			scrollTo($("#a-add-machine").offset().top);
		});
	});


	$("a[id^=input-delete-game]").live("click", function(event) {
		var machineid = this.id.split("-")[3];
		$(this).attr("disabled", "disabled");
		$.fancybox.showActivity();
		$("#arcadelocationmachines").load("arcadelocations_ajax.php", {
			"delete": 1,
			"action": "machine",
			"machineid": machineid,
			"locationid": locationid
		}, function(data, status) {
			$.fancybox.hideActivity();
			$("#machineform").fadeOut(400);
			appendMachineListEffects();
		});
	});
	$("a[id^=input-cancel]").live("click", function(event) {
		$("#machineform").fadeOut(400);
	});

	if($("#current-list").length>0) {

		$("a[href='arcadelocations.php']").live("click", function(event) {
			event.preventDefault();
			$.fancybox.showActivity();
			$.getJSON("arcadelocations_ajax.php?action=continent-json", updateListAndMap);
		});

		$("a[href*='locations.php?continentid=']").live("click", function(event) {
			event.preventDefault();
			var continentid = $(this).attr("href").split("continentid=")[1];
			$.fancybox.showActivity();
			$.getJSON("arcadelocations_ajax.php?action=country-json&continentid="+continentid, updateListAndMap);
		});

		$("a[href*='locations.php?countryname=']").live("click", function(event) {
			event.preventDefault();
			var countryname = $(this).attr("href").split("countryname=")[1];
			$.fancybox.showActivity();
			$.getJSON("arcadelocations_ajax.php?action=county-json&countryname="+countryname, updateListAndMap);
		});

		$("a[href*='locations.php?countyid=']").live("click", function(event) {
			event.preventDefault();
			var countyid = $(this).attr("href").split("countyid=")[1];
			$.fancybox.showActivity();
			$.getJSON("arcadelocations_ajax.php?action=city-json&countyid="+countyid, updateListAndMap);
		});

		$("a[href*='locations.php?cityid=']").live("click", function(event) {
			event.preventDefault();
			var cityid = $(this).attr("href").split("cityid=")[1];
			$.fancybox.showActivity();
			$.getJSON("arcadelocations_ajax.php?action=arcade-json&cityid="+cityid, updateListAndMap);
		});
	}


	$(window).bind("hashchange", processHash);

	$("#search_series_types").change(function() {

		if($(this).val() == null) {
			// Any game only
		}
		else {

			var series_types = $(this).val();
			var foundGames = [];
			var options = ["<option value=\"0\" selected=\"selected\">Any Game</option>"];

			for(var id in game_items) {

				var index = series_types.indexOf(game_items[id]["t"]);

				if(index >= 0) {
					// OK
					foundGames.push({
						id: id,
						n: game_items[id]["n"],
						r: game_items[id]["r"]
					});
				}
			}

			foundGames.sort(sortGameList);

			for(var i in foundGames) {
				var game = foundGames[i];

				if(game.id != undefined) {
					options.push("<option value=\""+game.id+"\">"+game.n+" ("+game.r+")</option>");
				}
			}

			$("#search_gameid").html(options.join(""));

		}
	});

	$("a").live("click", function() {

		var href = $(this).attr("href");

		if(href!="#") {
			updateHash();
		}

	});

	$("a.show-on-map").live("click", function(event) {

		event.preventDefault();

		var latLng = $(this).attr("title").split(", ");

		map.setCenter(new google.maps.LatLng(latLng[0], latLng[1]));
		map.setZoom(16);
		scrollTo($("#map").offset().top);

	});
	
	$("#expand-all").click(function(event) {
		event.preventDefault();
		
		var elements = $("div[id^=machine-info]");
		
		elements.show();
		elements.each(function() {
			var id = $(this).attr("id").split("-")[2];
			$("#machine-"+id).find("div").first().css("background", "url('/images/bullet_toggle_minus.png') center no-repeat");
		});
	});
	$("#collapse-all").click(function(event) {
		event.preventDefault();
		
		var elements = $("div[id^=machine-info]");
		
		elements.hide();
		elements.each(function() {
			var id = $(this).attr("id").split("-")[2];
			$("#machine-"+id).find("div").first().css("background", "url('/images/bullet_toggle_plus.png') center no-repeat");
		});
	});

	appendMachineListEffects();
});

function scrollTo(target) {
	if($("body").scrollTop() == 0) {
		$("html, body").animate({
			scrollTop: target+"px"
		});
	}
	else {
		$("body").animate({
			scrollTop: target+"px"
		});
	}
}

function appendMachineListEffects() {
	$("a[id^=machine]").prepend("<div style=\"width: 16px; height: 16px; margin-right: 4px; float: left; background: url('/images/bullet_toggle_plus.png') center no-repeat\"></div>");
	$("a[id^=machine]").click(function(event) {
		event.preventDefault();
		var machineid = this.id.split("-")[1];
		var originalLink = this;

		$("div[id=machine-info-"+machineid+"]").toggle(0, function() {
			if($(this).css("display")=="none") {
				$(originalLink).find("div").first().css("background", "url('/images/bullet_toggle_plus.png') center no-repeat");
			}
			else {
				$(originalLink).find("div").first().css("background", "url('/images/bullet_toggle_minus.png') center no-repeat");
			}
		});
	});
	$("div[id^=machine-info]").hide();
}

function updateListAndMap(data) {
	var html = data.list;
	if(data.mapNotSetFlag) {
		$("#map-not-set").html(data.mapNotSet);
	}
	else {
		$("#map-not-set").html("");
	}
	if(data.login && data.addLink.length>0) {
		$("#add-link").html("<div class=\"hrdotted\"></div>\n"+data.addLink);
	}
	else {
		$("#add-link").html("");
	}

	var currentName = data.name;
	var editLink = "";
	if(data.login && data.editLink) {
		var editLink = data.editLink;
	}

	$("#current-name").html(currentName+" <span class=\"rightfloat\" id=\"edit-link\"></span>");
	$("#edit-link").html(editLink);
	$("#select-message").html(data.selectName);
	$("#current-list").css("font-size", "").css("font-weight", "").html(html);

	if(data.zoom!=0) {
		map.setZoom(data.zoom*1);
		map.setCenter(new google.maps.LatLng(data.lat, data.lng));
		//updateHash();
	}

	if(data.navBar!="") {
		$("#top-nav").html(data.navBar);
		$("#bottom-nav").html(data.navBar);
	}

	$.fancybox.hideActivity();
	
	scrollTo($("#top-nav").offset().top);

}

var map;
var infoWindow;

function initialiseMap(latLng, zoom, mapTypeId) {

	if(!mapTypeId) {
		var mapTypeId = google.maps.MapTypeId.ROADMAP;
	}

	var myOptions = {
	  zoom: zoom,
	  center: latLng,
	  mapTypeId: mapTypeId,
	  streetViewControl: true
	};
	map = new google.maps.Map(document.getElementById("map"), myOptions);
	var markerClustererOptions = {gridSize: 50, maxZoom: 11};
	var markers = getMarkers();
	markerClusterer = new MarkerClusterer(map, markers, markerClustererOptions);
	google.maps.event.addListener(map, "click", function() {
		if(infoWindow) {
			infoWindow.close();
		}
	});

	//google.maps.event.addListener(map, "dragend", updateHash);
	//google.maps.event.addListener(map, "zoom_changed", updateHash);

	if(window.location.hash == "") {
		//updateHash();
	}
	else {
		processHash();
	}


}

var supressZoomChange = false;

function updateHash() {

	if(supressZoomChange) {
		supressZoomChange = false;
		return;
	}

	var zoom = map.getZoom();
	var center = map.getCenter();
	var hash = "location:"+center.lat()+","+center.lng()+","+zoom
	window.location.hash = hash;
}

function processHash(event) {

	if(event) {
		event.preventDefault();
	}

	var hashParts = window.location.hash.split(":");

	if(hashParts.length==2 && map && hashParts[0]=="#location") {
		var geoParts = hashParts[1].split(",");
		var latitude = geoParts[0];
		var longitude = geoParts[1];
		var zoom = parseInt(geoParts[2]);
		supressZoomChange = true;
		map.setZoom(zoom);
		map.setCenter(new google.maps.LatLng(latitude, longitude));
	}
}


function arcadeLocationsHandleMouseEvent(event) {

	var latlng = event.latLng;

	if (latlng) {

		if(marker) {
			marker.setPosition(new google.maps.LatLng(latlng.lat(), latlng.lng()));
		}
		else {
			marker = new google.maps.Marker({
				position: new google.maps.LatLng(latlng.lat(), latlng.lng()),
				map: map
			});
		}
	}
}

function getMachineStyle(condition) {

	switch(condition) {

		case 5: {
			return "background: #00ffff; color: #000;";
		}
		case 4: {
			return "background: #80ff00; color: #000;";
		}
		case 3: {
			return "background: #ffff00; color: #000;";
		}
		case 2: {
			return "background: #ff8000; color: #000;";
		}
		case 1: {
			return "background: #ff0000; color: #000;";
		}

		default: {
			return "";
		}
	}
}
