/**
* Created by Johannes Rudolph <johannes.rudolph@gmx.com> on 01.09.2016.
*/
/**
*
* @type {{fromLatLng: NAC.fromLatLng, _nac2Letter: NAC._nac2Letter}}
*/
var NAC = {
/**
*
* @param {{lat: number, lng: number}}
* @returns {string}
*/
fromLatLng: function(latlng) {
var lat = latlng.lat;
var lon = latlng.lng;
var x = [];
var y = [];
var xy = [];
xy.x = '';
xy.y = '';
if (lon >= -180 && lon <= 180) {
var xlon = (lon + 180) / 360;
x = this._calcValues(xlon);
} else {
x[0] = 0;
}
if (lat >= -90 && lat <= 90) {
var ylat = (lat + 90) / 180;
y = this._calcValues(ylat);
} else {
y[0] = 0;
}
for (var i = 0; i < x.length; i++) {
xy.x += this._nac2Letter(x[i]);
}
for (i = 0; i < y.length; i++) {
xy.y += this._nac2Letter(y[i]);
}
return xy;
},
/**
*
* @param z
* @returns {Array}
* @private
*/
_calcValues: function (z){
var ret = [];
ret[0] = parseInt(z * 30,10);
ret[1] = parseInt((z * 30 - ret[0]) * 30,10);
ret[2] = parseInt(((z * 30 - ret[0]) * 30 - ret[1]) * 30,10);
ret[3] = parseInt((((z * 30 - ret[0]) * 30 - ret[1]) * 30 - ret[2]) * 30,10);
ret[4] = parseInt(((((z * 30 - ret[0]) * 30 - ret[1]) * 30 - ret[2]) * 30 - ret[3]) * 30,10);
ret[5] = parseInt((((((z * 30 - ret[0]) * 30 - ret[1]) * 30 - ret[2]) * 30 - ret[3]) * 30 - ret[4]) * 30,10);
return ret;
},
/**
*
* @param number
* @returns {string}
* @private
*/
_nac2Letter: function(number){
var nac_letters = "0123456789BCDFGHJKLMNPQRSTVWXZ";
if(!isNaN(number) && number < 30)
return nac_letters.substr(number,1);
else return 0;
}
};