

var Thumb = function(half) {
  this.half=half;
  if(half=="t") {
    this.position=$("#tm");
  } else if (half=="b") {
    this.half="b"; //bottom
    this.position=$("#bm");
  } else {
    alert("Thumb::half incorrectly defined.  Should be 't' or 'b'.");
  }

  this.el=$("#"+this.half+this.position.attr('id')+"thumb");
  this.lockCallback=function () {};

  this.reset = function() {  
   if(this.half=="t") {
      this.move( $("#tm") );
    } else if(this.half=="b") {
      this.move( $("#bm") );
    } else {
      alert("Thumb::reset: This clause should never happen.")
    }
  }
  
  this.move = function ( position ) {
    if(this.position.attr('id')==position.attr('id')) {
      // can't move to current position
      return;
    }
    this.el.hide();

    var opp_half=(this.half=='t')?'b':'t';
    var opp_el="#"+opp_half+position.attr('id')+"thumb";
    var locking=$(opp_el).is(":visible");

    if(locking) {
      $("#thumbs").prepend($(opp_el));
    }

    this.el=$("#"+this.half+position.attr('id')+"thumb");
    this.el.show();
    this.position=position;

    if(locking) {
      this.lockCallback();
    }
  }

  this.lock = function ( callback ) {
    this.lockCallback=callback;
  }

}

