setter = function(dest, src) {
  dest.empty().append(src.html());
};

animator = function(elem, f) {
  elem.fadeOut("normal", function() {
    f();
    elem.fadeIn("slow");
  });
};

clear_selected_tab = function(cmp) {
  $("a")
    .filter(".tab_selected")
      .each( function() {
        var tmp = $(this).attr("href");
        if (tmp == cmp) {
          $(this).removeClass("tab_selected");
          $(this).parent("li").removeClass("act");
        }
      })
    .end();
};

f_change_tab = function(tab) {
  var cmp = tab.attr("href");
  var id = tab.attr("id");
  var src = $("#" + id + "_content");
  var dest = $("#" + cmp + "_tabs_tab_content");

  return function(animate) {
    clear_selected_tab(cmp);
    if (animate) {
      animator(dest, function() {
        setter(dest, src);
      });
    } else {
      setter(dest, src);
    }
    tab.addClass("tab_selected");
    var parent = tab.parent("li");
    parent.addClass("act");
  };
};

mark_last_tab = function() {
  var lst = $(".inner ul.tabs > li:last");
  lst.each( function() {
    $(this).addClass("last");
  });
};

$(document).ready( function () {
  $("a")
    .filter(".tab_default")
      .each( function() {
        f_change_tab($(this))(false);
      })
    .end()
    .filter(".tabs_labels_label")
      .click( function(event) {
        var tab = $(this);
        if (!tab.hasClass("tab_selected")) {
          f_change_tab(tab)(false);
        }
        return false;
      })
    .end();
  mark_last_tab();
});