
Date.prototype.setISO8601 = function(dString){
	var regexp = /(\d\d\d\d)(-)?(\d\d)(-)?(\d\d)(T)?(\d\d)(:)?(\d\d)(:)?(\d\d)(\.\d+)?(Z|([+-])(\d\d)(:)?(\d\d))/;
	var d = dString.match(regexp);
	var offset = 0;

	this.setUTCDate(1);
	this.setUTCFullYear(parseInt(d[1],10));
	this.setUTCMonth(parseInt(d[3],10) - 1);
	this.setUTCDate(parseInt(d[5],10));
	this.setUTCHours(parseInt(d[7],10));
	this.setUTCMinutes(parseInt(d[9],10));
	this.setUTCSeconds(parseInt(d[11],10));

	if (d[12])
		this.setUTCMilliseconds(parseFloat(d[12]) * 1000);
	else
		this.setUTCMilliseconds(0);
	if (d[13] != 'Z') {
		offset = (d[15] * 60) + parseInt(d[17],10);
		offset *= ((d[14] == '-') ? -1 : 1);
		this.setTime(this.getTime() - offset * 60 * 1000);
	}
	return this;
};

var events = [
];
var last_event = null;

function fetch_events() {
	$.getJSON("recent-events.txt", function(data) {
		events = data;
	});
}

function next_event() {

    if (events.length < 2) {    
        fetch_events();
    }

    if (events.length > 0) {
		return events.shift();
	}

	return null;
}

function format_timestamped_event(event) {
	var now = new Date();
	var eventTimestamp = new Date();
	eventTimestamp.setISO8601(event['timestamp']);
	var seconds = Math.ceil(
		(now.getTime() - eventTimestamp.getTime()) / 1000
	);

	seconds = now.getSeconds(); //forcando a barra pra deixar com cara de dinamico
	
	if (seconds < 1)
		// Someone's clock is out of synch -- fudge it.
	    return + event['description'];
	else if (seconds == 1)
	    return + event['description'];
	else if (seconds < 60)
	    return + event['description'];
	else
	    return + event['description'];
}

function format_event(event) {
    if (!event)
        return "Muito mais que um ERP. Uma solu&#231;&#227;o para gerar resultados!";

    if (event['timestamp']) {
        return format_timestamped_event(event);
    }
	return event['description'];
}

function update_ticker() {
    var event = next_event();
	var ticker = $("#event-ticker");
	if (!last_event || event['description'] != last_event['description']) {
		ticker.fadeOut(500, function () {
			ticker.html(format_event(event));
			window.last_event = event;
			ticker.fadeIn(500);
		});
	} else {
		ticker.fadeOut(500);
	}
}

function on_timeout() {
	update_ticker();
	setTimeout(on_timeout, 8000);
}

$.getJSON("recent-events.txt", function(data) {
    events = data;
    on_timeout();
});


