// chama o widget retweets

// buzzvolume.com inspired by all startups in the twitter plataform.
// avoiding document.write() -- ninja style, you will see (and if you can see you can copy)

// TODO: a lot.

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

	// also inspired by rails distance_of_time_in_words helper http://apidock.com/rails/ActionView/Helpers/DateHelper/distance_of_time_in_words
	// and http://blog.peelmeagrape.net/2008/8/30/time-ago-in-words-javascript-part-2
	// by buzzvolume.com

	// Takes an ISO time and returns a string representing how
	// long ago the date represents.
	TimeInWordsHelper = {
	  distanceInWords: function(time) {
	    var date = new Date(time),
			diff = (((new Date()).getTime() - date.getTime()) / 1000),
			day_diff = Math.floor(diff / 86400);

		if ( isNaN(day_diff) || day_diff < 0)
			return;

		return day_diff == 0 && (
				diff < 60 && Math.floor( diff ) + " segundos" ||
				diff < 120 && "1 minuto" ||
				diff < 3600 && Math.floor( diff / 60 ) + " minutos" ||
				diff < 7200 && "1 hora" ||
				diff < 86400 && Math.floor( diff / 3600 ) + " horas") ||
			day_diff == 1 && "1 dia" ||
			day_diff < 7 && day_diff + " dias" ||
			day_diff < 31 && Math.ceil( day_diff / 7 ) + " semanas" ||
			day_diff > 31 && Math.ceil( day_diff / 31 ) + " meses";
	  },
	  convertBySelector: function(el, selector) {
	    var now = new Date()
	 	// implementei um class selector simples para evitar bloat do jquery (codigo desnecessario) no widgets
		var els = document.getElementsByTagName(el);
		for (var i=0; i < els.length; i++) {
			if (els[i].getAttribute('class') == 'gmttime') {
				var oldInner = els[i].innerHTML
				els[i].innerHTML = TimeInWordsHelper.distanceInWords(els[i].getAttribute('title')) + ' atr&#225;s'
			}
		}
	  }
	}
	
	var widget = document.getElementById("buzzvolume_retweets");
	widget.innerHTML = '<h1><strong>Tweets</strong> <span>via <a href="http://buzzvolume.com" target="_blank">BuzzVolume</a></span></h1>';
	for (var i=0; i < data.length; i++) {
		
		var _div = '<div class="from">';
  		_div += '<img src="' + data[i].profile_image_url + '" alt="' + data[i].from_user + '" />';
 		_div += '<span class="user">' + data[i].from_user + '</span>';
		_div += '<a href="http://twitter.com/' + data[i].from_user + '/status/' + data[i].id + '" rel="external"><span class="gmttime" title="' + data[i].created_at + '">' + data[i].created_at + '</span></a>';
		_div += '</div>';
		_div += '<div class="text">' + data[i].text + '</div>';
		
		widget.innerHTML += _div;
	}
	
	TimeInWordsHelper.convertBySelector('span', '.gmttime');
	setInterval(function() {
		TimeInWordsHelper.convertBySelector('span', '.gmttime');
	}, 1000);
}

(typeof(__buzzRTCounter) != 'number') ? __buzzRTCounter = 0 : ++__buzzRTCounter;
(function(){
	var src_domain = "http://buzzvolume.com";
	var src = src_domain + "/retweets";
	var src_analytics = src_domain + '/retweets_analytics.html';
		
	// find (this) script node
	var buzzScripts = [];
	var scriptsNodes = document.getElementsByTagName("script");
	for (var i=0; i < scriptsNodes.length; i++) {
		(scriptsNodes[i].getAttribute('src') && scriptsNodes[i].getAttribute('src').match(/buzzretweets\.js/)) ? buzzScripts.push(scriptsNodes[i]) : null;
	}
	var scriptNode = buzzScripts[__buzzRTCounter];
	
	// 	create buzzvolume badge
	var url = escape((typeof buzzvolume_url=="string") ? buzzvolume_url : window.location.href);
	
	var params = [["?url", url]];
	for (param in params) {
		var param = params[param];
		if (param[1]) {
			src = [src, param[0], '=', param[1]].join('');
			src_analytics = [src_analytics, param[0], '=', param[1]].join('');
		}
	}

	// carregar widget por json
	var jsonp = document.createElement('script');
	jsonp.src = src + "&format=json&callback=__buzzRetweetsJSONP";
	
	if (!(head = document.getElementsByTagName("head")[0])) {
		var head = document.createElement('head');
		document.getElementsByTagName("html")[0].appendChild(head);
	}
	head.appendChild(jsonp);
	
	var css = document.createElement('link');
	css.setAttribute('rel', 'stylesheet');
	css.setAttribute('href', src_domain + '/css/widgets/retweets.css');
	head.appendChild(css);
	
	// iframe do analytics
	var iframe = document.createElement('iframe');
	iframe.setAttribute('src', src_analytics);
	iframe.setAttribute('frameborder', 0);
	iframe.setAttribute('scrolling', 'no');
	iframe.style.display = "none";
	
	var div = document.createElement('div');
	div.setAttribute('id', 'buzzvolume_retweets');
	div.setAttribute('class', 'cleanslate');
	
	// ninja huh?
	scriptNode.parentNode.insertBefore(iframe, scriptNode);
	scriptNode.parentNode.insertBefore(div, scriptNode);
	
	buzzvolume_url=null;
})();
