//@charset "utf-8";


//아파벳+숫자+밑줄인지
function isAlphaNumUnderscore(string) {
	if (string.trim() != '' && string.search(/^[A-Za-z0-9_\-!@#\?]*$/) != -1) 
		return true;
	else
		return false;
}

//비밀번호 형식이 일치하는지.
//알파벳,숫자,밑줄 15자 이내
function isUID(uid) {
	if(!isAlphaNumUnderscore(uid) || (uid.length < 4 || uid.length > 15)) {
		return false;
	}
	return true;
}


//아이디 형식이 일치하는지.
//알파벳,숫자,밑줄 15자 이내
function isPasswd(pwd) {
	if(!isAlphaNumUnderscore(pwd) || (pwd.length < 4 || pwd.length > 30)) {
		return false;
	}
	return true;
}

function isValidEmail(str) {
   return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
}

function isKeyEnter(evt) {
	var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); 
	if ((evt.keyCode == 13) && (node.type=="text" || node.type=="password"))  {return true;} 
}

function disableEnterKey(evt) {
	return !isKeyEnter(evt);
}


function numOnly(evt) { 
	evt = (evt)? evt : ((window.event)? window.event : "");
	
	if (evt) { 
		var charCode = (evt.charCode)? evt.charCode : evt.keyCode ;
		// Backspace (8), tab (9), space (32), page up/down (33-34), end (35), home (36), arrow keys (37-40), delete (Mozilla.event.keyCode=46), digits 0-9 (48-57) 
		// minus (109)
		// MSIE movement keys do not register a keyCode event (the evt.which property will be 'undefined'; Mozilla registers 0) 
		
		//숫자판: 96~105
		//연속입력키(229) -- 2byte 문자키
		if ((charCode!= 8 && charCode!= 9) && charCode < 33 || 
			(charCode > 40 && charCode < 48 && evt.keyCode!= 46) || 
			(charCode > 57 && charCode < 96) || 
			(charCode != 109 && charCode > 105)) { 
			window.status = "***************숫자만 입력 가능합니다*************";
			return false;
		} 
		window.status = "";
	} 
}


function getClearText( strSrc ) {
	return  strSrc.replace( /<[^<|>]+?>/gi, '' );
}


/*--------------- page movement -------------------*/

//목록페이지 url을 구해 회송한다.
//form의 hidden값만 추출하하여 url을 구성한다.
function goPage(fname, mode, filename, reserve_skey) {	
	url = (filename) ? filename + '?' : '?';
	mode = (mode) ? mode : 1;
	$(fname).mode.value = mode;
	if (!reserve_skey) setVal(fname, 'sKey', '');

	$(fname).getElements('input[type^=hidden]').each(function(el) {
		if (el.value) url += el.name + "=" + encodeURI(el.value) +'&';
	});
	$(fname).getElements('input[hiddenkey^=1]').each(function(el) {
		if (el.value) url += el.name + "=" + encodeURI(el.value) +'&';
	});
	$(fname).getElements('select[hiddenkey^=1]').each(function(el) {
		if (el.options[el.selectedIndex].value) url += el.name + "=" + encodeURI(el.options[el.selectedIndex].value) +'&';
	});
	
	if (url.search(/&$/) != -1) url = url.substring(0, url.length - 1);
	
	window.location.href = url;
}

function submitPage(fname, mode, msg, method, action) {
	$(fname).mode.value = (mode) ? mode : 1;
	$(fname).method = (method) ? method : 'post';
	if (action) $(fname).action = action;
	if (msg) {
		if (confirm(msg)) $(fname).submit();
		else return;
	} else {
		$(fname).submit();
	}
}


//폼 엘러먼트의 값을 치환한다.
function setVal(fName, elName, elVal) {
	$(fName).getElement('input[name^='+elName+']').value = elVal;
}

//download data to a pseudo excel file
function goDL(fname) {
	setVal(fname,'dl',1);
	goPage(fname,1);
	setVal(fname,'dl','');
}

//search submit
function search(evt, fname, str) {
	if (!isKeyEnter(evt)) return;
	if (str.trim() == '') {
		alert('검색어를 입력하십시오.');
		return;
	}
	setVal(fname, 'sKey', str);
	$(fname).method = 'get';
	goPage(fname,1,'',true);
}

/*--------------- datalist checkbox -------------------*/
/* cechk all checkboxes */
function chk_all(fname, check_f, chk_name) {
	var check = 0;
	if (check_f.checked == 1) check = 1;
	if (!chk_name) chk_name = '_chk';

	$(fname).getElements('input[name^='+chk_name+'\[]').each(function(el) {
		if (!el.disabled) el.checked = check;
	});
}

// get checked value for checkbox, radio button
function get_checked_val(fname, el_name) {
	var checkedVal;
	var passed = $(fname).getElements('input[name='+el_name+']').some(function(el) {
		if (el.checked) {
			checkedVal = el.value;
			return true;
		}
	});
	return checkedVal;
}

function startsWith(s1, s2) {
	return s1.indexOf(s2) == 0;
}


function getURLParam(strParamName){
  var strReturn = "";
  var strHref = window.location.href;
  if ( strHref.indexOf("?") > -1 ){
    var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
      if ( aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){
        var _aParam = aQueryString[iParam].split("=");
		var aParam = _aParam[1].split("#");
        strReturn = aParam[0];
        break;
      }
    }
  }
  return unescape(strReturn);
} 


function popupWin(url, win, width, height, top, left) {
	top = (top) ? top : (window.getHeight()/2 - height/2);
	left = (left) ? left : (window.getWidth()/2 - width/2);
	window.open(url, win, 'width='+width+',height='+height+',top='+top+',left='+left);
}


function popupGo( url) {
	if (startsWith(url, "http://")) window.open(url, '_blank', '');
	else opener.location.href = url;
}


/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/
var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(C){var A="";
var J,H,F,I,G,E,D;var B=0;C=Base64._utf8_encode(C);while(B<C.length){J=C.charCodeAt(B++);H=C.charCodeAt(B++);
F=C.charCodeAt(B++);I=J>>2;G=((J&3)<<4)|(H>>4);E=((H&15)<<2)|(F>>6);D=F&63;if(isNaN(H)){E=D=64}else{if(isNaN(F)){D=64
}}A=A+this._keyStr.charAt(I)+this._keyStr.charAt(G)+this._keyStr.charAt(E)+this._keyStr.charAt(D)}return A
},decode:function(C){var A="";var J,H,F;var I,G,E,D;var B=0;C=C.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(B<C.length){I=this._keyStr.indexOf(C.charAt(B++));
G=this._keyStr.indexOf(C.charAt(B++));E=this._keyStr.indexOf(C.charAt(B++));D=this._keyStr.indexOf(C.charAt(B++));
J=(I<<2)|(G>>4);H=((G&15)<<4)|(E>>2);F=((E&3)<<6)|D;A=A+String.fromCharCode(J);if(E!=64){A=A+String.fromCharCode(H)
}if(D!=64){A=A+String.fromCharCode(F)}}A=Base64._utf8_decode(A);return A},_utf8_encode:function(B){B=B.replace(/\r\n/g,"\n");
var A="";for(var D=0;D<B.length;D++){var C=B.charCodeAt(D);if(C<128){A+=String.fromCharCode(C)}else{if((C>127)&&(C<2048)){A+=String.fromCharCode((C>>6)|192);
A+=String.fromCharCode((C&63)|128)}else{A+=String.fromCharCode((C>>12)|224);A+=String.fromCharCode(((C>>6)&63)|128);
A+=String.fromCharCode((C&63)|128)}}}return A},_utf8_decode:function(A){var B="";var C=0;var D=c1=c2=0;
while(C<A.length){D=A.charCodeAt(C);if(D<128){B+=String.fromCharCode(D);C++}else{if((D>191)&&(D<224)){c2=A.charCodeAt(C+1);
B+=String.fromCharCode(((D&31)<<6)|(c2&63));C+=2}else{c2=A.charCodeAt(C+1);c3=A.charCodeAt(C+2);B+=String.fromCharCode(((D&15)<<12)|((c2&63)<<6)|(c3&63));
C+=3}}}return B}};