
	function events(elem){
		$(document).ajaxStart(function(){
			$('div.error').hide();
			$('div.error').empty();
			$(elem).prepend('<div class="loading"></div>');
		}).ajaxError(function(event, XMLHttpRequest, ajaxOptions, thrownError){
			$('div.loading').hide();
			$('div.loading').empty();
			$(elem).prepend('<div class="error">Ocorreu um erro ao acessar a base de dados. Tente novamente em alguns minutos.</div>');
		}).ajaxComplete(function(event,request,settings){
			$('div.error').hide();
			$('div.error').empty();
			$('div.loading').hide();
			$('div.loading').empty();
		});
	}

	$(function(){
		$.post('post.php',{fn:'update'},function(data){
			//alert(data);
		},'html');
		
		$('#search input[type="button"]').click(function(){
			search($('#busca').val(),0);
		});
		
		$('#result tr.paging a.page').live("click",function(){
			$(this).parent().find('a.page.active').removeClass('active');
			$(this).addClass('active');
			var pg = parseInt($(this).text()) - 1;
			var word = $(this).parent().parent().parent().parent().parent().attr('title');
			search(word,pg);
		});
		
		$('#page tr.paging a.page').live("click",function(){
			$(this).parent().find('a.page.active').removeClass('active');
			$(this).addClass('active');
			var pg;
			switch($(this).text()){
				case 'Primeira':
					pg = parseInt($(this).attr('title'));
					break;
				case 'Última':
					pg = parseInt($(this).attr('title'));
					break;
				default:
					pg = parseInt($(this).text()) - 1;
					break;
			}			
			var word = $(this).parent().parent().parent().parent().parent().attr('title');
			catego(word,pg);
		});
		
		$('a.up').live("click",function(){
			var cont = $(this).parent().parent().parent().parent().parent().parent().parent();
			var tag = $(cont).parent().parent().parent().attr('title');
			var num = $(this).parent().parent().children('div').text();
			var id = $(this).parent().parent().parent().parent().parent().attr('name');
			$.post('post.php',{fn:'vote',hash:'up',id:id,num:parseInt(num.trim())},function(data){						
				if(data.success){							
					reload(tag);
				}else{
					alert(entities(data.error));
				}
			},'json');
		});
						
		$('a.down').live("click",function(){
			var cont = $(this).parent().parent().parent().parent().parent().parent().parent();
			var tag = $(cont).parent().parent().parent().attr('title');
			var num = $(this).parent().parent().children('div').text();
			var id = $(this).parent().parent().parent().parent().parent().attr('name');
			
			$.post('post.php',{fn:'vote',hash:'down',id:id,num:parseInt(num.trim())},function(data){
				if(data.success){
					reload(tag);
				}else{
					alert(entities(data.error));
				}
			},'json');
		});
		
		$('#grid tr.paging a.page').live("click",function(){
			$(this).parent().find('a.page.active').removeClass('active');
			$(this).addClass('active');
			var grid = $(this).parent().parent().parent().parent().parent().parent().parent();
			var tag = $(grid).attr('title');
			reload(tag);
		});
		
		$('a.coment').live("click",function(){
			var cont = $(this).parent().parent().parent().parent().parent().parent();
			var id = $(this).parent().parent().parent().parent().attr('name');
			var txt = $(this).parent().parent().parent();
			$('#comment .str').html('<p>' + $(txt).find('p.txt').html() + '</p><span>' + $(txt).find('span').html() + '</span>');
			$('#comment input[name="text"]').val('');
			$('#comment input[name="id"]').val(id);
			$('#comment #comm').attr('title',id);
			comments(id,0);
			toggle('comment');					
		});
		
		$('a.abuse').live("click",function(){					
			var cont = $(this).parent().parent().parent().parent().parent().parent();
			var id = $(this).parent().parent().parent().parent().attr('name');
			var txt = $(this).parent().parent().parent();
			$('#abuse .str').html('<p>' + $(txt).find('p.txt').html() + '</p><span>' + $(txt).find('span').html() + '</span>');					
			$('#abuse input[name="message"]').val('ID da mensagem: ' + id);
			toggle('abuse');
		});
		
		$('#comment #comm tr.paging a.page').live("click",function(){
			$(this).parent().find('a.page.active').removeClass('active');
			$(this).addClass('active');
			var pg = parseInt($(this).text()) - 1;
			var id = $(this).parent().parent().parent().parent().parent().attr('title');
			comments(id,pg);
		});

	});

	function comments(id,pg){
		events($('#comment #comm'));
		$.post('post.php',{fn:'load',id:id,page:pg},function(data){
			$('#comment #comm').html(data);
		},'html');
	}

	function search(word,pg){
		events($('#result'));
		$('#result').attr('title',word);
		$.post('post.php',{fn:'search',hash:word,page:pg},function(data){
			$('#result').html(data);
			$('#result').prepend("<div class='close'>X</div>");					
			toggle('result');
		},'html');
	}

	function entities(str){
		return $('<div>' + str + '</div>').text();
	}

	function toggle(id){
		var arr = $('.form,.grid');
		for(var i = 0; i < arr.length; i++){
			if($(arr[i]).attr('id') == id){
				$(arr[i]).show();
			}else{
				$(arr[i]).hide();
				var jq = $(arr[i]).find('form');
				if(jq.length > 0){
					reset(jq);
				}
				$("#comm").html('');
			}
		}				
	}

	function reset(form){
		var arr = $(form).find('.clear').clearFields();
	}

	function load(n,arr){
		var elem = $(arr[n]), pg = 0;				
		events($(elem).children('div').children('div'));
		$.post('post.php',{fn:'twitter',hash:$(elem).attr('title'),page:pg},function(data){
			$(elem).children('div').children('div').html(data);
			if(n + 1 < arr.length) load(n + 1, arr);
		},'html');
	}

	function reload(){
		var grid = $("#grid div[title]");
		if(arguments.length == 0){ //all
			$.each(grid, function(n, elem){
				$(elem).children('div').children('div').prepend('<div class="loading"></div>');
			});					
			load(0,grid);					
		}else{
			if(/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(arguments[0])){ //show category
				catego(arguments[0]);
			}else{ //reload grid						
				var g = $('#grid div[title="' + arguments[0]  + '"]');
				events($(g).children('div').children('div'));
				pg = parseInt($(g).find('tr.paging a.page.active').text()) - 1;
				if(isNaN(pg)) {
					pg = 0;
				}
				$.post('post.php',{fn:'twitter',hash:arguments[0],page:pg},function(data){						
					$(g).children('div').children('div').html(data);
				},'html');
			}				
		}
	}

	function catego()
	{
		events($('#page'));
		
		$('#page').attr('title',arguments[0]);
			
		var pg = (arguments[1] != undefined)? arguments[1]:0;
		$.post('post.php',{fn:'grid',hash:arguments[0],page:pg},function(data){
			$('#page').html(data);
			$('#page').prepend("<div class='close'>X</div>");
			toggle('page');
		},'html');
	}

	function logoff(){
		$.post('post.php',{fn:'logoff'},function(data){
			if(data.success){
				window.location.reload();
			}
		},'json');
	}

	function serialize(form){
		var arr = $(form).find(':input');
		for(var i = 0, obj = {}; i < arr.length; i++){
			obj[arr[i].name] = $(arr[i]).val();
		}
		return obj;
	}
	
