GitDocs = {

// Links all breadcrumb options in the explored path
linkBreadcrumbs : function() {
  var fullPath = $('span.path').text().replace(/\/+/g, '/').replace(/\/$/, '');
  if (fullPath.length === 0) { return; }
  var docIdx = window.location.pathname.match(/\/(\d+)/);
  if (!docIdx) { return false; }
  var paths = fullPath.split("/");
  $(paths).each(function(idx, subpath) {
    var relPath = paths.slice(0, idx+1).join("/");
    var link = "<a href='" + relPath + "'>" + subpath + "/</a>";
    fullPath = fullPath.replace(subpath + "/", link);
  });
  $('span.path').html(fullPath);
},
// fills in directory meta author and modified for every file
fillDirMeta : function(){
  $('table#fileListing tbody tr').each(function(i, e) {
    var file = $(e).find('a').attr('href');
    var fileListingBody = $('table#fileListing tbody');
    $.getJSON(file + "?mode=meta", function(data) {
      $(e).addClass('loaded').find('td.author').html(data.author);
      $(e).find('td.modified').html(RelativeDate.time_ago_in_words(data.modified));
      $(e).find('td.size').html(Utils.humanizeBytes(data.size)).data("val", data.size);
      if ($(fileListingBody).find('tr').length == $(fileListingBody).find('tr.loaded').length) {
        GitDocs.pageLoaded(); // Fire on completion
      }
    });
  });
},
// Fire when the page is finished loading
pageLoaded : function() {
  // Enable table sorter
  var extractor = function(e) { return $(e).data('val') || $(e).text(); };
  $("table#fileListing").tablesorter({ textExtraction : extractor, sortList: [[0,0]] });
},
// Displays a closeable alert within the content pane
// Gitdocs.showAlert('This is the message', 'success')
showAlert : function(body, result) {
  if (result === null) { result = 'info'; }
  $('.content div.alert-message').remove();
  var el = $('.content').prepend(
    '<div class="alert-message ' + result + '">'
    + '<a class="close" href="#">×</a>'
    + body
    + '</div>'
  );
  $('div.alert-message').alert();
},
// converts iso8601 dates tagged with .reldate to relative
convertRelativeTimes : function() {
  $('.reldate').each(function(ind, el) {
    if ($(el).data("iso")) { return; }
    var iso = $(el).text();
    $(el).data("iso", iso);
    $(el).text(RelativeDate.time_ago_in_words(iso));
  });
},
activateTabs : function() {
  $('ul.tabs li a').each(function() {
    var href = $(this).attr('href');
    if ((href === location.pathname && location.search === '') || href === location.search) {
      $(this).parent().addClass('active');
    }
  });
}

};

$(document).ready(function() {

GitDocs.linkBreadcrumbs();
GitDocs.fillDirMeta();
GitDocs.convertRelativeTimes();
GitDocs.activateTabs();
StringFormatter.autoLink();

});

// Link method redirection $('a').live('click', function(e) {

e.preventDefault();
var link = $(this);
var href = link.attr('href'),
  method = link.data('method'),
  target = link.attr('target'),
  form = $('<form method="post" action="' + href + '"></form>'),
  metadata_input = '<input name="_method" value="' + method + '" type="hidden" />';
if (target) { form.attr('target', target); }
form.hide().append(metadata_input).appendTo('body');
form.submit();

});

// Confirm form submission when specified by data attribute. $('form').live('submit', function(e) {

return confirm($(this).attr('data-confirm-submit'));

});