// ------------------------------------------
//
// com.js
// 
// システム　　　：ＢＯＯＮシステム
// 説明　　　　　：共通関数
// 備考　　　　　：
// 作成　　　　　：2007/06/30　高部哲児
// 更新履歴　　　：
//
// Copyright (C) 2007 Gingakobo Co.,Ltd. AllRightsReserved.
// 
// ------------------------------------------


function mySubmit(mode)
{
//	document.myForm.mode.value = mode;
	document.getElementById("myForm").mode.value= mode;
	document.forms["myForm"].submit();
}


function confirmDelete()
{
	ret = confirm("削除します\nよろしいですか？");
	if (!ret)
		return;

}
//
//画面上でEnterキーが押されても
//SUBMITされない
//
function prohibitEnter(){
  //ENTERによるイベント発火を防ぐ

	if(window.event.keyCode==13){
		return false;
	}
}
// 入力ユーティリティ 機能追加スクリプト
//
// ・数字入力チェック
// validateDigit()
//
// ・電話番号入力チェック
// validateTelephone()
//
// ・郵便番号入力チェック
// validateZipcode()
//
// ・メールアドレス入力チェック
// validateMailaddress()
//
// ・金額入力チェック
// validateMoney()
//
// ・営業店コード入力チェック
// validateOfficeCode()
//
// ・半角文字入力チェック
// validateHankaku()
//
// ・入力文字長チェック
// validateLength()
//
// ・文字列長調整
// adjustString()
//
// ・カンマ編集
// editComma()
//
// ・カンマ除去
// removeComma()

function validateDigit(src)
{
	if (src.value) {
		// 文字種チェック(数字のみ有効)
		work = src.value.match(/[^0-9]/g);
		if (work) {
			alert("数字以外は入力できません");
			src.focus();
			return false;
		}
	}

	return true;
}

function validateTelephone(src)
{
	if (src.value) {
		// 文字種チェック(数字、ハイフンのみ有効)
		work = src.value.match(/[^0-9\-]/g);
		if (work) {
			alert("数字とハイフン以外の文字は入力できません");
			src.focus();
			return false;
		}

		// 文字列長チェック(数字４桁以上１１桁以内)
		work = src.value.replace(/-/g, "");
		if (work.length < 4 || work.length > 11) {
			alert("正しい桁数の電話番号を入力して下さい");
			src.focus();
			return false;
		}
	}

	return true;
}

function validateZipcode(src)
{
	if (src.value) {
		// 文字種チェック(数字、ハイフンのみ有効)
		work = src.value.match(/[^0-9\-]/g);
		if (work) {
			alert("数字とハイフン以外の文字は入力できません");
			src.focus();
			return false;
		}

		// 形式チェック
		pattern = /^[0-9]{3}(-?[0-9]{4})?$/;
		if (!pattern.test(src.value)) {
			alert("郵便番号を正しい形式で入力して下さい");
			src.focus();
			return false;
		}
	}

	return true;
}

function validateMailaddress(src)
{
	if (src.value) {
		// 文字種チェック(英数字、＠マーク、アンダスコア、ドット、ハイフンのみ有効)
		work = src.value.match(/[^\w@\.\-]/g);
		if (work) {
			alert("許可されていない文字の入力はできません");
			src.focus();
			return false;
		}

		// 形式チェック
		pattern = /^\w+([\.\-]?\w+)*@\w+([\.\-]?\w+)*(\.\w{2,})+$/;
		if (!pattern.test(src.value)) {
			alert("メールアドレスを正しい形式で入力して下さい");
			src.focus();
			return false;
		}
	}

	return true;
}

function validateMoney(src, keta)
{
	if (src.value) {
		// 文字種チェック(数字、カンマのみ有効)
		work = src.value.match(/[^0-9,]/g);
		if (work) {
			alert("数字とカンマ以外の文字は入力できません");
			src.focus();
			return false;
		}

		// 文字列長チェック
		work = src.value.replace(/,/g, "");
		if (work.length > keta) {
			alert(keta + "桁以内の数字を入力して下さい");
			src.focus();
			return false;
		}
	}

	return true;
}



function validateHankaku(src)
{
	if (src.value) {
		// 文字種チェック(半角文字のみ有効)
		for (i = 0; i < src.value.length; ++i) {
			code = src.value.charCodeAt(i);
			if (code >= 256 && (code < 0xff61 || code > 0xff9f)) {
				alert("半角以外の文字は入力できません");
				src.focus();
				return false;
			}
		}
	}

	return true;
}

function validateHanZenMix(src)
{

	if (src.value) {
		// 文字種チェック(半角文字のみ、全角文字のみ有効)
		han = false;
		zen = false;
		for (i = 0; i < src.value.length; ++i) {
			code = src.value.charCodeAt(i);
			if (code < 256 || (code >= 0xff61 && code <= 0xff9f)) {	// 半角文字
				han = true;
			} else {												// 全角文字
				zen = true;
			}
			if (han && zen)
				break;
		}
		if (han && zen) {
			alert("半角全角の混在入力はできません");
			src.focus();
			return false;
		}
	}

	return true;
}

function validateLength(src, blen)
{
	len = 0;

	if (src.value) {
		for (i = 0; i < src.value.length; ++i) {
			code = src.value.charCodeAt(i);

			// byteサイズを計算
			if (code < 256 || (code >= 0xff61 && code <= 0xff9f))	// 半角文字
				len = len + 1;
			else													// 全角文字
				len = len + 2;
			if (len > blen) {
				alert("全角" + (blen / 2) + "(半角" + blen + ")文字以内で入力して下さい");
				src.focus();
				return false;
			}
		}
	}

	return true;
}

function adjustString(src, blen)
{
	work = "";
	worklen = 0;

	if (src.value) {
		for (i = 0; i < src.value.length; ++i) {
			code = src.value.charCodeAt(i);

			// 調整サイズを超える場合、残りの文字列は破棄
			if (code < 256 || (code >= 0xff61 && code <= 0xff9f))	// 半角文字
				worklen = worklen + 1;
			else													// 全角文字
				worklen = worklen + 2;
			if (worklen > blen)
				break;

			work = work.concat(src.value.charAt(i));
		}
	}

	return work;
}

function editComma(src)
{
	if (src.value) {
		// カンマ編集
		work = src.value.replace(/,/g, "");
		work = work.replace(/^0+/, "");
		len = work.length;
		work2 = "";
		for (i = len - 1; i >= 0; i--) {
			work2 = work.charAt(i) + work2;
			if ((((len - i) % 3) == 0) && (i != 0))
				work2 = ',' + work2;
		}
		if (work2.length == 0)
			work2 = "0";

		return work2;
	}

	return "0";
}

function removeComma(src)
{
	if (src.value) {
		// 文字種チェック(数字、カンマのみ有効)
		work = src.value.match(/[^0-9,]/g);
		if (work)
			return src.value;

		// カンマ除去
		work = src.value.replace(/,/g, "");
		return work;
	}

	return "0";
}


//---------------------------------------------------------------------
// * 機　能： 入力された値が日付でYYYY/MM/DD形式になっているか調べる
// * 引　数： datestr　入力された値
// * 戻り値： 正：true　不正：false
//---------------------------------------------------------------------
function ckDate(datestr) {
  // 正規表現による書式チェック
     if(!datestr.match(/^\d{4}\/\d{2}\/\d{2}$/)){
         return false;
     }
     var vYear = datestr.substr(0, 4) - 0;
     var vMonth = datestr.substr(5, 2) - 1; // Javascriptは、0-11で表現
     var vDay = datestr.substr(8, 2) - 0;
     // 月,日の妥当性チェック
     if(vMonth >= 0 && vMonth <= 11 && vDay >= 1 && vDay <= 31){
        var vDt = new Date(vYear, vMonth, vDay);
         if(isNaN(vDt)){
             return false;
         }else if(vDt.getFullYear() == vYear && vDt.getMonth() == vMonth && vDt.getDate() == vDay){
             return true;
         }else{
             return false;
         }
     }else{
         return false;
     }
}

function focusColor(i){
	i.style.borderColor='#7F9DB9';
	i.style.backgroundColor='#FFFFFF';
}
function blurColor(i){
	i.style.borderColor='#CCCCCC';
	i.style.backgroundColor='#F3F3F3';
}

//---------------------------------------------------------
// 全角・半角変換 機能追加スクリプト
//
// 2005/2/26 Kazuhiko Arase
//
// String に、以下のメソッドを拡張します。
//
// ・半角Ascii変換
// toHankakuAscii()
//
// ・全角Ascii変換
// toZenkakuAscii()
//
// ・半角カナ変換
// toHankakuKana()
//
// ・全角カナ変換
// toZenkakuKana()
//
// ・半角変換
// toHankaku()
//
// ・全角変換
// toZenkaku()
//
// ・標準変換(半角Ascii, 全角カナ)
// toNormal()
//

function InstallZenHanConversion() {

    function ConversionMap() {
        this.map1 = {};
        this.map2 = {};
    }

    ConversionMap.prototype = {

        add : function(s1, s2) {

            if (!this.map1[s1]) {
                this.map1[s1] = s2;
            }

            if (!this.map2[s2]) {
                this.map2[s2] = s1;
            }
        },

        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("\"", "zW");
    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("`", "zV");
    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("ヶ", "ｹ");



    String.prototype.toHankakuAscii = function() {
        return asciiMap.convert(this, true);
    }

    String.prototype.toZenkakuAscii = function() {
        return asciiMap.convert(this, false);
    }

    String.prototype.toHankakuKana = function() {
        return kanaMap.convert(this, false);
    }

    String.prototype.toZenkakuKana = function() {
        return kanaMap.convert(this, true);
    }

    String.prototype.toHankaku = function() {
        return this.toHankakuKana().toHankakuAscii();
    }

    String.prototype.toZenkaku = function() {
        return this.toZenkakuKana().toZenkakuAscii();
    }

    String.prototype.toNormal = function() {
        return this.toZenkakuKana().toHankakuAscii();
    }
}

// 機能インストール
InstallZenHanConversion();

