Array.max = function( array ){
    return Math.max.apply( Math, array );
};

Array.min = function( array ){
    return Math.min.apply( Math, array );
};

var bandbIcon = new google.maps.MarkerImage('http://193.189.74.86/~tent/themes/Tenterden2010/mapIcons/bandb.png',
new google.maps.Size(50,30),
new google.maps.Point(0,0),
new google.maps.Point(25,30)
);

var bandbIconShade = new google.maps.MarkerImage('http://193.189.74.86/~tent/themes/Tenterden2010/mapIcons/bandb-shade.png',
new google.maps.Size(50,30),
new google.maps.Point(0,0),
new google.maps.Point(20,30)
);

var circleIcon = new google.maps.MarkerImage('http://193.189.74.86/~tent/themes/Tenterden2010/mapIcons/circle.png',
new google.maps.Size(10,10),
new google.maps.Point(0,0),
new google.maps.Point(5,5)
);

var infoIcon = new google.maps.MarkerImage('http://193.189.74.86/~tent/themes/Tenterden2010/mapIcons/info.png', new google.maps.Size(16,19),
new google.maps.Point(0,0),
new google.maps.Point(8,19)
);

//these 2 arrays are used to determine the range of lats and longs
//to reset the bounds of the map
var latitudes = [];
var longitudes = [];

var markerCount=0
var marksPlotted=0
var mapIcon=""
var mapIconShade=""

var MYMAP = {
  map: null,
  bounds: null
}

MYMAP.Single = function(selector, latLng, zoom, lati, longi, nam, add, linkID, icontouse) {
 	if (markerCount==0) {
 		MYMAP.init(selector, latLng, zoom);
 	}
 	MYMAP.singleMarker(lati, longi, nam, add, linkID, icontouse)
 	
}

MYMAP.init = function(selector, latLng, zoom) {
  var myOptions = {
    zoom:zoom,
    center: latLng,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}    
  }
  this.map = new google.maps.Map($(selector)[0], myOptions);
	this.bounds = new google.maps.LatLngBounds();
}

MYMAP.placeMarkers = function(filename) {
	$.get(filename, function(xml){
		$(xml).find("marker").each(function(){
			marksPlotted++;
			var name = $(this).find('name').text();
			var address = $(this).find('address').text();
			
			// create a new LatLng point for the marker
			var lat = $(this).find('lat').text();
			var lng = $(this).find('lng').text();
			var point = new google.maps.LatLng(parseFloat(lat),parseFloat(lng));
			
			// extend the bounds to include the new point
			MYMAP.bounds.extend(point);
			
			var marker = new google.maps.Marker({
				position: point,
				map: MYMAP.map,
				icon: bandbIcon,
				shadow: bandbIconShade
			});
			
			var infoWindow = new google.maps.InfoWindow();
			var html='<strong>'+name+'</strong.><br />'+address;
			google.maps.event.addListener(marker, 'click', function() {
				infoWindow.setContent(html);
				infoWindow.open(MYMAP.map, marker);
			});
			
		});
		if (marksPlotted>2) {
			MYMAP.map.fitBounds(MYMAP.bounds);
		}
	});
}

MYMAP.singleMarker = function(lati, longi, nam, add, linkID, icontouse) {

//eg MYMAP.singleMarker(51.073059, 0.580790, 'The Holt', 'New Pond Rod', '136', 'autoletter') 
	
		marksPlotted++
		if(icontouse=="bandb") {
			mapIcon=bandbIcon
			mapIconShade=bandbIconShade
		}
		else if(icontouse=="autoletter"){
			markerCount++;
			mapIcon="http://maps.google.com/mapfiles/marker" + String.fromCharCode(markerCount + 64) + ".png"
			mapIconShade=""
		}
		else if(icontouse=="tourist"){
			mapIcon=infoIcon;
		}
		
		else {
			mapIcon=circleIcon
			mapIconShade=""
		}
		
		// create a new LatLng point for the marker
		var lat = lati;
		var lng=longi;
		var address=add;
		var name=nam;
		var point = new google.maps.LatLng(parseFloat(lat),parseFloat(lng));
		
		//add the lat and lng to teh array for checking the bounds
		latitudes.push(lat);
		longitudes.push(lng);
		
		// extend the bounds to include the new point
		MYMAP.bounds.extend(point);
		
		var marker = new google.maps.Marker({
			position: point,
			map: MYMAP.map,
			icon: mapIcon,
			shadow: mapIconShade,
			title: name
		});
		
		/*var html='<div class="infoM"><a href="#tower">'+name+'</a></div>';
			var infoWindow = new google.maps.InfoWindow({
			content: html
		});
		*/
		
		//Sets up so when marker is clicked jumps to the anchor linkID
		google.maps.event.addListener(marker, 'click', function() {
			//infoWindow.open(MYMAP.map, marker);
			window.location.hash=linkID; 
		});
		
		if (marksPlotted>2) {
		//alert("latitudes range from "+latitudes.min()+" to "+latitudes.max());
		MYMAP.map.fitBounds(MYMAP.bounds);
		}
	};

