512 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			512 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | |
| <html xmlns="http://www.w3c.org/1999/xhtml">
 | |
| <head>
 | |
| <title>kanaverter [JavaScript]</title>
 | |
| <style type='text/css'>
 | |
| * {
 | |
|   margin:0;
 | |
|   padding:0;
 | |
|   }
 | |
| 
 | |
| #box {
 | |
|   background:#f5f5f5 url(logo.png) no-repeat 2px 4px;
 | |
|   width:490px;
 | |
|   height:250px;
 | |
|   padding:50px 5px 0 5px;
 | |
|   position:absolute;
 | |
|   left:50%;
 | |
|   top:50%;
 | |
|   margin-left:-251px;
 | |
|   margin-top:-151px;
 | |
|   border:1px solid #999;
 | |
|   }
 | |
| 
 | |
| #box div {
 | |
|   width:240px;
 | |
|   height:245px;
 | |
|   float:left;
 | |
|   }
 | |
| 
 | |
| #romaji_container {
 | |
|   margin-right:10px;
 | |
|   }
 | |
| 
 | |
| #kana_container {
 | |
|   }
 | |
| 
 | |
| #box div textarea {
 | |
|   font:12px arial;
 | |
|   border:1px solid #ddd;
 | |
|   width:232px;
 | |
|   padding:3px;
 | |
|   height:208px;
 | |
|   background:#fff;
 | |
|   overflow:auto;
 | |
|   }
 | |
| 
 | |
| #box div div textarea {
 | |
|   height:80px;
 | |
|   margin-bottom:5px;
 | |
|   }
 | |
| 
 | |
| #hirakata {
 | |
|   display:none;
 | |
|   }
 | |
| 
 | |
| h1 {
 | |
|   font:normal 20px georgia;
 | |
|   margin-top:5px;
 | |
|   padding-left:3px;
 | |
|   cursor:pointer;
 | |
|   }
 | |
| 
 | |
| h1:hover {
 | |
|   background:#ddd;
 | |
|   }
 | |
| 
 | |
| h2 {
 | |
|   font:normal 14px georgia;
 | |
|   }
 | |
| 
 | |
| #box #wl {
 | |
|   position:absolute;
 | |
|   top:5px;
 | |
|   right:5px;
 | |
|   color:#0000ff;
 | |
|   font:12px arial;
 | |
|   cursor:pointer;
 | |
|   width:auto;
 | |
|   height:auto;
 | |
|   float:none;
 | |
|   }
 | |
| 
 | |
| #box #wl #wn {
 | |
|   position:absolute;
 | |
|   top:20px;
 | |
|   right:0;
 | |
|   font:12px arial;
 | |
|   width:478px;
 | |
|   padding:5px;
 | |
|   border:1px solid #000;
 | |
|   height:auto;
 | |
|   float:none;
 | |
|   color:#000;
 | |
|   background:#fff;
 | |
|   display:none;
 | |
|   }
 | |
| 
 | |
| #box #wl:hover #wn {
 | |
|   display:block;
 | |
|   }
 | |
| </style>
 | |
| <!--[if IE]>
 | |
| <style type='text/css'>
 | |
| #box div textarea {
 | |
|   margin-top:-1px;
 | |
|   }
 | |
| </style>
 | |
| <![endif]-->
 | |
| <script type='text/javascript'>
 | |
| function is_array(obj) {
 | |
| return obj.constructor==Array
 | |
| }
 | |
| 
 | |
| function ctitle(where,title) {
 | |
| nodes=eval(where+"_div").childNodes
 | |
| nodes_length=nodes.length
 | |
| for (var i=0;i<nodes_length;i++) {
 | |
| node=nodes[i]
 | |
| if (node.nodeName=="H1") node.innerHTML=title
 | |
| }
 | |
| }
 | |
| 
 | |
| function kanaside(what) {
 | |
| nodes=kana_div.childNodes
 | |
| nodes_length=nodes.length
 | |
| for (var i=0;i<nodes_length;i++) {
 | |
| node=nodes[i]
 | |
| if (node.nodeName=="TEXTAREA") node.style.display=visibility_action[oppo[what]]
 | |
| }
 | |
| hk_div.style.display=visibility_action[what]
 | |
| }
 | |
| 
 | |
| function pblur(what) {
 | |
| if (what==infocus) {
 | |
| if (what=="romaji") romaji_input=romaji_text.value
 | |
| else if (what=="kana") romaji_output=romaji_text.value
 | |
| }
 | |
| else {
 | |
| if (what=="romaji") romaji_output=romaji_text.value
 | |
| }
 | |
| }
 | |
| 
 | |
| function bpfocus(what,detail) {
 | |
| if (detail===undefined) detail=what
 | |
| if (eval(detail+"_text").value=="") pfocus(what)
 | |
| else if (what!=infocus) eval(detail+"_text").select()
 | |
| }
 | |
| 
 | |
| function pfocus(what) {
 | |
| if (what!=infocus) {
 | |
| whatnot=oppo[what]
 | |
| ctitle(what,what.substr(0,1).toUpperCase()+what.substr(1)+" (input)")
 | |
| ctitle(whatnot,whatnot.substr(0,1).toUpperCase()+whatnot.substr(1)+" (output)")
 | |
| kanaside(what)
 | |
| tfocus(what)
 | |
| }
 | |
| }
 | |
| 
 | |
| function tfocus(what) {
 | |
| whatnot=oppo[what]
 | |
| eval(what+"_text").focus()
 | |
| if (what=="kana") romaji_text.value=romaji_output
 | |
| else if (what=="romaji") romaji_text.value=romaji_input
 | |
| infocus=what
 | |
| }
 | |
| 
 | |
| function html_entity_decode(str) {
 | |
| ta=document.createElement("textarea")
 | |
| ta.innerHTML=str.replace(/</g,"<").replace(/>/g,">")
 | |
| return ta.value
 | |
| }
 | |
| 
 | |
| function convert_value(str,from,to) {
 | |
| var strlen=str.length
 | |
| var ftxt=""
 | |
| if (to=="hira" || to=="kata") {
 | |
| var ostr=str
 | |
| var str=str.toLowerCase()
 | |
| var ttxt=""
 | |
| var ottxt=""
 | |
| var ctxt
 | |
| var octxt
 | |
| var cctxt
 | |
| var occtxt
 | |
| var maybe
 | |
| var ad
 | |
| var crkanadb
 | |
| for (var i=0;i<strlen;i++) {
 | |
| ctxt=str.substr(i,1)
 | |
| octxt=ostr.substr(i,1)
 | |
| cctxt=ttxt+ctxt
 | |
| occtxt=ottxt+octxt
 | |
| maybe=false
 | |
| ad=false
 | |
| for (var ii=0;ii<eval("r"+to+"dbl");ii++) {
 | |
| crkanadb=eval("r"+to+"db[ii]")
 | |
| if (crkanadb==cctxt && !ad) {
 | |
| ad=true
 | |
| ftxt+=""+eval("r_"+to+"db[cctxt]")+";"
 | |
| ttxt=""
 | |
| ottxt=""
 | |
| maybe=true
 | |
| }
 | |
| else if (crkanadb.substr(0,cctxt.length)==cctxt && !ad) {
 | |
| ad=true
 | |
| ttxt+=ctxt
 | |
| ottxt+=octxt
 | |
| maybe=true
 | |
| }
 | |
| }
 | |
| if (!maybe) {
 | |
| ad=false
 | |
| for (var ii=0;ii<eval("r"+to+"dbl");ii++) {
 | |
| crkanadb=eval("r"+to+"db[ii]")
 | |
| if (crkanadb==ctxt && !ad) {
 | |
| ad=true
 | |
| ftxt+=occtxt.substr(0,1)+""+eval("r_"+to+"db[ctxt]")+";"
 | |
| ttxt=""
 | |
| ottxt=""
 | |
| maybe=true
 | |
| }
 | |
| }
 | |
| if (!maybe) {
 | |
| ftxt+=ottxt
 | |
| ttxt=ctxt
 | |
| ottxt=octxt
 | |
| }
 | |
| }
 | |
| }
 | |
| //document.title="cc: "+cctxt+"  c: "+ctxt+"  t: "+ttxt
 | |
| ftxt+=ottxt
 | |
| ftxt=html_entity_decode(ftxt)
 | |
| }
 | |
| else if (to=="romaji") {
 | |
| var ctxt
 | |
| var ckana
 | |
| var isit
 | |
| for (var i=0;i<strlen;i++) {
 | |
| ctxt=str.substr(i,1)
 | |
| isit=false
 | |
| for (var ii=0;ii<kkanadbl && !isit;ii++) {
 | |
| ckana=kkanadb[ii]
 | |
| if (html_entity_decode(""+ckana+";")==ctxt) isit=true
 | |
| }
 | |
| if (isit) ftxt+=k_kanadb[ckana]
 | |
| else ftxt+=ctxt
 | |
| }
 | |
| }
 | |
| return ftxt
 | |
| }
 | |
| 
 | |
| function copy_value(from,to) {
 | |
| if (from==infocus) {
 | |
| ovalue=eval(from+"_text").value
 | |
| nto=to.split(",")
 | |
| tol=nto.length
 | |
| for (var i=0;i<tol;i++) {
 | |
| cto=nto[i]
 | |
| if (ovalue!="") nvalue=convert_value(ovalue,from,cto)
 | |
| else nvalue=""
 | |
| eval(cto+"_text").value=nvalue
 | |
| }
 | |
| }
 | |
| }
 | |
| 
 | |
| window.onload=function(){
 | |
| box_div=document.getElementById("box")
 | |
| romaji_div=document.getElementById("romaji_container")
 | |
| kana_div=document.getElementById("kana_container")
 | |
| hk_div=document.getElementById("hirakata")
 | |
| 
 | |
| romaji_text=document.getElementById("romaji")
 | |
| kana_text=document.getElementById("kana")
 | |
| hira_text=document.getElementById("hira")
 | |
| kata_text=document.getElementById("kata")
 | |
| 
 | |
| if (navigator.appVersion.toLowerCase().indexOf("chrome")!=-1) {
 | |
| hira_text.style.height="78px"
 | |
| kata_text.style.height="78px"
 | |
| }
 | |
| 
 | |
| oppo=new Array()
 | |
| oppo["romaji"]="kana"
 | |
| oppo["kana"]="romaji"
 | |
| visibility_action=new Array()
 | |
| visibility_action["romaji"]="block"
 | |
| visibility_action["kana"]="none"
 | |
| 
 | |
| romaji_input=""
 | |
| romaji_output=""
 | |
| infocus=""
 | |
| 
 | |
| rhiradb=new Array("o","a","sa","ki","ma","ho","ha","yo","mu","mo","shi","si","nu","me","to","ko","ni","ta","na","ne","wa","le","re","se","ke","mi","no","tsu","tzu","tu","u","la","ra","chi","ci","ti","lo","ro","lu","ru","yu","ya","wo","li","ri","n'","e","so","te","he","ku","fu","hu","su","hi","ka","i")
 | |
| rhiradbl=rhiradb.length
 | |
| 
 | |
| r_hiradb=new Array()
 | |
| r_hiradb["o"]=362
 | |
| r_hiradb["a"]=354
 | |
| r_hiradb["sa"]=373
 | |
| r_hiradb["ki"]=365
 | |
| r_hiradb["ma"]=414
 | |
| r_hiradb["ho"]=411
 | |
| r_hiradb["ha"]=399
 | |
| r_hiradb["yo"]=424
 | |
| r_hiradb["mu"]=416
 | |
| r_hiradb["mo"]=418
 | |
| r_hiradb["shi"]=375
 | |
| r_hiradb["si"]=375
 | |
| r_hiradb["nu"]=396
 | |
| r_hiradb["me"]=417
 | |
| r_hiradb["to"]=392
 | |
| r_hiradb["ko"]=371
 | |
| r_hiradb["ni"]=395
 | |
| r_hiradb["ta"]=383
 | |
| r_hiradb["na"]=394
 | |
| r_hiradb["ne"]=397
 | |
| r_hiradb["wa"]=431
 | |
| r_hiradb["le"]=428
 | |
| r_hiradb["re"]=428
 | |
| r_hiradb["se"]=379
 | |
| r_hiradb["ke"]=369
 | |
| r_hiradb["mi"]=415
 | |
| r_hiradb["no"]=398
 | |
| r_hiradb["tsu"]=388
 | |
| r_hiradb["tzu"]=388
 | |
| r_hiradb["tu"]=388
 | |
| r_hiradb["u"]=358
 | |
| r_hiradb["la"]=425
 | |
| r_hiradb["ra"]=425
 | |
| r_hiradb["chi"]=385
 | |
| r_hiradb["ci"]=385
 | |
| r_hiradb["ti"]=385
 | |
| r_hiradb["lo"]=429
 | |
| r_hiradb["ro"]=429
 | |
| r_hiradb["lu"]=427
 | |
| r_hiradb["ru"]=427
 | |
| r_hiradb["yu"]=422
 | |
| r_hiradb["ya"]=420
 | |
| r_hiradb["wo"]=434
 | |
| r_hiradb["li"]=426
 | |
| r_hiradb["ri"]=426
 | |
| r_hiradb["n'"]=435
 | |
| r_hiradb["e"]=360
 | |
| r_hiradb["so"]=381
 | |
| r_hiradb["te"]=390
 | |
| r_hiradb["he"]=408
 | |
| r_hiradb["ku"]=367
 | |
| r_hiradb["fu"]=405
 | |
| r_hiradb["hu"]=405
 | |
| r_hiradb["su"]=377
 | |
| r_hiradb["hi"]=402
 | |
| r_hiradb["ka"]=363
 | |
| r_hiradb["i"]=356
 | |
| 
 | |
| 
 | |
| rkatadb=new Array("ka","u","me","no","i","to","chi","ci","ti","o","mi","yo","mu","ke","wa","nu","so","n'","sa","na","te","yu","ko","e","ku","fu","hu","su","tsu","tzu","tu","shi","si","li","ri","lu","ru","le","re","hi","lo","ro","he","ho","ta","la","ra","wo","ki","ni","ha","se","ya","a","ma","ne")
 | |
| rkatadbl=rkatadb.length
 | |
| 
 | |
| r_katadb=new Array()
 | |
| r_katadb["ka"]=459
 | |
| r_katadb["u"]=454
 | |
| r_katadb["me"]=513
 | |
| r_katadb["no"]=494
 | |
| r_katadb["i"]=452
 | |
| r_katadb["to"]=488
 | |
| r_katadb["chi"]=481
 | |
| r_katadb["ci"]=481
 | |
| r_katadb["ti"]=481
 | |
| r_katadb["o"]=458
 | |
| r_katadb["mi"]=511
 | |
| r_katadb["yo"]=520
 | |
| r_katadb["mu"]=512
 | |
| r_katadb["ke"]=465
 | |
| r_katadb["wa"]=527
 | |
| r_katadb["nu"]=492
 | |
| r_katadb["so"]=477
 | |
| r_katadb["n'"]=531
 | |
| r_katadb["sa"]=469
 | |
| r_katadb["na"]=490
 | |
| r_katadb["te"]=486
 | |
| r_katadb["yu"]=518
 | |
| r_katadb["ko"]=467
 | |
| r_katadb["e"]=456
 | |
| r_katadb["ku"]=463
 | |
| r_katadb["fu"]=501
 | |
| r_katadb["hu"]=501
 | |
| r_katadb["su"]=473
 | |
| r_katadb["tsu"]=484
 | |
| r_katadb["tzu"]=484
 | |
| r_katadb["tu"]=484
 | |
| r_katadb["shi"]=471
 | |
| r_katadb["si"]=471
 | |
| r_katadb["li"]=522
 | |
| r_katadb["ri"]=522
 | |
| r_katadb["lu"]=523
 | |
| r_katadb["ru"]=523
 | |
| r_katadb["le"]=524
 | |
| r_katadb["re"]=524
 | |
| r_katadb["hi"]=498
 | |
| r_katadb["lo"]=525
 | |
| r_katadb["ro"]=525
 | |
| r_katadb["he"]=504
 | |
| r_katadb["ho"]=507
 | |
| r_katadb["ta"]=479
 | |
| r_katadb["la"]=521
 | |
| r_katadb["ra"]=521
 | |
| r_katadb["wo"]=530
 | |
| r_katadb["ki"]=461
 | |
| r_katadb["ni"]=491
 | |
| r_katadb["ha"]=495
 | |
| r_katadb["se"]=475
 | |
| r_katadb["ya"]=516
 | |
| r_katadb["a"]=450
 | |
| r_katadb["ma"]=510
 | |
| r_katadb["ne"]=493
 | |
| 
 | |
| 
 | |
| kkanadb=new Array("362","354","373","365","414","411","399","424","416","418","375","396","417","392","371","395","383","394","397","431","428","379","369","415","398","388","358","425","385","429","427","422","420","434","426","435","360","381","390","408","367","405","377","402","363","356")
 | |
| kkanadbl=kkanadb.length
 | |
| 
 | |
| k_kanadb=new Array()
 | |
| k_kanadb["362"]="o"
 | |
| k_kanadb["354"]="a"
 | |
| k_kanadb["373"]="sa"
 | |
| k_kanadb["365"]="ki"
 | |
| k_kanadb["414"]="ma"
 | |
| k_kanadb["411"]="ho"
 | |
| k_kanadb["399"]="ha"
 | |
| k_kanadb["424"]="yo"
 | |
| k_kanadb["416"]="mu"
 | |
| k_kanadb["418"]="mo"
 | |
| k_kanadb["375"]="shi"
 | |
| k_kanadb["375"]="si"
 | |
| k_kanadb["396"]="nu"
 | |
| k_kanadb["417"]="me"
 | |
| k_kanadb["392"]="to"
 | |
| k_kanadb["371"]="ko"
 | |
| k_kanadb["395"]="ni"
 | |
| k_kanadb["383"]="ta"
 | |
| k_kanadb["394"]="na"
 | |
| k_kanadb["397"]="ne"
 | |
| k_kanadb["431"]="wa"
 | |
| k_kanadb["428"]="le"
 | |
| k_kanadb["428"]="re"
 | |
| k_kanadb["379"]="se"
 | |
| k_kanadb["369"]="ke"
 | |
| k_kanadb["415"]="mi"
 | |
| k_kanadb["398"]="no"
 | |
| k_kanadb["388"]="tsu"
 | |
| k_kanadb["388"]="tzu"
 | |
| k_kanadb["388"]="tu"
 | |
| k_kanadb["358"]="u"
 | |
| k_kanadb["425"]="la"
 | |
| k_kanadb["425"]="ra"
 | |
| k_kanadb["385"]="chi"
 | |
| k_kanadb["385"]="ci"
 | |
| k_kanadb["385"]="ti"
 | |
| k_kanadb["429"]="lo"
 | |
| k_kanadb["429"]="ro"
 | |
| k_kanadb["427"]="lu"
 | |
| k_kanadb["427"]="ru"
 | |
| k_kanadb["422"]="yu"
 | |
| k_kanadb["420"]="ya"
 | |
| k_kanadb["434"]="wo"
 | |
| k_kanadb["426"]="li"
 | |
| k_kanadb["426"]="ri"
 | |
| k_kanadb["435"]="n'"
 | |
| k_kanadb["360"]="e"
 | |
| k_kanadb["381"]="so"
 | |
| k_kanadb["390"]="te"
 | |
| k_kanadb["408"]="he"
 | |
| k_kanadb["367"]="ku"
 | |
| k_kanadb["405"]="fu"
 | |
| k_kanadb["405"]="hu"
 | |
| k_kanadb["377"]="su"
 | |
| k_kanadb["402"]="hi"
 | |
| k_kanadb["363"]="ka"
 | |
| k_kanadb["356"]="i"
 | |
| }
 | |
| </script>
 | |
| </head>
 | |
| <body>
 | |
| <div id='box'>
 | |
| 
 | |
| <div id='wl'>
 | |
| Warning!
 | |
| <div id='wn'>
 | |
| This isn't a very good kana-romaji converter. For one thing, it's in a web browser and relies on the power of the user's computer. Second, it's also not complete. It only translates basic kanas. Kanas consisting of 2 signs simply don't exist in this web app. Instead I recommend JWPce for use as a text editor. It's simple and works perfectly.
 | |
| </div>
 | |
| </div>
 | |
| 
 | |
| 
 | |
| <div id='romaji_container'>
 | |
| <h1 onclick='pfocus("romaji")'>Romaji</h1>
 | |
| <textarea id='romaji' onfocus='bpfocus("romaji")' onblur='pblur("romaji")' onkeyup='copy_value("romaji","hira,kata")'></textarea>
 | |
| </div>
 | |
| 
 | |
| <div id='kana_container'>
 | |
| <h1 onclick='pfocus("kana")'>Kana</h1>
 | |
| <textarea id='kana' onfocus='pfocus("kana")' onblur='pblur("kana")' onkeyup='copy_value("kana","romaji")'></textarea>
 | |
| <div id='hirakata'>
 | |
| <h2>Hiragana:</h2>
 | |
| <textarea id='hira' onfocus='bpfocus("kana","hira")'></textarea>
 | |
| <h2>Katakana:</h2>
 | |
| <textarea id='kata' onfocus='bpfocus("kana","kata")'></textarea>
 | |
| </div>
 | |
| </div>
 | |
| 
 | |
| </div>
 | |
| </body>
 | |
| </html>
 | 
