/*******************************************************
*
*	file: shoutinfo.js
*	author: Zwacky
*	date: 21.05.2009
*	description: handles asynchronous behaviour of the shoutbox.
*
********************************************************/

var refShout = function() {
	var uri = '?q=shoutinfo';
	var request = new Request.JSON({url: uri, 
		onComplete: showJsonInBox,
		onFailure: showJsonFailure
	}).send();
}

document.addEvent('domready', function() {
	refShout.run();
	refShout.periodical(10000); // set to 10 seconds
	$('btnShoutIt').addEvent('click', function() {requestShout()});
	$('shoutbox-input').addEvent('keydown', function(e) {
		var event = new Event(e);
		if (event.key == 'enter') requestShout();
	});
});

function requestShout() {
	if ($('shoutbox-input').disabled === false) {
		var uri = '?q=shoutinfo&action=shout&text=' + escape($('shoutbox-input').value);
		$('shoutbox-input').value = 'sending...';
		$('shoutbox-input').set('disabled', true);
		$('shoutbox-text').set('disabled', true);
		var request = new Request({url: uri, 
			onComplete: doIt}).send();
	}
}

function doIt(responseText, responseXML) {
	refShout.run();
	$('shoutbox-input').value = '';
	
	(function() {
		
		$('shoutbox-input').set('disabled', false);
		$('shoutbox-text').set('disabled', false);
	}).delay(2500);
	
}

function showJsonInBox(obj) {
	$('shoutbox-text').empty();
	obj.each( function(result, i) {
		if (result.hour.length==1) result.hour = '0' + result.hour;
		if (result.minute.length==1) result.minute = '0' + result.minute;
		var page = new Element('p');
		var span = new Element('span', {'styles': {'color': '#1686cd', 'font-weight': 'bold'}});
		
		page.appendText('[' + result.hour + ':' + result.minute + '] ');
		span.appendText(result.name);
		page.grab(span);
		page.appendText(': ');
		page.appendText(result.text);
		
		$('shoutbox-text').adopt(page);
	});
}

function showJsonFailure(obj) {
	
}