	var mensagemExibida = false;
	function mostraMensagem(texto) {
		get('mensagem-texto').innerHTML = texto;
		get('mensagem').style.display = 'none';
		$('#mensagem').slideDown();
		mensagemExibida = true;
		setTimeout('escondeMensagem()', 4000);
	}
	function escondeMensagem() {
		if (mensagemExibida) {
			$('#mensagem').slideUp();
			mensagemExibida = false;
		}
	}
	function postarTwitter() {
		var old = get('postar').innerHTML;
		get('postar').innerHTML = '<img src="' + caminho + '/imagens/carregando.gif" />';
		var dados = 'metodoAjax=postar';
		dados += '&post=' + get('para').value;
		postaAjax(caminho + '/', dados, function(res) {
			mostraMensagem(res);
			get('postar').innerHTML = old;
		}, false);
	}

	function traduzir() {
		var str = document.getElementById('de').value;
		str = str.replace('\n', ' ');
		str = str.replace('\r', ' ');
		
		if (get('tiopes').checked) {
			str = traduz_tiopes(str);
		}
		if (get('miguxes').checked) {
			str = traduz_miguxes(str);
		}
		
		str = str.substring(0, 140);
		if (get('tiopes').checked) {
			str += ' #tiop'
		}
		if (get('miguxes').checked) {
			str += ' #miguxes'
		}
		
		document.getElementById('para').value = str;
	}
	// Cameliza as letras aleatoriamente (ai ai... essa meninada...)
	function camelize(text) {
		letters = text.toLowerCase().split('');
		for (var i=0; i < letters.length; i++) {
			if (Math.floor(Math.random()*2) == 1) {
				letters[i] = letters[i].toUpperCase();
			}
		}
		return letters.join('')
	}
	function traduz_miguxes(str) {

		var t = str;
		
		// Números
		t = t.replace(/\buma?\b/gi,			'1');
		t = t.replace(/\b(dois|duas)\b/gi,		'2');
		t = t.replace(/\btrês\b/gi,			'3');
		t = t.replace(/\bquatro\b/gi,			'4');
		t = t.replace(/\bcinco\b/gi,			'5');
		t = t.replace(/\bseis\b/gi,			'6');
		t = t.replace(/\bsete\b/gi,			'7');
		t = t.replace(/\boito\b/gi,			'8');
		t = t.replace(/\bnove\b/gi,			'9');
		t = t.replace(/\bdez\b/gi,			'10');
		t = t.replace(/\bonze\b/gi,			'11');
		t = t.replace(/\bdoze\b/gi,			'12');
		t = t.replace(/\btreze\b/gi,			'13');
		t = t.replace(/\b(c|qu)atorze\b/gi,		'14');
		t = t.replace(/\bquinze\b/gi,			'15');
		t = t.replace(/\bdezesseis\b/gi,		'16');
		t = t.replace(/\bdezessete\b/gi,		'17');
		t = t.replace(/\bdezoito\b/gi,			'18');
		t = t.replace(/\bdezenove\b/gi,			'19');
		// Repetições
		t = t.replace(/\b([0-9]+) vez(es)?\b/gi, 	'$1x');
		// Horas, minutos
		t = t.replace(/\b(\d+) horas?\b/gi, 		'$1h');
		t = t.replace(/\b(\d+) minutos?\b/gi, 		'$1min');
		// Dias da semana
		t = t.replace(/\bsegunda-feira\b/gi, 		'2a');
		t = t.replace(/\bterça-feira\b/gi, 		'3a');
		t = t.replace(/\bquarta-feira\b/gi, 		'4a');
		t = t.replace(/\bquinta-feira\b/gi, 		'5a');
		t = t.replace(/\bsexta-feira\b/gi, 		'6a');
		// Símbolos
		t = t.replace(/\baté mais\b/gi,			't+');
		t = t.replace(/\bdemais\b/gi,			'd+');
		t = t.replace(/\bmais ou menos\b/gi,		'+-');
		t = t.replace(/\bmais\b/gi,			'+');
		t = t.replace(/\bmenos\b/gi,			'-');
		t = t.replace(/\bmei[ao]\b/gi,			'1/2');
		// Abreviações simples
		t = t.replace(/\bpor\s?qu[eê]/gi,		'pq');
		t = t.replace(/\bhoje\b/gi,			'hj');
		t = t.replace(/\btambém\b/gi,			'tb');
		t = t.replace(/\bbeleza\b/gi,			'blz');
		t = t.replace(/\bfirmeza\b/gi,			'fmz');
		t = t.replace(/\bquando\b/gi,			'qdo');
		t = t.replace(/\bquant([ao])(s?)\b/gi,		'qt$1$2');
		t = t.replace(/\bmuit([ao])(s?)\b/gi,		'mt$1$2');
		t = t.replace(/\bbeij(o|ão)\b/gi,		'bj$1');
		t = t.replace(/\bbeijos\b/gi,			'bjs');

		t = t.replace(/\bcom([^\wáéíóúàâêôãõüç]|$)/gi,	'cum$1');

		// Abreviações avançadas
		t = t.replace(/\bmesm[ao](s?)\b/gi,		'msm$1');
		t = t.replace(/\bdepois\b/gi,			'dpois');
		t = t.replace(/\bquem\b/gi,			'qm');
		t = t.replace(/\bcomigo\b/gi,			'cmg');
		t = t.replace(/\bcadê/gi,			'kd');
		t = t.replace(/\bqualquer\b/gi,			'qq');
		t = t.replace(/\bfalou\b/gi,			'flw');
		t = t.replace(/\bvaleu\b/gi,			'vlw');
		t = t.replace(/\btchau\b/gi,			'xau');


		t = t.replace(/\bque\b/gi,			'ki');
		t = t.replace(/\b(adoro você|te adoro)/gi,	'adoluxê');
		t = t.replace(/\bamo vocês\b/gi,		'amodolu vocês');
		t = t.replace(/\b(amo você|te amo)/gi,		'te amodolu');
		t = t.replace(/\bvocê/gi,			'vuxê');

		// Glossário
		t = t.replace(/\btecl(e|ar|ou|amos)\b/gi,	'tc');
		t = t.replace(/\binternet\b/gi,			'net');
		t = t.replace(/\be-?mail(s?)\b/gi,		'meio$1');
		t = t.replace(/\b(grana|dinheiro)\b/gi,		'$$$$$$'); // $$$


		t = t.replace(/\badicion[\wáí]+/gi,		'add'); // Tou t add
		t = t.replace(/\bamig([ao]s?)\b/gi,		'migux$1'); // miguxa
		t = t.replace(/\blind([ao]s?)\b/gi,		'lindux$1'); // linduxa
		t = t.replace(/\bfof([ao]s?)\b/gi,		'fofux$1'); // fofuxa
		t = t.replace(/\bdormir\b/gi,			'mimir');
		t = t.replace(/\bnome(s?)\b/gi,			'nominho$1');
		t = t.replace(/\besposa\b/gi,			'marida');
		t = t.replace(/\b(de novo|novamente)\b/gi,	'dinovo');
		t = t.replace(/\b(aliás|por exemplo)\b/gi,	'tipo assim');

		// tou, tava, tar
		t = t.replace(/\best(ar|ou|ava|ive|aria|ão)\b/gi,	't$1');
		t = t.replace(/\bestá([^\wáéíóúàâêôãõüç]|$)/gi,	'tah$1');
		// para
		t = t.replace(/\bpara ([ao]s?)\b/gi,		'pr$1');
		t = t.replace(/\bpara([^\wáéíóúàâêôãõüç-]|$)/gi,	'pra$1');


		// Simplifiq: irmos -> ir, acabou -> cabou
		t = t.replace(/([aei]r)mos\b/gi,		'$1');
		t = t.replace(/\bacab/gi,			'cab');


		// entaum, naum
		t = t.replace(/ão\b/gi,				'aum');
		// andando -> andano, comendo -> comeno (depois fica melhor: andanu, comenu)
		t = t.replace(/(\w[aei])ndo\b/gi,		'$1no');
		// tada$ -> tadeenha (e alguns outros casos), foto -> foteenha, gatinha -> gateenha
		t = t.replace(/(\w[crt]ad)([ao])\b/gi,		'$1eenh$2');
		t = t.replace(/foto(s?)\b/gi,			'foteenha$1');
		t = t.replace(/(\w)tinh([ao])\b/gi,		'$1teenh$2');

		// No Orkut é mais fófi terminar em i
		t = t.replace(/\bse\b/gi,			'si');
		t = t.replace(/\bde\b/gi,			'di');
		t = t.replace(/\bte\b/gi,			'ti');

		// No MSN o som da letra vira a palavra
		t = t.replace(/\bse\b/gi,			'c');
		t = t.replace(/\bde\b/gi,			'd');
		t = t.replace(/\bte\b/gi,			't');

		// CH, SH e QU não existem
		t = t.replace(/ch/gi,				'x');
		t = t.replace(/sh/gi,				'x');
		t = t.replace(/qu/gi,				'k');
		// e -> i (alguns casos)
		t = t.replace(/(\w(ss|[cdgtv]))e(s?)m?\b/gi,	'$1i$3');
		t = t.replace(/\bseg/gi,			'sig');
		t = t.replace(/\bdes([^s])/gi,			'dis$1');

		// ei -> i (alguns casos) deixa -> dexa
		t = t.replace(/eix/gi,				'ex');
		// o -> u (alguns casos)
		t = t.replace(/\bbonit/gi,			'bunit');
		// e sozinho -> i
		t = t.replace(/\be\b/gi,			'i');

		// inglês -> ingleix
		t = t.replace(/ês\b/gi,				'eix');
		// atrás -> atraix
		t = t.replace(/(\w)(ás|az)\b/gi,		'$1aix');

		// Acento no final eh moh uoh
		t = t.replace(/á([^\wáéíóúàâêôãõüç]|$)/gi,	'ah$1');
		t = t.replace(/é([^\wáéíóúàâêôãõüç]|$)/gi,	'eh$1');
		t = t.replace(/í([^\wáéíóúàâêôãõüç]|$)/gi,	'ih$1');
		t = t.replace(/ó([^\wáéíóúàâêôãõüç]|$)/gi,	'oh$1');
		t = t.replace(/ú([^\wáéíóúàâêôãõüç]|$)/gi,	'uh$1');
		// Acentuação? Nunca.
		t = t.replace(/[áàâãä]/gi,			'a');
		t = t.replace(/[éèêë]/gi,			'e');
		t = t.replace(/[íìîï]/gi,			'i');
		t = t.replace(/[óòôõö]/gi,			'o');
		t = t.replace(/[úùûü]/gi,			'u');

		t = t.replace(/[ç]/gi,				'ss');	

		// l$ -> u
		t = t.replace(/(\w[a-z])l\b/gi,			'$1u');
		// amo -> amu, todo -> todu (plural também)
		t = t.replace(/o(s?)\b/gi,			'u$1');
		t = t.replace(/\b(\d+)u\b/gi,			'$1o'); // fix 1u > 1o (primeiro)
		// ou -> o (se for parte de palavra)
		t = t.replace(/(\w)ou\b/gi,			'$1ow'); // Orkut
		t = t.replace(/\bou(\w)/gi,			'o$1');
		t = t.replace(/(\w)ou(\w)/gi,			'$1o$2');
		// ^c -> k (exceções: certo,cidade,c)
		t = t.replace(/\bc([^ei\W])/gi,			'k$1');
		// andar -> andah, comer -> come, sentir -> senti
		t = t.replace(/ar\b/gi,				'ah');
		t = t.replace(/er\b/gi,				'e');
		t = t.replace(/ir\b/gi,				'i');
		// eira$ -> era  (sonzera, ladera)
		t = t.replace(/eira\b/gi,			'era');
		// sa$ -> za, casa -> caza
		t = t.replace(/([^s\W])sa\b/gi,			'$1za');
		// TODO muZica e assemelhados
		// Certas palavras não precisam de plural (mmmmm, deixe quieto)
		// t = t.replace(/(dia)s\b/gi,			'$1');

		// O abominável X no fim das palavras no plural
		t = t.replace(/([^\Ws])s\b/gi,			'$1x');
		// O abominável H no fim de certas palavras
		t = t.replace(/(\w)a\b/gi,			'$1ah');

		t = t.replace(/\b(he|ha|hi|ho|hua|rs){2,}h?\b/gi,	'kkkkkkkkkkk');
		t = t.replace(/[8:][-o]?[D)]/g,				'kkkkkkkkkkk');

		// Somente um ponto final é muito pouco
		t = t.replace(/\./g,				'......');
		// Pra que vírgula? Pontos são mais legais... vários...
		t = t.replace(/, /g,				'...');
		t = t.replace(/,(\n|$)/g,			'...$1');

		t = t.replace(/!/g,				'!!!!!');
		t = t.replace(/\?/g,				'??!?!');


		// Alternância aLEaTóRIa de maiúsculas e minúsculas
		t = camelize(t);
		// E uns ajustes finais para ficar ainda mais fofuxu
		t = t.replace(/x/gi,				'xXx');
		t = t.replace(/ss/gi,				'XX');
		
		return(t);

	}
	
	function traduz_tiopes(str) {

		
		// http://cersimao.blogspot.com/
		str = str.replace(/foda/gi,'fòd a');
		str = str.replace(/virou\?/gi,'viro\\u');
		str = str.replace(/quê\?/gi,'k^e');
		str = str.replace(/ahn/gi,'~~ãuummm');
		str = str.replace(/festa/gi,'festha');
		str = str.replace(/uva/gi,'huva');


		// Desciclopédia
		str = str.replace(/ me /gi,' si '); 
		str = str.replace(/WTF/gi,'QQQQQQQ');
		str = str.replace(/o que é isso/gi,'q iso');
		str = str.replace(/o que eh isso/gi,'q iso');
		str = str.replace(/he/gi,'he');
		str = str.replace(/nem ligo/gi,'nenli');
		str = str.replace(/sai daqui/gi,'saicu');
		str = str.replace(/viado/gi,'gay');
		str = str.replace(/paz/gi,'pas e lus/');
		str = str.replace(/fica a dica/gi,'fikdik/');
		str = str.replace(/bjos/gi,'bjsmiliga');
		str = str.replace(/vem cá/gi,'vemk');
		str = str.replace(/cá/gi,'k');
		str = str.replace(/brincadeira/gi,'todibrimks');
		str = str.replace(/é/gi,'\'e');
		str = str.replace(/\?/gi,'\/');
			
		


		str = str.replace(/tipo/gi,'tiop');
		str = str.replace(/assim/gi,'açim');
		str = str.replace(/gay/gi,'gaydacu'); 
		str = str.replace(/bixa/gi,'beesha'); 
		str = str.replace(/Paris/gi,'Peris'); 
		str = str.replace(/alou/gi,'alo'); 
		str = str.replace(/vc/gi,'vose'); 
		str = str.replace(/você/gi,'vose'); 
		str = str.replace(/fica/gi,'fik'); 
		str = str.replace(/dica/gi,'dik'); 
		str = str.replace(/jesus/gi,'GZUS'); 
		str = str.replace(/indie/gi,'indje'); 
		str = str.replace(/orkut/gi,'orkute'); 
		str = str.replace(/virus/gi,'viros'); 
		str = str.replace(/menina/gi,'menian'); 
		str = str.replace(/menino/gi,'menine'); 
		str = str.replace(/policia/gi,'poliça'); 
		str = str.replace(/pão/gi,'poa'); 
		str = str.replace(/amigo/gi,'amico'); 
		str = str.replace(/amiga/gi,'amica'); 
		str = str.replace(/sexo/gi,'seqço'); 
		str = str.replace(/sexy/gi,'zegzy'); 
		str = str.replace(/nossa/gi,'noffa'); 
		str = str.replace(/horror/gi,'orror'); 
		str = str.replace(/hacker/gi,'rack');
		str = str.replace(/horisontes/gi,'orisontes'); 
		str = str.replace(/noite/gi,'noiet'); 
		str = str.replace(/newbe/gi,'n00b'); 
		str = str.replace(/internet/gi,'net'); 
		str = str.replace(/e-mail/gi,'e meal'); 
		str = str.replace(/adiciona/gi,'add'); 
		str = str.replace(/deus/gi,'dels'); 
		str = str.replace(/galera/gi,'galere'); 
		str = str.replace(/abraço/gi,'abraso'); 
		str = str.replace(/brincadeira/gi,'brinks'); 
		str = str.replace(/brincar/gi,'brink'); 
		str = str.replace(/pessoas/gi,'n00b'); 
		str = str.replace(/punk/gi,'pank'); 
		str = str.replace(/emo/gi,'eom'); 
		str = str.replace(/rbd/gi,'rdb'); 
		str = str.replace(/nome/gi,'noem'); 
		str = str.replace(/gotico/gi,'gostiko'); 
		str = str.replace(/gotica/gi,'gostika'); 
		str = str.replace(/entendeu/gi,'tendel'); 
		str = str.replace(/doido/gi,'doids'); 
		str = str.replace(/gato/gi,'gaot'); 
		str = str.replace(/gata/gi,'gatz'); 
		str = str.replace(/reflitão/gi,'reflitam'); 
		str = str.replace(/bafão/gi,'bafon'); 
		str = str.replace(/chorei/gi,'shorei'); 
		str = str.replace(/litros/gi,'litrus'); 
		str = str.replace(/Diana/gi,'Diane'); 
		str = str.replace(/tudo/gi,'tuod'); 
		str = str.replace(/Diana/gi,'Diane'); 
		str = str.replace(/cruzes/gi,'cruses');
		str = str.replace(/eu/gi,'el'); 
		str = str.replace(/au/gi,'al'); 
		str = str.replace(/iu/gi,'il'); 
		str = str.replace(/ou/gi,'ol'); 
		str = str.replace(/uu/gi,'ul'); 
		str = str.replace(/vivão/gi,'vivoa'); 
		str = str.replace(/boca/gi,'bok'); 
		str = str.replace(/quem/gi,'qem');
		str = str.replace(/comigo/gi,'cmg'); 
		str = str.replace(/qualquer/gi,'qlqer'); 
		str = str.replace(/valeu/gi,'vlw'); 
		str = str.replace(/valeu/gi,'vlw'); 
		str = str.replace(/gente/gi,'jent'); 
		str = str.replace(/nada/gi,'naad'); 
		str = str.replace(/duvida/gi,'duviad'); 
		
		// numeors
		
		str = str.replace(/1/gi,'un'); 
		str = str.replace(/2/gi,'does'); 
		str = str.replace(/3/gi,'tr^es'); 
		str = str.replace(/4/gi,'quatr'); 
		str = str.replace(/5/gi,'sinco'); 
		str = str.replace(/6/gi,'seis'); 
		str = str.replace(/7/gi,'seet'); 
		str = str.replace(/8/gi,'**888'); 
		str = str.replace(/9/gi,'noev'); 
		str = str.replace(/0/gi,'zero'); 
		str = str.replace(/10/gi,'des'); 
		
		str = str.replace(/um/gi,'1'); 
		str = str.replace(/dois/gi,'2'); 
		str = str.replace(/três/gi,'3'); 
		str = str.replace(/quatro/gi,'4'); 
		str = str.replace(/cinco/gi,'5'); 
		str = str.replace(/seis/gi,'6'); 
		str = str.replace(/sete/gi,'7'); 
		str = str.replace(/oito/gi,'8***8'); 
		str = str.replace(/nove/gi,'9'); 
		str = str.replace(/dez/gi,'10'); 
		
		
		
		
		//q
		
		str = str.replace(/lh/gi,'li'); 
		str = str.replace(/ue/gi,'e'); 
		str = str.replace(/nh/gi,'ni'); 
		str = str.replace(/ç/gi,'s'); 
		str = str.replace(/x/gi,'sh'); 
		str = str.replace(/sc/gi,'s'); 
		str = str.replace(/ch/gi,'sh'); 
		str = str.replace(/ss/gi,'ç');
		
		//ALo vose
		
		str = str.replace(/que/gi,'-q'); 
		str = str.replace(/risos/gi,'rs'); 
		str = str.replace(/hua/gi,'rsrs'); 
		str = str.replace(/não/gi,'-n'); 
		str = str.replace(/sim/gi,'-s'); 
		str = str.replace(/beleza/gi,'bls'); 
		str = str.replace(/firmeza/gi,'fms'); 
		str = str.replace(/falou/gi,'flw'); 
		str = str.replace(/tchau/gi,'tshal'); 
		str = str.replace(/olá/gi,'oioi puat'); 
		str = str.replace(/como faz/gi,'como fas');
		str = str.replace(/comofaz/gi,'comofas');
		str = str.replace(/rro/gi,'orr');
		str = str.replace(/rra/gi,'arr');
		str = str.replace(/rre/gi,'err');
		
		
		//Verbs
		str = str.replace(/(\w[aei])ndo\b/gi,'$1nod');
		str = str.replace(/(\w[abcdefghijklmnopqrstuvxz])ir\b/gi,'$1r');
		str = str.replace(/(\w[abcdefghijklmnopqrstuvxz])ar\b/gi,'$1r');
		str = str.replace(/(\w[abcdefghijklmnopqrstuvxz])er\b/gi,'$1r');
		
		str = str.replace(/(\w[abcdefghijklmnopqrstuvxz])as\b/gi,'$1s');
		str = str.replace(/(\w[abcdefghijklmnopqrstuvxz])es\b/gi,'$1s');
		str = str.replace(/(\w[abcdefghijklmnopqrstuvxz])is\b/gi,'$1s');
		str = str.replace(/(\w[abcdefghijklmnopqrstuvxz])os\b/gi,'$1s');
		str = str.replace(/(\w[abcdefghijklmnopqrstuvxz])us\b/gi,'$1s');
		
		//A O E tiop difisil

		str = str.replace(/(\w[aei])bo\b/gi,'$1ob ');
		str = str.replace(/(\w[aei])co \b/gi,'$1oc ');
		str = str.replace(/(\w[aei])do\b/gi,'$1od ');
		str = str.replace(/(\w[aei])fo \b/gi,'$1of ');
		str = str.replace(/(\w[aei])go\b/gi,'$1og ');
		str = str.replace(/(\w[aei])ho \b/gi,'$1oh ');
		str = str.replace(/(\w[aei])jo\b/gi,'$1og ');
		str = str.replace(/(\w[aei])ko \b/gi,'$1ok ');
		str = str.replace(/(\w[aei])lo\b/gi,'$1ol ');
		str = str.replace(/(\w[aei])mo \b/gi,'$1om ');
		str = str.replace(/(\w[aei])no \b/gi,'$1on ');
		str = str.replace(/(\w[aei])po \b/gi,'$1op ');
		str = str.replace(/(\w[aei])qo \b/gi,'$1oq ');
		str = str.replace(/(\w[aei])ro \b/gi,'$1or ');
		str = str.replace(/(\w[aei])so \b/gi,'$1os ');
		str = str.replace(/(\w[aei])to \b/gi,'$1ot ');
		str = str.replace(/(\w[aei])vo \b/gi,'$1ov ');
		str = str.replace(/(\w[aei])zo \b/gi,'$1oz ');
		
		str = str.replace(/(\w[aei])ba\b/gi,'$1ab ');
		str = str.replace(/(\w[aei])ca \b/gi,'$1ac ');
		str = str.replace(/(\w[aei])da\b/gi,'$1ad ');
		str = str.replace(/(\w[aei])fa\b/gi,'$1af ');
		str = str.replace(/(\w[aei])ga\b/gi,'$1ag ');
		str = str.replace(/(\w[aei])ha\b/gi,'$1ah ');
		str = str.replace(/(\w[aei])ja\b/gi,'$1aj ');
		str = str.replace(/(\w[aei])ka \b/gi,'$1ak ');
		str = str.replace(/(\w[aei])la\b/gi,'$1al ');
		str = str.replace(/(\w[aei])ma \b/gi,'$1am ');
		str = str.replace(/(\w[aei])na \b/gi,'$1an ');
		str = str.replace(/(\w[aei])pa \b/gi,'$1ap ');
		str = str.replace(/(\w[aei])qa \b/gi,'$1aq ');
		str = str.replace(/(\w[aei])ra \b/gi,'$1ar ');
		str = str.replace(/(\w[aei])sa \b/gi,'$1as ');
		str = str.replace(/(\w[aei])ta \b/gi,'$1at ');
		str = str.replace(/(\w[aei])va \b/gi,'$1av ');
		str = str.replace(/(\w[aei])za \b/gi,'$1az ');
		
		str = str.replace(/(\w[aei])be\b/gi,'$1eb ');
		str = str.replace(/(\w[aei])ce \b/gi,'$1ec ');
		str = str.replace(/(\w[aei])de\b/gi,'$1ed ');
		str = str.replace(/(\w[aei])fe \b/gi,'$1ef ');
		str = str.replace(/(\w[aei])ge\b/gi,'$1eg ' );
		str = str.replace(/(\w[aei])he \b/gi,'$1eh ');
		str = str.replace(/(\w[aei])je\b/gi,'$1eg ');
		str = str.replace(/(\w[aei])ke \b/gi,'$1ek ');
		str = str.replace(/(\w[aei])le\b/gi,'$1el ');
		str = str.replace(/(\w[aei])me \b/gi,'$1em ');
		str = str.replace(/(\w[aei])ne \b/gi,'$1en ');
		str = str.replace(/(\w[aei])pe \b/gi,'$1ep ');
		str = str.replace(/(\w[aei])qe \b/gi,'$1eq ');
		str = str.replace(/(\w[aei])re \b/gi,'$1er ');
		str = str.replace(/(\w[aei])se \b/gi,'$1es ');
		str = str.replace(/(\w[aei])te\b/gi,'$1et ');
		str = str.replace(/(\w[aei])ve \b/gi,'$1ev ');
		str = str.replace(/(\w[aei])ze \b/gi,'$1ez ');
		
		str = str.replace(/!!/gi,'!');
		str = str.replace(/!/gi,'!!!!!!1111');
	
		return(str);
	
	}


	function postaAjax(caminho, dados, volta, sincrona) {
		if (!caminho) alert('Caminho não definido!');
		if (!(caminho, dados, volta)) alert('Parâmetros incorretos na função postaAjax(caminho, dados, volta)\n\ncaminho=' + caminho + '\ndados=' + dados + '\nvolta=' + volta);
		var ajax = criar_ajax();
		if (ajax != null) {
			if (!sincrona) {
				ajax.onreadystatechange = function() {
					if (ajax.readyState == 4) {
						volta(ajax.responseText);
					}
				}
			}
			ajax.open('POST', caminho, !sincrona);
			ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
			ajax.send(dados);
			if (sincrona) {
				volta(ajax.responseText)
			}
		}
	}
	function enviaFormulario(edicao_id, formulario, dados_adicionais, caminho, volta, sincrona) {
		var f = get(formulario);
		var el;
		var valor;
		var dados;
		if (dados_adicionais) {
			dados = dados_adicionais + '&asc=1';
		} else {
			dados = 'asc=1';
		}
		var arrIds = Array();
		getAllIds(f, arrIds);
		for (var i = 0; i < arrIds.length; i++) {
			el = get(arrIds[i]);
			switch (el.type) {
				case 'select-one':
				case 'hidden':
				case 'text':
				case 'textarea':
				case 'password':
					valor = el.value;
					dados += '&' + el.id + '=' + post_encode(valor);
					break; 
				case 'radio':
					if (el.checked) {
						valor = el.value;
						dados += '&' + el.name + '=' + post_encode(valor);
					}
			}
		}
		
		postaAjax(caminho, dados, volta, sincrona);
	}
	function getAllIds(el, arrIds) {
		if (el.childNodes.length > 0) {
			for (var i = 0; i < el.childNodes.length; i++) {
				if (el.childNodes[i] && el.childNodes[i].id) {
					arrIds[arrIds.length] = el.childNodes[i].id;
				}
				if (el.childNodes[i].childNodes.length > 0) {
					getAllIds(el.childNodes[i], arrIds);
				}
			}
		}
	}
	
	function criar_ajax(){
		try {
			// Firefox, Opera 8.0+, Safari
			xmlHttp = new XMLHttpRequest();
		} catch (e) {
			// Internet Explorer
			try {
				xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {
					return false;
				}
			}
		}
		return(xmlHttp);
	}
	
	function url_decode(psEncodeString) {
		var lsRegExp = /\+/g;
		return unescape(String(psEncodeString).replace(lsRegExp, " "));
	}
	
	function post_encode(campo) {
		return(campo.replace(/\&/g, '%26'));
	}

	function get(id) {
		return document.getElementById(id);
	}
