/**
 * 2008.11.29
 * 작성자 : 신영진
 * 웹에서 사용하는 자바스크립트
 */

 /**
  * 해당 입력된 값에 3자리 마다 콤마를 찍어줍니다.
  */
String.prototype.setComma = function() {

    var temp_str = String(this);

    temp_str = temp_str.replace(new RegExp(",", "gi"), "");

    for(var i = 0 , retValue = String() , stop = temp_str.length; i < stop ; i++){
      retValue = ((i%3) == 0) && i != 0 ? temp_str.charAt((stop - i) -1) + "," + retValue : temp_str.charAt((stop - i) -1) + retValue;
    }
    return retValue;

}

// 콤마 삭제하기
function delComma(val) {

  var com = val.replace(/,/g,"");
  return com;
}


 function comma(number) {
    number = new String(number);
    //alert(number);
    number = number.replace(new RegExp(",", "gi"), "");
    //alert(number);
    var temp_sign = "";
	re_str = number;
	//alert(re_str);
 	if(re_str.length > 3){
 		var c = 0;
 		var strArray = new Array();
   		for( s=re_str.length;s > 0; s=s-3){
    			strArray[c++] = re_str.substring(s-3,s);
  	 	}
   		strArray.reverse();
  	 	re_str = strArray.join(",");
 	 }
	return re_str;
}

/**
 * 해당 입력된 값의 한글로 금액을 만들어 줍니다.
 */

function changeAmountHan(num) {
  hanNumber = new Array ('영','일','이','삼','사','오','육','칠','팔','구' );
  fourFour = new Array ('일', '만', '억', '조' );
  fourDigit = new Array ('일','십', '백', '천' );

  num = num.replace(new RegExp(",", "gi"), "");
  /*if (numFormat_ck(obj,obj2) ==  false){
    return false;
  }*/
  // 한글금액 처리
  delimiter = ' ';

  bPos = 0; // 만, 억, 조
  sPos = 0; // 십, 백, 천
  digit = 0;

  szDigit = '';
  is_start = false;
  appendFF = false;
  len = num.length;
  szHan = '';

  for (i=len-1;i>=0;i--) {
    szDigit=num.substring(i,i+1);
    digit=parseInt(szDigit);

    if (digit!=0) {
     if (bPos!=0 && sPos==0) {
    if (is_start==true) szHan += delimiter;
    szHan += fourFour[bPos]; // 만, 억
    appendFF=false;
     }
     if (bPos!=0 && appendFF==true) {
    if (is_start==true) szHan += delimiter;
    szHan += fourFour[bPos]; // 만, 억
    appendFF=false;
     }

     if (sPos!=0) szHan += fourDigit[sPos]; // 십, 백, 천
     szHan += hanNumber[digit]; // 일, 이, 삼
     is_start=true;

    }
    else if (sPos==0 && bPos!=0) appendFF=true;
    sPos++;
    if (sPos%4==0) {
     sPos=0;
     bPos++;
     if (bPos>=4) return "(범위초과)";
    }
  }
  if (is_start==false) szHan += "영";
  rslt = '';
  for(i = szHan.length - 1; i >= 0; i--) {
    rslt += szHan.substring(i, i + 1);
  }

  return rslt;
}

/**
 * 숫자만 입력가능 하도록 한다.
 */
function onlyNum(){
 if((event.keyCode < 48) || (event.keyCode > 57))
  event.returnValue = false;
}


/**
 * 오직 한글 체크
 * @param word 단어
 * @return {true, false}
 */
function isKoreanWord(word) {
	for (i=0; i<word.length; i++) {
		if (word.charCodeAt(i) < 0xAC00 || word.charCodeAt(i) > 0xD7A3) {
			if ((word.charCodeAt(i) < 12593 || word.charCodeAt(i) > 12643) && (word.charCodeAt(i) != 32)) {
				return false;
			}
		}
	}
	return true;
}

function CheckJuminNo(reg1, reg2) { //주민번호 앞,뒤자리 받는다
	  var strresidentid1 = reg1;
	  var strresidentid2 = reg2;
	  var strresidentid=strresidentid1+strresidentid2;
	  var ck;

	  if ( strresidentid1.length < 6) {
	   alert ("주민등록번호 길이가 정확하지 않습니다.!!");
	   return false;
	  }

	  if ( strresidentid2.length < 7 ) {
	   alert ("주민등록번호 길이가 정확하지 않습니다.!!");
	   return false;
	  }

	  var chk=0;
	  for (var i=0;i<=5;i++){
	   chk=chk+((i%8+2)*parseInt(strresidentid1.substring(i,i+1)));
	  }
	  for (var i=6;i<=11;i++){
	   chk=chk+((i%8+2) *parseInt(strresidentid2.substring(i-6,i-5)));
	  }
	  chk=11-(chk%11);
	  chk=chk%10;

	  if (chk!=strresidentid2.substring(6,7)){
	   alert("잘못된 주민등록번호입니다.");
	   return false;
	  }
	  return true;
}

/**
 * 영문/숫자 혼용체크
 */
function isAlpahNum(strID){
	var regexp1 = /^[A-Za-z]{6,15}$/i;
	var regexp2 = /^[0-9]{6,15}$/i;
	var regexp3 = /^[A-Za-z0-9]{6,15}$/i;

	return (!regexp1.test(strID) && !regexp2.test(strID) && regexp3.test(strID) )

 }

/**
 * 이메일양식 체크 ***.***
 */
 function emailChk(str){
	if(str.length > 0){
	  var regExp = /[a-z0-9-]{2,20}\.[a-z0-9]{2,20}/i;
	   if(!regExp.test(str)){
		return false;
	   }
	 }
	 return true;
 }

/**
 * 아이디 자리수및 특수문자 체크
 */
function isIdChk(strID){

	var regexp1 = /^[A-Za-z0-9_]{6,18}$/i;

	return (regexp1.test(strID))
}


/**
 * input 필드 객체(obj)의 값이 올바른 사업자등록번호인지 체크.
 *
 * param  : obj - Form Object
 * return : 올바른 사업자등록번호 이면 true, 아니라면 false
 */
function chkBzno(str){


	if(str == "") return false;	//공백이라면

	var check = 0;
	var no = new Array(10);
	var sum = 0;
	var tmpNo = 0;
	var tmpStr = 0;

	for(var i=0; i<10; i++) no[i] = parseInt(str.charAt(i),10); // 1~10까지 숫자 얻기

	for(var i=0; i<10; i++) {
		if((i%3)==0)
			tmpNo = no[i] + 0;
		else if ( (i%3) == 1)
			tmpNo = no[i] * 3;
		else if ( (i%3) == 2)
			tmpNo = no[i] * 7;

		if(i==8)
		{
			tmpNo = no[i] * 5;
			if(tmpNo > 9) {
				tmpStr = tmpNo + "";
				tmpNo = parseInt(tmpStr.charAt(0),10) + parseInt(tmpStr.charAt(1),10);
			}
		}
		sum += tmpNo;
	}

	if( (sum % 10) == 0) return true; // 정확
	else return false; // 부정확
}

/**
 * input 필드 객체(obj)의 값이 올바른 법인번호인지 체크.
 *
 * param  : obj - Form Object
 * return : 올바른 법인번호 이면 true, 아니라면 false
 */
function chkMoBzno(str) {
	if(str == "") return false;	//공백이라면
	var check = 1;
	var no = new Array(13);
	var sum = 0;
	var rem = 0;
	var m = 0;

	m = parseInt(str.charAt(12),10); // 번호의 마지막 숫자 얻기

	for(var i=0; i<12; i++) no[i] = parseInt(str.charAt(i),10); // 1~12까지 숫자 얻기

	for(var i=0; i<12; i++) {
		sum += (check * no[i]);
		check = (check==1) ? 2 : 1;
	}

	rem = sum % 10; // 나머지 구하기
	rem = 10 - rem;
	rem = (rem >= 10) ? rem - 10 : rem;

	// 마지막번째와 10-rem의 값을 비교
	if(m == rem) return true; // 정확
	else return false; // 부정확
}

/**
 * format의 형태로 클라이언트 pc의 현재 날자를 리턴.
 * 'ymd'(yyyymmdd), 'ymd_f'(yyyy-mm-dd), 'ymdhms'(yyyymmddhhmmss), 'ymdhms_f'(yyyy-mm-dd hh:mm:ss)
 *
 * param  : format - String
 * return : 포맷적용된 문자열
 */
function getToday(format, cha, wh) {
  var dNow = new Date();
  var yyyy = "";
  var MM   = "";
  var dd   = "";
  var hh = "";
  var mm   = "";
  var sss   = "";
  var years = 0;
  var months = 0;
  var days = 0;
  var whs = "D";
  if(wh != null){
    whs = wh;
  }
  if(cha != null && whs == "Y") years = cha;
  if(cha != null && whs == "M") months = cha;
  if(cha != null && whs == "D") days = cha;

  var cDate = new Date(dNow.getYear()+years, dNow.getMonth()+months, dNow.getDate()+days, dNow.getHours(), dNow.getMinutes(), dNow.getSeconds());
  yyyy = cDate.getYear();
  MM   = cDate.getMonth()+1;
  dd   = cDate.getDate();
  hh   = cDate.getHours();
  mm   = cDate.getMinutes();
  sss  = cDate.getSeconds();

  yyyy = cd_setZero( yyyy, 4 );
  MM   = cd_setZero( MM,   2 );
  dd   = cd_setZero( dd,   2 );
  hh   = cd_setZero( hh,   2 );
  mm   = cd_setZero( mm,   2 );
  sss  = cd_setZero( sss,  2 );

  if (format == "ymd")
    return (yyyy + MM + dd);
  else if (format == "ymd_f")
    return (yyyy + "-" + MM + "-" + dd);
  else if (format == "ymdhms")
    return (yyyy + MM + dd + hh + mm + sss);
  else if (format == "ymdhms_f")
    return (yyyy + "-" + MM + "-" + dd + " " + hh + ":" + mm + ":" + sss);
}
/**
 * 문자열 sVal을 iLen길이가 될때까지 sVal의 앞에 "0"을 붙인 문자열을 리턴.
 * 기업체번호등에서 자리수 만큼 0을 붙여서 반환, 날짜 문자열의 월과 일에 쓰임( 01월 02일)
 * 예) sVal에 '23'을 iLen에 5를 주면 리턴값은 '00023' 이다.
 *
 * param  : sVal - 문자열
 *          iLen - 길이(integer)
 * return : sVal의 앞에 "0"을 붙인 문자열
 */
function cd_setZero(sVal, iLen){
  var sStr = "";
  if (typeof sVal=="object") {
    sStr = sVal.value;
    sStr = cs_delRLSpace(sStr);
  } else  sStr = String(sVal);

  if(ck_isNull(sStr)) return; //공백이라면

  for (ii = sStr.length; ii < iLen; ii++) {
    sStr =  "0" + sStr;
  }
  return sStr;
}
/**
 * str이 null, undefined, NaN, 공백("") 이면 true.
 *
 * param  : str - String
 * return : str이 null, undefined, NaN, 공백("") 이면 true, 아니라면 false
 */
function ck_isNull(str) {
  if (str+"" == "undefined" || str+"" == "NaN" || str+"" == "null" || str+"" == "")
    return true;
  return false;
}

/**
 * 폼객체(formObj) 내에 있는 text(read only제외) 박스, radio , single select box 값을 초기화시킨다.
 * readonly도 초기화 button skip hidden textarea 초기화 처리
 *
 * param  : formObj - Form Ojbect
 */
function clearTRS(formObj){
	var len=formObj.elements.length;
	var i=0;
	var message="";
	try{
		for(i=0;i<len;i++){
			if( formObj.elements[i].tagName=="INPUT" ) {
				//if(formObj.elements[i].type=="text" && !formObj.elements[i].readOnly) formObj.elements[i].value="";
				if(formObj.elements[i].type=="text" || formObj.elements[i].type == "hidden" ) formObj.elements[i].value="";
				else if(formObj.elements[i].type=="select-one") formObj.elements[i].selectedIndex=0;
				else if(formObj.elements[i].type=="radio") formObj.elements[i].checked=false;
				else if(formObj.elements[i].type=="button") continue;
			} else if( formObj.elements[i].tagName=="TEXTAREA" ) {
				formObj.elements[i].innerText="";
			} else if( formObj.elements[i].tagName=="SELECT" ) {
				formObj.elements[i].selectedIndex=0;
				//formObj.elements[i].value="";
			}
		}
	}catch(e){
		alert(e);
	}

	window.defaultStatus = "준비(Ready)";
}

/**
 * 패스워드 체크시 동일 문자 3개이상 체크와, 연속된 문자 3개 이상 체크
 */
 function pwRuleChk(pw){
  var temp ="";


  for(var i=0; i < pw.length; i++){
   temp1 = pw.charAt(i);
   temp2 = pw.charCodeAt(i);

   if(temp1 == pw.charAt(i+1) && temp1 == pw.charAt(i+2)){
    alert("동일한 문자가 비밀번호에 3개이상 반복됩니다. 비밀번호를 변경하세요.");
    return false;
   }

   if( temp2+1 == pw.charCodeAt(i+1) && temp2+2 == pw.charCodeAt(i+2) || (temp2-1 == pw.charCodeAt(i+1) && temp2-2 == pw.charCodeAt(i+2))){
    alert("연속된 이어지는 문자가 비밀번호에 3개이상 연결됩니다. 비밀번호를 변경하세요.");
    return false;
   }

  }
  return true;
 }

