/*##########################################################################################################################################################*/
/*#########################################################                                  ###############################################################*/
/*#########################################################          윈도우 관련             ###############################################################*/
/*#########################################################                                  ###############################################################*/
/*##########################################################################################################################################################*/


/*-------------------------------------------------------------------------
 Function : commify()
 Spec	  : 숫자 세자리마다 콤마 찍기
 Argument : String
 Return   : String
 Example  : commify('n')
-------------------------------------------------------------------------*/
function commify(n) {
  var reg = /(^[+-]?\d+)(\d{3})/;   // 정규식
  n += '';                          // 숫자를 문자열로 변환
  while(reg.test(n)) { n = n.replace(reg, '$1' + ',' + '$2'); }

  return n;
}


/*-------------------------------------------------------------------------
 Function : fn_Calendar()
 Spec	  : 달력
 Argument : objName
 Return   : String
 Example  : onclick="fn_Calendar(objName)"
-------------------------------------------------------------------------*/
function fn_Calendar(objName) {
	obj = eval(objName);

	var ls_Date = new Array();
	var ls_CurVal = obj.value;

	ls_Date = window.showModalDialog("/common/js/Calendar_day.html", ls_CurVal, "dialogTop:"+event.screenY+"; dialogLeft:"+eval(event.screenX-185)+"; dialogWidth:240px; dialogHeight:262px; Raised; resizable: no; status: no");

	if (ls_Date != null){
		obj.value = ls_Date;
	}
}


/*-------------------------------------------------------------------------
 Function : goto_byselect()
 Spec	  : 해당 페이지로 이동
 Argument : Target Frame, Move Page
 Return   :
 Example  : onchange="goto_byselect(sel, targetstr)"
-------------------------------------------------------------------------*/
function goto_byselect(sel, targetstr) {
	var index = sel.selectedIndex;
	if (sel.options[index].value != '') {
		if (targetstr == 'blank') {
			window.open(sel.options[index].value, 'win1');
		} else {
			var frameobj;
			if (targetstr == '') targetstr = 'self';
			if ((frameobj = eval(targetstr)) != null)
			frameobj.location = sel.options[index].value;
		}
	}
}


/*-------------------------------------------------------------------------
 Function : goNoIframe()
 Spec	  : iframe 없애면서 이동시키기
 Argument : String
 Return   :
 Example  : goNoIframe(link)
-------------------------------------------------------------------------*/
function goNoIframe(link) {
	parent.self.location.replace(link);
}


/*-------------------------------------------------------------------------
 Function : windowOpen(), windowOpen2()
 Spec	  : 윈도우 Open
 Argument : String
 Return   :
 Example  : onclick="windowOpen(htmlFile, windowName, w, h)"
-------------------------------------------------------------------------*/
function windowOpen(htmlFile, windowName, w, h) {
	window.open(htmlFile, windowName, "toolbar=no, location=no, status=no, menubar=no, esizable=no, width="+w+",height="+h+"");
}

function windowOpen2(htmlFile, windowName, w, h) {

	window.open(htmlFile, windowName, "toolbar=no, location=no, status=no, menubar=no, resizable=yes,scrollbars=yes, width="+w+",height="+h+"");
}


/*-------------------------------------------------------------------------
 Function : moveFocus()
 Spec	  : 포커스이동
 Argument : Num, From form, To form
 Return   :
 Example  : onKeyUp="moveFocus(6, this, this.form.jumin2);"
-------------------------------------------------------------------------*/
function moveFocus(num, fromform, toform) {
	var str = fromform.value.length;

	if(str == num) {
		toform.focus();
	}
}





/*##########################################################################################################################################################*/
/*#########################################################                                  ###############################################################*/
/*#########################################################            Form 관련             ###############################################################*/
/*#########################################################                                  ###############################################################*/
/*##########################################################################################################################################################*/




/*-------------------------------------------------------------------------
 Function : checkMinMaxLen()
 Spec	  : 변수의 길이가 min 과 max 사이에 있는지 체크
 Argument : String, Min, Max
 Return   : boolean
 Example  : checkMinMaxLen( "dir" , 0, 4);
-------------------------------------------------------------------------*/
function checkMinMaxLen(str, min , max) {
	if( str.length >= min && str.length <= max ) {
		return true;
	} else {
		return false;
	}
}


/*-------------------------------------------------------------------------
 Function : isHangul()
 Spec	  : 변수값의 한글여부 체크
 Argument : String
 Return   : boolean
 Example  : isHangul('한글');
-------------------------------------------------------------------------*/
function isHangul( str ) {
	var bgn_hangul = parseInt(0xAC00, 10);	// '가'
	var end_hangul = parseInt(0xD79D, 10);	// '힝'

	for (var jdx = 0; jdx < str.length; jdx++ ) {
		sTempChar = parseInt(str.substr(jdx,1).charCodeAt(0));

		if ( sTempChar < bgn_hangul || sTempChar > end_hangul ) {
			return false;
		}
	}
    return true;
}


/*-------------------------------------------------------------------------
 Function : isEnglish()
 Spec	  : 변수값의 영문여부 체크
 Argument : String
 Return   : boolean
 Example  : isEnglish('영문');
-------------------------------------------------------------------------*/
function isEnglish( str ) {
	for (var i =0 ; i < str.length; i++) {
		sTempChar = parseInt(str.substr(i,1).charCodeAt(0));
		if (  sTempChar < 64 ||  sTempChar > 123 ) {
			return false;
		}
	}

	return true;
}


/*-------------------------------------------------------------------------
 Function : isInteger()
 Spec	  : 변수값의 숫자여부 체크
 Argument : String
 Return   : boolean
 Example  : isInteger('숫자');
-------------------------------------------------------------------------*/
function isInteger( str ) {
	for (var i =0 ; i < str.length; i++) {
		sTempChar = str.substr(i,1).charCodeAt(0);

		if (sTempChar < 47 || sTempChar > 58) {
			return false;
		}
	}
	return true;
}


/*-------------------------------------------------------------------------
 Function : isEngInteger()
 Spec	  : 변수값의 영어, 숫자 여부 체크
 Argument : String
 Return   : boolean
 Example  : isEngInteger('scy0121');
-------------------------------------------------------------------------*/
function isEngInteger( str ) {
	for (var i =0 ; i < str.length; i++) {
		if(!isEnglish(str.substr(i,1)) && !isInteger(str.substr(i,1)) ) {
			return false;
		}
	}
    return true;
}


/*-------------------------------------------------------------------------
 Function : checkName()
 Spec	  : 변수값의 영문, 한글 여부 체크
 Argument : String
 Return   : boolean
 Example  : checkName('scy0121');
-------------------------------------------------------------------------*/
function checkName( str ) {
	for (var i =0 ; i < str.length; i++) {
		if (!isHangul(str.substr(i,1)) && !isEnglish(str.substr(i,1))) {
			return false;
		}
	}
	return true;
}


/*-------------------------------------------------------------------------
 Function : isNull()
 Spec	  : 변수값의 NULL 여부 체크
 Argument : String
 Return   : boolean
 Example  : isNull('scy0121');
-------------------------------------------------------------------------*/
function isNull( str ) {
	var chkstr = str + "";
	var Result = true;

	if ( (chkstr == "") || (chkstr == null) ) {
		return Result;
    }

	for ( jdx = 0; Result && (jdx < str.length); jdx++ ) {
		if ( str.substring(jdx, jdx+1) != " " ) {
			Result = false;
		}
	}
	return Result;
}


/*-------------------------------------------------------------------------
 Function : f_onlyNumber()
 Spec	  : Only Number
 Argument :
 Return   : boolean
 Example  : OnKeypress="f_onlyNumber();"
-------------------------------------------------------------------------*/
function f_onlyNumber() {
	if (event.keyCode != 13) {
		if((event.keyCode < 48) || (event.keyCode > 57)) {
			alert("숫자항목에 문자를 입력할 수 없습니다.");
			event.returnValue = false;
		}
	}
}


/*-------------------------------------------------------------------------
 Function : f_checkByte()
 Spec	  : 바이트 수
 Argument : (document.chb.id)
 Return   : int
 Example  : f_checkByte(document.chb.id);
-------------------------------------------------------------------------*/
function f_checkByte(obj){
	var str,msg;
	var len = 0;
	var temp;
	var count = 0;

	msg = obj.value;
	str = new String(msg);
	len = str.length;

	for (k=0 ; k<len ; k++){
		temp = str.charAt(k);

		if (escape(temp).length > 4) {
			count += 2;
		}
		else if (temp == '\r' && str.charAt(k+1) == '\n') {	// \r\n일 경우
			var strPass = obj.value;
			var strLength = strPass.length;
			var tst = obj.value.substring(0, (strLength) - 2);
		}
		else if (temp != '\n') {
			count++;
		}
	}

	return count;
}



/*-------------------------------------------------------------------------
 Function : isID()
 Spec	  : 4~12자의 영문,숫자를 공백없이 조합
 Argument : String
 Return   : boolean
 Example  : isID(str);
-------------------------------------------------------------------------*/
function isID(str) {
	if(str.length < 4 || str.length > 12) {
		return false;
	}
	
	for(var i=0; i < str.length; i++) {
		var chr = str.substr(i,1);
		if((chr < '0' || chr > '9') && (chr < 'a' || chr > 'z')) {
			return false;
		}
	}
	return true;
}

/*-------------------------------------------------------------------------
 Function : isJumin()
 Spec	  : 주민번호 체크
 Argument : String ('-' 제외 13자리)
 Return   : boolean
 Example  : isJumin(str);
-------------------------------------------------------------------------*/
function isJumin( str ) {
	var str1, str2, str3, str4, str5, str6, str7;
	var str8, str9, str10, str11, str12, str13;
	var Sum, Chk;
	var Result = false;

	if ( str.length == 13 ) {
		Result	= true;
		str1	= str.charAt(0);
		str2	= str.charAt(1);
		str3	= str.charAt(2);
		str4	= str.charAt(3);
		str5	= str.charAt(4);
		str6	= str.charAt(5);
		str7	= str.charAt(6);
		str8	= str.charAt(7);
		str9	= str.charAt(8);
		str10	= str.charAt(9);
		str11	= str.charAt(10);
		str12	= str.charAt(11);
		str13	= str.charAt(12);

		Sum = ( parseInt(str1) * 2 ) + ( parseInt(str2) * 3 ) +
			( parseInt(str3) * 4 ) + ( parseInt(str4) * 5 );
		Sum = parseInt(Sum) + ( parseInt(str5) * 6 ) +
			( parseInt(str6) * 7 ) + ( parseInt(str7) * 8 );
		Sum = parseInt(Sum) + ( parseInt(str8) * 9 ) +
			( parseInt(str9) * 2 ) + ( parseInt(str10) * 3 );
		Sum = Sum + ( parseInt(str11) * 4 ) +
			( parseInt(str12) * 5 );

		Chk = Sum % 11;
		Chk = 11 - Chk;


		if ( Chk == 11 ) {
			Chk = 1;
        } else if ( Chk == 10 ) {
			Chk = 0;
		}

		if ( str13 != Chk ) {
			Result = false;
		}

	} else {
		Result = false;
	}

    return Result;
}


/*-------------------------------------------------------------------------
 Function : isJumin()
 Spec	  : 사업자 번호 체크
 Argument : String ('-' 제외 10자리)
 Return   : boolean
 Example  : isBusiNumber(num);
-------------------------------------------------------------------------*/
function isBusiNumber(num) {

	var temp, comp, ld_1, ld_2, ld_3, ld_4, ld_5, ld_6, ld_7, ld_8, ld_9, ld_10;

	if ( num.length != 10 ) {
		return false;
	}
	
	ld_1  = num.substr(0,1);
	ld_2  = num.substr(1,1);
	ld_3  = num.substr(2,1);
	ld_4  = num.substr(3,1);
	ld_5  = num.substr(4,1);
	ld_6  = num.substr(5,1);
	ld_7  = num.substr(6,1);
	ld_8  = num.substr(7,1);
	ld_9  = num.substr(8,1);
	ld_10 = num.substr(9,1);

	temp =  ( ld_1 * 1 ) % 10
		  + ( ld_2 * 3 ) % 10
		  + ( ld_3 * 7 ) % 10
		  + ( ld_4 * 1 ) % 10
		  + ( ld_5 * 3 ) % 10
		  + ( ld_6 * 7 ) % 10
		  + ( ld_7 * 1 ) % 10
		  + ( ld_8 * 3 ) % 10
		  + ( ld_9 * 5 ) % 10 + Math.floor( ( ld_9 * 5 ) / 10 )  ;

	comp = temp % 10;

	if ( ld_10 == ( 10 - comp ) ) {
		return true;
	} else {
		if ( ( comp == 0 ) && ( ld_10 == 0 ) ) {
			return true;
		} else {
			return false;
		}
	}
}


/*-------------------------------------------------------------------------
 Function : checkEmail()
 Spec	  : 이메일 유효체크
 Argument : String
 Return   : boolean
 Example  : checkEmail(strEmail);
-------------------------------------------------------------------------*/
function checkEmail(strEmail) {
	var arrMatch = strEmail.match(/^(\".*\"|[A-Za-z0-9_-]([A-Za-z0-9_-]|[\+\.])*)@(\[\d{1,3}(\.\d{1,3}){3}]|[A-Za-z0-9][A-Za-z0-9_-]*(\.[A-Za-z0-9][A-Za-z0-9_-]*)+)$/);
	if (arrMatch == null) {
		return false;
	}

	var arrIP = arrMatch[2].match(/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/);
	
	if (arrIP != null) {
		for (var i = 1; i <= 4; i++) {
			if (arrIP[i] > 255) {
				return false;
			}
		}
	}
	return true;
}


/*-------------------------------------------------------------------------
 Function : checkImage()
 Spec	  : 이미지 파일체크
 Argument : String
 Return   : boolean
 Example  : checkImage(str);
-------------------------------------------------------------------------*/
function checkImage(str) {

	var strlen	= str.length;
	var ext		= (str.substr(strlen-4, 4)).toLowerCase();
	var flag	= false;
	
	if( ext == '.jpg') {
		flag = true;
	}
	if( ext == '.gif') {
		flag = true;
	}
	if( ext == 'jpeg') {
		flag = true;
	}
	if( ext == '.bmp') {
		flag = true;
	}
	if( ext == '.swf') {
		flag = true;
	}
	
	return flag;
}


/*-------------------------------------------------------------------------
 Function : Check_msg()
 Spec	  : 아이디와 메세지를 받아서 메세지를 뿌리고 포커스 이동
 Argument : Form Name, String
 Return   : boolean
 Example  : Check_msg("name","이름을 입력해 주시기 바랍니다.")
-------------------------------------------------------------------------*/
//### 아이디와 메세지를 받아서 메세지를 뿌리고 포커스를 잡아준다.
function Check_msg(id, msg) {
	
	if(document.all[id].value == "" || document.all[id].value.length < 0 || document.all[id].value == " ") {
		alert(msg);
		
		if(document.all[id].style.display != "none"){
			document.all[id].focus();
		}
		
		return false;
	} else {
		return true;
	}
}