/***********************************************************
	DESC : 유틸리티
		 : 메소드 추가필요시 운영자에게 연락바람 
	@author HJ.Lee
	@since 2006.02.21
************************************************************/

/**
 * HTML문자로 변환
 * & -> &amp; , < -> &lt;,  > -> &gt;
 */
String.prototype.entityify = function() {
    return this.replace(/&/g, "&amp;").replace(/</g,"&lt;").replace(/>/g, "&gt;");
}

/**
 * trim().공백문자열 제거
 */
String.prototype.trim = function() {
    return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
}
/**
* ltrim(). 좌측문자열 제거
*/
String.prototype.ltrim = function() {
    while (this.length>0){
       if(this.charAt(0)==' '){
           this=this.substring(1,this.length);              
	   }
       else
          return this;	    
    }
	return this;
}

/**
* 오른쪽 공백 문자제거
*/
String.prototype.rtrim = function() {
    while (this.length>0){
       if(this.charAt(this.length-1)==' '){
           this=this.substring(0,this.length-1);              
	   }
       else
           return this;	    
   }
   return this;
}

/**
 * 해당 스트링이 널인지 체크
 */
function isNullStr ( strVal )
{
	if ( ( strVal == null )
		|| ( strVal == "undefined" )
		|| ( strVal == "null" )
		|| ( strVal.trim() == "" ) )
	{
		return true;
	}
	
	return false;
}


/**
 * 해당스트링이 boolean형인지 체크
 */
function parseBoolean ( str )
{
	if ( str == "true"
		|| str == "yes" )
	{
		return true;
	}
	
	return false;
}

/**
* 문자열 대체
*/
function stringReplace(replace, search, sub){
    var result = "";
    var i;

    do{
        i = replace.indexOf(search);

        if(i != -1){
            result = replace.substring(0, i);
            result = result + sub;
            result = result + replace.substring(i + search.length);
            replace = result;
        }
    } while(i != -1);

    return replace ;
}


/**
 * 문자열에 한글 여부 체크
 *
 * @param str 검사할 문자열 
 * @return boolean
 */
function containHangul(str) {
	if(str == null) {
		return false;
	}

	for(i=0;i<str.length;i++) {
		var a=str.charCodeAt(i);
		if (a > 128)	return true;
	}
	return false;
}

/**
 * 오늘날짜를 리턴 yyyy-MM-dd
 */
function getTodayDate()
{
	var today = new Date();
	var month = today.getMonth();
	month = (month < 9) ? ("0" + (1+month)) : (1+month); 

	var day = today.getDate();
	day = (day < 10) ? ("0" + day) : day;
	var startdate = today.getYear() + "-" + month + "-" + day;
	return startdate;
}
/**
 * 날짜 유효성체크
 */
function checkDate(strDate) {
	
	var arrDate
	var chkDate
	
	if (strDate.indexOf("-") != -1) {
		arrDate = strDate.split("-")
	}
	else{
		if (strDate.indexOf("/") != -1) {
			arrDate = strDate.split("/")
		}
		else{
			if (strDate.length == 8) {
				arrDate = strDate.substring(0,4)+"/"+strDate.substring(4,6)+"/"+strDate.substring(6,8)
				arrDate = strDate.split("/")
			}
			else{
				return false
			}
		}
	}

	if (arrDate.length != 3) {
		return false
	}

	if (arrDate[0].length != 4 || arrDate[1].length != 2 || arrDate[2].length != 2) {
		return false
	}

	chkDate = new Date(arrDate[0] + "/" + arrDate[1] + "/" + arrDate[2]);
	
	if (isNaN(chkDate) == true ||
		arrDate[1] != chkDate.getMonth() + 1 ||
		arrDate[2] != chkDate.getDate()) {
		return false;
	}
	
	return true;
}

/**
* 글자수를 리턴합니다(2Byte체크)
*/
function calByte(aquery) 
{

    var tmpStr;
    var temp=0;
    var onechar;
    var tcount;
    tcount = 0;

    tmpStr = new String(aquery);
    temp = tmpStr.length;

    for (k=0;k<temp;k++)
    {
            onechar = tmpStr.charAt(k);
            if (escape(onechar) =='%0D') { } else if (escape(onechar).length > 4) { tcount += 2; } else { tcount++; }
    }
    return tcount;
}
/**
* 원하는 자리에서 숫자를 반올림한다.
*/
function doRound(cnj_x,cnj_y) {
	return Math.round(cnj_x * Math.pow(10, cnj_y)) / Math.pow(10, cnj_y);
}

/**
 * CheckBox 전체선택(disabled 항목은 선택 안함)
 *
 * @param checkBoxObj CheckBox Object
 * @param delimeter   value값 구분자
 */

function checkToggle( checkBoxObj , field_id , rangeObject)
{
	if( rangeObject == null ) rangeObject = document
	var flag = true;

	if ( checkBoxObj != null )
	{
		if ( checkBoxObj.tagName == "INPUT" )
		{
			flag = !checkBoxObj.checked;
		}
		else
		{
			flag = checkBoxObj.getAttribute ("checked");
			
			if ( flag )
			{
				checkBoxObj.setAttribute ("checked", false);
			}
			else
			{
				checkBoxObj.setAttribute ("checked", true );
			}
		}
	}

	var fieldObj = rangeObject.all( field_id );

	if ( fieldObj != null )
	{
		var fieldLen = rangeObject.all( field_id ).length;
		
		if (  fieldLen != null  )
		{
			for ( i=0; i< rangeObject.all( field_id ).length ; i++ )
			{
				if (!rangeObject.all( field_id )[i].disabled){
					rangeObject.all( field_id )[i].checked = !flag;
				}
			}		
		}
		else
		{
			if (!rangeObject.all( field_id ).disabled){
				rangeObject.all( field_id ).checked = !flag;	
			}	
		}
	}
	//체크박스 다시 원위치 .
	//checkBoxObj.checked=false
}
/**
 * CheckBox 선택된 값 리턴
 *
 * @param checkBoxObj CheckBox Object
 * @param delimeter   value값 구분자
 */
function getCheckedValue(checkBoxObj , delimeter) 
{
	var strlist  = new String() ;
	
    if (checkBoxObj){
	    if (checkBoxObj.length){
			for (i=0; i < checkBoxObj.length; i++){
				if (checkBoxObj[i].checked){
					strlist = strlist + checkBoxObj[i].value+delimeter;
				}
			}
			if( strlist.length > 0 ) strlist = strlist.substring(0, strlist.length - 1 );
		 } 
		 else {
			 if (checkBoxObj.checked) {
				strlist = checkBoxObj.value;
			 }
 	   }
	}
	return strlist;
}

function setUnChecked(checkBoxObj) 
{
	var strlist  = new String() ;
	
    if (checkBoxObj){
	    if (checkBoxObj.length){
			for (i=0; i < checkBoxObj.length; i++){
				if (checkBoxObj[i].checked){
					checkBoxObj[i].checked = false;
				}
			}
		 } else {
			 if (checkBoxObj.checked) {
				checkBoxObj.checked = false;
			 }
 	   }
	}
	return strlist;
}
/**
* 글자수를 리턴합니다(2Byte체크)
*/
function is2byte(aquery) 
{

    var tmpStr;
    var temp=0;
    var onechar;
    var tcount;
    tcount = 0;

    tmpStr = new String(aquery);
    temp = tmpStr.length;

    for (k=0;k<temp;k++)
    {
            onechar = tmpStr.charAt(k);
            if (escape(onechar) =='%0D') { 
            } else if (escape(onechar).length > 4) { 
            	return true
            } else { 
            }
    }
    return false;
}
/**
* 숫자유효 체크!
*/
function numCheck(obj) { 
  var num = "0123456789"; 
  if( isNaN(obj.value) &&  obj.value.trim() != "") {
  	obj.value= obj.defaultValue;
  	obj.focus(); 
	alert(alert_no_number);
	return false; 
  } 
   return true;
}
/**
* 주민번호 체크
*/
function checkResNo(serial1,serial2){
	if (serial1.length != 6){
		return false;
	} else if ( serial2.length != 7){
    	return false;
  	} else {
  	
		var str_serial1 = serial1;
		var str_serial2 = serial2;
		var digit=0;
		
		for (var i=0;i<str_serial1.length;i++){
			var str_dig=str_serial1.substring(i,i+1);
			if (str_dig<'0' || str_dig>'9'){ 
				digit=digit+1 ;
			}
		}

		if ((str_serial1 == '') || ( digit != 0 )){
			return false;   
		}
	
		var digit1=0
		for (var i=0;i<str_serial2.length;i++){
			var str_dig1=str_serial2.substring(i,i+1);
			if (str_dig1<'0' || str_dig1>'9'){ 
				digit1=digit1+1; 
			}
		}

		if ((str_serial2 == '') || ( digit1 != 0 )){
			return false;   
		}


		if (str_serial1.substring(2,3) > 1){
			return false;   
		}

		if (str_serial1.substring(4,5) > 3){
			return false;   
		} 

		if (str_serial2.substring(0,1) > 4 || str_serial2.substring(0,1) == 0){
			return false;   
		}

		var a1=str_serial1.substring(0,1);
		var a2=str_serial1.substring(1,2);
		var a3=str_serial1.substring(2,3);
		var a4=str_serial1.substring(3,4);
		var a5=str_serial1.substring(4,5);
		var a6=str_serial1.substring(5,6);
		
		var check_digit=a1*2+a2*3+a3*4+a4*5+a5*6+a6*7;
		
		var b1=str_serial2.substring(0,1);
		var b2=str_serial2.substring(1,2);
		var b3=str_serial2.substring(2,3);
		var b4=str_serial2.substring(3,4);
		var b5=str_serial2.substring(4,5);
		var b6=str_serial2.substring(5,6);
		var b7=str_serial2.substring(6,7);
		
		var check_digit=check_digit+b1*8+b2*9+b3*2+b4*3+b5*4+b6*5 ;
		
		check_digit = check_digit%11;
		check_digit = 11 - check_digit;
		check_digit = check_digit%10;

		if (check_digit != b7){
			return false;   
		} else {
			return true;
		}
	}
}
/** =============================================
Comment: 사업자등록번호 체크
Return : Boolean
Usage  : checkCompNmbr(formName)
--------------------------------------------- **/
function checkCompNmbr(formName, label){
	var str = formName.value;
	
	alert(str);
	
	while (str.indexOf('-')!=-1){
		str = str.replace("-","");
	}

	if(isNaN(str)) { 
		window.alert(label+"은(는) 숫자로만 작성하셔야 합니다");
		formName.value="";
		formName.focus();
		return false;
	}

	if (str.length != 10) { 
		alert(label + "의 자릿수가 올바르지 않습니다."); 
		return false; 
    } 
         
	sumMod = 0; 
	sumMod += parseInt(str.substring(0,1)); 
	sumMod += parseInt(str.substring(1,2)) * 3 % 10; 
	sumMod += parseInt(str.substring(2,3)) * 7 % 10; 
	sumMod += parseInt(str.substring(3,4)) * 1 % 10; 
	sumMod += parseInt(str.substring(4,5)) * 3 % 10; 
	sumMod += parseInt(str.substring(5,6)) * 7 % 10; 
	sumMod += parseInt(str.substring(6,7)) * 1 % 10; 
	sumMod += parseInt(str.substring(7,8)) * 3 % 10; 
	sumMod += Math.floor(parseInt(str.substring(8,9)) * 5 / 10); 
	sumMod += parseInt(str.substring(8,9)) * 5 % 10; 
	sumMod += parseInt(str.substring(9,10)); 
 
	if (sumMod % 10 != 0) 
	{ 
		alert(label + "은(는) 올바른 " + label + "가 아닙니다"); 
		return false; 
	}
	return true; 
}	

/*
*	Textarea 글자수 제한 
*/
function CheckStrLen(maxlen,field){
	var temp; //들어오는 문자값...
	var msglen;
	msglen = maxlen*2;
	var value= field.value;
  
	l =  field.value.length; 
	tmpstr = "" ;
	
	if (l == 0){
		value = maxlen*2;
	}else {
		for(k=0;k<l;k++){
			temp =value.charAt(k);
	
			if (escape(temp).length > 4)
				msglen -= 2;
			else
				msglen--;
    
			if(msglen < 0){
				alert("총 영문 "+(maxlen*2)+"자 한글 " + maxlen + "자 까지 보내실수 있습니다.");
				field.value= tmpstr;
				break;
			}else {
				tmpstr += temp;
			}
		}
	}
}

/*
*	Radio 버튼 값 	가져오기 
*/
function getRadioValue(x) {
  for(var i=0; i<x.length; i++)
    if (x[i].checked==true) return x[i].value;
  return "";
}


/*
* 대, 소문자 변경 - stmarine - 
* ex> <input type='text' name='upChar' onKeyPress='setUpperCase()'>
* 	  <input type='text' name='lowChar' onKeyPress='setLowerCase()'>
*/
function setUpperCase(){
	if(event.keyCode > 96 && event.keyCode < 123){  //소문자 ->대문자
		event.keyCode = event.keyCode - 32;
	}
}
function setLowerCase(){
	if(event.keyCode > 64 && event.keyCode < 91){  //대문자 ->소문자
		event.keyCode = event.keyCode + 32;
	}
}
/*
* 숫자입력만 - stmarine - 
* ex> <input type='text' name='num' onKeyPress='onlyNum();'>
*/
function onlyNum() {
	if((event.keyCode>57||event.keyCode<48) && event.keyCode!=45) event.returnValue=false;
}

/*
* 입력화면의 첫 입력내용에 Focus - stmarine - 
* Input Parameter : frm  - form 이름
* 					obj  - focus 객체이름
* Output Parameter : null
* ex> 
*/
function firstFocus(frm, obj) {
	try {
		var frmObj = eval(frm + "." + obj);
		if (frmObj) frmObj.focus();
	} catch(e) {
		alert(e.description);
	}
}

/**
* 해당OBJ의 포맷을 yyyy-MM-dd로 셋팅한다!
* onKeyDown
*/
function dateFormat( obj ) {
	if( obj.value == '' ) return;
    var src;
    var i; 
    var	factor; 
    var	su; 
    var	SpaceSize = 0;
    var chkValue;

    chkValue = "";
    su = obj.value.length;

    if (event.keyCode != 8 && event.keyCode != 36 && event.keyCode != 37 && event.keyCode != 39 && event.keyCode != 46)
    {
	    for(i=0; i < su ; i++)
	    {
	       src = obj.value.substring(i,i+1);
	    
	       if (src != "-")
	       {
	          factor = parseInt(src);
	          if (isNaN(factor))
	          {
	              alert(alert_no_number);
	              obj.focus();
	          }
	          else
	          {
	              chkValue += src;
	          }  
	       }  
	    }
	    
	    obj.value = chkValue;
	    
	    su = "";
	
		for(i=0; i < parseInt(obj.value.length) ; i++)
		{
			su = su + obj.value.substring(i,i+1);
			switch (i){
				case 3 :
					su = su + "-"			
					break
				case 5 :
					su = su + "-"			
					break
			}
		}
	
	    obj.value = su; 
		if( !checkDate(obj.value) ) {
			obj.value = obj.defaultValue
			alert(check_date);
			obj.focus();
			return false;
		}
	    return true; 
    }
}
/***********************************************/
/*  JavaScript Basic Function                  */
/*  (By LeeHJ 2006.09.30)                      */
/***********************************************/
function isAlien(a) {
   return isObject(a) && typeof a.constructor != 'function';
}
function isArray(a) {
    return isObject(a) && a.constructor == Array;
}
function isBoolean(a) {
    return typeof a == 'boolean';
}
function isEmpty(o) {
    var i, v;
    if (isObject(o)) {
        for (i in o) {
            v = o[i];
            if (isUndefined(v) && isFunction(v)) {
                return false;
            }
        }
    }
    return true;
}
function isFunction(a) {
    return typeof a == 'function';
}
function isNull(a) {
    return a === null;
}
function isNumber(a) {
    return typeof a == 'number' && isFinite(a);
}
function isObject(a) {
    return (a && typeof a == 'object') || isFunction(a);
}
function isString(a) {
    return typeof a == 'string';
}
function isUndefined(a) {
    return typeof a == 'undefined';
} 
