// ==UserScript==
// @name Swagbucks App Completion
// @namespace https://github.com/Omegaice/SwagBucksAppMonitor
// @version 1.3
// @description A script to add a new tab to the users acount page to show how much you have progressed for each swagbuck app.
// @match http://www.swagbucks.com/account/summary
// @copyright 2014+, Omegaice
// ==/UserScript==
// App Maximums
var sbtvpc_max = 150;
var sbtv_max = 36;
var indymusic_max = 80;
var sportly_max = 80;
var movieclips_max = 80;
var entertainow_max = 90;
function CreateAppRows(name, current, maximum, reward, video_duration, videos_per_reward) {
var result = "<p>"+ name + ":</br>";
if( current >= maximum ){
result += "    Complete [" + current + "/" + maximum + "]";
}else{
result += "    Incomplete [" + current + "/" + maximum + "]";
}
result += "</br>    Videos Remaining: " + videos_per_reward * (Math.max(maximum-current, 0)/reward);
if( video_duration > 0) result += "</br>    Estimated Time Remaining: " + CalculateDuration(video_duration, current, maximum, videos_per_reward, reward);
return result + "</p>";
}
// Time Variables
var advert_time = 30;
var nextup_time = 10;
var video_load_time = 5;
function CalculateDuration(minimum_time, current_points, maximum_points, videos_per_reward, reward_value){
var remaining_points = Math.max(maximum_points - current_points, 0);
var remaining_videos = remaining_points * (videos_per_reward / reward_value);
var remaining_adverts = Math.floor(remaining_points / reward_value);
var time = remaining_videos * (video_load_time + minimum_time + nextup_time) + remaining_adverts * advert_time;
var hours = Math.floor(time / 3600) % 24;
var minutes = Math.floor(time / 60) % 60;
var seconds = time % 60;
return (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds);
}
$("#ledgerInnerCont").append('<div id="appContent" style="position: relative; display: none;"></div>');
$.get("http://www.swagbucks.com/?cmd=sb-acct-ledger&allTime=false",function(data,status){
var values = data.split("|")[2].substr(1);
values = values.substring(0, values.length - 1);
var rewards = new Array();
rewards["SBTV"] = 0;
rewards["SBTVPC"] = 0;
rewards["Sportly"] = 0;
rewards["Indymusic"] = 0;
rewards["EntertaiNow"] = 0;
rewards["MovieCli.ps"] = 0;
var lines = values.split("],");
for( var i = 0; i < lines.length; i++ ){
var lData = lines[i].replace("[", "").replace("]", "").split(",");
var desc = lData[5].replace("'", "").replace("'", "").trim();
var value = parseInt(lData[3]);
if( desc == "" ) desc = ( value == 2 ? "SBTV" : "SBTVPC" )
if( rewards[desc] == null ){
rewards[desc] = value;
}else{
rewards[desc] = rewards[desc] + parseInt(lData[3]);
}
}
$("#appContent").append(CreateAppRows("SBTV - PC", rewards["SBTVPC"], sbtvpc_max, 3, 0, 10) + "</br>");
$("#appContent").append(CreateAppRows("SBTV - Mobile", rewards["SBTV"], sbtv_max, 2, 9, 5) + "</br>");
$("#appContent").append(CreateAppRows("Indymusic.tv", rewards["Indymusic"], indymusic_max, 2, 30, 15) + "</br>");
$("#appContent").append(CreateAppRows("Sportly.tv", rewards["Sportly"], sportly_max, 2, 25, 15) + "</br>");
$("#appContent").append(CreateAppRows("EntertaiNow", rewards["EntertaiNow"], entertainow_max, 2, 11, 15) + "</br>");
$("#appContent").append(CreateAppRows("MovieCli.ps", rewards["MovieCli.ps"], movieclips_max, 2, 23, 15) + "</br>");
});
$("#accountTab1").parent().append("<li id=\"accountTab2\">Applications</li>");
$("#accountTab2").click(function(){
$("#accountTab1").removeClass("selected");
$("#ledgerContL").css({position: "relative", display: "none"});
$("#accountTab2").addClass("selected");
$("#appContent").removeAttr( 'style' );
$("#accountTab3").removeClass("selected");
$("#collectorBills").css({position: "relative", display: "none"});
})
// Helpers for old tabs
$("#accountTab1").click(function(){
$("#accountTab2").removeClass("selected");
$("#appContent").css({position: "relative", display: "none"});
})
$("#accountTab3").click(function(){
$("#accountTab2").removeClass("selected");
$("#appContent").css({position: "relative", display: "none"});
})