﻿/*******************************************************************************
'システム名　　：学情ナビ
'サブシステム名：共通
'クラス名　　　：サンプル JavaScript
'クラスID　　　：common.js
'作成日　　　　：2007/03/07
'作成者　　　　：JAST
'
'変更日　　　　：
'変更者　　　　：
'変更内容　　　：
'*******************************************************************************/

/* パラメータ受け渡し用オブジェクト */
var paramList = null;
/* サブウィンドウ名 */
var subWindow = null;
/* すべてのサブウィンドウ名リスト */
var subWindowList = new Array();
/* 削除対象 サブウィンドウ名リスト */
var subWindowListForDel = new Array();

// ------------------------------------------------------------
//    サブウィンドウ OPEN関連
// ------------------------------------------------------------

/**
 * サブウィンドウを開く
 *
 * @param uri		表示先アドレス
 * @param width		サブウィンドウの幅
 * @param height	サブウィンドウの高さ
 * @param param		親ウィンドウから子ウィンドウに渡すパラメータ(単数、もしくは複数)
 */
function openSubWindow() {

	if(openSubWindow.arguments.length < 3   || 
		isBlank(openSubWindow.arguments[1]) || 
		isBlank(openSubWindow.arguments[2])) {
		return;
	}

	var uri = openSubWindow.arguments[0];
	var width = openSubWindow.arguments[1];
	var height = openSubWindow.arguments[2];
    var constOption = true;

	paramList = openSubWindow.arguments[3];	

	makeWindow(uri, 'subWindow', width, height, constOption, true);
	subWindow.focus();
	
}

/**
 * サブウィンドウを開く（Window名指定）
 *
 * @param windowName	Window名
 * @param uri		    表示先アドレス
 * @param width		    サブウィンドウの幅
 * @param height	    サブウィンドウの高さ
 * @param resizable	    リサイズ可否（デフォルト No）
 * @param param		    親ウィンドウから子ウィンドウに渡すパラメータ(単数、もしくは複数)
 */
function openSubWindowByName() {

	if(openSubWindowByName.arguments.length < 4   || 
		isBlank(openSubWindowByName.arguments[2]) || 
		isBlank(openSubWindowByName.arguments[3])) {
		return;
	}

	var name = openSubWindowByName.arguments[0];
	var uri = openSubWindowByName.arguments[1];
	var width = openSubWindowByName.arguments[2];
	var height = openSubWindowByName.arguments[3];
    var constOption = true

	paramList = openSubWindowByName.arguments[4];	

	makeWindow(uri, name, width, height, constOption, true);
	subWindowList.push(subWindow);
	//subWindow.focus();
}

/**
 * サブウィンドウを開く（Window名指定、Windowオプション指定あり）
 *
 * @param windowName	Window名
 * @param uri		    表示先アドレス
 * @param option		WINDOWオプション指定
 * @param param		    親ウィンドウから子ウィンドウに渡すパラメータ(単数、もしくは複数)
 */
function openSubOptionWindowByName() {

	if(openSubOptionWindowByName.arguments.length < 3) {
		return false;
	}

	var name = openSubOptionWindowByName.arguments[0];
	var uri = openSubOptionWindowByName.arguments[1];
    var constOption = openSubOptionWindowByName.arguments[2];

	paramList = openSubOptionWindowByName.arguments[3];	

	makeWindowOption(uri, name, constOption);
	subWindowList.push(subWindow);
	subWindow.focus();
}

/**
 * サブウィンドウを開く（Window名指定、Windowオプション指定なし）
 *
 * @param windowName	Window名
 * @param uri		    表示先アドレス
 * @param width		    サブウィンドウの幅
 * @param height	    サブウィンドウの高さ
 * @param param		    親ウィンドウから子ウィンドウに渡すパラメータ(単数、もしくは複数)
 */
function openSubNoOptionWindowByName() {

	if(openSubNoOptionWindowByName.arguments.length < 4   || 
		isBlank(openSubNoOptionWindowByName.arguments[2]) || 
		isBlank(openSubNoOptionWindowByName.arguments[3])) {
		return false;
	}

	var name = openSubNoOptionWindowByName.arguments[0];
	var uri = openSubNoOptionWindowByName.arguments[1];
	var width = openSubNoOptionWindowByName.arguments[2];
	var height = openSubNoOptionWindowByName.arguments[3];
	var subOpt = true;
	if(openSubNoOptionWindowByName.arguments.length > 4) {
	    subOpt = openSubNoOptionWindowByName.arguments[4];
	} 
    var constOption = false;

	paramList = openSubNoOptionWindowByName.arguments[5];	

	makeWindow(uri, name, width, height, constOption, subOpt);
	subWindowList.push(subWindow);
	subWindow.focus();
}


/**
 * サブウィンドウを開く（Window名指定）
 *    親画面が遷移した際に、閉じる対象としてサブ画面を開く場合に利用
 *
 * @param windowName	表示先アドレス
 * @param uri		    表示先アドレス
 * @param width		    サブウィンドウの幅
 * @param height	    サブウィンドウの高さ
 * @param resizable	    リサイズ可否（デフォルト No）
 * @param param		    親ウィンドウから子ウィンドウに渡すパラメータ(単数、もしくは複数)
 */
function openSubWindowByNameForDel() {

	if(openSubWindowByNameForDel.arguments.length < 4   || 
		isBlank(openSubWindowByNameForDel.arguments[2]) || 
		isBlank(openSubWindowByNameForDel.arguments[3])) {
		return;
	}

	var name = openSubWindowByNameForDel.arguments[0];
	var uri = openSubWindowByNameForDel.arguments[1];
	var width = openSubWindowByNameForDel.arguments[2];
	var height = openSubWindowByNameForDel.arguments[3];
    var constOption = true

	paramList = openSubWindowByNameForDel.arguments[4];	

	makeWindow(uri, name, width, height, constOption, true);
	subWindowList.push(subWindow);
	subWindowListForDel.push(subWindow);
	//subWindow.focus();
}

/**
 * サブウィンドウを開く（Window名指定、Windowオプション指定あり）
 *    親画面が遷移した際に、閉じる対象としてサブ画面を開く場合に利用
 *
 * @param windowName	WINDOW名
 * @param uri		    表示先アドレス
 * @param param		    親ウィンドウから子ウィンドウに渡すパラメータ(単数、もしくは複数)
 */
function openSubOptionWindowByNameForDel() {

	if(openSubOptionWindowByNameForDel.arguments.length < 3 ) {
		return;
	}

	var name = openSubOptionWindowByNameForDel.arguments[0];
	var uri = openSubOptionWindowByNameForDel.arguments[1];
    var constOption = openSubOptionWindowByNameForDel.arguments[2];

	paramList = openSubOptionWindowByNameForDel.arguments[3];
	
	// paramListがページ内リンクのオプションであった場合
	if (paramList != undefined) {
	    if (paramList.indexOf('#') != -1) {
	        makeWindowOptionPglnk(uri, name, constOption, paramList);
	    } else {
	        makeWindowOption(uri, name, constOption);
	    }
	} else {
	    makeWindowOption(uri, name, constOption);
	}

	//makeWindowOption(uri, name, constOption);
	subWindowList.push(subWindow);
	subWindowListForDel.push(subWindow);
	subWindow.focus();
}

/**
 * サブウィンドウを開く（Window名指定、Windowオプション指定なし）
 *    親画面が遷移した際に、閉じる対象としてサブ画面を開く場合に利用
 *
 * @param windowName	表示先アドレス
 * @param uri		    表示先アドレス
 * @param width		    サブウィンドウの幅
 * @param height	    サブウィンドウの高さ
 * @param resizable	    リサイズ可否（デフォルト No）
 * @param param		    親ウィンドウから子ウィンドウに渡すパラメータ(単数、もしくは複数)
 */
function openSubNoOptionWindowByNameForDel() {

	if(openSubNoOptionWindowByNameForDel.arguments.length < 4   || 
		isBlank(openSubNoOptionWindowByNameForDel.arguments[2]) || 
		isBlank(openSubNoOptionWindowByNameForDel.arguments[3])) {
		return;
	}

	var name = openSubNoOptionWindowByNameForDel.arguments[0];
	var uri = openSubNoOptionWindowByNameForDel.arguments[1];
	var width = openSubNoOptionWindowByNameForDel.arguments[2];
	var height = openSubNoOptionWindowByNameForDel.arguments[3];
    var constOption = false;

	paramList = openSubNoOptionWindowByNameForDel.arguments[4];
	
	makeWindow(uri, name, width, height, constOption, true);
	subWindowList.push(subWindow);
	subWindowListForDel.push(subWindow);
	subWindow.focus();
}

/**
 * サブウィンドウを開く（内部的に利用）
 *
 * @param uri			表示先アドレス
 * @param windowName	サブウィンドウのウィンドウ名を指定します。
 * @param width			サブウィンドウの幅を指定します
 * @param height		サブウィンドウの高さを指定します
 * @param constOption	既定オプション指定有無
 */
function makeWindow(uri, windowName, width, height, constOption, subOpt) {

	var option;
    if (constOption == true) {
    	option ="width="+ width +", height="+ height + ", location=no, resizable=no, scrollbars=yes, status=yes, toolbar=no, menubar=no, top=0, left=0";
    } else {
    	option ="width="+ width +", height="+ height + ", location=yes, resizable=yes, scrollbars=yes, status=yes, toolbar=yes, menubar=yes";
    }
    
    if (subOpt == true) {
        uri = setWinType(uri);
    }
    
	subWindow = window.open(uri, windowName, option);
}

/**
 * サブウィンドウを開く（内部的に利用）
 *
 * @param uri			表示先アドレス
 * @param windowName	サブウィンドウのウィンドウ名を指定します。
 * @param constOption	オプション指定
 */
function makeWindowOption(uri, windowName, constOption) {

    uri = setWinType(uri);
	subWindow = window.open(uri, windowName, constOption);
}

/**
 * サブウィンドウを開く ページ内リンクを利用（内部的に利用）
 *
 * @param uri			表示先アドレス
 * @param windowName	サブウィンドウのウィンドウ名を指定します。
 * @param constOption	オプション指定
 */
function makeWindowOptionPglnk(uri, windowName, constOption, pgLnk) {

    uri = setWinTypePgLnk(uri, pgLnk);
	subWindow = window.open(uri, windowName, constOption);
}


/**
 * サブウィンドウを開く　(モーダル）
 *
 * @param uri		表示先アドレス
 * @param width		サブウィンドウの幅
 * @param height	サブウィンドウの高さ
 * @param param		親ウィンドウから子ウィンドウに渡すパラメータ(単数、もしくは複数)
 */
function openSubModalWindow() {

	if(openSubModalWindow.arguments.length < 3   || 
		isBlank(openSubModalWindow.arguments[1]) || 
		isBlank(openSubModalWindow.arguments[2])) {
		return;
	}

	var uri = openSubModalWindow.arguments[0];
	var width = openSubModalWindow.arguments[1];
	var height = openSubModalWindow.arguments[2];

	paramList = openSubModalWindow.arguments[3];	

	return makeModalWindow(uri, 'subWindow', width, height);
}


/**
 * サブウィンドウを開く　(モーダル）
 *
 * @param name		Window名
 * @param uri		表示先アドレス
 * @param width		サブウィンドウの幅
 * @param height	サブウィンドウの高さ
 * @param param		親ウィンドウから子ウィンドウに渡すパラメータ(単数、もしくは複数)
 */
function openSubModalWindowByName() {

	if(openSubModalWindowByName.arguments.length < 4   || 
		isBlank(openSubModalWindowByName.arguments[2]) || 
		isBlank(openSubModalWindowByName.arguments[3])) {
		return;
	}

	var name = openSubModalWindowByName.arguments[0];
	var uri = openSubModalWindowByName.arguments[1];
	var width = openSubModalWindowByName.arguments[2];
	var height = openSubModalWindowByName.arguments[3];

	paramList = openSubModalWindowByName.arguments[4];	

	return makeModalWindow(uri, name, width, height);
}

/**
 * サブウィンドウを開く　(モーダル）
 *
 * @param uri			表示先アドレス
 * @param windowName	サブウィンドウのウィンドウ名を指定します。
 * @param width			サブウィンドウの幅を指定します
 * @param height		サブウィンドウの高さを指定します
 */
function makeModalWindow(uri, windowName, width, height) {

	var option;
	option ="dialogwidth="+ width +"px; dialogheight="+ height +"px; scrollbars=no; status=yes; toolbar=no; menubar=no; top=0; left=0";
    uri = setWinType(uri);
	return window.showModalDialog(uri, windowName, option);
}

/**
 * サブ画面のURLに画面タイプを引数として設定する。
 *
 */
function setWinType(uri) {
   var retUrl;
   if (uri.indexOf('?') == -1) {
      retUrl = uri + "?WINTYPE='SUB'";
   } else {
      retUrl = uri + "&WINTYPE='SUB'";      
   }
   return retUrl;
}

/**
 * サブ画面のURLに画面タイプを引数として設定する。（ページ内リンク付き）
 *
 */
function setWinTypePgLnk(uri, pgLnk) {
   var retUrl;
   if (uri.indexOf('?') == -1) {
      retUrl = uri + "?WINTYPE='SUB'" + pgLnk;
   } else {
      retUrl = uri + "&WINTYPE='SUB'" + pgLnk;
   }
   return retUrl;
}

/**
 * サブ画面でID・パスワード問合せTOPを表示させる。
 *
 */
function goSysConfirm() {
	// 画面サイズの強制指定 
//	var iwidth=800;
//	var iheight=750;
	window.resizeTo(800,750);
	//画面サイズが大きくなったので、別ウィンドウで表示させる。
	var win = window.open("../reminder/rem_index.aspx","_self","scrollbars=yes,");
}
//-----------------------------------------------------------------------
// <summary>
// 企業情報画面を別窓で開く
// </summary>
// <returns>企業情報画面</returns>
// ----------------------------------------------------------------------
function CompanyPrm(id,url,comcd,param){

   if (comcd == undefined) {
     openSubOptionWindowByNameForDel(id, url , param);
   } else {
        openSubOptionWindowByNameForDel(id, url + '?p1=' + comcd , param);
    }

}
//-----------------------------------------------------------------------
// <summary>
// ブックマーク登録画面を別窓で開く
// </summary>
// <returns>ブックマーク登録画面</returns>
// ----------------------------------------------------------------------
function BookMark(id,url,param){

//企業情報と同じ大きさのウィンドウ
    openSubOptionWindowByNameForDel(id, url,param);
//    openSubOptionWindowByNameForDel(id, url,'width=800,height=300,scrollbars=yes,resizable=no,toolbar=no,left=1,top=1');

}

// ------------------------------------------------------------
//    サブウィンドウ CLOSE関連
// ------------------------------------------------------------

/**
 * サブウィンドウ（自分）を閉じます。
 * 
 * 
 */
function closeWindowBySelf() {
    window.close();
}

/**
 * 以下の場合に子ウィンドウを閉じる(閉じる対象すべて）
 * ・親ウィンドウが閉じられた場合
 * ・親ウィンドウが画面遷移した場合
 */
function closeSubWindow(){
    for(var i = 0; i < subWindowListForDel.length; i++) {
        if (subWindowListForDel[i] != null && !subWindowListForDel[i].closed) {
            try {
                subWindowListForDel[i].close()
              } catch(e){
              }
        }
    }
    
    if (opener) {
        try {
	        opener.subWindow = null;
	        opener.focus();
    //		window.close();
	    } catch(e) {
	    }
	 }       
}

/**
 * 以下の場合に子ウィンドウを閉じる(Window名指定）
 * ・親ウィンドウが閉じられた場合
 * ・親ウィンドウが画面遷移した場合
 */
function closeSubWindowByName(){
	if(isBlank(closeSubWindowByName.arguments[0])) {
		return;
	}

	var subWinName = closeSubWindowByName.arguments[0];

    for(var i = 0; i < subWindowList.length; i++) {
//        if (subWindowList[i].name == subWinName) {
//            if (subWindowList[i] != null && !subWindowList[i].closed) {
//                try {
//                    subWindowList[i].close()
//	              } catch(e){
//	              }
//            }
//        }
    }
    
	if (opener) {
		opener.subWindow = null;
		opener.focus();
//		window.close();
	}
}

// ------------------------------------------------------------
//    親画面への情報引継ぎ関連
// ------------------------------------------------------------

/**
 * (子窓用) 親窓に値をセットしてサブウィンドウ（自分）を閉じます。
 * 
 * @param enum 戻り値
 */
function closeWindow() {
 if(opener) {
  for(var i = 0; i < opener.paramList.length && i < closeWindow.arguments.length; i++) {
    var he = opener.document.getElementById(opener.paramList[i]);
    if (he.tagName == 'INPUT') {
     he.value = closeWindow.arguments[i].value;
    } else {
     he.innerHTML = closeWindow.arguments[i].value;
    }
  }
  opener.subWindow = null;
  opener.focus();
 }
 close();
}

/**
 * (子窓用) 親窓に値をセットしてサブウィンドウ（自分）を閉じます。
 * セットする値は、親画面の貼り付けるタグがINPUTであるか、それ以外か判定をします。
 * よって当メソッドのパラメータ(closeWindow2.arguments)は
 * opener.paramListに対応した[INPUT用変数,それ以外用変数]の組み合わせになります。
 * @param enum 戻り値
 */
function closeWindow2() {
 if(opener) {
  for(var i = 0; i < opener.paramList.length && i < (closeWindow2.arguments.length)/2; i++) {
    var he = opener.document.getElementById(opener.paramList[i]);
    if (he.tagName == 'INPUT') {
     he.value = closeWindow2.arguments[2*i].value;
    } else {
     he.innerHTML = closeWindow2.arguments[2*i+1].value;
    }
  }
  opener.subWindow = null;
  opener.focus();
 }
 close();
}

/**
 * モーダルウィンドウを閉じます。
 *  引数はひとつだけ可能。その値が親画面への戻り値になります。
 */
function closeModalWindow() {

    if ( closeModalWindow.arguments.length == 1 ) {
        window.returnValue = closeModalWindow.arguments[0];
    }

    window.self.close();
}

// ------------------------------------------------------------
//   CONFRIM関連
// ------------------------------------------------------------
/* 
 * 登録処理時の確認メッセージ
 */
function confirmIns(){
    return confirm('登録してもよろしいですか？');
}

/* 
 * 更新処理時の確認メッセージ
 */
function confirmUpd(){
    return confirm('更新してもよろしいですか？');
}

/* 
 * 削除処理時の確認メッセージ
 */
function confirmDel(){
    return confirm('削除してもよろしいですか？');
}

/*
 * 任意の確認メッセージ
 */
function confirmOption(msg) {
    return confirm(msg);
}

// ------------------------------------------------------------
//   ロード、アンロード 関連
// ------------------------------------------------------------

/* 
 * onloadイベント用（ダミー）
 */
function init(){
   
    sizeInit();

    errInit();
    
    subInit();
}

/* 
 * onunloadイベント用（ダミー）
 */
function terminate(){
	 
	 subTerminate();
}

/* 
 * onloadイベント用 SUB（ダミー）
 */
function sizeInit(){

	/*
	 * このfunctionはダミーです。
	 * onloadを使用する際には、各業務画面の
	 * functionをFWが動的に生成します（画面サイズ調整用）
	 */
}

/* 
 * onloadイベント用 SUB（ダミー）
 */
function errInit(){

	/*
	 * このfunctionはダミーです。
	 * onloadを使用する際には、各業務画面の
	 * functionをFWが動的に生成します（エラーメッセージ用）
	 */
}

/* 
 * onloadイベント用 SUB（ダミー）
 */
function subInit(){

	/*
	 * このfunctionはダミーです。
	 * onloadを使用する際には、各業務画面の
	 * functionを実装して使用します。
	 */
}

/* 
 * onunloadイベント用 SUB（ダミー）
 */
function subTerminate(){

	/*
	 * このfunctionはダミーです。
	 * onunloadを使用する際には、各業務画面の
	 * functionを実装して使用します。
	 */
}

// ------------------------------------------------------------
//   クライアント用入力チェック関連
// ------------------------------------------------------------
/**
 * 必須チェック
 * チェック対象エレメントが存在し、入力/選択されている場合、trueを返す
 * チェック対象エレメントが存在し、入力/選択されていない場合、falseを返す
 * ※チェック対象エレメントが存在しない場合、trueを返す
 * @param チェック対象エレメントの名前（部分一致指定可能）
 * @param 必須入力/選択エラー時のメッセージ
 * @return true:エラーなし false:エラーあり
 */
function RequiredCheck(targetname,msg) {

	// フォーム
	with (window.document.forms[0]) {

		// 対象項目名の正規表現（大小文字区別なし）
		var regEx = new RegExp(targetname, "i");
        var exists = false;

		limit = elements.length;
		for(i=0; i<limit; i++){

			// 対象項目以外はスキップ（部分一致）
			if (elements[i].name.search(regEx) == -1) {
				continue;
			}
            exists = true;

            //alert("name = " + elements[i].name);
            //alert("type = " + elements[i].type);
            //alert("checked = " + elements[i].checked);

			// 対象項目のタイプに合わせてチェック方法を変える
			switch (elements[i].type) {
				case "checkbox":
				case "radio":
					if (elements[i].checked) return true;
					break;
				case "text":
				case "textarea":
				case "password":
				case "file":
					if (elements[i].value != "") return true;
					break;
				case "select-one":
				case "select-multiple":
					if (elements[i].selectedIndex > -1) return true;
					break;
				default:
					break;
			}
		}
        // 対象が存在する、かつ、ここまで抜けてきた場合は必須エラーメッセージ表示
        if (exists) {
    		alert(msg);
    		return false;
        // 対象が存在しない場合、エラーなしを返す
        } else {
            return true;
        }
	}
}


/**
 * 必須チェック（innerHTML出力）
 * チェック対象エレメントが存在し、入力/選択されている場合、trueを返す
 * チェック対象エレメントが存在し、入力/選択されていない場合、falseを返す
 * ※チェック対象エレメントが存在しない場合、trueを返す
 * @param チェック対象エレメントの名前（部分一致指定可能）
 * @param 必須入力/選択エラー時のメッセージ
 * @return true:エラーなし false:エラーあり
 */
function RequiredCheckInnerHTML(targetname,msg) {

	// フォーム
	with (window.document.forms[0]) {

		// 対象項目名の正規表現（大小文字区別なし）
		var regEx = new RegExp(targetname, "i");
        var exists = false;

		limit = elements.length;
		for(i=0; i<limit; i++){

			// 対象項目以外はスキップ（部分一致）
			if (elements[i].name.search(regEx) == -1) {
				continue;
			}
            exists = true;

			// 対象項目のタイプに合わせてチェック方法を変える
			switch (elements[i].type) {
				case "checkbox":
				case "radio":
					if (elements[i].checked) return true;
					break;
				case "text":
				case "textarea":
				case "password":
				case "file":
					if (elements[i].value != "") return true;
					break;
				case "select-one":
				case "select-multiple":
					if (elements[i].selectedIndex > -1) return true;
					break;
				default:
					break;
			}
		}
        // 対象が存在する、かつ、ここまで抜けてきた場合は必須エラーメッセージ表示
        if (exists) {
            //<div id="innerErr">で指定された位置にメッセージを出力する
            innerErr.innerHTML = msg;
    		return false;
        // 対象が存在しない場合、エラーなしを返す
        } else {
            return true;
        }
	}
}

// ------------------------------------------------------------
//   その他 関連
// ------------------------------------------------------------

/* valueが以下の場合、trueを返す
 * ・lengthが"0"
 * ・全角、半角スペースのみ
 */
function isBlank(value){
	str = new String(value);

	if (str.length == 0) {
		return true;
	} else {
		for (i = 0; i < str.length; i++) {
			if (str.charAt(i) != " " && str.charAt(i) != "　") {
				return false;
			}
		}
	}
	return true;
}

/**
 * Enterキー防止処理
 *
 */
function EnterCheck() {
    try {
            if (document.all) {
                if(event.keyCode==13){  
                      if(window.event.srcElement.type.toUpperCase()!='SUBMIT' 
                            &&  window.event.srcElement.type.toUpperCase()!='TEXTAREA' 
                            &&  window.event.srcElement.type.toUpperCase()!='BUTTON' 
                            &&  window.event.srcElement.type.toUpperCase()!='IMAGE' 
                            &&  window.event.srcElement.tagName.toUpperCase()!='A'){ 
                            
                             return false;
                      }
                }
            } else {
                        if (e.keyCode==13){
                            if(e.target.type.toUpperCase() !='SUBMIT' && 
                               e.target.type.toUpperCase() !='TEXTAREA' &&
                               e.target.type.toUpperCase() !='BUTTON' &&
                               e.target.type.toUpperCase() !='IMAGE' &&
                               e.target.tagName.toUpperCase() !='A'){
                               return false;
                            }
                        }
            }
    } catch (e){
    }

}


//----------------------------------------------------------------------
// <summary>
// 日付計算
// </summary>
// ----------------------------------------------------------------------
/**
 * 年＆月により日を動的に作成
 *
 * @param yID			年コントロールID
 * @param mID	　　　　月コントロールID
 * @param dID			日コントロールID
 */
function setDaysSelectBox(yID,mID,dID,dVal) {

    var sYear = GetDropDownListValue(yID);
    var sMonth = GetDropDownListValue(mID);
   
    if (sYear == '' ) {
        return ;
     }
       
    if(sMonth == ''){
        return;
    }
  
    sYear = parseInt(sYear);
    //sMonth = parseInt(sMonth);

    var objDays = GetControl(dID).options;

    // クリア
    objDays.options.length = 0;

    // 日をセット
    objDays[objDays.length] = new Option('--', '0');

    // 28日までセット
    for (i=1; i <= 28; i++){
        if(i < 10){
            objDays[objDays.length] = new Option('0'+i, '0'+i);
        }else{
            objDays[objDays.length] = new Option( i, i );
        }
    }
    switch (sMonth) {

        // 2月
        case '02':
            // 閏年チェック
            if (sYear % 4 == 0){
    
    // 月によって処理を分岐
                if (sYear % 100 == 0 && sYear % 400 != 0){
                    break;
                }
                objDays[objDays.length] = new Option('29', '29');
            }
            break;
        // 4月 6月 9月 11月
        case '04':
        case '06':
        case '09':
        case '11':
            objDays[objDays.length] = new Option('29', '29');
            objDays[objDays.length] = new Option('30', '30');
            break;
        // 1月 3月 5月 7月 8月 10月 12月
        case '01':
        case '03':
        case '05':
        case '07':
        case '08':
        case '10':
        case '12':
            objDays[objDays.length] = new Option('29', '29');
            objDays[objDays.length] = new Option('30', '30');
            objDays[objDays.length] = new Option('31', '31');
            break;
        default:
            break;
    }
    
    if (dVal == undefined) {
        dval = '';
    }

    if(dVal != undefined){
        objDays.value = dVal;
    }
}

/*-------------------------------------------------------------*/
/*コントロールを探し出す
/*-------------------------------------------------------------*/
function GetControl(ID) {

    return window.self.document.getElementById(ID);

}

/*-------------------------------------------------------------*/
/*ドロップダウンリストの選択値を取得
/*-------------------------------------------------------------*/
function GetDropDownListValue(ID) {

    var drop = GetControl(ID);
    
    if (drop == null) {
        return '';
    } else {
        var idx = drop.selectedIndex;
        
        if (idx >= 0 ) {
            return drop.options[idx].value;
        } else {
            return '';
        }
    }
   
}

/*-------------------------------------------------------------*/
/*ドロップダウンリストの選択値を設定
/*-------------------------------------------------------------*/
function SetDropDownListValue(ID, val) {

    var drop = GetControl(ID);
    
    if (drop == null) {
        return;
    }
    
    if (drop.options.length <= 0 ) {
        return ;
    }
    
    for (i = 0; i < drop.options.length ; i++) {
        if ( val == drop.options[i].value ) {
            drop.selectedIndex = i;
            return;
        }
    }
    
}


/*
    チェックボックス　ON/OFF切り替え
*/
function changeCheckBoxOnOff(ctrlHID, value) {

    var cnt = window.self.document.all.tags('input').length;
      
    var ctrls = window.self.document.all.tags('input');
    
    for ( i = 0; i < cnt ; i++) {
    
        var ctrl = ctrls[i];

        if (ctrl.type == 'checkbox') {
           
            if ( ctrl.id.substring(0, ctrlHID.length) == ctrlHID ) {
            
                if ( value == 'ON') {
                
                    ctrl.checked = true;
                    
                } else {
                
                    ctrl.checked = false;
                    
                }
            }
        }
    }
    

}

/*
    地域選択時に都道府県選択を切り替え
*/
function changeCheckBoxPref(AreaID, ctrlHID) {

    var bFlg = GetControl(AreaID).checked;
    
    if ( bFlg ) {
    
        changeCheckBoxOnOff(ctrlHID, 'ON');
    
    } else {
    
        changeCheckBoxOnOff(ctrlHID, 'OFF');
    
    }

}

/*
    都道府県選択時に地域選択を切り替え
*/
function changeCheckBoxArea(PrefID, ctrlHID, chkBoxID) {

    var bFlg  = GetControl(PrefID).checked;
    
    // 地域チェックボックスのIDを算出
    var AreaID = ctrlHID + '_' + chkBoxID;
    
    if ( bFlg ) {
    
        // 同じ地域に所属する都道府県がすべてONになったら、地域もON
        var chkFlg = true;
        
        var cnt = window.self.document.all.tags('input').length;
          
        var ctrls = window.self.document.all.tags('input');
    
        for ( i = 0 ; i < cnt ; i++ ) {
        
            var ctrl = ctrls[i];

            if (ctrl.type == 'checkbox') {
               
                if ( ctrl.id.substring(0, ctrlHID.length) == ctrlHID ) {
                
                    if ( ctrl.id != AreaID && ! ctrl.checked ) {
                    
                        chkFlg = false;
                        
                    }
                }
            }
        
        }
        
        GetControl(AreaID).checked = chkFlg;
    
    } else {
    
        // 都道府県がOFFになったら、地域もOFF
        GetControl(AreaID).checked = false;
        
    }

}


/*-------------------------------------------------------------*/
/* ダブルクリック抑止設定
/*-------------------------------------------------------------*/
function send_check()
{
	if (window.document.readyState != null && window.document.readyState != 'complete'){
		//alert("ただいま処理中です。");
		return false;
	}else{
		return true;
	}
}

