/*
Copyright(C) 1998-2007 京葉システム株式会社. All Rights Reserved.
本プログラムは、弊社提供のシステム内で、
所定の目的に沿っての実行のみを許諾します。
その他の流用・公開・解析等の一切を禁止します。
*/
/*
＞履歴


2016/04/13 T.Yoshihara TW10
2017/01/26 T.Yoshihara 追加移植 WEBTRで使用
2017/05/11 T.Yoshihara Ipad用 テキスト全選択処理
2018/09/11 T.Yoshihara 不要なfontFamily指定の排除
2019/05/07 S.Terada 英語対応、alertの廃止


＞注意
本ファイルは廃止予定。
将来的にはmnu/dat.src/cpoaTypeのような枠組みに統一する。

*/
new function() {

	xpKeyMsk = function(caoText, caoMask) {
//	function xpKeyMsk(caoText, caoMask) {
	//入力欄の初期化。
	//・文字入力時に字種チェックさせる。
		caoText.ToUpper = true;
		caoText.Mask = caoMask;//IE独自
		caoText.onkeypress = fxbOnKeyPress;
	}

	xpInitID = function(caoText, canLength) {
	//コード入力欄の初期化。
	//字種＝英数字。大文字変換。
		caoText.style.textAlign = "left";
		caoText.size = canLength;
		caoText.maxLength = canLength;

		caoText.onblur = sxEndEdit;
		caoText.onfocus = sxBeginEdit;

		xpKeyMsk(caoText, /[^0-9A-Z]/gi);

		caoText.PutValue = sxSetValue;
		caoText.GetValue = fxsGetValue;
	}

	window.spInitUID = function(caoText) {
	//ユーザＩＤ入力欄の初期化。
		window.xpInitID(caoText, 16);
		//caoText.parentNode.style.width = "20ex";
		caoText.style.width = "100%";
	}

	window.spInitPWD = function(caoText) {
	//パスワード入力欄の初期化。
		window.spInitUID(caoText);
		caoText.ToUpper = false;
		caoText.Mask = /[^-\\\.[\]#$()*+:;=?@_!`{}~0-9A-Z]/gi;//IE独自
		//新たに記号を容認：#$()*+-.:;=?@[\]_!`{}~
		//caoText.style.fontFamily = "Tahoma,Times,sans-serif";
	}
	
	function fxbOnKeyPress () {
	//入力文字の字種チェック。

		//入力文字のコードを拾う。
		var vloEvent = window.fpoWin(this).event;
		var vlnCode = vloEvent.keyCode;

		//制御コードの類いは素通し。
		if (vlnCode < 32) return;

		//コードを文字に直す。※必要に応じて大文字に変換する。
		var vlsChar = String.fromCharCode(vlnCode);
		if (this.ToUpper) vlsChar = vlsChar.toUpperCase();

		//チェックをパスしたら素通し。※必要に応じて大文字に変換する。
		if (!this.Mask.test(vlsChar)) {
			vloEvent.keyCode = vlsChar.charCodeAt(0);
			return;
		}

		//「非許可の空白」はショートカット操作の呼び出し。
		if (vlnCode == 32) {
			if (this.ondblclick != null) this.ondblclick();
			return false;
		}

		//警告表示して弾く。
//[s]2017/02/17 T.Yoshihara
		//Ipad対策　メッセージがキーボード裏に隠れるため
		this.blur();
		var vlvThis = this;
		setTimeout((function(){
			//alert('使用できない文字です。[' + vlsChar + ']');
			var _text = xw.i18n.lang() === "E" ? "Invalid character!" : "使用できない文字です。";
			var _title = xw.i18n.lang() === "E" ? "Input errors" : "入力エラー";
			xw.alertA(window, _text + "[" + vlsChar + "]",{title:_title}).then(function(){
				vlvThis.focus();
			});
		}),10);
//[c]2017/02/17 T.Yoshihara
//		alert('使用できない文字です。[' + vlsChar + ']');
//		this.focus();
//[e]2017/02/17 T.Yoshihara
		return false;
	}

	function sxSetValue (casNewValue) {
	//生データを設定→補正して表示。
		this.value = casNewValue;
		this.onblur();	//補正動作を引き起こす。
	}

	function fxsGetValue () {
	//補正後データ取得。
		this.onblur();	//補正動作を引き起こす。
		return this.value;
	}

	function sxBeginEdit () {
	//編集状態を開始する。

		//入力内容全体を選択する。
		//[s]2017/05/11 T.Yoshihara
		var _this = this;
		if (!window.Got){
			setTimeout(function(){
				 _this.setSelectionRange(0, _this.value.length);
			},10);
		}
		//[c]2017/05/11 T.Yoshihara
		//if (!window.Got) this.select();
		//[e]2017/05/11 T.Yoshihara
	}

	function sxEndEdit () {
	//編集状態を終了する。

		//入力値を拾う。必要に応じて大文字に直す。
		var vlsInput = this.value.fpsTrim();
		if (this.ToUpper) vlsInput = vlsInput.toUpperCase();

		//不正な文字を弾く。
		var vlsNormal = vlsInput.replace(this.Mask, '');
//[s]2017/02/17 T.Yoshihara
		//Ipad対策　メッセージがキーボード裏に隠れるため
		if (vlsNormal != vlsInput) {
			this.blur();
			setTimeout((function(){
				//alert('使用できない文字を削除しました。'); ⇒ロストフォーカスとともに次の入力欄への遷移が起こりえるため表示しない
			}),10);
		}
//[c]2017/02/17 T.Yoshihara
//		if (vlsNormal != vlsInput) alert('使用できない文字を削除しました。');
//[e]2017/02/17 T.Yoshihara

		//修正後の値で更新する。
		this.value = vlsNormal;

	} //sxEndEdit
		
} //anonymous
