
var hmcTrail = new Array();

function hmcTrailEntry(argTrailTitle,argPageTitle,argBuilder) {
  this.trailTitle = argTrailTitle;
  this.pageTitle = argPageTitle;
  this.pageBuilder = argBuilder;
}

function hmcTrailAdd(argEntry) {
  hmcTrail.push(argEntry);
}

function hmcBuildTrail() {
  hmcTrailOutputTrailTabs(hmcTrail);
//  var buffer = '&nbsp;&nbsp;';
//  var x;
//  for( x=0; x < hmcTrail.length-1; x++ ) {
//    if ( x != 0 ) {
//      buffer += '&nbsp;=>&nbsp;';
//    }
//    buffer += '<A HREF=\"javascript:hmcClickedTrail(' + x + ');\">' + hmcTrail[x].trailTitle + '</A>';
//  }
//  x = hmcTrail.length - 1;
//  if ( x > 0 ) {
//    buffer += '&nbsp;=>&nbsp;';
//  }
//  buffer += hmcTrail[x].trailTitle;
//  hmcTrailElement.innerHTML = buffer;
}


function hmcTrailClicked(argTrailIndex) {
  var trailEntry = hmcTrail[argTrailIndex];
  var n = hmcTrail.length - (argTrailIndex+1);
  hmcTrail.splice(argTrailIndex+1, n);
  var funcObj = trailEntry.pageBuilder;
  funcObj.call( funcObj, trailEntry );
}

function hmcClearTrail() {
  // removes all entries except the first from the trail
  hmcTrail.splice(1, (hmcTrail.length-1));
}


function hmcTrailGetCurrent() {
  if ( hmcTrail.length > 0 ) {
    var x = hmcTrail.length - 1;
    return hmcTrail[x];
  }
  return null;
}

function hmcTrailOutputTrailTabsXX(argTrailList) {

  hmcTrailClearNodes(hmcTrailElement);  // clear current tabs
  if ( argTrailList.length > 1 ) {
    hmcTrailElement.style.display = 'block';
    var x;
    var divTab;
    var buf = '';
    for( x=0; x < argTrailList.length-1; x++ ) {
      var t = argTrailList[x];
      divTab = document.createElement('div');
      divTab.className = 'ReportTabNonSelect';
//      divTab.innerHTML = '<button onclick=\"hmcTrailClicked(' + x + ');\" class=\"ReportTabAction\">Back To<br>' + t.trailTitle + '</button>';
      var hlink = document.createElement('button');
      hlink.className = 'ReportTabAction';
      hlink.innerHTML = 'Back To<br>' + t.trailTitle;
      hlink.onclick = 'hmcTrailClicked(' + x + ');';
      divTab.appendChild(hlink);
//      divTab.innerHTML = '<a href=\"javascript:hmcTrailClicked(' + x + ');\" class=\"ReportTabAction\">Back To<br>' + t.trailTitle + '</a>';
      if ( x == 0 ) {
        divTab.style.borderLeft = 'none';
      }
      hmcTrailElement.appendChild(divTab);
    }
    divTab.style.borderRight = '1px ridge #000000';  // add right border to last tab
  }
  // add a filler tab
//  var padwidth = parseInt(hmcTrailElement.style.width) - (argTrailList.length * 100);
//  divTab = document.createElement('div');
//  divTab.className = 'ReportTabPad';
//  divTab.style.width = padwidth + 'px';
//  hmcTrailElement.appendChild(divTab);
}


function hmcTrailOutputTrailTabs(argTrailList) {

  hmcTrailClearNodes(hmcTrailElement);  // clear current tabs
  if ( argTrailList.length > 1 ) {
    hmcTrailElement.style.display = 'block';
    var x;
    var buf = '<TABLE BODER=0 CELLPADDING=0 CELLSPACING=0 WIDTH="100%"><TR>';
    for( x=0; x < argTrailList.length-1; x++ ) {
      var t = argTrailList[x];
      buf += '<TD CLASS=\"ReportTabNonSelect\"><A HREF=\"javascript:hmcTrailClicked(' + x + ');\" class=\"ReportTabAction\">Back To<br>' + t.trailTitle + '</A></TD>';
    }
    buf += '<TD CLASS="ReportEndTabNonSelect">&nbsp;</TD></TR></TABLE>';
    hmcTrailElement.innerHTML = buf;
  }
}

function hmcTrailClearNodes(argElement) {
  var x;
  var nodeList = new Array();
  for( x=0; x < argElement.childNodes.length; x++ ) {
    nodeList.push( argElement.childNodes[x] );
  }

  for( x=0; x < nodeList.length; x++ ) {
    argElement.removeChild(nodeList[x]);
  }
}

