	var map;
	var markers = [];
	var infoWindow;
	
	function load(mapid,zoom,lat,lng,type) {
		map = new google.maps.Map(document.getElementById(mapid), {
			//center: new google.maps.LatLng(54.54658, -3.823242),
			center: new google.maps.LatLng(lat, lng),
			zoom: zoom,
			mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
			mapTypeId: type
			
		});
		
		infoWindow = new google.maps.InfoWindow();
	}
	
function createMarker(latlng, details, type, dragability) {
		var html = details;
		
		var mason_image = 'img/mason.png';
		var home_image = 'img/home.png';
		
		switch(type) {
			case 'mason':
				var image = mason_image;
				break;
			case 'home':
				var image = home_image;
				break;
			default:
				var image = '';
				break;
		}

		var marker = new google.maps.Marker({
			map: map,
			position: latlng,
			title: name,
			icon: image,
			draggable: dragability
		});
		google.maps.event.addListener(marker, 'click', function() {
			infoWindow.setContent(html);
			infoWindow.open(map, marker);
		});
		
		if(dragability){
		
		var oldlatlng = latlng;
		
		google.maps.event.addListener(marker, "dragend", function(e){
			 var newLat = marker.getPosition().lat();
			 var newLng = marker.getPosition().lng();
			 newcoords = newLat + ',' + newLng;
			 
			 if(newcoords != oldlatlng){
			 	document.getElementById('lat').value = newLat.toFixed(6);
			 	document.getElementById('lng').value = newLng.toFixed(6);
			 }
		});
		
		}

		markers.push(marker);
}

function parseXml(str) {
		if (window.ActiveXObject) {
			var doc = new ActiveXObject('Microsoft.XMLDOM');
			doc.loadXML(str);
			return doc;
		} else if (window.DOMParser) {
			return (new DOMParser).parseFromString(str, 'text/xml');
		}
}

function doNothing() { console.log('nothing');}

function downloadUrl(url, callback) {
		var request = window.ActiveXObject ?
		  new ActiveXObject('Microsoft.XMLHTTP') :
		  new XMLHttpRequest;
	
		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				request.onreadystatechange = doNothing;
				callback(request.responseText, request.status);
			}
		};
	
		request.open('GET', url, true);
		request.send(null);
}

function searchLocationsNear(center,radius) {
	//clearLocations();
	var searchUrl = 'search.php?search=' + center + '&radius=' + radius;
	downloadUrl(searchUrl, function(data) {
		var xml = parseXml(data);
		var markerNodes = xml.documentElement.getElementsByTagName('marker');
		var bounds = new google.maps.LatLngBounds();
		var x;
		var listing;
		listing = '<ol class="result-listings">';
		for (var i = 0; i < markerNodes.length; i++) {
			var fid = markerNodes[i].getAttribute('ID');
			var premium = markerNodes[i].getAttribute('premium');
			var type = markerNodes[i].getAttribute('type');
			var details = markerNodes[i].getAttribute('details');
			var company = markerNodes[i].getAttribute('companyname');
			var description = markerNodes[i].getAttribute('description');
			var address = markerNodes[i].getAttribute('address');
			var telephone = markerNodes[i].getAttribute('telephone');
			var fax = markerNodes[i].getAttribute('fax');
			var email = markerNodes[i].getAttribute('email');
			var website = markerNodes[i].getAttribute('website');
			var services = markerNodes[i].getAttribute('services');
			
			var distance = parseFloat(markerNodes[i].getAttribute('distance'));
			var latlng = new google.maps.LatLng(
				parseFloat(markerNodes[i].getAttribute('lat')),
				parseFloat(markerNodes[i].getAttribute('lng')));
	
			createMarker(latlng, details, type, false);
			if(company != 'null'){
				listing += buildListing(fid,premium,company,description,address,telephone,fax,email,website,services);
			}
			if(i < 5) {
				bounds.extend(latlng);
			}
			x = i;
		}
		listing += '</ol>';
		document.getElementById('listing_view').innerHTML = listing;
		if(x == 0){
			x = 'No';
		}
		document.getElementById('result_count_1').innerHTML = x;
		document.getElementById('result_count_2').innerHTML = x;

		map.fitBounds(bounds);
	});
}

function buildListing(id,premium,company,desc,address,tel,fax,email,web,services) {

var $listing = '';

if(id){

if(premium == 'yes') {

$listing += '<li class="premium listing"><span class="name"><strong>' + company + '</strong><br /><span class="about-us">' + desc + '</span><br />';
$listing += '<a href="/approved-business/' + id + '/' + company.replace(/ /g,"-").toLowerCase() + '/" title="' + company + '" class="button">More information</a></span>';
$listing += '<span class="further-information"><span class="address">' + address + '</span><span class="contact">';

if(tel){
	$listing += 'T:&nbsp;' + tel + '<br />';
}
if(fax){
	$listing += 'F:&nbsp;' + fax + '<br />';
}
if(email){
	$listing += 'E:&nbsp;<a href="mailto:' + email + '">Email this mason</a><br />';
}
if(web){
	$listing += 'W:&nbsp;<a href="http://' + web + '" alt="' + company + '" target="_blank">' + web + '</a><br />';
}
$listing += '</span>';
$listing += '<span class="tags">';
$listing += services;
$listing += '</span></span><span class="clear-both"></span></li>';
} else {
$listing += '<li class="listing"><span class="name"><strong>' + company + '</strong><br /></span>';
$listing += '<span class="further-information"><span class="address">' + address + '</span><span class="contact">';
if(tel){
	$listing += 'T:&nbsp;' + tel + '<br />';
}
if(email){
	$listing += 'E:&nbsp;<a href="mailto:' + email + '">Email this mason</a><br />';}
$listing += '</span></span><span class="clear-both"></span></li>';
}
}
return $listing;

}
