var tone = new Object();
tone["ang1"] = "āng";tone["ang2"] = "áng";tone["ang3"] = "ǎng";tone["ang4"] = "àng";
tone["eng1"] = "ēng";tone["eng2"] = "éng";tone["eng3"] = "ěng";tone["eng4"] = "èng";
tone["ing1"] = "īng";tone["ing2"] = "íng";tone["ing3"] = "ǐng";tone["ing4"] = "ìng";
tone["ong1"] = "ōng";tone["ong2"] = "óng";tone["ong3"] = "ǒng";tone["ong4"] = "òng";
tone["ai1"] = "āi";tone["ai2"] = "ái";tone["ai3"] = "ǎi";tone["ai4"] = "ài";
tone["an1"] = "ān";tone["an2"] = "án";tone["an3"] = "ǎn";tone["an4"] = "àn";
tone["ao1"] = "āo";tone["ao2"] = "áo";tone["ao3"] = "ǎo";tone["ao4"] = "ào";
tone["ei1"] = "ēi";tone["ei2"] = "éi";tone["ei3"] = "ěi";tone["ei4"] = "èi";
tone["en1"] = "ēn";tone["en2"] = "én";tone["en3"] = "ěn";tone["en4"] = "èn";
tone["er1"] = "ēr";tone["er2"] = "ér";tone["er3"] = "ěr";tone["er4"] = "èr";
tone["ie1"] = "iē";tone["ie2"] = "ié";tone["ie3"] = "iě";tone["ie4"] = "iè";
tone["in1"] = "īn";tone["in2"] = "ín";tone["in3"] = "ǐn";tone["in4"] = "ìn";
tone["ng2"] = "ńg";tone["ng3"] = "ňg";tone["ng4"] = "ǹg";
tone["ou1"] = "ōu";tone["ou2"] = "óu";tone["ou3"] = "ǒu";tone["ou4"] = "òu";
tone["un1"] = "ūn";tone["un2"] = "ún";tone["un3"] = "ǔn";tone["un4"] = "ùn";
tone["ve3"] = "üě";tone["ve4"] = "üè";
tone["a1"] = "ā";tone["a2"] = "á";tone["a3"] = "ǎ";tone["a4"] = "à";
tone["e1"] = "ē";tone["e2"] = "é";tone["e3"] = "ě";tone["e4"] = "è";
tone["i1"] = "ī";tone["i2"] = "í";tone["i3"] = "ǐ";tone["i4"] = "ì";
tone["o1"] = "ō";tone["o2"] = "ó";tone["o3"] = "ǒ";tone["o4"] = "ò";
tone["u1"] = "ū";tone["u2"] = "ú";tone["u3"] = "ǔ";tone["u4"] = "ù";
tone["v1"] = "ǖ";tone["v2"] = "ǘ";tone["v3"] = "ǚ";tone["v4"] = "ǜ";
//--------------------------------
function pcv(){
	var allTags = document.getElementsByTagName('span');
	for (var i=0;i<allTags.length;i++){
		if(allTags[i].className=="pyn") {
			var pinyin = allTags[i].innerHTML;
			allTags[i].innerHTML = toneconv(pinyin);
		}
	}
	return true;
}
//--------------------------------
function toneconv(str){
	var cur = str.match(/(ang|eng|ing|ong|ai|an|ao|ei|en|er|ie|in|ng|ou|un|ve|a|e|i|u|o|v)[1-4]+/g);
	if (!cur) {
		return(str);
	}
	for ( var i = 0; i < cur.length; i++ ) {
		var target = cur[i];
		if ( typeof( tone[target] ) != "undefined" ) {
			str = str.replace(cur[i],tone[target]);
		}
	}
	return(str);
}
//--------------------------------
function textarea_insert_str(str) {
	var textarea = document.edit_form.jpn;
	textarea.focus();
	if (document.selection) {
			var range = document.selection.createRange();
			range.text = str;
	} else if (textarea.selectionStart != undefined) {
			var start = textarea.selectionStart;
			var end = textarea.selectionEnd;
			textarea.value = textarea.value.substring(0, start) + str + textarea.value.substring(end);
			textarea.setSelectionRange(start + str.length, start + str.length);
	} else {
			textarea.value += str;
	}
}
//--------------------------------
function showhide(id) {
	if(!document.getElementById) return;
	var obj = document.getElementById(id);
	if(obj.style.display == "block") {
		obj.style.display = "none";
	} else {
		obj.style.display = "block";
	}
}
//--------------------------------
function trim(str) {
	str = str.replace(/^[ 　]+/,"");
	str = str.replace(/[ 　]+$/,"");
	return(str);
}
//--------------------------------
function chkword() {
	if (!document.kitajiro.word.value) {
		return false;
	}
	return true;
}
//--------------------------------
function generate_url(word){
	surl = "./search.php?opts=ex&word=";
	enc_word = encodeURIComponent(word);
	surl=surl + enc_word;
	location.href=surl;
}
// markup --------------------------------
function doMarkup(s) {
	var div = document.createElement("div");
	var lines = s.replace(/\r\n|\r|\n/g, "\n").split(/\n/);
	var flag = "";
	var elm, txt;
	for (var i = 0; i < lines.length; i++) {
		var line = lines[i];
		if (line.match(/^\n*$/)) {
			flag = "";
			continue;
		} else if (line.indexOf("*") == 0) {
			flag = "";
			elm = document.createElement("p");
			elm.className = "pyn";
			line = line.replace(/^\*\s*/, "");
			txt = document.createTextNode(toneconv(line));
			elm.appendChild(txt);
		} else if (line.indexOf("+") == 0) {
			if (flag == "") {
				elm = document.createElement("ol");
				flag = elm;
				var li = document.createElement("li");
				txt = document.createTextNode(line.replace(/^\+\s*/, ""));
				li.appendChild(txt);
				elm.appendChild(li);
			} else {
				elm = flag;
				var li = document.createElement("li");
				txt = document.createTextNode(line.replace(/^\+\s*/, ""));
				li.appendChild(txt);
				elm.appendChild(li);
			}
		} else {
			elm = document.createElement("p");
			txt = document.createTextNode(line);
			elm.appendChild(txt);
		}
		div.appendChild(markupInline(elm));
	}
	return div;
}
//--------------------------------
function markupBlock(s) {
	var elm, txt;
	if (s.match(/^\n*$/)) {
		return;
	} else if (s.indexOf("*") == 0) {
		elm = document.createElement("p");
		txt = document.createTextNode(s.replace(/^\*\s*/, ""));
		txt = toneconv(txt);
		elm.className = "pyn";
		elm.appendChild(txt);
	} else if (s.indexOf("----") == 0) {
		elm = document.createElement("hr");
	} else if (s.indexOf("+") == 0) {
		if (this.parentNode.tagName.toLowerCase() != 'ol') {
			elm = document.createElement("ol");
			var li = document.createElement("li");
			txt = document.createTextNode(s.replace(/^\*\s*/, ""));
			li.appendChild(txt);
			elm.appendChild(li);
		} else {
			elm = document.createElement("li");
			txt = document.createTextNode(s.replace(/^\*\s*/, ""));
			elm.appendChild(txt);
		}
	} else {
		elm = document.createElement("p");
		txt = document.createTextNode(s);
		elm.appendChild(txt);
	}
	return elm;
}
//--------------------------------
function markupInline(elm) {
	if (elm.childNodes.length > 1) {
		for (var i = 0; i < elm.childNodes.length; i++) {
			markupInline(elm.childNodes[i]);
		}
	} else {
		elm = txt2html(elm);
	}
	return elm;
}
//--------------------------------
function txt2html(elm) {
	var s = elm.innerHTML;
	if (s != "") {
		s = s.replace(/\{\{([^\}]+)\}\}/g, '<span lang="zh" class="cn">$1</span>');
		s = s.replace(/\[\[(https?:\/\/[^ 　]+)( |　)([^\]]+)\]\]/g, '<a href="$1" target="_blank">$3</a>');
		s = s.replace(/\[\[([^\]]+)\]\]/g, '<span lang="zh" class="click">$1</span>');
		s = s.replace(/\{([一-龠]+)\|([^\}]+)\}/g, '<ruby><rb>$1</rb><rp>(</rp><rt>$2</rt><rp>)</rp></ruby>');
		s = s.replace(/([一-龠]+)\{([^\}]+)\}/g, '<ruby><rb>$1</rb><rp>(</rp><rt>$2</rt><rp>)</rp></ruby>');
		elm.innerHTML = s;
	}
	return elm;
}