// JavaScript Document
var Dc = {
	Contact: {
		
		//A Fluffy Form
		setUpForm: function() {
			
			//It's all about behaviour
			Event.observe('contatoForm','submit',Dc.Contact.sendMessage)
			
			//Elements to fluff
			var elements = $$('#contatoForm input');
				elements.push($('iptMensagem'));
			
			//Do it. Now.
			elements.each(function(input){
				//Dc.Manager.manageClassWhen(input,'hover','mouseover',true);
				//Dc.Manager.manageClassWhen(input,'hover','mouseout',false);
				//Dc.Manager.manageClassWhen(input,'active','focus',true);
				//Dc.Manager.manageClassWhen(input,'active','blur',false);
			});
			
			Event.observe('messageSent','click',Dc.Contact.sendNewMessage);
		},
		
		//Would you please send this messager, Sir?
		sendMessage: function(e) {
			//Ajax? Yes. Browser, be quiet.
			e.preventDefault();
			
			//No Spam. Plz.
			$('iptSubmit').disabled = true;
			$('iptSubmit').value = 'Enviando...';
			
			//Fluffy loading
			$('contact').addClassName('loading');
			
			//Send da message
			$('contatoForm').request({
				parameters: {ajax:true}, //No redirect
				onComplete: Dc.Contact.messageSent						 
			});
		},
		
		//Ok. Sent.
		messageSent: function() {
			//Bye bye Fluffy Loading
			$('contact').removeClassName('loading');
			
			//You can click me. I won't work. =P
			$('iptSubmit').disabled = true;
			$('iptSubmit').value = 'Enviada!';
			
			//Confirmation
			$('messageSent').show();
			
			//Disabled Effect
			$('contatoForm').setOpacity(0.3);
			
			//Lets share the height? Half for height, half for padding
			var height = $('contatoForm').getHeight()/2;
			
			//Csssing
			$('messageSent').setStyle({
				height: height + 'px',
				paddingTop: height+'px',
				width: $('contatoForm').getWidth() + 10+ 'px',
			})
			
			$('iptSubmit').blur();
		},
		
		//Thanks. Let's clean up this mess.
		sendNewMessage: function() {
			
			//Ok. Now you cand send a new message.
			$('iptSubmit').disabled = false;
			$('iptSubmit').value = 'Enviar';
			
			//Get off with this confirmation
			$('messageSent').hide();
			
			//Bring the form back, Dennis.
			$('contatoForm').setOpacity(1);
			
			//New message, means an empty form
			$('contatoForm').reset();
		}
	},
	
	Manager: {
		start: function() {
			//Dc.Twitter.loadTwits();
			Dc.LastFm.loadRecentTracks();
			Dc.Contact.setUpForm();
		},
		manageClassWhen: function(obj,eventName,className,add) {
			Event.observe(obj,eventName,function(e) {
				var element = e.element();
				if(add)
					element.addClassName(className);
				else  
					element.removeClassName(className);
			});
		}
	},
	LastFm: {
		data: null,
		loadRecentTracks: function() {
			new Ajax.Request('oque/estaOuvindo.php', {
				method: 'get',
				onSuccess: function(transport) {
					$('recentTracks').update(transport.responseText);
					$('lastfm').show();
				}
			}); 
		},
		show: function() {
		
		},
		createTrackHtml: function() {
		
		}
	},
	Twitter: {
		data: null,
		loadTwits: function() {
			new Ajax.Request('twitter/dwb_timeline.php', {
				method: 'get',
				onSuccess: function(transport) {
					Dc.Twitter.data = eval('('+transport.responseText+')');
					Dc.Twitter.show();
				}
			}); 
			/*Dc.Twitter.show();*/
		},
		show: function() {		
			Dc.Twitter.data.each(function(twit) {
				$('twitterPosts').appendChild(Dc.Twitter.createTwitHtml(twit));	
			})
			$('twitter').show();
		},
		createTwitHtml: function(twit)  {
			var div = document.createElement('div');
				div.className = 'twit';
				var text = document.createElement('p');
					text.className = 'text';
					Element.update(text,twit.text);
				div.appendChild(text);
					
				var createdat = document.createElement('div');
					createdat.className = 'createdAt';
					Element.update(createdat,twit.created_at);
				div.appendChild(createdat);
				
			return div;
		}
	}
}

Event.observe(window,'load',Dc.Manager.start);