var viralShown = false;
var viralHandle = null;
var resultsHandle = null;

function friended(user)
{
    var followButtons = $("img.follow");
    for(var i = 0; i < followButtons.length; i++)
    {
        if(followButtons[i].name == user)
        {
            followButtons[i].src = "following.png";
        }
    }
}

function results(responseText, textStatus, XMLHttpRequest)
{
    $("#progress").hide();
    $("#results").fadeIn("slow");

    if($("#failed").length == 1)
    {
        $("#account").fadeIn("fast");
    }
    else
    {
        var followButtons = $("img.follow");

        for(var i = 0; i < followButtons.length; i++)
        {
            followButtons[i].onclick = function()
            {
                var username = $("#username")[0].value;
                var password = $("#password")[0].value;
                $.post("follow", { "username" : username, 
                                   "password" : password,
                                   "friend" : this.name }, friended);
                return false;
            }
        }

        var recommendationsLinks = $("a.recommendations");

        for(var i = 0; i < recommendationsLinks.length; i++)
        {
            recommendationsLinks[i].onclick = function()
            {
                submit(this);
                return false;
            }
        }

        if(!viralShown)
        {
            viralHandle = setTimeout(
                'viralShown = true; $("#viral").show(); jQuery.facebox($("#viral"));', 15000);
        }
    }
}

function status(data)
{
    if(resultsHandle == null)
    {
        throw "Oops.  Results handle was null";
    }

    if(data == null || data == "0")
    {
        setTimeout('jQuery.post("status", { "handle" : resultsHandle }, status, "text");', 2000);
    }
    else if(data == "-1")
    {
        $("#results").load("failed", null, results);
    }
    else
    {
        $("#results").load("results", { "handle" : resultsHandle }, results);
    }
}

function submit(source)
{
    if(viralHandle != null)
    {
        clearTimeout(viralHandle);
    }

    var username = $("#username")[0].value;
    var password = $("#password")[0].value;

    $("#security").hide();
    $("#account").fadeOut("slow");
    $("#results").hide();
    $("#failed").fadeOut("slow");
    $("#progress").show();

    var params;

    if(source == null || source.name == null)
    {
        params = { "username" : username, "password" : password }
    }
    else
    {
        params = { "username" : username, "password" : password, "target" : source.name }
    }

    jQuery.post("start", params, function(data) { resultsHandle = data; status(); }, "text");

    $("span.progress").text("We're off looking for people we think you'll like.");
    setTimeout('$("span.progress").text("We\'re grabbing data from Twitter. Might take a minute.")',
               10000);
    return false;
}

function checkLoad()
{
    var callback = function(data)
    {
        if(data == "false")
        {
            $("#highload").hide();
            $("#account").fadeIn("slow");
            $("#security").fadeIn("slow");
        }
        else
        {
            setTimeout("checkLoad()", 10000);
        }
    }

    jQuery.get("overloaded", {}, callback, "text");
}

function init()
{
    $("#progress").hide();
    $("#results").hide();

    $("#submit")[0].onclick = submit;

    if($("#highload").length > 0)
    {
        $("#account").fadeOut("slow");        
        $("#security").fadeOut("slow");
        $("#highload").fadeIn("slow");
        checkLoad();
    }

    $("a.sure")[0].onclick = function()
    {
        var username = $("#username")[0].value;
        var password = $("#password")[0].value;

        $.post("tweet", { "username" : username, "password" : password });
        $("#viral p").hide();
        $("#viral p.message").text("Thanks! You rock!");
        $("#viral p.message").fadeIn("slow");
        setTimeout("jQuery(document).trigger('close.facebox');", 2000);
        return false;
    };

    $("a.nope")[0].onclick = function()
    {
        jQuery(document).trigger('close.facebox');
        return false;
    };
}

$(document).ready(init);

