(function(back) {

  let settings = require('Storage').readJSON('speedalt2.json',1)||{};
  //settings.buzz = settings.buzz||1;
  
  function writeSettings() {
    require('Storage').write('speedalt2.json',settings);
  }
  
   function setUnits(m,u) {
    settings.spd = m;
    settings.spd_unit = u;
    writeSettings();
  }

  function setUnitsAlt(m,u) {
    settings.alt = m;
    settings.alt_unit = u;
    writeSettings();
  }

  function setUnitsDist(d,u) {
    settings.dist = d;
    settings.dist_unit = u;
    writeSettings();
  }

  function setColour(c) {
    settings.colour = c;
    writeSettings();
  }

  function setSfx(s) {
    settings.wptSfx = s;
    writeSettings();
  }

  
  const appMenu = {
    '': {'title': 'GPS Adv Sprt II'},
    '< Back': back,
    '< Load GPS Adv Sport': ()=>{load('speedalt2.app.js');},
    'Units' : function() { E.showMenu(unitsMenu); },
    'Colours' : function() { E.showMenu(colMenu); },
    'Kalman Filter' : function() { E.showMenu(kalMenu); },
    'Wpt File Suffix' : function() { E.showMenu(sfxMenu); },
    'Touch' : {
       value : settings.touch,
       onchange : () => { settings.touch = !settings.touch; writeSettings(); }
    }
  };
  
  const unitsMenu = {
    '': {'title': 'Units'},
    '< Back': function() { E.showMenu(appMenu); },
//    'default (spd)' : function() { setUnits(0,''); },
    'Kph (spd)' : function() { setUnits(1,'kph'); },
    'Knots (spd)' : function() { setUnits(1.852,'kts'); },
    'Mph (spd)' : function() { setUnits(1.60934,'mph'); },
    'm/s (spd)' : function() { setUnits(3.6,'m/s'); },
    'Km (dist)' : function() { setUnitsDist(1000,'km'); },
    'Miles (dist)' : function() { setUnitsDist(1609.344,'mi'); },
    'Nm (dist)' : function() { setUnitsDist(1852.001,'nm'); },
    'Meters (alt)' : function() { setUnitsAlt(1,'m'); },
    'Feet (alt)' : function() { setUnitsAlt(0.3048,'ft'); }
  };

  const colMenu = {
    '': {'title': 'Colours'},
    '< Back': function() { E.showMenu(appMenu); },
    'Default' : function() { setColour(0); },
    'Hi Contrast' : function() { setColour(1); },
    'Night' : function() { setColour(2); },
    'Inverted' : function() { setColour(3); }
  };
  
  const sfxMenu = {
    '': {'title': 'Wpt File Suffix'},
    '< Back': function() { E.showMenu(appMenu); },
    'Default' : function() { setSfx(''); },
    '1' : function() { setSfx('1'); },
    '2' : function() { setSfx('2'); },
    '3' : function() { setSfx('3'); }
  };
  
  const kalMenu = {
    '': {'title': 'Kalman Filter'},
    '< Back': function() { E.showMenu(appMenu); },
    'Speed' : {
    value : settings.spdFilt,
    onchange : () => { settings.spdFilt = !settings.spdFilt; writeSettings(); }
    },
    'Altitude' : {
    value : settings.altFilt,
    onchange : () => { settings.altFilt = !settings.altFilt; writeSettings(); }
    }
  };

  
  E.showMenu(appMenu);

});
