function stripSpaces(x) {

    while (x.substring(0,1) == ' ') x = x.substring(1);

    while (x.substring(x.length-1,x.length) == ' ') x = x.substring(0,x.length-1);

    return x

}



function validateNGR(ngr)

{
var NGRok=true;
var myNGR;
var validChar = '0123456789'; // characters allowed

myNGR=stripSpaces(ngr).toUpperCase();        // make upper case
if (myNGR.length % 2 > 0) {              // is length even
        NGRok=false;
        }
if (myNGR.length > 5) {

	if("H" > myNGR.charAt(0)) {              // leading digits bad
	        NGRok=false;
	        }
	if("Z" < myNGR.charAt(0)) {              // leading digits bad
	        NGRok=false;
	        }
	if("A" > myNGR.charAt(1)) {              // leading digits bad
	        NGRok=false;
	        }
	if("Z" < myNGR.charAt(1)) {              // leading digits bad
	        NGRok=false;
	        }

	for (var i = 2; i < myNGR.length; i++ ) {      // scan trailing digits as numbers
	    if (validChar.indexOf(myNGR.charAt(i)) < 0) {
	       NGRok=false;
	       }

	    } // end scanning loop
        }
        else {
        NGRok=false;
    }


return NGRok;
}

function sixNGR(ngr)            // assumes ngr is good to start with!
{
var myNGR=stripSpaces(ngr).toUpperCase();       // make upper case

var lett=myNGR.substr(0,2);       		// letter part
var num=myNGR.substr(2,myNGR.length);        	// number part

if (num.length > 6 ) {        			// too long
        myNGR=lett+num.substr(0,3)+num.substr(num.length/2,3);
        }

if (num.length == 4 ) {
        myNGR=lett+num.substr(0,2)+"5"+num.substr(2,2)+"5";
        }
if (num.length == 2 ) {
        myNGR=lett+num.substr(0,1)+"55"+num.substr(1,1)+"55";
        }

return myNGR;
}


function valngrfrm(frm) {   // validates ngr entry forms
var mNv=frm.ngr.value;
var validated=true;

if (!validateNGR(mNv)) {
	alert("Base NGR invalid");
        frm.ngr.focus();
        validated=false;
        }
        else
        {
        frm.ngr.value=sixNGR(mNv);
        }
mNv=frm.ngr1.value;
if (!validateNGR(mNv)) {
	alert("Destination NGR invalid");
        frm.ngr1.focus();
        validated=false;
        }
        else
        {
        frm.ngr1.value=sixNGR(mNv);
        }

if (isNaN(frm.bht.value)) {
	alert("base height invalid");
        frm.bht.focus();
        validated=false;
        }
        else if (frm.bht.value < 0) {
	alert("You cannot have the base aerial below ground!");
        frm.bht.focus();
        validated=false;

        }

if (isNaN(frm.daod.value)) {
	 if (isNaN(frm.dht.value)) {
		alert("distant station height informnation invalid");
	        frm.daod.focus();
	        validated=false;
	        }
	        else if (frm.dht.value < 0) {
		alert("You cannot have the distant aerial below ground!");
	        frm.dht.focus();
	        validated=false;
	        }
}
else if (frm.daod.value < 10) {
	 if (isNaN(frm.dht.value)) {
		alert("distant station height informnation invalid");
	        frm.daod.focus();
	        validated=false;
	        }
	        else if (frm.dht.value < 0) {
		alert("You cannot have the distant aerial below ground!");
	        frm.dht.focus();
	        validated=false;
	        }
        }
else {

frm.dht.value=0;

}



return validated;
}

