// domId : kind of DOM.
//        IE4 = 1, IE5+ = 2, NN4 = 3, NN6+ = 4, others = 0
var domId;
domId = document.all?(document.getElementById?2:1):
                    (document.getElementById?4:
                    (document.layers?3:0));

function getFormObj(frmName) {
  if (domId==4)            return document.forms[frmName];
  if (domId==2 || domId==1) return document.forms(frmName);
  if (domId==3)            return document.forms[frmName];
  return null;
}

function setFormSelect(objFormSelect, setValue) {
	var selectLength = objFormSelect.length;
	var indexSetVal;

	for (var i = 0; i < selectLength; i++) {
		objFormSelect[i].selected = false;
		if (objFormSelect[i].value == setValue) {
			indexSetVal = i;
		}
	}
	objFormSelect[indexSetVal].selected = true;
	return;
}

function formatCurrency(sourceNumber){
	var re = /(\d+)(\d{3})/;
	var str = sourceNumber.toString();
	while(re.test(str))str = str.replace(re, "$1,$2");
	return str;
}

function onlyDigit(){
	//半角数字のみ
	return event.keyCode>=48&&event.keyCode<=57;
}

function onlyNum(){
	//integerのみ
	var pos
	pos = getCaretPos(event.srcElement);

	if (event.srcElement.value == "" || document.selection.createRange().text == event.srcElement.value) {
		return event.keyCode>=48&&event.keyCode<=57;
	}

	if (pos == 0) {
		return event.keyCode>48&&event.keyCode<=57;
	}

	if (event.srcElement.value == "0") {
		event.srcElement.value = "";
		return event.keyCode>=48&&event.keyCode<=57;
	} else {
		return event.keyCode>=48&&event.keyCode<=57;
	}
}

function onlyANum(){
	//半角英数字のみ
	return (event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=65&&event.keyCode<=90)||(event.keyCode>=97&&event.keyCode<=122);
}

function getCaretPos(obj) {   
	obj.focus();   

	var currentRange = document.selection.createRange();   
	var workRange = currentRange.duplicate();   

	obj.select();   
	var allRange = document.selection.createRange();   
	var len = 0;   

	while (workRange.compareEndPoints("StartToStart",allRange) > 0) {   
		workRange.moveStart("character",-1);   
		len++;   
	}   

	currentRange.select();   

	return len;   
}   

function onlyMail(){
	//半角英数字,-,_,@のみ
	return (event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=65&&event.keyCode<=90)
		||(event.keyCode>=97&&event.keyCode<=122)||event.keyCode==64
		||event.keyCode==45||event.keyCode==95||event.keyCode==46;
}

function onlyA_Num(){
	//半角英数字,-のみ
	return (event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=65&&event.keyCode<=90)
		||(event.keyCode>=97&&event.keyCode<=122)
		||event.keyCode==45;
}

function calculate_byte(sTargetStr) {
	//文字列の長さ(漢字が2とする)
	var sTmpStr, sTmpChar;
	var nOriginLen = 0;
	var nStrLength = 0;
	 
	sTmpStr = new String(sTargetStr);
	nOriginLen = sTmpStr.length;

	for ( var i=0 ; i < nOriginLen ; i++ ) {
		sTmpChar = sTmpStr.charAt(i);

		if (escape(sTmpChar).length > 4) {
				nStrLength += 2;
		} else {
				nStrLength ++;
		}
	}

	return nStrLength; 
}

function string_length(sTargetStr,intLen) {
	//byteにより文字数を戻る
	var sTmpStr, sTmpChar;
	var nOriginLen = 0;
	var nStrLength = 0;
	 
	sTmpStr = new String(sTargetStr);
	nOriginLen = sTmpStr.length;

	for ( var i=0 ; i < nOriginLen ; i++ ) {
			sTmpChar = sTmpStr.charAt(i);

			if (escape(sTmpChar).length > 4) {
					nStrLength += 2;
			} else {
					nStrLength ++;
			}
			if (nStrLength > intLen) {
				return i;
			} else if (nStrLength == intLen) {
				return i + 1;
			}
	}

	return nOriginLen; 
}
