/*
 * JavaScript Pretty Date
 * Copyright (c) 2008 John Resig (jquery.com)
 * Licensed under the MIT license.
 */

// Takes an ISO time and returns a string representing how
// long ago the date represents.
function prettyDate(time){
	var date = new Date((time || "").replace(/-/g,"/").replace(/[TZ]/g," ")),
		diff = (((new Date()).getTime() - date.getTime()) / 1000),
		day_diff = Math.floor(diff / 86400);

	if ( isNaN(day_diff) || day_diff < 0 || day_diff >= 31 )
		return;

	return day_diff == 0 && (
			diff < 60 && "just now" ||
			diff < 120 && "1 minute ago" ||
			diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" ||
			diff < 7200 && "1 hour ago" ||
			diff < 86400 && Math.floor( diff / 3600 ) + " hours ago") ||
		day_diff == 1 && "Yesterday" ||
		day_diff < 7 && day_diff + " days ago" ||
		day_diff < 31 && Math.ceil( day_diff / 7 ) + " weeks ago";
}

// If jQuery is included in the page, adds a jQuery plugin to handle it as well
if ( typeof jQuery != "undefined" )
	jQuery.fn.prettyDate = function(){
		return this.each(function(){
			var date = prettyDate(this.title);
			if ( date )
				jQuery(this).text( date );
		});
	};
function autolink(s)
{
   var hlink = /\s(ht|f)tp:\/\/([^ \,\;\:\!\)\(\"\'\<\>\f\n\r\t\v])+/g;
   return (s.replace (hlink, function ($0,$1,$2) { s = $0.substring(1,$0.length);
                                                   // remove trailing dots, if any
                                                   while (s.length>0 && s.charAt(s.length-1)=='.')
                                                      s=s.substring(0,s.length-1);
                                                   // add hlink
                                                   return " " + s.link(s);
                                                 }
                     )
           );
}
$(document).ready(function(){

    var twitter_api_url = 'http://api.twitter.com/1/CBCBook/lists/cbc-feed/statuses.json?callback=?';

    // The returned JSON object will have a property called "results" where we find
    // a list of the tweets matching our request query
    $.getJSON(
      twitter_api_url,
      function(statuses) {
        $.each(statuses, function(i, tweet) {
          // Before we continue we check that we got data
          if(tweet.text !== undefined) {
            // Calculate how many hours ago was the tweet posted
            var date_tweet = new Date(tweet.created_at);
            var date_now   = new Date();
            var date_diff  = date_now - date_tweet;
            var hours      = Math.round(date_diff/(1000*60*60));
            var tweet_txt = autolink(tweet.text);

            // Build the html string for the current tweet
            var tweet_li = '<li class="tweet_text">';
            tweet_li    += '<a class="twitter-avatar" title="' + tweet.created_at + '" class="timeago" href="http://www.twitter.com/';
            tweet_li    += tweet.user.screen_name + '">';
            tweet_li    += '<img src="' + tweet.user.profile_image_url + '" /></a>';
            tweet_li    += '<p><a href="http://www.twitter.com/' + tweet.user.screen_name + '"><strong>' + tweet.user.screen_name + '</strong></a> : ';
            tweet_li    += '<a title="' + tweet.created_at + '" class="timeago" href="http://www.twitter.com/';
            tweet_li    += tweet.user.screen_name + '/statuses/' + tweet.id + '"></a></p>';
            tweet_li    += '<p class="tweet">' + tweet_txt + '</p></li>';

            // Append html string to tweet_container div
            $('#twitter-carousel ul').append(tweet_li);
            $(".timeago").timeago();
          }
        });
        $("#twitter-carousel").jCarouselLite({
          vertical: true,
          visible: 3,
          auto: true,
          speed: 500,
          timeout: 3500
        });
      }
    );

/*	$("a:not(.block)").swish();
	$("#navigation a").swish({hoverclass:"navhover"});
	$(".sidebar li a").swish({hoverclass:"sidehover"});*/

	// css + hacks
/*	$("li:even").addClass("alt");
	$(".sidebar").append($("#extra-sidebar").html());
	$("#extra-sidebar").html("");*/

	// validate form
	$("#newpub").validate();

	// menu highlight
	function filterPath(string) {
		return string
		.replace(/^\//,'')
		.replace(/(index|default).[a-zA-Z]{3,4}$/,'')
		.replace(/\/$/,'');
	}
	$("#navigation a, .sidebar a").filter(function() {
		return filterPath(this.pathname) == filterPath(location.pathname);
	}).parent().addClass('current');

	// popup
	var viewport = {
        o: function() {
            if (self.innerHeight) {
    			this.pageYOffset = self.pageYOffset;
    			this.pageXOffset = self.pageXOffset;
    			this.innerHeight = self.innerHeight;
    			this.innerWidth = self.innerWidth;
    		} else if (document.documentElement && document.documentElement.clientHeight) {
    			this.pageYOffset = document.documentElement.scrollTop;
    			this.pageXOffset = document.documentElement.scrollLeft;
    			this.innerHeight = document.documentElement.clientHeight;
    			this.innerWidth = document.documentElement.clientWidth;
    		} else if (document.body) {
    			this.pageYOffset = document.body.scrollTop;
    			this.pageXOffset = document.body.scrollLeft;
    			this.innerHeight = document.body.clientHeight;
    			this.innerWidth = document.body.clientWidth;
    		}
    		return this;
        },
        init: function(el) {
            $(el).css("left",Math.round(viewport.o().innerWidth/2) + viewport.o().pageXOffset - Math.round($(el).width()/2));
            $(el).css("top",Math.round(viewport.o().innerHeight/2) + viewport.o().pageYOffset - Math.round($(el).height()/2));
        }
    };
    $("#help").each(function(){
        $(this).css("display","none").siblings(".help").click(function(){
            $(".simple_popup_div").remove();
            var strSimple = "<div class='simple_popup_div'><div class='simple_popup_inner'>";
            strSimple += "<p class='simple_close'>[ x ] <a href='#'>Close</a></p>";
            strSimple += $(this).siblings("#help").html();
            strSimple += "</div></div>";
            $("body").append(strSimple);
            viewport.init(".simple_popup_div");
            $(".simple_close").click(function(){
                $(".simple_popup_div").remove();
                return false;
            });
            return false;
        });
    });


});
