<?xml version="1.0" encoding="UTF-8" ?>
<Module>
  <ModulePrefs title="全角半角文字変換" title_url ="http://distraid.co.jp/demo/js_codeconv.html" category="tools" 
  	description="テキストボックスに入力された文章に対し、英数字やカタカナの全角半角相互変換、ひらがなカタカナ変換、あるいは任意文字の置換を行います。変換処理はサーバーを介さずJavaScriptを利用し全てクライアント側で行いますので、必要なJavaScriptファイルを読み込んだ後はオフライン状態でも利用可能になります。" 
	author="distraid_ksy" author_affiliation="distraid Inc."  author_location="Tokyo, Japan" author_email="distraid+gadget@gmail.com" author_link="http://distraid.co.jp"
	thumbnail="http://distraid.co.jp/gadget/fhconvert/thumbnail.png" screenshot="http://distraid.co.jp/gadget/fhconvert/screenshot.png"
	width="320" scaling="true">
	<Locale lang="ja" country="jp" />
  </ModulePrefs>
  <Content type="html">
  <![CDATA[ 
<script src="http://distraid.co.jp/gadget/fhconvert/fhconvert_gg.js" type="text/javascript"></script>
<script>
var FHConvGadget = {
	convProc: {
		'ftoh': FHConvert.createCl( 'ftoh', {'space':true} ),
		'ftohj': FHConvert.createCl( 'ftoh', {'space':true,'jaCode':true} ),
		'htof': FHConvert.createCl( 'htof', {'space':true} ),
		'htofj': FHConvert.createCl( 'htof', {'space':true,'jaCode':true} ),
		'hgtokk': FHConvert.createCl( 'hgtokk' ),
		'kktohg': FHConvert.createCl( 'kktohg' ),
		'fkktohkk': FHConvert.createCl( 'fkktohkk' ),
		'hkktofkk': FHConvert.createCl( 'hkktofkk' ),
		'convSet': null
	},
	
	prevConv: {from:'', to:''},

	changeSel: function( selElem ) {
		if ( !selElem ) return;
		var convType = selElem.options[selElem.selectedIndex].value;
		var jcElem = document.getElementById( 'spJaConv' );
		var csElem = document.getElementById( 'spConvSet' );
		if ( jcElem )
			jcElem.style['display'] = (convType=='ftoh'||convType=='htof' ? 'inline' : 'none');
		if ( csElem )
			csElem.style['display'] = (convType=='convSet' ? 'inline' : 'none');
	},

	convert: function() {
		var taElem = document.getElementById( 'taText' );
		if ( !taElem || !taElem.value ) return;

		var selElem = document.getElementById( 'seConvert' );
		if ( !selElem ) return;

		var convType = selElem.options[selElem.selectedIndex].value;
		var jaElem = document.getElementById( 'inChkJa' );
		if ( jaElem && jaElem.checked && (convType=='ftoh'||convType=='htof') )
			convType += 'j';
			
		if ( convType == 'convSet' )
			taElem.value = this._convertSet( taElem.value );
		else if ( this.convProc[convType] )
			taElem.value = this.convProc[convType]( taElem.value );
	},
	
	_convertSet: function( convText ) {
		if ( !convText ) return convText;
		var strFrom = document.getElementById( 'inFrom' ).value;
		if ( !strFrom ) return convText;
		var strTo = document.getElementById( 'inTo' ).value;
		if ( strFrom == this.prevConv['from'] && strTo == this.prevConv['to'] && typeof this.convProc['convSet'] == 'function' )
			return this.convProc['convSet']( convText );

		this.convProc['convSet'] = FHConvert.createCl( 'convSet', {'convSet':this._setObj(strFrom,strTo)} );
		this.prevConv = {'from':strFrom, 'to':strTo};
		return this.convProc['convSet']( convText );
	},
	
	_setObj: function( key, value ) {
		var obj = {};
		obj[key] = value;
		return obj;
	}
}
</script>
<style type="text/css">
.fhMenu { border: 1px solid #20a060; background-color: #f2fffa; padding-left: 2px; }
.convText { font-size:11px; }
#spConvSet { display:none; }
#taText { width:100%; font-size: 12px; margin: 0px }
</style>
<div class="fhMenu">
<select id="seConvert" onchange="FHConvGadget.changeSel(this)">
	<option value="ftoh">全角英数字→半角</option>
	<option value="htof">半角英数字→全角</option>
	<option value="hgtokk">ひらがな→全角カナ</option>
	<option value="kktohg">全角カナ→ひらがな</option>
	<option value="fkktohkk">全角カナ→半角カナ</option>
	<option value="hkktofkk">半角カナ→全角カナ</option>
	<option value="convSet">任意単語変換</option>
</select>
<span id="spConvSet">
	<input type="text" class="convText" id="inFrom" size="6"> to <input type="text" class="convText" id="inTo" size="6">	
</span>
<span id="spJaConv" class="convText">
	<input type="checkbox" id="inChkJa"><label for="inChkJa">日本語特有記号</label>
</span>
<input type="button" value="変換" onclick="FHConvGadget.convert()">
</div>
<textarea id="taText" rows="10"></textarea>

  ]]> 
  </Content>
</Module>
