(function ($) {
    /*
    jquery.twitter.js v1.0
    Last updated: 26 October 2008

    Created by Damien du Toit
    http://coda.co.za/blog/2008/10/26/jquery-plugin-for-twitter

    Licensed under a Creative Commons Attribution-Non-Commercial 3.0 Unported License
    http://creativecommons.org/licenses/by-nc/3.0/
    */

    $.fn.getTwitter = function (options) {

        var o = $.extend({}, $.fn.getTwitter.defaults, options);

        // hide container element
        //$(this).hide();

        // add heading to container element
//        if (o.showHeading) {
//            //$(this).append('<h2>'+o.headingText+'</h2>');
//            $(this).append('<h3 class="orange" style="padding-left:10px;padding-top:10px;">' + o.headingText + '</h3><br />');
//        }

        // add twitter list to container element
        //$(this).append('<ul id="twitter_update_list"></ul>');

        // hide twitter list
        $("ul#twitter_update_list").hide();

        // add preLoader to container element
        var pl = $('<p id="' + o.preloaderId + '">' + o.loaderText + '</p>');
        $(this).append(pl);

        // add Twitter profile link to container element
        //		if (o.showProfileLink) {
        //		    $(this).append('<a id="profileLink" href="http://twitter.com/' + o.userName + '">F&#248;lg os p&#229; Twitter!</a>');
        //		}

        // show container element
        //$(this).show();

        //		$.getScript("http://twitter.com/javascripts/blogger.js");
        //		$.getScript("http://twitter.com/statuses/user_timeline/" + o.userName + ".json?callback=twitterCallback2&count=" + o.numTweets, function () 
        //        {
        //			// remove preLoader from container element
        //			$(pl).remove();

        //			// show twitter list
        //			if (o.slideIn) {
        //				$("ul#twitter_update_list").slideDown(1000);
        //			}
        //			else {
        //				$("ul#twitter_update_list").show();
        //			}

        //			// give first list item a special class
        //            $("ul#twitter_update_list li:first").addClass("firstTweet");
        //            

        //			// give last list item a special class
        //			$("ul#twitter_update_list li:last").addClass("lastTweet");
        //});



        $.getJSON(
				'http://search.twitter.com/search.json?callback=?&rpp=3&q=from:Gyldendal',
				function (data) {
				    //alert('got data');
				    $(pl).remove();
				    $.each(data, function (i, tweets) {
				        if (tweets.length != undefined) {
				            if (tweets[0] != undefined) {
				                if (tweets[0].created_at != undefined) {

				                    for (var i = 0; i < tweets.length; i++) {
				                        $("#twitter_update_list").append("<li>" +
                                        "<span style='display:block;'>" +
									        "<a class='twitter_link twitter_fromuser' href='http://www.twitter.com/" + tweets[i].from_user + "' target='_blank'>" + tweets[i].from_user + "</a> " +
									        "<span class='twitter_time' >" + getRelativeTime(new Date(tweets[i].created_at)) + "</span>" + 
                                        "</span>" +
									    "<span class='twitter_text' >" + replaceURLs(tweets[i].text) + "</span>"
									+ "</li>");
				                    }

				                }
				            }
				        }
				    });

				    // show twitter list
				    $("ul#twitter_update_list").slideDown(900);
				    $("ul#twitter_update_list li:first").addClass("firstTweet");
				    $("ul#twitter_update_list li:last").addClass("lastTweet");

				});





    };

    // plugin defaults
    $.fn.getTwitter.defaults = {
        userName: null,
        numTweets: 5,
        preloaderId: "preloader",
        loaderText: "Loading tweets...",
        slideIn: false,
        showHeading: true,
        headingText: "Latest Tweets",
        showProfileLink: true
    };
})(jQuery);



$(document).ready(function () {


    $("#twitter").getTwitter({
        userName: "Gyldendal",
        numTweets: 5,
        loaderText: "Loading tweets...",
        slideIn: true,
        showHeading: true,
        headingText: "Gyldendal p&#229; Twitter",
        showProfileLink: false
    });

    //    $twitterDiv = $("#twitter");
    //    $twitterDiv.append('<h3 class="orange" style="padding-left:10px;padding-top:10px;">Gyldendal p&#229; Twitter</h3><br />');

    //    // add twitter list to container element
    //    $twitterDiv.append('<ul id="twitter_update_list"><li></li></ul>');

    //    // hide twitter list
    //    $("ul#twitter_update_list").hide();

    //    // add preLoader to container element
    //    var pl = $('<p id="preloader">Loading tweets...</p>');
    //    $twitterDiv.append(pl);


    //         var jsonTwitterFeed = "http://twitter.com/statuses/user_timeline/gyldendal.json?count=5";

    //         $.ajax({
    //            url: jsonTwitterFeed,
    //            data: {},
    //            dataType: "jsonp",
    //            callbackParameter: "callback",
    //            timeout: 50000,
    //            success: function (data) {
    //                         
    //                $(pl).remove();

    //                $.each(data, function (key, val) {
    //                    $("#twitter_update_list").append("<li>" + replaceURLWithHTMLLinks(val.text) + "</li>");
    //                });

    //                // show twitter list
    //                $("ul#twitter_update_list").slideDown(500);
    //                $("ul#twitter_update_list li:first").addClass("firstTweet");
    //                $("ul#twitter_update_list li:last").addClass("lastTweet");            
    //         },
    //         error: function(XHR, textStatus, errorThrown){
    //             alert("ERREUR: " + textStatus);
    //             alert("ERREUR: " + errorThrown);
    //         }
    //     });
    //         function replaceURLWithHTMLLinks(text) {
    //            var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
    //            return text.replace(exp,"<a href='$1'>$1</a>");
    //         }
});


// Utility functions
replaceURLs = function (text) {
    text = text.replace(/((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi, "<a class='twitter_link' href='$1' target='_blank'>$1</a>");
    text = text.replace(/([\@])([A-Za-z0-9-_]+)/gi, "<a class='twitter_link' href='http://www.twitter.com/$2' target='_blank'>$1$2</a>");
    text = text.replace(/([\#])([A-Za-z0-9-_]+)/gi, "<a class='twitter_link' href='http://search.twitter.com/search?q=%23$2' target='_blank'>$1$2</a>");
    return text;
}


getRelativeTime = function (tweetDate) {
    var current = new Date();

    var secDiff = current.getSeconds() - tweetDate.getSeconds();
    var minDiff = current.getMinutes() - tweetDate.getMinutes();
    var hourDiff = current.getHours() - tweetDate.getHours();
    var dayDiff = current.getDate() - tweetDate.getDate();

    if (dayDiff >= 5) {
        var AMPM = "PM";
        var myHours;
        if (tweetDate.getHours() < 12) {
            AMPM = "AM";
            if (tweetDate.getHours() == 0) {
                myHours = "12";
            } else {
                myHours = tweetDate.getHours();
            }
        } else {
            myHours = tweetDate.getHours() - 12;
        }

        var myDate = tweetDate.getDate() + "th";
        if (tweetDate.getDate() == 1 || tweetDate.getDate() == 21 || tweetDate.getDate() == 31) {
            myDate = tweetDate.getDate() + "st";
        } else if (tweetDate.getDate() == 2 || tweetDate.getDate() == 22) {
            myDate = tweetDate.getDate() + "nd";
        } else if (tweetDate.getDate() == 3 || tweetDate.getDate() == 23) {
            myDate = tweetDate.getDate() + "rd";
        }
        timeDiff = myHours + ":" + tweetDate.getMinutes() + " " + AMPM + " " + base.months[tweetDate.getMonth()] + " " + myDate;
    }

    else if (dayDiff > 0 && dayDiff < 5) {
        timeDiff = dayDiff + (dayDiff == 1 ? " day" : " days");
    }
    else if (hourDiff > 0) {
        timeDiff = "about " + hourDiff + (hourDiff == 1 ? " hour" : " hours");
    }
    else if (minDiff > 0) {
        timeDiff = "about " + minDiff + (minDiff == 1 ? " minute" : " minutes");
    }
    else if (secDiff > 0) {
        timeDiff = "about " + secDiff + (secDiff == 1 ? " second" : " seconds");
    }

    return timeDiff;

}
    

   


