function LatLng(b,a){this.lat=b;this.lng=a;this.distance=LatLngDistance;this.toOSRef=LatLngToOSRef;this.toUTMRef=LatLngToUTMRef;this.WGS84ToOSGB36=WGS84ToOSGB36;this.OSGB36ToWGS84=OSGB36ToWGS84;this.toString=LatLngToString}function LatLngToString(){return"("+this.lat+", "+this.lng+")"}function OSRef(b,a){this.easting=b;this.northing=a;this.toLatLng=OSRefToLatLng;this.toString=OSRefToString;this.toSixFigureString=OSRefToSixFigureString}function OSRefToString(){return"("+this.easting+", "+this.northing+")"}function OSRefToSixFigureString(){var h=Math.floor(this.easting/100000);var d=Math.floor(this.northing/100000);var i="";if(d<5){if(h<5){i="S"}else{i="T"}}else{if(d<10){if(h<5){i="N"}else{i="O"}}else{i="H"}}var c="";var j=65+((4-(d%5))*5)+(h%5);var f=j;if(j>=73){j++}c=chr(j);var k=Math.floor((this.easting-(100000*h))/100);var g=Math.floor((this.northing-(100000*d))/100);var b=k;if(k<100){b="0"+b}if(k<10){b="0"+b}var a=g;if(g<100){a="0"+a}if(g<10){a="0"+a}return i+c+b+a}function UTMRef(b,a,d,c){this.easting=b;this.northing=a;this.latZone=d;this.lngZone=c;this.toLatLng=UTMRefToLatLng;this.toString=UTMRefToString}function UTMRefToString(){return this.lngZone+this.latZone+" "+this.easting+" "+this.northing}function RefEll(a,b){this.maj=a;this.min=b;this.ecc=((a*a)-(b*b))/(a*a)}function sinSquared(a){return Math.sin(a)*Math.sin(a)}function cosSquared(a){return Math.cos(a)*Math.cos(a)}function tanSquared(a){return Math.tan(a)*Math.tan(a)}function sec(a){return 1/Math.cos(a)}function deg2rad(a){return a*(Math.PI/180)}function rad2deg(a){return a*(180/Math.PI)}function chr(a){var b=a.toString(16);if(b.length==1){b="0"+b}b="%"+b;return unescape(b)}function ord(d){var b=d.charAt(0);var e;for(e=0;e<256;++e){var a=e.toString(16);if(a.length==1){a="0"+a}a="%"+a;a=unescape(a);if(a==b){break}}return e}function LatLngDistance(m){var n=6366.707;var e=deg2rad(this.lat);var h=deg2rad(m.lat);var j=deg2rad(this.lng);var c=deg2rad(m.lng);var b=n*Math.cos(j)*Math.sin(e);var l=n*Math.sin(j)*Math.sin(e);var g=n*Math.cos(e);var a=n*Math.cos(c)*Math.sin(h);var k=n*Math.sin(c)*Math.sin(h);var f=n*Math.cos(h);var i=Math.sqrt((b-a)*(b-a)+(l-k)*(l-k)+(g-f)*(g-f));return i}function OSGB36ToWGS84(){var G=new RefEll(6377563.396,6356256.909);var d=G.maj;var K=G.min;var B=G.ecc;var h=deg2rad(this.lat);var l=deg2rad(this.lng);var J=d/(Math.sqrt(1-B*sinSquared(h)));var r=0;var D=(J+r)*Math.cos(h)*Math.cos(l);var e=(J+r)*Math.cos(h)*Math.sin(l);var o=((1-B)*J+r)*Math.sin(h);var f=446.448;var I=-124.157;var F=542.06;var j=-0.0000204894;var m=deg2rad(0.00004172222);var k=deg2rad(0.00006861111);var u=deg2rad(0.00023391666);var n=f+(D*(1+j))+(-m*e)+(k*o);var c=I+(u*D)+(e*(1+j))+(-m*o);var A=F+(-k*D)+(m*e)+(o*(1+j));var g=new RefEll(6378137,6356752.3141);d=g.maj;K=g.min;B=g.ecc;var C=rad2deg(Math.atan(c/n));var t=Math.sqrt((n*n)+(c*c));var w=Math.atan(A/(t*(1-B)));for(var q=1;q<10;q++){J=d/(Math.sqrt(1-B*sinSquared(w)));phiN1=Math.atan((A+(B*J*Math.sin(w)))/t);w=phiN1}var E=rad2deg(w);this.lat=E;this.lng=C}function WGS84ToOSGB36(){var m=new RefEll(6378137,6356752.3141);var d=m.maj;var K=m.min;var B=m.ecc;var h=deg2rad(this.lat);var l=deg2rad(this.lng);var J=d/(Math.sqrt(1-B*sinSquared(h)));var r=0;var G=(J+r)*Math.cos(h)*Math.cos(l);var e=(J+r)*Math.cos(h)*Math.sin(l);var o=((1-B)*J+r)*Math.sin(h);var f=-446.448;var I=124.157;var F=-542.06;var D=0.0000204894;var g=deg2rad(-0.00004172222);var k=deg2rad(-0.00006861111);var u=deg2rad(-0.00023391666);var j=f+(G*(1+D))+(-g*e)+(k*o);var c=I+(u*G)+(e*(1+D))+(-g*o);var A=F+(-k*G)+(g*e)+(o*(1+D));var n=new RefEll(6377563.396,6356256.909);d=n.maj;K=n.min;B=n.ecc;var C=rad2deg(Math.atan(c/j));var t=Math.sqrt((j*j)+(c*c));var w=Math.atan(A/(t*(1-B)));for(var q=1;q<10;q++){J=d/(Math.sqrt(1-B*sinSquared(w)));phiN1=Math.atan((A+(B*J*Math.sin(w)))/t);w=phiN1}var E=rad2deg(w);this.lat=E;this.lng=C}function OSRefToLatLng(){var k=new RefEll(6377563.396,6356256.909);var C=0.9996012717;var w=-100000;var m=400000;var y=deg2rad(49);var c=deg2rad(-2);var A=k.maj;var t=k.min;var j=k.ecc;var f=0;var z=0;var D=this.easting;var g=this.northing;var r=(A-t)/(A+t);var h=0;var l=((g-w)/(A*C))+y;do{h=(t*C)*(((1+r+((5/4)*r*r)+((5/4)*r*r*r))*(l-y))-(((3*r)+(3*r*r)+((21/8)*r*r*r))*Math.sin(l-y)*Math.cos(l+y))+((((15/8)*r*r)+((15/8)*r*r*r))*Math.sin(2*(l-y))*Math.cos(2*(l+y)))-(((35/24)*r*r*r)*Math.sin(3*(l-y))*Math.cos(3*(l+y))));l+=(g-w-h)/(A*C)}while((g-w-h)>=0.001);var p=A*C*Math.pow(1-j*sinSquared(l),-0.5);var d=A*C*(1-j)*Math.pow(1-j*sinSquared(l),-1.5);var q=(p/d)-1;var u=Math.tan(l)/(2*d*p);var o=(Math.tan(l)/(24*d*Math.pow(p,3)))*(5+(3*tanSquared(l))+q-(9*tanSquared(l)*q));var s=(Math.tan(l)/(720*d*Math.pow(p,5)))*(61+(90*tanSquared(l))+(45*tanSquared(l)*tanSquared(l)));var e=sec(l)/p;var i=(sec(l)/(6*p*p*p))*((p/d)+(2*tanSquared(l)));var B=(sec(l)/(120*Math.pow(p,5)))*(5+(28*tanSquared(l))+(24*tanSquared(l)*tanSquared(l)));var x=(sec(l)/(5040*Math.pow(p,7)))*(61+(662*tanSquared(l))+(1320*tanSquared(l)*tanSquared(l))+(720*tanSquared(l)*tanSquared(l)*tanSquared(l)));f=l-(u*Math.pow(D-m,2))+(o*Math.pow(D-m,4))-(s*Math.pow(D-m,6));z=c+(e*(D-m))-(i*Math.pow(D-m,3))+(B*Math.pow(D-m,5))-(x*Math.pow(D-m,7));return new LatLng(rad2deg(f),rad2deg(z))}function LatLngToOSRef(){var m=new RefEll(6377563.396,6356256.909);var w=0.9996012717;var x=-100000;var o=400000;var s=deg2rad(49);var d=deg2rad(-2);var B=m.maj;var z=m.min;var k=m.ecc;var f=deg2rad(this.lat);var r=deg2rad(this.lng);var t=0;var i=0;var u=(B-z)/(B+z);var p=B*w*Math.pow(1-k*sinSquared(f),-0.5);var e=B*w*(1-k)*Math.pow(1-k*sinSquared(f),-1.5);var y=(p/e)-1;var j=(z*w)*(((1+u+((5/4)*u*u)+((5/4)*u*u*u))*(f-s))-(((3*u)+(3*u*u)+((21/8)*u*u*u))*Math.sin(f-s)*Math.cos(f+s))+((((15/8)*u*u)+((15/8)*u*u*u))*Math.sin(2*(f-s))*Math.cos(2*(f+s)))-(((35/24)*u*u*u)*Math.sin(3*(f-s))*Math.cos(3*(f+s))));var l=j+x;var h=(p/2)*Math.sin(f)*Math.cos(f);var C=(p/24)*Math.sin(f)*Math.pow(Math.cos(f),3)*(5-tanSquared(f)+(9*y));var q=(p/720)*Math.sin(f)*Math.pow(Math.cos(f),5)*(61-(58*tanSquared(f))+Math.pow(Math.tan(f),4));var c=p*Math.cos(f);var g=(p/6)*Math.pow(Math.cos(f),3)*((p/e)-tanSquared(f));var A=(p/120)*Math.pow(Math.cos(f),5)*(5-(18*tanSquared(f))+(Math.pow(Math.tan(f),4))+(14*y)-(58*tanSquared(f)*y));i=l+(h*Math.pow(r-d,2))+(C*Math.pow(r-d,4))+(q*Math.pow(r-d,6));t=o+(c*(r-d))+(g*Math.pow(r-d,3))+(A*Math.pow(r-d,5));return new OSRef(t,i)}function UTMRefToLatLng(){var h=new RefEll(6378137,6356752.314);var s=0.9996;var v=h.maj;var j=h.ecc;var k=j/(1-j);var g=(1-Math.sqrt(1-j))/(1+Math.sqrt(1-j));var o=this.easting-500000;var i=this.northing;var f=this.lngZone;var e=this.latZone;var b=(f-1)*6-180+3;if((ord(e)-ord("N"))<0){i-=10000000}var q=i/s;var w=q/(v*(1-j/4-3*j*j/64-5*Math.pow(j,3)/256));var B=w+(3*g/2-27*Math.pow(g,3)/32)*Math.sin(2*w)+(21*g*g/16-55*Math.pow(g,4)/32)*Math.sin(4*w)+(151*Math.pow(g,3)/96)*Math.sin(6*w);var p=v/Math.sqrt(1-j*Math.sin(B)*Math.sin(B));var l=Math.tan(B)*Math.tan(B);var C=k*Math.cos(B)*Math.cos(B);var z=v*(1-j)/Math.pow(1-j*Math.sin(B)*Math.sin(B),1.5);var D=o/(p*s);var u=(B-(p*Math.tan(B)/z)*(D*D/2-(5+(3*l)+(10*C)-(4*C*C)-(9*k))*Math.pow(D,4)/24+(61+(90*l)+(298*C)+(45*l*l)-(252*k)-(3*C*C))*Math.pow(D,6)/720))*(180/Math.PI);var A=b+((D-(1+2*l+C)*Math.pow(D,3)/6+(5-(2*C)+(28*l)-(3*C*C)+(8*k)+(24*l*l))*Math.pow(D,5)/120)/Math.cos(B))*(180/Math.PI);return new LatLng(u,A)}function LatLngToUTMRef(){var g=new RefEll(6378137,6356752.314);var v=0.9996;var u=g.maj;var i=g.ecc;var f=this.lng;var l=this.lat;var p=l*(Math.PI/180);var h=f*(Math.PI/180);var w=Math.floor((f+180)/6)+1;if(l>=56&&l<64&&f>=3&&f<12){w=32}if(l>=72&&l<84){if(f>=0&&f<9){w=31}else{if(f>=9&&f<21){w=33}else{if(f>=21&&f<33){w=35}else{if(f>=33&&f<42){w=37}}}}}var b=(w-1)*6-180+3;var q=b*(Math.PI/180);var r=getUTMLatitudeZoneLetter(l);ePrimeSquared=(i)/(1-i);var s=u/Math.sqrt(1-i*Math.sin(p)*Math.sin(p));var j=Math.tan(p)*Math.tan(p);var o=ePrimeSquared*Math.cos(p)*Math.cos(p);var m=Math.cos(p)*(h-q);var e=u*((1-i/4-3*i*i/64-5*i*i*i/256)*p-(3*i/8+3*i*i/32+45*i*i*i/1024)*Math.sin(2*p)+(15*i*i/256+45*i*i*i/1024)*Math.sin(4*p)-(35*i*i*i/3072)*Math.sin(6*p));var k=(v*s*(m+(1-j+o)*Math.pow(m,3)/6+(5-18*j+j*j+72*o-58*ePrimeSquared)*Math.pow(m,5)/120)+500000);var d=(v*(e+s*Math.tan(p)*(m*m/2+(5-j+(9*o)+(4*o*o))*Math.pow(m,4)/24+(61-(58*j)+(j*j)+(600*o)-(330*ePrimeSquared))*Math.pow(m,6)/720)));if(l<0){d+=10000000}return new UTMRef(k,d,r,w)}function getOSRefFromSixFigureReference(a){var h=a.substring(0,1);var g=a.substring(1,2);var f=parseInt(a.substring(2,5),10)*100;var b=parseInt(a.substring(5,8),10)*100;if(h=="H"){b+=1000000}else{if(h=="N"){b+=500000}else{if(h=="O"){b+=500000;f+=500000}else{if(h=="T"){f+=500000}}}}var e=ord(g);if(e>73){e--}var d=((e-65)%5)*100000;var c=(4-Math.floor((e-65)/5))*100000;return new OSRef(f+d,b+c)}function getUTMLatitudeZoneLetter(a){if((84>=a)&&(a>=72)){return"X"}else{if((72>a)&&(a>=64)){return"W"}else{if((64>a)&&(a>=56)){return"V"}else{if((56>a)&&(a>=48)){return"U"}else{if((48>a)&&(a>=40)){return"T"}else{if((40>a)&&(a>=32)){return"S"}else{if((32>a)&&(a>=24)){return"R"}else{if((24>a)&&(a>=16)){return"Q"}else{if((16>a)&&(a>=8)){return"P"}else{if((8>a)&&(a>=0)){return"N"}else{if((0>a)&&(a>=-8)){return"M"}else{if((-8>a)&&(a>=-16)){return"L"}else{if((-16>a)&&(a>=-24)){return"K"}else{if((-24>a)&&(a>=-32)){return"J"}else{if((-32>a)&&(a>=-40)){return"H"}else{if((-40>a)&&(a>=-48)){return"G"}else{if((-48>a)&&(a>=-56)){return"F"}else{if((-56>a)&&(a>=-64)){return"E"}else{if((-64>a)&&(a>=-72)){return"D"}else{if((-72>a)&&(a>=-80)){return"C"}else{return"Z"}}}}}}}}}}}}}}}}}}}}};
