var Nav1Page = 
{
    a:2,
  
  
    new: func()
    {
      m = {parents: [Nav1Page, KLN94.Page.new(KLN94.PAGE_NAV, 0)]};
      return m;
    },
    
    hasActiveIdent: func { 1 },
    showsCDI: func { 1 },
    
    display: func(gps)
    {
      if (gps.isDirectToActive()) {
        
      } else {
        # leg mode
        gps.setLine(0, sprintf('%6s->%6s', 
          gps.props.previousIdent.getStringValue(), 
          gps.props.activeIdent.getStringValue())
        );
      }
      
      
      gps.setLine(3, '   VNV  Off');
      
      var toFrom = gps.isTo() ? 'To' : 'Fr';
      var eteToWp1 = gps.formatDuration(gps.props.timeToWaypoint.getIntValue());
      gps.setLine(4, sprintf('%03d*%s   ', bearingToWp1, toFrom) ~ eteToWp1);
    },
    
    refresh: func(gps)
    {
    
    }
};

var Nav2Page = 
{
    new: func()
    {
      m = {parents: [Nav2Page, KLN94.Page.new(KLN94.PAGE_NAV, 1)]};
      return m;
    },
    
    display: func(gps)
    {
      # select refnavaid!
      
      gps.setLine(0, ' PRESENT POSN'),
      gps.setLine(1, '    Ref:%s', gps.refNavaid.id);
      
      gps.setLine(3, '  ' + gps.formatLatitude(gps.props.indicatedLat.getDoubleValue()));
      gps.setLine(4, '  ' + gps.formatLongitude(gps.props.indicatedLon.getDoubleValue()));
    }
};

var Nav3Page = 
{
    new: func()
    {
      m = {parents: [Nav3Page, KLN94.Page.new(KLN94.PAGE_NAV, 2)]};
      return m;
    },
};

var nav1 = Nav1Page.new();
gps.addPage(nav1);


gps.addPage(Nav2Page.new());
gps.addPage(Nav3Page.new());