﻿var isNetscape = window.netscape;

__pattern = {
		email:	/^[_a-zA-Z0-9-\.]+@[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/,
		email1:	/^[_a-zA-Z0-9-\.]+$/,
		email2:	/^[\.a-zA-Z0-9-]+\.[a-zA-Z]+$/,
		han:		/^[가-힝]*$/,
		eng:		/^[a-zA-Z\s]*$/,
		num:		/^[0-9]*$/,
		engnum:	/^[0-9a-zA-Z_]*$/
	};

var cobj = null;
var valcheck = {};

//폼 변수를 찾는다.
//getElementObject(document.frmReg, 'addr1')  <-- document.frmReg폼의 addr1변수 객체를 반환
function getElementObject(form, name) {
	if (form == null) return null;
	if (form.elements) {
		var obj = form.elements[name];
		if (obj != null && obj.name == name) return obj;
	}
	try {
		for (var i = 0; i < form.length; i++)
			if (form.elements[i].name == name) return form.elements[i];
	} catch (e) {
		// alert('해당 요소를 찾을 수 없습니다 : ' + form);
	}
	return null;
}

// form 변수에 값을 설정한다.
// ex) setFormValue(document.frmReg, 'addr1', 'xxx'); <-- document.frmReg 폼의 addr1 변수에 값을 설정
function setFormValue(form, name, value) {
	var obj = getElementObject(form, name);
	if (obj == null || isEmpty(obj.type)) return null;

	switch (obj.type) {
	case "text": case "password": case "hidden":
	case "textarea":			obj.value = value;
	case "checkbox":		if (value != null) obj.checked = (obj.value == value); break;
	case "radio":				setRadioValue(obj, value); break;
	case "select-one":		setSelectOneValue(obj, value); break;
	case "file":
	case "submit":
	case "button":			break;
	default: alert("setFormValue: not support type: " + obj.type);
	}
}

//form 변수의 값을 구한다.
//ex) getFormValue(document.frmReg, 'addr1'); <-- document.frmReg폼의 addr1변수를 조회
//ex) getFormValue(document.frmReg.addr1); <-- addr1 object의 값을 조회
function getFormValue(obj, name) {
	if (name != null) obj = getElementObject(obj, name);
	else if (typeof(obj) == 'string') obj = getElementObject(obj);
	if (obj == null) return null;
	switch (obj.type) {
	case "text": case "password": case "hidden": case "file": case "select-one":
	case 'textarea':		return obj.value;
	case "checkbox":	return obj.checked ? obj.value : "";
	case "radio":			return getRadioValue(obj);
	case "submit":
	case "button":		return null;
	//default: if (isNotEmpty(obj.type)) { alert("getElementValue: not support type: " + obj.type + ", key = " + obj.name); }
	}
	return null;
}

// form element의 값을 구한다.
// getFormValue와는 checkbox,radio값을 가져오는 방식이 다르다.
function getElementValue(obj) {
	switch (obj.type) {
	case "text": case "file": case "password": case "hidden": case "select-one":
	case "textarea":		return obj.value;
	case "checkbox":
	case "radio":			return obj.checked ? obj.value : null;
	case "submit":
	case "button":		return null;
	//default: if (isNotEmpty(obj.type)) { alert("getElementValue: not support type: " + obj.type + ", key = " + obj.name); }
	}
	return null;
}


function $FS(obj, name, value) {
	return setFormValue(obj, name, value);
}

function $FV(obj, name) {
	return getFormValue(obj, name);
}

function $FO(obj, name) {
	return getElementObject(obj, name);
}



// 폼의 라디오 변수 값을 구한다 . by accplus
function getRadioValue(obj, needObject) {
    // array로 시도해 보고
    if (needObject == false)
        for (var i = 0; i < obj.length; i++)
            if (obj[i].checked)
                return obj[i].value;

    // 안되면 폼을 죄다 찾는다
    var pForm = obj.form;

    for (var i = 0; i < pForm.length; i++) {
        var tmpObj = pForm.elements[i];
        if (tmpObj.name == obj.name && tmpObj.type == "radio" && tmpObj.checked)
            return (needObject) ? tmpObj : tmpObj.value;
    }
    return null;
}

// Radio 변수 값을 지정한다.
function setRadioValue(obj, value) {
    // array로 시도해 보고
    for (var i = 0; i < obj.length; i++) {
        if (obj[i].value == value) {
            obj[i].checked = true;
            return true;
        }
    }

    // 안되면 폼을 다 찾는다
    var pForm = obj.form;

    for (var i = 0; i < pForm.length; i++) {
        var tmpObj = pForm.elements[i];
        if (tmpObj.name == obj.name && tmpObj.type == "radio" && tmpObj.value == value) {
            tmpObj.checked = true;
            return true;
        }
    }

    return false;
}

// select 변수 값을 지정한다.
function setSelectOneValue(object, value) {
    for (var i = 0; i < object.length; i++) {
    	var ovalue = object.options[i].value;
    	if (ovalue == null) ovalue = object.options[i].text;
        if (ovalue == value) {
            object.selectedIndex = i;
			return true;
        }
    }
    return false;
}

function trim(str) {
	return (str == null) ? "" : str.replace(/(^\s*)|(\s*$)/g, "");
}

function isNotEmpty(str) {
	return str != null && (""+str).length > 0;
}

function isEmpty(str) {
	return !isNotEmpty(str);
}


function setCookie(name, value, expiredays) {
    var todayDate = new Date();
    todayDate.setDate(todayDate.getDate() + expiredays);
	if(expiredays == 0)
	   document.cookie = name + "=" + escape(value) + "; path=/;"
	else
        document.cookie = name + "=" + escape(value) + "; path=/; expires=" + todayDate.toGMTString() + ";"
}

function getCookie(name) {
    var nameOfCookie = name + "=";
    var x = 0;
    while (x <= document.cookie.length) {
        var y = (x+nameOfCookie.length);
        if (document.cookie.substring(x, y) == nameOfCookie) {
            if ((endOfCookie=document.cookie.indexOf(";", y)) == -1)
            endOfCookie = document.cookie.length;
            return unescape(document.cookie.substring(y, endOfCookie));
        }
        x = document.cookie.indexOf(" ", x) + 1;
        if (x == 0)
            break;
    }
    return "";
}

// 최소 길이 및 최대길이 그리고 허용가능한 문자를 체크한다. by accplus
//	if (Tcheck(f.ID, '아이디', 4, 8, __pattern.userid)) return false
// lmin,lmax = 0,0 -- 패턴만 체크한다
// lmin,lmax = 1,0 -- 필수입력
function Tcheck(target, title, lmin, lmax, pattern, alertMsg, cvalue) {
	var i;
	var value = trim(getFormValue(target));
	
	if (cvalue != null) {
		if (cvalue == value) return true;
		if (alertMsg != null) alert(alertMsg);
		else alert(title + '이(가) 틀렸습니다.');
		if (target.type != "hidden") target.focus();
		return false;
	}

	if ((lmin > 0 && lengthb(value)) < lmin || (lmax > 0 && lengthb(value) > lmax)) {
		if (isEmpty(value)) {
			if (alertMsg != null) alert(alertMsg);
			else {
				var msg = (target.type == 'select-one' || target.type == 'radio') ? "선택" : "입력";
				alert(title + '(을)를 ' + msg + '하셔야 합니다');
			}
		} else if (lmin == lmax) {
			if (alertMsg != null) alert(alertMsg);
			else alert(title + '(은)는 ' + lmin + ' 글자(byte)로 입력하셔야 합니다');
		} else {
			if (lmin > 0 && lmax > 0) {
				if (alertMsg != null) alert(alertMsg);
				else alert(title + '는 ' + lmin + ' ~ ' + lmax + ' 글자(byte) 이내로 입력하셔야 합니다');
			} else if (lmin > 0) {
				if (alertMsg != null) alert(alertMsg);
				else alert(title + '는 ' + lmin + ' 글자(byte) 보다 많이 입력하셔야 합니다');
			} else {
				if (alertMsg != null) alert(alertMsg);
				else alert(title + '는 ' + lmax + ' 글자(byte) 이내로 입력하셔야 합니다');
			}
		}
		if (target.type != "hidden") target.focus();
		return false;
	}

	if (isNotEmpty(value) && pattern != null && pattern.test(value) == false) {
		if (alertMsg != null) alert(alertMsg);
		else alert(title + '에 허용할 수 없는 문자가 입력되었거나 형식이 틀렸습니다');
		target.select();
		return false;
	}

	return true;
}

function form_value_check(obj) {

	__this = obj;
	var title, lmin, lmax, pattern, oncheck, msg, cvalue;
	var attr = valcheck[obj.name];
	
	if (attr != null) { // valcheck 변수로 체크
		title       = attr.title;
		lmin        = attr.min;
		lmax        = attr.max;
		pattern     = attr.pattern;
		oncheck     = attr.oncheck;
		msg         = attr.msg;
		cvalue      = attr.cvalue;
		
		if (title == null) title = obj.getAttribute('title'); // title은 attribute로 대체 가능 
	
	} else if (obj.getAttribute("min") != null || obj.getAttribute("cvalue") != null) { // min 또는 cvalue 값이 있으면 체크
		title       = obj.getAttribute('title');
		lmin        = obj.getAttribute('min');
		lmax        = obj.getAttribute('max');
		pattern     = obj.getAttribute('pattern');
		oncheck     = obj.getAttribute('oncheck');
		msg         = obj.getAttribute('msg');
		cvalue      = obj.getAttribute('cvalue');
	
	} else if (cobj != null) { // 둘다 없고 cobj가 있으면 체크
		return cobj(obj);
	}
	
	if (pattern != null) pattern = __pattern[pattern];
	
	if (oncheck != null) { // oncheck가 있으면 실행하여 false이 결우 체크 안함 
		try {
			if (typeof oncheck == 'boolean') {
				if (oncheck == false) return true;
			} else if (typeof oncheck == 'string') {
				if (eval(oncheck) == false) return true;
			} else if (typeof oncheck == 'function') {
				if (oncheck(obj) == false) return true;
			}
		} catch (e) {
			alertException(e);
			return false;
		}
	}
	return Tcheck(obj, title, lmin, lmax, pattern, msg, cvalue);
}

//체크 폼
function TcheckForm(form, fields) {
	
	if (fields == null) {
		for (var i = 0; i < form.length; i++) {
			if (form_value_check(form.elements[i]) == false) return false;
		}
	} else {
		for (var i = 0; i < fields.length; i++) {
			if (form_value_check($FO(form, fields[i])) == false) return false;
		}
	}
	return true;
}

function TcheckFormSubmit(form, fields) {
	if (TcheckForm(form, fields) == false) return;
	form.submit();
}

//포커스 이동
function nextFocus(obj, ev) {
	var fname = obj.name;
	var isShift = isShiftPress(ev);

	var next_obj = isShift ? prev_element(obj) : next_element(obj);
	if (next_obj != null) {
		
		if ((next_obj.type == "text" || next_obj.type == "password")
				&& next_obj.getAttribute("select_all") != "false") next_obj.select();
		
		try {
			keyRelease(ev);
			next_obj.focus();
		} catch (e) {
			// alert('경고 : focus 실패 : name = ' + next_obj.name);
		}
	}
}

//다음 form 요소를 찾는다
function next_element(obj) {
	var f = obj.form;
	if (f == null) {
		alert("오류!! <form>태그가 없는듯 합니다.");
		return;
	}
	var next_obj = null;
	for (var i = 0; i < f.elements.length; i++) {
		if (obj != f.elements[i]) continue;
		for (var j = i+1; j < f.elements.length; j++) {
			next_obj = f.elements[j];
			if			(next_obj.name == obj.name) continue;
			else if	(next_obj.type == 'text' && next_obj.disabled == true) continue;
			else if	(next_obj.type == 'hidden') continue;
			else if	(next_obj.readOnly == true) continue;
			else if	(next_obj.type == 'radio') {
				var robj = getRadioValue(next_obj, true);
				if (robj != null) return robj;
			}
			return next_obj;
		}
	}
	return null;
}

//이전 form 요소를 찾는다
function prev_element(obj) {
	var f = obj.form;
	var next_obj = null;
	for (var i = 0; i < f.elements.length; i++) {
		if (obj != f.elements[i]) continue;
		for (var j = i-1; j >= 0; j--) {
			next_obj = f.elements[j];
			if (next_obj.name == obj.name) continue;
			else if (next_obj.type == 'text' && next_obj.disabled == true) continue;
			else if (next_obj.type == 'hidden') continue;
			else if (next_obj.readOnly == true) continue;
			else if (next_obj.type == 'radio') {
				var robj = getRadioValue(next_obj, true);
				if (robj != null) return robj;
			}
			return next_obj;
		}
	}
	return null;
}

//눌린 키
function getKeyCode(ev) {
	return isNetscape ? ev.which : event.keyCode;
}
//시프트가 눌렸나 ?
function isShiftPress(ev) {
	return isNetscape ? ev.shiftKey : event.shiftKey;
}
//키 입력 무효화
function keyRelease(ev) {
	if (isNetscape) ev.preventDefault();
	else event.returnValue = false;
}

function alertException(e) {
	var buf = "오류 : " + e + "\n\n--상세내용--";
	for (k in e) buf += "\n" + k + " : " + e[k];
	alert(buf);
}

//엔터키 체크
//사용법 : onKeyDown="ckey(this,event)"
//사용법 : onKeyDown="ckey(this,event,false)" -- 자동으로 다음포커스 기능을 끄고 싶을때
//사용법 : onKeyDown="ckey(this,event,function)" -- 지정한 함수를 호출
var __this = null;
function ckey(obj, ev) {
	__this = obj;
	var fname = obj.name;
	var k = getKeyCode(ev);
	if (isNetscape) event = ev;
	var k = isNetscape ? event.which : event.keyCode;
	if (k == 9 || k == 13) {
		if (!isShiftPress(ev)) {
			if (form_value_check(obj) == false) {
				keyRelease(ev);
				return;
			}
		}
		try {
			var onnext = obj.getAttribute("onnext");
			if (onnext == null) {
				keyRelease(ev);
				var onenter = obj.getAttribute("onenter");
				if (k == 13 && onenter != null) {
					if (typeof onenter == 'string') eval(onenter);
					else if (typeof onenter == 'function') onenter(obj, ev);
					return;
				}
				nextFocus(obj, ev);
			} else if (typeof onnext == 'string') {
				keyRelease(ev);
				if (eval(onnext) == true) nextFocus(obj, ev);
			} else if (typeof onnext == 'function') {
				keyRelease(ev);
				if (onnext(obj, ev) == true) nextFocus(obj, ev);
			}
		} catch (e) {
			alertException(e);
		}
	}
}

// 해당 길이에 도달하면 자동으로 다음칸으로 이동한다
//사용법 : onKeyUp="autoNext(this,event)"
function autoNext(obj, ev) {
	var len = obj.getAttribute("autonext");
	if (len == null) return;
	
	var k = getKeyCode(ev);
	if (isNetscape) event = ev;
	var k = isNetscape ? event.which : event.keyCode;
	// alert(k);
	if (k == 8 || k == 9 || k == 16 || ( k >= 33 && k <= 46 )) return;
	if (obj.value.length >= len) nextFocus(obj, ev);
}



function checkResidentno(num) {
    var pattern = /^(\d{6})-?(\d{5}(\d{1})\d{1})$/;
    if (!pattern.test(num)) return false;
    num = RegExp.$1 + RegExp.$2;
    if (RegExp.$3 == 7 || RegExp.$3 == 8 || RegExp.$4 == 9)
        if ((num[7]*10 + num[8]) %2) return false;

    var sum = 0;
    var last = num.charCodeAt(12) - 0x30;
    var bases = "234567892345";
    for (var i=0; i<12; i++) {
        if (isNaN(num.substring(i,i+1))) return false;
        sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
    }
    var mod = sum % 11;
    if(RegExp.$3 == 7 || RegExp.$3 == 8 || RegExp.$4 == 9)
        return (11 - mod + 2) % 10 == last ? true : false;
    else
        return (11 - mod) % 10 == last ? true : false;
}

function checkJumin(num) {
    var pattern = /^([0-9]{6})-?([0-9]{7})$/;
    if (!pattern.test(num)) return false;
    num = RegExp.$1 + RegExp.$2;

    var sum = 0;
    var last = num.charCodeAt(12) - 0x30;
    var bases = "234567892345";
    for (var i=0; i<12; i++) {
        if (isNaN(num.substring(i,i+1))) return false;
        sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
    }
    var mod = sum % 11;
    return (11 - mod) % 10 == last ? true : false;
}

function checkForeignerno(num) {
    var pattern = /^(\d{6})-?(\d{5}[7-9]\d{1})$/;
    if (!pattern.test(num)) return false;
    num = RegExp.$1 + RegExp.$2;
    if ((num[7]*10 + num[8]) %2) return false;

    var sum = 0;
    var last = num.charCodeAt(12) - 0x30;
    var bases = "234567892345";
    for (var i=0; i<12; i++) {
        if (isNaN(num.substring(i,i+1))) return false;
        sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
    }
    var mod = sum % 11;
    return (11 - mod + 2) % 10 == last ? true : false;
}

function checkBizno(num) {
    var pattern = /([0-9]{3})-?([0-9]{2})-?([0-9]{5})/;
    if (!pattern.test(num)) return false;
    num = RegExp.$1 + RegExp.$2 + RegExp.$3;
    var cVal = 0;
    for (var i=0; i<8; i++) {
        var cKeyNum = parseInt(((_tmp = i % 3) == 0) ? 1 : ( _tmp  == 1 ) ? 3 : 7);
        cVal += (parseFloat(num.substring(i,i+1)) * cKeyNum) % 10;
    }
    var li_temp = parseFloat(num.substring(i,i+1)) * 5 + "0";
    cVal += parseFloat(li_temp.substring(0,1)) + parseFloat(li_temp.substring(1,2));
    return parseInt(num.substring(9,10)) == 10-(cVal % 10)%10 ? true : false;
}

function checkPhone(num) {
    var pattern = /^(0[2-8][0-5]?|01[01346-9])-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/;
    var pattern15xx = /^(1544|1566|1577|1588|1644|1688)-?([0-9]{4})$/;
    return pattern.exec(num) || pattern15xx.exec(num) ? true : false;
}

function checkHomePhone(num) {
    var pattern = /^(0[2-8][0-5]?)-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/;
    var pattern15xx = /^(1544|1566|1577|1588|1644|1688)-?([0-9]{4})$/;
    return pattern.exec(num) || pattern15xx.exec(num) ? true : false;
}

function checkHp(num) {
    var pattern = /^(01[01346-9])-?([1-9]{1}[0-9]{2,3})-?([0-9]{4})$/;
    return pattern.exec(num) ? true : false;
}

function checkUserid(value) {
	var pattern = /^[a-zA-Z]{1}[a-zA-Z0-9_]{3,19}$/;
    return pattern.test(value) ? true : "4자이상 12자 미만으로 입력하십시오.\n   - 영문, 숫자, _ 문자만 사용할 수 있습니다";
}



// 스트링의 바이트 수를 리턴한다. (멀티바이트(한글)길이 체크용)
//
// var len = lengthb("한 글");	--> 결과 = 5
//
function lengthb(str) {
	if (str == null) return 0;
	var cnt = 0;
	for (var i=0; i<str.length; i++)
	{
		var c = str.substr(i,1);
		if (c.charCodeAt(0) > 127) cnt++;
		cnt++;
	}
	return cnt;
}

function length(str) {
	if (str == null) return 0;
	return str.length;
}

// Hash객체를 Merge한다
function merge(array1, array2) {
	var ret = {};
	for (var v in array1) { ret[v] = array1[v]; };
	for (var v in array2) { ret[v] = array2[v]; };
	return ret;
}

// form의 값들을 객체로 반환한다
// 만약 value가 여러개인 값이 있다면 delimiter(기본컴마)로 합친다.
function getFormData(form, fields, delimiter) {
	var data = {};
	if (delimiter == null) delimiter = ",";

	if (fields == null) {
		for (var i = 0; i < form.elements.length; i++) {
			var key = form.elements[i].name;
			var value = getElementValue(form.elements[i]);
			if (key != "" && value != null) 
				data[key] = data[key] == null ? value : data[key] + delimiter + value;
		}
	} else {
		for (var i = 0; i < fields.length; i++) {
			var key = fields[i];
			var value = getElementValue($FO(form, key));
			if (key != "" && value != null) 
				data[key] = data[key] == null ? value : data[key] + delimiter + value;
		}
	}
	return data;
}


//실시간 입력창에 콤마 찍기
function CheckComma(element) {
	var num = element.value;
	if (element.value.length >= 4) {
		re = /^$|,/g;
		num = num.replace(re, "");
		fl=""
		if(isNaN(num)) { alert("문자는 사용할 수 없습니다.");return 0}
		if(num==0) return num
		if(num<0) {
			num=num*(-1)
			fl="-"
		}
		else {
			num=num*1 //처음 입력값이 0부터 시작할때 이것을 제거한다.
		}
		num = new String(num)
		temp=""
		co=3
		num_len=num.length
		while (num_len>0) {
			num_len=num_len-co
			if(num_len<0) {co=num_len+co;num_len=0}
			temp=","+num.substr(num_len,co)+temp
		}
		element.value = fl + temp.substr(1);
	}
}


// 주민등록번호 체크
function checkRegno(regno) {
    var pattern = /^([0-9]{6})-?([0-9]{7})$/;
    var num = regno;
    if (!pattern.test(num)) return false;
    num = RegExp.$1 + RegExp.$2;

    var sum = 0;
    var last = num.charCodeAt(12) - 0x30;
    var bases = "234567892345";
    for (var i=0; i<12; i++) {
        if (isNaN(num.substring(i,i+1))) return false;;
        sum += (num.charCodeAt(i) - 0x30) * (bases.charCodeAt(i) - 0x30);
    }
    var mod = sum % 11;
    return (11 - mod) % 10 == last ? true : false;
}

//사업자등록번호 체크
function checkBizno(bizno) {
    var pattern = /([0-9]{3})-?([0-9]{2})-?([0-9]{5})/;
    var num = bizno;
    if (!pattern.test(num)) return false;
    num = RegExp.$1 + RegExp.$2 + RegExp.$3;
    var cVal = 0;
    for (var i=0; i<8; i++) {
        var cKeyNum = parseInt(((_tmp = i % 3) == 0) ? 1 : ( _tmp  == 1 ) ? 3 : 7);
        cVal += (parseFloat(num.substring(i,i+1)) * cKeyNum) % 10;
    }
    var li_temp = parseFloat(num.substring(i,i+1)) * 5 + "0";
    cVal += parseFloat(li_temp.substring(0,1)) + parseFloat(li_temp.substring(1,2));
    return parseInt(num.substring(9,10)) == 10-(cVal % 10)%10;
}

// 체크박스를 전체 선택/해제 한다
function setCheckAll(form, name, check) {
	for (var i = 0; i < form.elements.length; i++) {
		var element = form.elements[i];
		if (element.name == name && element.type == "checkbox") {
			element.checked = check;
		}
	}
}

// 체크박스 설정
function setCheckbox(form, name, value, ischeck) {
	for (var i = 0; i < form.elements.length; i++) {
		var element = form.elements[i];
		if (element.type == 'checkbox' && element.name == name && element.value == value) {
			element.checked = ischeck;
		}
	}
}

// 체크여부 조회
function getCheckbox(form, name, value) {
	for (var i = 0; i < form.elements.length; i++) {
		var element = form.elements[i];
		if (element.type == 'checkbox' && element.name == name && element.value == value) {
			return element.checked;
		}
	}
	return false;
}

//체크된 체크박스들의 값들을 가져온다
//ex) getCheckboxValues(f1, "cuserid") == aaa,bb,ccc
function getCheckboxValues(form, name, delimiter, defaultValue) {
	if (delimiter == null) delimiter = ",";
	if (defaultValue == null) defaultValue = "";
	var ret = null;
	for (var i = 0; i < form.elements.length; i++) {
		var element = form.elements[i];
		if (element.type == 'checkbox' && element.name == name && element.checked) {
			ret = (ret == null) ? element.value : ret + delimiter + element.value;
		}
	}
	return ret == null ? defaultValue : ret;
}

function setCheckboxValues(form, name, values, delimiter) {
	if (delimiter == null) delimiter = ",";
	if (isEmpty(values)) values = "";

	var tmpArr = values.split(delimiter);
	var vdata = new Array();
	for(var i=0; i<tmpArr.length; i++)
		vdata[tmpArr[i]] = true;

	var ret = null;
	for (var i = 0; i < form.elements.length; i++) {
		var element = form.elements[i];
		if (element.type == 'checkbox' && element.name == name) {
			element.checked = vdata[element.value] == true ? true : false;
		}
	}
}

// 토글및 조회
function getCheckboxToggle(form, name, value) {
	for (var i = 0; i < form.elements.length; i++) {
		var element = form.elements[i];
		if (element.type == 'checkbox' && element.name == name && element.value == value) {
			element.checked = !element.checked;
			return element.checked;
		}
	}
	return false;
}


// 전화번호 마이너스(-) 기호 추가
function addMinus(obj) {
	var fname = obj.name;
	var e = isNotEmpty(obj.value);

	if (((e && fname == "tel") || (e && fname == "hp")) &&  (obj.value).indexOf("-") < 0) {
		// sample : 02-123-1234 (9자리) 서울(02)+국번3자리+번호4자리
		if ((obj.value).length == 9) {
				obj.value = (obj.value).substring(0,2) + '-' + (obj.value).substring(2,5) + '-' + 	(obj.value).substring(5,9);
		} else if ((obj.value).length == 10) {
			if ((obj.value).indexOf("02") == 0) {
				obj.value = (obj.value).substring(0,2) + '-' + (obj.value).substring(2,6) + '-' + 	(obj.value).substring(6,10);
			// sample : 016-123-1234 (10자리) 핸드폰통신사 또는 지역번호(서울제외)(3자리) + 국번(3자리)+번호4자리
			} else {
				obj.value = (obj.value).substring(0,3) + '-' + (obj.value).substring(3,6) + '-' + 	(obj.value).substring(6,10);
			}
		// sample : 016-1234-1234 (11자리) 핸드폰통신사 또는 지역번호(서울제외)(3자리) + 국번(4자리)+번호4자리
		} else if ((obj.value).length == 11) {
				obj.value = (obj.value).substring(0,3) + '-' + (obj.value).substring(3,7) + '-' + 	(obj.value).substring(7,11);
		}
	} else if (e && fname == "regno"  && (obj.value).indexOf("-") < 0) {
		obj.value = ((obj.value).length == 13) ? (obj.value).substring(0,6) + '-' + (obj.value).substring(6,13) : obj.value ;
	}
}


function comma(str) {
    var txtNumber = '' + str;
    if (isNaN(txtNumber) || txtNumber == "") {
	    // alert("숫자만 입력 하세요");
    	return "";
    } else {
	    var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])');
	    var arrNumber = txtNumber.split('.');
	    arrNumber[0] += '.';
	    do {
	    	arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2');
	    } while (rxSplit.test(arrNumber[0]));
	    if (arrNumber.length > 1) {
	    	return arrNumber.join('');
	    } else {
	    	return arrNumber[0].split('.')[0];
	    }
    }
}

//콤마 빼기
function removeComma(str) {
	if (isEmpty(str)) return "";
	re = /^\$|,/g;
	// "$" and "," 입력 제거
	return str.replace(re, "");
}

function commaObj(obj) {
	if (isNotEmpty(obj.value) && isNaN(obj.value)) {
		if (isNotEmpty(obj.title)) {
			alert(obj.title + "는(은) 숫자로 입력하셔야 합니다");
		} else {
			alert("숫자로 입력하셔야 합니다");
		}
		obj.value = "";
		obj.focus();
		return;
	}
	obj.value = comma(obj.value);
}

function removeCommaObj(obj) {
	obj.value = removeComma(obj.value);
	obj.select();
}


function checkDefaultIn(obj) {
	if (obj.value == obj.defaultValue) obj.value = '';
}

function checkDefaultOut(obj) {
	if (obj.value == '') obj.value = obj.defaultValue;
}


function getCenterPosition(w, h) {
	var px = (screen.availWidth - w) / 2;
	var py = (screen.availHeight - h) / 2;
	return "width=" + w + ",height=" + h + ",top=" + py + ",left=" + px;
}

function toInt(value, defaultValue) {

	if (typeof value == 'number') return value;

	if (isEmpty(defaultValue)) defaultValue = 0;
	if (typeof value != 'string') return defaultValue;
	if (isEmpty(value)) return defaultValue;

	value = removeComma(value);

	return !isNaN(value) ? parseInt(value) : isEmpty(defaultValue) ? 0 : defaultValue;
}


function doSubmit(form) {
	if (form == null) return;
	if (!TcheckForm(form)) return;
	form.submit();
}


function openWin(url, name, width, height, attr){	//가운데창
	var left = (screen.width) ? (screen.width - width) / 2 : 0;
	var top = (screen.height) ? (screen.height - width) / 2 : 0;
	var buf = '';
	buf += ',width=' + width;
	buf += ',height=' + height;
	buf += ',top=' + top;
	buf += ',left=' + left;
	if (attr != null) buf += "," + attr;
	var win = window.open(url, name, buf);
	try {
		if (parseInt(navigator.appVersion) >= 4) win.window.focus();
		return win;
	} catch(e) {}
}

function newWindow(mypage, myname, w, h, attr) {
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	var settings  = 'height='+h+',';
	settings += 'width='+w+',';
	settings += 'top='+wint+',';
	settings += 'left='+winl+',';
	settings += attr;
	var win = window.open(mypage, myname, settings);
	if (parseInt(navigator.appVersion) >= 4) win.window.focus();
}

$(function() {
	$('input, select').keydown(function(event) { ckey(this, event) });
	$('input, select').keyup(function(event) { autoNext(this, event) });
});

