function createRequestObject() {
	var ro;
	var browser = navigator.appName;
	if (browser == "Microsoft Internet Explorer") {
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		ro = new XMLHttpRequest();
	}
	return ro;
}

var currentKana = "hangul";
var rowType = "torow";
var currentRow = -1;

var menuPanel;
var menuTop;
var menuOpen = false;

var kanjiMenu = Array(
	'',
	'k',
	'n',
	't',
	'r',
	'm',
	'p',
	's',
	'ng',
	'ch',
	'ch-',
	'k-',
	't-',
	'p-',
	'h',
	'kk',
	'tt',
	'pp',
	'ss',
	'cc',
	'ah',
	'ya',
	'oh',
	'yoh',
	'oo',
	'u',
	'yu',
	'ue',
	'i'
);

function replaceHangul(id, oldkana, kana, name) {
	document.getElementById(id).innerHTML = "<table><tr><td><a onClick=\"javascript:updateHangul('"+id+"',0);\" class='letter'>"+oldkana+" = "+kana+"<br /><font size='20'><center>"+name+"</center></font></a></td></tr></table>";
	document.getElementById("pleaseclick").innerHTML = "";
}

function updateHangul(id, newRowType) {
	if (newRowType)
		rowType = newRowType;
	sndReq("action=hangul&id="+id+"&"+rowType+"="+currentRow);
}

var http = createRequestObject();

function sndReq(get) {
	http.open('get', '?'+get);
	http.onreadystatechange = handleResponse;
	http.send(null);
}

function handleResponse() {
	if (http.readyState == 4){
		var response = http.responseText;
		var update = new Array();

		if (response.indexOf('|' != -1)) {
			update = response.split('|');
			document.getElementById(update[0]).innerHTML = update[1];
		}
	}
}

function Coord(a,b,c,d){
	this.x = a;
	this.y = b;
	this.w = c;
	this.h = d;
}

function loc(object){
	var owner=object.ownerDocument;
	var boxObject = owner.getBoxObjectFor(object);
	return new Coord(boxObject.x, boxObject.y, boxObject.width, boxObject.height);
}

function menu_getCurrent() {
	var kanaMenu = kanjiMenu;

	if (currentRow >= kanaMenu.length)
		currentRow = kanaMenu.length-1;

	return kanaMenu;
}

function menu_init(topId) {
	menuPanel = document.createElement("div");
	menuTop = document.getElementById(topId);

	menuPanel.style.display = "none";
	menuPanel.className = "menubody";
	menuPanel.style.zIndex = 20;

	var coord = loc(menuTop);
	var top = coord.y + coord.h;
	menuPanel.style.left = coord.x + "px";
	menuPanel.style.top = top + "px";
	menuPanel.style.width = 120;

	document.body.insertBefore(menuPanel, document.body.firstChild);

	menuTop.className = "menubody";
	menuTop.style.width = 120;
	menuTop.onclick = menu_toggle;

	var kanaMenu = menu_getCurrent();
	currentRow = kanaMenu.length-1;
	menuTop.innerHTML = "+ " + kanaMenu[currentRow];
}

function menu_toggle() {
	if (menuOpen)
		menu_close();
	else
		menu_open();
}

function menu_close() {
	menuPanel.style.display = "none";
	menuPanel.innerHTML = "";

	var kanaMenu = menu_getCurrent();
	menuTop.innerHTML = "+ " + kanaMenu[currentRow];

	menuOpen = false;
}

function menu_open() {
	menuPanel.style.display = "block";

	var kanaMenu = menu_getCurrent();

	menuPanel.innerHTML = '';
	for (var i = 1; i < kanaMenu.length; i++)
		menuPanel.innerHTML += '<a onClick="javascript:menu_choose('+i+');" class="menu">' + kanaMenu[i] + '</a><br>';

	var kanaMenu = menu_getCurrent();
	menuTop.innerHTML = "&raquo; " + kanaMenu[currentRow];
	
	menuOpen = true;
}

function menu_choose(id) {
	currentRow = id;
	var kanaMenu = menu_getCurrent();
	menuTop.innerHTML = "+ " + kanaMenu[currentRow];
	
	updateHangul("hangul", rowType);

	menu_close();
}
