<!--
/*
 * @(#)ChJCheckOutFiledCommon.js
 * USK  hiroshi_ueki
 * フィールドの判定スクリプトファイル【全６画面共通】
 * 
 * @author	Nihon Unisys Software Kaisha, Ltd.
 * @version	1.0 2000/12/05
 */

	/**
	 * 画面のフォームオブジェクト初期化関数
	 * @param form  フォームオブジェクト
	 */
	function initFormValue(form) {
		form.reset();
		setBukyokuComboValue(form,'1'); // 発注機関コンボボックス初期化	
		setBukyokuComboValue(form,'2'); 
		form.searchStart.focus();		// フォーカスを上部検索ボタンに設定
	}


	/**
	 * 文字列検索条件のクリア関数
	 * @param form  フォームオブジェクト
	 */
	function clearMojiretsuBox(form) {
		for(i = 0;i < form.Mojiretsu.length; i++) {	
			form.Mojiretsu[i].value = ""// セレクトボックス
		}
	}

	/**
	 * 地方整備局チェックボックスの判定関数（全て選択）
	 */
	function HachushaA(form) {
		var countHachusha = form.Hachusha.length;
		count = 0;
		for(i=0 ; i< countHachusha ;i++) {
		 if(form.Hachusha[i].checked)
		 	count++;
		}
		if (count==0) {
			form.HachushaAll.checked = false;
			for(i=0 ; i<countHachusha ;i++) {
				form.Hachusha[i].checked=true;
			}
		 }
		else {
			form.HachushaAll.checked = true;
			clearComboValue(form);
			for(i=0 ; i<countHachusha ;i++) {
				form.Hachusha[i].checked=false;
			}
		}
	}

	/**
	 * 地方整備局チェックボックスの判定関数（個別選択）
	 */
	function HachushaSelect(form) {
		var countHachusha = form.Hachusha.length;
		count = 0;
		for(i=0 ; i< countHachusha ;i++) {
		 if(form.Hachusha[i].checked)
		 	count++;
		}
		if(count == 0) {
			form.HachushaAll.checked=true;
			clearComboValue(form);
		}
		else if(count == 1) {
			form.HachushaAll.checked = false;
			setHachushaComboValue(form);
		}
		else {
			form.HachushaAll.checked = false;
			clearComboValue(form);
		}
	}	

//DL_拡張対応 2007/11 start
	/**
	 * 入札説明書等・検索条件指定画面の地方整備局チェックボックスの判定関数（全て選択）
	 */
	function SetsumeishoHachushaA(form) {
		var countHachusha = form.Hachusha.length;
		count = 0;
		for(i=0 ; i< countHachusha ;i++) {
		 if(form.Hachusha[i].checked)
		 	count++;
		}
		if (count==0) {
			form.HachushaAll.checked = false;
			for(i=0 ; i<countHachusha ;i++) {
				form.Hachusha[i].checked=true;
			}
		 }
		else {
			form.HachushaAll.checked = true;
			for(i=0 ; i<countHachusha ;i++) {
				form.Hachusha[i].checked=false;
			}
		}
	}
	
	/**
	 * 入札説明書等・検索条件指定画面の地方整備局チェックボックスの判定関数（個別選択）
	 */ 
	function SetsumeishoHachushaSelect(form) {
		var countHachusha = form.Hachusha.length;
		count = 0;
		for(i=0 ; i< countHachusha ;i++) {
		 if(form.Hachusha[i].checked) 
		 	count++;
		}
		if(count == 0) {
			form.HachushaAll.checked=true;
		}
		else {
			form.HachushaAll.checked = false;
		}	
	 }
//DL_拡張対応 2007/11 end 

	/**
	 * 入札・契約方式チェックボックスの判定関数（全て選択）
	 */
	function NyusatsuA(form) {
		var countNyusatsu = form.Nyusatsu.length;	// CheckBoxの数を計算
		count = 0;
		for(i=0 ; i< countNyusatsu ;i++) {
		 if(form.Nyusatsu[i].checked) 
		 	count++;
		}
		if (count==0) {
			form.NyusatsuAll.checked=false;
			for(i=0 ; i< countNyusatsu ;i++) {
				form.Nyusatsu[i].checked=true;
			}
		}
		else {
			form.NyusatsuAll.checked=true;
			for(i=0 ; i< countNyusatsu ;i++) {
				form.Nyusatsu[i].checked=false;
			}
		}
	}


	/**
	 * 入札・契約方式チェックボックスの判定関数（個別選択）
	 */
	function NyusatsuSelect(form) {
		var countNyusatsu = form.Nyusatsu.length;
		count = 0;
		for(i=0 ; i< countNyusatsu ;i++) {
		 if(form.Nyusatsu[i].checked) 
		 	count++;
		}
		if(count == 0) {
			form.NyusatsuAll.checked=true;
		}
		else {
			form.NyusatsuAll.checked = false;
		}	
	}

	/**
	 * 工種・業務区分チェックボックスの判定関数（全て選択）
	 */
	function KubunA(form) {
		var countKubun = form.Kubun.length;	// CheckBoxの数を計算
		count = 0;
		for(i=0 ; i< countKubun ;i++) {
		 if(form.Kubun[i].checked)
		 	count++;
		}
		if (count==0) {
			form.KubunAll.checked=false;
			for(i=0 ; i<countKubun ; i++) {
				form.Kubun[i].checked=true;
			}
		}
		else {
			form.KubunAll.checked=true;
			for(i=0 ; i< countKubun ;i++) {
				form.Kubun[i].checked=false;
			}
		}
	}

	/**
	 * 工種・業務区分チェックボックスの判定関数（個別選択）
	 */
	function KubunSelect(form) {
		var countKubun = form.Kubun.length;
		count = 0;
		for(i=0 ; i< countKubun ;i++) {
		 if(form.Kubun[i].checked)
		 	count++;
		}
		if(count == 0) {
			form.KubunAll.checked = true;
		}
		else {
			form.KubunAll.checked = false;
		}	
	}

	/**
	 * 入札予定チェックボックスの判定関数（全て選択）
	 */
	function YoteiA(form) {
		var countYotei = form.Yotei.length;	// CheckBoxの数を計算
		count = 0;
		for(i=0 ; i< countYotei ;i++) {
		 if(form.Yotei[i].checked)
		 	count++;
		}
		if(count==0) {
			form.YoteiAll.checked=false;
			for(i=0 ; i<countYotei ; i++) {
				form.Yotei[i].checked=true;
			}
		}
		else {
			form.YoteiAll.checked=true;
			for(i=0 ; i< countYotei ;i++) {
				form.Yotei[i].checked=false;
			}
		}
	}

	/**
	 * 入札予定チェックボックスの判定関数（個別選択）
	 */
	function YoteiSelect(form) {
		var countYotei = form.Yotei.length;
		count = 0;
		for(i=0 ; i< countYotei ;i++) {
		 if(form.Yotei[i].checked)
		 	count++;
		}
		if(count == 0) {
			form.YoteiAll.checked = true;
		}
		else {
			form.YoteiAll.checked = false;
		}	
	}


	/**
	 * 公開日のラジオボタン判定関数
	 * 入力された項目のラジオボタンをチェックし、その他の公開日エリアをクリアする
	 * @param form  フォームオブジェクト
	 * @param checkObj 判定するラジオボタンの配列番号
	 * @param thisObj  移動するラジオボタンの配列番号
	 * @param target 初期化する対象
	 * 				 1 :すべて
	 * 				 2 :何日以内のみ
	 * 				 3 :期間指定のみ
	 */
	function checkKokaiRadioBotton(form,checkObj,target) {
		/* 引数numberのラジオボタンがチェックされているか */
		if(! form.Kokai[checkObj].checked) {
			form.Kokai[checkObj].checked = true;
		}
		/* 初期化関数 */
		clearKokaiValue(form,target);
	}

	/**
	 * 公開日の何日以内テキストボックス判定関数
	 * 入力された項目の値が正の整数がチェックし、フォーカスを移動する
	 * @param form  フォームオブジェクト
	 */
	function checkKokaiLimit(form) {
		if((form.KokaiLimit.value == "" ) || ( ! isPositiveInt(form.KokaiLimit.value))){
			alert("正の整数（半角数字）を入力してください");
			form.KokaiLimit.focus();
			return false;
		}
		return true;
	}

	/**
	 * 公開日フィールドをチェックする関数
	 * 発注の見通し
	 * @param form  フォームオブジェクト
	 * @return true or false。
	 */
	function checkFiledKokaiHachu(form) {
		/* 何日以内のラジオボタンがチェックされている */
		if (form.Kokai[1].checked) {
			// 公開日何日以内 
			if( ! checkKokaiLimit(form)) {
				return false;
			} 
		}
		return true;
	}

	/**
	 * 公開日フィールドをチェックする関数
	 * @param form  フォームオブジェクト
	 * @return true or false。
	 */
	function checkFiledKokai(form) {

		/* 何日以内のラジオボタンがチェックされている */
		if (form.Kokai[1].checked) {
			// 公開日何日以内 
			if( ! checkKokaiLimit(form)) {
				return false;
			} 
		}
		/* 期間指定のラジオボタンがチェックされている */
		else if (form.Kokai[2].checked) {
			var yearFrom  = form.KokaiYearFrom[form.KokaiYearFrom.selectedIndex].value;
			var monthFrom = form.KokaiMonthFrom.value;
			var dayFrom   = form.KokaiDayFrom.value;
			var yearTo    = form.KokaiYearTo[form.KokaiYearTo.selectedIndex].value;
			var monthTo   = form.KokaiMonthTo.value;
			var dayTo     = form.KokaiDayTo.value;

			/* 期間範囲From　日が選択されていて、月が選択されていない */
			if (( dayFrom != "" ) && ( monthFrom == "")) {
				alert("正しい日付（半角数字）を入力してください");
				form.KokaiMonthFrom.focus();
				return false;
			}
			/* 期間範囲To　日が選択されていて、月が選択されていない */
			if (( dayTo != "" ) && ( monthTo =="" )) {
				alert("正しい日付（半角数字）を入力してください");
				form.KokaiMonthTo.focus();
				return false;
			}
			/* 値がない場合、日付整合性計算のため値を代入 */
			if ( form.KokaiMonthFrom.value == "")	monthFrom =1;
			if ( form.KokaiDayFrom.value == "")		dayFrom =1; 
			if ( form.KokaiMonthTo.value == "")		monthTo =1; 
			if ( form.KokaiDayTo.value == "")		dayTo =1; 
			/* Fromの年、月、日を判定 */
			if(!isDate(yearFrom,monthFrom,dayFrom)){
				alert("正しい日付（半角数字）を入力してください");
				form.KokaiYearFrom.focus();
				return false;
			}
			/* Toの年、月、日を判定 */
			if(!isDate(yearTo,monthTo,dayTo)){
				alert("正しい日付（半角数字）を入力してください");
				form.KokaiYearTo.focus();
				return false;
			}
			/*
			 * 指定範囲の整合性を判定 	
			 * 値がない場合、期間指定計算のため値を代入
			 */
			if ( form.KokaiMonthFrom.value == "")	monthFrom = 1;
			if ( form.KokaiDayFrom.value == "")		dayFrom = 1;
			if ( form.KokaiMonthTo.value == "")		monthTo = 12;
			if ( form.KokaiDayTo.value == "") {
//dayTo = getDayOfMonthend(yearTo,monthTo);
				if (monthTo == 1 || monthTo== 3 || monthTo == 5 || monthTo == 7 || monthTo == 8 ||
					monthTo == 10 || monthTo == 12) {
					dayTo = 31;
				}
				else if (monthTo == 4 || monthTo == 6 || monthTo == 9 || monthTo == 11) {
					dayTo = 30;
				}
				else {
					if (yearTo%4 == 0) {
						dayTo = 29;
					}
					else {
					dayTo = 28;
					}
				}
			}

			if ( dayTo == null ) 					return false;
			if(!compareDate(yearFrom,monthFrom,dayFrom,yearTo,monthTo,dayTo)){
				alert("期間指定を正しく入力してください");
				form.KokaiYearFrom.focus();
				return false;
			}
		}
		return true;
	}

	/**
	 * 公開日の初期化関数
	 * @param form  フォームオブジェクト
	 * @param target 初期化する対象
	 * 				 1 :すべて
	 * 				 2 :何日以内のみ
	 * 				 3 :期間指定のみ
	 */
	function clearKokaiValue(form,target) {

		if ((target == '1')||(target == '2')) {
			form.KokaiLimit.value = "";				// 何日以内	テキストボックス
		}
		if ((target == '1')||(target == '3')) {
			var date = new Date();
			var currentYear = date.getFullYear();
			/* 年From セレクトボックス */
			for (i = 0; i < form.KokaiYearFrom.length; i++) {
				/* セレクトの値とcurrentYearを比較、設定 */
				if( form.KokaiYearFrom.options[i].value == currentYear ) {
					form.KokaiYearFrom.selectedIndex = i;		
				}
			}
			form.KokaiMonthFrom.value = "";			// 月From テキストボックス
			form.KokaiDayFrom.value = "";			// 日From テキストボックス
			/* 年To	  セレクトボックス */
			for (i = 0; i < form.KokaiYearTo.length; i++) {
				/* セレクトの値とcurrentYearを比較、設定 */
				if( form.KokaiYearTo.options[i].value == currentYear ) {
					form.KokaiYearTo.selectedIndex = i;		
				}
			}
			form.KokaiMonthTo.value = "";			// 月To	  テキストボックス
			form.KokaiDayTo.value = "";				// 日To	  テキストボックス
		}
	}

	/**
	 * 開札日のラジオボタン判定。
	 * 入力された項目のラジオボタンをチェックし、その他の開札日エリアをクリアする
	 * @param form  フォームオブジェクト
	 * @param checkObj 判定するラジオボタンの配列番号
	 * @param thisObj  移動するラジオボタンの配列番号
	 * @param target 初期化する対象
	 * 				 1 :すべて
	 * 				 2 :何日以内のみ
	 * 				 3 :期間指定のみ
	 */
	function checkKaisatsuRadioBotton(form,checkObj,target) {
		/* 引数numberのラジオボタンがチェックされているか */
		if(! form.Kaisatsu[checkObj].checked) {
			form.Kaisatsu[checkObj].checked = true;
		}
		/* 初期化関数 */
		clearKaisatsuValue(form,target);
	}

	/**
	 * 開札日の何日以内テキストボックス判定。
	 * 入力された項目の値が正の整数がチェックし、フォーカスを移動する
	 * @param form  フォームオブジェクト
	 */
	function checkKaisatsuLimit(form) {
		if((form.KaisatsuLimit.value == "" ) || ( ! isInt(form.KaisatsuLimit.value))){
			alert("正の整数（半角数字）を入力してください。");
			form.KaisatsuLimit.focus();
			return false;
		}
		return true;
	}

	/**
	 * 開札日フィールドをチェックする関数
	 * @param form  フォームオブジェクト
	 * @return true or false。
	 */
	function checkFiledKaisatsu(form) {

		/* 何日以内のラジオボタンがチェックされている */
		if (form.Kaisatsu[1].checked) {
			// 開札日何日以内 
			if( ! checkKaisatsuLimit(form)) {
				return false;
			} 
		}
		/* 期間指定のラジオボタンがチェックされている */
		else if (form.Kaisatsu[2].checked) {
			var yearFrom  = form.KaisatsuYearFrom[form.KaisatsuYearFrom.selectedIndex].value;
			var monthFrom = form.KaisatsuMonthFrom.value;
			var dayFrom   = form.KaisatsuDayFrom.value;
			var yearTo    = form.KaisatsuYearTo[form.KaisatsuYearTo.selectedIndex].value;
			var monthTo   = form.KaisatsuMonthTo.value;
			var dayTo     = form.KaisatsuDayTo.value;

			/* 期間範囲From　日が選択されていて、月が選択されていない */
			if (( dayFrom != "" ) && ( monthFrom == "")) {
				alert("正しい日付（半角数字）を入力してください");
				form.KaisatsuMonthFrom.focus();
				return false;
			}
			/* 期間範囲To　日が選択されていて、月が選択されていない */
			if (( dayTo != "" ) && ( monthTo =="" )) {
				alert("正しい日付（半角数字）を入力してください");
				form.KaisatsuMonthTo.focus();
				return false;
			}
			/* 値がない場合、日付整合性計算のため値を代入 */
			if ( form.KaisatsuMonthFrom.value == "")	monthFrom =1;
			if ( form.KaisatsuDayFrom.value == "")		dayFrom =1; 
			if ( form.KaisatsuMonthTo.value == "")		monthTo =12; 
			if ( form.KaisatsuDayTo.value == "")		dayTo =2; 
			/* Fromの年、月、日を判定 */
			if(!isDate(yearFrom,monthFrom,dayFrom)){
				alert("正しい日付（半角数字）を入力してください");
				form.KaisatsuYearFrom.focus();
				return false;
			}
			/* Toの年、月、日を判定 */
			if(!isDate(yearTo,monthTo,dayTo)){
				alert("正しい日付（半角数字）を入力してください");
				form.KaisatsuYearTo.focus();
				return false;
			}
			/*
			 * 指定範囲の整合性を判定 	
			 * 値がない場合、期間指定計算のため値を代入
			 */
			if ( form.KaisatsuMonthFrom.value == "")	monthFrom = 1;
			if ( form.KaisatsuDayFrom.value == "")		dayFrom = 1;
			if ( form.KaisatsuMonthTo.value == "")		monthTo = 12;
			if ( form.KaisatsuDayTo.value == "") 	{	
//dayTo = getDayOfMonthend(yearTo,monthTo);
				if (monthTo == 1 || monthTo== 3 || monthTo == 5 || monthTo == 7 || monthTo == 8 ||
					monthTo == 10 || monthTo == 12) {
					dayTo = 31;
				}
				else if (monthTo == 4 || monthTo == 6 || monthTo == 9 || monthTo == 11) {
					dayTo = 30;
				}
				else {
					if (yearTo%4 == 0) {
						dayTo = 29;
					}
					else {
					dayTo = 28;
					}
				}
			}

			if ( dayTo == null ) 					return false;
			if(!compareDate(yearFrom,monthFrom,dayFrom,yearTo,monthTo,dayTo)){
				alert("期間指定を正しく入力してください");
				form.KaisatsuYearFrom.focus();
				return false;
			}
		}
		return true;
	}

	/**
	 * 開札日の初期化関数。
	 * @param form  フォームオブジェクト
	 * @param target 初期化する対象
	 * 				 1 :すべて
	 * 				 2 :何日以内のみ
	 * 				 3 :期間指定のみ
	 */
	function clearKaisatsuValue(form,target) {

		if ((target == '1')||(target == '2')) {
			form.KaisatsuLimit.value = "";				// 何日以内	テキストボックス
		}
		if ((target == '1')||(target == '3')) {
			var date = new Date();
			var currentYear = date.getFullYear();
			/* 年From セレクトボックス */
			for (i = 0; i < form.KaisatsuYearFrom.length; i++) {
				/* セレクトの値とcurrentYearを比較、設定 */
				if( form.KaisatsuYearFrom.options[i].value == currentYear ) {
					form.KaisatsuYearFrom.selectedIndex = i;		
				}
			}
			form.KaisatsuMonthFrom.value = "";			// 月From テキストボックス
			form.KaisatsuDayFrom.value = "";			// 日From テキストボックス	
			/* 年To	  セレクトボックス */
			for (i = 0; i < form.KaisatsuYearTo.length; i++) {
				/* セレクトの値とcurrentYearを比較、設定 */
				if( form.KaisatsuYearTo.options[i].value == currentYear ) {
					form.KaisatsuYearTo.selectedIndex = i;		
				}
			}
			form.KaisatsuMonthTo.value = "";			// 月To	  テキストボックス	
			form.KaisatsuDayTo.value = "";				// 日To	  テキストボックス	
		}
	}

	/**
	 * 入札予定価格の入力値チェックを行う	
	 * @param form  フォームオブジェクト
	 */
	function checkYenTanni(form) {
		var ketaCheck;				/* 桁CHECK用  */
			ketaCheck = 9;			/* 単位は千円 */
		/* 正の整数か、指定単位の桁以内でなければエラー 【From】*/
		if (form.YoteiGakuFrom.value != "") {
			/* 整数チェック */
			if (! isPositiveInt(form.YoteiGakuFrom.value)) {
				alert("予定価格は正の整数値を入力してください");
				form.YoteiGakuFrom.focus();
				return false;
			}
			/* 桁チェック */
			else if ( form.YoteiGakuFrom.value.length > ketaCheck ) {
				if ( ketaCheck == 9 ) {
					alert("予定価格は9桁以下を入力してください");
					form.YoteiGakuFrom.focus();
					return false;
				}
			}	
		}
		/* 正の整数か、指定単位の桁以内でなければエラー 【To】 */
		if (form.YoteiGakuTo.value != "") {
			/* 整数チェック */
			if ( ! isPositiveInt(form.YoteiGakuTo.value)) { 
				alert("予定価格は正の整数値を入力してください");
				form.YoteiGakuTo.focus();
				return false;
			}
			/* 桁チェック */
			else if (form.YoteiGakuTo.value.length > ketaCheck) {
					if ( ketaCheck == 9 ) {
					alert("予定価格は9桁以下を入力してください");
					form.YoteiGakuTo.focus();
					return false;
					}
			}
		}
		/* FROM < TO チェック*/
		if ( ((form.YoteiGakuFrom.value != "") && (form.YoteiGakuTo.value != "")) &&
				(eval(form.YoteiGakuFrom.value) > eval(form.YoteiGakuTo.value))) {
			
			alert("予定価格の範囲指定を正しく入力してください");
			form.YoteiGakuTo.focus();
			return false;
		}
		return true; 
	}


//-->
