	var votes = new Hash({});
	
	function setAvailableVotings(num) {
		var elem = $$('.votosDisponiveisNum');
		
		if( elem ) {
			elem.each(function(elem) {
				elem.set('text', num);
			})
		}
	}
	
	function getAvailableVotings() {
		var elem = $$('.votosDisponiveisNum');
		
		if( elem && elem[0] ) 
			return parseInt(elem[0].get('text'));
	}
	
	function vote(id) {
		if( votes.getLength() >= 10 ) {
			alert("Já votaste em 10 músicas.\n\nClica em \"Enviar a minha votação\" para continuar ou retira pelo menos um voto para escolher outra música.");
			return false;
		}
	
		if( !votes.has(id) ) {
			votes.set(id, id);
			updateVotes();
		}
		return true;
	}
	
	function unvote(id) {
		if( votes.has(id) ) {
			votes.erase(id);
			updateVotes();
		}
	}
	
	function updateVotes() {
		var elem = $('votesLst');
		var values = votes.getValues();
		var str = values.join(',');
		
		elem.set('value', str);
		
		setAvailableVotings(10 - votes.getLength());
	}
	
	window.addEvent('load', function() {
		var elem = $('votesLst');
		var str = elem.get('value');
		if( str ) {
			var lst = str.split(',');
			for(var i = 0; i < lst.length; ++i) {
				if( !vote(lst[i]) ) break;
			}
		}
		updateVotes();
		
		var elems = $$('.voteCheck');
		if( elems ) {
			elems.each(function(item) {
				item.addEvent('click', function() {
					if( !this.get('checked') ) { unvote(this.get('value'));
					} else {
						var id = this.get('value');
						if( !vote(id) ) {
							this.removeProperty('checked');
							return false;
						}
					}
				
					var request = new Request.HTML({
						url: 'util/updateVotes.php',
						method: 'post',
						data: {votes: $('votesLst').get('value')}
					});
					request.send();
				})
			})
		}
		
		elems = $$('a');
		if( elems ) {
			elems.each(function(item) {
				var dest = item.get('href');
				if( !dest ) return;
			
				item.addEvent('click', function() {
					var request = new Request.HTML({
						url: 'util/updateVotes.php',
						method: 'post',
						data: {votes: $('votesLst').get('value')},
						onComplete: function(resp) {
						location.href = dest;
						}
					});
					request.send();
					return false;
				})
			})
		}
		
		elems = $$('.orderSelector select');
		if( elems ) {	
			elems.each(function(item) {
				item.addEvent('change', function() {
					var dest = '?order=' + item.get('value');
					location.href = dest;
				})
			})
		}
		
		elems = $$('.thumb');
		if( elems ) {
			elems.each(function(item) {
				item.setStyle('cursor', 'pointer');
				item.addEvent('click', function() {
					var container = item.getParent('li');
					if( container ) {
						var checkbox = container.getElement('.checkbox');
						if( checkbox ) checkbox.fireEvent('click');
					}
				});
			})
		}
		
		var elem = $('poll-mod');
		if( elem ) {
			elem.addEvent('submit', function() {
				var availableVotings = getAvailableVotings();
				if( availableVotings >= 10 ) {
					/*if( availableVotings == 1 ) var txt = 'Falta votar numa música.';
					else var txt = 'Falta votar em ' + availableVotings + ' músicas.';*/
					var txt = 'Deves votar em pelo menos numa música para continuar.';
					alert(txt);
					return false;
				}
			
				if( availableVotings > 10 ) {
					alert('Votaste em mais de 10 músicas. Só podes votar em 10.');
					return false;
				}
			
				return true;
			});
		}
		
		elems = $$('.votosDisponiveis input');
		if( elems ) {
			elems.each(function(item) {
				item.addEvent('click', function() {
					votes = new Hash({});
					updateVotes();
					
					var elems = $$('.voteCheck');
					if( elems ) {
						elems.each(function(item) {
							item.removeProperty('checked');
						});
					}
					
					var elems = $$('.checkbox');
					if( elems ) {
						elems.each(function(item) {
							item.setStyle('background-position', '0 0');
						});
					}
				})
			})
		}
	});
