/* ０詰めFormatを行う*/
function FormatZeroNum(Num,txtLeng){
	var inputvalue = Num;
	var UxNum = String(Num);
	if (txtLeng != '0') {
		if (UxNum.length != txtLeng){
		    var	fleng = txtLeng - UxNum.length;
			for (i = 0; i < fleng; i++) {
				inputvalue = '0'.concat(inputvalue);
			}
		}
	}
	return inputvalue;
}

//*** 前後スペースカット
function SpCut(dat){
	var x;
	var y;
	var res,res2;
	var d,st;

	// 前スペースカット
	for(x = 0;x < dat.length;x++){
		d = dat.charAt(x);
		if(d != " "){
			break;
		}
	}
	// 後スペースカット
	for(y = dat.length - 1;y >= 0;y--){
		d = dat.charAt(y);
		if(d != " "){
			break;
		}
	}
	res = dat.substring(x,y+1);
	res2 = "";
	st = 0;
	// 文字中複数連続スペースを１つに変更
	for(x = 0;x < res.length;x++){
		d = res.charAt(x);
		if(d == " "){
			for(y = x + 1;y < res.length;y++){
				d = res.charAt(y);
				if(d != " "){
					break;
				}
			}
			res2 = res2 + res.substring(st,x + 1);
			st = y;
			x = y - 1;
		}
	}
	res2 = res2 + res.substring(st,x);
	return res2;
}

//*** 入力済み内容から"/"を削除
//*** 引数　：対象文字列
//*** 戻り値：削除後の文字列

function SlashCut(dat) {
	var str=SpCut(dat);
	// 配列にする。
	var buf = str.split( "/" );

	str="";
   	for ( var i = 0 ; i < buf.length ; ++i )
    	    str = str + buf[i];
	return str;
}

//*** yyyy/mm/dd形式の日付を取得
//*** 引数　：フォーマット対象日付
//*** 戻り値：フォーマット後の値
function GetFmtDate(dd)
{
	var d=new Date(dd);
	yy = d.getYear();
	mm = d.getMonth() + 1;
	dd = d.getDate();
	if (yy < 2000) { yy += 1900; }
	if (mm < 10) { mm = "0" + mm; }
	if (dd < 10) { dd = "0" + dd; }
	return(yy + "/" + mm + "/" + dd);
}


/* 全角半角用マップオブジェクト */
function ConversionMap() {
    this.map1 = {};
    this.map2 = {};
}

/* 全角半角用マップオブジェクトメソッド */
ConversionMap.prototype = {
	/* ADDメソッド */
    add : function(s1, s2) {

        if (!this.map1[s1]) {
            this.map1[s1] = s2;
        }

        if (!this.map2[s2]) {
            this.map2[s2] = s1;
        }
    },
	/* CONVERTメソッド */
    convert : function(s, reverse) {
		
        var map = !reverse? this.map1 : this.map2;

        var converted = "";

        for (var i = 0;i < s.length;i++) {

            if (i + 1 < s.length) {
                var c = map[s.substring(i, i + 2)];
                if (c) {
                    converted += c;
                    i++;
                    continue;
                }
            }

            var c = map[s.substring(i, i + 1)];
            if (c) {
                converted += c;
                continue;
            }

            // 変換テーブルに該当無し
            converted += s.substring(i, i + 1);
        }

        return converted;
    }
};

// 全角-半角 マッピング (ASCII)
var asciiMap = new ConversionMap();

asciiMap.add(" ", "　");
asciiMap.add("!", "！");

// 2重引用符
//asciiMap.add("\"", "W");
asciiMap.add("\"", "“");
asciiMap.add("\"", "”");

asciiMap.add("#", "＃");
asciiMap.add("$", "＄");
asciiMap.add("%", "％");
asciiMap.add("&", "＆");
asciiMap.add("'", "’");
asciiMap.add("(", "（");
asciiMap.add(")", "）");
asciiMap.add("*", "＊");
asciiMap.add("+", "＋");

//多変換
asciiMap.add(",", "，");
asciiMap.add(",", "、");

//多変換
asciiMap.add("-", "−");
asciiMap.add("-", "ー");

asciiMap.add(".", "．");
asciiMap.add("/", "／");
asciiMap.add("0", "０");
asciiMap.add("1", "１");
asciiMap.add("2", "２");
asciiMap.add("3", "３");
asciiMap.add("4", "４");
asciiMap.add("5", "５");
asciiMap.add("6", "６");
asciiMap.add("7", "７");
asciiMap.add("8", "８");
asciiMap.add("9", "９");
asciiMap.add(":", "：");
asciiMap.add(";", "；");
asciiMap.add("<", "＜");
asciiMap.add("=", "＝");
asciiMap.add(">", "＞");
asciiMap.add("?", "？");
asciiMap.add("@", "＠");
asciiMap.add("A", "Ａ");
asciiMap.add("B", "Ｂ");
asciiMap.add("C", "Ｃ");
asciiMap.add("D", "Ｄ");
asciiMap.add("E", "Ｅ");
asciiMap.add("F", "Ｆ");
asciiMap.add("G", "Ｇ");
asciiMap.add("H", "Ｈ");
asciiMap.add("I", "Ｉ");
asciiMap.add("J", "Ｊ");
asciiMap.add("K", "Ｋ");
asciiMap.add("L", "Ｌ");
asciiMap.add("M", "Ｍ");
asciiMap.add("N", "Ｎ");
asciiMap.add("O", "Ｏ");
asciiMap.add("P", "Ｐ");
asciiMap.add("Q", "Ｑ");
asciiMap.add("R", "Ｒ");
asciiMap.add("S", "Ｓ");
asciiMap.add("T", "Ｔ");
asciiMap.add("U", "Ｕ");
asciiMap.add("V", "Ｖ");
asciiMap.add("W", "Ｗ");
asciiMap.add("X", "Ｘ");
asciiMap.add("Y", "Ｙ");
asciiMap.add("Z", "Ｚ");
asciiMap.add("[", "［");

// 円記号
//asciiMap.add("\\", "＼");
asciiMap.add("\\", "￥");

asciiMap.add("]", "］");
asciiMap.add("^", "＾");
asciiMap.add("_", "＿");

// 単一引用符
//asciiMap.add("`", "V");
asciiMap.add("`", "‘");
asciiMap.add("`", "’");

asciiMap.add("a", "ａ");
asciiMap.add("b", "ｂ");
asciiMap.add("c", "ｃ");
asciiMap.add("d", "ｄ");
asciiMap.add("e", "ｅ");
asciiMap.add("f", "ｆ");
asciiMap.add("g", "ｇ");
asciiMap.add("h", "ｈ");
asciiMap.add("i", "ｉ");
asciiMap.add("j", "ｊ");
asciiMap.add("k", "ｋ");
asciiMap.add("l", "ｌ");
asciiMap.add("m", "ｍ");
asciiMap.add("n", "ｎ");
asciiMap.add("o", "ｏ");
asciiMap.add("p", "ｐ");
asciiMap.add("q", "ｑ");
asciiMap.add("r", "ｒ");
asciiMap.add("s", "ｓ");
asciiMap.add("t", "ｔ");
asciiMap.add("u", "ｕ");
asciiMap.add("v", "ｖ");
asciiMap.add("w", "ｗ");
asciiMap.add("x", "ｘ");
asciiMap.add("y", "ｙ");
asciiMap.add("z", "ｚ");
asciiMap.add("{", "｛");
asciiMap.add("|", "｜");
asciiMap.add("}", "｝");
asciiMap.add("~", "〜");


// 全角-半角 マッピング (カタカナ)
var kanaMap = new ConversionMap();

kanaMap.add("。", "｡");
kanaMap.add("「", "｢");
kanaMap.add("」", "｣");
kanaMap.add("、", "､");
kanaMap.add("・", "･");
kanaMap.add("ヲ", "ｦ");

kanaMap.add("ァ", "ｧ");
kanaMap.add("ィ", "ｨ");
kanaMap.add("ゥ", "ｩ");
kanaMap.add("ェ", "ｪ");
kanaMap.add("ォ", "ｫ");

kanaMap.add("ャ", "ｬ");
kanaMap.add("ュ", "ｭ");
kanaMap.add("ョ", "ｮ");

kanaMap.add("ッ", "ｯ");

kanaMap.add("ー", "ｰ");

kanaMap.add("ア", "ｱ");
kanaMap.add("イ", "ｲ");
kanaMap.add("ウ", "ｳ");
kanaMap.add("エ", "ｴ");
kanaMap.add("オ", "ｵ");

kanaMap.add("カ", "ｶ");
kanaMap.add("キ", "ｷ");
kanaMap.add("ク", "ｸ");
kanaMap.add("ケ", "ｹ");
kanaMap.add("コ", "ｺ");

kanaMap.add("ガ", "ｶﾞ");
kanaMap.add("ギ", "ｷﾞ");
kanaMap.add("グ", "ｸﾞ");
kanaMap.add("ゲ", "ｹﾞ");
kanaMap.add("ゴ", "ｺﾞ");

kanaMap.add("サ", "ｻ");
kanaMap.add("シ", "ｼ");
kanaMap.add("ス", "ｽ");
kanaMap.add("セ", "ｾ");
kanaMap.add("ソ", "ｿ");

kanaMap.add("ザ", "ｻﾞ");
kanaMap.add("ジ", "ｼﾞ");
kanaMap.add("ズ", "ｽﾞ");
kanaMap.add("ゼ", "ｾﾞ");
kanaMap.add("ゾ", "ｿﾞ");

kanaMap.add("タ", "ﾀ");
kanaMap.add("チ", "ﾁ");
kanaMap.add("ツ", "ﾂ");
kanaMap.add("テ", "ﾃ");
kanaMap.add("ト", "ﾄ");

kanaMap.add("ダ", "ﾀﾞ");
kanaMap.add("ヂ", "ﾁﾞ");
kanaMap.add("ヅ", "ﾂﾞ");
kanaMap.add("デ", "ﾃﾞ");
kanaMap.add("ド", "ﾄﾞ");

kanaMap.add("ナ", "ﾅ");
kanaMap.add("ニ", "ﾆ");
kanaMap.add("ヌ", "ﾇ");
kanaMap.add("ネ", "ﾈ");
kanaMap.add("ノ", "ﾉ");

kanaMap.add("ハ", "ﾊ");
kanaMap.add("ヒ", "ﾋ");
kanaMap.add("フ", "ﾌ");
kanaMap.add("ヘ", "ﾍ");
kanaMap.add("ホ", "ﾎ");

kanaMap.add("バ", "ﾊﾞ");
kanaMap.add("ビ", "ﾋﾞ");
kanaMap.add("ブ", "ﾌﾞ");
kanaMap.add("ベ", "ﾍﾞ");
kanaMap.add("ボ", "ﾎﾞ");

kanaMap.add("パ", "ﾊﾟ");
kanaMap.add("ピ", "ﾋﾟ");
kanaMap.add("プ", "ﾌﾟ");
kanaMap.add("ペ", "ﾍﾟ");
kanaMap.add("ポ", "ﾎﾟ");

kanaMap.add("マ", "ﾏ");
kanaMap.add("ミ", "ﾐ");
kanaMap.add("ム", "ﾑ");
kanaMap.add("メ", "ﾒ");
kanaMap.add("モ", "ﾓ");

kanaMap.add("ヤ", "ﾔ");
kanaMap.add("ユ", "ﾕ");
kanaMap.add("ヨ", "ﾖ");

kanaMap.add("ラ", "ﾗ");
kanaMap.add("リ", "ﾘ");
kanaMap.add("ル", "ﾙ");
kanaMap.add("レ", "ﾚ");
kanaMap.add("ロ", "ﾛ");

kanaMap.add("ワ", "ﾜ");
kanaMap.add("ン", "ﾝ");

kanaMap.add("ヴ", "ｳﾞ");


kanaMap.add("゛", "ﾞ");
kanaMap.add("゜", "ﾟ");

kanaMap.add("ヰ", "ｲ");
kanaMap.add("ヱ", "ｴ");
kanaMap.add("ヮ", "ﾜ");
kanaMap.add("ヵ", "ｶ");
kanaMap.add("ヶ", "ｹ");

/* 全角→半角　Ascii変換 */    
function UxToNarrowEizi(value){
	return asciiMap.convert(value, true);
}
/* 半角→全角　Ascii変換 */   
function UxToWideEizi(value){
	return asciiMap.convert(value, false);
}
/* 全角→半角　カナ変換 */   
function UxToNarrowKana(value){
	return kanaMap.convert(value, false);
}
/* 半角→全角　カナ変換 */   
function UxToWideKana(value){
	return kanaMap.convert(value, true);
}

/* 全角→半角　変換 */   
function UxToNarrow(value){
	var Result = UxToNarrowEizi(value);
	return UxToNarrowKana(Result);
}

/* 半角→全角　変換 */   
function UxToWide(value){
	var Result = UxToWideEizi(value);
	return UxToWideKana(Result);
}


// 桁数チェック
function ByteChk(dat){
	var lt = 0;

	for(i = 0;i < dat.length;i++){
		d = dat.charAt(i);
		d1 = escape(d);
		if(d1.length < 4){
			lt += 1;
		}else{
			if(d1.substr(0,2) == "%u"){
				if((d1 >= "%uFF61" && d1 <= "%uFF9F")){
					lt += 1;
				} else {
					lt += 2;
				}
			} else {
				lt += 2;
			}
		}
	}
	return lt;
}

//Acii文字以外は削除
function UxAsciiGaiDel(dat){
	var str = new String();
	for(i = 0;i < dat.length;i++){
		d = dat.charAt(i);
		d1 = escape(d);
		if(d1.length < 4){
			str = str + d;
		} 
	}
	return str;
}

//対象値をカンマ編集して返す
//	dat:	対象値
function UxComma_edit(dat) {
	var tmp = dat + "";
	var wrk = "";
	var mns = "";

	if (tmp.charAt(0) == "-") {
		mns = "-";
		tmp = tmp.substr(1, tmp.length);
	}

	for (i=tmp.length-1, j=0; i>=0; i--) {
		if (++j > 3) {
			j = 1;
			wrk = wrk + ",";
		}
		wrk = wrk + tmp.charAt(i);
	}

	tmp = "";
	for (i=wrk.length-1; i>=0; i--) {
		tmp = tmp + wrk.charAt(i);
	}
	tmp = mns + tmp;

	return tmp;
}


