var KX165 = {
  baseNode : "/instrumentation/",
  use : "selected-mhz",
  standby : "standby-mhz",

  swap : function(what, idx) {
    var base = this.makeNodeName(idx, what);
    fgCommand.propertySwap(base + this.use, base + this.standby);
  },

  set : function(what, which, idx, val) {
    fgCommand.propertyAssign(this.makeNodeName(idx, what, which), val);
  },

  bind : function(idx, div) {

    // click handler for swap buttons
    $(div).find("#com-swap").click(function() {
      KX165.swap("comm", idx);
    });
    $(div).find("#nav-swap").click(function() {
      KX165.swap("nav", idx);
    });

    // change handler for frequency input fields
    $(div).find("#com-use").change(function(evt) {
      KX165.set("comm", KX165.use, idx, evt.target.value);
    });

    $(div).find("#com-standby").change(function(evt) {
      KX165.set("comm", KX165.standby, idx, evt.target.value);
    });

    $(div).find("#nav-use").change(function(evt) {
      KX165.set("nav", KX165.use, idx, evt.target.value);
    });

    $(div).find("#nav-standby").change(function(evt) {
      KX165.set("nav", KX165.standby, idx, evt.target.value);
    });

    // listen for changed properties
    SetListener( KX165.makeNodeName( idx, "comm", KX165.use ) + "-fmt", function(n) {
      $(div).find("#com-use").val( n.value );
    });
    SetListener( KX165.makeNodeName( idx, "comm", KX165.standby ) + "-fmt", function(n) {
      $(div).find("#com-standby").val( n.value );
    });
    SetListener( KX165.makeNodeName( idx, "nav", KX165.use ) + "-fmt", function(n) {
      $(div).find("#nav-use").val( n.value );
    });
    SetListener( KX165.makeNodeName( idx, "nav", KX165.standby ) + "-fmt", function(n) {
      $(div).find("#nav-standby").val( n.value );
    });
  },

  makeNodeName : function(idx, section, leaf) {
    // build /instrumentation/comm[n]/frequencies/selected-mhz
    var reply = this.baseNode + section;
    if (idx > 0)
      reply += "[" + idx + "]";
    reply += "/frequencies/";
    if( typeof(leaf) != 'undefined' )
      reply += leaf;
    return reply;
  }
};