﻿$Dom().nameSpace('googleTranslate');

// 【google translate】方法，google定制
google.load("language", "1");
var translateFeedback = function(targetlang, idtotranslate, showTranslateFeedback){
	var origlang = (targetlang == "en"? "zh":"en");
	var obj_totranslate = $(idtotranslate);
	var show_translate = $(showTranslateFeedback);
	var maxUrl = 2083;

	if(obj_totranslate.innerHTML.length < maxUrl){
		google.language.translate(obj_totranslate.innerHTML, origlang, targetlang, function(result) {
			if (!result.error) {
				if(show_translate.innerHTML == ''){
					show_translate.innerHTML = result.translation;
				}else{
					if(result.translation == '') return;
					show_translate.innerHTML+= '<div style="border-bottom:1px dashed #000; height:1px; width: 100%; margin: 15px 0;"></div><p>Additional information：</p><br>' + result.translation;
				}
			}
		});
	}else{
		alert('Sorry, the Google Translate API only supports passages of up to 2000 characters. ');
	}
};

googleTranslate.funs = (function(){
	var google = {
		bGoogles : $Dom(document).getElementsByClassName('google-translate'),
		en_zh : $Dom(document).getElementsByClassName('en-zh'),
		zh_en : $Dom(document).getElementsByClassName('zh-en')
	};

	// 【google translate】按扭的执行效果
	var _google_translate = function(){
		var bGoogles = google.bGoogles;

		for(var i = 0, len = bGoogles.length; i < len; i++){
			$EVENT(bGoogles[i]).addEvent('click', function(evt){
				var bParent = this.parentNode,
						offImg = this.getElementsByTagName('img')[0],
						img_src_index = offImg.src.lastIndexOf('/'),
						img_src = offImg.src.substring(0,img_src_index),
						img_name = offImg.src.substring(img_src_index+1),
						show_translate = $Dom(bParent).getNextSibling(),
						show_con_translate = $Dom(show_translate).getElementsByClassName('g_tran_cont')[0],
						toTranslate = $Dom(bParent.parentNode).getElementsByClassName('answ_cont')[0],
						toTranslate_add = $Dom(bParent.parentNode).getElementsByClassName('add')[0];

				if(img_name == 'btn_down02.gif'){
					offImg.src = img_src + '/btn_up02.gif';
				}else{
					offImg.src = img_src + '/btn_down02.gif';
				}
				show_con_translate.innerHTML = '';
				if(toTranslate_add){
					translateFeedback('en', toTranslate, show_con_translate);
					setTimeout(function(){
						translateFeedback('en', toTranslate_add, show_con_translate);
					}, 500);
				}else{
					translateFeedback('en', toTranslate, show_con_translate);
				}
				$Dom(show_translate).toggle();
				$EVENT().stopEvent(evt);
			})
		}
	};

	// 【英译中/中译英】
	var _translate = function(){
		var en_zh = google.en_zh,
				zh_en = google.zh_en;

		for(var i = 0, len = en_zh.length; i < len; i++){
			$EVENT(en_zh[i]).addEvent('click', function(evt){
				var show_con_translate = $Dom(this.parentNode).getNextSibling(),
						toTranslate = $Dom(this.parentNode.parentNode.parentNode).getElementsByClassName('answ_cont')[0],
						toTranslate_add = $Dom(this.parentNode.parentNode.parentNode).getElementsByClassName('add')[0],
						other_tran = $Dom(this.parentNode).getElementsByClassName('zh-en')[0];

				show_con_translate.innerHTML = '';
				$Dom(this).addClass('choose');
				$Dom(other_tran).removeClass('choose');
				if(toTranslate_add){
					translateFeedback('zh', toTranslate, show_con_translate);
					setTimeout(function(){
						translateFeedback('zh', toTranslate_add, show_con_translate);
					}, 500);
				}else{
					translateFeedback('zh', toTranslate, show_con_translate);
				}
				$EVENT().stopEvent(evt);
			});

			$EVENT(zh_en[i]).addEvent('click', function(evt){
				var show_con_translate = $Dom(this.parentNode).getNextSibling(),
						toTranslate = $Dom(this.parentNode.parentNode.parentNode).getElementsByClassName('answ_cont')[0],
						toTranslate_add = $Dom(this.parentNode.parentNode.parentNode).getElementsByClassName('add')[0],
						other_tran = $Dom(this.parentNode).getElementsByClassName('en-zh')[0];

				show_con_translate.innerHTML = '';
				$Dom(this).addClass('choose');
				$Dom(other_tran).removeClass('choose');
				if(toTranslate_add){
					translateFeedback('en', toTranslate, show_con_translate);
					setTimeout(function(){
						translateFeedback('en', toTranslate_add, show_con_translate);
					}, 500);
				}else{
					translateFeedback('en', toTranslate, show_con_translate);
				}
				$EVENT().stopEvent(evt);
			});
		}
	};

	return{
		google_translate : function(){
			_google_translate();
			_translate();
		}
	}
})();

