//정규식을 이용해서 체크하면 간단하게 처리할 수 있습니다.
///////////////////////////////////////////////////////////////////////////
// 형식 체크
// 사용법 : IsTypeCheck(체크할 값,체크할타입, 메시지에 뿌릴 내용=빈칸이면 메시지 출력 안됨.)
//				 IsTypeCheck(objForm.name,"han", "담당자명")
//				 IsTypeCheck(objForm.name,"han", "")		-- 메시지 출력 안됨.
// 수정 : 2007.11.12 PHH - value 값이 아닌 폼이름을 가져옴. alert 출력 후 해당 textbox로 focus 이동
// 수정 : 2008.03.21 PHH - 문자열 길이 만큼 반복해서 체크하도록 수정
///////////////////////////////////////////////////////////////////////////
function IsTypeCheck(pStrForm, pStrType, pStrName) {
	var result = false;
	var frmName = pStrForm

	if(typeof pStrForm == 'string') {
		var testValue = frmName;
	} else {
		var testValue = frmName.value;
	}

	var chkValue, chkAlert;

	switch(pStrType.toLowerCase()) {
		case "num" :
			chkValue=/[0-9０-９]$/;
			chkAlert=pStrName + " 数字だけ入力できます。" //" 숫자만 입력가능합니다.";
			break;
		case "knum" :
			chkValue=/[0-9０-９]$/;
			chkAlert=pStrName + " 숫자만 입력가능합니다.";
			break;
		case "khan" :
			chkValue=/[ㄱ-ㅎㅏ-ㅣ가-힣]$/;
			chkAlert=pStrName + " 한글만 입력가능합니다.";
			break;
		case "eng" :
			chkValue=/[a-zA-Z]$/;
			chkAlert=pStrName + " 英語だけ入力できます。"; // "영문만 입력가능합니다.";
			break;
		case "notnum" :
			chkValue=/[^(ㄱ-ㅎㅏ-ㅣ가-힣)^(0-9)^(~!@#$%^&*()_+:?></,.|:;\)]$/;
			chkAlert=pStrName + " 英語だけ入力できます。";
			break;
		case "engkr" :
			chkValue=/[ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z]$/;
			chkAlert=pStrName + " 한글과 영문만 입력가능합니다.";
			break;
		case "numeng" :
			chkValue=/[a-zA-Z0-9]$/;
			chkAlert=pStrName + " 숫자와 영문만 입력가능합니다.";
			break;
		case "nothan" :
			chkValue=/[^(ㄱ-ㅎㅏ-ㅣ가-힣)]$/;
			chkAlert=pStrName + " 한글은 입력할 수 없습니다.";
			break;
		case "jp" :
			chkValue=/[^(ㄱ-ㅎㅏ-ㅣ가-힣)^(~!@#$%^&*()_+:?></,.|:;\)^(a-zA-Z)^(0-9)]$/;
			chkAlert=pStrName + " 漢字だけ入力できます。"; //한자만 입력가능합니다.
			break;
		case "onlychar" :
			chkValue=/[ㄱ-ㅎㅏ-ㅣ가-힣a-zA-Z0-9]$/;
			chkAlert=pStrName + " 文字だけ入力できます。";
			break;
		case "money" :
			chkValue=/[0-9,]$/;
			chkAlert = pStrName + " 숫자만 입력가능합니다.";
			break;
		case "code" :
			chkValue=/[a-zA-Z0-9-_]$/;
			chkAlert=pStrName + " 数字, 英語, _, - だけ入力できます。";
			break;
		default :
			result = true;
			break;
	}

	for (i=0; i<testValue.length; i++) {
		var str = "";
		str = testValue.substr(i, 1);

		if (chkValue.test(str)) {
		} else {
			alert(chkAlert);
			frmName.focus();
			return false;
		}
	}

	return  true;
}

///////////////////////////////////////////////////////////////////////////
// 형식 체크
// 사용법 : IsTypeStringCheck(체크할 값,체크할타입, 메시지에 뿌릴 내용=빈칸이면 메시지 출력 안됨.)
//				 IsTypeCheck(objForm.name,"han")
///////////////////////////////////////////////////////////////////////////
function IsTypeStringCheck(pStrForm, pStrType) {
	var result = false;
	var frmName = pStrForm

	if(typeof pStrForm == 'string') {
		var testValue = frmName;
	} else {
		var testValue = frmName.value;
	}

	var chkValue, chkAlert;

	switch(pStrType.toLowerCase()) {
		case "email" :
			//chkValue = /[a-zA-Z0-9]+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
			chkValue = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
			chkAlert = "メールアドレスは aaa@bbb.ccc のような形で入力しください。"; //잘못된 형식의 이메일 주소 입니다.
			break;
		case "kemail" :
			//chkValue = /[a-zA-Z0-9]+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
			chkValue = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
			chkAlert = "잘못된 형식의 이메일 주소 입니다.\n\ndawit@dawit.co.kr과 같은 형식으로 입력해 주세요.";
			break;
		case "phone" :
			chkValue = /^(0)(2|3[1-3]|4[1-3]|5[1-5]|6[1-4])?-\d{3,4}-\d{4}$/;
			chkAlert = "잘못된 형식의 전화번호 입니다.";
			break;
		case "zipcode" :
			chkValue = /\d{3}-\d{3}$/;
			chkAlert = "잘못된 형식의 우편번호 입니다.";
			break;
		case "mobile" :
			chkValue = /^(01[0,1,6,7,8,9])-\d{3,4}-\d{4}$/;
			chkAlert = "잘못된 형식의 휴대전화번호 입니다.\n\n000-0000-0000과 같은 형식으로 입력해 주세요.";
			break;
		case "url" :
			chkValue = /^(?:(?:ftp|https?):\/\/)?(?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\.)+(?:com|edu|biz|org|gov|int|info|mil|net|name|museum|coop|aero|[a-z])\b(?:\d+)?(?:\/[^;"'<>()\[\]{}\s\x7f-\xff]*(?:[.,?]+[^;"'<>()\[\]{}\s\x7f-\xff]+)*)?/;
			chkAlert = "잘못된 형식의 URL 입니다.";
			break;
		case "date" :
			chkValue =/^\d{4}([-/])\d{1,2}\1\d{1,2}$/;
			chkAlert = "잘못된 형식의 날짜 입니다.";
			break;
		case "deciaml" :
			chkValue=/[0-9.]$/;
			chkAlert = "잘못된 형식의 소수 입니다.";
			break;
	}

	if (chkValue.exec(testValue) == null){
//		if(pStrName != ''){
			alert(chkAlert);
			frmName.focus();
//		}
		return false;
	}

	return  true;
}


///////////////////////////////////////////////////////////////////////////
// 폼 값이 있는지 판별한다.
// IsValue(필드명, 필드이름)
///////////////////////////////////////////////////////////////////////////
function IsValue(id, name){
	//if(!field.value){
	var field = document.getElementById(id);

	if(!field) return true;
	if(field.value.split(" ").join("").length < 1){
		alert(name + ' 入力してください。');
		field.focus();
		return false;
	}
	return true;
}

///////////////////////////////////////////////////////////////////////////
// 폼 값이 있는지 판별한다.
// IsSelectValue(필드명, 필드이름)
///////////////////////////////////////////////////////////////////////////
function IsSelectValue(id, name){
	//if(!field.value){
	var field = document.getElementById(id);

	if(!field) return true;
	if(field.value.split(" ").join("").length < 1){
		alert(name + ' 選択してください。');
		field.focus();
		return false;
	}
	return true;
}

///////////////////////////////////////////////////////////////////////////
// 값길이 제한
// MaxLength(필드명, 필드이름, 최소값, 최대값)
///////////////////////////////////////////////////////////////////////////
function MaxLength(id, name, min, max){
	var field = document.getElementById(id);
	var data = field.value.length;
	if (!(data >= min && data <= max)){
		alert(name + ' ' + min + '자 이상 ' + max + '자 이하로 입력하세요.');
		field.value = "";
		field.focus();
		return false;
	}
	else
		return true;
}

///////////////////////////////////////////////////////////////////////////
// radiobox, checkbox 값 체크
// 사용법 : BoxCheck(필드명, 경고메세지)
// 수정내역 : 2005.01.03 데이타가 하나일경우 처리프로세스
///////////////////////////////////////////////////////////////////////////
function BoxCheck(name, str) {
	var field = document.getElementsByName(name);
	var i, temp;
	if(field.length>0){
		for(i=0;i<field.length;i++){
			if(field[i].checked==0){
				temp = 0;
			}
			else{
				temp = 1;
				break;
			}
		}
	}
	else if(field.length>=1){
		if(field.checked==0)
			temp = 0;
		else
			temp = 1;
	}
	else
		temp = 0;

	if(temp==0){
		alert(str);
		return false;
	}
	else
		return true;
}


///////////////////////////////////////////////////////////////////////////
// 값길이 제한
// IsMexLength(필드명, 필드이름)
///////////////////////////////////////////////////////////////////////////
function IsMexLength(id, kname){
	var field = document.getElementById(id);
	var value = field.value;
	if(field.getAttribute("maxlength"))
	{
		if(lenb(value)>parseInt(field.getAttribute("maxlength")))
		{
			alert(kname + " " + field.getAttribute("maxlength") + "Byte이상 입력할 수 없습니다. (현재 "+lenb(value)+"Byte)");
			return false;
		}
	}

	return true;
}

///////////////////////////////////////////////////////////////////////////
//입력길이 체크함수(바이트비교)
///////////////////////////////////////////////////////////////////////////
function CheckLen(textname,bytesname){
	var t;
	var msglen;
	msglen=0;
	l=textname.value.length;
	for(k=0;k<l;k++){
		t=textname.value.charAt(k);
		if(escape(t).length>4) msglen+=1;
		else msglen++;
	}
	bytesname.value=msglen;
}

///////////////////////////////////////////////////////////////////////////
//입력길이체크하기 함수(단순비교)
///////////////////////////////////////////////////////////////////////////
function CheckLen1(name,minlen,maxlen) {
        if (name.value.length < minlen)
        {
            // alert("입력된 값의 길이가 짧습니다!");
            name.focus();
            return false;
        }
        else if (name.value.length > maxlen)
        {
            // alert("입력된 값의 길이가 너무 깁니다!");
            name.focus();
            return false;
        }
        else
            return true;
}

String.prototype.bytes = function() {
	var str = this;
	var l = 0;
	for (var i=0; i<str.length; i++) l += (str.charCodeAt(i) > 128) ? 2 : 1;
	return l;
}

function saveCurrentPos(pTextArea)
{
	objTextArea = pTextArea;

	if (objTextArea.createTextRange)
		objTextArea.currentPos = document.selection.createRange().duplicate();
}
/** Textarea 쓰인 글자 수 제한 사용자에게 보여주기 끝 **/

///////////////////////////////////////////////////////////////////////////
//입력길이 체크함수(바이트비교)
///////////////////////////////////////////////////////////////////////////
function CheckLenNumber(pTextarea, pMaxLength, pMsg){
	var textValue = pTextarea.value;
	var textByte = textValue.bytes();

	count.innerHTML = textByte + ' / ' + pMaxLength + ' Byte';

    if (textByte> pMaxLength){
		alert(pMsg + "는 " + pMaxLength + "자까지만 쓰실 수 있습니다.");
		pTextarea.value = pTextarea.value.cut(pMaxLength);
		count.innerHTML = pTextarea.value.bytes() + '/' + pMaxLength;
		return;
    }

}