﻿// Twitter stream js:
jQuery.fn.reverse = Array.prototype.reverse;
String.prototype.linkify = function() {
    return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g, function(m) {
        return m.link(m);
    });
};

String.prototype.linkuser = function() {
    return this.replace(/[@]+[A-Za-z0-9-_]+/g, function(u) {
        var username = u.replace("@", "")
        return u.link("http://twitter.com/" + username);
    });
};

String.prototype.linktag = function() {
    return this.replace(/[#]+[A-Za-z0-9-_]+/, function(t) {
        var tag = t.replace("#", "%23")
        return t.link("http://search.twitter.com/search?q=" + tag);
    });

};
function fetch_tweets(elem) {
    elem = jQuery(elem);
    input = elem.attr('title');
    //lang = elem.attr('lang');
    if (input != window.twitter['text-' + input]) {
        window.twitter['last_id' + input] = 0;
        window.twitter['text-' + input] = input;
        window.twitter['count-' + input] = 12; ;
    }


    if (window.twitter['count-' + input] > 10) {
        elem.prepend('<div class="tweet"><img src="http://monitter.com/widget/favicon.gif" align="absmiddle" />real time twitter by: <a href="http://monitter.com" target="_blank">monitter.com</a></div>');
        window.twitter['count-' + input] = 0;
    }


    //var url = "http://search.twitter.com/search.json?q=" + input + "&lang=" + lang + "&rpp=" + rrp + "&since_id=" + window.twitter['last_id' + input] + "&callback=?";

    var url = "http://search.twitter.com/search.json?q=" + input + "&rpp=" + rrp + "&since_id=" + window.twitter['last_id' + input] + "&callback=?";

    jQuery.getJSON(url, function(json) {
        jQuery('div.tweet:gt(' + window.twitter['limit'] + ')', elem).each(function() { jQuery(this).fadeOut('slow') });

        jQuery(json.results).reverse().each(function() {
            if (jQuery('#tw' + this.id, elem).length == 0) {
                window.twitter['count-' + input]++;

                var thedate = new Date(Date.parse(this.created_at));
                var thedatestr = thedate.getHours() + ':' + ((thedate.getMinutes() < 10) ? '0' + thedate.getMinutes() : thedate.getMinutes());

                var divstr = '<div id="tw' + this.id + '" class="tweet"><img width="48" height="48" src="' + this.profile_image_url + '" ><p class="text">' + this.text.linkify().linkuser().linktag() + '<br />&nbsp;<b><a href="http://twitter.com/' + this.from_user + '" target="_blank">' + this.from_user + '</a></b> &nbsp;-&nbsp;<b>' + thedatestr + '</b></p></div>';

                window.twitter['last_id' + input] = this.id;

                elem.prepend(divstr);
                jQuery('#tw' + this.id, elem).hide();
                jQuery('#tw' + this.id + ' img', elem).hide();
                jQuery('#tw' + this.id + ' img', elem).fadeIn(4000);
                jQuery('#tw' + this.id, elem).fadeIn('slow');
            }
        });
        input = escape(input);
        rrp = 1;
        setTimeout(function() { fetch_tweets(elem) }, 5000);
    });

    return (false);
}

jQuery(document).ready(function() {
    window.twitter = {};
    rrp = dnn.getVar("TweetCount");
    jQuery('.monitter').each(function(e) {

        fetch_tweets(this);
    });

    jQuery('#slidebox').slideDown(1000);
});