var strokes = ['.','一','丶','丿','乙'];
// 丨 same as 丿
// . indicates no more stroke
// strokes :
// 0  none 
// 1  horizontal / semi-horizontal
// 2  dot
// 3  vertical / oblique
// 4  crooked / other

var hiraganas = 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよりらるれろわをんっ '; // ' ' place holder only, matching katakana 'ー'
var katakanas = 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンッー';

var hdiacs1 = "がぎぐげござじずぜぞだでどばびぶべぼ";
var kdiacs1 = "ガギグゲゴザジズゼゾダデドバビブベボ";
var hdiacs2 = "ぱぴぷぺぽ";
var kdiacs2 = "パピプペポ";

// possible consonnants doubled after 'っ' (small 'g')

var hiraK = "bcdghkptz";
var kataK = hiraK;

var dakuten = '゛';
var handaku = '゜'; // handakuten

var romahiratable=['ん','n','くゎ','kwa','きゃ','kya','きゅ','kyu','きょ','kyo','しゃ','sha','しゅ','shu','しょ','sho','ちゃ','cha','ちゅ','chu','ちょ','cho','にゃ','nya','にゅ','nyu','にょ','nyo','ひゃ','hya','ひゅ','hyu','ひょ','hyo','みゃ','mya','みゅ','myu','みょ','myo','りゃ','rya','りゅ','ryu','りょ','ryo','ぐゎ','gwa','ぎゃ','gya','ぐゎ','gwa','ぎゃ','gya','ぎゅ','gyu','ぎょ','gyo','じゃ','ja','じゅ','ju','じょ','jo','ぢゃ','(ja)','ぢゅ','(ju)','ぢょ','(jo)','びゃ','bya','びゅ','byu','びょ','byo','ぴゃ','pya','ぴゅ','pyu','ぴょ','pyo','か','ka','き','ki','く','ku','け','ke','こ','ko','さ','sa','し','shi','す','su','せ','se','そ','so','た','ta','ち','chi','つ','tsu','て','te','と','to','な','na','に','ni','ぬ','nu','ね','ne','の','no','は','ha','ひ','hi','ふ','fu','へ','he','ほ','ho','ま','ma','み','mi','む','mu','め','me','も','mo','や','ya','ゆ','yu','よ','yo','ら','ra','り','ri','る','ru','れ','re','ろ','ro','わ','wa','ゐ','wi','ゑ','we','を','wo','が','ga','ぎ','gi','ぐ','gu','げ','ge','ご','go','ぐ','gu','げ','ge','ご','go','ざ','za','じ','ji','ず','zu','ぜ','ze','ぞ','zo','だ','da','ぢ','(ji)','づ','(zu)','で','de','ど','do','ば','ba','び','bi','ぶ','bu','べ','be','ぼ','bo','ぱ','pa','ぴ','pi','ぷ','pu','ぺ','pe','ぽ','po','あ','a','い','i','う','u','え','e','お','o'];

var romakatatable=['ン','n','キャ','kya','キュ','kyu','キョ','kyo','シャ','sha','シュ','shu','ショ','sho','チャ','cha','チュ','chu','チョ','cho','ニャ','nya','ニュ','nyu','ニョ','nyo','ヒャ','hya','ヒュ','hyu','ヒョ','hyo','ミャ','mya','ミュ','myu','ミョ','myo','リャ','rya','リュ','ryu','リョ','ryo','ギャ','gya','ギュ','gyu','ギョ','gyo','ジャ','ja','ジュ','ju','ジョ','jo','ビャ','bya','ビュ','byu','ビョ','byo','ピャ','pya','ピュ','pyu','ピョ','pyo','イィ','yi','イェ','ye','ヴァ','va','ヴィ','vi','ヴェ','ve','ヴォ','vo','ヴャ','vya','ヴュ','vyu','ヴョ','vyo','シェ','she','ジェ','je','チェ','che','スァ','swa','スィ','si','スェ','swe','スォ','swo','スャ','sya','スュ','syu','スョ','syo','ズァ','zwa','ズィ','zi','ズェ','zwe','ズォ','zwo','ズャ','zya','ズュ','zyu','ズョ','zyo','ツァ','tsa','ツィ','tsi','ツェ','tse','ツォ','tso','ティ','ti','テャ','tya','テュ','tyu','テョ','tyo','ディ','di','デャ','dya','デュ','dyu','デョ','dyo','トァ','twa','トィ','twi','トゥ','tu','トェ','twe','トォ','two','ドァ','dwa','ドィ','dwi','ドゥ','du','ドェ','dwe','ドォ','dwo','ファ','fa','フィ','fi','フェ','fe','フォ','fo','フャ','fya','フュ','fyu','フョ','fyo','リィ','ryi','リェ','rye','ウァ','wa','ウィ','wi','ウェ','we','ウォ','wo','ウャ','wya','ウュ','wyu','ウョ','wyo','クァ','kwa','クィ','kwi','クェ','kwe','クォ','kwo','グァ','gwa','グィ','gwi','グェ','gwe','グォ','gwo','ムァ','mwa','ムィ','mwi','ムェ','mwe','ムォ','mwo','カ','ka','キ','ki','ク','ku','ケ','ke','コ','ko','サ','sa','シ','shi','ス','su','セ','se','ソ','so','タ','ta','チ','chi','ツ','tsu','テ','te','ト','to','ナ','na','ニ','ni','ヌ','nu','ネ','ne','ノ','no','ハ','ha','ヒ','hi','フ','fu','ヘ','he','ホ','ho','マ','ma','ミ','mi','ム','mu','メ','me','モ','mo','ヤ','ya','ラ','ra','リ','ri','ル','ru','レ','re','ロ','ro','ワ','wa','ガ','ga','ギ','gi','グ','gu','ゲ','ge','ゴ','go','ジ','ji','ザ','za','ズ','zu','ゼ','ze','ゾ','zo','ダ','da','ヂ','ji','ヅ','zu','デ','de','ド','do','バ','ba','ビ','bi','ブ','bu','ベ','be','ボ','bo','パ','pa','ピ','pi','プ','pu','ペ','pe','ポ','po','ヴ','vu','ア','a','イ','i','ウ','u','エ','e','オ','o'];

var hira = new Array;
var kata = new Array;

// hira[<hira>]=['<roma>',<1ststroke>,<2ndstroke>,<3rdstroke>];
// kata[<kata>]=['<roma>',<1ststroke>,<2ndstroke>,<3rdstroke>];

// http://www.kanjistep.com/en/online/hiraganasteps/intro.html
// http://www.kanjistep.com/en/online/katakanasteps/intro.html

hira['あ']=['a',1,3,4]; hira['い']=['i',3,3]; hira['う']=['u',2,4]; hira['え']=['e',2,4]; hira['お']=['o',1,4,2];                                                                                                                                                                                                                                                               

hira['か']=['ka',4,3,2]; hira['き']=['ki',1,1,4]; hira['く']=['ku',4]; hira['け']=['ke',3,1,3]; hira['こ']=['ko',1,1];
hira['が']=['ga',4,3,2]; hira['ぎ']=['gi',1,1,4]; hira['ぐ']=['gu',4]; hira['げ']=['ge',3,1,3]; hira['ご']=['go',1,1];

hira['さ']=['sa',1,3,1]; hira['し']=['shi',4]; hira['す']=['su',1,4]; hira['せ']=['se',1,3,4]; hira['そ']=['so',4];
hira['ざ']=['za',1,3,1]; hira['じ']=['ji',4];  hira['ず']=['zu',1,4]; hira['ぜ']=['ze',1,3,4]; hira['ぞ']=['zo',4];

hira['た']=['ta',1,3,1,1]; hira['ち']=['chi',1,4]; hira['つ']=['tsu',4]; hira['て']=['te',4]; hira['と']=['to',3,4];
hira['だ']=['da',1,3,1,1];                                              hira['で']=['de',4]; hira['ど']=['do',3,4];

hira['な']=['na',1,3,2,4]; hira['に']=['ni',3,1,1]; hira['ぬ']=['nu',3,4]; hira['ね']=['ne',3,4]; hira['の']=['no',4];

hira['は']=['ha',3,1,4]; hira['ひ']=['hi',4]; hira['ふ']=['fu',2,4,2,2]; hira['へ']=['he',4]; hira['ほ']=['ho',3,1,1,4];
hira['ば']=['ba',3,1,4]; hira['び']=['bi',4]; hira['ぶ']=['bu',2,4,2,2]; hira['べ']=['be',4]; hira['ぼ']=['bo',3,1,1,4];
hira['ぱ']=['pa',3,1,4]; hira['ぴ']=['pi',4]; hira['ぷ']=['pu',2,4,2,2]; hira['ぺ']=['pe',4]; hira['ぽ']=['po',3,1,1,4];

hira['ま']=['ma',1,1,4]; hira['み']=['mi',4,3]; hira['む']=['mu',1,4,2]; hira['め']=['me',3,4]; hira['も']=['mo',4,1,1];
hira['や']=['ya',4,2,3]; hira['ゆ']=['yu',4,3]; hira['よ']=['yo',1,4];

hira['ら']=['ra',2,4]; hira['り']=['ri',3,3]; hira['る']=['ru',4]; hira['れ']=['re',3,4]; hira['ろ']=['ro',4];
hira['わ']=['wa',3,4]; hira['を']=['wo',1,4,4]; hira['ん']=['n',4]; hira['っ']=['-',0]; hira[' ']=['-',0];

kata['ア']=['a',4,3]; kata['イ']=['e',3,3]; kata['ウ']=['i',3,3,4]; kata['エ']=['o',1,3,1]; kata['オ']=['u',1,3,3];

kata['カ']=['ka',4,3]; kata['キ']=['ki',1,1,3]; kata['ク']=['ku',3,4]; kata['ケ']=['ke',3,1,3]; kata['コ']=['ko',4,1];
kata['ガ']=['ga',4,3]; kata['ギ']=['gi',1,1,3]; kata['グ']=['gu',3,4]; kata['ゲ']=['ge',3,1,3]; kata['ゴ']=['go',4,1];

kata['サ']=['sa',1,3,3]; kata['シ']=['shi',2,2,3]; kata['ス']=['su',4,3]; kata['セ']=['se',1,4]; kata['ソ']=['so',2,3];
kata['ザ']=['za',1,3,3]; kata['ジ']=['ji',2,2,3];  kata['ズ']=['zu',4,3]; kata['ゼ']=['ze',1,4]; kata['ゾ']=['zo',2,3];

kata['タ']=['ta',3,4,2]; kata['チ']=['chi',3,1,3]; kata['ツ']=['tsu',2,2,3]; kata['テ']=['te',1,1,3]; kata['ト']=['to',3,3];
kata['ダ']=['da',3,4,2];                                                    kata['デ']=['de',1,1,3]; kata['ド']=['do',3,3];

kata['ナ']=['na',1,3]; kata['ニ']=['ni',1,1]; kata['ヌ']=['nu',4,3]; kata['ネ']=['ne',2,4,3,3]; kata['ノ']=['no',3];

kata['ハ']=['ha',3,3]; kata['ヒ']=['hi',1,4]; kata['フ']=['fu',4]; kata['ヘ']=['he',4]; kata['ホ']=['ho',1,3,2,2];
kata['バ']=['ba',3,3]; kata['ビ']=['bi',1,4]; kata['ブ']=['bu',4]; kata['ベ']=['be',4]; kata['ボ']=['bo',1,3,2,2];
kata['パ']=['pa',3,3]; kata['ピ']=['pi',1,4]; kata['プ']=['pu',4]; kata['ペ']=['pe',4]; kata['ポ']=['po',1,3,2,2];

kata['マ']=['ma',4,3]; kata['ミ']=['mi',3,3,3]; kata['ム']=['mu',4,3]; kata['メ']=['me',3,3]; kata['モ']=['mo',1,1,4];
kata['ヤ']=['ya',1,3]; kata['ユ']=['yu',4,1]; kata['ヨ']=['yo',4,1,1];
kata['ラ']=['ra',1,4]; kata['リ']=['ri',3,3]; kata['ル']=['ru',3,4]; kata['レ']=['re',4]; kata['ロ']=['ro',3,4,1];
kata['ワ']=['wa',3,4]; kata['ヲ']=['wo',4,1]; kata['ン']=['n',2,3]; kata['ー']=['-',1]; kata['ッ']=['-',0];

// Monographs (gojūon)

hmono0=['あ','い','う','え','お']; kmono0=['ア','イ','ウ','エ','オ']; rmono0=['a','i','u','e','o'];
hmono1=['か','き','く','け','こ']; kmono1=['カ','キ','ク','ケ','コ']; rmono1=['ka','ki','ku','ke','ko'];
hmono2=['さ','し','す','せ','そ']; kmono2=['サ','シ','ス','セ','ソ']; rmono2=['sa','shi','su','se','so'];
hmono3=['た','ち','つ','て','と']; kmono3=['タ','チ','ツ','テ','ト']; rmono3=['ta','chi','tsu','te','to'];
hmono4=['な','に','ぬ','ね','の']; kmono4=['ナ','ニ','ヌ','ネ','ノ']; rmono4=['na','ni','nu','ne','no'];
hmono5=['は','ひ','ふ','へ','ほ']; kmono5=['ハ','ヒ','フ','ヘ','ホ']; rmono5=['ha','hi','fu','he','ho'];
hmono6=['ま','み','む','め','も']; kmono6=['マ','ミ','ム','メ','モ']; rmono6=['ma','mi','mu','me','mo'];
hmono7=['や','','ゆ','','よ'];    kmono7=['ヤ','','ユ','','ヨ'];    rmono7=['ya','','yu','','yo'];
hmono8=['ら','り','る','れ','ろ']; kmono8=['ラ','リ','ル','レ','ロ']; rmono8=['ra','ri','ru','re','ro'];
hmono9=['わ','','','','を'];      kmono9=['ワ','','','','ヲ'];     rmono9=['wa','','','','wo'];
// hmono9=['わ','ゐ','','ゑ','を']; kmono9=['ワ','ヰ','','ヱ','ヲ']; rmono9=['wa','wi','','we','wo'];

// Diacritics (gojūon with (han)dakuten)

hdiac1=['が','ぎ','ぐ','げ','ご']; kdiac1=['ガ','ギ','グ','ゲ','ゴ']; rdiac1=['ga','gi','gu','ge','go'];
hdiac2=['ざ','じ','ず','ぜ','ぞ']; kdiac2=['ザ','ジ','ズ','ゼ','ゾ']; rdiac2=['za','ji','zu','ze','zo'];
hdiac3=['だ','','','で','ど'];    kdiac3=['ダ','','','デ','ド'];    rdiac3=['da','','','de','do'];
// hdiac3=['だ','ぢ','づ','で','ど']; kdiac3=['ダ','ヂ','ヅ','デ','ド']; rdiac3=['da','ji','zu','de','do'];
hdiac4=['ば','び','ぶ','べ','ぼ']; kdiac4=['バ','ビ','ブ','ベ','ボ']; rdiac4=['ba','bi','bu','be','bo'];
hdiac5=['ぱ','ぴ','ぷ','ぺ','ぽ']; kdiac5=['パ','ピ','プ','ペ','ポ']; rdiac5=['pa','pi','pu','pe','po'];

// Digraphs (yōon)

hdigr1=['きゃ','きゅ','きょ']; kdigr1=['キャ','キュ','キョ']; rdigr1=['kya','kyu','kyo'];
hdigr2=['しゃ','しゅ','しょ']; kdigr2=['シャ','シュ','ショ']; rdigr2=['sha','shu','sho'];
hdigr3=['ちゃ','ちゅ','ちょ']; kdigr3=['チャ','チュ','チョ']; rdigr3=['cha','chu','cho'];
hdigr4=['にゃ','にゅ','にょ']; kdigr4=['ニャ','ニュ','ニョ']; rdigr4=['nya','nyu','nyo'];
hdigr5=['ひゃ','ひゅ','ひょ']; kdigr5=['ヒャ','ヒュ','ヒョ']; rdigr5=['hya','hyu','hyo'];
hdigr6=['みゃ','みゅ','みょ']; kdigr6=['ミャ','ミュ','ミョ']; rdigr6=['mya','myu','myo'];
hdigr7=['りゃ','りゅ','りょ']; kdigr7=['リャ','リュ','リョ']; rdigr7=['rya','ryu','ryo'];
// hdigr8=['','','','',''];    kdigr8=['ヰャ','ヰュ','ヰョ']; rdigr8=['wya','wyu','wyo'];

// Digraphs with diacritics (yōon with (han)dakuten)

hdidi1=['ぎゃ','ぎゅ','ぎょ']; kdidi1=['ギャ','ギュ','ギョ']; rdidi1=['gya','gyu','gyo'];
hdidi2=['じゃ','じゅ','じょ']; kdidi2=['ジャ','ジュ','ジョ']; rdidi2=['ja','ju','jo'];
// hdidi3=['ぢゃ','ぢゅ','ぢょ']; kdidi3=['ぢゃ','ぢゅ','ぢょ']; rdidi3=['ja','ju','jo'];
hdidi4=['びゃ','びゅ','びょ']; kdidi4=['ビャ','ビュ','ビョ']; rdidi4=['bya','byu','byo'];
hdidi5=['ぴゃ','ぴゅ','ぴょ']; kdidi5=['ピャ','ピュ','ピョ']; rdidi5=['pya','pyu','pyo'];

var dakut = [[hmono1,hdiac1],[hmono2,hdiac2],[hmono3,hdiac3],[hmono5,hdiac4],[kmono1,kdiac1],[kmono2,kdiac2],[kmono3,kdiac3],[kmono5,kdiac4]];
var handa = [[hmono5,hdiac5],[kmono5,kdiac5]];

var hmono=[hmono0,hmono1,hmono2,hmono3,hmono4,hmono5,hmono6,hmono7,hmono8,hmono9];
var kmono=[kmono0,kmono1,kmono2,kmono3,kmono4,kmono5,kmono6,kmono7,kmono8,kmono9];
var rmono=[rmono0,rmono1,rmono2,rmono3,rmono4,rmono5,rmono6,rmono7,rmono8,rmono9];

var hdigr=[hdigr1,hdigr2,hdigr3,hdigr4,hdigr5,hdigr6,hdigr7]; // ,hdigr8];
var kdigr=[kdigr1,kdigr2,kdigr3,kdigr4,kdigr5,kdigr6,kdigr7]; // ,kdigr8];
var rdigr=[rdigr1,rdigr2,rdigr3,rdigr4,rdigr5,rdigr6,rdigr7]; // ,rdigr8];

var hdiac=[hdiac1,hdiac2,hdiac3,hdiac4,hdiac5];
var kdiac=[kdiac1,kdiac2,kdiac3,kdiac4,kdiac5];
var rdiac=[rdiac1,rdiac2,rdiac3,rdiac4,rdiac5];

var hdidi=[hdidi1,hdidi2,hdidi4,hdidi5];
var kdidi=[kdidi1,kdidi2,kdidi4,kdidi5];
var rdidi=[rdidi1,rdidi2,rdidi4,rdidi5];

// special cases

var nbsp = "&nbsp;";

var hwauo=['ゎ','ゃ','ゅ','ょ'];
var kwauo=[nbsp,'ャ','ュ','ョ'];
var rwauo=['wa','ya','yu','yo'];

var hdigrx=['くゎ','ぐゎ']; 
var kdigrx=[nbsp,nbsp];
var rdigrx=['kwa','gwa'];
var hmonox=['ん',nbsp];
var kmonox=['ン','ー'];
var rmonox=['n',nbsp];

var hirattsu = 'っ';
var katattsu = 'ッ';

var hmonoall=[hmono,hdiac,[hmonox]];
var hdigrall=[hdigr,hdidi,[hdigrx]];
var kmonoall=[kmono,kdiac,[kmonox]];
var kdigrall=[kdigr,kdidi,[kdigrx]];
var rmonoall=[rmono,rdiac,[rmonox]];
var rdigrall=[rdigr,rdidi,[rdigrx]];

// hiragana by visual proximity
// version 1

hprox00=['こ','に','た','な'];
hprox01=['つ','ち','ら','う','ふ'];
hprox02=['ろ','る','み'];
hprox03=['て','そ','と','を','ひ'];
hprox04=['り','け','ゆ'];
hprox05=['よ','ま','は','ほ'];
hprox06=['し','も'];
hprox07=['の','あ','め','ぬ'];
hprox08=['ち','さ','き'];
hprox09=['す','む'];
hprox10=['れ','わ','ね','お'];
hprox11=['え','ん'];
hprox12=['い','か','く','へ','せ','や'];

// var hprox=[hprox00,hprox01,hprox02,hprox03,hprox04,hprox05,hprox06,hprox07,hprox08,hprox09,hprox10,hprox11,hprox12];

// version 2 : adapted from http://nihongo-notebook.blogspot.com/2010/01/hiragana-related-by-shape.html

hprox0=['の','め','ぬ','あ','お'];
hprox1=['つ','う'];
hprox2=['わ','れ','ね'];
hprox3=['こ','に','け','は','ほ','ま','よ'];
hprox4=['た','な'];
hprox5=['し','も'];
hprox6=['ら','ち','さ','き'];
hprox7=['ろ','る'];
hprox8=['え','ん'];
hprox9=['く','へ','せ','や'];

var hprox=[hprox0,hprox1,hprox2,hprox3,hprox4,hprox5,hprox6,hprox7,hprox8,hprox9];

// katakana by visual proximity

kprox00=['ロ','コ','ヨ','ユ'];
kprox01=['ノ','メ','ヌ','ス','ネ'];
kprox02=['ア','マ','ム'];
kprox03=['ラ','ヲ','フ','ワ','ウ'];
kprox04=['ケ','ク','タ'];
kprox05=['ニ','エ','モ','テ'];
kprox06=['リ','サ','ナ','チ'];
kprox07=['レ','ル'];
kprox08=['ソ','ツ'];
kprox09=['ミ','シ','ン'];
kprox10=['ヒ','セ','ヤ'];
kprox11=['ハ','ホ','オ'];
kprox12=['イ','カ','ト','ヘ','キ'];

var kprox=[kprox00,kprox01,kprox02,kprox03,kprox04,kprox05,kprox06,kprox07,kprox08,kprox09,kprox10,kprox11,kprox12];

// special cases

var hdigrx=['くゎ','ぐゎ']; 
var kdigrx=['.','.'];
var rdigrx=['kwa','gwa'];
var hmonox=['ん','.'];
var kmonox=['ン','ー'];
var rmonox=['n','.']

var hmonoall=[hmono,hdiac,[hmonox]];
var hdigrall=[hdigr,hdidi,[hdigrx]];
var kmonoall=[kmono,kdiac,[kmonox]];
var kdigrall=[kdigr,kdidi,[kdigrx]];
var rmonoall=[rmono,rdiac,[rmonox]];
var rdigrall=[rdigr,rdidi,[rdigrx]];
