function infoTabs(args) {
  var content = '';
  var tab = args[0];
  var group = tab.substring(tab.indexOf('group-') + 6, tab.indexOf('-tab-')); 
  tab = tab.substr(tab.indexOf('tab-') + 4);
  $(".tabbed-features-children").hide();
  $(".tabbed-features-tab-content").hide();
  content = "/tabbed_content/" + tab;
  if ($("#tabbed-features-content-" + group).hasClass('has-subtabs')) {
    $("#tabbed-features-content-" + group).toggleClass('has-subtabs');
  }
  var tabContentEl = '#tabs-' + group + '-data-' + tab;
  if (!$(tabContentEl).children().length) {
    $(".tabbed-features-loading").show();
    $.post(content, function(tabData) {
      $(tabContentEl).append($(tabData));
      $(".tabbed-features-loading").hide();
      $(tabContentEl).fadeIn("slow");
      var newCSS = $("#tab-css-" + tab).children("span");
      for (var i = 0; i < newCSS.length; i++) {
        if (newCSS[i].innerHTML.length) {
          $("head").append($("<link rel='stylesheet' href='" + newCSS[i].innerHTML + "'/>").attr('id', 'tab-' + tab + '-style-' + i));
        }
      }
      var newJs = $("#tab-js-" + tab).children("span");
      for (var i = 0; i < newJs.length; i++) {
        if (newJs[i].innerHTML.length) {
          $.getScript(newJs[i].innerHTML);
        }
      }
    });
  }
  else {
    $(tabContentEl).fadeIn("slow");
  }
}

function infoSubTabs(args) {
  var tab = args[0];
  var preselect = false;
  var tabList = args[1];
  var subtab = "subtabs-" + tab.substr(tab.indexOf('tab-') + 4);
  var group = tab.substring(tab.indexOf('group-') + 6, tab.indexOf('-tab-')); 
  if (!$("#tabbed-features-content-" + group).hasClass('has-subtabs')) {
    $("#tabbed-features-content-" + group).toggleClass('has-subtabs');
  }
  $(".tabbed-features-children").hide();
  $(".tabbed-features-tab-content").hide();
  $("#" + subtab).show();
  for (var i = 0; i < tabList.tabs.length; i++) {
    if (tab == tabList.tabs[i].tabEl.attr("id")) {
      for (var j = 0; j < tabList.tabs[i].children.tabs.length; j++) {
        if (tabList.tabs[i].children.tabs[j].selected) {
          tabList.tabs[i].children.deselect();
          tabList.tabs[i].children.select(j);
          preselect = true;
          break;
        }  
      }
      if (!preselect) {
        tabList.tabs[i].children.select(0);
      }
      break;
    }
  } 
}

function loadNode(args) {
  var content = '';
  var tab = args[0];
  var supertab = args[1];
  tab = tab.substr(tab.indexOf('tab-') + 4);
  var group = supertab.substring(supertab.indexOf('group-') + 6, supertab.indexOf('-tab-'));
  supertab = supertab.substr(supertab.indexOf('tab-') + 4);
  content = "/tabbed_content_node/" + tab + "/" + supertab;
  var tabContentEl = '#tabs-' + group + '-data-' + supertab;
  var subTabContentEl = '#tabs-' + group + '-data-' + supertab + '-sub-' + tab;
  $(".tabbed-features-tab-content").hide();
  if (!$(subTabContentEl).length) {
    $(".tabbed-features-loading").show();
    $.post(content, function(tabData) {
      $(".tabbed-features-loading").hide();
      $(tabContentEl).show();
      $(tabContentEl).append($('<div class="tabbed-features-tab-content"/>').attr('id', subTabContentEl.substr(1)));
      $(subTabContentEl).append($(tabData.replace('\n', '')));
      $(subTabContentEl).fadeIn("slow");
      var newCSS = $("#tab-css-" + supertab).children("span");
      for (var i = 0; i < newCSS.length; i++) {
        if (!$("#tab-" + supertab + "-style-" + i).length) {
          if (newCSS[i].innerHTML.length) {
            $("head").append($("<link rel='stylesheet' href='" + newCSS[i].innerHTML + "'/>").attr('id', 'tab-' + supertab + '-style-' + i));
          }
        }
      }
      var newJs = $("#tab-js-" + supertab).children("span");
      for (var i = 0; i < newJs.length; i++) {
        if (newJs[i].innerHTML.length) {
          $.getScript(newJs[i].innerHTML);
        }
      }
    });
  }
  else {
    $(tabContentEl).show();
    $(subTabContentEl).fadeIn("slow");
  }
}

function initTabs() {
  if ($(".tabbed-features-tab").length) {
    var tabs = $(".tabbed-features-tab");
    var tabList = new tabGroup("tab-up", "child-tab-up");
    for (var i = 0; i < tabs.length; i++) {
      var subtabs = "#subtabs-" + tabs[i].id.substr(tabs[i].id.indexOf('tab-') + 4);
      if ($(subtabs).length > 0) {
        tabList.add($("#" + tabs[i].id), infoSubTabs, new Array());
        tabList.tabs[tabList.tabs.length - 1].setMethod(infoSubTabs, new Array(tabs[i].id, tabList));
        var subtab = $(subtabs + " > .view > .view-content > .tabbed-features-child-tab");
        for (var j = 0; j < subtab.length; j++) {
          tabList.tabs[tabList.tabs.length - 1].addChild($("#" + subtab[j].id), loadNode, new Array(subtab[j].id, tabs[i].id));
        }
      }
      else {
        tabList.add($("#" + tabs[i].id), infoTabs, new Array(tabs[i].id));
      }
    }
    tabList.select(0);
  }
}

if (Drupal.jsEnabled) {
  $(document).ready(initTabs);
}
