﻿function loadTwitterFeed(targetElement, twitterUrl) {

    $.getJSON(twitterUrl, function (data) {

        var n = data.length;
        if (n == undefined) n = data.results.length;
        if (n > 2) n = 2;

        for (var i = 0; i < n; i++) {

            if (data[i] != undefined) var tweet = data[i];
            else var tweet = data.results[i];

            if (tweet.text !== undefined) {

                var image = null;
                var header = null;
                var footer = null;
                var text = tweet.text;

                var date_tweet = new Date(Date.parse(tweet.created_at));
                var date_now = new Date();
                date_tweet.setTime(date_tweet.getTime() - (date_now.getTimezoneOffset() * 60 * 1000));

                if (date_tweet.toDateString() != date_now.toDateString())
                    footer = date_tweet.toDateString();
                else if (date_tweet.getHours() != date_now.getHours())
                    footer = "" + (date_now.getHours() - date_tweet.getHours()) + " hours ago";
                else
                    footer = "" + (date_now.getMinutes() - date_tweet.getMinutes()) + " minutes ago";


                if (tweet.user != undefined) {
                    image = "<img src='" + tweet.user.profile_image_url + "' alt='" + tweet.user.name + "' />";
                    header = "<h6><a href='https://twitter.com/#!/" + tweet.user.screen_name + "' target='_blank'>" + tweet.user.name + "</a> says:</h6>";
                }
                else {
                    image = "<img src='" + tweet.profile_image_url + "' alt='" + tweet.from_user + "' />";
                    header = "<h6><a href='https://twitter.com/#!/" + tweet.from_user + "' target='_blank'>" + tweet.from_user + "</a> says:</h6>";
                }

                if (tweet.entities != undefined) {

                    var t = new Array();

                    $.each(tweet.entities.user_mentions, function (j, user_mentions) {
                        var replacement = text.substring(user_mentions.indices[0], user_mentions.indices[1]);
                        replacement = "<a href='https://twitter.com/#!/search?q=" + replacement + "' target='_blank'>" + replacement + "</a>";
                        t.push({ 'start': user_mentions.indices[0], 'end': user_mentions.indices[1], 'type': 'user', 'text': replacement });
                    });

                    $.each(tweet.entities.urls, function (j, url) {
                        var replacement = text.substring(url.indices[0], url.indices[1]);
                        replacement = "<a href='" + url.url + "' target='_blank'>" + url.display_url + "</a>";
                        t.push({ 'start': url.indices[0], 'end': url.indices[1], 'type': 'url', 'text': replacement });
                    });

                    $.each(tweet.entities.hashtags, function (j, htag) {
                        var replacement = text.substring(htag.indices[0], htag.indices[1]);
                        replacement = "<a href='https://twitter.com/#!/%23" + htag.text + "' target='_blank'>" + replacement + "</a>";
                        t.push({ 'start': htag.indices[0], 'end': htag.indices[1], 'type': 'hashtag', 'text': replacement });
                    });

                    t.sort(function (a, b) { return a.start - b.start; });

                    var builder = "";
                    var index = 0;
                    for (k = 0; k < t.length; k++) {
                        var item = t[k];
                        builder = builder + text.substring(index, item.start) + item.text;
                        index = item.end;
                    }
                    builder = builder + text.substring(index, text.length);
                    text = builder;
                }

                text = "<p>" + text + "</p>";
                footer = "<span>" + footer + "</span>";

                if (i < (n - 1)) $(targetElement).append("<li>" + image + header + text + footer + "</li>");
                else $(targetElement).append("<li class='last'>" + image + header + text + footer + "</li>");

            }
        }
    });
}
