﻿if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement){
  HTMLElement.prototype.insertAdjacentElement = function
  (where,parsedNode)
	{
	  switch (where){
		case 'beforeBegin':
			this.parentNode.insertBefore(parsedNode,this)
			break;
		case 'afterBegin':
			this.insertBefore(parsedNode,this.firstChild);
			break;
		case 'beforeEnd':
			this.appendChild(parsedNode);
			break;
		case 'afterEnd':
			if (this.nextSibling) 
      this.parentNode.insertBefore(parsedNode,this.nextSibling);
			else this.parentNode.appendChild(parsedNode);
			break;
		}
	}

	HTMLElement.prototype.insertAdjacentHTML = function
  (where,htmlStr)
	{
		var r = this.ownerDocument.createRange();
		r.setStartBefore(this);
		var parsedHTML = r.createContextualFragment(htmlStr);
		this.insertAdjacentElement(where,parsedHTML)
	}


	HTMLElement.prototype.insertAdjacentText = function
  (where,txtStr)
	{
		var parsedText = document.createTextNode(txtStr)
		this.insertAdjacentElement(where,parsedText)
	}
};
<!--체크박스 전체 해제/선택-->
function ReverseCheckAll(Id)
{
	for (var i=0; i < document.forms[0].elements.length; i++)
	{
		strName = document.forms[0].elements[i].name;
		
		if ( strName.search(Id) != -1 && 	document.forms[0].elements[i].disabled == false)
		{
			if ( document.forms[0].elements[i].checked == true )
				document.forms[0].elements[i].checked = false ;
            else
				document.forms[0].elements[i].checked = true ;
		}
	}
}
<!--체크박스 전체 선택-->
function SelectAll(Id)
{
	for (var i=0; i < document.forms[0].elements.length; i++)
	{
		strName = document.forms[0].elements[i].name;
		
		if ( strName.search(Id) != -1 && 	document.forms[0].elements[i].disabled == false)
		{			
			document.forms[0].elements[i].checked = true ;
		}
	}
}
<!--체크박스 전체 해제-->
function DeSelectAll(Id)
{
	for (var i=0; i < document.forms[0].elements.length; i++)
	{
		strName = document.forms[0].elements[i].name;
		
		if ( strName.search(Id) != -1 )
		{
			document.forms[0].elements[i].checked = false ;
		}
	}
}
<!--체크된 체크박스 찾기-->
function FindControl(tagName,name)
{
	var controls = new Array();
	var tags = document.getElementsByTagName(tagName);
	var count = 0;
	
	for(var i = 0;i<tags.length;i++)
	{
		if(tags[i].name.indexOf(name) >=0)
		{
			controls[count] = document.getElementById(tags[i].id);
			count++;
		}
	}
	
	return controls;
}

function OnlyNumber(event)
{
	if ((event.keyCode<48)||(event.keyCode>57)) event.returnValue=false;
}

function OnlyNumberTel()
{
	if ((event.keyCode<48)||(event.keyCode>57)) 
	{
		if(event.keyCode != 45)
		{
			event.returnValue=false;
		}
	}
}

function englishNumberCheck(tmpStr)
{
	var valid = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	var ok = "yes";
	var temp;
	for (var i=0; i<tmpStr.length; i++) {
	temp = "" + tmpStr.substring(i, i+1);
	if (valid.indexOf(temp) == "-1") ok = "no";
	}
	if (ok == "no") return false;
	else return true;
}

function setCookie(name, value, domain) 
{ 
	var todayDate = new Date(); 
	document.cookie = name + '=' + escape( value ) + '; path=/;' + (typeof domain != "undefined" ? "; domain=" + domain : "")
} 

function setCookieTimeOut(name, value, expiredays) {
var expire_date = new Date();
expire_date.setDate(expire_date.getDate() + expiredays );
document.cookie = name + "=" + escape( value ) + "; expires=" + expire_date.toGMTString() + "; path=/";
}  

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 '';
}

function deleteCookie( cookieName )
{
   var expireDate = new Date();
   expireDate.setDate( expireDate.getDate() - 1 );
   document.cookie = cookieName + "= " + "; expires=" + expireDate.toGMTString() + "; path=/";
}


function trim(Str)
{
	var tempStr = "";
		
	for (i = 0 ; i < Str.length; i++)
	{
		if(Str.charAt(i) == " ")
		{
			tempStr = tempStr;
		}
		else
		{
			tempStr = tempStr + Str.charAt(i);
		}
	}
		
	return tempStr;
}

function check_keydown(event)
{
	if(event.keyCode == 86 && event.ctrlKey)
	{
		event.keyCode = 0;
		event.cancelBubble = true;
	}
}
    
function limitChar(formname,maxlimit) 
{
	if (formname.value.length > maxlimit)
	{
		alert(maxlimit+"글자 이상 입력할 수 없습니다.");
		formname.value = formname.value.substring(0, maxlimit);
	}
	return true;
}

function TabMoveNext(target,event)
{
    if(event.keyCode == 9 || event.keyCode == 13)
    {
        document.getElementById(target).focus();
        event.returnValue= false;
    }
}

function CheckSpecialChar(str) {
	var ret = true;
	if (str.indexOf("/") != -1) ret = false;
	if (str.indexOf("\\") != -1) ret = false;
	if (str.indexOf(":") != -1) ret = false;
	if (str.indexOf("*") != -1) ret = false;
	if (str.indexOf("?") != -1) ret = false;
	if (str.indexOf("\"") != -1) ret = false;
	if (str.indexOf("<") != -1) ret = false;
	if (str.indexOf(">") != -1) ret = false;
	if (str.indexOf("|") != -1) ret = false;
	if (str.indexOf(".") != -1) ret = false;
	return ret;
}
	        
function specialChar(str) {
    var ret = CheckSpecialChar(str);
	if (ret == false) {
	    alert("도메인 명에 다음 문자가 올 수 없습니다.\n\n\t\\ / : * ? \" < > | .");
	}
	return ret;
}

function emailCheck(tmpStr){
		//var regExp = /[a-z0-9]{2,}@[a-z0-9-]{2,}\.[a-z0-9]{2,}/i;

        var regExp = new RegExp("^[\\w\\-]+(\\.[\\w\\-_]+)*@[\\w\\-]+(\\.[\\w\\-]+)*(\\.[a-zA-Z]{2,})$", "gi");

		if(!regExp.test(tmpStr))
			return false;
		else
			return true;
	}

function Regnum_check(renumField1,renumField2) {
     if (renumField1.value.length != 6) {   // 앞번호가 6개 아니라면
        alert("이름 또는 주민번호가 올바르지 않습니다."); 
        renumField1.focus(); //커서를 주민번호 앞자리에 놓는다.
	return false;  
    } else if (renumField2.value.length != 7) {  //뒷자리가 7개가 아니라면
        alert("이름 또는 주민번호가 올바르지 않습니다.");  
        renumField2.focus();  //커서를 주민번호 뒷자리에 놓는다. 
	return false;
    } else {   
        var strjumin1 = renumField1.value;   //변수에 주민번호 앞자리 담음
        var strjumin2 = renumField2.value;  //변수에 주민번호 뒷자리 담음
        var digit=0  
        for (var i=0;i<strjumin1.length;i++) {   //주민번호 앞자리의 길이만큼 for문을 돌린다.
            var strdigit=strjumin1.substring(i,i+1);  //앞자리중 i번째와 i+i번째 문자를 변수에 담는다.
            if (strdigit<'0' || strdigit>'9') {   //strdigit 의 값이 0보다 작거나 9보다 크면
                digit=digit+1   //digit에 1을 더한다.
            }
        }
        if ( digit != 0 ) {   //digit가 0이 아니라면
            alert('이름 또는 주민번호가 올바르지 않습니다.');  
            renumField1.focus();   
            return false;  
        }
        var digit1=0   
        for (var i=0;i<strjumin2.length;i++) { // 주민번호 뒷자리의 길이만큼 for문을 돌린다.
            var strdigit1=strjumin2.substring(i,i+1);   
            if (strdigit1<'0' || strdigit1>'9') {  
               digit1=digit1+1   
            }
        }
        if ( digit1 != 0 ) {   
            alert('이름 또는 주민번호가 올바르지 않습니다.'); 
            renumField2.focus();   
            return false;   
        }
        if (strjumin1.substring(2,3) > 1) {   //주민번호 월 부분의 첫째 숫자가 1보다 클경우
            alert('이름 또는 주민번호가 올바르지 않습니다.');
            renumField1.focus();   
            return false;
        }
        if (strjumin1.substring(4,5) > 3) { //주민번호 일 부분의 첫째 숫자가 3보다 클경우   
            alert('이름 또는 주민번호가 올바르지 않습니다.');
            renumField1.focus();   
            return false;   
        } 
        if (strjumin2.substring(0,1) > 4) {  //주민번호 뒷자리의 첫째숫자가 4보다 클경우 외국인 번호
            if(FRegnum_check(strjumin1 + strjumin2)) return true;
            else {
                alert('이름 또는 주민번호가 올바르지 않습니다.');
                renumField2.focus();   
                return false;   
            }
        }
        var a1=strjumin1.substring(0,1)   //주민번호 계산법
        var a2=strjumin1.substring(1,2)          
        var a3=strjumin1.substring(2,3)
        var a4=strjumin1.substring(3,4)
        var a5=strjumin1.substring(4,5)
        var a6=strjumin1.substring(5,6)
        var checkdigit=a1*2+a2*3+a3*4+a4*5+a5*6+a6*7
        var b1=strjumin2.substring(0,1)
        var b2=strjumin2.substring(1,2)
        var b3=strjumin2.substring(2,3)
        var b4=strjumin2.substring(3,4)
        var b5=strjumin2.substring(4,5)
        var b6=strjumin2.substring(5,6)
        var b7=strjumin2.substring(6,7)
        var checkdigit=checkdigit+b1*8+b2*9+b3*2+b4*3+b5*4+b6*5 
        checkdigit = checkdigit%11
        checkdigit = 11 - checkdigit
        checkdigit = checkdigit%10
        if (checkdigit != b7) {   
           alert('잘못된 주민등록번호입니다.\n\n다시 입력해 주시기 바랍니다.'); 
           renumField1.focus();   
           return false;
        } 
    }
      return true;
}

function FRegnum_check(s) {
    var sum=0;
    var odd=0;
    buf = new Array(13);
    for(i=0; i<13; i++) { buf[i]=parseInt(s.charAt(i)); }
    odd = buf[7]*10 + buf[8];
    if(odd%2 != 0) { return false; }
    if( (buf[11]!=6) && (buf[11]!=7) && (buf[11]!=8) && (buf[11]!=9) ) {
            return false;
    }
    multipliers = [2,3,4,5,6,7,8,9,2,3,4,5];
    for(i=0, sum=0; i<12; i++) { sum += (buf[i] *= multipliers[i]); }
    sum = 11 - (sum%11);
    if(sum >= 10) { sum -= 10; }
    sum += 2;
    if(sum >= 10) { sum -= 10; }
    if(sum != buf[12]) { return false }
    return true;
}

function StopParentEvent(e)
{
	var evt = e || window.event; // 이벤트를 받아온다.
    if (evt.stopPropagation) {
        evt.stopPropagation();
    } else {
        evt.cancelBubble = true;
    }
}

function addComma(obj,event,fLen)
{ 
    if(event.keyCode == 37 || event.keyCode == 39 ) 
    {                                              
        return;
    }
    var fLen = fLen || 2; 
    var strValue = obj.value.replace(/,|\s+/g,'');
    var strBeforeValue = (strValue.indexOf('.') != -1)? strValue.substring(0,strValue.indexOf('.')) :strValue ;
    var strAfterValue  = (strValue.indexOf('.') != -1)? strValue.substr(strValue.indexOf('.'),fLen+1) : '' ;
    if(isNaN(strValue))
    {
        alert(strValue.concat(' -> 숫자가 아닙니다.'));
        obj.value = "";
        return false;
    }
    var intLast =  strBeforeValue.length-1;
    var arrValue = new Array;
    var strComma = '';
    for(var i=intLast,j=0; i >= 0; i--,j++)
    { 
            if( j !=0 && j%3 == 0) 
            {   
                strComma = ',';
            }
            else
            {
                strComma = '';
            }
            arrValue[arrValue.length] = strBeforeValue.charAt(i) + strComma  ;
    }
    obj.value=  arrValue.reverse().join('') +  strAfterValue; 

}

function CheckSize() {  //tiny_Mce용 글자제한
    var editor_id=tinyMCE.selectedInstance.formTargetElementId; 
    var Limit= 10000; 
    var Show=editor_id + 'Count'; 
    var x=tinyMCE.getContent(); 
    if (x.length>Limit) 
    { 
        x=x.substring(0, Limit-10); 
        tinyMCE.setContent(x); 
        alert(Limit+'자 이상 입력할수 없습니다.'); 
        return false; 
    }
    else
    {   
        return true; 
    } 
} 

//오직 숫자키만 받아주는 핸들러 파포에서도됨
function getOnlyNumberKey(evt) {
    var evCode = (window.netscape) ? evt.which : event.keyCode ;
    if ((evCode >=48 && evCode <=57)   // 자판 0~9
        || (evCode >=96 && evCode <= 105)  // keypad 0~9
        || (evCode == 8)              // back space
        || (evCode == 9)              // tab
        || (evCode == 13)             // enter
        || (evCode == 46)             // delete
        || (evCode >= 37 && evCode <= 40)) // 방향키
    {
        return true;
    } else {
        if ( window.netscape ) {        // FF일 경우 
            evt.preventDefault();
        // 이벤트 무효화 
        } else {                                // IE일 경우 
            event.returnValue=false;    // 이벤트 무효화 
        } 
    }
}

//자바스크립트에서 쿼리스트링 받아오는 함수
function getArgs() {
    var args = new Object(); 
    var query = location.search.substring(1); 
    var pairs = query.split("&");
 
    for(var i = 0; i < pairs.length; i++) { 
        var pos = pairs[i].indexOf('='); 
        if (pos == -1) continue; 
        var argname = pairs[i].substring(0,pos); 
        var value = pairs[i].substring(pos+1); 
        args[argname] = unescape(value); 
    } 
    return args;
} 

function Left(str, n){
if (n <= 0)
    return "";
else if (n > String(str).length)
    return str;
else
    return String(str).substring(0,n);
}


function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

function specialChar(str, msg) {
    var ret = true;
    if (str.indexOf("/") != -1) ret = false;
    if (str.indexOf("\\") != -1) ret = false;
    if (str.indexOf(":") != -1) ret = false;
    if (str.indexOf("*") != -1) ret = false;
    if (str.indexOf("?") != -1) ret = false;
    if (str.indexOf("\"") != -1) ret = false;
    if (str.indexOf("<") != -1) ret = false;
    if (str.indexOf(">") != -1) ret = false;
    if (str.indexOf("|") != -1) ret = false;
    if (ret == false) {
        alert(msg +" 다음 문자가 올 수 없습니다.\n\n\t\\ / : * ? \" < > | ");
    }
    return ret;
}


//파폭과 ie에서 작동하는 이벤트추가함수
function addEvent(obj, evt, fuc) {
     if(obj.addEventListener) { // W3C DOM 지원 브라우저
      obj.addEventListener(evt, fuc, true);
      return true;
     } else if(obj.attachEvent) { // MSDOM 지원 브라우저
      obj.attachEvent("on"+evt, fuc);
      return true;
     } else { // NN4 나 IE5mac 등 비 호환 브라우저
      return false;
     }
}