var gDh = '';
var gTh = '';
var gAveragePace = '';
var gBestPace = '';
var gBestPaceDate = '';
// stores the user's stats in a json object
var gUserJson = null;

var dist;
var distSlider;
var time;
var timeSlider;

function ShowMsg(msg) {
    $('#broadcast').html(msg);
    $('#broadcast').slideDown(500, HideMsg);
}

function HideMsg() {
    setTimeout(function() {
        $("#broadcast").slideUp('slow');
    }, 2000);
}

/* checks how many characters are remaining in the tweet */
function CheckRemainder() {
    if ($('#status').val() != null) {
        $('#remainder').html("" + (140 - $('#status').val().length) );
    }
}

function TwoDigits(val) { // ensure max 2 decimal places
    return Math.round(val * 100) / 100;
}

function ExportToCSV() {
    location.href = "/data/csv/" + gUsername;
}

function GetVisitTwitterLink(u) {
    var link = "<a href=\"http://twitter.com/" + u + "\" target=\"_blank\" ><img src=\"/images/icons/twitter-16x16.png\" class=\"iconImg\" alt=\"visit " + u + " on twitter\" title=\"visit " + u + " on twitter\"></a>";
    link += "<a href=\"http://twitter.com/" + u + "\"  target=\"_blank\" >" + u + "</a>";

    return link;
}

function GetBox(css, id, title, smallMsg, msg) {
    return GetBoxNoBR(css, id, title, smallMsg, "<br/>" + msg);
}

function GetBoxNoBR(css, id, title, smallMsg, msg) {
    if (title === null) {
        title = "0.0";
    }
    return "<div class=\"" + css + "\"  id=\"" + id + "\" ><div class=\"myh2\">" +
        title + "</div>" + smallMsg + " " + msg + "</div>";    
}

function ShowLoading(target) {
    $(target).html("<img src='/images/l.gif' align='left' />Loading...");
}

function IconImg(img, alt) {
    return "<img src='/images/icons/" + img + "' alt='" + alt + "' title='" + alt + "' class='iconImg'/>";
}

//callback function to bring a hidden box back
function callback() {
    setTimeout(function() {
        $("#status:hidden").removeAttr('style').hide().fadeIn();
    }, 1000);
}

function GetTime(prefix, timeValue, seconds) {
    var tv = "";

    if (!isNaN(parseFloat(timeValue))) {
        var hours = Math.floor(timeValue / 60);
        var mins = timeValue % 60;

        if ((hours > 0) && (mins > 0)) {
            tv = prefix + hours + "hrs, " + mins + "mins";
        } else {
            if (hours > 0) { tv = prefix + hours + "hrs"; }
            if (mins > 0) { tv = prefix + mins + "mins"; }
        }
        if (!isNaN(parseFloat(seconds))) {
            if (parseFloat(seconds) !== 0) {
                if (tv !== "") {
                    tv = tv + ", " + seconds + "secs";
                }
            }
        }
    }
    return tv;
}

function updateStatus() {
    var dv = "", tv = "", nt = "";  
    var units = "";
    var pace = "";
    
    var distVal = $("input[name='distValue']").val();
    var timeVal = $("input[name='timeValue']").val();
    var secondsVal = $('#secondsValue').val();

    if (gDistanceUnit === "m") { units = "miles"; } else { units = "kms"; }

    if (distVal > 0) { dv = "#tweetarun:" + distVal + units; }
    
    $('#status').val("");
    
    if (dv !== "") {
        $('#status').val(dv); //Ran
        tv = GetTime(" in ", timeVal, secondsVal);

        if (tv !== "") {
            // pace calculations, taking seconds into account (convert briefly to seconds with * 60)
            var nd = parseFloat(distVal);
            nt = (parseFloat(timeVal) * 60) + parseFloat(secondsVal);
            var np = nt / (nd * 60);

            var iSignificant = Math.floor(np);
            var seconds = (np - iSignificant) * 60;
            var pu = "";
            if (gDistanceUnit === "m") { pu = "/m"; } else { pu = "/km"; }
            pace = ".\r\nPace: " + iSignificant + "mins, " + seconds.toFixed(0) + " sec" + pu;
            if (np < gBestPace) { pace += ", new personal best"; }

            $('#status').val(dv + tv + pace); // time
        }
    } else { // only time entered
        tv = GetTime("", timeVal, $('#secondsValue').val());
        if (tv !== "") {
            $('#status').val("Ran for " + tv); // time
        }
    }

    var oldDist = 0;
    //if (!isNaN(parseFloat($('#dh').val()))) oldDist = parseFloat($('#dh').val());
    if (!isNaN(parseFloat(gDh))) { oldDist = parseFloat(gDh); }

    var newDistance = TwoDigits(parseFloat(distVal) + oldDist);

    var oldTime = 0;
    if (!isNaN(parseFloat(gTh))) { oldTime = parseFloat(gTh); }
    var newTime = parseFloat(timeVal) + oldTime;

    nt = GetTime(" in ", newTime, secondsVal);
    var newTotal = "New Total: " + newDistance + units + nt;

    if ($('#status').val() !== "") { $('#status').val($('#status').val() + ". " + newTotal); }

    CheckRemainder();
}

function Init() {

  //  $('#distValue').val(0);
//    $('#timeValue').val(0);

    updateStatus();
}

function showExercise() {
    $("#distanceTable").css("display", "block");
    $("#setsTable").css("display", "none");
    return; 

    if ( ( $("#exercise").val() === "run") || 
         ( $("#exercise").val() === "walk") || 
         ( $("#exercise").val() === "swim") )
    {
        $("#distanceTable").css("display", "block");
        $("#setsTable").css("display", "none");
    } else {
        $("#distanceTable").css("display", "none");
        $("#setsTable").css("display", "block");
    }
}

/* used with the JqGrid */
function myDateFormatter(cellvalue, options, rowObject) {
    var s = cellvalue.replace("Date(", "").replace("/", "");
    var myDate = new Date(parseInt(s, 10));
    return myDate.format("m/dd/yy")
}

/* Used with JSON Dates) */
function myPrettyDateFormatter(val) {
    //var s = val.replace("Date(", "").replace("/", "").replace(")", "");
    var s = val.replace("/", "").replace("Date(", "").replace(")/", "")
    var myDate = new Date(parseInt(s, 10));    
    return prettyDate(myDate.format());    
}

function myTimeFormatter(cellvalue, options, rowObject) {
    return GetTime("", cellvalue, 0);
}

function myDistanceFormatter(cellvalue, options, rowObject) {
    if (rowObject.milesorkms === "m") return cellvalue + "miles";
    return cellvalue + "kms";
}

function myPaceFormatter(cellvalue, options, rowObject) {
    if (rowObject.milesorkms === "m") return cellvalue + "mins/mile";
    return cellvalue + "mins/km";
}

function d(id) {
    if (gUsername === "") { ShowMsg("Sorry you need to login before accessing this feature"); }

    $.getJSON("/data/remove/" + gUsername + "?id=" + id + "&rand=" + Math.random(),
        function(json) {            
            ShowMsg(json.message);
        }
    );
    return;
}

function UpdateFB() {
    var attachment = { 'media': [{ 'type': 'image', 'src': 'http://tweetarun.com/images/l.png', 'href': 'http://tweetarun.com/' + gUsername}] };
    FB.Connect.streamPublish($('#status').val(), attachment);
}

function SetUnit(unit) {
    var strUrl = '/data/setunit/?unit='+unit+'&rand=' + Math.random();

    $.getJSON(strUrl,
        function (json) {
            ShowMsg(json.message);
            $("#result").html("Your settings have been updated, click <a href='/'>HERE</a> to enter your first workout");
        });
}

function Persist(action) {
    ShowLoading('#result');

    $('#result').addClass("ui-state-highlight");
    $('#result').animate({ height: "40px", padding: "5px", opacity: 1 }, 500);

    if ($('#status').val() === "") {
        // nothing to save
        $('#result').html("There's nothing to save, please enter some data");
        ShowMsg("There's nothing to save, please enter some data");
        return;
    }

    var dv = $("input[name='distValue']").val();
    var tv = $("input[name='timeValue']").val();    
    var seconds = $('#secondsValue').val();
    //var dv = $('#distValue').val();
    var sv = encodeURIComponent($('#status').val());    
    var when = "";

    // set the form vars for subsequent updates
    gDh += parseFloat(dv);
    gTh += parseFloat(tv);

    if ($("input[name='when']").val() !== "") {
        when = "&when=" + encodeURI($("input[name='when']").val());
    }
    var strUrl = '/data/' + action + '/' + gUsername + "?time=" + tv + "&seconds=" + seconds + "&distance=" + dv + "&unit=" + gDistanceUnit + "&status=" + sv + when + "&rand=" + Math.random();
    
    $.getJSON(strUrl,
        function(json) {
            $('#result').html(json.message);
            ShowMsg(json.message);
            $('#result').removeClass("ui-state-highlight");
            $('#result').removeClass("ui-state-error");
            if (json.result == "success") {
                $('#result').effect("highlight", {}, 3000);
                $('#result').animate({ height: "0px", padding: "0px", opacity: 0 }, 1500);
            }
        });

        return;
    //update the users' stats
    $.getJSON("/data/stats/" + gUsername + "?rand=" + Math.random(),
        function(json) {
            if (json.result == "success") {
               /* $('#thisweek').html(json.data.weeklyTotalRun);
                $('#thismonth').html(json.data.monthlyTotalRun);
                $('#sofar').html(json.data.totalDistance);

                $('#thisweek').effect("highlight", {}, 3000);
                $('#thismonth').effect("highlight", {}, 3000);
                $('#sofar').effect("highlight", {}, 3000);*/
            }
        }
    );    
}

function GetStats(username) {
    ShowLoading('#otherUser');
    $.getJSON("/data/stats?username=" + username + "&rand=" + Math.random(),
        function(json) {
            if (json.result == "success") {
                var uStats = "<h2>" + json.data.username + "</h2><table><tr><td style='height:48px' ><img src='" + json.data.profilePic + "' align='left' height='48' width='48' /></td><td><div class='sbox'><h2>" + json.data.weeklyTotalRun + "</h2>this week</div><div class='sbox'><h2>" + json.data.monthlyTotalRun + "</h2>this month</div><div class='sbox'><h2>" + json.data.totalDistance + "</h2>so far</div><br/><br/><br/><br/>All data shown in " + json.data.friendlyUnit + "</td></tr><tr><td colspan=4>" + json.data.distanceComparison + "</td></tr></table>";
                $('#otherUser').html(uStats);
                $('#otherUser').effect("highlight", {}, 3000);
            }
        }
    );
}

function LoadUserReport(username, target) {

    ShowLoading(target);

    $.getJSON("/data/stats?username=" + username + "&rand=" + Math.random(),
        function(j) {
            if (j.result == "success") {
                var uStats = "<div id=\"tstatus\" class=\"ui-corner-all\" style=\"\">";
                uStats += "<h2>Profile for <a href=\"http://tweetarun.com/" + username + "\" target=\"_blank\">";
                uStats += username + "<img align=\"right\" class=\"userImg\" id=\"profilePic\" src=\"" + j.data.profilePic + "\" height='48' width='48' >";
                uStats += "</a></h2>" + j.data.twStatus + "<br/><br/>";
                uStats += GetVisitTwitterLink(username);
                uStats += "<br/><br/>";
                uStats += GetBox("sbox", "thisweek", j.data.weeklyTotalRun, j.data.friendlyUnit, "total this week");
                uStats += GetBox("sbox", "thismonth", j.data.monthlyTotalRun, j.data.friendlyUnit, "this month");
                uStats += GetBox("sbox", "sofar", j.data.totalDistance, j.data.friendlyUnit, "total so far");
                uStats += GetBox("sbox", "weeksRuns", j.data.numWeeksRun + "/" + j.data.numWeeks, "", "weeks run");
                uStats += GetBox("sbox", "averageDistance", j.data.averageDistance, j.data.friendlyUnit, "avg distance");
                uStats += GetBox("sbox", "averageWeeklyDistance", j.data.averageWeeklyDistance, j.data.friendlyUnit + "/wk", "avg weekly dist");
                uStats += GetBox("sbox", "averagePace", j.data.averagePace, "mins/" + j.data.friendlyUnit, "avg pace");
                uStats += GetBox("sbox", "bestPace", j.data.bestPace, "mins/" + j.data.friendlyUnit, "best pace");

                uStats += "<div id=\"like\">" + j.data.distanceComparison + "</div>";
                uStats += "</div><br/><br/>";

                $(target).html(uStats);

                // need this so it sizes correctly
                $(target).append("<div style='clear:right'></div>");
            }
        }
    );
}

// Loads the users data into the profile box - August 1
function LoadUserStats(username, target, setPageVars) {

    ShowLoading(target);

    $.getJSON("/data/stats/" + username + "?rand=" + Math.random(),
        function (j) {
            if (j.result === "success") {
                // store all the data
                gUserJson = j.data;
                var uStats = "<div id=\"tstatus\" class=\"ui-corner-all\">";
                uStats += "<h2><a href=\"/Users/" + username + "\" target=\"_blank\">";
                uStats += username + "<img align=\"left\" id=\"profilePic\" class=\"userImg\" src=\"" + j.data[0].profilePic + "\" height='48' width='48' >";
                uStats += "</a>&nbsp;"
                uStats += IconImg('chart_bar.png', 'Chart') + '<a href="/chart/' + username + '">Chart</a></h2>';

                if (j.data[0].twStatus !== null) {
                    uStats += j.data[0].twStatus + "<br/>";
                }
                uStats += "<br/><br/>";

                var thisWeek = "<div class='statGroup' id='weeklyGroup'><h2>This Week</h2><br/><br/>";
                var thisMonth = "<div class='statGroup' id='monthlyGroup'><h2> This Month </h2>";
                var thisYear = "<div class='statGroup' id='yearlyGroup'><h2> This Year</h2>";
                var Averages = "<div class='statGroup' id='averageGroup'><h2> Averages </h2>";
                var Totals = "<div class='statGroup' id='totalGroup'><h2> Totals </h2>";

                thisWeek += GetBox("statBox", "weeklyTotalRun", j.data[0].weeklyTotalRun, j.data[0].friendlyUnit, "");
                thisWeek += GetBox("statBox", "weeklyTotalMinutes", j.data[0].weeklyTotalMinutes, "minutes", "");

                thisMonth += GetBox("statBox", "monthlyTotalRun", j.data[0].monthlyTotalRun, j.data[0].friendlyUnit, "");
                thisMonth += GetBox("statBox", "monthlyTotalMinutes", j.data[0].monthlyTotalMinutes, "minutes", "");

                thisYear += GetBox("statBox", "yearlyTotalRun", j.data[0].yearlyTotalRun, j.data[0].friendlyUnit, "");
                thisYear += GetBox("statBox", "yearlyTotalMinutes", j.data[0].yearlyTotalMinutes, "minutes", "");

                Totals += GetBox("statBox", "totalDistanceRun", j.data[0].totalDistanceRun, j.data[0].friendlyUnit, "total so far");
                Totals += GetBox("statBox", "totalMinutesRun", j.data[0].totalMinutesRun, "minutes", "total so far");

                Totals += GetBox("statBox", "weeksRuns", j.data[0].numWeeksRun + "/" + j.data[0].numWeeks, "", "weeks run");
                Averages += GetBox("statBox", "averageDistance", j.data[0].averageDistance, j.data[0].friendlyUnit, "avg distance");
                Averages += GetBox("statBox", "averageWeeklyDistance", j.data[0].averageWeeklyDistance, j.data[0].friendlyUnit, "avg weekly dist");
                Averages += GetBox("statBox", "averagePace", j.data[0].averagePace, "/" + j.data[0].friendlyUnit, "avg pace");
                Totals += GetBox("statBox", "startDate", myPrettyDateFormatter(j.data[0].startDate), "", "First Run");

                Totals += GetBoxNoBR("statBox", "bestPace", j.data[0].bestPace, "/" + j.data[0].friendlyUnit + "<br/>" + myPrettyDateFormatter(j.data[0].bestPaceDate), "best pace");
                Totals += GetBoxNoBR("statBox", "furthestDistance", j.data[0].furthestDistance, j.data[0].friendlyUnit + "<br/>" + myPrettyDateFormatter(j.data[0].furthestDistanceDate), "Furthest Distance");

                uStats += '<div class="statBox" id="distanceComparison">' + j.data[0].distanceComparison + '</div>';

                thisWeek += "</div>";
                thisMonth += "</div>";
                thisYear += "</div>";
                Averages += "</div>";
                Totals += "</div>";
                uStats += thisWeek + thisMonth + thisYear + Averages + Totals;

                /*uStats += GetBox("statBox", "thisweek", j.data[0].weeklyTotalRun, j.data[0].friendlyUnit, "total this week");
                uStats += GetBox("statBox", "thismonth", j.data[0].monthlyTotalRun, j.data[0].friendlyUnit, "this month");
                uStats += GetBox("statBox", "thismonth", j.data[0].monthlyTotalMinutes, "minutes", "this month");
                uStats += GetBox("statBox", "sofar", j.data[0].totalDistanceRun, j.data[0].friendlyUnit, "total so far");
                uStats += GetBox("statBox", "sofar", j.data[0].totalMinutesRun, "minutes", "total so far");
                uStats += GetBox("statBox", "weeksRuns", j.data[0].numWeeksRun + "/" + j.data[0].numWeeks, "", "weeks run");
                uStats += GetBox("statBox", "averageDistance", j.data[0].averageDistance, j.data[0].friendlyUnit, "avg distance");
                uStats += GetBox("statBox", "averageWeeklyDistance", j.data[0].averageWeeklyDistance, j.data[0].friendlyUnit, "avg weekly dist");
                uStats += GetBox("statBox", "averagePace", j.data[0].averagePace, "/" + j.data[0].friendlyUnit, "avg pace");
                uStats += GetBox("statBox", "bestPace", j.data[0].bestPace, "/" + j.data[0].friendlyUnit, "best pace");
                uStats += GetBox("statBox", "bestPaceDate", j.data[0].bestPaceDate, "", "best pace Date");

                uStats += "<div id=\"like\">" + j.data[0].distanceComparison + "</div>";*/
                uStats += "<div id=\"postToFb\"></div>";
                uStats += "</div>";

                if (!gFacebook) {
                    $('#postToFB').css('display', 'none');
                }

                $(target).html(uStats);
                //$(target).effect("highlight", {}, 3000);

                if (setPageVars) {
                    gDistanceUnit = j.data[0].unit;
                    gDh = j.data[0].totalDistanceRun;
                    gTh = j.data[0].totalMinutesRun;
                    gAveragePace = j.data[0].averagePace;
                    gBestPace = j.data[0].bestPace;
                    gBestPaceDate = j.data[0].bestPaceDate;
                }
            }
        }
    );
}

function addCommas(nStr) {
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}

function LoadCommunity(target) { // Loads the site's totals data
    ShowLoading(target);
    $.getJSON("/data/communitystats?rand=" + Math.random(),
        function(j) {
            if (j.result == "success") {
                var uStats = "<div class=\"st ui-corner-all\">Look What We've Done...</div>";
                uStats += GetBox("bbox", "", addCommas(j.data.totalDistance), "miles", "total distance");
                uStats += GetBox("bbox", "", j.data.weeklyTotalRun, "miles", "distance this week");
                uStats += GetBox("bbox", "", j.data.monthlyTotalRun, "miles", "distance this month");
                uStats += GetBox("bbox", "", j.data.totalNumberOfRuns, "# runs", "total runs logged");
                uStats += GetBox("bbox", "", j.data.averageWeeklyDistance, "miles/week", "avg distance/week");
                uStats += GetBox("bbox", "", j.data.averagePace, "min/mile", "average pace");

                var mainStats = "";
                mainStats += '<div class="vbbox"><a href=\'/' + j.data.fastestRunnerThisWeek + '\' class=\'username\'><img src=\'' + j.data.fastestRunnerPicThisWeek + '\' align=\'left\' class=\'userImg\' alt=\'View their Profile\'/></a><div class="myh2">Fastest Pace this week: <a href=\'/' + j.data.fastestRunnerThisWeek + '\' class=\'username\'>' + j.data.fastestRunnerThisWeek + '</a> ' + j.data.fastestPaceThisWeek + "<br/><img src=\'/images/icons/award_star_gold_2.png\'/></div></div>";
                mainStats += '<div class="vbbox"><a href=\'/' + j.data.longestRunnerThisWeek + '\' class=\'username\'><img src=\'' + j.data.longestRunnerPicThisWeek + '\' align=\'left\' class=\'userImg\' alt=\'View their Profile\'/></a><div class="myh2">Longest Run this week: <a href=\'/' + j.data.longestRunnerThisWeek + '\' class=\'username\'>' + j.data.longestRunnerThisWeek + '</a> ' + j.data.longestRunThisWeek + "<br/><img src=\'/images/icons/award_star_gold_2.png\'/></div></div>";
                mainStats += '<div class="vbbox"><a href=\'/' + j.data.newestMember + '\' class=\'username\'><img src=\'' + j.data.newestMemberPic + '\' align=\'left\' class=\'userImg\' alt=\'View their Profile\'/></a><div class="myh2">Welcome our newest member: <a href=\'/' + j.data.newestMember + '\' class=\'username\'>' + j.data.newestMember + '</a><br/><img src=\'/images/icons/award_star_gold_2.png\'/></div></div>';

                //mainStats += '<div class="vbbox"><h2>Longest run this week</h2><a href=\'/' + j.data.longestRunnerThisWeek + '\' class=\'username\'><img src=\'' + j.data.longestRunnerPicThisWeek + '\' align=\'left\' class=\'userImg\' alt=\'View their Profile\'/>' + j.data.longestRunnerThisWeek + '</a><br/>' + j.data.longestRunThisWeek + "<img src=\'/images/icons/shield.png\'/></div>";
                //mainStats += '<div class="vbbox"><h2>Newest Member</h2><a href=\'/' + j.data.newestMember + '\' class=\'username\'><img src=\'' + j.data.newestMemberPic + '\' align=\'left\' class=\'userImg\' alt=\'View their Profile\'/>' + j.data.newestMember + '</a><br/><img src=\'/images/icons/star.png\'/></div>';
                $('#mainside').html(mainStats);
                uStats += GetBox("bbox", "", j.data.numberOfRunsThisWeek, "runs", "runs this week");

                uStats += "<div class=\"bbox\" style=\"width:auto\"><h2>We've been running for " + addCommas(j.data.totalMinutes) + " minutes or " + j.data.friendlyTime + "</h2></div>";
                uStats += "<div class=\"vbbox\" style=\"width:auto\"><h2>" + j.data.distanceComparison + "</h2></div>";
                $(target).html(uStats);
            }
        }
    );
}



// Used to send Kudos
var gUserToEncourage = '';
var gRelatedRun = '';
var gKudosImg = "heart.png";
var gKudosType = "encouragement";

function SetKudos(u, id) {
    gUserToEncourage = u;
    gRelatedRun = id;
    $('#comment').val('@' + gUserToEncourage);
}

function Encourage(text, img) {
    gKudosImg = img;
    $('#comment').val("@" + gUserToEncourage + ' #tweetarun #goodjob ' + text);
}

/* used on community page */
function LoadRecent(target) { // Loads the site's totals data
    ShowLoading(target);

    $.getJSON("/data/getRecentRunners?rand=" + Math.random(),
        function(j) {
            if (j.result == "success") {
                $(target).empty();
                $(target).append("<div class=\"st ui-corner-all\">Recent Runners...</div>");

                for (var i in j.data) {
                    if (i !== null) {
                        $(target).append("<div class=\"recentRun ui-corner-all\" id=\"" + j.data[i].twId + i + "\"></div>");
                        $('#' + j.data[i].twId + i).append('<a href="/users/' + j.data[i].username + '"><img class="userImg" src="' + j.data[i].profilePic + '" alt="' + j.data[i].username + '" title="@' + j.data[i].username + '" style="height:48;width:48;align:left; float:left" /></a>');
                        $('#' + j.data[i].twId + i).append('<a class="username" href="/users/' + j.data[i].username + '">' + j.data[i].username + '</a>');
                        $('#' + j.data[i].twId + i).append('&nbsp;recorded ' + myPrettyDateFormatter(j.data[i].timestamp));
                        $('#' + j.data[i].twId + i).append('<br/>' + myDateFormatter(j.data[i].created));
                        $('#' + j.data[i].twId + i).append(' - ' + j.data[i].status + '<br/>');
                        
                        //$('#' + j.data[i].twId + i).append(IconImg('info.png', 'More information'));
                        //$('#' + j.data[i].twId + i).append('<a href="javascript:void(0)" onclick="LoadUserReport(\'' + j.data[i].username + '\', \'#info\')">info</a>');
                        //$('#' + j.data[i].twId + i).append(' | ');
                        //                        $('#' + j.data[i].twId + i).append(IconImg('thumb_up.png', 'Send Encouragement'));
                        //                        $('#' + j.data[i].twId + i).append('<a href="javascript:void(0)" onclick="SetKudos(\'' + j.data[i].username + '\', \'' + j.data[i].id + '\')" class="kudosClicker">Like</a>');
                        $('#' + j.data[i].twId + i).append(IconImg('chart_bar.png', 'Chart'));
                        $('#' + j.data[i].twId + i).append(' <a href="/chart/' + j.data[i].username + '">Chart</a>');
                        $('#' + j.data[i].twId + i).append(' | ');
                        $('#' + j.data[i].twId + i).append(IconImg('info.png', 'Chart'));
                        $('#' + j.data[i].twId + i).append(' <a href="/users/' + j.data[i].username + '">Info</a>');
                        $('#' + j.data[i].twId + i).append(' | ');
                        $('#' + j.data[i].twId + i).append(GetVisitTwitterLink(j.data[i].username));
                        //$('#' + j.data[i].twId + i).append('<a href="http://twitter.com/' + j.data[i].username + '" >' + IconImg("twitter-16x16.png", "Visit on Twitter") + ' Visit on Twitter</a><br />');
                    }
                }

                // Init the Kudos class
                $(".kudosClicker").click(function(e) {
                    // reset position of info box
                    $('#dpop').css({
                        top: e.pageY - (146 / 2), // 126 is the height of the popup window // parseInt($('#dpop').css('height')) / 2,
                        left: e.pageX,
                        display: 'block'
                    }).animate({
                        left: '+=' + distance + 'px',
                        opacity: 1
                    }, time, 'swing', function() {
                        beingShown = false;
                        shown = true;
                    });
                });

                // LoadFollowers();
            }
        }
    );
}

function InitCarousel() {
    //disabled 
    return;

    $("#mycar").jCarouselLite({
        btnNext: ".next",
        btnPrev: ".prev",
        visible: 5,
        auto: 4000,
        speed: 2000,
        vertical: true
    });

    return;
}

//run the currently selected effect
function runEffect() {

    //most effect types need no options passed by default
    var options = {};

    //run the effect
    $("#status").effect('highlight', options, 1000, callback);
}

function InitEntryForm() {
    //set effect from select menu value
    $("#cmdtweet").click(function() {
        runEffect();
        return false;
    });

    // setup the date picker    
    $(":date").dateinput();
    $(":range").rangeinput({ progress: true });

    $('#distanceTable').change(function () { updateStatus(); });
    $('#setsTable').change(function () { updateStatus(); });
    $('#exerciseType').change(function () { updateStatus(); });
    
    showExercise();
    //InitCarousel();
}

function InitLoad() {

    $(":input[title]").tooltip({// tweak the position
        offset: [10, 2],
        // use the "slide" effect
        effect: 'slide'
    });
    $("a[title]").tooltip({// tweak the position
        offset: [10, 2],
        // use the "slide" effect
        effect: 'slide'
    });

    switch (gLoad) {
        case "user":
            LoadUserStats(gUsername, '#profile', true); break;
        case "report":
            LoadUserReport(gReportUsername, '#report'); break;
        case "recent":
            LoadRecent("#recent"); break;
        case "": break;
        default:
            LoadCommunity('#profile'); break;
    }
}

