//<![CDATA[

//var loggedIn = "Y";

// global "map" variables
var map;
var gmarkers = [];
var htmls = [];
var umarkers = [];
var bounds = new GLatLngBounds();
var position_marker = null;
var ge;

var baseIcon = new GIcon();
baseIcon.iconSize = new GSize(17, 17);
baseIcon.iconAnchor = new GPoint(8, 10);
baseIcon.infoWindowAnchor = new GPoint(11, 13);

umarkers[0] = null;

var waypointSymbol;

var prevLatNE = null;
var prevLngNE = null;
var prevLatSW = null;
var prevLngSW = null;

var gpsdata = "";
var ugpsdata = "";

var rootlib = "http://www.hill-bagging.co.uk/";
//var rootlib = "http://localhost:8081/hill-bagging/";

var symbollib = rootlib + "symbols/";

function loadMap(latDefault, lngDefault, zoomDefault) {

	if (!GBrowserIsCompatible()) {
		alert("Sorry, the Google Maps API is not compatible with this browser");
		return;
	}

	map = new GMap2(document.getElementById("map"),{draggableCursor:'default', mapTypes:[G_NORMAL_MAP, G_SATELLITE_MAP, G_PHYSICAL_MAP, G_SATELLITE_3D_MAP]});

	//map.addMapType(G_SATELLITE_3D_MAP);
      	
      	map.addControl(new GSmallMapControl(), new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(8,20)));
	map.addControl(new GMapTypeControl(), new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(6,20))); 
	map.addControl(new GScaleControl());
	map.enableContinuousZoom();
	map.enableDoubleClickZoom();
	map.setCenter(new GLatLng(latDefault, lngDefault), zoomDefault, G_NORMAL_MAP);
	
	map.getEarthInstance(getEarthInstanceCB);
	waypointSymbol = "";

	if (document.getElementById("GPSFile"))
	document.getElementById("GPSFile").innerHTML = gpsFile();
	
	GEvent.addListener( map, "wheelup", function(p){ 
		if ( map.getZoomLevel() > 0 ) { 
			map.centerAndZoom( 
			p.scaleRelative( map.getCenterLatLng() ), 
			map.getZoomLevel() - 1 
			); 
		} 
	}); 

	GEvent.addListener( map, "wheeldown", function(p){ 
		if ( map.getZoomLevel() <= 16 ) 
			map.centerAndZoom( 
			p.scaleRelative( map.getCenterLatLng(), -1 ), 
			map.getZoomLevel() + 1 
		); 
	}); 
	
	GEvent.addListener(map, "click", function(overlay, pt) {
		
		if (overlay) return;
		
		if (waypointSymbol != "") {
    			var uMarker = addUserMarker(pt,waypointSymbol);
    		}

		if (document.getElementById('clickpos')) {
			var grstatus = getCoords(pt);
			document.getElementById('clickpos').innerHTML = "Last click coords = " + grstatus;
    		}
	});
	
	GEvent.addListener(map, "mousemove", function(pt) {
		var grstatus = getCoords(pt);

		document.getElementById('coords').innerHTML = grstatus;
		window.status = grstatus;
	});

	GEvent.addListener(map, "mouseout", function(p) {
		window.status='';
	});
}

function getEarthInstanceCB(object) {
	ge = object;
	// You can now manipulate ge using the full Google Earth API.
	ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, true);
}

function loadMapSmall(latDefault, lngDefault, zoomDefault) {

	if (!GBrowserIsCompatible()) {
		alert("Sorry, the Google Maps API is not compatible with this browser");
		return;
	}

	map = new GMap2(document.getElementById("map"));
	map.addControl(new GSmallMapControl());
	map.enableContinuousZoom();
	map.enableDoubleClickZoom();
	map.setCenter(new GLatLng(latDefault, lngDefault), zoomDefault, G_SATELLITE_MAP);


	GEvent.addListener( map, "wheelup", function(p){ 
		if ( map.getZoomLevel() > 0 ) { 
			map.centerAndZoom( 
			p.scaleRelative( map.getCenterLatLng() ), 
			map.getZoomLevel() - 1 
			); 
		} 
	}); 

	GEvent.addListener( map, "wheeldown", function(p){ 
		if ( map.getZoomLevel() <= 16 ) 
			map.centerAndZoom( 
			p.scaleRelative( map.getCenterLatLng(), -1 ), 
			map.getZoomLevel() + 1 
		); 
	}); 
}

function getCoords(pt) {

	//create a wgs84 coordinate
	wgs84 = new GT_WGS84();


	wgs84.setDegrees(pt.lat(), pt.lng());

	//convert to OSGB
	osgb=wgs84.getOSGB();
	irish=wgs84.getIrish();
	var coords = "";

	if ((wgs84.latitude < 55.45 && wgs84.latitude > 51.25 && wgs84.longitude < -5.3)
	&& !(wgs84.latitude > 55.2 && wgs84.longitude > -5.9))
	{
		if (irish.getGridRef(5).substring(0, 9) != "undefined" && irish.getGridRef(5) != "V 00000 00000")
			coords += "Irish Grid Ref: " + irish.getGridRef(5);
	}
	else
	{
		if (osgb.getGridRef(5).substring(0, 9) != "undefined" && osgb.getGridRef(5) != "SV 00000 00000")
			coords += "OSGB Grid Ref: " + osgb.getGridRef(5);
	}

	coords += "   Lat: " + Math.round(wgs84.latitude*1000000)/1000000 + "  Lon: " + Math.round(wgs84.longitude*1000000)/1000000;
    
	return coords;
}

function getGridReference(pt) {

	//create a wgs84 coordinate
	wgs84 = new GT_WGS84();


	wgs84.setDegrees(pt.lat(), pt.lng());

	//convert to OSGB
	osgb=wgs84.getOSGB();
	irish=wgs84.getIrish();
	var gr = "";

	if ((wgs84.latitude < 55.45 && wgs84.latitude > 51.25 && wgs84.longitude < -5.3)
	&& !(wgs84.latitude > 55.2 && wgs84.longitude > -5.9))
	{
		if (irish.getGridRef(5).substring(0, 9) != "undefined" && irish.getGridRef(5) != "V 00000 00000")
			gr += irish.getGridRef(5);
	}
	else
	{
		if (osgb.getGridRef(5).substring(0, 9) != "undefined" && osgb.getGridRef(5) != "SV 00000 00000")
			gr += osgb.getGridRef(5);
	}

	return gr;
}

function createMarker(hillnumber, name, lat, lng, html, symbol, metres) {
	
	var point = new GLatLng(lat, lng);
	var icon = new GIcon(baseIcon);

	icon.image = symbollib + symbol + ".png";
			
	var marker = new GMarker(point, {icon:icon, title:stripslashes(name + " " + metres)});
	//bounds.extend(point);


	GEvent.addListener(marker, "click", function() {
		htmltab = html.split("<tab>");
		if (htmltab.length > 1)
			marker.openInfoWindowTabsHtml([new GInfoWindowTab('info',htmltab[0]), new GInfoWindowTab('links',htmltab[1])]);
		else
			marker.openInfoWindowHtml(html);
	});


	gmarkers[hillnumber] = marker;
	htmls[hillnumber] = html;

	return marker;
}
    
function userMarker(markerkey, description, gridref, lat, lng, symbol, metres, gpsid) {
	
	var point = new GLatLng(lat, lng);
	var userIcon = new GIcon(baseIcon);

	userIcon.image = symbollib + symbol + ".png";
			
	var umarker = new GMarker(point, {icon:userIcon, title:stripslashes(description)});
	
	var htmlstr = userMarkerWindow(markerkey, description, gridref, symbol, metres, gpsid);

	map.addOverlay(umarker);
	
	umarker.markerkey = markerkey;
	umarker.description = description;
	umarker.gridref = gridref;
    	umarker.lat = lat;
    	umarker.lng = lng;
	umarker.symbol = symbol;
	umarker.metres = metres;
	umarker.gpsid = gpsid;
	umarker.infowindow = htmlstr;

	umarkers[markerkey] = umarker;
	
	GEvent.addListener(umarkers[markerkey], "click", function() {
		umarkers[markerkey].openInfoWindowHtml(umarkers[markerkey].infowindow);
	});
		
	return umarker;
}
    
function addUserMarker(pt,symbol) {
	
	var userIcon = new GIcon(baseIcon);

	userIcon.image = symbollib + symbol + ".png";
			
	var umarker = new GMarker(pt, {icon:userIcon, title:stripslashes(symbol)});
	
	map.addOverlay(umarker);

	map.getDragObject().setDraggableCursor("default");
	document.getElementById(symbol).style.border="none";
    	waypointSymbol = "";
    	
    	umarker.markerkey = 0;
    	umarker.gridref = getGridReference(pt);
    	umarker.lat = Math.round(pt.lat()*1000000)/1000000;
    	umarker.lng = Math.round(pt.lng()*1000000)/1000000;
    	umarker.metres = "";
    	umarker.symbol = symbol;
    	umarker.description = "";
 	umarker.infowindow = userMarkerWindow(umarker.markerkey, umarker.description, umarker.gridref, umarker.symbol, umarker.metres, "New marker");
   	
    	umarkers[0] = umarker;
    	
    	if (loggedIn == "Y") {
    		GEvent.addListener(umarkers[0], "click", function() {
			umarkers[0].openInfoWindowHtml(umarkers[0].infowindow);
		});

		umarkers[0].openInfoWindowHtml(umarkers[0].infowindow);
	}

}

function addWaypoint(symbol) {
	waypointSymbol = symbol;
	map.getDragObject().setDraggableCursor("crosshair");
	document.getElementById('Waypoint').style.border="none";
	document.getElementById('Car').style.border="none";
	document.getElementById('Campsite').style.border="none";
	document.getElementById(symbol).style.border="1px solid red";
}

function userMarkerWindow(markerkey, description, gridref, symbol, metres, gpsid) {
    	
    	var readonly = 'readonly ';
    	if (loggedIn == "Y") readonly = '';
	
	var htmlstr = '<b>' + gpsid + '</b><br>';
    	htmlstr += '<form name="frmMarker">';
	htmlstr += '<table width="400px" border="1">';
	htmlstr += '<tr><td style="width:100px">Grid Ref:</td>';
	htmlstr += '<td><input type="TEXT" size="14" readonly id="ugridref" value="' + gridref + '" title="OS grid reference">&nbsp;<img src="' + symbollib + symbol + '.png" border="0px"></td></tr>';
	htmlstr += '<tr><td style="width:100px">Elevation:</td>';
	htmlstr += '<td><input type="TEXT" size="5" ' + readonly + 'id="umetres" value="' + metres + '" title="Height above sea level"><br />(in metres - optional)</td></tr>';
	htmlstr += '<tr><td style="width:100px">Description:</td>';
	htmlstr += '<td><input type="TEXT" size="50" ' + readonly + 'id="udesc" value="' + unescape(description.replace(/\+/g," ")) + '" title="Enter your own brief description">';
	htmlstr += '<br />Enter a brief description for your marker<br />(50 characters max)</td></tr>';
	htmlstr += '</table>';
	
	htmlstr += '<div style="text-align:right;">';
	if (loggedIn == "Y") {
		htmlstr += '<a href="#" onclick="cancelMarker(\'' + markerkey + '\'); return false;">[cancel]</a>';
		htmlstr += '&nbsp;&nbsp;<a href="#" onclick="updateMarker(\'' + markerkey + '\'); return false;">[save]</a>&nbsp;';
		if (markerkey > 0) {
			htmlstr += '&nbsp;<a href="#" onclick="deleteMarker(\'' + markerkey + '\'); return false;">[delete]</a>&nbsp;';
		}
	}
	else {
		htmlstr += '<a href="#" onclick="umarkers[' + markerkey + '].map.closeInfoWindow(); return false;">[close]</a>';
	}
	htmlstr += '</div></form>';
	
	return htmlstr;
}

function myclick(hillnumber) {
	htmltab = htmls[hillnumber].split("<tab>");

	if (htmltab.length > 1)
		gmarkers[hillnumber].openInfoWindowTabsHtml([new GInfoWindowTab('info',htmltab[0]), new GInfoWindowTab('links',htmltab[1])]);
	else
		gmarkers[hillnumber].openInfoWindowHtml(htmls[hillnumber]);
}

function uclick(markerkey) {

	umarkers[markerkey].openInfoWindowHtml(umarkers[markerkey].infowindow);
}

function myLog(hillnumber,name,climbed,mydesc,mygridref,myfeature,queryString) {

	var htmlstr = '';
	htmlstr += '<fieldset><legend>My Log for ' + htmlspecialchars(name, "ENT_QUOTES") + '</legend>';
    	htmlstr += '<form name="frmLog">';

	htmlstr += '<p><label>Date of Ascent:</label>';
	htmlstr += '<input type="TEXT" size="10" id="climbed" value="' + climbed + '" title="Enter date of ascent (dd/mm/yyyy)">';
	htmlstr += '<br /><span class="formnote">&nbsp;&nbsp;(dd/mm/yyyy - include the slashes)</span>';
	htmlstr += '<br /><span class="formnote">...MUST BE ENTERED (estimate if actual date unknown)</span></p>';

	htmlstr += '<p><label>My Log:</label>';
	htmlstr += '<textarea rows="5" cols="51" id="mydesc" title="Enter a log of your ascent">' + unescape(mydesc.replace(/\+/g," ")) + '</textarea>';
	htmlstr += '<br /><span class="formnote">...Enter a log of your ascent (255 characters max), e.g. route, start point, access problems.</span>';
	htmlstr += '<br /><span class="formnote">N.B. Viewable by other users!</span></p>';
	
	htmlstr += '<p><span class="formnote" style="font-weight: bold;">Optional for GPS users only:</span>';
	htmlstr += '<br /><span class="formnote">If you recorded a grid reference for your summit on a GPS receiver, please enter</span>';
	htmlstr += '<br /><span class="formnote">the grid reference and a description of the summit feature you recorded.</span>';
	htmlstr += '<br /><span class="formnote">The data you enter will help to improve the accuracy of the <a href="http://www.biber.fsnet.co.uk/database_notes.html#GR10" target="_blank">Database of British Hills</a>.</span></p>';
	
	htmlstr += '<p><label>Summit Grid Ref:</label>';
	htmlstr += '<input type="TEXT" size="14" id="mygridref" value="' + mygridref + '" title="Enter your own recorded grid ref for the summit">';
	htmlstr += '<br /><span class="formnote">...Enter your own recorded grid ref for the summit (e.g. NY 12345 67890).</span>';
	htmlstr += '<br /><span class="formnote">Try to remember to switch on your GPS a few minutes before reaching the summit</span>';
	htmlstr += '<br /><span class="formnote">and leave the unit for a few minutes to settle before taking a reading.</span></p>';

	htmlstr += '<p><label>Summit Description:</label>';
	htmlstr += '<textarea rows="5" cols="51" id="myfeature" title="Enter a brief description of the summit feature">' + unescape(myfeature.replace(/\+/g," ")) + '</textarea>';
	htmlstr += '<br /><span class="formnote">...Enter a brief description of the summit feature, e.g. cairn, trig pillar, rocky outcrop, etc.</span>';
	htmlstr += '<br /><span class="formnote">It would help if you could also include the height as given by GPS, and precision of GPS</span>';
	htmlstr += '<br /><span class="formnote">at time of measurement, and mention any survey equipment used, e.g. Abney level.</span>';

	htmlstr += '<p class="noprint"><label>&nbsp;</label><input type="BUTTON" value="Save" onclick="updateLog(\'' + hillnumber + '\',\'' + queryString + '\'); setDisplay(\'MyLog\',\'none\');" />';
	htmlstr += '&nbsp;&nbsp;<label>&nbsp;</label><input type="BUTTON" value="Cancel" onclick="setDisplay(\'MyLog\',\'none\');" /></p>';
	htmlstr += '</form></fieldset><br />';
	
	if (document.getElementById("MyLog")) {
		document.getElementById("MyLog").innerHTML = htmlstr;
		setDisplay('MyLog','inline');
	}
}

function myLog2(hillnumber,name,climbed,mygridref,mydesc,queryString) {

	var htmlstr = '';
	htmlstr += '<fieldset><legend>My Log for ' + name + '</legend>';
    	htmlstr += '<form name="frmLog">';

	htmlstr += '<p><label>Date of Ascent:</label>';
	htmlstr += '<input type="TEXT" size="10" id="climbed" value="' + climbed + '" title="Enter date of ascent (dd/mm/yyyy)">';
	htmlstr += '<br /><span class="formnote">&nbsp;&nbsp;(dd/mm/yyyy - include the slashes)</span>';
	htmlstr += '<br /><span class="formnote">...MUST BE ENTERED (estimate if actual date unknown)</span></p>';

	htmlstr += '<p><label>My Grid Ref:</label>';
	htmlstr += '<input type="TEXT" size="14" id="mygridref" value="' + mygridref + '" title="Enter your own recorded grid ref">';
	htmlstr += '<br /><span class="formnote">...Enter your own recorded grid ref for the summit (e.g. NY 12345 67890)</span></p>';

	htmlstr += '<p><label>My Description:</label>';
	htmlstr += '<textarea rows="5" cols="51" id="mydesc" title="Enter your own brief description">' + unescape(mydesc.replace(/\+/g," ")) + '</textarea>';
	htmlstr += '<br /><span class="formnote">...Enter your own brief description (255 characters max),</span>';
	htmlstr += '<br /><span class="formnote">e.g. summit description, route, start point, access problems, etc.</span>';
	htmlstr += '<br /><span class="formnote">N.B. Viewable by other users!</span></p>';

	htmlstr += '<p class="noprint"><label>&nbsp;</label><input type="BUTTON" value="Save" onclick="updateLog(\'' + hillnumber + '\',\'' + queryString + '\'); setDisplay(\'MyLog\',\'none\');" />';
	htmlstr += '&nbsp;&nbsp;<label>&nbsp;</label><input type="BUTTON" value="Cancel" onclick="setDisplay(\'MyLog\',\'none\');" /></p>';
	htmlstr += '</form></fieldset><br />';
	
	if (document.getElementById("MyLog")) {
		document.getElementById("MyLog").innerHTML = htmlstr;
		setDisplay('MyLog','inline');
	}
}

function setZoom() {

	// ===== Extend the bounds a little so markers not too close to edge of map ======
	// (Could check zoom level first and set different mapBuffer values)
	var mapBuffer = 0.03;
	
	var boundsNE = new GLatLng(bounds.getNorthEast().lat() + mapBuffer, bounds.getNorthEast().lng() + mapBuffer);
	bounds.extend(boundsNE);
	var boundsSW = new GLatLng(bounds.getSouthWest().lat() - mapBuffer, bounds.getSouthWest().lng() - mapBuffer);
	bounds.extend(boundsSW);
	
	// ===== determine the zoom level from the bounds =====
	map.setZoom(map.getBoundsZoomLevel(bounds));
	if (map.getZoom() > 11) map.setZoom(11);
	
	map.setCenter(bounds.getCenter());
}

function updateLog(hillnumber,queryString) {

	var request = GXmlHttp.create();

	var climbed = encodeURI(document.getElementById("climbed").value);
	var mydesc = encodeURI(document.getElementById("mydesc").value);
	var mygridref = encodeURI(document.getElementById("mygridref").value);
	var myfeature = encodeURI(document.getElementById("myfeature").value);
	
	var updateString = "hillnumber=" + hillnumber + "&climbed=" + climbed + "&mydesc=" + mydesc + "&mygridref=" + mygridref + "&myfeature=" + myfeature;

	request.open("GET", rootlib + "xmlupdate.php?" + updateString, false);

	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			var xmlDoc = request.responseXML;

			var totals = xmlDoc.documentElement.getElementsByTagName("totals");
			var alertmsg = totals[0].getAttribute("alert");

			if (alertmsg > "") {
				alert(alertmsg);
				return;
			}
		}
     	}

     	request.send(null);
			
	searchSubmit(queryString);
}

function updateMarker(markerkey) {

	var request = GXmlHttp.create();

	var umetres = document.getElementById("umetres").value;
        if (isNaN(umetres)) {
           	alert("Metres must be numeric");
           	return;
        }
         
	var udesc = encodeURI(document.getElementById("udesc").value);
	
	var updateString = "umarkers=U&markerkey=" + umarkers[markerkey].markerkey + "&gridref=" + umarkers[markerkey].gridref + "&markertype=" + umarkers[markerkey].symbol + "&metres=" + umetres + "&desc=" + udesc + "&lat=" + umarkers[markerkey].lat + "&lng=" + umarkers[markerkey].lng;

	request.open("GET", rootlib + "umarker.php?" + updateString, false);

	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			var xmlDoc = request.responseXML;

			var totals = xmlDoc.documentElement.getElementsByTagName("totals");
			var alertmsg = totals[0].getAttribute("alert");

			if (alertmsg > "") {
				alert(alertmsg);
				return;
			}
		}
	}

	request.send(null);
	
	map.closeInfoWindow();
			
	searchMarkers("mapbounds");
}

function cancelMarker(markerkey) {
	map.closeInfoWindow();
	
	if (markerkey == 0) {
		map.removeOverlay(umarkers[0]);
		delete umarkers[0];
	}
}

function deleteMarker(markerkey) {

	if (!confirm("Are you sure you want to delete this marker?"))
		return;

	var request = GXmlHttp.create();
	
	var deleteString = "umarkers=D&markerkey=" + umarkers[markerkey].markerkey;

	request.open("GET", rootlib + "umarker.php?" + deleteString, false);

	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			var xmlDoc = request.responseXML;

			var totals = xmlDoc.documentElement.getElementsByTagName("totals");
			var alertmsg = totals[0].getAttribute("alert");

			if (alertmsg > "") {
				alert(alertmsg);
				return;
			}
		}
	}

	request.send(null);
	
	map.closeInfoWindow();
	map.removeOverlay(umarkers[markerkey]);
	delete umarkers[markerkey];
			
	searchMarkers("mapbounds");
}

function hideMarkers() {
	document.getElementById("MarkerResults").innerHTML = "";
	setDisplay('MarkerResults','none');	
	
	map.closeInfoWindow(); 

	for (i=0; i < umarkers.length; i++) {
		if (umarkers[i])
			map.removeOverlay(umarkers[i]);
	}
}


function searchSubmit(queryString) {

	var request = GXmlHttp.create();
	var htmlstr = "";
	var inString = queryString;	
	
	var queryArray = parse_str(queryString);
	var gr = queryArray['gr'] ? queryArray['gr'].toUpperCase() : "";
	var qu = queryArray['qu'] ? queryArray['qu'] : "S";
	var mp = queryArray['mp'] ? queryArray['mp'] : "large";

	gpsdata = "";

	if (position_marker != null) {
	    map.removeOverlay(position_marker);
	}
		
	if (gr != "") {
		osgb = new GT_OSGB();
		osirish = new GT_Irish();
		if (osgb.parseGridRef(gr)) {
			wgs84=osgb.getWGS84();
		}
		else if (osirish.parseGridRef(gr)) {
			wgs84=osirish.getWGS84();
		}
		else {
			alert("Invalid grid reference");
			return;
		}
			
		var point = new GLatLng(wgs84.latitude, wgs84.longitude);
		position_marker = new GMarker(point);
		//var grHtml = "OS Grid Ref:" + gr;
		//GEvent.addListener(position_marker, "click", function() {
		//	position_marker.openInfoWindowHtml(grHtml);
		//});
		map.addOverlay(position_marker);
		map.setCenter(point, 12);
		queryString = "mapbounds";
		inString = "mapbounds";
	}
	
	if (queryString == "mapbounds") {
		if (map.getZoom() < 9) {
			alert("Function not available at this zoom level \r\n (zoom in and try again)");
			return;
		}

		var latNE = map.getBounds().getNorthEast().lat();
		var lngNE = map.getBounds().getNorthEast().lng();
		var latSW = map.getBounds().getSouthWest().lat();
		var lngSW = map.getBounds().getSouthWest().lng();

		queryString = "ct=XX&qu=S&latSW=" + latSW + "&lngSW=" + lngSW + "&latNE=" + latNE + "&lngNE=" + lngNE;

	}

	// display the loading message
    	setVisibility('loading','visible');

	request.open("GET", rootlib + "xmlsearch4.php?" + queryString, true);

	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			var xmlDoc = request.responseXML;
			// obtain the array of markers and loop through it
			var markers = xmlDoc.documentElement.getElementsByTagName("marker");

			if (mp != "none")
				hideall();

			var totals = xmlDoc.documentElement.getElementsByTagName("totals");

			var rowcount = totals[0].getAttribute("rowcount");
			var climbed = totals[0].getAttribute("climbed");
			var myPercent = totals[0].getAttribute("percent");
			var alertmsg = totals[0].getAttribute("alert");

			// reset the results table
			document.getElementById("SearchResults").innerHTML = "";

			if (alertmsg > "") {
				setVisibility('loading','hidden');
				alert(alertmsg);
				return;
			}

			htmlstr += '<table class=\"totals\">';
			htmlstr += '<tr>';
			htmlstr += '<td align="left" id="counts">Total listed: ' + rowcount + ',&nbsp; total climbed: <font color="red">' + climbed + ' (' + myPercent + '%)</font></td>';
			htmlstr += '<td align="right" style="padding-right:60px"><a href="' + countrylib + 'helpnotes.php?qu=' + qu + '#TableNotes" target="_blank"><span class="noprint">Table Help</span></a></td>';
			htmlstr += '</tr>';
			htmlstr += '</table>';

			htmlstr += tableHdr(queryString);

			htmlstr += '<tfoot>';

			var homeMarker = xmlDoc.documentElement.getElementsByTagName("homemarker");
			if (homeMarker.length > 0) {
				var hhillnumber = homeMarker[0].getAttribute("hillnumber");
				var hname = homeMarker[0].getAttribute("mountain");
				var hlat = parseFloat(homeMarker[0].getAttribute("lat"));
				var hlng = parseFloat(homeMarker[0].getAttribute("lng"));
				var hgridref12 = homeMarker[0].getAttribute("gridref12");
				var hgridref = homeMarker[0].getAttribute("gridref");
				var hsymbol = homeMarker[0].getAttribute("symbol");
				
				var hhtml = "<b>My House</b>";
				var hgetamap = Getamap(hgridref);
				if (hgetamap != "") {
					hhtml += "<br>View on: ";
					hhtml += "<a href=\"" + hgetamap + "\" target=\"_blank\" title=\"View on OS Get-a-map\">Get-a-map</a>";
				}
				
				var osgb = new GT_OSGB();
				var homerow = "";
				if (osgb.parseGridRef(hgridref)) {
					var wgs84=osgb.getWGS84();
					if (mp != "none") {
						var hmarker = createMarker(hhillnumber, hname, wgs84.latitude, wgs84.longitude, hhtml, hsymbol, '');
						map.addOverlay(hmarker);
						homerow += "<tr class=\"hdr\"><td style=\"width:80px\"><a href=\"#\" title=\"Click to locate on map\" onClick=\"javascript:myclick('0'); setScrollTop('120'); return false;\">";
						homerow += "<img src=\"" + symbollib + hsymbol + ".png\" border=\"0\"></a></td>";
					}
					else {
						homerow += "<tr class=\"hdr\"><td style=\"width:80px\"><img src=\"" + symbollib + hsymbol + ".png\" border=\"0\"></td>";
					}
					
					homerow += "<td>" + hname + "</td>";
					homerow += "<td>&nbsp;</td>";
					homerow += "<td style=\"width:50px\">&nbsp;</td>";
					homerow += "<td style=\"width:50px\">&nbsp;</td>";
					homerow += "<td style=\"width:60px\">&nbsp;</td>";
					homerow += "<td style=\"width:150px\"><a href=\"" + hgetamap + "\" target=\"_blank\" title=\"Click for detailed map\">" + hgridref + "</a></td>";
					homerow += "<td style=\"width:80px\">&nbsp;</td></tr>";
	
					htmlstr += homerow;		        		
				}
			}
			
			htmlstr += '</tfoot>';
			
			htmlstr += '<tbody>';

			for (var i = 0; i < markers.length; i++) {
				// obtain the attribues of each marker
				var hillnumber = parseInt(markers[i].getAttribute("hillnumber"));
				var name = markers[i].getAttribute("mountain");
				var lat = parseFloat(markers[i].getAttribute("lat"));
				var lng = parseFloat(markers[i].getAttribute("lng"));
				var gridref12 = markers[i].getAttribute("gridref12");
				var gridref = markers[i].getAttribute("gridref");
				var source = markers[i].getAttribute("source");
				var gpsid = markers[i].getAttribute("gpsid");
				var classification = markers[i].getAttribute("classification");
				var rank = markers[i].getAttribute("rank");
				var area = markers[i].getAttribute("area");
				var symbol = markers[i].getAttribute("symbol");
				var metres = markers[i].getAttribute("metres");
				var feet = markers[i].getAttribute("feet");
				var drop = markers[i].getAttribute("drop");
				var climbed = markers[i].getAttribute("climbed");
				var mydesc = markers[i].getAttribute("mydesc");
				var mygridref = markers[i].getAttribute("mygridref");
				var myfeature = markers[i].getAttribute("myfeature");
				var countrylib = markers[i].getAttribute("countrylib");
				
				var html = infoWindow(queryString, hillnumber, name, metres, feet, classification, rank, gridref, lat, lng, climbed, mydesc, mygridref, myfeature, countrylib);

				if (mp != "none") {
					if (gmarkers[hillnumber]) {
						if (gmarkers[hillnumber].symbol == symbol) {
							gmarkers[hillnumber].show();
							bounds.extend(gmarkers[hillnumber].getPoint());
						}
						else {
							delete gmarkers[hillnumber];
						}
					}
					if (!gmarkers[hillnumber]) {
						// create the marker
						var namearea = name;
						if (qu.substring(0, 1) == "C")
							namearea = area;
						var marker = createMarker(hillnumber, namearea, lat, lng, html, symbol, metres);
						bounds.extend(marker.getPoint());
						map.addOverlay(marker);
					}
				}

				htmlstr += tableRow(i, queryString, hillnumber, name, metres, feet, drop, classification, rank, gridref, lat, lng, source, gpsid, symbol, area, climbed, mydesc, mygridref, myfeature, countrylib);
				gpsdata += gpsRow(gpsid, gridref, metres, name);

			}
			
			htmlstr += '</tbody>';
        		htmlstr += '</table>';

			if (mp != "none") {
				if (inString != "mapbounds") {
					if (inString.indexOf("zm=N") < 0) 
						setZoom();
					else
						map.setCenter(bounds.getCenter());
				}
			}
			
			if (inString.indexOf("zm=N") < 0) 
				document.getElementById("SearchResults").innerHTML = htmlstr;

			if (inString.indexOf("mapbounds") > -1)
				setDisplay('SearchResults','inline');
				
			if (document.getElementById("GPSFile"))
				document.getElementById("GPSFile").innerHTML = gpsFile();

			// remove the loading message when the page has finished loading
      			setVisibility('loading','hidden');

        }
     }

     request.send(null);

}

function searchMarkers(queryString) {

	var request = GXmlHttp.create();
	var htmlstr = "";
	var inString = queryString;
	ugpsdata = "";
	
	if (inString.indexOf("mapbounds") > -1) {
		if (map.getZoom() < 9) {
			alert("Function not available at this zoom level \r\n (zoom in and try again)");
			return;
		}

		var latNE = map.getBounds().getNorthEast().lat();
		var lngNE = map.getBounds().getNorthEast().lng();
		var latSW = map.getBounds().getSouthWest().lat();
		var lngSW = map.getBounds().getSouthWest().lng();
  		
  		if (prevLatNE == null) {
  			prevLatNE = latNE;
  			prevLngNE = lngNE;
  			prevLatSW = latSW;
  			prevLngSW = lngSW;
  		}
  		else {
  			if (latNE < prevLatNE) latNE = prevLatNE; else prevLatNE = latNE;
  			if (lngNE < prevLngNE) lngNE = prevLngNE; else prevLngNE = lngNE;
  			if (latSW > prevLatSW) latSW = prevLatSW; else prevLatSW = latSW;
  			if (lngSW > prevLngSW) lngSW = prevLngSW; else prevLngSW = lngSW;
  		}

		queryString+= "&latSW=" + latSW + "&lngSW=" + lngSW + "&latNE=" + latNE + "&lngNE=" + lngNE;

	}
	
	// display the loading message
    	setVisibility('loading','visible');

	request.open("GET", rootlib + "umarker.php?umarkers=S&" + queryString, true);

	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			var xmlDoc = request.responseXML;
			// obtain the array of markers and loop through it
			var markers = xmlDoc.documentElement.getElementsByTagName("marker");

			//hideall();			

			var totals = xmlDoc.documentElement.getElementsByTagName("totals");

			var rowcount = totals[0].getAttribute("rowcount");
			var alertmsg = totals[0].getAttribute("alert");

			// reset the results table
			document.getElementById("MarkerResults").innerHTML = "";

			if (alertmsg > "") {
				setVisibility('loading','hidden');
				alert(alertmsg);
				return;
			}	
			
			if (umarkers[0] != null) {
				map.removeOverlay(umarkers[0]);
				delete umarkers[0];
			}		
		
			htmlstr += "<table class=\"list\">";
			htmlstr += "<thead><tr class=\"hdr\">";
			htmlstr += "<th style=\"width:80px\" align=\"center\">Class</th>";
			htmlstr += "<th align=\"left\">Description</th>";
			htmlstr += "<th style=\"width:50px\" align=\"center\">Metres</th>";
			htmlstr += "<th style=\"width:50px\" align=\"center\">Feet</th>";
			htmlstr += "<th style=\"width:60px\" align=\"center\">GPS ID</th>";
			htmlstr += "<th style=\"width:150px\">Grid Reference</th>";
			htmlstr += "<th style=\"width:80px\">&nbsp;</th>";
			htmlstr += "</tr></thead>";
			htmlstr += "<tbody>";

			for (var i = 0; i < markers.length; i++) {
				// obtain the attributes of each marker
				var markerkey = parseInt(markers[i].getAttribute("markerkey"));
				var description = markers[i].getAttribute("description");
				var lat = parseFloat(markers[i].getAttribute("lat"));
				var lng = parseFloat(markers[i].getAttribute("lng"));
				var gridref12 = markers[i].getAttribute("gridref12");
				var gridref = markers[i].getAttribute("gridref");
				var symbol = markers[i].getAttribute("symbol");
				var metres = markers[i].getAttribute("metres");
				var feet = markers[i].getAttribute("feet");
				var gpsid = markers[i].getAttribute("gpsid");

				if (umarkers[markerkey]) {
					//if (umarkers[markerkey].symbol == symbol) {
					//	umarkers[markerkey].show();
					//}
					//else {
						delete umarkers[markerkey];
					//}
				}
				if (!umarkers[markerkey]) {
					// create the marker
					var marker = userMarker(markerkey, description, gridref, lat, lng, symbol, metres, gpsid);
				}

				//htmlstr += GXml.value(markers[i].getElementsByTagName("tablerow")[0]);
				//ugpsdata += GXml.value(markers[i].getElementsByTagName("gpsrow")[0]);

				htmlstr += utableRow(i, markerkey, symbol, description, metres, feet, gpsid, gridref, lat, lng);
				ugpsdata += gpsRow(gpsid, gridref, metres, description);

			}

        		htmlstr += '</tbody></table>';
			
			document.getElementById("MarkerResults").innerHTML = htmlstr;
			setDisplay('MarkerResults','inline');
			
			if (document.getElementById("GPSFile"))
				document.getElementById("GPSFile").innerHTML = gpsFile();

			// remove the loading message when the page has finished loading
      			setVisibility('loading','hidden');

        }
     }

     request.send(null);

}

function infoWindow(queryString, hillnumber, name, metres, feet, classification, rank, gridref, lat, lng, climbed, mydesc, mygridref, myfeature, countrylib) {

	var queryArray = parse_str(queryString);
	var mp = queryArray['mp'] ? queryArray['mp'] : "large";
	var qu = queryArray['qu'] ? queryArray['qu'] : "S";

	var infowindow = "";
	var mylog = "";
	var getamap = Getamap(gridref);
	var multimap = Multimap(lat, lng);

	if (climbed == "null") climbed = "";
	if (rank == "null") rank = "";
		
  	var climbedtext = climbed;
	var logtext = climbed;
	
	if (loggedIn == "Y") {
		if (climbed == "") logtext = "(add log)";
		mylog = "'" + hillnumber + "','" + addslashes(name) + "','" + climbed + "','" + mydesc + "','" + mygridref + "','" + myfeature + "','" + queryString + "'";
		climbedtext = "<a href=\"#\" title=\"Click to add log\" onClick=\"javascript:myLog(" + mylog + "); scrollTo('MyLog'); return false;\">" + logtext + "</a>";
	}
	
	if (mp == "small") {
		infowindow += "<b>" + stripslashes(name) + "</b>";
		infowindow += "<br />" + metres + "m / " + feet + "ft<br />(" + classification + ")";
		if (rank.substr(0, 4) != "") infowindow += "<br />(Rank: " + rank + ")";

		if (loggedIn == "Y" && climbed != "") {
			infowindow += "<br>Climbed: " + climbed;
		}
	}
	else {
		infowindow += "<b><a href=\"" + countrylib + "mountaindetails.php?qu=" + qu + "&rf=" + hillnumber + "\" target=\"_blank\" title=\"Click for more details\">" + stripslashes(name) + "</a></b>";

		infowindow += "<br />" + metres + "m / " + feet + "ft<br />(" + classification + ")";
		if (rank.substr(0, 4) != "") infowindow += "<br />(Rank: " + rank + ")";

		if (loggedIn == "Y") {
			climbedtext = "<a href=\"#\" title=\"Click to add log\" onClick=\"javascript:myLog(" + mylog + "); scrollTo('MyLog'); return false;\">" + logtext + "</a>";
		}
		if (climbedtext != "") infowindow += "<br>Climbed: " + climbedtext;

		infowindow += "<br /><a href=\"" + multimap + "\" target=\"_blank\" target=\"_blank\" title=\"View on Multimap\">Multimap</a>";
		if (gridref != "null") {
			if (getamap != "") infowindow += ", <a href=\"" + getamap + "\" target=\"_blank\" title=\"View on OS Get-a-map\">Get-a-map</a>";
		}

		infowindow += "<br /><a href=\"" + countrylib + "googlemaps.php?qu=" + qu + "&rf=" + hillnumber + "\" target=\"_blank\" title=\"View on Google Maps\">Google Maps</a>";
		infowindow += ", <a href=\"" + countrylib + "virtualearth.php?qu=" + qu + "&rf=" + hillnumber + "\" target=\"_blank\" title=\"View on Virtual Earth\">Virtual Earth</a>";
	}
	
	return infowindow;
}

function tableHdr(queryString) {

	var queryArray = parse_str(queryString);
	var qu = queryArray['qu'] ? queryArray['qu'] : "S";
	var rk = queryArray['rk'] ? queryArray['rk'] : "";
	var dr = queryArray['dr'] ? queryArray['dr'] : "";
	
	var hillRank = "Hill No.";
	if (rk > "" || qu == "8K" || qu == "N") hillRank = "Rank";
	var feetDrop = (dr > "") ? "Drop" : "Feet";
	var areaDesc = "";
	var areaHdr = "";
	var coordDesc = (country == "WD") ? "Lat/Lon" : "Grid Reference";

	if (qu.substr(0, 1) == "C") {
		areaDesc = (country == "WD") ? "Continent" : "County";
		areaHdr = "<a href=\"#\" onclick=\"searchSubmit('" + sortTable(queryString, 'ct') + "'); return false;\">" + areaDesc + "</a>";
	}
	else {
		areaHdr = "<a href=\"#\" onclick=\"searchSubmit('" + sortTable(queryString, 'gp') + "'); return false;\">Area</a>";
	}

	var headrow = "<table class=\"list\">";
	headrow += "<tr class=\"hdr\">";
	headrow += "<th style=\"width:60px\" align=\"center\">" + hillRank + "</th>";
	headrow += "<th align=\"center\"><a href=\"#\" onclick=\"searchSubmit('" + sortTable(queryString, 'nm') + "'); return false;\">Hill name</a></th>";
	headrow += "<th style=\"width:80px\" align=\"center\">Class</th>";
	headrow += "<th align=\"center\">" + areaHdr + "</th>";
	headrow += "<th style=\"width:50px\" align=\"center\"><a href=\"#\" onclick=\"searchSubmit('" + sortTable(queryString, 'ht') + "'); return false;\">Metres</a></th>";
	headrow += "<th style=\"width:50px\" align=\"center\">" + feetDrop + "</th>";
	headrow += "<th style=\"width:150px\">" + coordDesc + "</th>";
	headrow += "<th style=\"width:80px\"><a href=\"#\" onclick=\"searchSubmit('" + sortTable(queryString, 'dt') + "'); return false;\">Date of Ascent</a></th>";
	headrow += "</tr>";

	return headrow;
}

function sortTable(queryString, sortkey) {

	var queryArray = parse_str(queryString);

	if (!queryArray['st'])
		queryArray['st'] = 'nm';

	if (queryArray['st'] == sortkey)
		queryArray['st'] = sortkey + 'd';
	else
		queryArray['st'] = sortkey;

	queryString = http_build_query(queryArray, '', '&');

	return queryString;
}

function tableRow(i, queryString, hillnumber, name, metres, feet, drop, classification, rank, gridref, lat, lng, source, gpsid, symbol, area, climbed, mydesc, mygridref, myfeature, countrylib) {

	var queryArray = parse_str(queryString);
	var mp = queryArray['mp'] ? queryArray['mp'] : "large";
	var qu = queryArray['qu'] ? queryArray['qu'] : "S";
	var rk = queryArray['rk'] ? queryArray['rk'] : "";
	var dr = queryArray['dr'] ? queryArray['dr'] : "";

	var hillRank = hillnumber;
	if (rk > "" || qu == "8K" || qu == "N") hillRank = rank;
	var feetdrop = (dr > "") ? drop : feet;
	
	var climbedclass = "";
	var climbedtext = "";
	
	if (climbed == "null") {
		climbed = "";
	}
	else {
  		climbedclass = " class=\"climbed\"";
  		climbedtext = climbed;
  	}

	var logtext = climbedtext;
	var mylog = "";
	
	if (loggedIn == "Y" && mp != "small") {
		if (climbed == "") logtext = "(add log)";
		mylog = "'" + hillnumber + "','" + addslashes(name) + "','" + climbed + "','" + mydesc + "','" + mygridref + "','" + myfeature + "','" + queryString + "'";
		climbedtext = "<a href=\"#\" title=\"Click to add log\" onClick=\"javascript:myLog(" + mylog + "); scrollTo('MyLog'); return false;\">" + logtext + "</a>";
	}
	
	var getamap = Getamap(gridref);
	var multimap = Multimap(lat, lng);
	
	var tablerow = "";
	tablerow += "<tr class=\"d" + (i % 2) + "\"><td style=\"width:60px\">";
	if (mp == "none") {
		tablerow += "<img src=\"" + symbollib + symbol + ".png\" border=\"0\"> " + hillRank + "</td>";
	}
	else {
		tablerow += "<a href=\"#\" title=\"Click to locate on map\" onClick=\"javascript:myclick('" + hillnumber + "'); setScrollTop('120'); return false;\">";
		tablerow += "<img src=\"" + symbollib + symbol + ".png\" border=\"0\"></a> " + hillRank + "</td>";
	}

	tablerow += "<td" + climbedclass + "><a href=\"" + countrylib + "mountaindetails.php?qu=" + qu + "&rf=" + hillnumber + "\" target=\"_blank\" title=\"Click for more details\">" + stripslashes(name) + "</a></td>";

	tablerow += "<td style=\"width:80px\">" + classification + "</td>";
	tablerow += "<td>" + area + "</td>";
	tablerow += "<td style=\"width:50px\" align=\"center\">" + metres + "</td>";
	tablerow += "<td style=\"width:50px\" align=\"center\">" + feetdrop + "</td>";
	
	source = (source == "") ? "" : "(" + source + ")";
	
	if (gridref == "null") {
		lat1 = (lat < 0) ? "S" + lat * -1 : "N" + lat;
		lng1 = (lng < 0) ? "W" + lng * -1 : "E" + lng;
		tablerow += "<td style=\"width:150px\"><a href=\"" + multimap + "\" target=\"_blank\" title=\"Click for detailed map\">" + lat1 + " / " + lng1 + "</a></td>";
	}
	else
		tablerow += "<td style=\"width:150px\"><a href=\"" + multimap + "\" target=\"_blank\" title=\"Click for detailed map\">" + gridref + "</a> " + source + "</td>";

	tablerow += "<td" + climbedclass + " style=\"width:80px\">" + climbedtext + "</td></tr>";
	
	//var mytable=document.getElementById("resulttable");
	//var newrow=mytable.insertRow(-1); //add new row to end of table
	//var newcell=newrow.insertCell(0); //insert new cell to row
	//var newcell=newrow.insertCell(1); 
	//var newcell=newrow.insertCell(2); 
	//var newcell=newrow.insertCell(3); 
	//newcell.innerHTML="Row: "+mytable.rows.length;
	//var newcell=newrow.insertCell(4); 
	//var newcell=newrow.insertCell(5); 
	//var newcell=newrow.insertCell(6); 
	//var newcell=newrow.insertCell(7); 
	
	return tablerow;
}

function gpsRow(gpsid, gridref, metres, name) {

	var gpsrow = 'W ' + str_pad(gpsid, 6) + ' ';
	gpsrow += str_pad(gridref, 14) + ' C ';
	gpsrow += str_pad(format_number(metres,1), 9, " ", "STR_PAD_LEFT") + ' ';
	gpsrow += name;         //gpsname;
	gpsrow += '\n';
	
	return gpsrow;
}

function gpsFile() {

	//htmlstr = "<h3>GPS File for mountains/markers shown on map</h3>";
	htmlstr = "<form name=\"frmGPS\">";
	htmlstr += "<textarea name=\"gpsfile\" wrap=\"off\" rows=\"15\" cols=\"68\" style=\"width:600px\">";

	htmlstr += "I  GPSU 4.15" + "\n";
	if (country == "IR") {
		htmlstr += "M E         Ireland 1965 039  7.9681100E+02  1.1960020E-05 506 -122 611" + "\n";
		htmlstr += "U  IRISH GRID" + "\n";
	}
	else {
		htmlstr += "M E   Ord Srvy Grt Britn 075  5.7360400E+02  1.1960020E-05 375 -111 431" + "\n";
		htmlstr += "U  BRITISH GRID" + "\n";
	}
	htmlstr += "\n";
	htmlstr += "F ID---- Zn East  North T  Alt(m)   Comment" + "\n";

	htmlstr += ugpsdata;
	htmlstr += gpsdata;

	htmlstr += "</textarea>";
	htmlstr += "</form>";

	return htmlstr;
}

function utableRow(i, markerkey, symbol, description, metres, feet, gpsid, gridref, lat, lng) {

	var getamap = Getamap(gridref);
	var multimap = Multimap(lat, lng);
	
	var tablerow = "";
	tablerow += "<tr class=\"d" + (i % 2) + "\">";
	
	tablerow += "<td style=\"width:80px\" align=\"center\"><a href=\"#\" title=\"Click to locate on map\" onClick=\"javascript:uclick('" + markerkey + "'); setScrollTop('120'); return false;\">";
	tablerow += "<img src=\"" + symbollib + symbol + ".png\" border=\"0\"></a></td>";

	tablerow += "<td>" + stripslashes(description) + "</td>";

	tablerow += "<td style=\"width:50px\" align=\"center\">" + metres + "</td>";
	tablerow += "<td style=\"width:50px\" align=\"center\">" + feet + "</td>";
	tablerow += "<td style=\"width:60px\">" + gpsid + "</td>";
	
	//if (gridref == "null")
	//	tablerow += "<td style=\"width:150px\">&nbsp;</td>";
	//else
	//	tablerow += "<td style=\"width:150px\"><a href=\"" + getamap + "\" target=\"_blank\" title=\"Click for detailed map\">" + gridref + "</a></td>";
	tablerow += "<td style=\"width:150px\"><a href=\"" + multimap + "\" target=\"_blank\" title=\"Click for detailed map\">" + gridref + "</a></td>";

	tablerow += "<td style=\"width:80px\">&nbsp;</td></tr>";
	
	return tablerow;
}

function Getamap(inGridref) {
	if (country != "EW" && country != "SC") return "";

	var zone = inGridref.substr(0, 2);
	var easting5 = inGridref.substr(3, 5);
	var northing5 = inGridref.substr(9, 5);
	var easting6 = inGridref.substr(2, 6);
	var northing6 = inGridref.substr(8, 6);

	if (inGridref.length == 15) {
	   northing5 = inGridref.substr(10, 5);
	   northing6 = inGridref.substr(8, 7);
	}

	var getamap = "http://getamap.ordnancesurvey.co.uk/getamap/frames.htm?mapAction=gaz&gazName=g&gazString=" + zone + easting5 + northing5;

	return getamap;
}

function Multimap(inLat, inLng) {

	var dp = "os";
	var loc = "GB";
	if (country == "IR") {
		dp = "925,904";
		loc = "IE";
	}
	
	var multimap = "http://www.multimap.com/maps/#map=" + inLat + "," + inLng + "|15|4&dp=" + dp + "&loc=" + loc + ":" + inLat + ":" + inLng + ":15";
	//dp=925,904 for Northern Ireland,  925 for Eire, loc=IE
	
	return multimap;
}

// this function hides all markers
function hideall() {

	// hide the info window, otherwise it still stays open where the removed marker used to be
	map.closeInfoWindow(); //getInfoWindow().hide();
	bounds = new GLatLngBounds();

	for (i=0; i < gmarkers.length; i++) {
		if (gmarkers[i])
			gmarkers[i].hide();
	}
}

function searchurl() {

	if(window.location.search) {
		var u, n = window.location.search.substring(1).split(/&/), i = n.length;
  		while( i-- ) {
    		n[i] = n[i].split( /=/ );
    		u[n[i][0]] = n[i][1];
  		}
  		return u;
	}

	// e.g. var s=searchurl(); if( s['lang']==='en' ) { ... }
}

function addslashes(str) {
	//str=str.replace(/\'/g,'\\\'');
	//str=str.replace(/\"/g,'\\"');
	//str=str.replace(/\\/g,'\\\\');
	//str=str.replace(/\0/g,'\\0');
	str=str.replace(/'/g,"\\'");
	return str;
}

function stripslashes(str) {
	str=str.replace(/\\'/g,'\'');
	str=str.replace(/\\"/g,'"');
	str=str.replace(/\\\\/g,'\\');
	str=str.replace(/\\0/g,'\0');
	return str;
}
//]]>
