function twGetId(idName) {
  if (!document.getElementById(idName)) return false;
  return document.getElementById(idName);
}

function twEmpty (mixed_var) {
    var key;
     
    if (mixed_var === "" ||
        mixed_var === 0 ||
        mixed_var === "0" ||
        mixed_var === null ||
        mixed_var === false ||
        mixed_var === undefined
    ){
        return true;
    }
 
    if (typeof mixed_var == 'object') {
        for (key in mixed_var) {
            return false;
        }
        return true;
    }
 
    return false;
}

function twTrim(stringToTrim) {
    return stringToTrim.replace(/^\s+|\s+$/g,"");
}

$(document).ready(function() {
    $.extend($.fn.disableTextSelect = function() {
        $(this).blur();
        return this.each(function(){
            if($.browser.mozilla){     //Firefox
                $(this).css('MozUserSelect','none');
            }else if($.browser.msie){  //IE
                $(this).bind('selectstart',function(){return false;});
            }else{                     //Opera, etc.
                $(this).mousedown(function(){return false;});
            }
        });
    });

    $('#tw_page').corner('tr br');
    $('#tw_top_menu').corner('tl');
    $('.tw_box').corner();
    $('#tw_follow_box').corner();

    if ( $("#tw_trends").length ) {
        var trendCount = 0;
        var search_q = $("#hid_search_q").html();
        $.getJSON("http://search.twitter.com/trends.json?exclude=hashtags&callback=?", 
        function(json){ 
            $.each(json.trends, function(i, val) {     
                $("#tw_trends").append('<div><a href="' + search_q + 'q_' + val.name + '">' + val.name + '</a></div>'); 
                trendCount++;
            });
            if ( !trendCount ) {
                $("#tw_trends").html('<div class="tw_align_center" style="font-size:smaller;">' 
                                     + $("#hid_failed_retrieving_trends").html() 
                                     + '</div>');
            }
            $("#tw_trend_process_bar")
                            .fadeOut("slow")
                            .queue(function() {
                                $(this).remove();
                            });
        }); 
    }

    $('#tw_content .tw_status, #tw_content .tw_status_big').live("mouseover", function() {
        $(this).css('background-color', '#f7f7f7');
        $(this).find('.tw_icon_delete').show();
        $(this).find('.tw_icon_reply').show();
    })
    .live("mouseout", function() {
        $(this).css('background-color', '#ffffff');
        $(this).find('.tw_icon_delete').hide();
        $(this).find('.tw_icon_reply').hide();
    });

    $("#tw_follow").click(
    function () {
          $(this).toggleClass("closed");
          $(this).toggleClass("opened");
          $("#tw_follow_box").toggle();
    });

    $('#tw_ajax_more').mouseover(function() {
        $(this).removeClass('tw_more_link');
        $(this).addClass('tw_more_hover');

        $(this).mousedown(function() {
            $(this).removeClass('tw_more_hover');
            $(this).addClass('tw_more_active');
        }).mouseup(function() {
            $(this).removeClass('tw_more_active');
            $(this).addClass('tw_more_hover');
        });

    })
    .mouseout(function() {
        $(this).removeClass('tw_more_active');
        $(this).removeClass('tw_more_hover');
        $(this).addClass('tw_more_link');
    });

    var $tw_ajax_more = $('#tw_ajax_more');
    $tw_ajax_more.live("click",
    function() {
        var ajax_more_url      = $("#ajax_more_url").html();
        var ajax_last_m_id     = $("#ajax_last_m_id").html();
        var ajax_is_search     = $("#ajax_is_search").html();
        var ajax_search_params = $("#ajax_search_params").html();
        if ( ajax_is_search == 1 ) {
            var whole_url = ajax_more_url + ajax_search_params;
        } else {
            var whole_url = ajax_more_url + "lastrowtweetid_" + ajax_last_m_id;
        }
        $.ajax({
            type: "GET",
            url: whole_url,
            cache: false,
            beforeSend: function() {
                $('.tw_message').remove(); 
                $('#ajax_last_m_id').remove(); 
                $('#ajax_total_rows').remove(); 
                $('#ajax_search_params').remove(); 
                $tw_ajax_more.hide(); 
                $("#tw_ajax_more_load").show();
            },
            success: function(html){
                $("#tw_content").append(html);
                $("#tw_ajax_more_load").hide();
                    /* Results counter retreived by ajax */
                var ajax_total_rows = $("#ajax_total_rows").html();
                if ( ajax_total_rows > 0 )      // hide it if no results were shown
                {
                    $tw_ajax_more.show(); 
                }
            }
        });
    })
    .disableTextSelect();
    
    $("#tw_update_button").live("click",
    function() {
        var ajax_update_url = $("#ajax_update_url").html();
        $.ajax({
            type: "POST",
            url: ajax_update_url,
            data: { update: $("#tw_text").val(), submit_btn: "submit" },
            cache: false,
            beforeSend: function() {
                $(".tw_message").remove(); 
                $("#tw_update_button").attr('disabled','disabled');
                $("#tw_ajax_warning").hide(); 
                $("#tw_textCounter").hide(); 
                $("#tw_ajax_update_loader").show();
            },
            success: function(html){
                $("#latest_tweet").html($(html).find(".tw_tweet_text").html());
                $("#latest_date").html($(html).find(".tw_tweet_date").html());
                $("#tw_content").prepend(html);
                $("#tw_ajax_update_loader").hide();
                $("#tw_textCounter").show(); 
                $("#tw_update_button").removeAttr('disabled').blur();
                $("#tw_text").val('');
                twTextCounter(twGetId('tw_text'), twGetId('tw_textCounter'), 140); 
            }
        });
        return false;
    });

    /* Blurred 'Search Tweet' text and empty when focused */
    $("#tw_search_input").focus(function() {
        if (this.value == this.defaultValue) {
            this.value = '';
            this.style.color = '#000000';
        }
    });
    $("#tw_search_input").blur(function() {
        if (this.value == '') {
            if ( this.defaultValue ) {
                this.value = this.defaultValue;
                this.style.color = '#a0a0a0';
            } else {
                this.value = '';
                this.style.color = '#000000';
            }
        }
    });

    /* Prevent search submit if empty */
    $("#tw_form_search").submit(function() {
        if ($("#tw_search_input").val() != "") {
            $('#tw_search_submit').hide();
            $('#tw_search_submit_spin').show();
            return true;
        }
        return false;
    });

    /* Submit form if image button is clicked */
    $("#tw_search_submit").click(function() {
        $("#tw_search_input").focus();          // Trigger validation
        $("#tw_form_search").submit();
    });

});

function twDeleteTweet(message, deletelink, tweetid)
{
    var $tweet = $("#tweet_" + tweetid);
    var option = confirm(message);
    if ( option )
    {
        $.ajax({
            type: "GET",
            url: deletelink,
            cache: false,
            beforeSend: function() {
                $tweet
                    .css('background-color', '#FFEFEF')
            },
            success: function(html){
            var ajaxresult = twTrim(html);
                if (  ajaxresult.search(/###success###/) != -1 )
                {
                    $tweet
                        .fadeOut("slow")
                        .queue(function() {
                            $tweet.remove();
                        });
                }
                else if ( !twEmpty(ajaxresult) )
                {
                    $tweet.append(ajaxresult);
                }
            }
        });
    }
    return false;
}

function twAddReply(sScreenName)
{
    $('html, body').animate({scrollTop:0}, 'slow');
    if (! (twGetId('tw_text').value.substring(0,1) == '@'))
    {
        twGetId('tw_text').value = sScreenName + ' ' + twGetId('tw_text').value;
    }
    twTextCounter(twGetId('tw_text'), twGetId('tw_textCounter'), 140); 
    $("#tw_text").focus(); 
}

function twTextCounter(field, countfield, maxlimit) 
{
    var $tw_update_button = $('#tw_update_button');
    if (field.value.length > 0 && field.value.length <= maxlimit)
    {
        $tw_update_button.css('color','#666666');
        $tw_update_button.removeAttr('disabled');
        $tw_update_button.addClass('tw_update_hover');

    }
    else
    {
        $tw_update_button.css('color','#aaaaaa');
        $tw_update_button.attr('disabled','disabled');
        $tw_update_button.removeClass('tw_update_hover');
    }

    if (field.value.length > maxlimit + 90)
    {
        field.value = field.value.substring(0, maxlimit + 90);
    }
    else 
    {
        countfield.value = maxlimit - field.value.length;
    }

    /* ----->>> To change text counter colors */
    if (field.value.length > maxlimit)
    {
        countfield.style.color = '#D40D12';
    }
    else if (field.value.length > (maxlimit - 10))
    {
        countfield.style.color = '#5C0002';
    }
    else
    {
        countfield.style.color = '#CCCCCC';
    }
    /* <<<----- To change text counter colors */

    /* ----->>> Change to Page Title to Reply to screen_name: */
    if ( field.value.substring(0,1) == '@' )
    {
        var screenName = field.value.substring(1+field.value.indexOf('@'), field.value.indexOf(' '));

        if (screenName.length > 3)
        {
            var currentTitle = twGetId('tw_logo').innerHTML      + ' ' + screenName;
            var newTitle     = twGetId('hid_reply_to').innerHTML + ' ' + screenName;

            if ( currentTitle != newTitle )
            {
                twGetId('tw_logo').innerHTML = newTitle + ':';
                twGetId('tw_update_button').value = twGetId('hid_but_reply').innerHTML;
            }
        }
    }
    else
    {
        if ( twGetId('tw_logo').innerHTML != twGetId('hid_what_doing').innerHTML )
        {
            twGetId('tw_logo').innerHTML = twGetId('hid_what_doing').innerHTML;
            twGetId('tw_update_button').value = twGetId('hid_but_update').innerHTML;
        }
    }
    /* <<<----- Change to Page Title to Reply to screen_name: */
}



