function createRequest() {
    var myRequest = null;
    if (myRequest) { return myRequest; }
    else {
        req = false;
        if (window.XMLHttpRequest) {
            try { myRequest = new XMLHttpRequest(); return myRequest; }
            catch (e) { myRequest = false; return false; }
            return false;
        } else if (window.ActiveXObject) {
            try { myRequest = new ActiveXObject('Msxml2.XMLHTTP'); return myRequest; }
            catch (e) {
                try { myRequest = new ActiveXObject('Microsoft.XMLHTTP'); return myRequest; } catch (e) { myRequest = false; return false; }
            }
            return false;
        } else { myRequest = false; return false; }
    }

}



var ajaxRequest = createRequest();
var geocoder;
var map;

///////////////////////////////////////////////////////////////////////////////////////
// Laurie's Generic AJAX content requestor
// Gets content from file at URL
// Using variables VARS
// And Posts into ElementId TARGET
function getContent(url, vars, target) {
    targetElement = target;
    //alert(url + vars + " - " + target);
    showContent("status_loading");
    ajaxRequest.open("POST", url, true);
    ajaxRequest.onreadystatechange = refreshContent;
    ajaxRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    ajaxRequest.send(vars + "&submit=true");
}

function refreshContent() {
    if (ajaxRequest.readyState == 4) {
        if (ajaxRequest.status == 200) {
            setContent(targetElement, ajaxRequest.responseText);
            showContent(targetElement);

            hideContent("status_loading");
            ajaxRequest = createRequest();          
        }
    }
}

function showContent(target) {
    document.getElementById(target).style.visibility = 'visible';
}
function hideContent(target) {
    document.getElementById(target).style.visibility = 'hidden';
}
function clearContent(target) {
    document.getElementById(target).innerHTML = '';
}
function setContent(target, value) {
    document.getElementById(target).innerHTML = value;
}
function setHeight(target, height) {
    el = document.getElementById(target)
    //if (el.style.height == height)
    //    el.style.height = 'auto';
    //else if(el.style.height == 'auto')
        el.style.height = height;
}
/////////////////////////////////////////////////////////////////////////////////////////

function GetCounties() {   
	var sRegion = document.getElementById('sRegions');
	var RegionId =  sRegion[sRegion.selectedIndex].value;   
    var vars = '';
    var url = "/admin/ajListCounties/" + RegionId;
    getContent(url, vars, 'Counties');	
	clearContent('Counties');
	clearContent('Cemeteries');
}

function AddCounty(myForm){
	//var sRegionId = document.getElementById('sRegions');
	var RegionId =  myForm.RegionId.value; // sCounty[sCounty.selectedIndex].value;
	var CountyName = myForm.CountyName.value ; // sCounty[sCounty.selectedIndex].value;
	
	var vars = 'RegionId=' + RegionId + '&CountyName=' + CountyName ;
    var url = "/admin/ajAddCounty";   
	alert(url + " " + vars);
	
	clearContent('Counties');
	clearContent('Cemeteries');
	getContent(url, vars, 'Counties');
}

function GetCemeteries() {   
	var sCounty = document.getElementById('sCounties');
	var CountyId =  sCounty[sCounty.selectedIndex].value;
	var vars = '';
    var url = "/admin/ajListCemeteries/" + CountyId;   
	getContent(url, vars, 'Cemeteries');
}
function GetCemeteriesByRegion(regionId, target)
{
	
	//var CountyId =  sCounty[sCounty.selectedIndex].value;
	var vars = '';
    var url = "/grave/getCemeteriesByRegion/" + regionId;   	
	getContent(url, vars, target);
}
function AddCemetery(myForm){
	var CountyId = myForm.CountyId.value ; //ocument.getElementById('sCounties');
	var CemeteryName = myForm.CemeteryName.value ; //var countyName =  sCounty[sCounty.selectedIndex].value;
	var CemeteryImportName = myForm.CemeteryImportName.value  ; 
	var vars =  'CountyId=' + CountyId + '&CemeteryName=' + CemeteryName + '&CemeteryImportName=' + CemeteryImportName;
    var url = "/admin/ajAddCemetery";   
	alert(url + vars);
	getContent(url, vars, 'Cemeteries');
	clearContent('CemeteryEdit');
}
function SaveCemetery(myForm)
{
	
	var CemeteryId = myForm.CemeteryId.value;
	var CountyId = myForm.CountyId.value;
	var CemeteryName = myForm.CemeteryName.value;
	var CemeteryImportName = myForm.CemeteryImportName.value;
	var CemeteryAddress1 = myForm.CemeteryAddress1.value;
	var CemeteryAddress2 = myForm.CemeteryAddress2.value;
	var CemeteryTown = myForm.CemeteryTown.value;
	var CemeteryPostCode = myForm.CemeteryPostCode.value;
	var CemeteryLon = myForm.CemeteryLon.value;
	var CemeteryLat = myForm.CemeteryLat.value;
	
	var vars = 'CemeteryId=' + CemeteryId + '&CountyId=' + CountyId + '&CemeteryName=' + CemeteryName + '&CemeteryImportName=' + CemeteryImportName + '&CemeteryAddress1=' + CemeteryAddress1 + '&CemeteryAddress2=' + CemeteryAddress2 + '&CemeteryTown=' + CemeteryTown + '&CemeteryPostCode=' + CemeteryPostCode + '&CemeteryLon=' + CemeteryLon + '&CemeteryLat=' + CemeteryLat  ;
    var url = "/admin/ajUpdateCemetery";   
	getContent(url, vars, 'Cemeteries');
	clearContent('CemeteryEdit');
}
function EditCemetery(cid)
{
	var vars = '';
    var url = "/admin/ajEditCemetery/" + cid;   
	getContent(url, vars, 'CemeteryEdit');
	
	
}
/*
//http://code.google.com/apis/ajax/playground/?exp=maps#map_simple
function pppdrawmap()
{
  if (GBrowserIsCompatible()) {
    var map = new GMap2(document.getElementById("map_canvas"));
    map.setCenter(new GLatLng(37.4419, -122.1419), 13);
    var mapTypeControl = new GMapTypeControl();
    var topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10,10));
    var bottomRight = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,10));
    map.addControl(mapTypeControl, topRight);
    GEvent.addListener(map, "dblclick", function() {
      map.removeControl(mapTypeControl);
      map.addControl(new GMapTypeControl(), bottomRight);
    });
    map.addControl(new GSmallMapControl());
  }	
}*/


function drawmap() 
{
	var lon = document.getElementById("CemeteryLon").value;
 	var lat = document.getElementById("CemeteryLat").value;
	map = new GMap2(document.getElementById("map_canvas"));
 	map.setMapType(G_HYBRID_MAP);
	
	geocoder = new GClientGeocoder();
 	var mapTypeControl = new GMapTypeControl();
    var topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10,10));
    var bottomRight = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,10));
    
	map.addControl(mapTypeControl, topRight);
    GEvent.addListener(map, "dblclick", function() {
      map.removeControl(mapTypeControl);
      map.addControl(new GMapTypeControl(), bottomRight);});
	
	GEvent.addListener(map, "moveend", function() {
      var center = map.getCenter();
      document.getElementById("CemeteryLat").value = center.lat();
	  document.getElementById("CemeteryLon").value = center.lng(); });
	
    map.addControl(new GSmallMapControl());
	if (lon != null && lon !=0 && lat != null && lat != 0)
 	{	
 		map.setCenter(new GLatLng(lat,lon), 16);
		showMarker(lat,lon);
 	}
 	else
 	{	
 		map.setCenter(new GLatLng(56.72259433299854, -4.075927734375), 7);
		showLocation(); 
	}
}

// Create a base icon for all of our markers that specifies the
// shadow, icon dimensions, etc.
/*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);
*/

function showMarker(lat,lon)
{
	point = new GLatLng(lat,lon);
   	marker = new GMarker(point);
   	map.addOverlay(marker);	
}

function addAddressToMap(response) 
{
	map.clearOverlays();
 	if (!response || response.Status.code != 200) 
	{
   		alert("Sorry, we were unable to geocode that address");
 	} 
	else 
	{
	   place = response.Placemark[0];
	   point = new GLatLng(place.Point.coordinates[1],
						   place.Point.coordinates[0]);
	   marker = new GMarker(point);
	   map.addOverlay(marker);
	   marker.openInfoWindowHtml(place.address + '<br>' + '<b>Country code:</b> ' + place.AddressDetails.Country.CountryNameCode);
	   map.setCenter(new GLatLng(place.Point.coordinates[1],  place.Point.coordinates[0]), 16);
	}
}


function showLocation() 
{
	var address = document.getElementById('map_address').value;
	geocoder.getLocations(address, addAddressToMap);
}


function findLocation(address) {
 	document.forms[0].q.value = address;
	showLocation();
}


/*function adrawmap()
{
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = { zoom: 8, center: latlng };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}*/

function createMarker(point, index) {
  var marker = new GMarker(point);
  GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(index); });
  return marker;
}

/////////////////////////////////////////////////////////////////////////////
function drawCemeteryMap() {
	var lon = -4.482421875;
	var lat = 56.77680831656842;
	
	map = new GMap2(document.getElementById("map_canvas_home"));
	map.setMapType(G_NORMAL_MAP);
	geocoder = new GClientGeocoder();
	var mapTypeControl = new GMapTypeControl();
	var topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10,10));
	var bottomRight = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,10));
	//map.addControl(mapTypeControl, topRight);
	map.addControl(new GSmallMapControl());
	map.setCenter(new GLatLng(lat,lon), 6);
	for (var p in cemeteryPoints)
	{
		map.addOverlay(createMarker(cemeteryPoints[p],cemeteryInfo[p]))
	}
}

/////////////////////////////////////////////////////////////////////////////
function drawLocationMap() {
	var lon = -4.482421875;
	var lat = 56.77680831656842;
	
	map = new GMap2(document.getElementById("map_canvas_home"));
	map.setMapType(G_NORMAL_MAP);
	geocoder = new GClientGeocoder();
	var mapTypeControl = new GMapTypeControl();
	map.setCenter(new GLatLng(lat,lon), 5);
	for (var p in cemeteryPoints)
	{
		map.addOverlay(createMarker(cemeteryPoints[p],""))
	}
}
/////////////////////////////////////////////////////////////////////////////
function drawSatelitteMap() {
	
	map = new GMap2(document.getElementById("satelitte_map_canvas_home"));
	map.setMapType(G_SATELLITE_MAP);
	geocoder = new GClientGeocoder();
	var mapTypeControl = new GMapTypeControl();
	var topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(10,10));
	var bottomRight = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,10));
	map.addControl(mapTypeControl, topRight);
	map.addControl(new GSmallMapControl());
	map.setCenter(cemeteryPoints[0], 18);
	for (var p in cemeteryPoints)
	{
		map.addOverlay(createMarker(cemeteryPoints[p],cemeteryInfo[p]))
	}
}
