﻿/*		
	#Deploy Create Global Javascript
	#May 2008
	#Nicky Hajal
*/
/*
	Table of Contents
	1. General Javascript
	2. Utilities
*/

var tSource=null; var clear=1;
/* =Translation Source
-------------------------------------------------*/
function loadTranslateSource(){
	tSource = $('translateSource');
	Event.observe('translateSource', 'click', focusOnSource);
	Event.observe('translateSource', 'keydown', watch_keys, true);
	Event.observe('translateSource', 'paste', pasted, false);
	
}
function focusOnSource(){
	if(clear && translatorList.length){
		tSource.value = "";
		clear=0;
	}
	if(isMobile){
		switchTab('translators');
	}
}
function chSrcValue(){
	if(clear){
		if(translatorList.length>0){
			tSource.value=langProf.startTypingSent;
			if(isMobile){
				tSource.value="您是新闻发布人，我们是您的免费同声传译，青云翻译，同步翻译专家！";
			}
		}
		else{
			tSource.value=langProf.addTransSent;
			alert("请先选择翻译语种！");
			if(isMobile){
				tSource.value="招聘您的同步翻译人员吧！";
			}
		}
	}
}
function changeSrc(code, lang){
	if($(setSource+'-srcButton')){
		$(setSource+'-srcButton').className= $(setSource+'-srcButton').className.replace("on", "");
	}
	$(code+'-srcButton').className += " on";
	setSource = code;
	if(code=="auto"){
		lang=lang.toLowerCase();
	}
	$('sourceLanguage').innerHTML = lang;
	if(!clear){
		translate();
	}
}
function fixWhiteSpace(){
	/*var start = tSource.selectionStart; 
	var end = tSource.selectionEnd;
	tSource.value = tSource.value.replace(/[ \t\r\n]+/g, " ");
	tSource.selectionStart=start; 
	tSource.selectionEnd=end;*/
}
function resetSource(){
	if( (tSource.value == "" || tSource.value == " ") ){
		clear=1;
		chSrcValue();
	}
}
function addTransImg_over(){

}
function addTransImg_out(){

}

function chAddTransImg(){

}

/* =Translator Handling
-------------------------------------------------*/
function toggleTranslator(code, lang){
	if( ( $(code+'-tButton').className=="on" ) ){
		$(code+'-tButton').className="";
		closeTranslator(code);
	}
	else{
		$(code+'-tButton').className="on";
		createTranslator(code, lang);
	}
	chSrcValue();
	chAddTransImg();
}
function createTranslator(code, lang){
	if(!lang){
		lang = getLangName(code);
	}
	translatorList.push(new Translator(code));
	$('translators').innerHTML += "<div class=\"aTranslator\" id=\""+code+"-trans\"><div class=\"language\">"+lang+"</div><div class=\"translatedText\" id=\""+code+"-transtxt\">&nbsp;</div></div>";
	saveTranslators();
	doATranslation(code);
}
function closeTranslator(code){
	$('translators').removeChild($(code+"-trans"));
	translatorList[getSerialFromLang(code)]=null;
	translatorList=translatorList.compact();
	saveTranslators();
}
function saveTranslators(){
	var transCodes=[];
	for(var t=0; t<translatorList.length; t++){
		transCodes[t] = translatorList[t].$lang();
	}
	createCookie("translators", transCodes, 30);
}
function areTranslators(){
	if(translatorList.length>0){
		return true;
	}
	else{
		return false;
	}
}

/* =Translating
-------------------------------------------------*/
function doTranslations(){
	$('message').innerHTML="";
	for(var t=0; t<translatorList.length; t++){
		lang = translatorList[t].$lang();
		doATranslation(lang);
	}
}
function waitThenTranslate(then){
	now = tSource.value.length;
	if(then>=(now-1)){
		translate();
	}
}
function makePassableCode(code){
	var pCode="";
	var ps=code.length;
	for(var p=0; p<ps; p++){
		pCode+=code.charCodeAt(p);
		if(p<(ps-1)){
			pCode+="*";
		}
	}
	pCode+="|";
	return pCode;
}
function parseResult(result){
	var endOfCode =  result.indexOf('|');
	var rawCode = result.substring(0, endOfCode);
	var codeApart = rawCode.split("*");
	var cleanResult = result.substring((endOfCode+1));
	var cleanCode = "";
	for(var r=0; r<codeApart.length; r++){
		cleanCode += String.fromCharCode(codeApart[r]);
	}
	cleanCode = cleanCode.toLowerCase();
	return new Array(cleanCode, cleanResult);
}
/* =Key Handling
-------------------------------------------------*/
function watch_keys(e){
	var key  = (window.event) ?    // MSIE or Firefox?
                event.keyCode : e.keyCode;
				key = 1*key;
    var esc = (window.event) ?   
                27 : e.DOM_VK_ESCAPE; // MSIE : Firefox
	var blurred = 0;	
	if(!translatorList.length){
		e.stopPropagation();
		e.preventDefault();
		return false;
	}
	if(clear){
		tSource.value=String.fromCharCode(key);
		clear=false;
	}
	switch(key){
		case 9:
			resetSource();
		break;

		case 13:
			translate();
			e.stopPropagation();
			e.preventDefault();
			return false;
		break;
		
		case 32:
			setTimeout('fixWhiteSpace()', 100);
			translate();
		break;
		
		case 27:
			setTimeout(function(){tSource.value="";}, 100);		
		break;
	
		default:
			setTimeout("waitThenTranslate('"+tSource.value.length+"')", 750);
		break;
	}
}
function pasted(){
	closeNews();
	setTimeout('fixWhiteSpace()', 100);
	setTimeout('translate()', 850);
}
/* =Content Handling
-------------------------------------------------*/
var newsOn = true; var newsVisChanging=false;
function toggleNews(){
	if(newsOn){
		closeNews();
		createCookie(newsTitle.replace(/ /g, "-"), "1", 365);
	}
	else{
		showNews();
	}
}
function closeNews(){
	if(newsOn && !newsVisChanging){
		newsVisChanging=true;
		$('newsVisibility').innerHTML = "Show";
		new Effect.BlindUp($('newsContent'), {duration:.5, afterFinish:function(){newsVisChanging=false;}});
		newsOn=false;
	}
}
function showNews(){
	if(!newsOn && !newsVisChanging){
		newsVisChanging=true;
		$('newsVisibility').innerHTML = "Hide";
		new Effect.BlindDown($('newsContent'), {duration:.5, afterFinish:function(){newsVisChanging=false;}});
		newsOn=true;
	}
}

/* =Mobile Specific
-------------------------------------------------*/
var activeTab='translators';
function switchTab(name){
	$(activeTab+'-tab').className='tabOff';
	makeInvisible($(activeTab));
	activeTab=name;
	$(activeTab+'-tab').className='tabOn';
	makeVisible($(activeTab));
}

/* =Utilities
-------------------------------------------------*/
function collectionToArray(col){
	a = new Array();
	for (i=0; i<col.length; i++)
	a[a.length] = col[i];
	return a;
}
function getElementsByClass(name){
	elm = document.getElementsByTagName('div');
	var j=0;
	var cl = new Array()
	for(i=0;i<d.length;i++){
		if(d[i].className == name){
			cl[j] = d[i];
			j++;
		}
		return cl;
	}
}
function toggleVisibility(elm){
	if(elm.className.indexOf('invisible')>-1){
		makeVisible(elm);
	}
	else{
		makeInvisible(elm);
	}
}
function makeInvisible(elm){
	var curClass = elm.className;
	var newClass = curClass;
	if(curClass.indexOf('invisible')<0){
		newClass = curClass.replace("visible", "invisible");
		if(newClass.indexOf('invisible')<0){
			newClass +=" invisible";
		}
	}
	elm.className=newClass;
}
function makeVisible(elm){
	var curClass = elm.className;
	var newClass = curClass.replace("invisible", "visible");
	if(newClass.indexOf('visible')<0){
		newClass +=" visible";
	}
	elm.className=newClass;
}
function addSlashes(str) {
	str=str.replace(/\\/g,'\\\\');
	str=str.replace(/\'/g,'\\\'');
	str=str.replace(/\"/g,'\\"');
	str=str.replace(/\0/g,'\\0');
	return str;
}
function stripSlashes(str) {
	str=str.replace(/\\'/g,'\'');
	str=str.replace(/\\"/g,'"');
	str=str.replace(/\\\\/g,'\\');
	str=str.replace(/\\0/g,'\0');
	return str;
}
function getLangName(code){
	var langs ={
		"zh-CN":"中文简体", 
"zh-TW":" 中文繁体 ", 
"en":"英语", 
"ja":"日语", 
"ko":"韩语", 
"de":"德语", 
"ru":"俄语", 
"fr":"法语", 
"pt":"葡萄牙语", 
"es":"西班牙语", 
"it":"意大利语", 
"ar":"阿拉伯文", 
"sq":"阿尔巴尼亚文", 
"et":"爱沙尼亚语", 
"bg":"保加利亚文", 
"pl":"波兰语", 
"da":"丹麦语", 
"tl":"菲律宾文", 
"fi":"芬兰语", 
"gl":"盖尔文(爱尔兰)", 
"nl":"荷兰语", 
"ca":"加泰罗尼亚文(西班牙)", 
"cs":"捷克语", 
"hr":"克罗地亚文", 
"lv":"拉脱维亚语", 
"lt":"立陶宛语", 
"ro":"罗马尼亚语", 
"mt":"马耳他文", 
"no":"挪威语", 
"sv":"瑞典语", 
"sr":"塞尔维亚文", 
"sl":"斯拉维尼亚文", 
"sk":"斯洛伐克文", 
"th":"泰文", 
"tr":"土耳其文", 
"uk":"乌克兰文", 
"iw":"希伯来语", 
"el":"希腊语", 
"hu":"匈牙利语", 
"hi":"印度文", 
"id":"印尼文", 
"vi":"越南文"
	};
	return langs[code];
};
function fixDrop() {
	if (document.all&&document.getElementById) {
		navRoot = document.getElementById("trul");
		for (i=0; i<navRoot.childNodes.length; i++) {
			node = navRoot.childNodes[i];
			if (node.nodeName=="LI") {
				node.onmouseover=function() {
					$('intrul').style.display="block";
					$('intrul2').style.display="block";
				}
				node.onmouseout=function() {
					$('intrul').style.display="none";
					$('intrul2').style.display="none";
				}
			}
		}
		navRoot = document.getElementById("trul2");
		for (i=0; i<navRoot.childNodes.length; i++) {
			node = navRoot.childNodes[i];
			if (node.nodeName=="LI") {
				node.onmouseover=function() {
					$('intrul3').style.display="block";
					$('intrul4').style.display="block";
				}
				node.onmouseout=function() {
					$('intrul3').style.display="none";
					$('intrul4').style.display="none";
				}
			}
		}
	}
}
function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
	do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
return {x:curleft,y:curtop};
	}
}


/* =Cookie Handling
-------------------------------------------------*/
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	value = escape(Object.toJSON(value));
	document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return (unescape(c.substring(nameEQ.length,c.length))).evalJSON();
	}
	return null;
}
function eraseCookie(name) {
	createCookie(name,"",-1);
}
