function flip(original_id,flipped_id) {
	var result = flipString(document.getElementById(original_id).value.toLowerCase());
	document.getElementById(flipped_id).value = result;
}

function unFlipString(aString) {
	var last = aString.length - 1;
	var result = new Array(aString.length)
	for (var i = last; i >= 0; --i) {
		var c = aString.charAt(i)
		var r = flipTable[c]
		result[last - i] = r != undefined ? r : c
	}
	return result.join('');	
}

function flipString(aString) {
	var last = aString.length - 1;
	var result = new Array(aString.length)
	for (var i = last; i >= 0; --i) {
		var c = aString.charAt(i)
		var r = flipTable[c]
		result[last - i] = r != undefined ? r : c
	}
	var stringprep = result.join('');
	
	//Unflip Quote BBCode
	stringprep = stringprep.replace(/\[\u01DD\u0287onb\/\](.*?)\[\u01DD\u0287onb\]/,'\[quote\]$1\[/quote\]');
	
	//Unflip Spoiler BBCode
	stringprep = stringprep.replace(/\[\u0279\u01DD\u05DF\u0131ods\/\](.*?)\[\u0279\u01DD\u05DF\u0131ods\]/,'\[spoiler\]$1\[/spoiler\]');
	
	//Unflip IMG tags and contents
	var imgpattern = /\[\u0183\u026F\u0131\/\](.*?)\[\u0183\u026F\u0131\]/gi;
	var imageurls = stringprep.match(imgpattern);
	if (imageurls!=null){
		for(i=0;i<imageurls.length;i++) {
			var flippedimg=imageurls[i]
			var unflippedimg=unFlipString(imageurls[i]);
			stringprep=stringprep.replace(flippedimg,unflippedimg);
		}
	}
	
	//Unflip Youtube tags and contents
	var ytpattern = /\[\u01DDqn\u0287no\u028E\/\](.*?)\[\u01DDqn\u0287no\u028E\]/gi;
	var yturls = stringprep.match(ytpattern);
	if (yturls!=null){
		for(i=0;i<yturls.length;i++) {
			var flippedyt=yturls[i]
			var unflippedyt=unFlipString(yturls[i]);
			stringprep=stringprep.replace(flippedyt,unflippedyt);
		}
	}

	//Unflip URL tags and contents
	var urlpattern = /\[\u05DF\u0279n\/\](.*?)\[\u05DF\u0279n\]/gi;
	var urlurls = stringprep.match(urlpattern);
	if (urlurls!=null){
		for(i=0;i<urlurls.length;i++) {
			var flippedurl=urlurls[i]
			var unflippedurl=unFlipString(urlurls[i]);
			stringprep=stringprep.replace(flippedurl,unflippedurl);
		}
	}

	
	var finalstring = stringprep;
	return finalstring;
}

var flipTable = {
	a : '\u0250',
	b : 'q',
	c : '\u0254',
	d : 'p',
	e : '\u01DD',
	f : '\u025F',
	g : '\u0183',
	h : '\u0265',
	i : '\u0131',
	j : '\u027E',
	k : '\u029E',
	l : '\u05DF',
	m : '\u026F',
	n : 'u',
	r : '\u0279',
	t : '\u0287',
	v : '\u028C',
	w : '\u028D',
	y : '\u028E',
	'.' : '\u02D9',
	'[' : ']',
	'(' : ')',
	'{' : '}',
	'?' : '\u00BF',
	'!' : '\u00A1',
	"\'" : ',',
	'<' : '>',
	'_' : '\u203E',
	'"' : '\u201E',
	'\\' : '\\',
	';' : '\u061B',
	'\u203F' : '\u2040',
	'\u2045' : '\u2046',
	'\u2234' : '\u2235'
}

for (i in flipTable) {
	flipTable[flipTable[i]] = i
}

