// 'use strict';

var patreon = {

GetCampaign: function() {
    for (var idx in PatreonData.included) {
        var linkedData = PatreonData.included[idx];
        if (linkedData.type == "campaign")
        {
            return linkedData.attributes;
        }
    }

    return null;
},
GetPatronCount: function(campaignData) {
    return campaignData.patron_count;
},
GetPledgeSum: function(campaignData) {
    return campaignData.pledge_sum / 100.0;
},
GetGoalTotal: function(goalData) {
    return goalData.amount_cents / 100.0;
},
GetActiveGoal: function() {
    var campaign = this.GetCampaign();
    var pledged_cents = this.GetPledgeSum(campaign) * 100;
    var lastGoal = null;
    for (var idx in PatreonData.included) {
        var linkedData = PatreonData.included[idx];
        if (linkedData.type == "goal")
        {
            if ((lastGoal != null) && (pledged_cents > lastGoal.amount_cents) && (pledged_cents < linkedData.attributes.amount_cents))
            {
                lastGoal = linkedData.attributes;
                break;
            }
            else if ((lastGoal != null) && (pledged_cents < linkedData.attributes.amount_cents))
            {
                break;
            }
            else
            {
                lastGoal = linkedData.attributes;
            }
        }
    }

    return lastGoal;
},
ShowGoalProgress: function(perc) {
    var percWidth = perc > 100 ? 100 : perc;

    $("#patreon_meter > span").each(function() {
        $(this)
            .data("origWidth", percWidth + "%")
            .width(0)
            .animate({
                width: $(this).data("origWidth")
            }, 1200);
    });
},
GoalTextFromTo: function(campaignData, goalData) {
    var pledgeSum = 0;
    var goalTotal = 0;

    if (campaignData)
    {
        pledgeSum = Math.floor(this.GetPledgeSum(campaignData));

        var payper = campaignData.pay_per_name;        
        $("#patreon_paypername").html("#{per} " + (payper == "month" ? "#{month}" : "#{patrons}"));
    }

    if (goalData)
    {
        goalTotal = Math.floor(this.GetGoalTotal(goalData));

        if (patreonShowGoalText)
            $("#patreon_goaltext").html(goalData.description);
    }

    if (pledgeSum < goalTotal)
    {
        $("#patreon_goalmoneytext").html("$" + pledgeSum + " #{of} $" + goalTotal);
        $("#patreon_goalreached").html("");
    }
    else
    {
        $("#patreon_goalmoneytext").html("$" + goalTotal);
        $("#patreon_goalreached").html("- #{reached}");
    }
},
CreateDummyGoal: function(campaignData) {
    return {
        "description": "",
        "amount_cents": campaignData.pledge_sum
    };
}

};

document.addEventListener(“DOMContentLoaded”, function(event) {

$(document).ready(function() {
    if (typeof PatreonData['data'] == "object")
    {
        var campaignData = patreon.GetCampaign();
        var goalData = patreon.GetActiveGoal();
        if (!goalData)
        {
            goalData = patreon.CreateDummyGoal(campaignData);
        }

        var goalperc = Math.floor((campaignData.pledge_sum / goalData.amount_cents) * 100.0);
        $("#patreon_percentage").val(goalperc);
        patreon.GoalTextFromTo(campaignData, goalData);
        patreon.ShowGoalProgress(goalperc)
    }

    if($("#patreon_toptext").text() == "")
        $("#patreon_toptext").remove();

    if($("#patreon_bottomtext").text() == "")
        $("#patreon_bottomtext").remove();

    // $(".patreon_button").remove();
});

});