// -----------------------------------------
// Copyright 2009. www.veetter.com
// sergiu.toderascu@gmail.com
// -----------------------------------------

(function($) {

    userName: null;
    tweets: 5;
    veetterDiv: 'veetter';
    loaderText: "Loading tweets...";

    loader_div = $("<div class=\"veetter-loader\"></div>");
    userinfo_div = $("<div class=\"veetter-user-info\"></div>");
    tweets_div = $("<ul class=\"veetter-tweets\"></ul>");

    var veetterDiv, loaderText, tweets;

    $.veetter = {

        vars: function(option) { // variables
            userName = option.userName;
            tweets = option.tweets ? option.tweets : tweets;
            veetterDiv = option.veetterDiv ? option.veetterDiv : veetterDiv;
            vDiv = $("#" + veetterDiv);
            loaderText = option.loaderText ? option.loaderText : loaderText;

        }, //variables

        go: function(option) { // go		
            this.vars(option);
            if (vDiv.length > 0) {
                this.loading();
                this.getTwitter();
            } else { alert('veetter container not found!') }
        }, //go

        loading: function() { // loading
            loader_div.append(loaderText);
            vDiv.append(loader_div);
        }, // loading

        getTwitter: function() {// getTwitter
            var url = "http://twitter.com/status/user_timeline/" + userName + ".json?count=" + tweets + "&callback=?";

            $.ajax({
                url: url,
                dataType: 'json',
                success: function(data) {

                    loader_div.remove();
                    vDiv.append(tweets_div);
                    /*
                    $.each(data, function(i, item) {
                    tweets_div.append('<li id="' + item.id + '">' + $.veetter.makeLinks(item.text) +
                    "<p class='status'>Posted from " + item.source + "</p>" +
                    '</li>');
                    $("ul.veetter-tweets li:first").attr('class', 'veetter-status-last');
                    })
                    */
                    $.each(data, function(i, item) {
                        tweets_div.append('<li id="' + item.id + '">' + $.veetter.makeLinks(item.text) +
                    "<p class='status'><a href='http://twitter.com/" + data[0].user.screen_name + "/status/" + item.id + "' target='_blank'>" +
                    $.veetter.cTime(item.created_at) + "</a> from " + item.source + "</p>" +
                    '</li>');
                        $("ul.veetter-tweets li:first").attr('class', 'veetter-status-last');
                    })

                }
            });

        }, // getTwitter

        makeLinks: function(text) { // makeLinks

            var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
            text = text.replace(exp, "<a href='$1' class='veetter-link' target='_blank'>$1</a>");

            var exp = /[\@]+([A-Za-z0-9-_]+)/ig;
            text = text.replace(exp, "@<a href='http://twitter.com/$1' class='veetter-link-profile' target='_blank'>$1</a>");

            var exp = /[\#]+([A-Za-z0-9-_]+)/ig;
            text = text.replace(exp, "<a href='http://twitter.com/search?q=$1' class='veetter-link-hash' target='_blank'>#$1</a>");

            return text;
        }, // makeLinks

        cTime: function(time_value) {
            var parsed_date = Date.parse(time_value);
            var baddate = time_value.split(" ");
            var newdate = baddate[1] + " " + baddate[2] + ", " + baddate[5] + " " + " ";

            var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
            var delta = parseInt((relative_to.getTime() - newdate) / 1000);

            return newdate;

/*
            alert(newdate);

            if (delta < 60) {
                return 'less than a minute ago';
            } else if (delta < 120) {
                return 'about a minute ago';
            } else if (delta < (45 * 60)) {
                return (parseInt(delta / 60)).toString() + ' minutes ago';
            } else if (delta < (90 * 60)) {
                return 'about an hour ago';
            } else if (delta < (24 * 60 * 60)) {
                return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
            } else if (delta < (48 * 60 * 60)) {
                return '1 day ago';
            } else {
                return (parseInt(delta / 86400)).toString() + ' days ago';
            }
*/
        }



    };
})(jQuery);