﻿/////////////////////////////////////////////////////
////////////Translate Tool for KaKaNow.com///////////
/////////////////////////////////////////////////////
//document.writeln ('<script type="text/javascript" id="TT_bingjs" src="http://api.microsofttranslator.com/v1/Ajax.svc/Embed?appId=7J58aPRxnSgzpuFJL17bg92WCkfhnhCv"></script>');
document.writeln ('<script type="text/javascript" id="TT_googlejs" src="http://www.google.com/jsapi"></script>');

	//var s = document.createElement('script'); 
	//s.id = 'TT_bingjs'; 
	//s.type = 'text/javascript'; 
	//s.src = "http://api.microsofttranslator.com/v1/Ajax.svc/Embed?appId=7J58aPRxnSgzpuFJL17bg92WCkfhnhCv";
	//document.documentElement.insertBefore(s, document.documentElement.firstChild); 

//new function() { 
//	var s = document.createElement('script'); 
//	s.id = 'TT_googlejs'; 
//	s.type = 'text/javascript'; 
//	s.src = "http://www.google.com/jsapi";
//	document.documentElement.insertBefore(s, document.documentElement.firstChild); };

var translate_css = "#TT_translateWindow input,#TT_translateWindow textarea{}#TT_translateWindow p{display:inline}#TT_translateWindow br{display:none}";
translate_css += "#TT_Button_exchange{}#TT_Button_exchange:hover{background-color:orange;}#TT_translateWindow select{width:140px;margin-right:15px;margin-left:2px;color:#000;}#TT_translateResult img{position:relative;top:5px;border-width: 0px;margin-bottom:3px;}.TT_output{background-image:none;border-color:#999;background-color:#CfCfCf;overflow:auto;margin:4px 0px 4px 0px;width:226px;height:180px;}.TT_output:focus{background-color:#eee;}#TT_td_google{width: 50%;border: 1px solid #B4C8F8;background-color: #ffffff;vertical-align: top;padding: 0px;}#TT_td_google:hover {border: 1px solid #113EA9;}#TT_td_bing:hover{border: 1px solid #49565C;}#TT_td_bing{width: 50%;background-color: #B2BDC4;border: 1px solid #9AA9AF;vertical-align: top;padding: 0px;}#TT_td_bing:hover .TT_copyButton{display:block;}#TT_td_google:hover .TT_copyButton{display:block;}.TT_copyButton{position: absolute;top:0px;right:0px;display:none;cursor:pointer;left:auto;}";
translate_css += "#TT_Button_Translate,#TT_Button_TranslateBack{}#TT_translateResult{border-spacing:2px;}";
 
try{
	var style = document.createStyleSheet();
	style.cssText = translate_css;
}catch(err){
	var style = document.createElement("style"); 
	style.type = "text/css"; 
	try{
		style.innerHTML = translate_css; 
	}catch(err){
		if (style.styleSheet) { 
        	style.styleSheet.cssText=translate_css;  
    	} else {  
        	style.appendChild(document.createTextNode(translate_css));  
    	} 
	}
	document.getElementsByTagName("HEAD").item(0).appendChild(style); 
}

var TranslateFunction=new function(){
	//调入
	this.GoogleLoaded=false;
	this.BingLoaded=true;
	this.loadGoogleTranslatejs = function() {	
		try{
			if (google){
				google.load("language", "1",{"callback" : TranslateFunction.GoogleLoadFin});
			}else{
				//alert("12");
				setTimeout("TranslateFunction.loadGoogleTranslatejs();",1000);
			}
		}catch(err){
			setTimeout("TranslateFunction.loadGoogleTranslatejs();",1000);
		}
	}
	this.GoogleLoadFin=function(){
		TranslateFunction.GoogleLoaded =true;
		TranslateFunction.checkjsloadfinish();
	}
	this.BingLoadFin=function(){
		TranslateFunction.BingLoaded =true;
		TranslateFunction.checkjsloadfinish();
	}
	this.checkjsloadfinish=function(){
		//alert("11");
		if (TranslateFunction.GoogleLoaded && TranslateFunction.BingLoaded){  //载入完成
			TranslateFunction.readSetting();
			document.getElementById("TT_loading").style.display="none";
		}
	}
	//界面操作
	this.langExchange=function(){
		var src =   document.getElementById('TT_lang_src').value; 		
   		document.getElementById('TT_lang_src').value = document.getElementById('TT_lang_dst').value;
   		if (src=="auto"){src="fr"}
     	document.getElementById('TT_lang_dst').value =src;
	}
	this.Text_Copy=function (ElementId){
		var textRange=document.getElementById(ElementId).createTextRange(); 
		textRange.execCommand("Copy");
	}
	this.TranslateResultOnChange=function(){
		if (!(document.getElementById('TT_googleoutput').value=="" && document.getElementById('TT_bingoutput').value=="")&&document.getElementById('TT_lang_src').value!="auto"){
			document.getElementById('TT_Button_TranslateBack').style.display="";			
		} else {
			document.getElementById('TT_Button_TranslateBack').style.display="none";
		}
	}
   this.textarea_onkeypress=function(event){
		var e = event||window.event; 
		var k = e.which||e.keyCode; 
　　		if (k == 13){
			e.returnValue = false;
			e.cancel = true;
			TranslateFunction.Translate();
　　		} else {
			if (k == 27){
				TT_source.value = "";
			} else {
				TranslateFunction.checkMaxLength();
			}
		}
	}
	this.textarea_onfocus=function(){
   		var Source =  TT_source;
   		if (Source.value != "") {
   			Source.select();
   		}
	}	
	//翻译
	function LangCodeBing2Google(a){return a.replace('zh-CHS', 'zh-cn').replace('zh-CHT', 'zh-tw').replace('he', 'iw');
	}
	this.Translate=function(){
		document.getElementById("TT_translateResult").style.display="";
		document.getElementById("TT_googleoutput").value="";
     	document.getElementById("TT_bingoutput").value="";
     	document.getElementById("TT_google_TranslateBackByGoogle").style.display="none";
     	document.getElementById("TT_google_TranslateBackByBing").style.display="none";
     	document.getElementById("TT_bing_TranslateBackByGoogle").style.display="none";
     	document.getElementById("TT_bing_TranslateBackByBing").style.display="none";
		TranslateFunction.saveSetting();
		var value = TT_source.value;
		var src = document.getElementById('TT_lang_src').value.replace('auto', '');
		var dest = document.getElementById('TT_lang_dst').value;
      	google.language.translate(value, LangCodeBing2Google(src), LangCodeBing2Google(dest), TranslateFunction.translateResult);
      	try{
			Microsoft.Translator.translate(value,src,dest, 
				function(translation) { 
					document.getElementById("TT_bingoutput").value = translation;
					if (document.getElementById('TT_lang_src').value!="auto"){
						document.getElementById('TT_Button_TranslateBack').style.display="";
					}
				});
		}catch(err){document.getElementById("TT_bingoutput").value ='Error Translating'}
		return false;		
	}
	this.translateResult=function (result) {
		var resultBody = document.getElementById("TT_googleoutput");
		if (result.translation) {
        	var str = replaceHTML (result.translation);
        	resultBody.value = str;
			if (document.getElementById('TT_lang_src').value!="auto"){
				document.getElementById('TT_Button_TranslateBack').style.display="";
			}
      	} else {
        	resultBody.value = 'Error Translating';
      	}
     // document.getElementById("ButtonCopyGoogle").style.display="";
     // document.getElementById("ButtonCopyBing").style.display="";
     // document.getElementById("ButtonTranslateGoogle").style.display="";
     // document.getElementById("ButtonTranslateBing").style.display="";
     // document.getElementById("TranslateGoogleBack").innerHTML="";
     // document.getElementById("TranslateBingBack").innerHTML="";
	}
	this.TranslateBack=function(){
		var value = document.getElementById('TT_googleoutput').value + "<ttttt>" + document.getElementById('TT_bingoutput').value;
		var dest = document.getElementById('TT_lang_src').value.replace('auto', '');
		var src = document.getElementById('TT_lang_dst').value;
		google.language.translate(value,  LangCodeBing2Google(src), LangCodeBing2Google(dest),
      					function(result) { 
      						if (result.translation) {
      							var reCat = "<ttttt>";
       							var arrdata = result.translation.split(reCat);		
		                     	document.getElementById("TT_google_TranslateBackByGoogle_text").innerText= replaceHTML(arrdata[0]);  
		                     	document.getElementById("TT_google_TranslateBackByGoogle").style.display="";
		                     	document.getElementById("TT_bing_TranslateBackByGoogle_text").innerText= String_trim(replaceHTML(arrdata[1]));  
		                     	document.getElementById("TT_bing_TranslateBackByGoogle").style.display="";
		                     	document.getElementById('TT_Button_TranslateBack').style.display="none";
		                     }else{
		                     	document.getElementById("TT_google_TranslateBackByGoogle_text").innerText= "Error! Maybe the text is too long."
		                     		document.getElementById("TT_google_TranslateBackByGoogle").style.display="";
		                    	 }
		    		   		});
      	try{
			Microsoft.Translator.translate(value.replace("<ttttt>","\r\n<ttttt>\r\n"),src,dest, 
                      function(translation) {
                      	translation=translation.replace(/^<ttttt>/i,"").replace("</ttttt>","").replace("< ttttt >","<ttttt>").replace("<ttttt><ttttt>","<ttttt>");
                      		var reCat = "<ttttt>";
       						var arrdata = translation.split(reCat);                      		
		              		document.getElementById("TT_google_TranslateBackByBing_text").innerText=replaceHTML(arrdata[0]);  
		              		document.getElementById("TT_google_TranslateBackByBing").style.display="";
		              		document.getElementById("TT_bing_TranslateBackByBing_text").innerText=replaceHTML(arrdata[1]);  
		              		document.getElementById("TT_bing_TranslateBackByBing").style.display="";
		              		document.getElementById('TT_Button_TranslateBack').style.display="none";
		    		   }); 
		}catch(err){}   
		return false;
	}
	function replaceHTML (s){
		return s.replace(/&#39;/g,"\'").replace(/&quot;/g,"\"").replace(/&amp;/g,"&").replace(/&gt;/, '>').replace(/&lt;/,'<').replace(/(^\s*)|(\s*$)/g,"");
	}
	function String_trim(S)  	{           //   用正则表达式将前后空格   
          //   用空字符串替代。         
          return S.replace(/(^\s*)|(\s*$)/g,"");   
  	}
  	function getCookie(cookie_name){
		var allcookies = document.cookie;
		//alert(allcookies);
		var cookie_pos = allcookies.indexOf(cookie_name);
		// 如果找到了索引，就代表cookie存在，
		// 反之，就说明不存在。
		if (cookie_pos != -1){
			// 把cookie_pos放在值的开始，只要给值加1即可。
			cookie_pos += cookie_name.length + 1;
			var cookie_end = allcookies.indexOf(";", cookie_pos);
			if (cookie_end == -1){
				cookie_end = allcookies.length;
			}
			var value = unescape(allcookies.substring(cookie_pos, cookie_end));
		}
		return value;
	} 
	this.saveSetting = function (){
		var src = document.getElementById('TT_lang_src').value;
		var dest = document.getElementById('TT_lang_dst').value;
		var expiration = new Date((new Date()).getTime() + 360* 24*60 * 60000);
		document.cookie = "TT_lang_src=" + src+ "; expires ="+ expiration.toGMTString() + "; path=" + "/" + ";domain=" + "gadgetwe.com";
		document.cookie = "TT_lang_dst=" + dest+ "; expires ="+ expiration.toGMTString() + "; path=" + "/" + ";domain=" + "gadgetwe.com";  
		//alert(document.cookie);
	}
	this.readSetting = function (){
		try{
			var src =getCookie('TT_lang_src').replace('auto', 'en');
			if (src){document.getElementById('TT_lang_src').value = src;}
			if (src==""){document.getElementById('TT_lang_src').value = 'en';}
			var dest = getCookie('TT_lang_dst');
			if (dest){document.getElementById('TT_lang_dst').value = dest ;}
		}catch(err){}
	}
	this.checkMaxLength=function (){
		var maxNoteSize = 1500;	
    	if (TT_source.value.length > maxNoteSize){
        TT_source.value = TT_source.value.substring(0, maxNoteSize);
    }
}
}
document.getElementById("TT_Button_exchange").onclick=TranslateFunction.langExchange;
document.getElementById('TT_googleoutput').onchange=TranslateFunction.TranslateResultOnChange;
document.getElementById('TT_bingoutput').onchange=TranslateFunction.TranslateResultOnChange;
document.getElementById('TT_Button_Translate').onclick=TranslateFunction.Translate;
var TT_source=document.getElementById('TT_source');
TT_source.onkeypress=TranslateFunction.textarea_onkeypress;
TT_source.onfocus=TranslateFunction.textarea_onfocus;
document.getElementById('TT_Button_TranslateBack').onclick=TranslateFunction.TranslateBack

TranslateFunction.loadGoogleTranslatejs();

try{
 HTMLElement.prototype.__defineGetter__(    "innerText", 
        function(){ 
            return this.textContent; 
        } 
    ); 
    HTMLElement.prototype.__defineSetter__(    "innerText", 
        function(sText){ 
            this.textContent=sText; 
        } 
    ); 
}catch(err){}

