var Yi = Class.create({
	table: $H({
		あ: $w('ꀈ ꀉ ꀊ ꀋ'), い: $w('ꀀ ꀁ ꀂ ꀃ'), う: $w('ꀓ ꀔ'), え: $w('ꀄ ꀅ ꀆ ꀇ'), お: $w('ꀏ ꀐ ꀑ ꀒ'),
		か: $w('ꇿ ꈀ ꈁ ꈂ'), き: $w('ꇸ ꇹ ꇺ ꇻ'), く: $w('ꈎ ꈏ ꈐ ꈑ'), け: $w('ꇼ ꇽ ꇾ'), こ: $w('ꈆ ꈇ ꈈ ꈉ'),
		が: $w('ꈚ ꈛ ꈜ ꈝ'), ぎ: $w('ꈔ ꈕ ꈖ'), ぐ: $w('ꈪ ꈫ ꈬ ꈭ'), げ: $w('ꈗ ꈘ ꈙ'), ご: $w('ꈢ ꈣ ꈤ ꈥ'),
		さ: $w('ꌐ ꌑ ꌒ ꌓ'), し: $w('ꌉ ꌊ ꌋ ꌌ'), す: $w('ꌞ ꌟ ꌠ ꌡ'), せ: $w('ꌍ ꌎ ꌏ'), そ: $w('ꌗ ꌘ ꌙ ꌚ'),
		ざ: $w('ꌱ ꌲ ꌳ ꌴ'), じ: $w('ꌪ ꌫ ꌬ ꌭ'), ず: $w('ꌼ ꌽ ꌾ ꌿ'), ぜ: $w('ꌮ ꌯ ꌰ'), ぞ: $w('ꌵ ꌶ ꌷ ꌸ'),
		た: $w('ꄡ ꄢ ꄣ ꄤ'), ち: $w('ꄚ ꄛ ꄜ ꄝ'), つ: $w('ꄰ ꄱ ꄲ ꄳ'), て: $w('ꄞ ꄟ ꄠ'), と: $w('ꄩ ꄪ ꄫ ꄬ'),
		だ: $w('ꄽ ꄾ ꄿ ꅀ'), ぢ: $w('ꄶ ꄷ ꄸ ꄹ'), づ: $w('ꅋ ꅌ ꅍ ꅎ'), で: $w('ꄺ ꄻ ꄼ'), ど: $w('ꅄ ꅅ ꅆ ꅇ'),
		な: $w('ꆄ ꆅ ꆆ'), に: $w('ꅽ ꅾ ꅿ ꆀ'), ぬ: $w('ꆑ ꆒ ꆓ ꆔ'), ね: $w('ꆁ ꆂ ꆃ'), の: $w('ꆊ ꆋ ꆌ ꆍ'),
		は: $w('ꉎ ꉏ ꉐ ꉑ'), ひ: $w('ꉆ ꉇ ꉈ ꉉ'), ふ: $w('ꃘ ꃙ ꃚ ꃛ'), へ: $w('ꉊ ꉋ ꉌ ꉍ'), ほ: $w('ꉖ ꉗ ꉘ ꉙ'),
		ば: $w('ꁞ ꁟ ꁠ ꁡ'), び: $w('ꁖ ꁗ ꁘ ꁙ'), ぶ: $w('ꁬ ꁭ ꁮ ꁯ'), べ: $w('ꁚ ꁛ ꁜ ꁝ'), ぼ: $w('ꁥ ꁦ ꁧ ꁨ'),
		ぱ: $w('ꀿ ꁀ ꁁ ꁂ'), ぴ: $w('ꀸ ꀹ ꀺ ꀻ'), ぷ: $w('ꁊ ꁋ ꁌ ꁍ'), ぺ: $w('ꀼ ꀽ ꀾ'), ぽ: $w('ꁆ ꁇ ꁈ ꁉ'),
		ま: $w('ꂵ ꂶ ꂷ ꂸ'), み: $w('ꂮ ꂯ ꂰ ꂱ'), む: $w('ꃃ ꃄ ꃅ ꃆ'), め: $w('ꂲ ꂳ ꂴ'), も: $w('ꂽ ꂾ ꂿ ꃀ'),
		や: $w('ꑹ ꑺ ꑻ ꑼ'), ゆ: $w('ꑽ ꑾ ꑿ ꒀ'), よ: $w('ꒁ ꒂ ꒃ ꒄ'), わ: $w('ꊀ ꊁ ꊂ ꊃ'), を: $w('ꊇ ꊈ ꊉ'),
		ら: $w('ꆿ ꇀ ꇁ ꇂ'), り: $w('ꆷ ꆸ ꆹ ꆺ'), る: $w('ꇎ ꇏ ꇐ ꇑ'), れ: $w('ꆻ ꆼ ꆽ ꆾ'), ろ: $w('ꇇ ꇈ ꇉ ꇊ')
	}),
	initialize: function() {
		$('input').update();
		$('yi').observe('submit', function(event) {
			event.stop();
			this.input = $F('input');
			if ( this.input ) {
				$('result').update(
					new Element('h2').update('変換結果')
				).insert(
					new Element('p').update(this.convert('yi'))
				).insert(
					new Element('p').update(this.convert('ja'))
				);
			} else {
				$('result').update();
			}
		}.bind(this));
		$('input').insert({
			after: new Element('button', {
				type: 'submit'
			}).update('変換')
		});
	},
	convert: function(lang) {
		return this.input.replace(/./g, function(character) {
			if ( this.table.keys().include(character) ) return lang == 'yi' ? this.random(this.table.get(character)) : character;
			if ( /[\s,.、。]/.match(character) ) return character;
			return String.fromCharCode(lang == 'yi' ? this.random(0xA000, 0xA48C) : this.random(0x3041, 0x3096));
		}.bind(this)).replace(/\x0D\x0A|\x0D|\x0A/g, '<br>');
	},
	random: function() {
		if ( arguments.length == 1 ) return arguments[0][this.random(0, arguments[0].length - 1)];
		return Math.floor(Math.random() * (arguments[1] - arguments[0] + 1)) + arguments[0];
	}
});

document.observe('dom:loaded', function() {
	new Yi();
});

