// 定数
var ACTION_EXPDLICENSE			= "EXPDLICENSE";
var ACTION_JUMP					= "JUMP";

// 入力チェック
function Check(txt,bNotNull,bAnk,iMin,iMax,szMsg){
	Trim(txt);

	if(bNotNull && txt.value.length == 0){
		alert(szMsg + "：必須入力です");
		txt.focus();
		return false;
	}
	if(bAnk && !isAnk(txt.value)){
		alert(szMsg + "：すべて半角で入力して下さい");
		txt.focus();
		return false;
	}
	if(txt.value.length != 0 && lenB(txt.value) > iMax){
		alert(szMsg + "：入力した文字が長すぎます");
		txt.focus();
		return false;
	}
	if(txt.value.length != 0 && lenB(txt.value) < iMin){
		alert(szMsg + "：入力した文字が短すぎます");
		txt.focus();
		return false;
	}
	return true;
}
// １バイト文字？
function isSingleByte(strIn){
	if(strIn == null)return true;
	return escape(strIn).length<4 ;
}
// バイト数 
function lenB(strIn){
	var rc = 0;
	if(strIn == null){
		return 0;
	}
	for(var i = 0; i < strIn.length; i++){
		if(isSingleByte(strIn.substring(i,i+1))){
			rc+=1;
		}else{
			rc+=2;
		}
	}
	return rc;
}
// すべてANK？
function isAnk(strIn){
	if(strIn == null){
		return true;
	}
	for(var i = 0; i < strIn.length; i++){
		if(!isSingleByte(strIn.substring(i,i+1))){
			return false;
		}
	}
	return true;
}
// チェックボックスクリア
function ClearCheck(form,nm,m){
	if(!m.checked)return;
	for(var i=0;i<form.elements.length;i++){
		var e = form.elements[i];
		if ((e.name.indexOf(nm) == 0) && (e.type=='checkbox'))
			e.checked = false;
	}
}
// 数字チェック
function ChkNum(txt,szMsg){
	if(txt.value==""){
		return true;
	}
	if(isNaN(txt.value)){
		txt.focus();
		alert(szMsg + "：数値で入力して下さい");
		return false;
	}
	return true;
}
// 日付チェック
function ChkDate(txt,szMsg){
	if(ChkDateSub(txt)){
		return true;
	}else{
		txt.focus();
		alert(szMsg + "：説明通りの形式で入力して下さい");
		return false;
	}
}
function ChkDateSub(t){
	var iMaxDay=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if(t.value=="") return true;
	var dt= t.value.split("/");
	if(dt.length != 3) return false;
	if(dt[0].length != 4 || isNaN(dt[0])) return false;
	var iYear=parseInt(dt[0],10);
	if(dt[1].length == 0 || isNaN(dt[1])) return false;
	var iMonth=parseInt(dt[1],10);
	if(iMonth < 1 || iMonth > 12) return false;
	var szMonth = new String(dt[1]);
	if(iMonth < 10 && szMonth.charAt(0) != '0')dt[1]="0"+dt[1];
	if((iYear%4==0 && iYear%100!=0) || iYear%400==0){
		iMaxDay[1]=29;
	}
	if(dt[2].length == 0 || isNaN(dt[2])) b=false;
	var iDay=parseInt(dt[2],10);
	if(iDay < 1 || iDay > iMaxDay[iMonth-1]) return false;
	var szDay = new String(dt[2]);
	if(iDay < 10 && szDay.charAt(0) != '0')dt[2]="0"+dt[2];
	t.value=dt.join("/");
	return true;
}
// チェックボックスカウント
function CountCheck(form){
	var x= new CountCheckData(0,0);
	for(var i=0;i<form.elements.length;i++){
		var e = form.elements[i];
		if((e.name != 'AllBox') && (e.type=='checkbox')){
			if(e.checked){
				x.Count++;
				x.LastValue=e.value;
			}
		}
	}
	return x;
}
function CountCheckData(a,b){
	this.Count = a;
	this.LastValue = b;
}
// 選択リストへの追加チェック(同名)
function CheckAddList(l,t){
	for(i=0;i<l.length;i++){
		if(l.options[i].text==t.value){
			alert("すでに「"+t.value+"」は存在します");
			return false;
		}
	}
	return true;
}
// 選択リストへの追加
function AddToList(l,t,v,n){
	var newText = t.value;
	if(newText.length==0)return;
	if(n.length!=0){
		if(newText == n){
			alert("「"+n+"」と同じ名称は登録できません");
			return;
		}
	}
	l.length++;
	l.options[l.length-1].text = newText;
	l.options[l.length-1].value = v;
	t.value = "";
}
// 選択リストへの追加(リストから)
function ListMoveToList(l,f){
	for(i=0;i<f.length;i++){
		var op = f.options[i];
		if(op.selected){
			l.length++;
			l.options[l.length-1].text = op.text;
			l.options[l.length-1].value = op.value;
		}
	}
	DeleteFromList(f);
}
// 選択リストから削除 
function DeleteFromList(l){
	for(i=l.length-1;i>=0;i--){
		var op = l.options[i];
		if(op.selected){
			for(j=i;j<l.length-1;j++){
				l.options[j].text = l.options[j+1].text;
				l.options[j].value = l.options[j+1].value;
			}
			l.length--;
		}
	}
}
// 選択リストの選択値を取得
function GetSelectedValue(l){
	return l.options[l.selectedIndex].value;
}
// 選択リストの順序を入れ替える(上方向)
function UpList(l){
	for(i=l.length-1;i>=0;i--){
		var op = l.options[i];
		if(op.selected){
			if(i!=0){
				tmp = l.options[i].text;
				l.options[i].text = l.options[i-1].text;
				l.options[i-1].text = tmp
				tmp = l.options[i].value;
				l.options[i].value = l.options[i-1].value;
				l.options[i-1].value = tmp
				l.options[i].selected = false;
				l.options[i-1].selected = true;
				break;
			}
		}
	}
}
// 選択リストの順序を入れ替える(下方向)
function DownList(l){
	for(i=l.length-1;i>=0;i--){
		var op = l.options[i];
		if(op.selected){
			if(i!=l.length-1){
				tmp = l.options[i].text;
				l.options[i].text = l.options[i+1].text;
				l.options[i+1].text = tmp
				tmp = l.options[i].value;
				l.options[i].value = l.options[i+1].value;
				l.options[i+1].value = tmp
				l.options[i].selected = false;
				l.options[i+1].selected = true;
				break;
			}
		}
	}
}
// 選択リストにデフォルト配列を設定
function SetListDefault(l,defValue,defText){
	l.length=0;
	var arrdefValue=defValue.split('\t');
	var arrdefText=defText.split('\t');
	for(i=0;i<arrdefText.length-1;i++){
		l.length=i+1;
		l.options[i].text=arrdefText[i];
		l.options[i].value=arrdefValue[i];
	}
}
// 指定された値のリストを選択
function SetSelectedIndex(s,v){
	for(i=0;i<s.length;i++){
		var op = s.options[i];
		if(op.value==v){
			op.selected=true;
			break;
		}
	}
}
// 選択リストの値をタブで結合
function JoinListTab(l,t){
	t.value = "";
	for(i=0;i<l.length;i++){
		t.value += (l.options[i].value + "\t");
	}
	// 末尾のTABが消されないように
	t.value += ".";
}
// 選択リストの名称をタブで結合
function JoinListTabName(l,t){
	t.value = "";
	for(i=0;i<l.length;i++){
		t.value += (l.options[i].text + "\t");
	}
	// 末尾のTABが消されないように
	t.value += ".";
}
// trim
function Trim(t){
	if(t.type != "file"){
		t.value=t.value.replace(/^\s+|\s+$/g, "");
	}
	return t.value;
}

