//#######################################################
// 프로그램 명 : 자바스크립트 유틸리티
//#######################################################
var MB_OK = 0x00000000;
var MB_OKCANCEL  = 0x00000001;
var MB_ABORTRETRYIGNORE  = 0x00000002;
var MB_YESNOCANCEL = 0x00000003;
var MB_YESNO  = 0x00000004;
var MB_RETRYCANCEL  = 0x00000005;

var MB_ICONHAND = 0x00000010;
var MB_ICONQUESTION  = 0x00000020;
var MB_ICONEXCLAMATION  = 0x00000030;
var MB_ICONASTERISK  = 0x00000040;

var MB_USERICON  = 0x00000080;
var MB_ICONWARNING = 0x00000030;
var MB_ICONERROR  = 0x00000010;
var MB_ICONINFORMATION  = 0x00000040;
var MB_ICONSTOP  = 0x00000010;
// ############### 문자열 내의 모든 공백 문자 존재 여부 확인 ###########
function IsIncludeSpace(data){ 
	var lszTrim = data; 
	var j = 0; 
	 
	for(var i = 0; i < data.length; i++) 
	{ 
		if(data.substring(i, i+1) == ' ') 
			return true;
	} 
	 
	return false; 
} 

// ##### 빈 문자열인지 검사 (빈칸만 포함하는 문자열도 빈 문자열로 간주)  ####
function IsEmpty(data){ 
	var nCount = 0;
	var lszTrim = TrimAll(data); 
		 
	if(lszTrim.length == 0) 
		return true; 
	else 
		return false; 
	
} 

// ############### 문자열이 알파벳과 숫자로만 이루어져 있는지 확인 ######
function IsAlphaNum(str){
	var Alpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	var Number = '1234567890';
	var kiki = Alpha+Number;
	var i;
	for (i=0; i<str.length; i++){	
		if(kiki.indexOf(str.substring(i,i+1))<0) {
			return false; 
		}	
	}//for
	return true;
}

// ######################## 날짜인지 검사  ########################
function IsDate(str, format){
	var szFormat = format;
	if(mtrim(str).length < szFormat.length)
		return false;

	var cCurr = '';
	var arrDelim = new Array();
	var	arrDateFormat = new Array();
	var nPartIndex = -1;
	var nDelimPartIndex = -1;
	var cLastChar = '';

	for(nIndex = 0; nIndex < szFormat.length; nIndex++)	{
		cCurr = szFormat.charAt(nIndex);

		// 이전 문자와 같은 문자가 아닌 경우
		if(cCurr != cLastChar) {
			// 날짜 구분자인 경우
			if(cCurr != 'Y' && cCurr != 'M' && cCurr != 'D') {
				nDelimPartIndex++;
				arrDelim[nPartIndex] = new Object();
				arrDelim[nDelimPartIndex].nStartIndex = nIndex;
				arrDelim[nDelimPartIndex].cDelimChar = szFormat.charAt(nIndex);
			// 날짜 형식 문자인 경우
			} else {
				nPartIndex++;
				arrDateFormat[nPartIndex] = new Object();
				arrDateFormat[nPartIndex].nStartIndex = nIndex;
				arrDateFormat[nPartIndex].nCount = 1;
			}
			cLastChar = szFormat.charAt(nIndex);
		}
		// 이전 문자와 같은 문자인 경우
		else {
			arrDateFormat[nPartIndex].nCount++;
		}
	}

	// 날짜 검사
	for(nIndex = 0; nIndex < arrDateFormat.length; nIndex++)	{
		if(IsNumber(
				str.substring(
					arrDateFormat[nIndex].nStartIndex
					, arrDateFormat[nIndex].nStartIndex + arrDateFormat[nIndex].nCount)) == false) {
			return false;
		}
	}
	// 구분자 검사
	for(nIndex = 0; nIndex < arrDelim.length; nIndex++)	{
		if(str.charAt(arrDelim[nIndex].nStartIndex) != arrDelim[nIndex].cDelimChar) {
			return false;
		}
	}

	return true;
}

// ######################## 숫자인지 검사  ########################
function IsNumber(str){
	var Number = '1234567890';
	var kiki = Number;
	var i;
	for (i=0; i<str.length; i++){	
		if(kiki.indexOf(str.substring(i,i+1))<0) {
			return false; 
		}	
	}//for
	return true;
}

// #################### 숫자('.' 포함)인지 검사  ####################
function IsNumber2(data){
	var Number = '1234567890';
	var etc = '.';
	var kiki = Number+etc;
	var i;
	for (i=0; i<data.length; i++){	
		if(kiki.indexOf(data.substring(i, i+1))<0) {
			return false; 
		}	
	}//for
	return true;
}

// ################## 숫자(','/ '.' 포함)인지 검사  ##################
function IsNumber3(data){
	var Number = '1234567890';
	var etc = ',.';
	var kiki = Number+etc;
	var i;
	for (i=0; i<data.length; i++){	
		if(kiki.indexOf(data.substring(i,i+1))<0) {
			return false; 
		}	
	}//for
	return true;
}

// ############### 문자열이 '-'와 숫자로만 이루어져 있는지 확인 ######
function IsNumberExt(str){
	var Alpha = '-';
	var Number = '1234567890';
	var kiki = Alpha+Number;
	var i;
	for (i=0; i<str.length; i++){	
		if(kiki.indexOf(str.substring(i,i+1))<0) {
			return false; 
		}	
	}//for
	return true;
}
  
// ############### 핸드폰 번호 체크 ######
 function chkPhone(v){
	var hp_str = v.substring(0,3);
	if(hp_str!="010" && hp_str!="011" && hp_str!="016" && hp_str!="017" && hp_str!="018" && hp_str!="019"){
		return false;
	}
	return chkPatten(v,"regPhone");
	
}

 // ############### 전화번호 형식 체크 ######
function chkPatten(val,patten) {  
    var regPhone =/^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/;                     // 형식 : 033-1234-5678 
    var regMail =/^[_a-zA-Z0-9-]+@[._a-zA-Z0-9-]+\.[a-zA-Z]+$/;  

    patten = eval(patten);  
    if(!patten.test(val)){           
        return false;  
    }  
    return true;  
}

// ######################## 체크박스 모두 선택  ########################
function checkAll(id, checks, isCheck){
	var fobj = document.getElementsByName(checks);

	if(fobj == null) return;

  	if(fobj.length){
  		for(var i=0; i < fobj.length; i++){
  			if(fobj[i].disabled==false){
  				fobj[i].checked = isCheck;
  			}
  		}
  	}else{
  		if(fobj.disabled==false){
  			fobj.checked = isCheck;
  		}
  	}
  	
  	if(isCheck){
  		document.getElementById(id).innerHTML="<a href=\"javascript:checkAll('"+id+"','"+checks+"',false)\">취소</a>";
  	}else{
  		document.getElementById(id).innerHTML="<a href=\"javascript:checkAll('"+id+"','"+checks+"',true)\">선택</a>";
  	}
}

// ######################## 체크박스 모두 선택(사용자용)  ########################

function checkUserAll(id, checks, isCheck,rootPath){
	var fobj = document.getElementsByName(checks);
	
	
  	if(fobj.length){
  		for(var i=0; i < fobj.length; i++){
  			if(fobj[i].disabled==false){
  				fobj[i].checked = isCheck;
  			}
  		}
  	}else{
  		if(fobj.disabled==false){
  			fobj.checked = isCheck;
  		}
  	}
  	
  	if(isCheck){
  		document.getElementById(id).innerHTML="<a href=\"javascript:checkUserAll('"+id+"','"+checks+"',false,'"+rootPath+"')\"><img src=\""+rootPath+"/images/bbs/t_c_che.gif\" width=\"9\" height=\"9\"></a>";
  	}else{
  		document.getElementById(id).innerHTML="<a href=\"javascript:checkUserAll('"+id+"','"+checks+"',true,'"+rootPath+"')\",><img src=\""+rootPath+"/images/bbs/t_c_che.gif\" width=\"9\" height=\"9\"></a>";
  	}
}

// ######################## 브라우져 체크(네스케이프, 익스플로러)  ########################
function check_browser() {
    var ret;
    ret = navigator.appName;
    if (ret == "Netscape")
        return "NE";
    else if (ret == "Microsoft Internet Explorer")
        return "IE";
    else
        return -1;
}

// ######################## 정수체크  ########################
function is_valid_float(object) {

    if (object.getAttribute("required") != null && !object.value)
        return false;

    if (object.value.length != 0) {
        if (object.getAttribute("float") != null) {
            var regExpFloat = /^(([\+-])?(\d+)(\.\d+)?)$/;
            if(!regExpFloat.test(object.value)) return false;
        }
    }
    return true;
}

// ######################## Upper Case  ########################
function is_upper(value) {
    var i;
    for(i = 0 ; i < _upperValue.length ; i++)
        if(value == _upperValue.charAt(i))
            return true;
    return false;
}

// ######################## 대문자 변환  ########################
function to_upper(obj) {
    var strNew;
    var str = obj.value;
    for(i = 0 ; i < str.length ; i++) {
        if(str.charAt(i) >= 'a' && str.charAt(i) <= 'z')
            strNew = strNew + str.charAt(i).toUpperCase() ;
        else
            strNew = strNew + str.charAt(i);
    }
    obj.value = strNew;
}

// ######################## Lower Case  ########################
function is_lower(value) {
    var i;
    for(i = 0 ; i < _lowerValue.length ; i++)
        if(value == _lowerValue.charAt(i))
            return true;
    return false;
}

// ######################## is Int  ########################
function is_int(value) {
    var j;
    for(j = 0 ; j < _intValue.length ; j++)
        if(value == _intValue.charAt(j))
            return true;
    
    return false;
}

// ######################## 문자길이 체크  ########################
function check_length(obj,len,str) {
    obj.value = ltrim(obj.value);
    complen = check_byte(obj.value);
    if(complen > len) {
        alert(str + len + 'Byte를 넘습니다. 현재' + complen + 'Byte 입니다.');
        obj.focus();
        return false;
    }
    return true;
}

// ######################## 좌측공백제거  ########################
function ltrim(para) {
    while(para.substring(0,1) == ' ')
        para = para.substring(1, para.length);
    return para;
}

// ######################## 중간공백제거  ########################
function mtrim(para) {
    for(var i = 0 ; i < para.length ;)
        if(para.substring(i,i+1) == ' ')
            para = para.substring(0,i) + para.substring(i+1,para.length);
        else
            i++;
        return para;
}

// ######################## 오른쪽공백제거  ########################
function rtrim(para) {
    while(para.substring(para.length-1,para.length) == ' ')
        para = para.substring(0,para.length-1);
    return para;
}

// ############### 문자열 내의 모든 공백 문자 제거 ##################
function TrimAll(data) { 
	var lszTrim = data; 
	var j = 0; 
	 
	for(var i = 0; i < data.length; i++) 
	{ 
		if(data.substring(i, i+1) == ' ') 
		{ 
			if(i > 0) 
				lszTrim = data.substring(0, i); 
			else 
				lszTrim = ""; 
 
			lszTrim = lszTrim + data.substring(i+1); 
 
			data = lszTrim; 

			i--;			 
		}
	} 
	 
	return lszTrim; 
} 

// ############### 오늘(YYYY-MM-DD)날짜 리턴  ##################
function to_day() {
    var now     = new Date();
    var yr      = now.getYear();
    var mName   = now.getMonth() + 1;
    var dName   = now.getDate();

    if(yr < 100)
        year = ("19" + yr).toString();
    else
        year = yr.toString();

    if(mName < 10)
        month = ("0" + mName).toString();
    else
        month = mName.toString();

    if(dName < 10)
        day = ("0" + dName).toString();
    else
        day = dName.toString();

    return year + "-" + month + "-" + day;
}

// ############### 문자열 인코딩  ##################
function str_encoding(str) {
    var ret     = '';
    var c       = '';
    var temp    = '';

    if(check_browser() != 'IE') return str;

    for(i = 0 ; i < str.length ; i++) {
        temp = str.charCodeAt(i);
        if(temp > 122 || temp == 32)
            c = escape(str.charAt(i));
        else
            c = str.charAt(i);
        ret = ret + c;
    }
    return ret;
}

// ############### 윈도우 팝업  ##################
function PopUpWindowOpen(surl,type,pop_name,pop_value,resizable) {
    
    var pop_size    = type.split("*");
    var popupwidth  = pop_size[0];
    var popupheight = pop_size[1];
    if(isNaN(parseInt(popupwidth))) {
        Top  = (window.screen.availHeight - 600) / 2;
        Left = (window.screen.availWidth  - 800) / 2;
    } else {
        Top  = (window.screen.availHeight - popupheight) / 2;
        Left = (window.screen.availWidth  - popupwidth)  / 2;
    }
    if(Top  < 0) Top  = 0;
    if(Left < 0) Left = 0;
    var delim = (surl.indexOf("?") == -1) ? "?" : "&";
    if (!resizable) {
        Feature = "fullscreen=no,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,left=" + Left + ",top=" + Top + ",width=" + popupwidth + ",height=" + popupheight;
    } else {
        Feature = "fullscreen=no,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,left=" + Left + ",top=" + Top + ",width=" + popupwidth + ",height=" + popupheight;
    }
    if(pop_name != null && pop_value != null && pop_name!="" && pop_value !=""){
        PopUpWindow1 = window.open(surl + delim + "pop_name=" + document.myform.elements[pop_name].value + "&pop_value=" + document.myform.elements[pop_value].value, "PopUpWindow1", Feature);
    }else{
        PopUpWindow1 = window.open(surl, "PopUpWindow1", Feature);
    }
    PopUpWindow1.focus();
}

// ############### 금액 콤마 추가  ##################
function add_comma(obj) {
    var str = String(obj.value);
    var x   = 0;
    if(str.length < 1) {
        return "";
    } else {
        var tm = "";
        var ck = "";
        if(str.substring(0,1) == "-") {
            tm = str.substring(1,str.length);
            ck = "Y";
        } else {
            tm = str;
            ck = "N";
        }
        var st = "";
        var cm = ",";
        for(var i = tm.length, j = 0 ; i > 0 ; i--, j++) {
            if((j % 3) == 2) {
                if(tm.length == j+1) st = tm.substring(i-1,i) + st;
                else st = cm + tm.substring(i-1,i) + st;
            } else {
                st = tm.substring(i-1,i) + st;
            }
        }
        if(ck == "Y") st = "-" + st;
        return st;
    }
}

// ############### 날짜 등록시 .(dot) 추가  ##################
function add_dot(obj) {

    var sep = '.';
    var str = '';
    var t_date = del_dot(obj);
//  var t_date = String(obj.value);
//
    if (t_date.length < 1 || t_date.length < 8) {
        return "";
    }
    else {
        str = t_date.substring(0, 4) + sep + t_date.substring(4, 6) + sep + t_date.substring(6, 8);
    }
    obj.value = str;
}

// ########### 날짜 형식 검사(yyyy-mm-dd) ###############
function checkDateFormat(obj, objName) {
	var str = String(obj.value);
	var year;
	var month;
	var day;
	var dash_1;
	var dash_2;
	var msg;
	
	if(str.length < 1 || str.length.length > 10) {
		msg = "입력하신" + objName + " 의 길이가 형식에 맞지 않습니다.";
		alert(msg);
		return false;
	} else {
		year = str.substring(0, 4);
		dash_1 = str.substring(4, 5);
		month = str.substring(5, 7);
		dash_2 = str.substring(7, 8);
		day = str.substring(8, 10);
		
		if(!(IsNumber(year) && IsNumber(month) && IsNumber(day))) {
			msg = objName + "는 숫자로 입력되어야 합니다.";
			alert(msg);
			return false;
		}
		if(dash_1 != "-" || dash_2 != "-") {
			msg = objName + "의 년월일 구분은 -로 입력되어야 합니다.";
			alert(msg);
			return false;
		}
	}
	
	return true;
}

// ############### 날짜 .(dot) 제거  ##################
function del_dot(obj) {
    var str = String(obj.value);
    if(str.length < 1) {
        return "";
    } else {
        var st = "";
        var sp = ".";
        for(var i = 0 ; i < str.length ; i++)
            if(sp.indexOf(str.substring(i,i+1)) == -1)
                st += str.substring(i,i+1);
        return st;
    }
}

// ############### 슬러쉬 / 제거  ##################
function del_slash(obj) {
    var str = String(obj.value);
    if(str.length < 1) {
        return "";
    } else {
        var st = "";
        var sp = "/";
        for(var i = 0 ; i < str.length ; i++)
            if(sp.indexOf(str.substring(i,i+1)) == -1)
                st += str.substring(i,i+1);
        return st;
    }
}

// ############### 하이픈 (-) 제거  ##################
function del_hyphen(obj) {
    var str = String(obj.value);
    if(str.length < 1) {
        return "";
    } else {
        var st = "";
        var sp = "-";
        for(var i = 0 ; i < str.length ; i++)
            if(sp.indexOf(str.substring(i,i+1)) == -1)
                st += str.substring(i,i+1);
        return st;
    }
}

// ############### 이메일 형식 체크  ##################
function is_email(obj){
    var s =  String(obj.value);

    if ( s == "" || s == null)
    { alert("이메일을 입력하십시요.");

        return false;
    }
    else
    {
        var i = 1;
        var sLength = s.length;

        while ((i < sLength) && (s.charAt(i) != "@"))
        {
            i++
        }

        if ((i >= sLength) || (s.charAt(i) != "@"))
        {
            alert("이메일이 형식에 맞지 않습니다.");
            return false;
        }
        else i += 2;

        while ((i < sLength) && (s.charAt(i) != "."))
        {
            i++
        }

        if ((i >= sLength - 1) || (s.charAt(i) != "."))
        {
            alert("이메일이 형식에 맞지 않습니다.");
            return false;
        }
        else return true;
    }
}

// ############### 오브젝트 갯수 체크  ##################
function getLength(obj) {
    for(f = 0 ; f < document.forms.length ; f++) {

	    var mForm       = document.forms[f];
	    var iElements = mForm.elements.length;
	    var cnt = 0;
	    
	    for(i = 0 ; i < iElements ; i++) {
	      if(mForm.elements[i].name == obj) {
	        cnt = cnt + 1;
	      }
			}
			return cnt;
		}
}

// ############### 오브젝트명을 받아와서 체크박스일 경우 체크된 갯수 리턴  ##################
function getChecked(obj) {
    for(f = 0 ; f < document.forms.length ; f++) {

	    var mForm       = document.forms[f];
	    var iElements = mForm.elements.length;
	    var cnt = 0;
	    
	    for(i = 0 ; i < iElements ; i++) {
	      if(mForm.elements[i].name == obj) {
	        if(mForm.elements[i].checked) {
	        cnt = cnt + 1;
	        }
	      }
			}
		}
		return cnt;
}

// ############### 입력 글자수 알려주고 초과시 삭제  ##################
function cal_byte(cont,txtbox,lengbox,length){
    var onechar;
    var tcount=0;

    var tmpStr = new String(txtbox.value);

    for (k=0;k<tmpStr.length;k++)
    {
        onechar = tmpStr.charAt(k);
        if (escape(onechar) =='%0D') { //CR
        } else if (escape(onechar).length > 4) {
            tcount += 2;
        } else {
            tcount++;
        }
    }

    lengbox.value = tcount;
    if(tcount>length) {
        reserve = tcount-length;
        alert(cont+ "은 " + length + " Byte 이상 입력할 수가 없습니다. \r\n\n 입력한 " + cont + "는 " + reserve + "Byte초과가 되었습니다. \r\n\n 초과된 부분은 자동 삭제됩니다.");
        cutText(txtbox,lengbox,length);
        return;
    }

}

function findFormElement(form, name) {
	var arrObj = new Array();
	var obj = null;
	var nCount = 0;

	for(var i = 0; i < form.elements.length; i++) {
	    if(form.elements[i].name == name)
	    	nCount++;
	}
	
	if(nCount <= 1) {
		for(var i = 0; i < form.elements.length; i++) {
		    if(form.elements[i].name == name) {
		    	obj = form.elements[i];
		    	break;
		    }
		}

		return obj;
	}
	else {
		nCount = 0;
		for(var i = 0; i < form.elements.length; i++) {
		    if(form.elements[i].name == name) {
		    	arrObj[nCount] = form.elements[i];
		    	nCount++;
		    }
		}

		return arrObj;
	}
}

function openWindow(url, winName, left, top, width, height, bScroll) {
	if(width == null)
		width = window.screen.availWidth;
	if(height == null)
		height = window.screen.availHeight;

	if(left == null)
		left = (window.screen.availWidth  - width)  / 2;
    if(top == null )
		top  = (window.screen.availHeight - height) / 2;
	
	var scrollbars = "no";
	if(bScroll == true)		scrollbars = "yes";
	popwin = window.open(url, winName, "scrollbars="+scrollbars+",resizable=no,width="+width+",height="+height+",left="+left+",top="+top);
	popwin.focus();
}

// round 함수 ( val = 값, precision= 소숫점 자릿수) 
function round(val,precision) { 
  val = val * Math.pow(10,precision); 
  val = Math.round(val); 
  return val/Math.pow(10,precision); 
} 

// 문자열 치환
String.prototype.replaceAll = function(str1, str2) {
	var temp_str = "";

	if (this.trim() != "" && str1 != str2) {
		temp_str = this.trim();

		while (temp_str.indexOf(str1) > -1) {
			temp_str = temp_str.replace(str1, str2);
		}
	}

	return temp_str;
}

// 입력 받은 날짜를 yyyy-dd-mm형식으로 리턴한다.
// onkeyup태그와 함께 사용
function convertDate(form) { 
	var date = form.value;

	date = date.replaceAll("-","");
	
	if(IsNumber(date)){
		if((escape(event.keyCode) >= 48 && escape(event.keyCode) <= 57) || (escape(event.keyCode) >= 96 && escape(event.keyCode) <= 105)) { 
			if(date.length  > 5 && date.length <= 8){
				date = date.substring(0,4) + '-' + date.substring(4,date.length);
				date = date.substring(0,7) + '-' + date.substring(7,date.length);
		  	}else if(date.length == 5){
				date = date.substring(0,4) + '-' + date.substring(4,5);
		  	}
		  	form.value = date;
		}
	}else{
		alert("숫자만 입력해 주십시오.");
		form.value = "";
		form.focus();
	}
} 


//연속된 숫자 체크 
var	cv = new Array();
function IsContNum(chrVal){
	if(chrVal == null) return false;
	
	for(var i=0;i<chrVal.length;i++){
		cv[i] = chrVal.charAt(i);
		if(i > 2){
			if(parseInt(cv[i-2]) + 1 == parseInt(cv[i-1])){
				if(parseInt(cv[i-1]) + 1 == parseInt(cv[i])){
				 return false;
				 break;
				}
			}
		}
	
	}
	return true;
}

