var gsLatitude = '';
var gsLongitude = '';
var giDistance;
var goMap;
var goBounds;
var goMarker;
var gbZoomControl = 1;

function submitPageSearch( loForm, lsValue) { 
    
    try{
        if(loForm.search.value==lsValue) {
            loForm.search.value='';
        }
    } catch (e) { }
    
    //Process directory listings
    try{
        if(loForm.directory[loForm.directory.selectedIndex].value!='') { 
            loForm.action = loForm.directory[loForm.directory.selectedIndex].value;
            //loForm.directory.selectedIndex = 0;
        }
    }
    catch (e) { 
        try{
            if(loForm.directory.value!='') { 
                loForm.action = loForm.directory.value;
            }
        }
        catch (e) { }
    }
    
    //Process location ajax search
    try{
        if(loForm.searchlocation.value!='') { 
            getCordsForSearch(loForm.searchlocation.value, loForm); 
            return false;
        }
    } catch (e) { }
    
    try{
        if(loForm.search_type[loForm.search_type.selectedIndex].value=='location') { 
            getCordsForSearch(loForm.search.value, loForm); 
            return false;
        }
    }
    catch (e) { 
        if(loForm.search_type.value=='location') { 
            getCordsForSearch(loForm.search.value, loForm); 
            return false;
        }
    }
}


function getCordsForSearch(lsSearchString, loForm) {
    if (lsSearchString.length>1)
    {
        var localSearch = new GlocalSearch();
        localSearch.setSearchCompleteCallback(null, 
            function() {
		        if (localSearch.results[0])
	            {		
		            gsLatitude = localSearch.results[0].lat;
		            gsLongitude = localSearch.results[0].lng;
		            loForm.Latitude.value = gsLatitude;
	                loForm.Longitude.value = gsLongitude;
	            }
	            else
	            {
	                loForm.search.value = '';
	                loForm.Latitude.value = '';
	                loForm.Longitude.value = '';
	            }
	            
	            loForm.submit();
            });	
        localSearch.execute(lsSearchString + ', UK');
    } else {
        loForm.submit();
    }
}


function importCords(lsSearchString) {
    
    if (lsSearchString.length>1)
    {
        var localSearch = new GlocalSearch();
        localSearch.setSearchCompleteCallback(null, 
            function() {
		        if (localSearch.results[0])
	            {		
		            gsLatitude = localSearch.results[0].lat;
		            gsLongitude = localSearch.results[0].lng;
	            }
	            document.forms.AdminMapForm.Latitude.value = gsLatitude;
	            document.forms.AdminMapForm.Longitude.value = gsLongitude;
	            document.forms.AdminMapForm.submit();
            });	
        localSearch.execute(lsSearchString + ', UK');
    }
}


function setGmap( loMap) {
    var loLatLng
    var lbSetMarker;
    
    
    if (gsLatitude == '' || gsLongitude == '' )
    {
        gsLatitude= '53.5';
        gsLongitude = '-2';
        giDistance = 6;
        lbSetMarker = false;
    }
    else
        lbSetMarker = true;
    
    
    goMap = new GMap2(document.getElementById(loMap));
    goBounds = new GLatLngBounds();
    loLatLng = new GLatLng( gsLatitude, gsLongitude);
    
    //map.addControl(new GSmallMapControl());
    goMap.addControl(new GMenuMapTypeControl(true,false));
    if (gbZoomControl)
        goMap.addControl(new GLargeMapControl());
    goMap.setCenter(loLatLng, giDistance);
    
    
    
    if (lbSetMarker)
        repositionMap();
    
}

function getCords(lsSearchString, liZoom) {
    
    if (lsSearchString.length>1)
    {
        var localSearch = new GlocalSearch();
        localSearch.setSearchCompleteCallback(null, 
            function() {
		        if (localSearch.results[0])
	            {		
		            gsLatitude = localSearch.results[0].lat;
		            gsLongitude = localSearch.results[0].lng;
	            }
	            repositionMap( liZoom);
            });	
        localSearch.execute(lsSearchString + ', UK');
    }
    else
        alert('Please enter a town or postcode so location can be pinpointed.')
}
//getCords('tw2 6nl');


function addMapLocations( lsLocationsString) {
    var laLocationArray = lsLocationsString.split(',');
    for (var i=0; i < laLocationArray.length; i++)
        addMapLocation(laLocationArray[i]);
}

function addMapLocation( lsLocation) {
    if (lsLocation.length>1)
    {
        var localSearch = new GlocalSearch();
        localSearch.setSearchCompleteCallback(null, 
            function() {
		        if (localSearch.results[0])
	            {		
		            var loPointer = new GLatLng( localSearch.results[0].lat, localSearch.results[0].lng);
                    var loLabel = new GMarker(loPointer, null);
                    goBounds.extend(loPointer);
                    goMap.addOverlay(loLabel);
                    goMap.setCenter(goBounds.getCenter(), goMap.getBoundsZoomLevel(goBounds));
	            }
            });	
        localSearch.execute(lsLocation + ', UK');
    }
    else
        alert('Please enter a town or postcode so location can be pinpointed.')
}
    




function repositionMap( liDistance) { //zoomMap( liDistance) {
    var loLatLng;
    
    loLatLng = new GLatLng( gsLatitude, gsLongitude);
    goBounds.extend(loLatLng);
    if (liDistance)
        giDistance = parseInt(liDistance);
        
    goMap.setCenter(loLatLng, giDistance);
    
    if (!goMarker)
    {
        goMarker = new GMarker(loLatLng, {draggable: true});
        GEvent.addListener(goMarker, "dragend", function() {
            //alert(marker.getPoint())
            //alert(marker.getLatLng())
            //marker.openInfoWindowHtml("New Coords = " + marker.getLatLng());
            var lsCoords = goMarker.getLatLng() + '';
            lsCoords = lsCoords.replace(' ','')
            var laArray = lsCoords.split(',');
            gsLatitude = laArray[0].replace('(','');
            gsLongitude = laArray[1].replace(')','');
            setLatLng();
        });
        goMap.addOverlay(goMarker);
        
    }
    else 
    {
        goMarker.setLatLng(loLatLng); 
    }
    setLatLng();
    autoPopulatePostcodeRegionAreaTown(gsLatitude, gsLongitude);
}



function setLatLng() {
    document.forms.adminform.latitude.value = gsLatitude;
    document.forms.adminform.longitude.value = gsLongitude;
 
    setDivHTML('latlngdiv','Latitude = ' + gsLatitude + '<br />Longitude = ' + gsLongitude);
}


function setMarker( liMarkerID, liLatitude, liLongitude, liMarkerNo, lsDescription, liDistance) {
    
    eval("var content"+liMarkerID+" = '"+lsDescription+"';");
    eval("var point"+liMarkerID+" = new GLatLng( liLatitude, liLongitude);");
    eval("var label"+liMarkerID+" = new GMarker(point"+liMarkerID+", createIcon(liMarkerNo));");
    eval("GEvent.addListener(label"+liMarkerID+", \"click\", function() {label"+liMarkerID+".openInfoWindowHtml(content"+liMarkerID+");goMap.panTo(new GLatLng(liLatitude, liLongitude));});");
    eval("goBounds.extend(point"+liMarkerID+");");
    eval("goMap.addOverlay(label"+liMarkerID+");");
    if (liDistance)
        goMap.setCenter(goBounds.getCenter(), liDistance);
    else
        goMap.setCenter(goBounds.getCenter(), goMap.getBoundsZoomLevel(goBounds));
    //goMap.setCenter(goBounds.getCenter(), 9);
}

function setOpenMarker( liMarkerID, liLatitude, liLongitude, liMarkerNo, lsDescription, liDistance) {
    
    eval("var content"+liMarkerID+" = '"+lsDescription+"';");
    eval("var point"+liMarkerID+" = new GLatLng( liLatitude, liLongitude);");
    eval("var label"+liMarkerID+" = new GMarker(point"+liMarkerID+", createIcon(liMarkerNo));");
    eval("goBounds.extend(point"+liMarkerID+");");
    eval("goMap.addOverlay(label"+liMarkerID+");");
    if (liMarkerNo==1)
        eval("label"+liMarkerID+".openInfoWindowHtml(content"+liMarkerID+");");
    if (liDistance)
        goMap.setCenter(goBounds.getCenter(), liDistance);
    else
        goMap.setCenter(goBounds.getCenter(), goMap.getBoundsZoomLevel(goBounds));
    //goMap.setCenter(goBounds.getCenter(), 9);
}


function setOpenAdditionalMarkers( liMarkerID, lsLocationsString, lsDescription, liDistance) {
    var liMarkerNo = 2;
    var laLocationArray = lsLocationsString.split(',');
    for (var i=0; i < laLocationArray.length; i++) {
        setOpenAdditionalMarkers2(liMarkerID, laLocationArray[i], liMarkerNo, lsDescription, liDistance)
        liMarkerNo += 1;
    }
}

function setOpenAdditionalMarkers2(liMarkerID, lsLocation, liMarkerNo, lsDescription, liDistance) {
    if (lsLocation.length>1)
    {
        var localSearch = new GlocalSearch();
        localSearch.setSearchCompleteCallback(null, 
            function() {
	            if (localSearch.results[0])
	                setOpenMarker( liMarkerID, localSearch.results[0].lat, localSearch.results[0].lng, liMarkerNo, lsDescription, liDistance);
            });	
        localSearch.execute(lsLocation + ', UK');
    }
}





function createIcon( liIconNumber) {
    var icon = new GIcon(G_DEFAULT_ICON, "http://www.artonthemap.org.uk/2009/images/map-icons/"+liIconNumber+".png");
    icon.iconSize = new GSize(32,32);
    icon.shadowSize = new GSize(37,34);
    icon.shadow = "http://www.artonthemap.org.uk/2009/images/map-icons/shadow.png";
    icon.iconAnchor = new GPoint(21, 37);
    icon.infoShadowAnchor = new GPoint(25, 37);
    icon.infoWindowAnchor = new GPoint(16, 32);
    return icon
    }



/*
var map;
var localSearch = new GlocalSearch();
var mapSize = 12;
var icon = new GIcon();
icon.image = "http://www.google.com/mapfiles/marker.png";
icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
icon.iconSize = new GSize(20, 34);
icon.shadowSize = new GSize(37, 34);
icon.iconAnchor = new GPoint(10, 34);



function getCords(lsSearchString) {
    localSearch.setSearchCompleteCallback(null, 
		function() {
			
			if (localSearch.results[0])
			{		
				var resultLat = localSearch.results[0].lat;
				var resultLng = localSearch.results[0].lng;
				document.write (resultLat + ',' + resultLng);
			}else{
				alert("Postcode not found!");
			}
		});	
		
	localSearch.execute(lsSearchString + ", UK");
}



function usePointFromPostcode(postcode, callbackFunction) {
	
	localSearch.setSearchCompleteCallback(null, 
		function() {
			
			if (localSearch.results[0])
			{		
				var resultLat = localSearch.results[0].lat;
				var resultLng = localSearch.results[0].lng;
				var point = new GLatLng(resultLat,resultLng);
				callbackFunction(point);
			}else{
				alert("Postcode not found!");
			}
		});	
		
	localSearch.execute(postcode + ", UK");
}



function placeMarkerAtPoint(point)
{
	var marker = new GMarker(point,icon);
	map.addOverlay(marker);
	map.setCenter(point, mapSize);
}

function setCenterToPoint(point)
{
	map.setCenter(point, mapSize);
}

function showPointLatLng(point)
{
	alert("Latitude: " + point.lat() + "\nLongitude: " + point.lng());
}

function mapLoad() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		
		map.addControl(new GSmallMapControl());
		//map.addControl(new GMapTypeControl());
		//map.addControl(new GSmallZoomControl ());
		map.setCenter(new GLatLng(54.622978,-2.592773), 5, G_NORMAL_MAP);
	}
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function addUnLoadEvent(func) {
	var oldonunload = window.onunload;
	if (typeof window.onunload != 'function') {
	  window.onunload = func;
	} else {
	  window.onunload = function() {
	    oldonunload();
	    func();
	  }
	}
}

addLoadEvent(mapLoad);
addUnLoadEvent(GUnload);

*/