/**
 * 문자열(한글==2) 길이 구하기
 * @param string
 * @return
 */
/*
function getByteLength( string ) {
    var len = 0;
    var str = string.substring(0);

    if ( str == null ) return 0;

    for(var i=0; i < str.length; i++) {
        var ch = escape(str.charAt(i));

        if( ch.length == 1 )
        	len++;
        else if( ch.indexOf("%u") != -1 ) 
        	len += 2;// 한글은 3바이트
        else if( ch.indexOf("%") != -1 ) 
        	len += parseInt( ch.length / 3);
    }

    return len;
}
*/

// select box 에서 선택된 배열의 번호,TEXT gvOnSelect에서 저장
	var selected_array_no = -1;
	var selected_array_text = "";
	
	
function getBytes(string)
{
    return encodeURIComponent(string).replace(/%../g, 'x').length;
}

/**
 * SELECT 태그의 값이 일치하는 것에 "selected=true" 설정하기
 * @param sSelect SELECT 태그 id
 * @param sValue 비교할 값
 * @return
 */
function setSelect( sSelect, sValue )
{
	var oSelect = document.getElementById( sSelect );

	for( var i = 0; i < oSelect.options.length; i++ ) {
		if( oSelect.options[i].value == sValue ) {
			oSelect.options[i].selected = true;
			break;
		}
	}
}

/**
 * INPUT-RADIO 태그의 값이 일치하는 것에 "checked=true" 설정하기
 * @param sRadio INPUT-RADIO 태그 name
 * @param sValue 비교할 값
 * @return
 */
function setRadio( sRadio, sValue )
{
	var oRadioList = document.getElementsByName( sRadio );
	var i = 0;
	while(oRadio = oRadioList[i++]) {
		if( oRadio.value == sValue ) {
			oRadio.checked = true;
			break;
		}
	}
}

 /**
  * INPUT-RADIO 태그중 현재 체크된 것의 value 가져오기
  * @param sRadio INPUT-RADIO 태그 name
  * @return 현재 체크된 요소의 value
  */
function getRadio( sRadio )
{
	var oRadioList = document.getElementsByName( sRadio );
	var i = 0;
	while(oRadio = oRadioList[i++]) {
		if( oRadio.checked == true ) {
			return oRadio.value;
			break;
		}
	}
}

	// 각 폼 요소들의 object를 생성
	function gEI(s) {
		var obj = document.getElementById(s);
		return obj;
	}

	// checkbox 같은 이름들의 object를 생성
	function gEN(s) {
		var obj = document.getElementsByName(s);
		return obj;
	}
	
	// select box(obj)의 선택된 값을 return
	function gvOnSelect(obj) {
		var ret;

		if(obj != null) {
			for(var i=0;i<obj.length;i++) {
				if(obj[i].selected) {
					selected_array_no = i;							// 전역 변수
					selected_array_text = obj[i].text;	// 전역 변수
					ret = obj[i].value;					
					break;
				} else {
					ret = "";
				}
			}
			return ret;
		} else {
			alert("객체 생성 실패!\n\nObject ID가 잘못되었습니다.");
			return ret;
		}
	}
	
	function gtOnSelect(obj) {
		var ret = "";

		if(obj != null) {
			for(var i=0;i<obj.length;i++) {
				if(obj[i].selected) {
					ret = obj[i].text;
					break;
				} else {
					ret = "";
				}
			}
		} else {
			alert("객체 생성 실패!\n\nObject ID가 잘못되었습니다.");			
		}
		return ret;
	}

	// radio button(obj)의 선택된 값을 return
	// obj -> document.all.오브젝트명 으로 받아와야 함
	function gvOnRadio(obj) {		
		var ret;

		if(obj != null) {
			for(var i=0;i<obj.length;i++) {
				if(obj[i].checked) {					
					ret = obj[i].value;
					break;
				} else {
					ret = "";
				}
			}
			return ret;
		} else {
			alert("객체 생성 실패!\n\nObject ID가 잘못되었습니다.");
			return ret;
		}
	}

	// text box의 값을 return
	function gvOnText(obj) {
		var ret;

		if(typeof(obj) == "object") {
			return trim(obj.value);
		} else {
			alert("객체 생성 실패!\n\nObject ID가 잘못되었습니다.");
			return ret;
		}
	}
	
/**
 * INPUT-CHECKBOX 태그의 값이 일치하는 것에 "checked=true" 설정하기
 * @param sCheckbox INPUT-CHECKBOX 태그 name
 * @param stringArray 비교할 값(String 이나 String[])
 * @return
 */
function setCheckbox( sCheckbox, stringArray )
{
	var oCheckboxList = document.getElementsByName( sCheckbox );
	var i = 0;
	var isArray = isArray( stringArray );
	while(oCheckbox = oCheckboxList[i++]) {
		
		// 생각해보니 체크박스 값이 1개만 넘어오게 UI를 만들 이유가 있으려나? 없을거 같은데..
		if( !isArray ) {
			if( oCheckbox.value == stringArray ) {
				oCheckbox.checked = true;
			}
		}
		else {
			for(var j = 0; j < stringArray.length; j++ ) {
				if( oCheckbox.value == stringArray[i] ) {
					oCheckbox.checked = true;
				}
			}
		}
	}
}

function trim( str )
{
	return str.replace(/^\s+|\s+$/g,"");
}
function ltrim( str )
{
	return str.replace(/^\s+/,"");
}
function rtrim( str )
{
	return str.replace(/\s+$/,"");
}


function isArray(obj) 
{
   if (obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else
      return true;
}

function openZipcode( zipcode, addr )
{
	var winZipcode = window.open( "/jsp/zipcode/list.action?zipcode=" + zipcode + "&addr=" + addr, "zipcodeSearch", "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizeable=0,width=530,height=400");
}


function isNumeric(input)
{
	var pattern =/^[0-9]+$/;
	return pattern.test( input );
}

function isAlpha(input)
{
	var pattern =/^[a-zA-Z]+$/;
	return pattern.test( input ); 
}

function isInt(input) {
	return (input.toString().search(/^-?[0-9]+$/) == 0);
}

function toInt(input) {
	if(input == "")
		return 0;
	
	if( isInt( input ) )
		return parseInt( input );
	else
		return 0;
}

/**
 * check Unsigned Integer
 * @param input
 * @return
 */
function isUInt(input) {
	return (input.toString().search(/^[0-9]+$/) == 0);
}

function isEmail( input )
{
	 var pattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	 return pattern.test( input ); 
	  
}

function isPost( post )
{

}

function isUrl( url )
{
	
}

function removeTag( html )
{
	return html.replace(/<[^>]+>/g, "");
}

function toComma( val )
{
	var input = String( val ); 
	var reg = /(\-?\d+)(\d{3})($|\.\d+)/; 
	if(reg.test(input)){ 
	  return input.replace(reg, function(str, p1,p2,p3) { 
              									 	return toComma(p1) + "," + p2 + "" + p3; 
          											 }     
      ); 
	}else{ 
	  return input; 
	} 

}

   /**
   *  날짜여부 Check
   *  @param          psValue : 날짜 8자리
   *  @return       true : Date false : not Date
   */
   function isDate(psValue)
   {
      var checkstr = "0123456789";
      var s_date_val = "";
      var s_date_tmp = "";
      var s_sepe_str = "/";
      var day;
      var month;
      var year;
      var leap = 0;
      var err = 0;
      var i;
      err = 0;
      s_date_val = psValue;

      /* 숫자가 아닌 문자 삭제 */
      for (i = 0; i < s_date_val.length; i++) 
      {
         if (checkstr.indexOf(s_date_val.substr(i,1)) >= 0) 
         {
            s_date_tmp = s_date_tmp + s_date_val.substr(i,1);
         }
      }
      s_date_val = s_date_tmp;

      if(s_date_val.length != 8)
      {
         return false;
      }

      /* 월의 유효성 체크 */
      month = s_date_val.substr(4,2);
      if ((month < 1) || (month > 12)) 
      {
         return false;
      }
      /* 날짜의 유효성 체크 */
      day = s_date_val.substr(6,2);
      if (day < 1) 
      {
         return false;
      }
      /* 윤년/2월 체크 */
      if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) 
      {
         leap = 1;
      }
      if ((month == 2) && (leap == 1) && (day > 29)) 
      {
         return false;
      }
      if ((month == 2) && (leap != 1) && (day > 28)) 
      {
         return false;
      }
      /* 기타 월의 유효성 체크  */
      if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) 
      {
         return false;
      }
      if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) 
      {
         return false;
      }
      /* 00 입력시 입력내용 삭제 */
      if ((day == 0) && (month == 0) && (year == 00)) 
      {
         return false;
      }
      return true;
   }

   /**!!
   *  개요 : Cookie값 set하는 method
   *  @param           name  Cookie이름 
   *                 value Cookie값
   *  @return        
   !!**/
   /*
   function setCookie(name, value)
   {
      var argv = setCookie.arguments;
      var argc = setCookie.arguments.length;

      var expires = (argc > 2) ? argv[2] : null;
      var path = (argc > 3) ? argv[3] : "/";
      var domain = (argc > 4) ? argv[4] : null;
      var secure = (argc > 5) ? argv[5] : false;
      document.cookie = name + "=" + escape (value) +
                     ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
                     ((path == null) ? "" : ("; path=" + path)) +
                     ((domain == null) ? "" : ("; domain=" + domain)) +
                     ((secure == true) ? "; secure" : "");
   }
		*/
   /**!!
   *  개요 : Cookie값 Get하는 method
   *  @param           name  Cookie이름 
   *                 
   *  @return        Cookie value
   !!**/
   /*
   function getCookie(Name) 
   {
      var a = document.cookie.indexOf(Name + "=");
      var b = 0;
      if (a != -1) 
      {
         a += Name.length + 1; 
         b = document.cookie.indexOf(";", a);
         if (b == -1) 
            b = document.cookie.length;
      }
      return unescape(document.cookie.substring(a, b));
   }
   */
   
   
  /** 쿠키 관련 함수들 ***************************************/
	function getCookieVal (offset) {
		var endstr = document.cookie.indexOf (";", offset);
		if (endstr == -1) endstr = document.cookie.length;
		return unescape(document.cookie.substring(offset, endstr));
	}

	function getCookie (name) {
		var arg = name + "=";
		var alen = arg.length;
		var clen = document.cookie.length;
		var i = 0;
		while (i < clen) {	//while open
			var j = i + alen;
			if (document.cookie.substring(i, j) == arg)
				return getCookieVal (j);
			i = document.cookie.indexOf(" ", i) + 1;
			if (i == 0) break; 
		}	//while close
		return null;
	}

	function setCookie (name, value) {
		var argv = setCookie.arguments;
		var argc = setCookie.arguments.length;
		var expires = (2 < argc) ? argv[2] : null;
		var path = (3 < argc) ? argv[3] : null;
		var domain = (4 < argc) ? argv[4] : null;
		path = "/";
		var secure = (5 < argc) ? argv[5] : false;

		if(expires != null) {
			var ndate = new Date();
			ndate.setDate(ndate.getDate() + expires);
			expires = ndate;
		}
		document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : "");
	} 
	
	function setCookie_time (name, value) {
		var argv = setCookie_time.arguments;
		var argc = setCookie_time.arguments.length;
		var expires = (2 < argc) ? argv[2] : null;
		var path = (3 < argc) ? argv[3] : null;
		var domain = (4 < argc) ? argv[4] : null;
		path = "/";
		var secure = (5 < argc) ? argv[5] : false;
		
		if(expires != null) {
			var ndate = new Date();
			ndate.setTime(ndate.getTime() + 1000*60*parseInt(expires));
			expires = ndate.toGMTString();			
		}
		document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires)) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : "");
	}  
	/** 쿠키 관련 함수들 End ***************************************/
	
	
   //헤더 체크박스 (전체) 처리
	function allChecked(){
		
		var frm = document.frm;
		var check = document.frm.allCheck.checked == true;
		var len = frm.idxId.length;
		if(len == undefined){
			frm.idxId.checked = check;
		}
		for(var ii=0;ii<len;ii++){
			frm.idxId[ii].checked = check;
		}
	}
   	
	//정보화교육 헤더 체크박스 (전체) 처리
	function allCheckedLecture(){
		
		var frm = document.frm;
		var check = document.frm.allCheck.checked == true;
		var len = frm.chkSeq.length;
		if(len == undefined){
			frm.chkSeq.checked = check;
		}
		for(var ii=0;ii<len;ii++){
			frm.chkSeq[ii].checked = check;
		}
	}
	
	
	function allCheckedProposal(){
	
		var frm = document.frm;
		var check = document.frm.allCheck.checked == true;
		var len = frm.chkSeq.length;

		if(len == undefined){
			frm.chkSeq.checked = check;
		}
		for(var ii=0;ii<len;ii++){
			frm.chkSeq[ii].checked = check;
		}
	}
	
	function allCheckedFinance(){
		var frm = document.frm;
		var check = document.frm.allCheck.checked == true;
		var len = frm.fNoChecked.length;

		if(len == undefined){
			frm.fNoChecked.checked = check;
		}
		for(var ii=0;ii<len;ii++){
			frm.fNoChecked[ii].checked = check;
		}
	}
	
	
   
   //게시판 체크박스 검사
	function isRadioChecked(){
		var frm = document.frm;
	
		if( frm.idxId.length == undefined ){ //옵션이 하나인경우
			return true;	
		}else{ //옵션이 하나이상
			for( var i = 0; i < frm.idxId.length; i++ ) { 
				if( frm.idxId[i].checked == true )
					return true;
			}
		}
		return false;
	}
	
   function getHttpRequest(){
		var xmlCall = null;
		try {
 			// IE 7 or none IE 
 			xmlCall = new XMLHttpRequest();  
		}catch (e) {
 			// IE 5, 6
 			try {
	  			xmlCall = new ActiveXObject("Msxml2.XMLHTTP");
 			}catch (e) {
   			try {
   				xmlCall = new ActiveXObject("Microsoft.XMLHTTP");
   			}catch (e) {	
   				xmlCall = null; // can't instantiate caller
   			}
 			}
		}
		return xmlCall;
	}
   
   	/**************************/
	/* 날짜(오늘)  */
	/**************************/
	function toDayInput(){
	   now   = new Date(); 
	   year  = now.getYear(); 
	   month = (now.getMonth()+1); 
	   date  = now.getDate(); 
	   document.all.today.value = year+"."+month+"."+date; //달력
	}
	
	/**************************/
	/* 한글파일 다운로드		  */
	/**************************/
	function hwpDown(path, name){
		var frm = document.frm;
		frm.action = "/jsp/common/downOnly.jsp?fileName="+path+"&downName="+name;
		frm.submit();	
	}
	
	/**************************/
	/* email체크				  */
	/**************************/
	function check_email(obj, message, focusing) 
	{
	   var objValue = obj.value+"";   
	   var EMAIL = /^(\w+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	   
	   if(!EMAIL.test(objValue))
	   {
	      alert(message);
	      if(focusing)
	         obj.focus();
	      return false;
	   }
	   return true;   
	}

	
	/*************************************/
	/* 영문, 숫자만 허용 
	/*************************************/
	function isNumericAlpah(s) {
		var regexp = /[^A-Za-z0-9]/;
		if(regexp.test(s)) {
			return false;
		}		
		return true;
	}
	
	/*************************************/
	/* 전화번호, 휴대폰 (숫자 - ) 
	/*************************************/
	function checkPhone(s) {
		var regexp = /[^0-9-]/;
		if(regexp.test(s)) {
			return false;
		}		
		return true;
	}
	
	/**************************/
	/* email체크
	/**************************/
	function checkEmail(s) {
		var regexp = /^(\w+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

		if( !regexp.test(s)) {
			return false;
		}		
		return true;
	}
	
	function chkGetNumberOnly(f) {
		var sOrg = f.value;
		if(sOrg.length > 0){
			var t = sOrg.substring(sOrg.length-1, sOrg.length);
			if(t.replace(/[^0-9]/g, "") == ""){
				alert("숫자만입력가능합니다");
				sOrg = sOrg.substring(0, sOrg.length-1);
				f.value =  sOrg
				return; 
			}
		}
		f.value =  sOrg
		return ;
	}
	
	//앞자리 0 붙히기
	function zeroPlus(param, num){
		var len = num - param.length;
		var result = "";
		for(var ii=0;ii<len;ii++){
			result += "0";	
		}	 
		result += param;
		return result;
	  }
	
	function doWindowPopup(url){
		window.open(url,'');
	}
	
	function doLoginForm_pop(url, url_type){	
		var url = "retUrl=" + url;
		window.open('/common/login.do?op=loginPopup2&'+url, 'LoginWindow', 'width=470, height=500, resizable=0, scrollbars=no, status=0, titlebar=0, toolbar=0, left=300, top=200');
	} 
	//
