/* Tweeting javascript file */


function tweetBoxBeforeTweet() {
    $('#tweet_box button').html('<img src="/site_media/img/ajax-loader.gif" alt="loading..."/>');
    $('#tweet_box button').attr('disabled', 'disabled');
    $('#tweet_box').addClass('disabled');
}


function tweetBoxAfterTweet() {
    $('#tweet_box button').html('Tweet');
    $('#tweet_box button').removeAttr('disabled');
    $('#tweet_box').removeClass('disabled');
}


function submitTweet(e) {
     var tweetText = $("textarea", this).val();
     tweet(tweetText);
     closeTweet()
     return e.preventDefault();
}


function closeTweet() {
    message('');
}


function tweetError(XMLHttpRequest, textStatus, errorThrown) {
    message('Sorry, we encountered a problem updating your statuses. Please retry later.', 'error_message');
    tweetBoxAfterTweet();
}


function tweetOk(data, textStatus) {
    message('Tweet accompli!', 'info_message');
    $('#tweet_box').slideUp(500);
    tweetBoxAfterTweet();
}


function tweet(text) {
    if (userData) {
        tweetBoxBeforeTweet();
        var data = {'tweet': escape(text), 'csrfmiddlewaretoken': $('#csrfmiddlewaretoken').val()};
        $.ajax({
            type: "POST",
            dataType: "json",
            url: siteUrls.actions,
            data: data,
            timeout: 30000,
            error: tweetError,
            success: tweetOk
        });
    } else {
        window.open('http://twitter.com/home/?status=' + encodeURIComponent(text), '_blank');
    }
}


if (typeof(BitlyCB) == 'undefined')
    BitlyCB = {};


BitlyCB.shortenResponse = function(data) {
    var firstItem;
    for (var longUrl in data.results) {
        firstItem = data.results[longUrl];
        break;
    }
    var shortUrl = firstItem
        ? firstItem['shortUrl']
        : url;

    var text = searchTextGetTweetText(shortUrl);
    $('#tweet_box textarea').val(text);
    remainingCharacters();
    $('#tweet_box button').html('Tweet');
    $('.bitLy .twiBox').html('<a href="' + shortUrl + '" title="link to this search page">' + shortUrl + '</a>');
    $('.bitLy').css('visibility', 'visible');

    //if ($('#displayType').val() == 'map') {
        tweetDialog = $("#tweet_box").overlay({
            api: true,
            expose: '#000',
            closeOnClick: false,
            top: 275,

            close: '',
            onBeforeLoad: function() { $('#tweet_box #close').click(function() { tweetDialog.close(); }).show(); },
            onClose: function() { $('#tweet_box #close').hide(); }
        });
    /*} else {
        $('#tweet_box').css({
            'left': 0,
            'position': 'relative',
            'top': 0
        }).find('.close').remove();
        tweetDialog = false;
    }*/
    $('#tweet_box form').submit(function(e) {
        if (userData) {
            if (tweetDialog) {
                tweetDialog.close();
            }
            var tweetText = $('#tweet_box textarea').val();
            tweet(tweetText);
            return e.preventDefault();
        } else {
            signInWithTwitter();
            return e.preventDefault();
        }
    });
}


function remainingCharacters() {
    var tweetText = $("#tweet_box textarea").val();
    if (tweetText.length > 140) {
        $("#tweet_box textarea").val(tweetText.substr(0, 140));
    }
    var remaining = 140 - $("#tweet_box textarea").val().length;
    $("#tweet_box h3").text(remaining);
}


function remainingCharactersTable() {
    var areas = $("#tweet_table textarea")
    for (var i = 0; i < areas.length; i++) {
        var tweetText = $(areas[i]).val();
        if (tweetText.length > 140) {
            $(areas[i]).val(tweetText.substr(0, 140));
        }
        var remaining = 140 - $(areas[i]).val().length;
        $($(areas[i]).next().children('h2')[0]).text(remaining);
    }
}


function tweetBoxLoad(url) {
    if (!url) {
        url = document.location.href;
    }
    BitlyClient.shorten(url, 'BitlyCB.shortenResponse');
}


function tweetBoxFocus() {
    if (userData) {
        //if ($('#displayType').val() == 'map')
            tweetDialog.load();
        /*else {
            $('#tweet_box').show();
            $.scrollTo('#tweet_box', 1000, { 'offset': -$('.searchBar').height() - 50 });
        }*/
        $('#tweet_box textarea')[0].focus();
    } else
        signInWithTwitter();
}


function initialize() {
    $("#tweet_box textarea").keyup(remainingCharacters);
    tweetDialog = false;
}


$(initialize);
