// JavaScript Document

	
	

	//GoogleMap
	function ShowGoogleMap(lat, lng, latcemetery, lngcemetery, strParishName, strCemeteryName) {		
		if (GBrowserIsCompatible()) {
		
			//Decalre var
			var map = new GMap2( $("googleMapSmall") );

			//Add control 
			map.addControl( new GSmallMapControl() );	
			map.setCenter( new GLatLng( 0, 0 ), 0 );
		}
		
		var baseIcon = new GIcon(G_DEFAULT_ICON);
        baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
        baseIcon.iconSize = new GSize(20, 34);
        baseIcon.shadowSize = new GSize(37, 34);
        baseIcon.iconAnchor = new GPoint(9, 34);
        baseIcon.infoWindowAnchor = new GPoint(9, 2);
		
		
		//Parish marker
        var letteredIcon = new GIcon(baseIcon);
        letteredIcon.image = "http://www.google.com/mapfiles/markerA.png";
		markerOptions = { icon:letteredIcon };
		
		var point = new GLatLng(lat, lng);
		var marker = new GMarker(point, markerOptions);
				
		GEvent.addListener(marker, "click", function() {
            marker.openInfoWindowHtml(strParishName);
        });
		map.addOverlay(marker);
		
		//Cemetery marker
		if ((latcemetery != 0) && (lngcemetery != 0)){
			
			var latlng2 = [
			    new GLatLng( lat, lng ),
			    new GLatLng( latcemetery, lngcemetery )
			];
		  
			var letteredIcon = new GIcon(baseIcon);
        	letteredIcon.image = "http://www.google.com/mapfiles/markerB.png";
        	
        	markerOptions = { icon:letteredIcon };
        
			var point = new GLatLng(latcemetery, lngcemetery);
			var marker1 = new GMarker(point, markerOptions);
			
			GEvent.addListener(marker1, "click", function() {
	            marker1.openInfoWindowHtml(strCemeteryName);
	        });
			map.addOverlay(marker1);
		} else {
			var latlng2 = [
		    	new GLatLng( lat, lng )
		  	];
		}
		     
		//Auto zoom
		var latlngbounds = new GLatLngBounds();
		for ( var i = 0; i < latlng2.length; i++ ) 
    		latlngbounds.extend( latlng2[ i ] );
    	if (latlng2.length > 1)
	    	map.setZoom(map.getBoundsZoomLevel(latlngbounds));
	    else map.setZoom(12);
	    map.setCenter(latlngbounds.getCenter());
	    
	    // Sets the default map type to hybrid
	    var givenMapTypes = map.getMapTypes();
	    map.setMapType(givenMapTypes[0]);
	    
	}
	
	//Open bigger google map
	function openLightWindows(lat, lng, latCemetery, lngCemetery, strParishName, strCemeteryName, key) {
			myLightWindow.activateWindow({
					href: "../../templates/show_googleMaps.php?lat="+lat+"&lng="+lng+"&latCemetery="+latCemetery+"&lngCemetery="+lngCemetery+"&strParishName="+strParishName+"&strCemeteryName="+strCemeteryName+"&googleAPIKey="+key, 
					title: 'Google Map', 
					width:800,
					height:500
			});
	}
	
	function loadDetail(buttonID){
		document.location.href = $(buttonID).href;
	}
	
	function LatLondistHaversine(lat1, lon1, lat2, lon2) {
	  var R = 6371; // earth's mean radius in km
	  var dLat = (lat2-lat1).toRad();
	  var dLon = (lon2-lon1).toRad();
	  lat1 = lat1.toRad();
	  lat2 = lat2.toRad();
	
	  var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
	          Math.cos(lat1) * Math.cos(lat2) * 
	          Math.sin(dLon/2) * Math.sin(dLon/2);
	  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
	  var d = R * c;
	  return d;
	}
	
	function parseDeg() {
	  if (!isNaN(this)) return Number(this);                 // signed decimal degrees without NSEW
	  
	  var degLL = this.replace(/^-/,'').replace(/[NSEW]/i,'');  // strip off any sign or compass dir'n
	  var dms = degLL.split(/[^0-9.,]+/);                     // split out separate d/m/s
	  for (var i in dms) if (dms[i]=='') dms.splice(i,1);    // remove empty elements (see note below)
	  switch (dms.length) {                                  // convert to decimal degrees...
	    case 3:                                              // interpret 3-part result as d/m/s
	      var deg = dms[0]/1 + dms[1]/60 + dms[2]/3600; break;
	    case 2:                                              // interpret 2-part result as d/m
	      var deg = dms[0]/1 + dms[1]/60; break;
	    case 1:                                              // decimal or non-separated dddmmss
	      if (/[NS]/i.test(this)) degLL = '0' + degLL;       // - normalise N/S to 3-digit degrees
	      var deg = dms[0].slice(0,3)/1 + dms[0].slice(3,5)/60 + dms[0].slice(5)/3600; break;
	    default: return NaN;
	  }
	  if (((/^-/.test(this)) || (/[WS]/i.test(this)))) deg = -deg; // take '-', west and south as -ve
	  return deg;
	}
	
	function ParseDMS(input) {
		var parts = input.split(/[^\d\w]+/);
		var lat = ConvertDMSToDD(parts[0], parts[1], parts[2], parts[3]);
		var lng = ConvertDMSToDD(parts[4], parts[5], parts[6], parts[7]);
	}
	function ConvertDMSToDD(days, minutes, seconds, direction) {
		var dd = days + minutes/60 + seconds/(60*60);
		if (direction == "S" || direction == "W") {
		   dd = dd * -1;
		} // Don't do anything for N or E
		return dd;
	}
	 

