d = 'aedlocator.org'.toLowerCase();
dom = document.domain.toLowerCase();
if (dom.substring(0, 4) == 'www.') {
	domx = dom.substring(4, dom.length);
} else {
	domx = dom;
}
var allowed = false;
if (d == domx) {
	allowed = true;
}
window.onload = loadMap;
var map;
var popup;
var geocoder;
function loadMap() {
	if (allowed) {
		geocoder = new google.maps.Geocoder();
		var lat = 54.327179;
		var long = -3.721613;
		var latlong = new google.maps.LatLng(lat, long);
		var options = {
			zoom : 5,
			center : latlong,
			mapTypeControl : true,
			mapTypeControlOptions : {
				style : google.maps.MapTypeControlStyle.DROPDOWN_MENU
			},
			navigationControl : true,
			navigationControlOptions : {
				style : google.maps.NavigationControlStyle.SMALL
			},
			mapTypeId : google.maps.MapTypeId.ROADMAP
		};
		map = new google.maps.Map(document.getElementById("mymap"), options);
		downloadUrl(
				"seriousgroup/locations.php",
				function(data) {
					var defibs = data.documentElement
							.getElementsByTagName("Location");
					for ( var i = 0; i < defibs.length; i++) {
						var latlng = new google.maps.LatLng(
								parseFloat(defibs[i].getAttribute("Lat")),
								parseFloat(defibs[i].getAttribute("Lng")));
						var name = defibs[i].getAttribute("Name");
						if (name == "") {
							var name = defibs[i].getAttribute("NameNum");
							var namenum = "";
						} else {
							var namenum = defibs[i].getAttribute("NameNum");
						}
						var address = "<span style=\"font-size:14px;font-family:Arial;\">"
								+ name
								+ "</span><br /><span style=\"font-size:12px;font-family:arial;font-style:italic\">";
						if (defibs[i].getAttribute('Street') != defibs[i]
								.getAttribute('Area')) {
							if (namenum == ""
									&& defibs[i].getAttribute('Street') != "") {
								address += defibs[i].getAttribute('Street');
							} else if (namenum != ""
									&& defibs[i].getAttribute('Street') != "") {
								if (namenum.length <= 4) {
									address += namenum + ", "
											+ defibs[i].getAttribute('Street');
								} else {
									address += namenum + "<br />"
											+ defibs[i].getAttribute('Street');
								}
							} else if (namenum != ""
									&& defibs[i].getAttribute('Street') == "") {
								address += namenum;
							}
						} else {
							if (namenum != "") {
								address += namenum;
							}
						}
						address += "<br />" + defibs[i].getAttribute('Area')
								+ "<br />" + defibs[i].getAttribute('City')
								+ " " + defibs[i].getAttribute('Postcode')
								+ "<br />" + defibs[i].getAttribute('Country')
								+ "</span>";
						var access = defibs[i].getAttribute('Access');
						if (access == "1") {
							access = "PAD-24/7 Access";
						} else if (access == "2") {
							access = "Limited Access";
						} else if (access == "3") {
							access = "No Access";
						} else {
							access = access;
						}

						availability = defibs[i].getAttribute('Availability');
						var defib = createMarker(access, availability, address, latlng, map);
					}
				});
	}
}
function createMarker(access, availability, address, latlng, map) {
	if (allowed) {
		if (access == "PAD-24/7 Access") {
			var hearticon = new google.maps.MarkerImage(
					'seriousgroup/markers/heartmarker.png',
					new google.maps.Size(24, 23), new google.maps.Point(0, 0),
					new google.maps.Point(2, 23));
		} else if (access == "Limited Access") {
			var hearticon = new google.maps.MarkerImage(
					'seriousgroup/markers/heartmarkerorange.png',
					new google.maps.Size(24, 23), new google.maps.Point(0, 0),
					new google.maps.Point(2, 23));
		} else {
			var hearticon = new google.maps.MarkerImage(
					'seriousgroup/markers/transparent.png',
					new google.maps.Size(24, 23), new google.maps.Point(0, 0),
					new google.maps.Point(2, 23));
		}
		if (access != "No Access") {
			var heartshadow = new google.maps.MarkerImage(
					'seriousgroup/markers/heartshadow.png',
					new google.maps.Size(36, 23), new google.maps.Point(0, 0),
					new google.maps.Point(2, 23));
		} else {
			var heartshadow = new google.maps.MarkerImage(
					'seriousgroup/markers/transparent.png',
					new google.maps.Size(36, 23), new google.maps.Point(0, 0),
					new google.maps.Point(2, 23));
		}
		var defib = new google.maps.Marker( {
			position : latlng,
			map : map,
			shadow : heartshadow,
			icon : hearticon
		});
		google.maps.event.addListener(defib, "click", function() {
			if (popup)
				popup.close();

			var content = '<div style="width:210px;height:auto;">' + address
						+ '<br />Access: ' + access;

			if(availability != "")
				content = content + '<br />Availability: ' + availability;

			content = content + '<div>';

			popup = new google.maps.InfoWindow( {
				content : content
			});
			popup.open(map, defib);
		});
		return defib;
	}
}
function searchMap() {
	if (allowed) {
		var errormsg = document.getElementById('error');
		if (window.marker != undefined) {
			marker.setMap();
		}
		var markericon = new google.maps.MarkerImage(
				'seriousgroup/markers/markericon.png', new google.maps.Size(18,
						32), new google.maps.Point(0, 0),
				new google.maps.Point(2, 32));
		var markershadow = new google.maps.MarkerImage(
				'seriousgroup/markers/markershadow.png', new google.maps.Size(
						32, 32), new google.maps.Point(0, 0),
				new google.maps.Point(2, 32));
		var streetname = document.getElementById("streetinput").value;
		var pcode = document.getElementById("postcodeinput").value;
		if (streetname == "" || pcode == "") {
            alert("Please enter both an area and postcode to be able to search.");
            return false;
        }
		var x = streetname + ", UK";
		var y = pcode + ", UK";
		var location1 = x.replace(" ", "+");
		var location2 = y.replace(" ", "");
		if (location2.length == 7 || location2.length == 6
				|| location2.length == 5) {
			var location = location1 + ","
					+ location2.substring(0, location2.length - 3);
		} else {
			var location = location1 + "," + location2;
		}
		if (geocoder) {
			geocoder
					.geocode(
							{
								'address' : location
							},
							function(results, status) {
								if (status == google.maps.GeocoderStatus.OK) {
									errormsg.innerHTML = "";
									map.setCenter(results[0].geometry.location);
									map.setZoom(11);
									findDefibs(results[0].geometry.location);
								} else if (status == google.maps.GeocoderStatus.ZERO_RESULTS) {
									errormsg.innerHTML = "<span class=\"errormessages\">Sorry, no location found. Please check address.</span>";
								} else {
									errormsg.innerHTML = "<span class=\"errormessages\">Please enter a valid address or postcode.</span>";
								}
							});
		}
	}
}
function findDefibs(pos) {
	if (allowed) {
		var radius = document.getElementById('radius').value;
		if (radius == 15) {
			map.setZoom(12);
		}
		if (radius == 25) {
			map.setZoom(11);
		}
		if (radius == 35) {
			map.setZoom(10);
		}
		if (radius == 50) {
			map.setZoom(9);
		}
		var locateurl = 'seriousgroup/locate.php?lat=' + pos.lat() + '&lng='
				+ pos.lng() + '&radius=' + radius;
		var results = document.getElementById('results');
		downloadUrl(
				locateurl,
				function(data) {
					var defibs = data.documentElement
							.getElementsByTagName("Location");
					if (defibs.length == 0) {
						results.innerHTML = '<span class="defibs"><b>Your search returned no results. Try searching a larger area.</b></span>';
					}
					for ( var i = 0; i < defibs.length; i++) {
						var latlng = new google.maps.LatLng(
								parseFloat(defibs[i].getAttribute("Lat")),
								parseFloat(defibs[i].getAttribute("Lng")));
						results.innerHTML = '';
					}
				});
	}
}
function showResults(defibs) {
	if (allowed) {
		var results = document.getElementById('results');
		results.innerHTML = '';
		var result = "<table cellspacing=\"0\" cellpadding=\"2\" id=\"resultstable\">";
		result += "<tr>";
		result += "<th colspan=\"3\">Nearest defibrillators:</th>";
		result += "</tr>";
		result += "<tr class=\"titles\"><td width=\"395\">Location</td><td align=\"center\" width=\"80\"></td><td width=\"25\"> </td>";
		result += "</tr>";
		for ( var i = 0; i < defibs.length; i++) {
			var name = defibs[i].getAttribute('NameNum');
			if (defibs[i].getAttribute('Street') != "") {
				var address = defibs[i].getAttribute('Street') + ", "
						+ defibs[i].getAttribute('Area') + ", "
						+ defibs[i].getAttribute('City') + ", "
						+ defibs[i].getAttribute('Postcode') + ", "
						+ defibs[i].getAttribute('Country');
			} else {
				var address = defibs[i].getAttribute('Area') + ", "
						+ defibs[i].getAttribute('City') + ", "
						+ defibs[i].getAttribute('Postcode') + ", "
						+ defibs[i].getAttribute('Country');
			}
			var point = new google.maps.LatLng(defibs[i].getAttribute("Lat"),
					defibs[i].getAttribute("Lng"));
			result += "<tr>";
			result += "<td>"
					+ name
					+ ", "
					+ address
					+ "</td><td align=\"center\"></td><td><a href=\"#\" onclick=\"return gotoDefib('"
					+ point
					+ "');\"><img border=\"0\" src=\"seriousgroup/markers/showbtn.png\" width=\"24\" height=\"28\" /></a></td></tr>";
		}
		result += "</table>";
		results.innerHTML = result;
	}
}
function gotoDefib(location) {
	if (allowed) {
		marker.setMap();
		var markericon = new google.maps.MarkerImage(
				'seriousgroup/markers/markericon.png', new google.maps.Size(35,
						35), new google.maps.Point(0, 0),
				new google.maps.Point(8, 60));
		var markershadow = new google.maps.MarkerImage(
				'seriousgroup/markers/markershadow.png', new google.maps.Size(
						52, 35), new google.maps.Point(0, 0),
				new google.maps.Point(8, 60));
		geocoder.geocode( {
			'address' : location
		}, function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {
				map.setCenter(results[0].geometry.location);
				marker = new google.maps.Marker( {
					map : map,
					icon : markericon,
					shadow : markershadow,
					position : results[0].geometry.location
				});
				map.setZoom(11);
			} else {
				alert("Geocode error: " + status);
			}
		});
		return false;
	}
}
function detectEnter(e) {
	var e = (e) ? e : event
	var charCode = (e.which) ? e.which : e.keyCode
	if (charCode == 13) {
		return searchMap();
	} else {
		return false;
	}
}