﻿// variaveis de configuracao
var hashtag = '@zeppelinfilmes'; // define a hashtag a ser buscada
var resultsNumber = 10; // quantidade de tweets na busca

//var refreshTime = 60 * 1000; //1 minuto - tempo de atualizacao automatica

// template dos itens e do loader
var itemTemplate = '<div class="tweet"><span class="text">{tweet}</span><span class="name">@{userName}</span></div>';
var loadingTemplate = '<div class="loader"><img src="/img/ajax-loader.gif" alt="" />&nbsp;</div>';

// variaveis globais
var timeline;
var tweetsWrap;
var controls;
//var timer;
var tweetHeight;
var page = 0;

$(document).ready(function () {

    timeline = $('.timeline-twitter');
    tweetsWrap = $('#tweets-wrap');
    controls = $('.timeline-controls');

    loadTimelineData();

    controls.find('.menos').click(function () {
        tweetsWrap.stop();

        var previousPage = ((page - 1) * tweetHeight) * (-1); //-0

        tweetsWrap.animate({ 'top': (previousPage + 'px') }, 500, "easeOutExpo");
        page--;
        showHideControls();

        return false;
    });

    controls.find('.mais').click(function () {
        tweetsWrap.stop();

        var nextPage = ((page + 1) * tweetHeight) * (-1); //-242
        
        tweetsWrap.animate({ 'top': (nextPage + 'px') }, 500, "easeOutExpo");
        page++;
        showHideControls();

        return false;
    });

    controls.find('.atualizar').click(function () {
        loadTimelineData();
    });
});

function showHideControls() {
    var height = tweetsWrap.height(); //484
    var bottomLimit = 0;
    var topLimit = (height - tweetHeight) * (-1);
    var current = ((page) * tweetHeight) * (-1);

    if (current >= bottomLimit)
        controls.find('.menos').hide();
    else
        controls.find('.menos').show();

    if (current <= topLimit)
        controls.find('.mais').hide();
    else
        controls.find('.mais').show();
}

function loadTimelineData() {

    // volta a timeline para o início
    page = 0;
    tweetsWrap.css('top', '0px');
    showHideControls();

    var profileImageSize = 'bigger';
    var container = $('#tweets-wrap');

    var profileImageUrl = "http://api.twitter.com/1/users/profile_image/{userName}.json?size=" + profileImageSize;
    var originalHashTag = hashtag;

    // remove o # da hashtag caso tenha
    if (hashtag.indexOf('#') >= 0) {
        var r = new RegExp("(#)", "gi");
        hashtag = hashtag.replace(r, "%23");
    }
    else if (hashtag.indexOf('@') >= 0) {
        hashtag = hashtag.replace("@", "from%3A");
    }

    // define a url de busca
    var searchUrl = "http://search.twitter.com/search.json?show_user=true&callback=?&result_type=recent&q=" + hashtag + "&rpp=" + resultsNumber + "&page=1";

    // limpa o container
    container.html('');
    // adiciona o loader
    container.append(loadingTemplate);

    try {
        // faz a chamada json na API
        $.getJSON(searchUrl, function (data) {
            $.each(data.results, function (i, item) {

                var html = itemTemplate;

                if (profileImageSize != undefined && profileImageSize != '') {
                    html = html.replace("{userImg}", profileImageUrl.replace("{userName}", item.from_user));
                } else {
                    html = html.replace("{userImg}", item.profile_image_url);
                }

                html = html.replace("{userImg}", item.profile_image_url);
                html = html.replace("{userName}", item.from_user);
                html = html.replace("{tweet}", item.text);

                var splitted = originalHashTag.split("+OR+");
                for (var i = 0; i < splitted.length; i++) {
                    var regExp = new RegExp("(" + splitted[i] + ")", "gi");
                    html = html.replace(regExp, '<b>$1</b>');
                }

                html = html.replace("{userLink}", item.from_user);
                html = html.replace("{userName}", item.from_user);

                container.append(html);
            });

            // oculta o loader
            container.find('.loader').remove();

            if (container.html() == '')
                container.append('<div style="width:100%; text-align:center;">Não há tweets para serem exibidos.</div>')

            tweetHeight = timeline.find('.tweet').outerHeight(true);

            showHideControls();

            //if (timer == null || timer == undefined)
            //    timer = setInterval('loadTimelineData()', refreshTime);
        });
    }
    catch (ex) { alert(ex); }

}
