var ccCurTab="", ccCurSubTab="", ccCurMenu="";
var ccExpMenu = -1;
var ccMenuNum = 0;
var ccCommunity = "";
var ccContextId, ccContextType;
var ccCurTabURL="", ccCurSubTabURL="", ccCurMenuURL="";
var ccXMLNav = null, ccXMLIsland = false;

function ccPrintTabs() {
  var xml = document.getElementById('xml');
  if(xml != null) { ccXMLNav = xml.childNodes[0]; ccXMLIsland = true;}
  if(ccXMLIsland) {transformTabXML(ccXMLNav); }
  else {transformTabJSON();}
}

function ccPrintSubTabs() {
  if(ccXMLIsland) { transformSubTabXML(ccXMLNav); } else { transformSubTabJSON(); }
}
  
function ccPrintMenus() {
  if (typeof(ccNoMenu)!="undefined") {return;}
  if(ccXMLIsland) {
    transformMenuXML(ccXMLNav.getElementsByTagName('MENU')); 
  }  else { 
    transformMenuJSON();  // in NavMenu.js, ccMenuToggle.js 
  }
}

function ccPrintLink(ak, lb) {
  if(lb.indexOf("&lt;/") != -1) { lb = lb.replace(/&lt;/g, "<").replace(/&gt;/g, ">"); }
  return "<A HREF='" + ak + "'>" + lb + "</A>";
}

var ccBreadCrumbSep = "&nbsp;&gt;&nbsp;";
function ccPrintPath() {
  function ccInsertCommunityName() {
    function link(ak, lb) {
      return ccBreadCrumbSep + "<A class='ccBold' HREF='" + ak + "'>" + lb + "</A>";
    }
    switch (ccContextType) {
      case "23" :// class
        return link("q?pg=classes_welcome&tg=ClassWelcome&" + ccContextId, ccCommunity);
      case "27" :// department
        return link("q?pg=departments_welcome&tg=DepartmentWelcome&" + ccContextId, ccCommunity);
      case "5":// club
        return link("q?pg=clubs_welcome&tg=ClubWelcome&" + ccContextId, ccCommunity);
      case "45":// committee
        return link("q?pg=committees_welcome&tg=CommitteeWelcome&" + ccContextId, ccCommunity);
      case "51":// office
        return link("q?pg=offices_welcome&tg=OfficeWelcome&" + ccContextId, ccCommunity);
      case "85":// generic
        return link("q?pg=gCommunities_welcome&tg=GCommunityWelcome&" + ccContextId, ccCommunity);
      case "1":
        return link("q?pg=my_cruiser&tg=MyCruiser", ccCommunity);
    }
  }
  function correctTitle(path, heading) {
    document.title = heading + " @ " + path;
  }
  function setTitle(t) {
    var idx = t.lastIndexOf(">");
    if (idx==-1) {document.title = t;} 
    else {correctTitle( t.substring(0,idx), t.substring(idx + 1));}
  }
  
  if ( typeof(ccNoBreadCrumb) != "undefined") {return;}
  var navNode = document.getElementById("ccNav");
  if (navNode!=null) {
    // breadcrumb : tab > sub tab > [community  >] menu > menu option > [[personal app/fws +] application breadcrumb]
    var s = ccPrintLink(ccCurTabURL, ccCurTab); // tab
    if (ccCurSubTab!="") { // sub tab
      s += ccBreadCrumbSep + ccPrintLink(ccCurSubTabURL, ccCurSubTab);
    }
    if (ccCommunity != "") { // add community name 
      s += ccInsertCommunityName();
    }
    if (ccCurMenu!="") { // menu
      s += ccBreadCrumbSep + ccPrintLink(ccCurMenuURL, ccCurMenu);
    }
    var tgNavNode = document.getElementById("ccTgNav");
    if (tgNavNode!=null) { // application breadcrumb 
      s += ccBreadCrumbSep + tgNavNode.innerHTML;
    }
    navNode.innerHTML = s;
    // tg navigation info
    var infoNode = document.getElementById("ccTgNavInfo");
    if (infoNode!=null) {
      document.getElementById("ccNavInfo").innerHTML = infoNode.innerHTML;
    }
    
    var headingObj = document.getElementById("ccH");
    if (document.all) {
      if (headingObj) {correctTitle(navNode.innerText, headingObj.innerText);} 
      else {setTitle(navNode.innerText);}
    } else {
      if (headingObj) {correctTitle(navNode.textContent, headingObj.textContent);} 
      else {setTitle(navNode.textContent);}
    }
  }
  
}

function ccInsertTgBreadcrumbFrom(id) {
  try {
    var obj = document.getElementById(id);
    if (obj == null) { return; }
    ccInertTgBreadcrumb(obj.innerHTML);
  } catch (e) {}
}

function ccInertTgBreadcrumb(s) {
  var tgNav = document.getElementById("ccTgNav");
  if (tgNav==null) {
    tgNav = document.createElement("DIV");
    var tgArea = document.getElementById("ccTgArea"); 
    if (tgArea) { tgArea.appendChild(tgNav); }
    tgNav.id = "ccTgNav";
    tgNav.innerHTML = s;
  } else {
    tgNav.innerHTML = s + ccBreadCrumbSep + tgNav.innerHTML; // ccBreadCrumbSep is in ccNav.js
  } 
}

function transformTabXML(nav) {
  var objs = nav.childNodes;
  for(i=0; i< objs.length; i++) {
    if(objs[i].nodeName == 'TAB') { ccDrawTabs(objs); }
  }
}

function transformSubTabXML(nav) {
  var objs = nav.childNodes;
  if(objs[0].nodeName == 'TAB') {
    for(j=0; j< objs.length; j++) {
      if(objs[j].hasChildNodes()) { ccDrawSubTabs(objs[j].childNodes); }
    }
  }
}

function ccDrawTabs(tabs) { 
  for(i=0; i<tabs.length; i++) {
    if(tabs[i].nodeName == 'TAB') {
      var ak = tabs[i].getAttribute('anchor');
      var lb = getNavLabelAttr(tabs[i]);
      if(tabs[i].getAttribute('selected') == 'true') {
        ccCurTab = lb;
        ccCurTabURL = ak;
        ccPrintSelectedTab(ak, lb);
      } else { 
        ccPrintTab(ak, lb);
      }
    }
  }
}

function ccDrawSubTabs(tabs) {
  for(i=0; i<tabs.length; i++) {
    if(tabs[i].nodeName == 'TAB') {
      var ak = tabs[i].getAttribute('anchor');
      var lb = getNavLabelAttr(tabs[i]);
      if(tabs[i].getAttribute('selected') == 'true') {
        ccCurSubTab = lb;
        ccCurSubTabURL = ak;
        ccPrintSelectedSubTab(ak, lb);
      } else {
        ccPrintSubTab(ak, lb);
      }
    }
  }
}

function transformTabJSON() {
  var obj, lb;
  for(var j in navTabs) {
    obj = navTabs[j];
    lb = getNavLabelArr(obj)
    if(obj.on == 'true') {
      ccPrintSelectedTab(obj.lk, lb);
      ccCurTab = lb;
      ccCurTabURL = obj.lk;
    } else {
      ccPrintTab(obj.lk, lb);
    }
  }
}

function transformSubTabJSON() {
  var obj, lb;
  for(var j in navSTabs) {
    obj = navSTabs[j];
    lb = getNavLabelArr(obj);
    if(obj.on == 'true') {
      ccCurSubTab = lb;
      ccCurSubTabURL = obj.lk;
      ccPrintSelectedSubTab(obj.lk, lb);
    } else {
      ccPrintSubTab(obj.lk, lb);
    }
  }
}

function ccPrintSelectedSubTab(ak, lk) {
  if (typeof(ccSTabTagOn)=="undefined") {
    document.write('<TD class="ccBold">' + ccPrintLink(ak, lk) + '</TD>');
  } else {
    document.write(ccSTabTagOn + ccPrintLink(ak, lk) + ccSTabTagOnEnd);
  }
}

function ccPrintSubTab(ak, lb) {
  if (typeof(ccSTabTag)=="undefined") {
    document.write('<TD>' + ccPrintLink(ak, lb) + '</TD>');
  } else {
    document.write(ccSTabTag + ccPrintLink(ak, lb) + ccSTabTagEnd);
  }
}

function ccPrintSelectedTab(ak, lb) {
  if (typeof(ccTabTagOn)=="undefined") {
    document.write('<td CLASS="ccTabOn" NOWRAP>' + ccPrintLink(ak, lb) + '</td><td CLASS="ccTabOnR"></td>');
  } else {
    document.write(ccTabTagOn + ccPrintLink(ak, lb) + ccTabTagOnEnd); 
  }
}

function ccPrintTab(ak, lb) {
  if (typeof(ccTabTag)=="undefined") {
    document.write('<td CLASS="ccTab" NOWRAP>' + ccPrintLink(ak, lb) + '</td><td CLASS="ccTabR"></td>');
  } else {
    document.write(ccTabTag + ccPrintLink(ak, lb) + ccTabTagEnd); 
  }
}

function getNavLabelAttr(obj) {var lb = obj.getAttribute('lb'); if (lb!=null) {return lb;}}
function getNavLabelArr(obj) {var lb = obj['lb']; if (lb!=null) {return lb;}}