//特別な文字 definition of special charactercommandMarkStr = "/";specialCharacterArray = new Array(commandMarkStr, "<", ".", ',', "-", " ", '(', ")");//全関数共通の変数を定義 definition of universal usedcheckCharacterArray = new Array();henkangoStr = new String();characterNumber = new Number();bunshouString = new String();//呼び出し元関数 main functionfunction henkanMainFunction(bStr)	{	bunshouString = bStr;	checkCharacterArray[1] = "";	checkCharacterArray[2] = "";	checkCharacterArray[3] = bunshouString.charAt(0);	checkCharacterArray[4] = bunshouString.charAt(1);	henkangoStr = "";	for(characterNumber = 0; characterNumber < bunshouString.length;)		{		checkStringFunction()		toNextFunction()		}	henkangoStr += checkCharacterArray[1] + checkCharacterArray[2] + checkCharacterArray[3] + checkCharacterArray[4];//	henkangoStr += "\nEOF\n";	return henkangoStr;	}//文字をチェック  checking characterfunction checkStringFunction()	{	checking:	if (checkCharacterArray[3] != "")		{		for(fNum in boinArray)			{			if (checkCharacterArray[3] == boinArray[fNum]) {onBoinFunction(fNum);	break checking;}			if (checkCharacterArray[3] == boinArray[fNum].toUpperCase()) {onBoinFunction(eval(fNum) + 5);	break checking;}			}		if (checkCharacterArray[3] == "n") onNnFunction(1)		else if (checkCharacterArray[3] == "N") onNnFunction(2)		else if (checkCharacterArray[3] == checkCharacterArray[4]) onDoubleFunction()		else for(bNum in specialCharacterArray)			{			if (checkCharacterArray[3] == specialCharacterArray[bNum]) onSpecialCharacterFunction(bNum);			}		}	}//次の文字へ移る  finish this character and for starting next onefunction toNextFunction()	{	henkangoStr += checkCharacterArray[1]	checkCharacterArray[1] = checkCharacterArray[2];	checkCharacterArray[2] = checkCharacterArray[3];	checkCharacterArray[3] = checkCharacterArray[4];	checkCharacterArray[4] = bunshouString.charAt(characterNumber + 2);	characterNumber++;	}//母音の処理  on vowelfunction onBoinFunction(boinNumber)	{	shiinNumber = new Number();	if(checkCharacterArray[2] == "") {shiinNumber = shiin0Function();}	else		{		switch(checkCharacterArray[1])			{			case "":shiinNumber = shiin1Function(); break;			default:shiinNumber = shiin2Function(); break;			}		}	checkCharacterArray[3] = mojiArray[shiinNumber][boinNumber];	}function shiin0Function()	{	return 0;	}function shiin1Function()	{	Shiin1Number = 0;	for(cNum = 1; cNum <= 21; cNum++)		{		if(checkCharacterArray[2].toLowerCase() == shiin1Array[cNum])			{			Shiin1Number = cNum;			checkCharacterArray[2] = "";			checkCharacterArray[3] = "";			}		}	if (Shiin1Number == 0) {Shiin1Number = shiin0Function();}	return Shiin1Number;	}function shiin2Function()	{	Shiin2Number = 0;	for(dNum = 31; dNum <= 60; dNum++)		{		if((checkCharacterArray[1] + checkCharacterArray[2]).toLowerCase() == shiin2Array[dNum])			{			Shiin2Number = dNum;			checkCharacterArray[1] = "";			checkCharacterArray[2] = "";			checkCharacterArray[3] = "";			}		}	if (Shiin2Number == 0) {Shiin2Number = shiin1Function();}	return Shiin2Number;	}//Nの処理 on "N"function onNnFunction(nScale)	{	if (checkCharacterArray[2].toLowerCase() == "n") doubleNFunction(nScale);	else		{		nextCheckArray = new Array("","a","i","u","e","o","y","n");		nextOKBool = true;		for(eNum in nextCheckArray)			{			if (checkCharacterArray[4].toLowerCase() == nextCheckArray[eNum]) nextOKBool = false;			}		if (nextOKBool) onlyNFunction(nScale);		}	}function doubleNFunction(nnScale)	{	checkCharacterArray[2] = "";	checkCharacterArray[3] = nStringArray[nnScale];	}function onlyNFunction(onlyNScale)	{	checkCharacterArray[3] = nStringArray[onlyNScale];	}//促音の処理 on double consonant characterfunction onDoubleFunction()	{	if(65 <= (checkCharacterArray[3].toUpperCase()).charCodeAt(0) && (checkCharacterArray[3].toUpperCase()).charCodeAt(0) <= 90)		{		xtsuScale = 1;		if (checkCharacterArray[4].toUpperCase() == checkCharacterArray[4]) xtsuScale = 2;		checkCharacterArray[3] = xtsuStringArray[xtsuScale];		}	}//特殊な文字の処理function onSpecialCharacterFunction(characterNumber)	{	switch(eval(characterNumber))		{		case 0:onCommandFunction(checkCharacterArray[3] + checkCharacterArray[4]); break; // /		case 1:noConvertFunction(); break;           // <		case 2:checkCharacterArray[3] = "。"; break; // .		case 3:checkCharacterArray[3] = "、"; break; // ,		case 4:checkCharacterArray[3] = "ー"; break; // -		case 5:                                      //' '
			if(checkCharacterArray[2] == " ")
				{
				checkCharacterArray[3] = "　";
				checkCharacterArray[2] = "";
				}
			else if(checkCharacterArray[2] == "。" || checkCharacterArray[2] == "、")
				{
				checkCharacterArray[3] = "";
				}
			break;		case 6:checkCharacterArray[3] = "（"; break; // (		case 7:checkCharacterArray[3] = "）"; break; // )		default:alert(characterNumber);		}	}//コマンド commandfunction onCommandFunction(commandString)	{	switch(commandString.toLowerCase())		{		//case "a":commandAFunction(); break;		}	}//変換しない in <>function noConvertFunction()	{	checkCharacterArray[3] = "";	do		{		toNextFunction();		if(checkCharacterArray[3] == ">")			{			checkCharacterArray[3] = "";			break;			}		}	while(characterNumber < bunshouString.length)	}