﻿
        function PopUp(url,size)
{
window.open(url,'Window',size);
}

        function PopUpWithScrollBarsResizeable(url,size)
{
window.open(url,'Window',size + ',scrollbars=yes,resizable=yes');
}

        function PopUpEditFragment(url)
{
window.open(url,'Window','scrollbars=yes,resizable=yes,width=750,height=700"');
}


function CloseWindow() {
window.close();

}

function PopUpWithInvisibility(url,size)
{
window.open(url,'Patch',size);
         	var str = '';
	var elem = document.getElementById('aspnetForm').elements;
	for(var i = 0; i < elem.length; i++)
		{
if (elem = document.getElementById("ctl00_MainContent_cmdSelectFragment"))
elem.style.visibility = "visible"; 
else elem.style.visibility = "hidden"; 
		} 
}

//Latitude and Longitude specific scripts start

/////This function only called from the addFragment.aspx page with
//       function body_onload()
//   {
//AddOnChangeEventHandlers(); 
//   }
function AddOnChangeEventHandlers() 
{
var ctrl = window.document.getElementById("ctl00_MainContent_txtLatDeg");
ctrl.onChange=function(){MakeGoogleAndCombinedFields()}; 
ctrl = window.document.getElementById("ctl00_MainContent_txtLatMin");
ctrl.onChange=function(){MakeGoogleAndCombinedFields()}; 
ctrl = window.document.getElementById("ctl00_MainContent_ddlLatNS");
ctrl.onChange=function(){MakeGoogleAndCombinedFields()}; 
ctrl = window.document.getElementById("ctl00_MainContent_txtLongDeg");
ctrl.onChange=function(){MakeGoogleAndCombinedFields()}; 
ctrl = window.document.getElementById("ctl00_MainContent_txtLongMin");
ctrl.onChange=function(){MakeGoogleAndCombinedFields()}; 
ctrl = window.document.getElementById("ctl00_MainContent_ddlLongEW");
ctrl.onChange=function(){MakeGoogleAndCombinedFields()}; 
}

function MakeGoogleAndCombinedFields()
{

var ctrlPosition = window.document.getElementById("ctl00_MainContent_lblLatLongCalc");
var ctrlGoogle = window.document.getElementById("ctl00_MainContent_hlStaticGoogleMap");
//first check that controls are completed correctly
if (CheckAllGoogleControlsCompleted()==true) 
{
    var lat_deg = window.document.getElementById("ctl00_MainContent_txtLatDeg").value;
    var lat_min = window.document.getElementById("ctl00_MainContent_txtLatMin").value;
    var lat_ordinate = window.document.getElementById("ctl00_MainContent_ddlLatNS").value;
    var lat_min_as_decimal = parseFloat(lat_min)/60;
    var latitude_dec = parseFloat(lat_deg) +  lat_min_as_decimal;
    var latitude_string = CombineLatitudeLongitudeParts(lat_deg, lat_min, lat_ordinate);
    var latitude_dec_trunc = latitude_dec.toFixed(5);
    
    var long_deg = window.document.getElementById("ctl00_MainContent_txtLongDeg").value;
    var long_min = window.document.getElementById("ctl00_MainContent_txtLongMin").value;
    var long_ordinate = window.document.getElementById("ctl00_MainContent_ddlLongEW").value;
    var long_min_as_decimal = parseFloat(long_min)/60;
//    var longitude_dec = parseFloat(long_deg) +  long_min_as_decimal;
    var longitude_dec = parseFloat(long_deg) +  long_min_as_decimal;
    var longitude_dec_trunc = longitude_dec.toFixed(5);
    
    var longitude_string = CombineLatitudeLongitudeParts(long_deg, long_min, long_ordinate);
    
    
    ctrlPosition.value = latitude_string + ", " + longitude_string;
    var map_url =  CreateGoogleMapsStaticURLNoMarkup(latitude_dec_trunc.toString(), longitude_dec_trunc.toString(), "Green", "F", 12, 580, 580);
    ctrlGoogle.value = "Click for map";
    ctrlGoogle.onclick=function(){PopUp(map_url,'width=600,height=600')}; 
  
}
else 
{
ctrlGoogle.value = "";
ctrlPosition.value = "";
}

return false;
}


////////////////////////////
function CreateGoogleMapsStaticURLNoMarkup(latitude, longitude, markerColour, markerLetter, magnification, height, width)
{

var workstring = "http://maps.google.com/maps/api/staticmap?markers=color:";
workstring = workstring + markerColour.toLowerCase() + "|label:" + markerLetter + "|" + StripAllLeadingAndTrainingZeroesFromString(latitude)
workstring = workstring +  "," + StripAllLeadingAndTrainingZeroesFromString(longitude) + "&zoom=" + magnification;
workstring = workstring + "&size=" + width + "x" + height  + "&sensor=false&maptype=hybrid";
return workstring;

}


////////////////////////////
function CreateGoogleMapsStaticURL(latitude, longitude, markerColour, markerLetter, magnification, height, width)
{

var workstring = "http://maps.google.com/maps/api/staticmap?markers=color:";
workstring = workstring + markerColour.toLowerCase() + "|label:" + markerLetter + "|" + StripAllLeadingAndTrainingZeroesFromString(latitude)
workstring = workstring +  "," + StripAllLeadingAndTrainingZeroesFromString(longitude) + "&zoom=" + magnification;
workstring = workstring + "&size=" + width + "x" + height  + "&sensor=false&maptype=hybrid";
return '<a href="' + workstring + '" target=' + '"_blank' + '" >Confirm on map</a>';

}



//////////////////////////////

function CheckAllGoogleControlsCompleted()
{
var allControlsCompletedOK = false;
var lat_deg = document.getElementById("ctl00_MainContent_txtLatDeg").value;
var lat_min = document.getElementById("ctl00_MainContent_txtLatMin").value;
var long_deg = document.getElementById("ctl00_MainContent_txtLongDeg").value;
var long_min = document.getElementById("ctl00_MainContent_txtLongMin").value;
var latlooksOK = false;
var longlooksOK = false;
var continueChecking = true;
if (lat_deg != "")
{
    if (isNaN(lat_deg))
    {
    alert("Please only insert numbers in the latitude and longitude boxes");
    document.getElementById("ctl00_MainContent_txtLatDeg").focus();
    continueChecking = false;
    
    }
    else
    {
        if (lat_deg > 90 || lat_deg <0 )
        {
        alert("Latitude must be between 0 and 90 degrees");
        document.getElementById("ctl00_MainContent_txtLatDeg").focus();
        continueChecking = false;

        }

    }           
}
if (continueChecking == false)
{
    return false;
}

if (long_deg !="")
{
    if (isNaN(long_deg))
    {
    alert("Please only insert numbers in the latitude and longitude boxes");
    document.getElementById("ctl00_MainContent_txtLongDeg").focus();
    continueChecking = false;
    }
    else
    {
    if (long_deg > 180 || long_deg < 0 )
        {
        alert("Longitude must be between 0 and 180 degrees");
        document.getElementById("ctl00_MainContent_txtLongDeg").focus();
        continueChecking = false;
        }
    }
}
if (continueChecking == false)
{
    return false;
}

if (long_min != "")
{
if (isNaN(long_min))
    {
        alert("Please only insert numbers in the latitude and longitude boxes");
        var ctrl = window.document.getElementById("ctl00_MainContent_txtLongMin").focus();
        continueChecking = false;
    }
else
    {
        var long_min_as_decimal = parseFloat(long_min)/60;
        if (long_min_as_decimal >=1) 
        {
            alert("Minutes must be less than 60");
            var ctrl = window.document.getElementById("ctl00_MainContent_txtLongMin").focus();
            continueChecking = false;
            
        }
        else
        {
            var longitude_dec = parseFloat(long_deg) +  long_min_as_decimal;

        }
    }
}
if (continueChecking == false)
{
    return false;
}

if (lat_min != "")
{
    if (isNaN(lat_min))
    {
        alert("Please only insert numbers in the latitude and longitude boxes");
        var ctrl = window.document.getElementById("ctl00_MainContent_txtLatMin").focus();
        continueChecking = false;
    }
    else
    {

        var lat_min_as_decimal = parseFloat(lat_min)/60;
        if (lat_min_as_decimal >=1) 
        {
            alert("Minutes must be less than 60");
            var ctrl = window.document.getElementById("ctl00_MainContent_txtLatMin").focus();
            continueChecking = false;
        }
        else
        {
            var latitude_dec = parseFloat(lat_deg) +  lat_min_as_decimal;
        }
    }
}
if (continueChecking == false)
{
    return false;
}


if (lat_deg != "" && lat_min != "" && long_deg != "" && long_min != "")
{
if (CheckLongitude(longitude_dec)==true && CheckLatitude(latitude_dec)==true)
{
//allControlsCompletedOK = true;
return true;
}
}
else
{
//allControlsCompletedOK = false;
return false;
}
//return allControlsCompletedOK;
}


////////////////////////////
function CombineLatitudeLongitudeParts(degree_part, minute_part, ordinate )
{
var workstring = StripAllLeadingAndTrainingZeroesFromString(degree_part)  + "°";
if(StripAllLeadingAndTrainingZeroesFromString(minute_part) == "")
{
workstring = workstring + "0";
}
else
{
workstring = workstring + StripAllLeadingAndTrainingZeroesFromString(minute_part); 
}
workstring = workstring + "'" + ordinate;
//alert("It looks like you may not have completed all the information required, or some values are out of range");
return workstring;
}


////////////////////////////////////////////
function CheckLongitude(testLong)
	{
	if (testLong=="" )
	{
	return false;
	}
	else
	{
	if (isNaN(testLong)) 
	{
	alert("Please only insert numbers in the longitude boxes");
	
	}
	else
	{
	var testLongFloat = parseFloat(testLong);
	    if (testLongFloat > 180 || testLongFloat < 0)
	    {
	    alert("Longitude must be between 0 and 180 degrees");
	    return false;
	    }
	    else
	    {
	    return true;
	    }
	}
	}
	}
	
		////////////////////////////////////////////
function CheckLatitude(testLat)
	{
	if (testLat=="" )
	{
	return false;
	}
	else
	{
	if (isNaN(testLat)) 
	{
	alert("Please only insert numbers in the Latitude boxes");
	
	}
	else
	{
	var testLatFloat = parseFloat(testLat);
	    if (testLatFloat > 90 || testLatFloat < 0)
	    {
	    alert("Latitude must be between 0 and 90 degrees");
	    return false;
	    }
	    else
	    {
	    return true;
	    }
	}
	}
	}
	
	

function StripAllLeadingAndTrainingZeroesFromNumericalString(inputStr)
{
if (isNaN(inputStr)) {
			alert("Please enter numbers only");
			return false;
		}
	var result = inputStr;
	while (result.substring(0,1) == "0") {
		result = result.substring(1,result.length)
	}
parseFloat(String(result));
	
	return result;
	
	function CheckAllGoogleControlsCompleted()
	{
	
	
	}

}



function StripAllLeadingAndTrainingZeroesFromString(inputStr)
{
	var result = inputStr;
	//leading zeros first
		while (result.substring(0,1) == "0")
    {
		result = result.substring(1,result.length);
	}
	//now trailing zeros
	//need to check there is a decimal point, otherwise a trailing zero is for scale eg 6 vs 60
		while (result.substring(result.length - 1,result.length) == "0" && result.indexOf(".") > -1) {
	result = result.substring(0,result.length - 1);
	}
	
	return result;
}


//Latitude and Longitude specific scripts end
	
	    
                
