﻿function fnAddEvent(argElement, argTarget, argListener, argUseCapture) {
	// function bind to target event (keypress or keydown)
	if (!argUseCapture) argUseCapture = false;
	if (argElement.addEventListener) argElement.addEventListener(argTarget, argListener, argUseCapture);
	else if (argElement.attachEvent) argElement.attachEvent('on' + argTarget, function (e) { argListener.call(argTarget, e || window.event); } );
	else argElement['on' + argTarget] = function (e) { argListener.call(argTarget, e || window.event); };
}

//-----------------------------------------------------------------------------
// Function : Function assigned for Enter-Key
//-----------------------------------------------------------------------------
function KeyEvent(e){

	evt = e || window.event;

	var objElement = (evt.target ? evt.target : (evt.srcElement ? evt.srcElement : null) );

	// out of inputarea
	if (null !== objElement) {
		pressKey=evt.keyCode;
		if(pressKey==13)
		{
			var strTagName = objElement.tagName.toLowerCase();
			if ('input'==strTagName) {
				if (null !== shortcutEnterInITag) {
					shortcutEnterInITag();
					return false;
				} else {
					return;
				}
			}
			if ('textarea'==strTagName) {
				if (null !== shortcutEnterInITag) {
					shortcutEnterInITag();
					return;
				} else {
					return;
				}
			}
			if (null !== shortcutEnter) {
				shortcutEnter();
				return false;
			}
		}
	}
}
document.onkeydown = KeyEvent;
shortcutEnter = null;
shortcutEnterInITag = function() { void(0); };

//-----------------------------------------------------------------------------
// Function : OpenURL with Session
//-----------------------------------------------------------------------------
/*
function fnUrlOpen(arg_Url)
{
	document.Menu.action = arg_Url;
	document.Menu.submit();
}
*/
function fnMenu(arg_Target) {
	// Post form.
	var objForm = fnGetForm('frm');
	var SNAME = objForm.SNAME.value;
	var SID = objForm.SID.value;
//	if (undefined != objForm.CompanyNo) {
//		var CompanyNo = objForm.CompanyNo.value;
//	}

	var strActiveForm =
		  '           <form action="." method="post" name="ActiveForm" >'
		+ '            <input type="hidden" name="@@SNAME@@" value="@@SID@@" />'
		+ '            <input type="hidden" name="target" value="@@target@@" />'
		+ '           </form> ';

	strForm = new String(strActiveForm);
	strForm = strForm.replace(/@@SNAME@@/, SNAME);
	strForm = strForm.replace(/@@SID@@/, SID);
	strForm = strForm.replace(/@@target@@/, arg_Target);

	document.getElementById('ActiveForm').innerHTML = strForm;

	var objForm = fnGetForm('ActiveForm');
	objForm.action = 'index.php';
	objForm.submit();
}

function fnAHref(arg_LinkURL) {
	// Post form.
	var objForm = fnGetForm('frm');
	var SNAME = objForm.SNAME.value;
	var SID = objForm.SID.value;

	var strActiveForm =
		  '           <form action="" method="post" name="ActiveForm" >'
		+ '            <input type="hidden" name="@@SNAME@@" value="@@SID@@" />'
		+ '           </form> ';

	strForm = new String(strActiveForm);
	strForm = strForm.replace(/@@SNAME@@/, SNAME);
	strForm = strForm.replace(/@@SID@@/, SID);

	document.getElementById('ActiveForm').innerHTML = strForm;

	var objForm = fnGetForm('ActiveForm');
	objForm.action = arg_LinkURL;
	objForm.submit();
}

function fnLogout(arg_LinkURL) {
	// Post form.
	var objForm = fnGetForm('frm');
	var SNAME = objForm.SNAME.value;
	var SID = objForm.SID.value;

	var strActiveForm =
		  '           <form action="." method="post" name="ActiveForm" >'
		+ '            <input type="hidden" name="@@SNAME@@" value="@@SID@@" />'
		+ '            <input type="hidden" name="method" value="logout" />'
		+ '           </form> ';

	strForm = new String(strActiveForm);
	strForm = strForm.replace(/@@SNAME@@/, SNAME);
	strForm = strForm.replace(/@@SID@@/, SID);

	document.getElementById('ActiveForm').innerHTML = strForm;

	var objForm = fnGetForm('ActiveForm');
//	objForm.action = arg_LinkURL;
	objForm.submit();
}
//-----------------------------------------------------------------------------
// Function : String Length
//-----------------------------------------------------------------------------
function fnGetCharLength(arg_Char) {
	var iRet = -1;
	if (1==arg_Char.length) {
		var iChar = arg_Char.charCodeAt(0);
        if ( (0x0 <= iChar && iChar < 0x81) || (iChar == 0xf8f0) || (iChar >= 0xff61 && iChar < 0xffa0) || (iChar >= 0xf8f1 && iChar < 0xf8f4)) {
			iRet = 1;
		} else {
			iRet = 2;
		}
        // return code as 2byte.
        if ((0x0d==iChar) || (0x0a==iChar)) {
        	iRet = 2;
        }
	}

	return iRet;
}

function fnGetByteLength(arg_String) {
	var iCnt = 0;

	for ( var iII = 0; iII < arg_String.length; iII++ ) {
		iCnt += fnGetCharLength(arg_String.substring(iII, iII + 1));
	}

	return iCnt;
}


//-----------------------------------------------------------------------------
// Function : Insert "<wbr>"
//-----------------------------------------------------------------------------
function fnWBRInsert(arg_String, arg_LineLength) {
	var iCnt = 0;
	var strRet = new String();

	for ( var iII = 0; iII < arg_String.length; iII++ ) {
		var chrChar = arg_String.substring(iII, iII + 1)
		iCnt += fnGetCharLength(chrChar);
		if (arg_LineLength>iCnt) {
			strRet += chrChar;
		} else if (arg_LineLength==iCnt) {
			strRet += chrChar + "<br />";
//			strRet += chrChar + " ";
//			strRet += chrChar + "\n";
			iCnt=0;
		} else if (arg_LineLength<iCnt) {
			strRet +=  "<br />" + chrChar;
//			strRet +=  " " + chrChar;
//			strRet +=  "\n" + chrChar;
			iCnt=0;
		}
	}

	return strRet ;
//	return arg_String;
}

//-----------------------------------------------------------------------------
// Function : String Check
//-----------------------------------------------------------------------------
/**
 *	@Param : arg_Param.strWord						チェック対象
 *	@Param : arg_Param.strErrWord					項目名
 *	@Param : arg_Param.iCheckLength					最大文字数
 *	@Param : arg_Param.strErrLength					最大文字数超過時のエラー文字数
 *	@Param : arg_Param.flgCheckZeroLength			空文字チェック(false:しない)
 *	@Param : arg_Param.flgCheckWideCharOnly			全角文字のみ許可(false:しない)
 *	@Param : arg_Param.flgCheckBiteCharOnly			半角文字のみ許可(false:しない)
 *	@Param : arg_Param.flgCheckNumericOnly			半角数字のみ許可(false:しない)
 *	@Param : arg_Param.flgCheckNotHalfKana			全角カナ文字の許可(false:しない)
 *	@Param : arg_Param.flgCheckUrlFormat			URL書式チェック(false:しない)
 *	@Param : arg_Param.flgCheckTelFormat			TEL書式チェック(false:しない)
 *	@Param : arg_Param.flgCheckMailAddressFormat	メールアドレス書式チェック(false:しない)
 */
function fnCheckDataBasic(arg_Param) {
	var strErr = new String();

	//----------------------------------------------------------------------------
	// Check Param
	//----------------------------------------------------------------------------
	if ((undefined === arg_Param.strWord)
	 || (undefined === arg_Param.strErrWord)
	 || ((undefined !== arg_Param.flgCheckZeroLength) && (!arg_Param.flgCheckZeroLength) && (undefined === arg_Param.iCheckLength)))
	{
		return '入力が不正です！[fnCheckDataBasic()]';
	}

	if (undefined === arg_Param.strErrLength) {
		arg_Param.strErrLength = "半角" + arg_Param.iCheckLength;
	}
	if (undefined === arg_Param.flgCheckZeroLength) {
		arg_Param.flgCheckZeroLength = false;
	}
	if (undefined === arg_Param.flgCheckWideCharOnly) {
		arg_Param.flgCheckWideCharOnly = false;
		arg_Param.flgCheckBiteCharOnly = true;
		arg_Param.flgCheckNotHalfKana = true;
	}
	if (arg_Param.flgCheckWideCharOnly) {
		arg_Param.flgCheckBiteCharOnly = false;
		arg_Param.flgCheckNotHalfKana = true;
	}
	if (undefined === arg_Param.flgCheckBiteCharOnly) {
		arg_Param.flgCheckBiteCharOnly = true;
	}
	if (undefined === arg_Param.flgCheckNotHalfKana) {
		arg_Param.flgCheckNotHalfKana = true;
	}
	if (undefined === arg_Param.flgCheckTelFormat) {
		arg_Param.flgCheckTelFormat = false;
	}
	if (arg_Param.flgCheckTelFormat) {
		arg_Param.flgCheckWideCharOnly = false;
		arg_Param.flgCheckBiteCharOnly = false;
		arg_Param.flgCheckNotHalfKana = false;
	}
	if (undefined === arg_Param.flgCheckUrlFormat) {
		arg_Param.flgCheckUrlFormat = false;
	}
	if (arg_Param.flgCheckUrlFormat) {
		arg_Param.flgCheckWideCharOnly = false;
		arg_Param.flgCheckBiteCharOnly = true;
		arg_Param.flgCheckNotHalfKana = true;
	}
	if (undefined === arg_Param.flgCheckMailAddressFormat) {
		arg_Param.flgCheckMailAddressFormat = false;
	}
	if (arg_Param.flgCheckMailAddressFormat) {
		arg_Param.flgCheckWideCharOnly = false;
		arg_Param.flgCheckBiteCharOnly = true;
		arg_Param.flgCheckNotHalfKana = true;
	}
	if (undefined === arg_Param.flgCheckNumericOnly) {
		arg_Param.flgCheckNumericOnly = false;
	} else {
		arg_Param.flgCheckWideCharOnly = false;
		arg_Param.flgCheckBiteCharOnly = false;
	}

	//----------------------------------------------------------------------------
	// Check Main
	//----------------------------------------------------------------------------
	var iStringLength = fnGetByteLength(arg_Param.strWord);

	// 空文字
	if ((arg_Param.flgCheckZeroLength) && (0===iStringLength)) {
		strErr = "『" + arg_Param.strErrWord + "』が入力されていません。";

	// 全角文字
	} else if ((arg_Param.flgCheckWideCharOnly) && (0<iStringLength) && (!fnCheckWideChar(arg_Param.strWord))) {
		strErr = "『" + arg_Param.strErrWord + "』は全角文字で入力してください。";

	// 半角文字
	} else if ((arg_Param.flgCheckBiteCharOnly) && (0<iStringLength) && (fnCheckWideChar(arg_Param.strWord))) {
		strErr = "『" + arg_Param.strErrWord + "』は半角文字で入力してください。";

	// 半角数字
	} else if ((arg_Param.flgCheckNumericOnly) && (0<iStringLength) && (!fnCheckNumeric(arg_Param.strWord))) {
		strErr = "『" + arg_Param.strErrWord + "』は半角数字で入力してください。";

	// URL書式
	} else if ((arg_Param.flgCheckUrlFormat) && (0<iStringLength) && (!fnCheckUrlFormat(arg_Param.strWord))) {
		strErr = "『" + arg_Param.strErrWord + "』の書式に誤りがあります。";

	// メールアドレス書式
	} else if ((arg_Param.flgCheckMailAddressFormat) && (0<iStringLength) && (!fnCheckMailAddressFormat(arg_Param.strWord))) {
		strErr = "『" + arg_Param.strErrWord + "』の書式に誤りがあります。";

	// Telephone書式
	} else if ((arg_Param.flgCheckTelFormat) && (0<iStringLength) && (!fnCheckTelephone(arg_Param.strWord))) {
		strErr = "『" + arg_Param.strErrWord + "』は数字と'-'以外は入力できません。";

	// 半角カナ
	} else if ((arg_Param.flgCheckNotHalfKana) && (0<iStringLength) && (fnCheckExistHalfKana(arg_Param.strWord))) {
		strErr = "『" + arg_Param.strErrWord + "』に半角カナは入力できません。";

	// 文字数オーバー
	} else if ((arg_Param.iCheckLength>0) && (arg_Param.iCheckLength < iStringLength)) {
		strErr = "『" + arg_Param.strErrWord + "』は" + arg_Param.strErrLength + "文字以内で入力してください。\n（" + Math.abs(Math.floor((arg_Param.iCheckLength - iStringLength)/2)) + "文字オーバーしています。）";

	}

	return strErr;
}

function fnCheckMailAddressFormat(arg_String) {
	flgRet=false;

//	if (arg_String.match(/^[a-zA-Z0-9]+[a-zA-Z0-9!$&*=^`|~#%'+\/?_{}-]*(\.[a-zA-Z0-9!$&*.=^`|~#%'+\/?_{}-]+)*@[-a-z0-9-]+(\.[-a-z0-9]{2,})*\.[a-zA-Z]{2,4}$/i)) {
//	if (arg_String.match(/^[a-zA-Z0-9]+[a-zA-Z0-9!$&*=^`|~#%'+\/?_{}-]*(\.[a-zA-Z0-9!$&*.=^`|~#%'+\/?_{}-]+)*([a-zA-Z0-9!$&*=^`|~#%'+\/?_{}-]+)+@[-a-z0-9-]+(\.[-a-z0-9]{2,})*\.[a-zA-Z]{2,4}$/i)) {
	if (arg_String.match(/^[a-z,A-Z,0-9][a-z,A-Z,0-9,!,$,&,*,\.,=,^,`,|,~,#,%,',+,\,/,?,_,{,},-]{0,}[a-z,A-Z,0-9,!,$,&,*,=,^,`,|,~,#,%,',+,\,/,?,_,{,},-]{1,}@[-a-z0-9-]+(\.[-a-z0-9]{2,})*\.[a-zA-Z]{2,4}$/i)) {
		flgRet = true;
	}
	if (-1 != arg_String.indexOf('..', 0)) {
		flgRet = false;
	}

	return flgRet;
}

function fnCheckUrlFormat(arg_String) {
	flgRet=false;

	if (arg_String.match(/^(http:\/\/|https:\/\/)($|[a-zA-Z0-9]+[-_!~*'()a-zA-Z0-9;?:@&=+$,%#]*(\.[-_!~*'()a-z0-9;?:@&=+$,%#]{2,}))/i)) {

		flgRet = true;
	}

	return flgRet;
}

function fnCheckTelephone(arg_String) {
	flgRet=true;

	if (arg_String.match(/[^0-9\-]/)) {
		flgRet = false;
	}

	return flgRet;
}

function fnCheckWideChar(arg_String) {
	var flgRet = false;

	if (0==arg_String.length) {
		flgRet = true;
	} else {
		for ( var iII = 0; iII < arg_String.length; iII++ ) {
			if (2 == fnGetCharLength(arg_String.substring(iII, iII + 1))) {
				flgRet = true;
				break;
			}
		}
	}

	return flgRet;
}

function fnCheckExistHalfKana(arg_String) {
	flgRet=false;

	if (arg_String.match(/[ｱ-ﾝｧｨｩｪｫｬｭｮ｡｢｣､･ｦ]/)) {
		flgRet = true;
	}

	return flgRet;
}

function fnCheckAscii(arg_String) {
	flgRet=true;

	if (arg_String.match(/[^0-9A-Za-z]/)) {
		flgRet = false;
	}

	return flgRet;
}

function fnCheckAlphabet(arg_String) {
	flgRet=true;

	if (arg_String.match(/[^A-Za-z]/)) {
		flgRet = false;
	}

	return flgRet;
}

function fnCheckNumeric(arg_String) {
	flgRet=true;

	if (arg_String.match(/[^0-9]/)) {
		flgRet = false;
	}

	return flgRet;
}

//-----------------------------------------------------------------------------
// Function : Get char count message.
//-----------------------------------------------------------------------------
function fnCheckSubject(arg_Chk, arg_Length, arg_Dom) {
	var objChk = document.getElementById(arg_Chk);
	var objDom = document.getElementById(arg_Dom);

	if (undefined !== objDom) {
		if (arg_Length < fnGetByteLength(objChk.value)) {
			objDom.innerHTML = '<font color="#FF0000">（' + Math.abs(Math.floor((arg_Length - fnGetByteLength(objChk.value))/2)) + "文字オーバーです。）</font>";
		} else {
			objDom.innerHTML = "（あと" + Math.floor((arg_Length - fnGetByteLength(objChk.value))/2) + "文字です。）";
		}
	}
}

//-----------------------------------------------------------------------------
//Function : Get HTMLFormElement.
//-----------------------------------------------------------------------------
function fnGetForm(arg_FormName) {
	var objRet = null;
	if ((undefined !== document[arg_FormName]) && (null !== document[arg_FormName])) {
		objRet = document[arg_FormName];
	} else if ((undefined !== document.forms[arg_FormName]) && (null !== document.forms[arg_FormName])) {
		objRet = document.forms[arg_FormName];
	}

	return objRet;
}

function fnUrlOpenToNewWindow(arg_Url) {
	var varMyName = null;

	if ((undefined == arg_Url) || (null == arg_Url) || ('' == arg_Url)) {
		return;
	}

	varMyName = window.open(arg_Url,"_blank","width=820,height=800,toolbar=yes,location=yes,directories=no,status=no,menubar=yes,titlebar=yes,scrollbars=yes,resizable=yes");
//	varMyName = window.open(arg_Url,"_blank","width=820,height=800,location=yes,menubar=yes,resizable=yes,scrollbars=yes,status=yes,toolbar=yes");
/*
	varMyName = window.open("about:blank","myName","width=820,toolvar=no,location=yes,directories=no,status=no,menubar=no,titlebar=yes,scrollbars=yes");
	document.ZipCode.target = "myName";
	document.ZipCode.method = "get";
	document.ZipCode.action = arg_Url;
	document.ZipCode.submit();
*/
}

function fnEasyFinderReset() {
	var objFrm = fnGetForm('easyfinder');
	objFrm.jcn.options[0].selected = true;
	objFrm.jln.options[0].selected = true;
	objFrm.jkn.options[0].selected = true;
}

//=============================================================================
//AjaxRequest Class
//=============================================================================
clsAjaxRequest = function (){
	this.fnExecFind= function (arg_Url, arg_Prm, arg_onRecieved) {
		var bolRet = false;
		var request = null;

		document.body.style.cursor = 'wait';

		request = this.fnCreateRequest();
		if (request !== null) {
			request.open("POST", arg_Url, true);
			request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
			request.onreadystatechange = function() {  if (request.readyState == 4) { document.body.style.cursor = 'auto'; } arg_onRecieved(request) };
			request.send(arg_Prm);

			bolRet = true;
		}

		return bolRet;
	}
	this.fnCreateRequest= function () {
		var request = null;
		try {
			request = new XMLHttpRequest();
		} catch (trymicrosoft) {
			try {
				request = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (othermicrosoft) {
				try {
					request = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (failed) {
					request = null;
				}
			}
		}
		if (request == null) {
			alert("requestオブジェクトの作成に失敗！");
		}
		return request;
	}
}

