/*requires add-feed-button.js*/

function githubActivity() {
  if ($("#github").length != 0) {

    var username = "lachlanhardy";
    var url = "";

    $.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20atom%20where%20url%3D%22http%3A%2F%2Fgithub.com%2F" + username + ".atom%22&format=json&callback=?",
    function(feed){

     var item = feed.query.results.entry; 
     $(item).each(function(i){
       var v = item[i].id;
       var idValue = v.match(/([^\/]*):([^\/]*)\/([^\/]*)$/);
       var eventType = idValue[2];

       // only for CommitEvents right now - need to bust out other events as options
       switch(eventType) {
         case 'CommitEvent':
           if (url == "") {
             url = item[i].link.href;
             titleText = " committed to ";
             return url;
             return titleText;
           }
           break;
         case 'FollowEvent':
           //
           break;
         case 'GistEvent':
           //
           break;
         case 'WikiEvent':
           //
           break;
       }
     });

     // grabbing details from URL
     var v = url.match(/http:\/\/github.com\/([^\/]*)\/([^\/]*)\/commit\/([^\/]*)$/);
     var user = v[1];
     var repo = v[2];
     var id = v[3];
     var repoName = user + "/" + repo;

     $.getJSON("http://github.com/api/v1/json/" + repoName + "/commit/" + id + "?callback=?",
       function(data){

         // creating initial elements
         var dl = $(document.createElement("dl"));
         var dt = $(document.createElement("dt"));
         var dtStrong = $(document.createElement("strong"));

         // linking username with REL microformat
         var dtUser = $(document.createElement("a"));
         dtUser.attr("href", "http://github.com/" + username).attr("rel", "me").text(username);

         // Adding username and eventText to dtStrong
         dtStrong.append(dtUser).append(titleText);

         // Linking repo name
         var repoAnchor = $(document.createElement("a"));
         repoAnchor.attr("href", "http://github.com/" + repoName).text(repoName);
         dtStrong.append(repoAnchor);

         // Building date for prettifying
         var dateSpan = $(document.createElement("span"));
         var dateTime = parseDate(data.commit.committed_date); // converts date to format Pretty Date recognises
         dateSpan.addClass("date").text(dateTime).attr("title", dateTime);
         dateSpan.prettyDate();
         setInterval(function(){ dateSpan.prettyDate(); }, 5000);

         // add dtStrong and dateSpan to DT
         dt.append(dtStrong).append(dateSpan);

         // Linking message to commit
         var ddMessage = $(document.createElement("dd"));
         messageAnchor = $(document.createElement("a"));
         messageAnchor.attr("href", url).text(data.commit.message);
         ddMessage.append(messageAnchor);

         // Listing all changed files
         var ddFilenames = $(document.createElement("dd"));
         ddFilenames.addClass("filenames");
         var filenamesUl = $(document.createElement("ul"));
         $(data.commit.modified).each(function(i){
           filenamesUl.append($(document.createElement("li")).text(data.commit.modified[i].filename));
         });
         ddFilenames.append(filenamesUl);

         // Adding content to DL
         dl.append(dt).append(ddMessage).append(ddFilenames);

         // Replacing static HTML with new hottness
         $("#github p").replaceWith(dl);

       });
    });
  }
}

function parseDate(dateTime) {
  var timeZone = 10; // or "-3" as appropriate
  
  // TODO: need to add date changing functionality too
  dateTime = dateTime.substring(0,19) + "Z";
  var theirTime = dateTime.substring(11,13);
  var ourTime = parseInt(theirTime,1) + 7 + timeZone;
  if (ourTime > 24) {
    ourTime = ourTime - 24;
  };
  dateTime = dateTime.replace("T" + theirTime, "T" + ourTime);
  return dateTime;
};
