if (REQUIRE_ONCE == null)
{
    // 한번만 실행되게
    var REQUIRE_ONCE = true;

    var wrestMsg = "";
    var wrestFld = null;
    var wrestFldDefaultColor = "#f5ffff";
    var wrestFldRequirdColor = "#f3faf3";
    //var wrestFldRequirdColor = "#fff3f3";
    var wrestFldBackColor = "#ffe4e1";
    var arrAttr  = new Array ("required", "trim", "minlength", "email", "date", "phone", "nospace");
    
    var wrestInitCount = 0;
    
    function isEmpty(sVal) {
        var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자
        sVal = sVal.replace(pattern, "");
        if (sVal=="") 
            return true;
        else
            return false;
    }
    
    function isDate(sVal, type) { 
        // type=k :  [yyyy-mm-dd] 형식
        // type=e :  [dd-ee-yyyy] 형식
        var pattern = null;
        if (trim(sVal)=="N/A") return true;
        
        if (type==null || type=='k')
            pattern=/^((19|20)?[0-9]{2})-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9]|3[0-1])$/i;  
        else
            pattern = /^(0?[1-9]|[1-2][0-9]|3[0-1])-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)-((19|20)?[0-9]{2})$/i;  
            
        if (sVal.search(pattern) == -1) 
            return false;
        else {
            return true;
        }
    }

    // subject 속성값을 얻어 return, 없으면 tag의 name을 넘김
    function wrestItemname(fld)
    {
        var itemname = fld.getAttribute("itemname");
        if (itemname != null && itemname != "")
            return itemname;
        else
            return fld.name;
    }

    // 양쪽 공백 없애기
    function wrestTrim(fld) 
    {
        var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자
        fld.value = fld.value.replace(pattern, "");
        return fld.value;
    }

    // 필수 입력 검사
    function wrestRequired(fld)
    {
	    if(fld.type.toLowerCase()== "radio"||fld.type.toLowerCase()== "checkbox") 
	        is_radio=true;
	    else
	        is_radio=false;
	    
        if (fld.getAttribute("date")!=null) 
            is_date_field=true; 
        else
            is_date_field=false; 

        var trimFld = wrestTrim(fld);
        if (!is_radio && (trimFld == "" || (is_date_field && trimFld == "N/A"))) {
            if (wrestFld == null) {
			    if(fld.type.toLowerCase()== "select-one")
                	wrestMsg = "[" + wrestItemname(fld) + "] 항목을 선택해 주세요.\n";
				else
                	wrestMsg = "[" + wrestItemname(fld) + "] 항목을 입력해 주세요.\n";
                wrestFld = fld;
            }
        } else if(is_radio) {
            if(!chkRadio(fld)) {
                wrestMsg = "[" + wrestItemname(fld) + "] 항목을 체크해 주세요.\n";
                wrestFld = fld;
            }
        }
    }
    
    function chkRadio(fld) {
        
    }
    
    // 최소 길이 검사 (길이가 0일때는 패스됨)
    function wrestMinlength(fld)
    {
        var len = fld.getAttribute("minlength");
        if (fld.value.length >0 && fld.value.length < len) {
            if (wrestFld == null) {
                wrestMsg = "[" + wrestItemname(fld) +  "] 항목의 길이를 " + len + " 글자 이내로 해주세요.\n";
                wrestFld = fld;
            }
        }
    }

    // 전자메일주소 형식 검사
    function wrestEmail(fld) 
    {
        if (!wrestTrim(fld)) return;

        //var pattern = /(\S+)@(\S+)\.(\S+)/; 전자메일주소에 한글 사용시
        var pattern = /([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/;
        if (!pattern.test(fld.value)) {
            if (wrestFld == null) {
                wrestMsg = "[" + wrestItemname(fld) + "] 항목은 올바른 이메일 형식으로 해주세요.\n";
                wrestFld = fld;
            }
        }
    }
    // 전화번호 형식 검사
    function wrestPhone(fld) 
    {
        if (!wrestTrim(fld)) return;

        //var pattern = /(\S+)@(\S+)\.(\S+)/; 전자메일주소에 한글 사용시
        var pattern = /^[0-9]{2,4}-[0-9]{2,4}-[0-9]{4}$/;
        if (!pattern.test(fld.value)) {
            if (wrestFld == null) {
                wrestMsg = "[" + wrestItemname(fld) + "] 항목은 올바른 전화번호 형식으로 해주세요.\n";
                wrestFld = fld;
            }
        }
    }

    // 숫자 형식 검사 (콤마있으면 가볍게 제거 - 폼 최종전송시에만 사용한께로)
    function wrestNumber(fld) 
    {
        if (!wrestTrim(fld)) return;
        var ret = DelComma(fld.value);
        /*
        var pattern = /((^[+-])?(0)+[0-9.-]+/; ??? 수정중
        if (!pattern.test(fld.value)) {
            if (wrestFld == null) {
                wrestMsg = "[" + wrestItemname(fld) + "] is invalid Email Format.\n";
                wrestFld = fld;
            }
        }
        */
        if (!ret)
            fld.value=0;
        else
            fld.value=ret;
        
        //alert("==>Number : "+fld.value);
    }

    // 날짜 형식 검사 (N/A도 날짜형식으로 인정)
    function wrestDate(fld) 
    {
        if (!wrestTrim(fld)) return;

        var pattern=/^((19|20)?[0-9]{2})-((0?[1-9])|(1[0-2]))-((0?[1-9])|([1-2][0-9])|(3[0-1]))$/;  
        //var pattern=/^[1-9][0-9]{0-3}-[0-9]{1,2}-[0-9]{1,2}$/; 
        //var pattern = /^(0?[1-9]|[1-2][0-9]|3[0-1])-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)-((19|20)?[0-9]{2})$/i;  

        if (fld.value=='N/A') return;
        
        if (!pattern.test(fld.value)) {
            if (wrestFld == null) {
                wrestMsg = "[" + wrestItemname(fld) + "] 항목은 올바른 날짜 형식으로 해주세요.\n";
                wrestFld = fld;
            }
        }
    }
    function wrestEngDate(fld) 
    {
        if (!wrestTrim(fld)) return;

        //var pattern=/^((19|20)?[0-9]{2})-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2][0-9]|3[0-1])$/i;  
        var pattern = /^(0?[1-9]|[1-2][0-9]|3[0-1])-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)-((19|20)?[0-9]{2})$/i;  

        if (!pattern.test(fld.value)) {
            if (wrestFld == null) {
                wrestMsg = "[" + wrestItemname(fld) + "] 항목은 올바른 날짜 형식으로 해주세요.\n";
                wrestFld = fld;
            }
        }
    }

    // 공백 검사후 공백을 "" 로 변환
    function wrestNospace(fld)
    {
        var pattern = /(\s)/g; // \s 공백 문자
        if (pattern.test(fld.value)) {
            if (wrestFld == null) {
                wrestMsg = "[" + wrestItemname(fld) + "] 항목은 빈 칸 없이 입력해 주세요.\n";
                wrestFld = fld;
            }
        }
    }

    // submit 할 때 속성을 검사한다.
    function wrestSubmit()
    {
        wrestMsg = "";
        wrestFld = null;

        var attr = null;

        // 해당폼에 대한 요소의 갯수만큼 돌려라
        for (var i = 0; i < this.elements.length; i++) {
            // Input tag 의 type 이 text, file, password 일때만
            if (this.elements[i].type.toLowerCase() == "text" || 
                this.elements[i].type.toLowerCase() == "file" || 
                this.elements[i].type.toLowerCase() == "password" ||
				this.elements[i].type.toLowerCase() == "select-one" || 
                this.elements[i].type.toLowerCase() == "textarea") {
                // 배열의 길이만큼 돌려라
                for (var j = 0; j < arrAttr.length; j++) {
                    // 배열에 정의한 속성과 비교해서 속성이 있거나 값이 있다면
                    if (this.elements[i].getAttribute(arrAttr[j]) != null) {
                        // 기본 색상으로 돌려놓고
                        switch (arrAttr[j]) {
                            case "required"  : wrestRequired(this.elements[i]); break;
                            case "trim"      : wrestRequired(this.elements[i]); break;
                            case "minlength" : wrestMinlength(this.elements[i]); break;
                            case "email"     : wrestEmail(this.elements[i]); break;
                            case "eng_date"  : wrestEngDate(this.elements[i]); break;
                            case "date"      : wrestDate(this.elements[i]); break;
                            case "number"    : wrestNumber(this.elements[i]); break;
                            case "phone"     : wrestPhone(this.elements[i]); break;
                            case "nospace"   : wrestNospace(this.elements[i]); break;
                            default : break;
                        }
                    }
                }
            }
        }

        // 필드가 null 이 아니라면 오류메세지 출력후 포커스를 해당 오류 필드로 옮김
        // 오류 필드는 배경색상을 바꾼다.
        if (wrestFld != null) {
            alert(wrestMsg);
            wrestFld.style.backgroundColor = wrestFldBackColor;
            wrestFld.focus();
            return false;
        }

        if (this.oldsubmit && this.oldsubmit() == false)  {
            return false;
        }

        return true;
    }

    // 초기에 onsubmit을 가로채도록 한다.
    function wrestInitialized()
    {
        for (var i = 0; i < document.forms.length; i++) {
            // onsubmit 이벤트가 있다면 저장해 놓는다.
            try {
                if (document.forms[i].onsubmit!=wrestSubmit) document.forms[i].oldsubmit = document.forms[i].onsubmit;
            } catch (e) {
                alert('Err: '+e.message);
            }
            document.forms[i].onsubmit = wrestSubmit;
//alert("==>"+document.forms[i].elements.length);
            for (var j = 0; j < document.forms[i].elements.length; j++) {
                // 필수 입력일 경우는 * 배경이미지를 준다.
                if (document.forms[i].elements[j].getAttribute("required") != null) {
                    document.forms[i].elements[j].style.backgroundColor = wrestFldRequirdColor;
                    /*
                    document.forms[i].elements[j].className = "wrest_required";
                    document.forms[i].elements[j].style.backgroundPosition = "top right";
                    document.forms[i].elements[j].style.backgroundRepeat = "no-repeat";
                    */
                }
                if (document.forms[i].elements[j].getAttribute("number") != null) {
                    document.forms[i].elements[j].onkeyup=function (e) {
                        var numstr=this.value;
                        numstr = SetComma(DelComma(numstr)); 
                        this.value=numstr;
                    };
                }
            }
        }
    }

	// 주민등록번호 검사
	function jumin_check(j1, j2) 
	{
			if (j1.value.length < 6 || j2.value.length < 7)
					return false;
	
			var sum_1 = 0;
			var sum_2 = 0;
			var at=0;
			var juminno= j1.value + j2.value;
			sum_1 = (juminno.charAt(0)*2)+
							(juminno.charAt(1)*3)+
							(juminno.charAt(2)*4)+
							(juminno.charAt(3)*5)+
							(juminno.charAt(4)*6)+
							(juminno.charAt(5)*7)+
							(juminno.charAt(6)*8)+
							(juminno.charAt(7)*9)+
							(juminno.charAt(8)*2)+
							(juminno.charAt(9)*3)+
							(juminno.charAt(10)*4)+
							(juminno.charAt(11)*5);
			sum_2 = sum_1 % 11;
			att = 11 - sum_2;
			if (att>=10) att -= 10;
			
			if (juminno.charAt(12) != att) {
					return false;
			}
	
			return true
	}

	// 회원아이디 중복검색 창
	// mb_id   : 체크할 아이디 엘리먼트 ID
	// ret_id  : 체크결과 돌려받을게 있으면, 받아 놓을 엘리먼트 ID
	// show_id : 체크결과를 뿌려줄게 있으면, 해당 엘리먼트 ID
	function popup_id(mb_form, ret_id, show_id,mb_id)
	{		
/*
			if (mb_id.value == '' ) {
				alert("아이디를 입력해주세요.")
				mb_id.focus();
				return false;
			}
*/
			url = '../confirm_id.php?frm_name='+mb_form+'&el_ret_id='+ret_id+'&frm_id='+show_id+"&id="+mb_id;
			opt = 'scrollbars=no,width=355,height=200';
			window.open(url, "mbid", opt);
	}
	// 우편번호 창
	// zip1_id, zip2_id, addr1_id, addr2_id : 돌려받아 놓을 엘리먼트 ID
	// 보통은 우편번호는 앞 1자리로 통합해서 사용하지만 혹시 분리할 경우도 처리...
	/*function popup_zip(zip1_id, zip2_id, addr1_id, addr2_id)
	{
			url = '../confirm_zip.php?el_zip1_id='+zip1_id+'&el_zip2_id='+zip2_id+'&el_addr1_id='+addr1_id+'&el_addr2_id='+addr2_id;
			opt = 'scrollbars=yes,width=500,height=300';
			window.open(url, "mbzip", opt);
	}*/

	function popup_zip(frm_name, dir, frm_zip1, frm_zip2, frm_addr1, frm_addr2)
	{
			
			url = dir+'confirm_zip.php?frm_name='+frm_name+'&frm_zip1='+frm_zip1+'&frm_zip2='+frm_zip2+'&frm_addr1='+frm_addr1+'&frm_addr2='+frm_addr2;
			opt = 'scrollbars=yes,width=500,height=300';
			window.open(url, "mbzip", opt);
	}

	// 회원아이디 검색 창
	function popup_id2(dir, mid, mname, mjumin)
	{		
			url = dir+'confirm_id2.php?frm_id='+mid+'&frm_name='+mname+'&frm_jumin='+mjumin;
			opt = 'scrollbars=no,width=355,height=200';
			window.open(url, "mbid", opt);
	}
	// 선주아이디 검색 창
	function popup_id_owner(dir, el_id, on_id)
	{		
			url = dir+'confirm_id_owner.php?el_id='+el_id+'&on_id='+on_id;
			opt = 'scrollbars=no,width=355,height=200';
			window.open(url, "mbid", opt);
	}
	// 사내사용자 아이디 검색 창
	function popup_id_mem(dir, el_id, mb_id)
	{		
			url = dir+'confirm_id_mem.php?el_id='+el_id+'&mb_id='+mb_id;
			opt = 'scrollbars=no,width=355,height=200';
			window.open(url, "mbid", opt);
	}


	// 닉네임 중복검색 창
	function popup_nick(frm_name, dir, frm_nick, nick)
	{	
			if( nick.value == '' ) {
				alert("닉네임을 입력해주세요.")
				nick.focus();
				return false;
			}
			url = dir+'confirm_nick.php?frm_name='+frm_name+'&frm_nick='+frm_nick+'&nick='+nick.value;
			opt = 'scrollbars=no,width=355,height=200';
			window.open(url, "mbwriter", opt);
	}
	
		
	// 회원아이디 목록창
	function popup_mb_list(frm_name, dir, frm_id, frm_num, key, multi)
	{		
			if(!multi) multi=1
			if(!key) key=''
			url = dir+'popup_member_list.php?frm_name='+frm_name+'&frm_id='+frm_id+'&frm_num='+frm_num+'&key='+key+'&multi='+multi;
			opt = 'scrollbars=yes,width=450,height=500';
			window.open(url, "popup_mb_list", opt);
	}

	// 암호 전송창
	function popup_passwd(dir)
	{	
			url = dir+'send_passwd.php';
			opt = 'scrollbars=no,width=450,height=380';
			window.open(url, "mbpasswd", opt);
	}
	
	// 삭제 검사 확인
	function del(href) 
	{
			if(confirm("정말 삭제하시겠습니까?")) 
					document.location.href = href;
	}

	// 경고메시지
	function warning_msg(type)
	{	
		switch(type) {
			case 'login' : alert("로그인하신후 사용하세요.")
				break;
			}
		return;			
	}

	// 로그인 메시지
	function before_login(dir)
	{	
		alert("로그인 하신후 사용하세요.");
		location.href=dir+'login.php?url='+location.href;
	}

	// 체크박스에 하나라도 체크되면 참
	function list_checkbox(form,fname) {
		var Check_List=false;
		for(i=0;i<form.length;i++) {
			if(form[i].type.toLowerCase()=="checkbox" && form[i].name==fname) {
				if(form[i].checked) {
				    Check_List=true;
				    break;
				}
			}
		}
		return Check_List;
	}

  // 배열체크박스의 값을 ,로 연결한다.
	function list_checkbox_value(form,fname) {
		var _reslut='';
		for(i=0;i<form.length;i++) {
			if(form[i].type.toLowerCase()=="checkbox" && form[i].name==fname) {
				if(form[i].checked) {
					if(_reslut=='')
						_reslut = form[i].value
					else
						_reslut = _reslut + ','+form[i].value
				}
			}
		}
		return _reslut;
	}
	

	function my_layer_action(name, status)
	{
		var obj = document.all[name];

		if (typeof(obj) == 'undefined') {
			return;
		}

		if (status) {
			obj.style.visibility = status;
		} else {
			if(obj.style.visibility == 'visible')
				obj.style.visibility='hidden';
			else
				obj.style.visibility='visible';
		}
	}

	function my_layer(dir,bbs_id, id, name, email, homepage, profile, skin_url)
	{
		// event.clientX : 클릭한곳의 X 좌표
		// event.clientY : 클릭한곳의 Y 좌표
		// obj.offsetWidth  : DIV 오브젝트의 폭
		// obj.offsetHeight : DIV 오브젝트의 높이
		// document.body.clientWidth  : 브라우저의 폭
		// document.body.clientHeight : 브라우저의 높이
		// document.body.scrollLeft : 스크롤 Left
		// document.body.scrollTop  : 스크롤 Top
		// obj.style.posLeft : DIV 오브젝트의 X 좌표
		// obj.style.posTop  : DIV 오브젝트의 Y 좌표

		var obj = document.all[layername];
		var x, y;
		var body = "";
		var height = 0;

		x = event.clientX + document.body.scrollLeft - 20;
		y = event.clientY + document.body.scrollTop - 20;
		obj.style.posLeft = x;
		obj.style.posTop = y;

		if (id) {
			body += "<tr onmouseover=this.style.backgroundColor='#ffffff' onmouseout=this.style.backgroundColor='#e5e5e5' onmousedown=\"window.open('"+dir+"memo.php?mode=write&mo_recv_mb_id="+id+"', 'mbmemo', 'left=50,top=50,width=500,height=400,scrollbars=1');\"><td height=20>&nbsp; <IMG src="+skin_url+"memo_icon.gif border=0 width='12' height='12'> &nbsp;쪽지보내기&nbsp;&nbsp;</td></tr>";
			height += 20;
		}

		if (name && bbs_id) {
			body += "<tr onmouseover=this.style.backgroundColor='#ffffff' onmouseout=this.style.backgroundColor='#e5e5e5' onmousedown=\"location.href='"+dir+"list.php?bbs_id="+bbs_id+"&ss[sn]=1&ss[kw]="+name+"';\"><td height=20>&nbsp; <IMG src="+skin_url+"namesearch_icon.gif border=0 width='12' height='12'> &nbsp;이름으로 검색&nbsp;&nbsp;</td></tr>";
			height += 20;
		}
		
		if (email) {
			body += "<tr onmouseover=this.style.backgroundColor='#ffffff' onmouseout=this.style.backgroundColor='#e5e5e5' onmousedown=\"window.open('"+dir+"admin/member_mail.php?condition=SELECT * FROM $db_table_member WHERE mb_id=%27"+id+"%27', 'profile', 'left=50,top=50,width=650,height=650,scrollbars=0');\"><td height=20>&nbsp; <IMG src="+skin_url+"mail_icon.gif border=0 width='12' height='12'> &nbsp;메일보내기&nbsp;&nbsp;</td></tr>";
			height += 20;
		}

		if (homepage) {
			body += "<tr onmouseover=this.style.backgroundColor='#ffffff' onmouseout=this.style.backgroundColor='#e5e5e5' onmousedown=\"window.open('"+homepage+"');\"><td height=20>&nbsp; <IMG src="+skin_url+"home_icon.gif border=0 width='12' height='12'> &nbsp;홈페이지&nbsp;&nbsp;</td></tr>";
			height += 20;
		}

		if (parseInt(profile)) {
			body += "<tr onmouseover=this.style.backgroundColor='#ffffff' onmouseout=this.style.backgroundColor='#e5e5e5' onmousedown=\"window.open('"+dir+"mb_profile.php?mb_id="+id+"', 'profile', 'left=50,top=50,width=500,height=400,scrollbars=1');\"><td height=20>&nbsp; <IMG src="+skin_url+"me_icon.gif border=0 width='12' height='12'> &nbsp;자기소개&nbsp;&nbsp;</td></tr>";
			height += 20;
		}

		if (body) {
			var layer_body = "<table border=0 width=100%><tr><td colspan=3 height=10></td></tr><tr><td width=5></td><td bgcolor=222222 style='cursor:hand'><table border=0 cellspacing=0 cellpadding=3 width=100% height=100% bgcolor=e5e5e5>"+body+"</table></td><td width=10></td></tr><tr><td colspan=3 height=10></td></tr></table>";
			obj.innerHTML = layer_body;
			obj.style.width = 150;
			obj.style.height = height;
			obj.style.visibility='visible';
		}
	}

	function my_init_layer(layername)
	{
		document.writeln("<div id="+layername+" style='position:absolute; left:1px; top:1px; width:1px; height:1px; z-index:1; visibility: hidden' onmousedown=\"my_layer_action('"+layername+"', 'hidden')\" onmouseout=\"my_layer_action('"+layername+"', 'hidden')\" onmouseover=\"my_layer_action('"+layername+"', 'visible')\">");
		document.writeln("</div>");
	}

	// 플래쉬 때문....
    function PrintEmbed(EmbID) 
    { 
        document.write(document.getElementById(EmbID).value); 
    } 
    
	//my_init_layer('my_layer_div');
	
    ////////////////////////////////////////////////////////////////////////////////
    function $(element) {
        var elements = new Array();
        for (var i = 0; i < arguments.length; i++) {
            var element = arguments[i];
            if (typeof element == 'string') element = document.getElementById(element);
            if (arguments.length == 1) return element;
            elements.push(element);
        }
        return elements;
    }
    function trim(str) {
    // 양쪽 공백 없애기
        var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자
        str = str.replace(pattern, "");
        return str;
    }
    // 이벤트 핸들러 추가 함수
    function addEventHandler(element, event, func) { 
        try {
            if (element.addEventListener) {
                element.addEventListener(event, func, false); 
            } else if (element.attachEvent) {
                element.attachEvent("on" + event, func); 
                //element.detachEvent("on" + event, func, false); 
                //element.detachEvent("on" + event, func); 
            } else {
                element['on'+ event] = func; 
            }
        } catch (e) {
            alert("addEventHandler Error : " + e.message);
        }
    }
    // 이벤트 핸들러 제거 함수 (IE용)
    function removeEventHandler(element, event, func) { 
        if (element.detachEvent) element.detachEvent("on" + event, func); 
    }
    ////////////////////////////////////////////////////////////////////////////////
    function number_format(numstr, ele) { 
      numstr = SetComma(DelComma(numstr)); 
      if (ele) ele.value = numstr; 
      return numstr; 
    } 
    
    // 숫자에 콤마를 찍는다. 
    function SetComma(numstr) { 
      numstr = String(numstr); 
      var re0 = /^(-?\d+)(\d{3})($|\..*$)/; 
      if (re0.test(numstr)) 
        return numstr.replace(re0, 
        function(str,p1,p2,p3) { 
          return SetComma(p1) + ',' + p2 + p3; 
        } 
      ); 
      else 
      return numstr; 
    } 
    
    String.prototype.SetComma = function () { 
        return SetComma(this); 
    } 
    
    // 문자를 숫자로 정리한다. 
    function DelComma(numstr) { 
      numstr = String(numstr); 
      if (numstr == '') return ''; 
      else if (numstr == '-') return ''; 
      else if (numstr == '0-') return ''; 
        numstr = numstr.replace(/[^\d\.-]/g,''); 
        numstr = String(numstr.match(/^-?\d*\.?\d*/)); 
        numstr = numstr.replace(/^(-?)(\d*)(.*)/, 
        function(str,p1,p2,p3) { 
          p2 = (p2>0) ? String(numstr.match(/[1-9]\d*$/)) : ''; 
          // p2 = (p2>0) ? String(parseInt(p2,10)) : '0'; 
          return p1 + p2 + p3; 
        } 
      ); 
      return numstr; 
    } 
    
    String.prototype.DelComma = function () { 
        return DelComma(this); 
    } 
    
    // 소숫점 자릿수를 조정한다.(버림) 
    function cutFloat(numstr, length) { 
      numstr = String(numstr); 
      eval('var re0 = /.*\\.\\d{'+ length +'}/;'); 
      if (re0.test(numstr)) 
        numstr = String(numstr.match(re0)); 
      return numstr; 
    } 
    
    String.prototype.cutFloat = function (length) { 
        return cutFloat(this,length); 
    } 
    
    ////////////////////////////////////////////////////////////////////////////////
    // 각종 출력메세지
    var MSG_DELETE_DATA = "자료를 삭제하시겠습니까?";
    var MSG_CONFIRM_MODIFY = "모든 항목을 입력/선택해 주세요.";


    ////////////////////////////////////////////////////////////////////////////////
    function PrintBody() {
        //alert("잠시 보류!");
        printDiv ();

    }
    ////////////////////////////////////////////////////////////////////////////////
	//var layername = 'my_layer_div';     // 각종 회원정 보표시위한 레이어 미리 정의!
    ////////////////////////////////////////////////////////////////////////////////
    // 아래 폼 초기화를 위해서는 폼의 아래에서 이 스크립트가 인클루드되어야 정상작동됨!
    //wrestInitialized();
 /*      window.onload = SetMessageMap;
    window.onunload = ClearMessageMap;
    
 function SetMessageMap(e) {

        //addEventHandler(document, "contextmenu", "return false;");
        wrestInitialized();
        
        if (fnInit) fnInit();

    }
    function ClearMessageMap(e) {
        // IE의 경우 attachEvent()로 추가된 이벤트는 자동해제안됨
        // removeEventHandler(document, "contextmenu", "return false;");

        // 열려있는 팝업창이 있다면 제거
        try {
            if (pop_wins) {
                for (i=0; i<pop_wins.length;i++) {
                    if (pop_wins[i]) pop_wins[i].close();
                }
            } 
        } catch(e) {}
    }*/
    function PreventClick() {
        // 오른쪽 버튼클릭으로 메뉴 안나오게 마우스명령 막기, 드래그 안되게 하기, 영역선택도 할 수 없게 하기
        document.oncontextmenu="return false;";
        document.onselectstart="return false;";
        document.ondragstart="return false;";
    }
    ////////////////////////////////////////////////////////////////////////////////
    // IE6 버젼에서는 백그라운드 이미지 (스타일 안에 있는)를 캐쉬하지 않고 mouse flicking 되는 현상 오류 해결
    //<!--[if lt IE 7]>--> 
    <!--[if !IE]--> 
        try { 
            document.execCommand('BackgroundImageCache', false, true); 
        }catch(e){}
    <!--[endif]--> 

    ////////////////////////////////////////////////////////////////////////////
    // ajax로 scritp 함수 불러오기!
    //
    // Source :: http://www.developpez.net/forums/archive/index.php/t-158898.html
    //
    // Modify by Kalsome // Support By iamSeeker
    //
    function innerHTMLJS(obj,content) {

    	// if(typeof(obj) != 'object' && typeof(content) != 'string') return;
    	obj = (typeof obj=='string') ? document.getElementById(obj) : obj;
    	// avoid IE innerHTML bug
    	// conetet 내의 html, head 태그 제거하고, 앞뒤에 body 태그 붙임....
    	content = '<body>' + content.replace(/<\/?head>/gi, '')
    				.replace(/<\/?html>/gi, '')
    				.replace(/<body/gi, '<div')
    				.replace(/<\/body/gi, '</div') + '</body>';
    
    	obj.innerHTML = content;
    	var scripts = obj.getElementsByTagName('script');
    	// conetet 내에 스크립트 여부 체크하여...
    
    	if(scripts == false) return true; // no node script == no problem !
    
    	// document 내에 신규 스크립트 만들고 거기다 복사함...
    	for(var i=0; i<scripts.length; i++) {
    		var scriptclone = document.createElement('script');
    		if(scripts[i].attributes.length > 0) { /* boucle de copie des attributs du script dans le nouveau node */
    			for(var j in scripts[i].attributes) {
    				if(typeof(scripts[i].attributes[j]) != 'undefined'
    					&& typeof(scripts[i].attributes[j].nodeName) != 'undefined' /* IE needs it */
    					&& scripts[i].attributes[j].nodeValue != null
    					&& scripts[i].attributes[j].nodeValue != '' /* IE needs it ou il copie des nodes vides */)
    				{
    					scriptclone.setAttribute(scripts[i].attributes[j].nodeName, scripts[i].attributes[j].nodeValue);
    				}
    			}
    		}
    		scriptclone.text = scripts[i].text; // on copie le corp du script
//alert("복사할 내용 : " + scriptclone.text);
    		/*
    			la j'ai pas compris, si je ne return pas sous opera ici : le javascript s'execute 2 fois -
    			mais la : le script s'execute mais n'est pas a ce moment la place entre les balises scripts !
    			et si je return juste apres le innerHTML, le script n'est pas execute... ---o(<
    		*/
    
    		if (navigator.userAgent.indexOf("Opera")>0) { return; }
    		/* on force le remplacement du node par dom, qui a pour effet de forcer le parsing du javascript */
    		scripts[i].parentNode.replaceChild(scriptclone, scripts[i]);
    	}
    	return true;
    }

    /*********************************************************************************************************/
    // iamSeeker님 협찬 ^^
    // http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=56477
    // <textarea id="debug" rows="12" cols="100" style="font-size:12px"></textarea>
    // <p><input type=button onclick="document.getElementById('debug').value=get_outerHTML(document.body);" value="View Body Source"></p>

    function get_outerHTML(element) {
        // outerHTML 이 있을 경우 바로 리턴 : IE의 경우 attributes 가 직접 설정되지 않은 모든 속성을 참조하기 때문에 사용 불가
        if(element.outerHTML)
            return element.outerHTML;
    
        // 엘리먼트가 아닐 경우 리턴 null
        if(element.nodeType != 1)
            return null;
    
        // 정식 태그가 아닐 경우 리턴 null : html 4.1 기준
        var tagName = element.nodeName.toLowerCase();
        var tag = " a abbr acronym address applet area b base basefont bdo big blockquote body br button caption center cite code col colgroup dd del dfn dir div dl dt em fieldset font form frame frameset h1 h2 h3 h4 h5 h6 head hr html i iframe img input ins isindex kbd label legend li link map menu meta noframes noscript object ol optgroup option p param pre q s samp script select small span strike strong style sub sup table tbody td textarea tfoot th thead title tr tt u ul var ";
        if(tag.indexOf(" " + tagName + " ") == -1)
            return null;
    
        // attributes 를 조회해서 nodeName="nodeValue" 꼴로 배열에 넣고 마지막에 공백으로 join
        // 속성에 " 가 포함되어 있을 경우 ' 로 감싸기
        var attr_arr = new Array();
        var attributes = element.attributes;
        var attr_len = attributes.length;
        for(var i=0 ; i<attr_len ; i++) {
            var attr_prop = attributes[i].nodeName;
            var attr_value = attributes[i].nodeValue;
            if(attr_value.indexOf("\"") != -1)
                attr_value = "'" + attr_value + "'";
            else
                attr_value = "\"" + attr_value + "\"";
            attr_arr[i] = attr_prop + "=" + attr_value;
        }
        var attr_text = attr_len?(" " + attr_arr.join(" ")):"";
    
        // empty tag, 즉 빈 태그일 경우 처리 : xhtml식으로 /> 로 닫음
        var lower = " area base basefont br col frame hr img input isindex link meta param ";
        if(lower.indexOf(" " + tagName + " ") != -1)
            return "<" + tagName + attr_text + " />";
        else
            return "<" + tagName + attr_text + ">" + element.innerHTML + "</" + tagName + ">";
    }
    
    function set_outerHTML(element,html) {
        // outerHTML이 있을 경우 바로 설정
        if(element.outerHTML) {
            element.outerHTML = html;
            return;
        }
    
        // 아니면 div를 만들고 innerHTML로 적용해서 실제 node로 적용시킨 다음 차례대로 대상 엘리먼트의 앞에 넣고 마지막에 대상 엘리먼트 삭제
        var temp = document.createElement("div");
        temp.innerHTML = html;
        var parent = element.parentNode;
        while(temp.firstChild) {
            parent.insertBefore(temp.firstChild,element);
        }
        parent.removeChild(element);
        // document.createElement로 생성한 엘리먼트는 그냥 놔둬도 되나? 안되나? 완전히 지우려면 어떻게? 일단 패스
        temp = null;
    } 


}


