﻿/*
* JavaScript Pretty Date
* Copyright (c) 2008 John Resig (jquery.com)
* Licensed under the MIT license.
*/

// Takes an ISO time and returns a string representing how
// long ago the date represents.
function prettyDate(time) {
    var date = new Date((time || "").replace(/-/g, "/").replace(/[TZ]/g, " ")),
		diff = (((new Date()).getTime() - date.getTime()) / 1000),
		day_diff = Math.floor(diff / 86400);

    if (isNaN(day_diff) || day_diff < 0 || day_diff >= 31)
        return;

    return day_diff == 0 && (
			diff < 60 && "just now" ||
			diff < 120 && "1 minute ago" ||
			diff < 3600 && Math.floor(diff / 60) + " minutes ago" ||
			diff < 7200 && "1 hour ago" ||
			diff < 86400 && Math.floor(diff / 3600) + " hours ago") ||
		day_diff == 1 && "Yesterday" ||
		day_diff < 7 && day_diff + " days ago" ||
		day_diff < 31 && Math.ceil(day_diff / 7) + " weeks ago";
}

// If jQuery is included in the page, adds a jQuery plugin to handle it as well
if (typeof jQuery != "undefined")
    jQuery.fn.prettyDate = function() {
        return this.each(function() {
            var date = prettyDate(this.title);
            if (date)
                jQuery(this).text(date);
        });
    };



    var twitterjs = {
        autoScroll: true,
        getUpdates: function() {
            $.getJSON('/twittercalls.aspx', { lid: $("#lid").val() }, twitterjs.refreshList);
            window.setTimeout(twitterjs.getUpdates, 120000);
        },
        getUsers: function() {
            $.getJSON('/twitterfollows.aspx', {}, twitterjs.refreshUsers);
        },
        refreshList: function(json) {
        try{
            if (json.max_id != 0)
                $("#lid").val(json.max_id);
            $.each(json.results.reverse(), function(i, result) {
                var html = "<tr class=\"status new\"><td class=\"avatar\"><a target=\"_blank\" href=\"http://twitter.com/" + result.UserName + "\"><img height=\"48\" width=\"48\" src=\"" + result.ProfileImageUrl + "\" align=\"left\" /></a></td>";
                html += "<td><p><span class=\"user\"><a target=\"_blank\" href=\"http://twitter.com/" + result.UserName + "\">" + result.UserName + "</a></span> ";
                html += result.Text + "</p><p class=\"meta\"><a target=\"_blank\" class=\"relativeTime\" href=\"" + result.Permalink + "\" title=\"" + result.IsoTime + "\"></a> from " + result.ClientLink;
                if (result.IsReply) {
                    html += " <a href=\"http://twitter.com/" + result.InReplyToUser + "/statuses/" + result.InReplyToId + "\">in reply to " + result.InReplyToUser + "</a>"
                }
                html += "</p></td></tr>";

                $("#statuses").append(html);
            });

            if (twitterjs.autoScroll) $("#statusContainer").scrollTo(99999);
            $(".relativeTime").prettyDate();
        }
        catch(err)
          {
          //Handle errors here
          }
        },
        refreshUsers: function(json) {
        try{
            //alert(json.users);
            $.each(json.users, function(i, user) {
               // if (i < 2) alert(user.profile_image_url);
            var html = "<p class=\"userInfo\"><img src=\"" + user.profile_image_url + "\" align=\"left\" />" + user.name + "<br/><a href=\"http://twitter.com/" + user.screen_name + "\" target=\"_blank\">@" + user.screen_name + "</a>"
                html += "<br/><span class=\"caption\">" + user.followers_count + " followers</span></p>"
                $("#users").append(html);

            });
        }
        catch (err) {
            //Handle errors here
        }
        }



    }

$(document).ready(function() {

twitterjs.getUpdates();
twitterjs.getUsers();

    $("#statusContainer").scroll(function() {
        autoScroll = this.scrollTop + this.clientHeight == this.scrollHeight;
        if (autoScroll) {
            $("#autoScrollOn").show();
            $("#autoScrollOff").hide();
        }
        else {
            $("#autoScrollOff").show();
            $("#autoScrollOn").hide();
        }
    });
});
