/*
 * Global変数
 */
var gSubmitted = false;			// Submitフラグ

/*
 * Submit処理
 * @param action アクション
 * @param subAction サブアクション
 * @param selectId 選択ID
 */
function doSimpleSubmit(action) {
	if (gSubmitted) return false;
	gSubmitted = true;

	var f = document.forms['formMain'];
	f.action.value = action;
	f.submit();
}
/*
 * SELECTオブジェクト初期化
 * @param objSel SELECTオブジェクト
 */
function gInitSelect(objSel) {
	objSel.length = 0;
}

/*
 * OPTIONオブジェクト追加
 * @param objSel SELECTオブジェクト
 * @param optValue 追加OPTIONオブジェクトValue
 * @param optText 追加OPTIONオブジェクトText
 * @param optSelected 選択
 */
function gAddOptionToSelect(objSel, optValue, optText, optSelected) {
	objSel.length++;
	objSel.options[objSel.length-1].value    = optValue;
	objSel.options[objSel.length-1].text     = optText;
	objSel.options[objSel.length-1].selected = optSelected;
}

/*
 * Ajax送信処理(POSTメソッド)
 * @param url 送信先
 * @param func Callback関数
 * @param params POSTデータ(配列)
 *
 * paramsの例:
 * params['key1']="abc"
 * params['key2']="XYZ"
 * →key1=abc&key2=XYZ(encodeURIComponentされる)
 *
 * Callback関数の例:
 * function callbackFunc(retValue) { alert(retValue); }
 */
function sendPostRequestAjax(url, func, params) {
	var req = null;
	if (window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			req = new ActiveXObject("Microsoft.XMLHTTP");
		}
	} else if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	}
	// クエリパラメータを作成
	var val = "";
	if (params != null) {
		var arr = [];
		for (var key in params) {
   			arr.push(key + "=" + encodeURIComponent(params[key]));
		}
		val = arr.join("&");
	}
	req.onreadystatechange = function() {
		if (req.readyState == 4 && (req.status == 200 || req.status == 304)) {
			// 戻り情報をコールバックに渡す
			func(req.responseText);
		}
	}
	req.open('POST', url);
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	req.send(val);
}

/*
 * 指定Tag名項目Disbled設定
 * @param tagName Tag名
 * @param TorF true:Disabled false:Enabled
 */
function disableAllByTagName(tagName, TorF) {
	var elms = document.getElementsByTagName(tagName);
	if (elms) {
		for (idx = 0; idx < elms.length; idx++) {
			elms[idx].disabled = TorF;
		}
	}
}

/*
 * 指定ID(Array)項目Disabled設定
 * @param idArray ID(Array)
 * @param TorF true:Disabled false:Enabled
 */
function disableIdArray(idArray, TorF) {
	if (isArray(idArray)) {
		var elm = null;
		for (idx = 0; idx < idArray.length; idx++) {
			elm = document.getElementById(idArray[idx]);
			if (elm) {
				elm.disabled = TorF
			}
		}
	}
}

/*
 * 指定CheckBox項目Checked設定
 * @param name CheckBox Name
 * @param checked true or false
 */
function setCheckedAllCheckboxes(name, checked) {
	var cboxes = document.getElementsByName(name);
	if (cboxes) {
		for (var idx = 0; idx < cboxes.length; idx++) {
			cboxes[idx].checked = checked;
		}
	}
}

/*
 *
 */
function linkOpenWindow(url) {
	window.open(url, "mWindow");
}
/*
 *
 */
function isNumeric(value) {
	var rc = true;
	if (value.match(/[^0-9]/g)) rc = false;
	return rc;
}

/*
 *
 */
function isArray(value) {
	return value != null && value instanceof Array;
}

/*
 *
 */
function trimValue(value) {
	return value.replace(/^\s+|\s+$/g,"");
}

/*
 *
 */
function ymdToY_M_D(ymd, delim) {
	var y_m_d = ymd.substring(0, 4) + delim + ymd.substring(4, 6) + delim + ymd.substring(6);
	return y_m_d;
}

/*
 *正当な日付チェック
 */
function checkValidDate(yyyy, mm, dd) {
	if (!isNumeric(yyyy) || !isNumeric(mm) || !isNumeric(dd)) return false;
	var date = new Date(yyyy, mm - 1, dd);
	if (date.getDate() != dd || date.getMonth() != (mm-1) || date.getFullYear() != yyyy) return false;
	return true;
}

/*
 * ３桁区切り
 * @ref http://webdev.seesaa.net/article/22769178.html
 */
function addFigure(str) {
	var num = new String(str).replace(/,/g, "");
	while(num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
	return num;
}

/*
 * 四捨五入
 * @param value 値
 * @param 小数点以下桁数
 */
function roundValue(value, point) {
	var rc = 0;
	rc = Math.round(value * Math.pow(10, point)) / Math.pow(10, point);
	return rc;
}

/*
 * 前ゼロ挿入
 * @param value 値
 * @param length 桁数
 */
function padZero(value, length) {
	var s = "";
	for (var i = 0; i < length; i++) s = s + "0" + "";
	s = s + value + "";
	return s.slice(length * -1);
}

/*
 * 現在日時
 * @param sepDate 日付区切り文字
 */
function getNowDateStr(sepDate) {
	var d = new Date();
	var yyyy = d.getFullYear();
	var mm = d.getMonth() + 1;
	var dd = d.getDate();
	var hh = d.getHours();
	var mi = d.getMinutes();
	var ss = d.getSeconds();
	if (mm < 10) { mm = "0" + mm; }
	if (dd < 10) { dd = "0" + dd; }
	if (hh < 10) { hh = "0" + hh; }
	if (mi < 10) { mi = "0" + mi; }
	if (ss < 10) { ss = "0" + ss; }
	return yyyy + sepDate + mm + sepDate + dd + " " + hh + ":" + mi + ":" + ss;
}

