// TodaysMeet
// Uses the functions in room.js to read and write to the screen.

function updateRoom ()
{
	if ( window.Interacting === true ) return;
	Interactive(true);
	room_read(room,window.maxId,lastChecked,displayMessages);
}

function displayMessages ( messages )
{
	var dMessages = $('post-scroller');
	for(var i=0;i<messages.length;i++){
		var mBox  = new Element('div', {'class':'message-box','id':'message-'+messages[i].id});
		var mText = new Element('span', {'class':'message-text'});
		var mBy   = new Element('span', {'class':'message-byline'});
		
		mBox.appendChild(mText);
		mBox.appendChild(mBy);
		
		// format the date
		var _dt = new Date();
		_dt.setTime(1000*messages[i].created);
		
        // get the source
        var source = '';
		if ( messages[i].source.website ) {
            source = '<a href="'+messages[i].source.website+'">'+messages[i].source.name+'</a>';
        } else if ( messages[i].source.name ) {
            source =  messages[i].source.name;
        } else {
            source = 'web';
        }

		// set the content
		mText.innerHTML = messages[i].message.stripSlashes();
		mBy.innerHTML = messages[i].name+' at '+_dt.format("shortTime")+', '+_dt.format("d mmm yyyy")+' via '+source;

		dMessages.insertBefore(mBox,dMessages.firstChild);
	}
}

String.prototype.stripSlashes = function (str) {
	if(typeof str == 'undefined') str = this;
	str=str.replace(/\\'/g,'\'');
	str=str.replace(/\\"/g,'"');
	str=str.replace(/\\0/g,'\0');
	str=str.replace(/\\\\/g,'\\');
	return str;
}

function postComment (e)
{
	var name = $F('sender_name');
	var message = $F('message');
	var source = $F('source');
	
	Interactive(true);
	
	new Ajax.Request('/'+window.room+'/messages.json',
					 {'method':'post',
					 parameters:{'name':name,'message':message,'source':source},
					 onSuccess:function() {
						 $('message').value = '';
						 charsLeft();
					 },
					 onFailure:function() {
						 Error("Could not post your comment!");
					 },
					 onComplete:function() {
						 Interactive(false);
						 updateRoom();
					 }
					 });
	
	if ( e ) Event.stop(e);
	return false;
}

function charsLeft ()
{
	var m = $('message');
	var ml = $('message-length');
	var v = $('message').value;
	var l = v.length;
	ml.innerHTML = (140-parseInt(l));
	if ( l < 120 ) {
		ml.style.color = '#dddddd';
	} else if ( l < 127 ) {
		ml.style.color = '#999999';
	} else if ( l < 135 ) {
		ml.style.color = '#663333';
	} else {
		ml.style.color = '#cc1414';
		return false;
	}
	return true;
}

function setName ()
{
	var senderName = $F('sender-name');
	if ( senderName == '' ) {
		Error("Please enter a name.");
		return;
	}
	
	$('sender_name').value = senderName;
	$('sender-name-dialog').hide();
	document.cookie = 'sender-name='+senderName+'; path=/';
}
