/**
 * HYPERUU GITHUBURUUU
 */

var gitHubBaseURL = "http://github.com/";
var gitHubApiURL = gitHubBaseURL + "api/v1/json/";
var _cb = {};
var _currCbIdx = 0;

function defaultOnComplete(value) {
    console.warn("unhandled github fetch complete", value);
}

function fetchGitHubRepository(user, repo, branch) {
    branch = branch ? branch : "master";

    if (!document)
        return null;

    var cbId = "cb" + _currCbIdx++;
    var scrEl = document.createElement("script");
    scrEl.src = gitHubApiURL + user + "/" + repo + "/commit/" + branch;
    scrEl.src += "?callback=_cb." + cbId;
    scrEl.type = "text/javascript";

    var asyncRes = {user: user, repository: repo, branch: branch};
    _cb[cbId] = function(res) {
        var url = gitHubBaseURL + user + "/" + repo + "/commit/" + res.commit.id;
        asyncRes.data = res;
        asyncRes.data.url = url;
        // TODO Check if it really went well.
        (asyncRes.onComplete || defaultOnComplete)(asyncRes);
    };
    asyncRes.start = function() { document.getElementsByTagName("body").item(0).appendChild(scrEl); };
    return asyncRes;
}
