kanahenkan= new Array();

//半角カタカナ作成用コード
hankaku_code= new Array(65383,65393,65384,65394,65385,65395,65386,65396,65387,65397,65398,65398,65399,65399,65400,65400,65401,65401,65402,65402,65403,65403,65404,65404,65405,65405,65406,65406,65407,65407,65408,65408,65409,65409,65391,65410,65410,65411,65411,65412,65412,65413,65414,65415,65416,65417,65418,65418,65418,65419,65419,65419,65420,65420,65420,65421,65421,65421,65422,65422,65422,65423,65424,65425,65426,65427,65388,65428,65389,65429,65390,65430,65431,65432,65433,65434,65435,65436,65436,65394,65396,65382,65437,65395,65398,65401);

//半角カタカナ作成用濁点文字No.
dakuten_no=new Array(11,13,15,17,19,21,23,25,27,29,31,33,36,38,40,47,50,53,56,59,83);
//半角カタカナ作成用半濁点文字No.
handaku_no=new Array(48,51,54,57,60);

dakuten    = new Array("ヴ","","","ガ","ギ","グ","ゲ","ゴ","ザ","ジ","ズ","ゼ","ゾ","ダ","ヂ","ヅ","デ","ド","","","","","","バ","ビ","ブ","ベ","ボ");
handaku    = new Array('パ','ピ','プ','ペ','ポ');

zenkaku_kana= new Array("ヲ","ァ","ィ","ゥ","ェ","ォ","ャ","ュ","ョ","ッ","ｰ","ア","イ","ウ","エ","オ","カ","キ","ク","ケ","コ","サ","シ","ス","セ","ソ","タ","チ","ツ","テ","ト","ナ","ニ","ヌ","ネ","ノ","ハ","ヒ","フ","ヘ","ホ","マ","ミ","ム","メ","モ","ヤ","ユ","ヨ","ラ","リ","ル","レ","ロ","ワ","ン");

kansuuji=new Array(12295,19968,20108,19977,22235,20116,20845,19971,20843,20061);

function conv(x){
	le=x.length;

	var xout = "";
	for(i=0; i< le; i++){
		var tmp ='';
		var chr = x.substr(i, 1);
		xout += chr;

		//カナ⇒かな
		tmp = kana(chr)
		xout += (tmp != chr) ? tmp : '';

		//かな⇒カナ
		tmp = A_kana(chr);
		xout += (tmp != chr) ? tmp : '';

		//カナ(全角半角)変換
		tmp = kanahankaku(chr);
		xout += (tmp != chr) ? tmp : '';

		//カナ(半角全角)変換
		tmp = A_kanahankaku(chr);
		xout += (tmp != chr) ? tmp : '';

		//半角英から全角英
		tmp = halpha(chr);
		xout += (tmp != chr) ? tmp : '';

		//全角英から半角英
		tmp = alpha(chr);
		xout += (tmp != chr) ? tmp : '';

		//半角数から全角数
		tmp = hnumber(chr);
		xout += (tmp != chr) ? tmp : '';

		//半角数から全角数
		tmp = number(chr);
		xout += (tmp != chr) ? tmp : '';
    }

    return xout;
}

function kana(x){

    //カナかな変換
    le=x.length;

    xout="";
    for(i=0;i<le;i++){
        code=x.charCodeAt(i);
        if(code>=12449 && code<=12531){code=code-96;}
        xout=xout+String.fromCharCode(code) ;
    }
    return xout;
}

function kanahankaku(x){

    //カナ(全角半角)変換
    le=x.length;

    xout="";
    for(i=0;i<le;i++){
        code=x.charCodeAt(i);
        if(code>=12449 && code<=12534){
           xout=xout+kanahenkan[code-12449];
        }else{
           xout=xout+String.fromCharCode(code);
        }
    }
    return xout;
}
function A_kanahankaku(x){

    //カナ(半角全角)変換
    le=x.length;

    tout="";

    //半角全角変換
    le=x.length;

    xout="";

    code=x.charCodeAt(0);
    for(i=0;i<le;i++){
        code_next=x.charCodeAt(i+1);

        if(code>=65382 && code<=65437){
           if(code_next==65438){
               moji=dakuten[code-65395];
               i++;
               code_next=x.charCodeAt(i+1);
           }else if(code_next==65439){
               moji=handaku[code-65418];
               i++;
               code_next=x.charCodeAt(i+1);
           }else{
               moji=zenkaku_kana[code-65382];
           }
           xout=xout+moji;

        }else{
           xout=xout+String.fromCharCode(code);
        }
        code=code_next;
    }
    return xout;
}

function A_kana(x){
    //かなカナ変換
    le=x.length;

    xout="";
    for(i=0;i<le;i++){
        code=x.charCodeAt(i);
        if(code>=12353 && code<=12435){code=code+96;}
        xout=xout+String.fromCharCode(code) ;
    }
    return xout;
}

function halpha(x){

    //半角英から全角英
    le=x.length;

    xout="";
    for(i=0;i<le;i++){
        code=x.charCodeAt(i);
        if(code>=65 && code<=90){code=code+65248;}
        if(code>=97 && code<=122){code=code+65248;}
        xout=xout+String.fromCharCode(code) ;
    }
    return xout;
}

function alpha(x){

    //全角英から半角英
    le=x.length;

    xout="";
    for(i=0;i<le;i++){
        code=x.charCodeAt(i);
        if(code>=65313 && code<=65338){code=code-65248;}
        if(code>=65345 && code<=65370){code=code-65248;}
        xout=xout+String.fromCharCode(code) ;
    }
    return xout;
}

function hnumber(x){

    //半角数から全角数
    le=x.length;

    xout="";
    for(i=0;i<le;i++){
        code=x.charCodeAt(i);
        if(code>=48 && code<=57){code=code+65248;}
        xout=xout+String.fromCharCode(code) ;
    }
    return xout;
}

function number(x){

    //半角数から全角数
    le=x.length;

    xout="";
    for(i=0;i<le;i++){
        code=x.charCodeAt(i)
        if(code>=65296 && code<=65305){code=code-65248;}
        xout=xout+String.fromCharCode(code) ;
    }
    return xout;
}
function num_kan(x){

    //全角数から漢数字
    le=x.length;

    xout="";
    for(i=0;i<le;i++){
        code=x.charCodeAt(i)
        if(code>=65296 && code<=65305){code=kansuuji[code-65296];}
        xout=xout+String.fromCharCode(code) ;
    }
    return xout;
}
function kan_num(x){

    //全角数から漢数字
    le=x.length;

    xout="";
    for(i=0;i<le;i++){
        code=x.charCodeAt(i)
        if(code == 12295){dmy='０'}
        else if(code == 19968){dmy='１'}
        else if(code == 20108){dmy='２'}
        else if(code == 19977){dmy='３'}
        else if(code == 22235){dmy='４'}
        else if(code == 20116){dmy='５'}
        else if(code == 20845){dmy='６'}
        else if(code == 19971){dmy='７'}
        else if(code == 20843){dmy='８'}
        else if(code == 20061){dmy='９'}
        else{dmy=x.charAt(i)}
        xout=xout+dmy ;
    }
    return xout;
}

