/**
*	/autor: Bartłomiej Tadych
*	/contact: b4rtaz [AT] gmail.com
*	/www: http://b4rtaz.jogger.pl/
*	/version: 1.0
*
*	/license: GNU General Public License 3.0, http://www.gnu.org/licenses/gpl-3.0.html
*/

// Jezeli chcesz miec Blipa, wstaw miedzy cudzyslowia nazwe uzytkownika (np. ...user = "wyborcza";).
// Oraz edytuj plik wrapper.html w panelu Joggera.
var _blip_user = "lean";

var _blip = {
	o:null,
	timer:null,
	status:false,
	count:0,
	error:0
};
var _textarea = null;
var _input = new Array();
var _browser = {};

_browser.webkit = /Apple|KDE/i.test(navigator.vendor);
_browser.ie = /MSIE/.test(navigator.userAgent);

if(_browser.ie) {
	document.write("<script id=\"ie-defer\" defer=\"true\" src=\"//:\"><\/script>");
}

/**
* /brief   Funkcja wywolujaca callback zaraz po wczytaniu DOM dokumentu przez przegladarke.
*          by: http://perfectionorvanity.com/
*/
function onLoadDOM(callback) {
	// Firefox & Opera.
	if(document.addEventListener) {
		document.addEventListener("DOMContentLoaded",callback,false);
	}

	// Internet Explorer.
	if(_browser.ie) {
		var defer = document.getElementById("ie-defer");
		if(defer) {
			defer.onreadystatechange = function() {
				if(this.readyState == "complete") {
					callback();
				}
			}
			defer.onreadystatechange();
			defer = null;
		}
	}

	// Safari & Konqueror.
	if(_browser.webkit) {
		var timer = setInterval(function() {
			if(/loaded|complete/.test(document.readyState)) {
				clearInterval(timer);
				callback();
			}
		},15);
	}

	// Reszta.
	window.onload = callback;
	return;
}

/**
*
*/
function blipCallback(data) {
	var body = data[0]['body'];
	var time = data[0]['created_at'];
	body = body.replace(/(https?:\/\/([-\w\.]+)+(:\d+)?(\/([\w/_\.]*(\?\S+)?)?)?)/,"<a href=\"$1\">[link]</a>");
	body = body.replace(/\#((\w+))/,"<a href=\"http://www.blip.pl/tags/$1\">#$1</a>");
	time = time.replace(/[\d\-]+ ([\d\-])/,"$1");
	_blip.o.innerHTML = "<strong><a href=\"http://"+_blip_user+".blip.pl/\">"+time+"</a></strong> "+body;
	_blip.status = true;
	return;
}

/**
*
*/
function blipTimer() {
	var script = document.createElement("script");
	var head = document.getElementsByTagName("head")[0];

	script.type = "text/javascript";
	script.src = "http://api.blip.pl/users/"+_blip_user+"/statuses?limit=1&callback=blipCallback";

	if(_blip.count > 0 && _blip.status == false) {
		_blip.error++;
		_blip.o.innerHTML = "<strong>Blip:</strong> Wystąpił nieoczekiwany błąd (próba nr. "+_blip.error+").";
	}
	_blip.count++;

	head.appendChild(script);
	_blip.timer = setTimeout(blipTimer,
		(_blip.status == false && _blip.count == 1)?2000:(
			(_blip.status == false)?8000:20000)
	);
	return;
}

/**
*
*/
function blipUnload() {
	clearTimeout(_blip.timer);
	return;
}

/**
*
*/
function initBlip() {
	_blip.o = document.getElementById("blip-status");
	if(_blip.o) {
		_blip.o.innerHTML = "<strong>Blip:</strong> Inicjuje...";
		if(_browser.ie)
			window.onunload = blipUnload;
		else
			window.addEventListener("unload",blipUnload,false);
		blipTimer();
	}
	return;
}


/**
* /brief   Funkcja zostanie wywolana gdy DOM dokumentu zostanie wczytany.
*/
function loadedDOM() {
	// Aby funkcja zostala wywolana tylko raz.
	if(!arguments.callee.done) {
		arguments.callee.done = true;
	} else return;

	// Jezeli chetny to odpalamy blipa.
	if(_blip_user.length > 0)
		initBlip();
	return;
}

onLoadDOM(loadedDOM);








