// Function GoogleTranslator,
//	create a select and a link to
//	help user with Google translation
// --------------------------------------
// @example :
// onload = function(){
//	document.body.appendChild(
// 		GoogleTranslator("Translate", "en", "ITA - ENG")
// 	);
// };
// --------------------------------------
// @author	Andrea Giammarchi
// @site	www.devpro.it
// @date	2007-03-03
// @version	1.0
// @license	MIT Style License
// --------------------------------------
function GoogleTranslator(
	translate,	// translate link value		[default:"Tranlsate"]
	lan,		// translation page language	[default:choosed translation language]
	def		// default translation		[defult:any translation]
){

	// public static method,
	//	open Google translation page in a new tab
	GoogleTranslator.Call = function(link){
		function get(i){return lang[s.item(s.selectedIndex).firstChild.nodeValue][i]};
		function join(){return a.join.call(arguments, "")};
		var	a = new Array(2),
			e = document.charset || document.characterSet,
			f = window.encodeURIComponent || window.encodeURI || escape,
			s = link.parentNode.firstChild,
			t = (
				(window.getSelection && window.getSelection()) ||
				(document.getSelection && document.getSelection()) ||
				(document.selection && document.selection.createRange && document.selection.createRange().text)
			);
		if(s.selectedIndex) {
			a = [get(0), get(1)];
			link.href = join(
				"http://translate.google.com/translate",
				t != "" ? join("_t?text=", f(t)) : join("?u=", f(location.href)),
				"&hl=", lan || a[1], "&langpair=", a[0], "|", a[1], "&tbb=1&ie=", e
			);
		};
		return !!s.selectedIndex;
	};

	// private methods and parameters
	function create(name){return document.createElement(name)};
	function text(value){return document.createTextNode(value)};
	var	lang = {
			"ARA - ENG":["ar", "en"],
			"KOR - ENG":["ko", "en"],
			"ENG - ARA":["en", "ar"],
			"ENG - FRA":["en", "fr"],
			"ENG - RUS":["en", "ru"],
			"PRT - ENG":["pt", "en"],
			"DEU - ENG":["de", "en"],
			"CHN - ENG":["zh", "en"],
			"FRA - ENG":["fr", "en"],
			"ENG - CHN S":["en", "zh-CN"],
			"ENG - JPN":["en", "ja"],
			"ENG - ESP":["en", "es"],
			"RUS - ENG":["ru", "en"],
			"CHN S - CHN T":["zh-CN", "zh-TW"],
			"FRA - DEU":["fr", "de"],
			"ENG - CHN T":["en", "zh-TW"],
			"ENG - ITA":["en", "it"],
			"ENG - DEU":["en", "de"],
			"ESP - ENG":["es", "en"],
			"CHN T - CHN S":["zh-TW", "zh-CN"],
			"JPN - ENG":["ja", "en"],
			"ENG - KOR":["en", "ko"],
			"ENG - PRT":["en", "pt"],
			"ITA - ENG":["it", "en"],
			"DEU - FRA":["de", "fr"]
		},
		div = create("div"),
		link = create("a"),
		option = create("option"),
		select = create("select");
	div.appendChild(select);
	div.appendChild(link);
	link.href = "#GoogleTranslator";
	link.target = "_blank";
	link.onclick = function(){return GoogleTranslator.Call(this)};
	link.appendChild(text(translate || "Translate"));
	select.appendChild(option);
	for(var	key in lang) {
		if(key.indexOf("-") > 0) {
			option = create("option");
			option.appendChild(text(key));
			select.appendChild(option);
			if(key === def)
				option.selected = "selected";
		}
	};
	return div;
};