/**
 * Widget for Google Buzz by buzzcounter.net
 **/
$ = jQuery.noConflict();
(function($) {
  $.timeago = function(timestamp) {
    if (timestamp instanceof Date) return inWords(timestamp);
    else if (typeof timestamp == "string") return inWords($.timeago.parse(timestamp));
    else return inWords($.timeago.datetime(timestamp));
  };
  var $t = $.timeago;
  $.extend($.timeago, { settings: { refreshMillis: 60000,
      allowFuture: false, strings: {
        prefixAgo: null,prefixFromNow: null, suffixAgo: "ago", suffixFromNow: "from now", ago: null, // DEPRECATED, use suffixAgo
        fromNow: null, // DEPRECATED, use suffixFromNow
        seconds: "less than a minute", minute: "about a minute", minutes: "%d minutes", hour: "about an hour", hours: "about %d hours", day: "a day", days: "%d days", month: "about a month", months: "%d months", year: "about a year", years: "%d years"}
    },
    inWords: function(distanceMillis) { var $l = this.settings.strings;
      var prefix = $l.prefixAgo;
      var suffix = $l.suffixAgo || $l.ago;
      if (this.settings.allowFuture) {
        if (distanceMillis < 0) {
          prefix = $l.prefixFromNow;
          suffix = $l.suffixFromNow || $l.fromNow;
        }
        distanceMillis = Math.abs(distanceMillis);
      }

      var seconds = distanceMillis / 1000;
      var minutes = seconds / 60;
      var hours = minutes / 60;
      var days = hours / 24;
      var years = days / 365;

      var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) ||
        seconds < 90 && substitute($l.minute, 1) ||
        minutes < 45 && substitute($l.minutes, Math.round(minutes)) ||
        minutes < 90 && substitute($l.hour, 1) ||
        hours < 24 && substitute($l.hours, Math.round(hours)) ||
        hours < 48 && substitute($l.day, 1) ||
        days < 30 && substitute($l.days, Math.floor(days)) ||
        days < 60 && substitute($l.month, 1) ||
        days < 365 && substitute($l.months, Math.floor(days / 30)) ||
        years < 2 && substitute($l.year, 1) ||
        substitute($l.years, Math.floor(years));

      return $.trim([prefix, words, suffix].join(" "));
    },
    parse: function(iso8601) {
      var s = $.trim(iso8601);
      s = s.replace(/-/,"/").replace(/-/,"/");
      s = s.replace(/T/," ").replace(/Z/," UTC");
      s = s.replace(/([\+-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
      return new Date(s);
    },
    datetime: function(elem) {
      // jQuery's `is()` doesn't play well with HTML5 in IE
      var isTime = $(elem).get(0).tagName.toLowerCase() == 'time'; // $(elem).is('time');
      var iso8601 = isTime ? $(elem).attr('datetime') : $(elem).attr('title');
      return $t.parse(iso8601);
    }
  });

  $.fn.timeago = function() {
    var self = this;
    self.each(refresh);

    var $s = $t.settings;
    if ($s.refreshMillis > 0) {
      setInterval(function() { self.each(refresh); }, $s.refreshMillis);
    }
    return self;
  };

  function refresh() {
    var data = prepareData(this);
    if (data != null && !isNaN(data.datetime)) {
      $(this).text(inWords(data.datetime));
    }
    return this;
  }

  function prepareData(element) {
    element = $(element);
    if (element.data("timeago") === undefined) {
      element.data("timeago", { datetime: $t.datetime(element) });
      var text = $.trim(element.text());
      if (text.length > 0) element.attr("title", text);
    }
    return element.data("timeago");
  }

  function inWords(date) {
    return $t.inWords(distance(date));
  }

  function distance(date) {
    return (new Date().getTime() - date.getTime());
  }

  function substitute(stringOrFunction, value) {
    var string = $.isFunction(stringOrFunction) ? stringOrFunction(value) : stringOrFunction;
    return string.replace(/%d/i, value);
  }

  // fix for IE6 suckage
  document.createElement('abbr');
  document.createElement('time');
})(jQuery);

(function ($) {
	$.Widget = {
		get : function()
		{
			document.write("<div id=\"buzzwidget-head\"><a target=\"_blank\" href=\"http://www.google.com/profiles/louisgray\" rel=\"me\"><img src=\"http://www.google.com/profiles/c/photos/public/AIbEiAIAAABDCIfzwY399Pm2ByILdmNhcmRfcGhvdG8qKDAwZjgxZTlkNGZmZTg5ODY5OWFjNjNlYjAxMjRjMTc1ZjU0YjEzZTEwAcw10UxWoqF9s2D6u9LoEX2HHeWF\" width=\"35\" height=\"35\" alt=\"Louis Gray\" /> <span id=\"buzz-author\">Louis Gray</span><br /><span id=\"buzz-username\">louisgray</span> <span id=\"buzz-follow\">Follow me!</span></a></div><div id=\"buzzwidget-container\"><ul><li id=\"sponsored\"><span><a href=\"http://www.buzzcounter.net/page/advertising\">sponsored</a></span><br/>Test & Keep the NEW Apple iPad for FREE! Sign up now. <a target=\"_blank\" class=\"buzzwidget-comment\" href=\"http://tracking.emulgator.org/tracking202/redirect/dl.php?t202id=5584&t202kw=louisgray\" id=\"bc0\">Click here!</a></li><li><span title=\"2010-09-02 02:19:26\">2010-09-02 02:19:26</span><br/>Apple TV is the one you date, Google TV is the one you marry - VentureBeat - After months of speculation, Apple CEO Steve Jobs finally reveale ... <a target=\"_blank\" class=\"buzzwidget-comment\" href=\"http://www.google.com/buzz/100535338638690515335/WQeiFTqnV3g/Apple-TV-is-the-one-you-date-Google-TV-is-the-one\" id=\"bc1\">Comment! (1)</a></li><li><span title=\"2010-09-02 02:18:55\">2010-09-02 02:18:55</span><br/>Google responds to Steve Jobs assertion that they are counting upgrades in activations - 9 to 5 Mac - Steve Jobs laid down some not-so-subtl ... <a target=\"_blank\" class=\"buzzwidget-comment\" href=\"http://www.google.com/buzz/100535338638690515335/HEo4nr7Mjqz/Google-responds-to-Steve-Jobs-assertion-that-they\" id=\"bc2\">Comment! (0)</a></li><li><span title=\"2010-09-02 02:18:32\">2010-09-02 02:18:32</span><br/>How Microsoft Missed The Disruptive Innovation In Paid Search - Techdirt - We recently highlighted a part of one of Paul Graham\'s recent essay ... <a target=\"_blank\" class=\"buzzwidget-comment\" href=\"http://www.google.com/buzz/100535338638690515335/5SmUZWysPVC/How-Microsoft-Missed-The-Disruptive-Innovation-In\" id=\"bc3\">Comment! (0)</a></li><li><span title=\"2010-08-31 21:35:06\">2010-08-31 21:35:06</span><br/>The Other Half Of Search: Greplin Is A Personal Search Engine For Your Online Life - TechCrunch - There’s always something cool coming out of Y Combinator, but even so Greplin stands out from the crowd. It’s a personal search engine for all that data you keep locked away in the cloud. If you’ve used desktop search like spotlight, you’ll get Greplin right away. It’s like spotlight for your cloud data.  It’s dead simple to use. Sign up and authorize any number of social services for Greplin t.. ... <a target=\"_blank\" class=\"buzzwidget-comment\" href=\"http://www.google.com/buzz/100535338638690515335/NAJP4DAkYK5/The-Other-Half-Of-Search-Greplin-Is-A-Personal\" id=\"bc4\">Comment! (7)</a></li></ul></div>");
			$('#buzzwidget').css('background', '#ffffff').css('border', '1px solid #333').css('padding', '5px').css('color', '#333').css('font-size', '12px').css('font-family','Verdana, Arial');
			//.css('min-width','220px');
			$('#buzzwidget-head').height('40px');
			$('#buzzwidget-head a').css('text-decoration', 'none').css('color', '#17375e').css('font-weight', 'bold');
			$('#buzzwidget-head img').css('float', 'left').css('margin-right', '5px');
			$('#buzz-follow').css('float', 'right');
			$('#buzz-author').css('color', '#c0c0c0').css('font-size', '16px');
			$('#buzzwidget-container').css('clear', 'both').css('border-top', '1px solid #333').css('border-bottom', '1px solid #333').css('text-align', 'left').css('padding', '0').css('margin', '0');
			$('#buzzwidget-container ul').css('list-style-type', 'none').css('padding', '0').css('margin', '0');
			$('#buzzwidget-container li').css('border','0').css('border-top', '1px dotted #333').css('padding', '3px 0').css('margin', '0').css('text-indent', '0').css('background', '#ffffff').css('overflow', 'hidden');
			$('#buzzwidget-container li a').css('font-size', '10px').css('color', '#17375e').css('font-weight', 'normal').css('margin', '0').css('padding', '0').css('border', '0');
						
			$('#buzzwidget-container li:first').css('border-top', '0');
			$('#buzzwidget-container .buzzwidget-comment').css('background', 'url(http://www.gstatic.com/s2/tt/images/comment.gif) top left no-repeat').css('padding-left', '18px').css('color', '#17375e').css('font-size', '12px').css('font-weight', 'bold').css('white-space', 'nowrap');
			
			jQuery(jQuery('#buzzwidget-container li span:not(#sponsored span)')).timeago();
			$('#buzzwidget-container li span').css('font-size','10px').css('color','#c0c0c0');
			
			$('#sponsored').css('background', '#fcf9e8');
			$('#buzzwidget-container li span a').css('color','#c0c0c0');
			
			var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
			document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
		},
		
		set : function()
		{
			$('#buzz-logo').css('display', 'block').width('103px').height('30px').css('background', 'url(http://www.buzzcounter.net/images/widget/logos.png) top left no-repeat').css('float', 'left').css('text-indent','-9999px');;
			$('#buzzcounter-logo').css('display', 'block').width('110px').height('30px').css('background', 'url(http://www.buzzcounter.net/images/widget/logos.png) -103px 0 no-repeat').css('float', 'left').css('text-indent','-9999px');
			$('#buzzwidget-footer').css('padding-top', '5px').css('clear', 'both').height('25px');
			$('#buzzwidget').append('<br style="height: 0; line-height: 0; clear: both;" />');		
			try
			{
				var t = _gat._getTracker("UA-90892-23");
				t._trackPageview();
				t._trackEvent('Widget', 'louisgray', document.referrer);
	
				$('#buzzwidget-container li a').each(function(i)
				{
					if($(this).hasClass('buzzwidget-comment'))
					{
						$(this).click(function(){t._trackEvent('Widget Buzz Click', 'louisgray', $(this).attr('href'), parseInt($(this).attr('id').replace(/bc/, "")))});
					}
					else
					{
						$(this).click(function(){t._trackEvent('Widget Link Click', 'louisgray', $(this).attr('href'))});
					}
					
				});
				
				$('#buzzwidget-head a').click(function(){
					t._trackEvent('Widget Click', 'louisgray', 'Follow')
				});
				$('#buzz-logo').click(function(){ 
					t._trackEvent('Widget Click', 'louisgray', 'Google Buzz')
				});
				$('#buzzcounter-logo').click(function(){
					t._trackEvent('Widget Click', 'louisgray', 'Buzz Counter')
				});	
			} catch(err) {  }	
			
		},
	};
})(jQuery);