<!--
/******************************************************************************************************************
(체크)브라우저 체크(IE Or Others)														IsIE( )
(체크)입력가능한 문자인지 체크															IsValueType( strValue, strCheckType )
(체크)빈값여부 체크																			IsEmpty( strValue )
(체크)동일정보 체크																			IsEqual( strValue1, strValue2 )
(체크)혼합문자 체크																			IsMix_String( strValue, bSpecialChar )
(체크)연속문자 체크																			IsRepeat(strValue, nCheckCount)
(체크)입력허용길이 체크																	IsLength( strValue, intMin, intMax )
(기능)문자열 자르기																			getStringCut( strValue, strCutType, intStart, intCutSize )
(기능)바이트 수 구하기																		getStringByte( strValue )
(기능)문자열 치환																				getReplace( strValue, strFind, strChange )
(기능)공백제거																					getTrim( strValue, strTrimType )
(체크)이메일주소 체크																		IsEmail( strValue )
(체크)한메일 사용여부 체크																IsMail_Daum( strValue )
(체크)전화번호 체크																			IsPhone( strValue, strPhoneType )
(체크)사업자번호 체크																		IsSaupjaNumber( strValue )
(체크)법인번호 체크																			IsCorpNumber( strValue )
(체크)주민등록번호 체크																	IsJuminNumber( strValue )
(함수)만 나이 반환																				getKorean_Age( yy, mm, gender_num )
(함수)셀렉트박스의  선택된 값 구하기													getSelected_Value( objEle )
(함수)멀티 셀렉트박스의  선택된 항목 수 구하기									getMultiSelected_Count( strObjName)
(함수)멀티 셀렉트박스의  선택된 항목들의 Value 목록 구하기				getMultiSelected_Value( strObjName)
(기능)멀티 셀렉트박스의  선택된 항목들을 제거									setMultiSelected_Delete( strObjName)
(체크)체크여부 확인																			IsChecked( objEle )
(함수)체크된 항목수 구하기																getChecked_Count( objEle )
(함수)체크된 값 구하기																		getChecked_Value( objEle )
(기능)체크박스 전체선택/해제																setChecked_All( strEleId, bChecked )
(기능)체크박스 전체반전 선택 (기존 선택값과 반대되는 모든값 선택)		setChecked_Reverse( strEleId )
(체크)윤년 체크																					IsLeapYear( intYear )
(함수)지정한 달의 일 수 구하기															getMonthOfDays( intYear, intMonth )
(함수)두 날짜의 일 수 차이 구하기														getDateDiff( form.sDate.value, form.eDate.value );
(함수)이전달, 다음달을 구함																getAddMonth_PrevNext( move_type, yyyy, mm )
(체크)유효한 날짜인지를 체크																IsDate( strYear, strMonth, strDay )
(기능)입력 포커스 주기																		setFocus( strEleId, nFormIndex )
(기능)TAB 효과 주기 (엔터키에 의해 동작)											setSendTab()
(기능)TAB 효과 주기 (지정한 길이에서 자동 전환)								setAutoTab(objEle,nLen, e)
(기능)지정한 함수 호출																		setFunction_Call( strFunction )
(기능)입력박스 초기 셋팅된 텍스트값 지우기										setDefault_TextClear( objEle, strDefault_Text )
(함수)금지단어 필터링 치환   																getWord_Filter( strValue )
(기능)금지단어 필터링 체크   																IsWord_Filter( strFilter_Word, arrFilter_List )
(기능)팝업창 띄우기																			setOpenPopup( cUrl, cOpenName, nWidth, nHeight )
(기능)팝업창 옵션에 따라 띄우기															setOpenPopupOption( cUrl, cOpenName, nWidth, nHeight, cOption )
(기능)팝업창 자동 사이즈 조절															popupAutoResize()
(기능)자동콤마 찍기																			setAutoComma( objEle )
(기능)숫자만 입력																				SetNum(obj)
(체크)빈값여부 체크 후 포커스															IsCheck(obj, strMsg)
(기능)멀티셀렉트박스의 이동 (위로이동)												setSelected_MoveUp( strObjName )
(기능)멀티셀렉트박스의 이동 (아래로이동)											setSelected_MoveDown( strObjName )
(기능)멀티셀렉트박스의 이동 (맨위로이동)											setSelected_MoveTop( strObjName )
(기능)멀티셀렉트박스의 이동 (맨아래로이동)										setSelected_MoveBottom( strObjName )
(기능)멀티셀렉트박스의 이동																setSelected_Move( objSelect, intIndex1, intIndex2 )
(기능)여러 멀티셀렉트박스에서의 이동 교환										setSelected_MoveElements( strObjName_Original, strObjName_Target )
(기능)멀티셀렉트박스에서의 전체 토글 (체크박스사용)							setSelectBox_ToggleAll( objCheckBox, strObjName )
(기능)멀티셀렉트박스에서의 전체 선택/해제 {토글}								setSelectBox_AllSelected( objEle, nSelected )
(체크)나모 엑티브 스퀘어6 입력내용 체크											IsBlank_NamoEditor( objForm, strEditorId )
(기능)파일 다운로드																			fnFileDownLoad(path,org,save)
(기능)파일 삭제																					goFileDelete( cTableName, cSeqName, cSeq, cPath, cSave, cOriginal, cDelId )
(기능)화면 이동																					goPageMoveUrl( cUrl )
(기능)화면 이동(새창)																		goPageOpenUrl( cUrl )

(체크)이미지 파일 체크																		uploadImg_Check( value )
(함수)파일 확장자 알아내기   																getFileExtension( filePath )
(함수)이미지 보기				   																showImg( img )
(함수) 3자리마다 ,를 찍어주는 함수 													getDecimalFormat( value )
(함수)타겟을 지정해서 Input Element 1개를 동적 생성한다.					appendInputElement(type, name, value, parentObj)
(함수)타겟을 지정해서 모든 Element를 제거한다.									removeAllElement(type, name, value, parentObj)
(함수)플래쉬 파일을 페이지에 삽일할때 사용한다.								flashWrite(파일경로, 가로, 세로[, 변수][,배경색][,윈도우모드])
(함수)아이프레임을 리사이징한다.														iframeResize(ifrObj)
******************************************************************************************************************/
/**
 * @deprecated : 사용하지 마시요
 * 아이프레임을 리사이징한다.
 * @ifrObj	: 아이프레임 이름
 * @ex		: 호출하는 아이프레임에 <iframe name="ifrName" onresize="getIframeResize(this)" ..>
 */
function iframeResize(ifrObj)
{
	try{	
		var oBody	=	ifrObj.document.body;
		var oFrame	=	document.all(ifrObj);
			
		oFrame.style.height = oBody.scrollHeight + (oBody.offsetHeight - oBody.clientHeight);
		oFrame.style.width = oBody.scrollWidth + (oBody.offsetWidth - oBody.clientWidth);
		
		//alert(oFrame.style.height);
	}
	catch(e) // An error is raised if the IFrame domain != its container's domain
	{
		//window.status =	'Error: ' + e.number + '; ' + e.description;
	}
}

/**
 * flashWrite(파일경로, 가로, 세로[, 변수][,배경색][,윈도우모드])
 */
function flashWrite(url,w,h,vars,bg,win){
	
	var id=url.split("/")[url.split("/").length-1].split(".")[0]; //id는 파일명으로 설정
	if(vars==null) vars='';
	if(bg==null) bg='#FFFFFF';
	if(win==null) win='transparent';

	// 플래시 코드 정의
	var flashStr= "	<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000'";
		flashStr+="			codebase='http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0'";
		flashStr+="			width='"+w+"'";
		flashStr+="			height='"+h+"'";
		//flashStr+="			id='"+id+"'";
		flashStr+="			align='middle'>";

		flashStr+="		<param name='allowScriptAccess' value='always' />";
		flashStr+="		<param name='movie' value='"+url+"' />";
		flashStr+="		<param name='FlashVars' value='"+vars+"' />";
		flashStr+="		<param name='wmode' value='"+win+"' />";
		flashStr+="		<param name='menu' value='false' />";
		flashStr+="		<param name='quality' value='high' />";
		flashStr+="		<param name='bgcolor' value='"+bg+"' />";
	
	
		flashStr+="		<embed src='"+url+"'";
		flashStr+="		       flashVars='"+vars+"'";
		flashStr+="		       wmode='"+win+"'";
		flashStr+="		       menu='false'";
		flashStr+="		       quality='high'";
		flashStr+="		       bgcolor='"+bg+"'";
		flashStr+="		       width='"+w+"'";
		flashStr+="		       height='"+h+"'";
		flashStr+="		       name='"+id+"'";
		flashStr+="		       align='middle'";
		flashStr+="		       allowScriptAccess='always'";
		flashStr+="		       swLiveConnect='true'";
		flashStr+="		       type='application/x-shockwave-flash'";
		flashStr+="		       pluginspage='http://www.macromedia.com/go/getflashplayer' />";
		flashStr+=" </object>";

	// 플래시 코드 출력
	document.write(flashStr);
}

/**
 * 타겟을 지정해서 Input Element 1개를 동적 생성한다.
 *
 * @type 			: input의 type(hidden, text..)
 * @name 		: input의 이름
 * @value 			: input의 값
 *	@parentObj	: 생성된 Element를 추가할 대상(Form)
 * @ex				: 
 */
function appendInputElement(type, name, value, parentObj)
{
	var obj = document.createElement("input");
	obj.setAttribute("type", type);
	obj.setAttribute("name", name);
	obj.setAttribute("value", value);
	parentObj.appendChild(obj);
}

/**
 * 타겟을 지정해서 모든 Element를 제거한다.
 *
 *	@parentObj	: 대상(Form)
 * @ex				: 
 */
function removeAllElement(parentObj)
{
	els = parentObj.elements;
	count = els.length;
	for( var i = 0; i < count; i++ )
	{
		parentObj.removeChild(els[0]);
	}
}

/**
 * 브라우저 체크
 *
 */
function IsIE(){
	return (navigator.userAgent.indexOf("MSIE") > -1) ? true : false;
}

/**
*	TO DO 	: 입력가능한 문자인지 체크
*	Param	: strValue
*	Param	: strCheckType
*
*	Return	: Boolean
*
*	사용예제
*		if ( IsValueType( form.title.value ) == false ) alert("허용되지 않은 문자열 포함");
*
*	참고: 이 함수는 극히 제한적으로 사용하고자 할때, 특정 정규식을 추가하여 사용하면 좋을듯 함.
**/
function IsValueType( strValue, strCheckType )
{
	if ( strValue.length == 0 )	return false;

	switch ( strCheckType.toUpperCase() )
	{
		case "H"		: if ( strValue.search(/[^가-힣]/) != -1 )											return false;   break;  // 한글(자소허용안함)
		case "E"			: if ( strValue.search(/[^A-Za-z]/) != -1 )											return false;   break;  // 영문
		case "N"		: if ( strValue.search(/[^0-9]/) != -1 )												return false;   break;  // 숫자
		case "HE"		: if ( strValue.search(/[^가-힣A-Za-z]/) != -1 )    								return false;   break;  // 한글(자소허용안함)+영문
		case "HN"		: if ( strValue.search(/[^가-힣0-9]/) != -1 )										return false;   break;  // 한글(자소허용안함)+숫자
		case "EN"		: if ( strValue.search(/[^A-Za-z0-9]/) != -1 )           							return false;   break;  // 영문+숫자
		case "EN2"		: if ( strValue.search(/[^a-z0-9]/) != -1 )           								return false;   break;  // 영문(소문자)+숫자
		case "HEN"		: if ( strValue.search(/[^가-힣A-Za-z0-9]/) != -1 )								return false;   break;  // 한글(자소허용안함)+영문+숫자
		case "HENB"	: if ( strValue.search(/[^가-힣A-Za-z0-9 ]/) != -1 )  							return false;   break;  // 한글(자소허용안함)+영문+숫자+공백
		case "N-"		: if ( strValue.search(/[^0-9-]/) != -1 )												return false;   break;  // 숫자+하이픈
		case "N,"		: if ( strValue.search(/[^0-9,]/) != -1 )												return false;   break;  // 숫자+콤마		
		case "HB"		: if ( strValue.search(/[^가-힣 ]/) != -1 )											return false;   break;  // 한글(자소허용안함)+공백
		case "EB"		: if ( strValue.search(/[^A-Za-z ]/) != -1 )										return false;   break;  // 영문+공백
		case "PWD"	: if ( strValue.search(/[^A-Za-z0-9]/) != -1 )									return false;   break;  // 영문+숫자
		case "PWD2"	: if ( strValue.search(/[^A-Za-z0-9~!@#$%^&*()-\?]/) != -1 )			return false;   break;  // 영문+숫자+특문( ~!@#$%^&*()\? )		
		case "SP"		: if ( strValue.search(/[^~!@#$%^&*()-\?]/) != -1 )						return false;   break;  // 특문( ~!@#$%^&*()\? )
		default			: 																									return false;	break;
	}
	return true;
}


/**
*	TO DO 	: 빈값여부 체크
*	Param	: strValue
*
*	Return	: Boolean
*
*	사용예제
*		if ( IsEmpty( form.title.value ) == true ) alert("입력된 값 없음");
**/
function IsEmpty( strValue )
{
	if ( strValue == null || getTrim(strValue,"A") == "" )  return true;
	return false;
}


/**
*	TO DO 	: 동일정보 체크
*	Param	: strValue1
*	Param	: strValue2
*
*	Return	: Boolean
*
*	사용예제
*		if ( IsEqual( form.pwd[0].value, form.pwd[1].value ) == false ) alert("일치하지 않음");
**/
function IsEqual( strValue1, strValue2 )
{
	if ( strValue1 != strValue2 )   return false;
	return true;
}


/**
*	TO DO 	: 혼합문자 체크
*	Param	: strValue
*	Param	: bSpecialChar
*
*	Return	: Boolean
*
*	사용예제
*		if ( IsMix_String( form.id.value ) == false ) alert("아이디는 영문과 숫자를 혼합하여 사용해야 함");
*		if ( IsMix_String( form.id.value ) == false ) alert("아이디는 영문과 숫자를 혼합하여 사용해야 함");
**/
function IsMix_String( strValue, bSpecialChar )
{
	var onlyEng	= IsValueType(strValue, "E");
	var onlyNum 	= IsValueType(strValue, "N");
	var onlySp		= IsValueType(strValue, "SP");
	
	if (bSpecialChar)
	{
		if ( !onlyEng && !onlyNum && !onlySp)
		{
			if ( IsValueType(strValue, "PWD") )	return true;
		}
	}
	else
	{
		if ( !onlyEng && !onlyNum)
		{
			if ( IsValueType(strValue, "EN") )	return true;
		}
	}

	return false;
}


/**
*	TO DO 	: 연속문자 체크
*	Param	: strYear
*	Param	: nCheckCount	(반복체크할 수)
*
*	Return	: Boolean
*
*	사용예제
*		if ( IsRepeat( form.id.value, 3 ) == true ) alert("연속적임");
**/
function IsRepeat(strValue, nCheckCount)
{
	var bResult  		= false;
	var chkRepeat	= ""; 	// 반복되는 형태 (예: aaaa)
	var chkAsc 		= ""; 	// 연속된 오름차순 형태 (예: abcd, 1234)
	var chkDesc		= ""; 	// 연속된 내림차순 형태 (예: dcba, 4321)

	for(var k=1; k<nCheckCount; k++)
	{
		chkRepeat 	+= "strValue.charAt(i) == strValue.charAt(i + " + k + ")";
		chkAsc  		+= "(strValue.charCodeAt(i) + " + k + ") == strValue.charCodeAt(i + " + k + ")";
		chkDesc 	+= "(strValue.charCodeAt(i) - " + k + ") == strValue.charCodeAt(i + " + k + ")";

		if (k < nCheckCount - 1)
		{
			chkRepeat	+= " && ";
			chkAsc  		+= " && ";
			chkDesc 	+= " && ";
		}
	}

	for( var i=0; i<strValue.length-3; i++)
	{
		if ( eval(chkRepeat) || eval(chkAsc) || eval(chkDesc) )	bResult = true;
	}

	return bResult;
}


/**
*	TO DO 	: 입력허용길이 체크
*	Param	: strValue
*
*	Return	: String
*
*	사용예제
*		if ( IsLength( form.title.value, 2, 10 ) == false ) alert("입력길이 오류");
**/
function IsLength( strValue, intMin, intMax )
{
	var nTotalByte = getStringByte( strValue );
	if ( nTotalByte < intMin || nTotalByte > intMax )	return false;
	return true;
}


/**
*	TO DO	: 문자열 자르기
*	Param	: strValue
*	Param	: strCutType		(자르는방법)
*	Param	: intStart			(시작위치)
*	Param	: intCutSize		(자를크기)
*
*	Return	: String
*
*	사용예제
*		var cResult = getStringCut( form.title.value, 'MB', 4, 6 );
*
*	주의사항
*	1. L / R		: 왼쪽,오른쪽 자르기의 경우 {시작위치} 값은 무시함
*	2. MA		: {중간}시작점에서 끝까지 자르기의 경우  {자를크기} 값은 무시함
*	3. MA/MB	: {중간} 자르기의 경우 시작값은 1부터 적용함 (즉, sbustring(0,2) 방식이 아닌 VB함수의 Mid(1,2)와 같은 형식을 취함)
**/
function getStringCut( strValue, strCutType, intStart, intCutSize )
{
	if ( strValue.length == 0 ) 		return "";
	if ( intStart < 0 )	intStart			= 0;
	if ( intCutSize < 0 )	intCutSize	= 0;
	
	var cResult = "";
	
	switch ( strCutType.toUpperCase() )
	{
		case "L"	 	:	// 왼쪽에서 자르기
					cResult   = strValue.substring(0, intCutSize);				break;
		case "R"	:	// 오른쪽에서 자르기
					intStart    = strValue.length - intCutSize;
					cResult   = strValue.substring(intStart);                     	break;
		case "MB"	:	// {중간}시작점에서 지정위치까지 자르기
					intCutSize += intStart-1;
					cResult   = strValue.substring(intStart-1, intCutSize);		break;
		case "MA"	:	// {중간}시작점에서 끝까지 자르기
					cResult   = strValue.substring(intStart-1);						break;
		default     	:
					cResult   = strValue;    												break;                                 
	}

	return cResult;
}


/**
*	TO DO 	: 바이트 수 구하기
*	Param	: strValue
*
*	Return	: Number
*
*	사용예제
*		var cResult = getStringByte( form.title.value );
**/
function getStringByte( strValue )
{
	var nTotalByte = 0;
	var cOneChar = "";

	if ( strValue.length == 0 ) return nTotalByte;
	
	for( i=0; i < strValue.length; i++ )
	{
		cOneChar = strValue.charAt(i);

		if ( escape(cOneChar).length > 4 )
		{
			nTotalByte += 2;
		}
		else
		{
			nTotalByte ++;
		}
	}
	return nTotalByte;
}


/**
*	TO DO 	: 문자열 치환
*	Param	: strValue
*	Param	: strFind		(찾을단어)
*	Param	: strChange	(바꿀단어)
*
*	Return	: String
*
*	사용예제
*		var cResult = getReplace( form.title.value, 'a', 'A' );
**/
function getReplace( strValue, strFind, strChange )
{
	var nPos = strValue.indexOf( strFind );

	while ( nPos != -1 )
	{
		strValue 	= strValue.replace( strFind, strChange );
		nPos 	= strValue.indexOf( strFind );
	}
	
	return strValue;
}


/**
*	TO DO 	: 공백제거
*	Param	: strValue
*	Param	: strTrimType
*
*	Return	: String
*
*	사용예제
*		var strResult = getTrim( form.title.value, 'B');
**/
function getTrim( strValue, strTrimType )
{
	var strReturn = "";
	
	switch ( strTrimType.toUpperCase() )
	{
		case "L"		:   strReturn = strValue.replace(/^\s+/g,"");									break;  // 왼쪽공백제거
		case "R"	:   strReturn = strValue.replace(/\s+$/g,"");									break;  // 오른쪽공백제거
		case "B"		:   strReturn = strValue.replace(/^\s+/g,"").replace(/\s+$/g,"");		break;  // 양쪽공백제거
		case "A"	:   strReturn = strValue.replace(/\s+/g,"");									break;  // 전체공백제거
		default		:   strReturn = strValue;																break;
	}
	//alert("'" + strReturn + "'");
	return strReturn;
}


/**
*	TO DO 	: 이메일주소 체크
*	Param	: strValue
*
*	Return	: Boolean
*
*	패턴형식
*		아이디부분 = 영문+숫자만+언더바+하이픈 허용 / 최소 4자리 이상 최대 15자리 까지 허용 {4,15}
*	사용예제
*		if ( IsEmail( form.email.value ) == false ) alert("잘못된 형식의 이메일");
**/
function IsEmail( strValue )
{
	//대채가능패턴모음
	//var pattern = /[-!#$%&'*+\/^_~{}|0-9a-zA-Z]+(\.[-!#$%&'*+\/^_~{}|0-9a-zA-Z]+)*@[-!#$%&'*+\/^_~{}|0-9a-zA-Z]+(\.[-!#$%&'*+\/^_~{}|0-9a-zA-Z]+)*/;
	//var pattern = /^([A-Za-z0-9_-]{4,15})(@{1})([A-Za-z0-9_-]{1,15})(.{1})([A-Za-z0-9]{2,10})(.{1}[A-Za-z]{2,10})?(.{1}[A-Za-z]{2,10})?$/;
	//var pattern = /(^[a-zA-Z0-9]+@[a-zA-Z0-9]+[a-zA-Z0-9\-]+[a-zA-Z0-9]+\.[a-zA-Z]+$)/;
	//var pattern = /^(\w+)@(\w+)[.](\w+)[.](\w+)$/;
	//var pattern = /^(\w+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	//var pattern = /^([A-Za-z0-9]{4,15})(@{1})([A-Za-z0-9_-]{1,15})(.{1})([A-Za-z0-9]{2,4})(.{1}[A-Za-z]{2,4})?(.{1}[A-Za-z]{2,4})?$/;

	var pattern = /^([A-Za-z0-9_-]{4,15})(@{1})([A-Za-z0-9_-]{1,15})(.{1})([A-Za-z0-9]{2,10})(.{1}[A-Za-z]{2,10})?(.{1}[A-Za-z]{2,10})?$/;

	if ( (strValue.length == 0) || (!pattern.test(strValue)) )  return false;
	return true;
}


/**
*	TO DO 	: 한메일 사용여부 체크
*	Param	: strValue
*
*	Return	: Boolean
*
*	사용예제
*		if ( IsMail_Daum( form.email.value ) == false ) alert("한메일은 안돼");
**/
function IsMail_Daum( strValue )
{ 
	strValue = strValue.toLowerCase();

	if ( strValue.match("@hanmail.net") || strValue.match("@daum.net") )	return false;
	return true;
}


/**
*	TO DO 	: 전화번호 체크
*	Param	: strValue
*	Param	: strPhoneType
*
*	Return	: Boolean
*
*	사용예제
*		if ( IsPhone( form.phone.value, "M" ) == false ) alert("잘못된 전화번호 형식");
**/
function IsPhone( strValue, strPhoneType )
{
	var pattern = /^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/;
	if ( (strValue.length == 0) || (!pattern.test(strValue)) )  return false;
	
	var groupNumber = null;
	switch ( strPhoneType.toUpperCase() )
	{
		case "M"	: groupNumber = new Array("010", "011", "016", "017", "018", "019");																						break;
		case "P"		: groupNumber = new Array("02","031","032","033","041","042","043","051","052","053","054","055","061","062","063","064","070");		break;
		default		: return false;																																										break;
	}

	var bFlag	= false;
	var arrPhone = strValue.split("-");
	
	for( var i=0; i<groupNumber.length; i++ )
	{
		if ( groupNumber[i] == arrPhone[0] )
		{
	    		bFlag = true;
	    		break;
		}
	}

	return bFlag;
}



/**
*	TO DO 	: 사업자번호 체크
*	Param	: strValue
*
*	Return	: Boolean
*
*	사용예제
*		if ( IsSaupjaNumber( form.saupja.value ) == false ) alert("올바르지 않은 사업자번호");
**/
function IsSaupjaNumber( strValue )
{
	if ( strValue.length != 10 )         	return false;
	if ( !IsValueType(strValue, "N") )	return false;

	var sum = 0;
	sum += parseInt( strValue.substring(0,1) );
	sum += parseInt( strValue.substring(1,2) ) * 3 % 10;
	sum += parseInt( strValue.substring(2,3) ) * 7 % 10;
	sum += parseInt( strValue.substring(3,4) ) * 1 % 10;
	sum += parseInt( strValue.substring(4,5) ) * 3 % 10;
	sum += parseInt( strValue.substring(5,6) ) * 7 % 10;
	sum += parseInt( strValue.substring(6,7) ) * 1 % 10;
	sum += parseInt( strValue.substring(7,8) ) * 3 % 10;
	sum += Math.floor(parseInt( strValue.substring(8,9) ) * 5 / 10);
	sum += parseInt( strValue.substring(8,9) ) * 5 % 10;
	sum += parseInt( strValue.substring(9,10) );
	if ( sum % 10 != 0 )   return false;

	return true;
}


/**
*	TO DO 	: 법인번호 체크
*	Param	: strValue
*
*	Return	: Boolean
*
*	사용예제
*		if ( IsCorpNumber( form.corpnum.value ) == false ) alert("올바르지 않은 법인번호");
**/
function IsCorpNumber( strValue )
{
	if ( strValue.length != 13 )         	return false;
	if ( !IsValueType(strValue, "N") )	return false;

	var sum 	= 0;
	var num 	= [1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2];
	var last 	= parseInt(corpnum.charAt(12));
	
	for(var i=0; i < 12; i++)
	{
		sum += parseInt(corpnum.charAt(i)) * num[i];
	}
	
	return ((10 - sum % 10) % 10 == last) ? true : false;
}


/**
*	TO DO 	: 주민등록번호 체크
*	Param	: strValue
*
*	Return	: Boolean
*
*	사용예제
*		if ( IsJuminNumber( form.jumin.value ) == false ) alert("올바르지 않은 주민등록번호");
**/
function IsJuminNumber( strValue )
{
	if ( strValue.length != 13 )        	return false;
	if ( !IsValueType(strValue, "N") )	return false;

	var sum = 0;
	for( i=0; i<8; i++ )	sum += strValue.substring(i, i+1)*(i+2);
	for( i=8; i<12; i++ )	sum += strValue.substring(i, i+1)*(i-6);

	sum = 11 - (sum%11);
	if ( sum >=10 ) sum -= 10;
	
	if ( (strValue.substring(12, 13) != sum) || (	(strValue.substring(6, 7) != 1)
									  						&& (strValue.substring(6, 7) != 2)
									  						&& (strValue.substring(6, 7) != 3)
									  						&& (strValue.substring(6, 7) != 4)	)
	)    return false;
	return true;
}


/**
*	TO DO 	: 만 나이 반환
*	Param	: yy			(출생년도 2자리)
*	Param	: mm		(출생월 2자리)
*	Param	: gender_num	(주민등록번호 뒷자리의 첫번째 숫자)
*
*	Return	: Number
*
*	사용예제
*		var nAge = getKorean_Age( form.jumin[0].value.substr(0,2), form.jumin[0].value.substr(2,2), form.jumin[1].value.substr(0,1) );
**/
function getKorean_Age( yy, mm, gender_num )
{
	var nowDate	= new Date();
	var strYY		= nowDate.getYear();
	var strMM		= nowDate.getMonth()+1;
	var strBrith_YY;
	var nKorean_Age;

	if ( gender_num == 1 || gender_num == 2 )
	{
		strBrith_YY ='19' + String(yy);
	}
	else
	{
		strBrith_YY ='20' + String(yy);
	}
	
	nKorean_Age = ( parseInt(mm) < parseInt(strMM) ) ? ( strYY-parseInt(strBrith_YY) ) : ( strYY-parseInt(strBrith_YY)-1 );
	return nKorean_Age;
}


/**
*	TO DO 	: 셀렉트박스의  선택된 값 구하기
*	Param	: objEle	(셀렉트박스 이름)
*
*	Return	: String
*
*	사용예제
*		var cResult = getSelected_Value( form.selectData );
**/
function getSelected_Value( objEle )
{
	var strReturn = "";

	for( var i=0; i<objEle.length; i++ )
	{
    		if ( objEle.options[i].selected )
    		{
        		if ( strReturn.length > 0 )   strReturn += ",";
        		strReturn += objEle.options[i].value;
    		}
	}
	return strReturn;
}


/**
*	TO DO 	: 멀티 셀렉트박스의  선택된 항목 수 구하기
*	Param	: strObjName	(셀렉트박스 이름)
*
*	Return	: Number
*
*	사용예제
*		var nResult = getMultiSelected_Count( "imgList" );
**/
function getMultiSelected_Count( strObjName)
{
    var nCount = 0;

	try
	{
        var objEle = document.getElementById(strObjName);

		for( var i=0; i < objEle.options.length; i++ )
		{
            if ( objEle.options[i].selected )	nCount += 1;
        }
	} catch(e) {}

	return nCount;
}


/**
*	TO DO 	: 멀티 셀렉트박스의  선택된 항목들의 Value 목록 구하기
*	Param	: strObjName	(셀렉트박스 이름)
*
*	Return	: String
*
*	사용예제
*		var cSelectedItemList = getMultiSelected_Value( "imgList" );
**/
function getMultiSelected_Value( strObjName)
{
    var strReturn = "";

	try
	{
        var objEle = document.getElementById(strObjName);

		for( var i=0; i < objEle.options.length; i++ )
		{
            if ( objEle.options[i].selected )
            {
            	if ( strReturn.length > 0 )   strReturn += ",";
            	strReturn += objEle.options[i].value;
            }
        }
	} catch(e) {}

	return strReturn;
}


/**
*	TO DO 	: 멀티 셀렉트박스의  선택된 항목들을 제거
*	Param	: strObjName	(셀렉트박스 이름)
*
*	Return	: 없음
*
*	사용예제
*		setMultiSelected_Delete( "imgList" );
**/
function setMultiSelected_Delete( strObjName)
{
	try
	{
        var objEle = document.getElementById(strObjName);

		// 멀티 삭제시 주의점: 밑에서 위로 루프 돌리며 삭제해야 한다.
		// for( var i=0; i < objEle.options.length; i++ ) 와 같이, 위에서 부터 삭제를 하면,
		// 데이터가 꼬이면서 원하지 않는 결과를 얻게 된다.
		for( var i=(objEle.options.length-1); i >= 0 ; i-- )
		{
			if (objEle.options[i].selected )	objEle.options[i] = null;
        }
	} catch(e) {}
}


/**
*	TO DO 	: 체크여부 확인
*	Param	: objEle	(라디오박스/체크박스의 이름)
*
*	Return	: Boolean
*
*	사용예제
*		if ( IsChecked( form.chkData ) == false ) alert("체크된 항목 없음");
**/
function IsChecked( objEle )
{
	if ( String(objEle) != "undefined" )
	{
		if ( String(objEle.length) == "undefined" )
		{
			if ( objEle.checked )   return true;
		}
		else
		{
			for( var i=0; i<objEle.length; i++ )
			{
				if ( objEle[i].checked )    return true;
			}
		}
	}
	
	return false;
}


/**
*	TO DO 	: 체크된 항목수 구하기
*	Param	: objEle	(라디오박스/체크박스의 이름)
*
*	Return	: Number
*
*	사용예제
*		var nResult = getChecked_Count( form.chkData );
**/
function getChecked_Count( objEle )
{
	var nCount = 0;

	if ( String(objEle) != "undefined" )
	{
		if ( String(objEle.length) == "undefined" )
		{
			if ( objEle.checked )   nCount += 1;
		}
		else
		{
			for( var i=0; i<objEle.length; i++ )
			{
				if ( objEle[i].checked )    nCount += 1;
			}
		}
	}
	
	return nCount;
}


/**
*	TO DO 	: 체크된 값 구하기
*	Param	: objEle	(라디오박스/체크박스의 이름)
*
*	Return	: String
*
*	사용예제
*		var cResult = getChecked_Value( form.chkData );
**/
function getChecked_Value( objEle )
{
	var strReturn = "";


	if ( String(objEle) != "undefined" )
	{
		if ( String(objEle.length) == "undefined" )
		{
			strReturn = objEle.value;
		}
		else
		{
			for( var i=0; i<objEle.length; i++ )
			{
		    		if ( objEle[i].checked )
		    		{
		        		if ( strReturn.length > 0 )   strReturn += ",";
		        		strReturn += objEle[i].value;
		    		}
			}
		}
	}

	return strReturn;
}


/**
*	TO DO 	: 체크박스 전체선택/해제
*	Param	: strEleId
*	Param	: bChecked
*
*	Return	: 없음
*
*	사용예제
*		<input type="checkbox" onClick="setChecked_All('checkData', this.checked);">
**/
function setChecked_All( strEleId, bChecked )
{
	var objEle = eval("document.getElementsByName('"+ strEleId +"')");

	bChecked = bChecked ? true : false;
	for( var i=0; i < objEle.length; i++ )
	{
		objEle[i].checked = bChecked;
	}
}


/**
*	TO DO 	: 체크박스 전체반전 선택 (기존 선택값과 반대되는 모든값 선택)
*	Param	: strEleId
*
*	Return	: 없음
*
*	사용예제
*		<input type="checkbox" onClick="setChecked_Reverse('checkData');">
**/
function setChecked_Reverse( strEleId )
{
	var objEle = eval("document.getElementsByName('"+ strEleId +"')");
	
	for( var i=0; i < objEle.length; i++ )
	{
		objEle[i].checked = !objEle[i].checked;
	}
}


/**
*	TO DO 	: 윤년 체크
*	Param	: intYear
*
*	Return	: Boolean
*
*	사용예제
*		if ( IsLeapYear( 2008 ) == false ) alert("윤년");
**/
function IsLeapYear( intYear )
{
	if ( intYear % 1000 != 0 && intYear % 4 == 0 )  return true;
	return false;
}


/**
*	TO DO 	: 지정한 달의 일 수 구하기
*	Param	: intYear
*	Param	: intMonth
*
*	Return	: Number
*
*	사용예제
*		var nResult = getMonthOfDays( 2008, 2);
**/
function getMonthOfDays( intYear, intMonth )
{
	var arrDays = new Array(12);
	
	arrDays[0]   	= 31;
	arrDays[1]   	= ( IsLeapYear(intYear) ) ? 29 : 28;
	arrDays[2]   	= 31;
	arrDays[3]   	= 30;
	arrDays[4]   	= 31;
	arrDays[5]   	= 30;
	arrDays[6]   	= 31;
	arrDays[7]   	= 31;
	arrDays[8]   	= 30;
	arrDays[9]		= 31;
	arrDays[10]	= 30;
	arrDays[11]	= 31;
	
	return arrDays[intMonth-1];
}


/**
*	TO DO 	: 두 날짜의 일 수 차이 구하기
*	Param	: cStartDate
*	Param	: cEndDate
*
*	Return	: Integer
*
*	사용예제
*		var nDay = getDateDiff( form.sDate.value, form.eDate.value );	// 두 날짜의 차이
**/
function getDateDiff( cStartDate, cEndDate )
{
	var sDate = cStartDate.split("-");
	var eDate = cEndDate.split("-");

	var dtSDate = new Date(sDate[0], Number(sDate[1])-1, sDate[2]);
	var dtEDate = new Date(eDate[0], Number(eDate[1])-1, eDate[2]);
	
	var nDiffDay = ( dtEDate.getTime() - dtSDate.getTime() ) / (1000*60*60*24);
	
	return nDiffDay;
}



/**
*	TO DO 	: 이전달, 다음달을 구함
*	Param	: move_type	// prev:이전달, next:다음달
*	Param	: yyyy			// 기준년도
*	Param	: mm				// 기준 월(月)
*
*	Return	: String			// 2008-12 의 형태
*
*	사용예제
*		var cResult		= getAddMonth_PrevNext(cMoveType, yyyy, mm);			// 이전달, 다음달을 구함
*		var arrDate 	= cResult.split("-");
*		alert(arrDate[0] + "\n" + arrDate[1]);
**/
function getAddMonth_PrevNext( move_type, yyyy, mm )
{
	var yyyy	= parseInt(yyyy,10);	// 10진수 변환
	var mm	= parseInt(mm,10);

	var currentMM = mm - 1;		// 현재달을 구함 (실제 달력은 0~11 을 사용하므로 -1 해준다)

	var d = new Date(yyyy, currentMM, '01');
	var dd = (move_type == "prev") ? new Date(yyyy, d.getMonth()-1) : new Date(yyyy, d.getMonth()+1);
	
	yyyy = dd.getYear();
	mm = dd.getMonth()+1;					// 결과처리된 달을 가져온다 (실제 달력은 0~11 을 사용하므로 +1 해준다)
	
	mm = (mm < 10) ? "0"+mm : mm;	// 월을 표현할때 2자리 형태로 
	var cResult = yyyy + "-" + mm;
	
	return cResult;
}


/**
*	TO DO 	: 유효한 날짜인지를 체크
*	Param	: strYear
*	Param	: strMonth
*	Param	: strDay
*
*	Return	: Boolean
*
*	사용예제
*		if ( IsDate( '2008', '13', '32' ) == false ) alert("올바른 날짜가 아님");
**/
function IsDate( strYear, strMonth, strDay )
{
	var intYear		= parseInt(strYear,10);		// 10진수 변환
	var intMonth	= parseInt(strMonth,10);
	var intDay  	= parseInt(strDay,10);
	
	var nMonthOfDays = getMonthOfDays(intYear, intMonth);
	
	if ( intDay < 1 || intDay > nMonthOfDays )	return false;
	if ( intMonth < 1 || intMonth > 12 )        		return false;
	
	return true;
}


/**
*	TO DO 	: 입력 포커스 주기
*	Param	: strEleId
*
*	Return	: 없음
*
*	사용예제
*		setFocus( 'userName', null );
**/
function setFocus( strEleId, nFormIndex )
{
	if (nFormIndex == null)	nFormIndex = 0;

	var form	= eval('document.forms[' + nFormIndex + "]");
	var objEle	= eval('form.' + strEle);
	objEle.focus();
}


/**
*	TO DO 	: TAB 효과 주기 (엔터키에 의해 동작)
*	Param	: 없음
*
*	Return	: 없음
*
*	사용예제
*		setSendTab();
**/
function setSendTab()
{
	if ( event.keyCode == 13 )  event.keyCode = 9;
}


/**
*	TO DO 	: TAB 효과 주기 (지정한 길이에서 자동 전환)
*	Param	: 없음
*
*	Return	: 없음
*
*	사용예제
*		<input type="text" name="jumin" onKeyUp="return setAutoTab(this, 6, event);">
*		<input type="text" name="jumin" onKeyUp="return setAutoTab(this, 7, event);">
**/
function setAutoTab( objele,nlen, e )
{
	var isNN = (navigator.appName.indexOf("Netscape")!=-1);
	
	var keyCode = (isNN) ? e.which : e.keyCode;
	var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];

	if(objele.value.length >= nlen && !containsElement(filter,keyCode))
	{
		objele.value = objele.value.slice(0, nlen);
		objele.form[(getIndex(objele)+1) % objele.form.length].focus();
	}

	function containsElement(arr, ele)
	{
		var found = false, index = 0;
		while(!found && index < arr.length)
			if(arr[index] == ele)
				found = true;
			else
				index++;
		return found;
	}

	function getIndex(objele)
	{
		var index = -1, i = 0, found = false;
		while (i < objele.form.length && index == -1)
			if (objele.form[i] == objele)index = i;
			else i++;
		return index;
	}

	return true;
}


/**
*	TO DO 	: 지정한 함수 호출
*	Param	: strFunction
*
*	Return	: 없음
*
*	사용예제
*		<input  type="text" name="search" onKeyDown="return setFunction_Call( 'goSearch()' );">
*	참고사항
*		이 함수의 본래 목적은 자동서브밋 방지 효과를 내기 위한 것 이었음.
*		즉, <form> 요소에 단 하나의 TextBox 만 존재할때,,
*		엔터키 이벤트가 발생하면 자동서브밋되는 현상을 방지하기 위함이었음
*		약간 변형하면, 이미지버튼 서브밋 방지에도 적용 가능해 보임
**/
function setFunction_Call( strFunction )
{
	if ( event.keyCode == 13 )
	{
		eval(strFunction + ";");
		return false;
	}
}


/**
*	TO DO 	: 입력박스 초기 셋팅된 텍스트값 지우기
*	Param	: objEle
*	Param	: strDefault_Text
*
*	Return	: 없음
*
*	사용예제
*		<input type="text" name="search" onMouseDown="setDefault_TextClear(this.form.keyword, '검색어를 입력하세요');">
**/
function setDefault_TextClear( objEle, strDefault_Text )
{
	if (objEle.value == strDefault_Text) objEle.value = "";
}


/**
*	TO DO 	: 금지단어 필터링 치환
*	Param	: strValue
*
*	Return	: String
*
*	사용예제
*		form.content.value = getWord_Filter( form.content.value );
**/
function getWord_Filter( strValue )
{
	var strBadWord;
	var nBadCount = 0;    
	
	/* 금지단어 목록 */
	var arrBadList = new Array("바보/**님","멍청이/청님", "18/", "졸라/졸라서");
	
	for( var i=0; i < arrBadList.length; i++ )
	{
		strBadWord = arrBadList[i];
	
		var arrWord = strBadWord.split("/");                   			// 금지단어,대체단어를 분리
		if ( jsEmpty(arrWord[1]) == true )  arrWord[1] = "***";		// 대체단어가 빈값이면 임의의 값을 기록
		
		while(true)
		{
			if (strValue.indexOf(arrWord[0]) != -1 )
			{
				strValue = strValue.replace(arrWord[0], arrWord[1]);
				nBadCount++;
			}
			else
			{
				break;
			}
		}
	}
	//if ( nBadCount > 0 ) alert(nBadCount + "개의 불량단어 검출");
	return strValue;
}


/**
*	TO DO 	: 금지단어 필터링 체크
*	Param	: strFilter_Word
*	Param	: arrFilter_List
*
*	Return	: Boolean
*
*	사용예제
*		if ( IsWord_Filter( form.content.value ) == false)	alert("사용할 수 없는 문자열입니다");
**/
function IsWord_Filter( strFilter_Word, arrFilter_List )
{
	for( var i=0; i<arrFilter_List.length; i++ )
	{
		if ( arrFilter_List[i] == strFilter_Word )	return true;
	}
	
	return false;
}


	/**
	 *	팝업창 띄우기
	 *
	 *	Param	: cUrl
	 *	Param	: cOpenName
	 *	Param	: nWidth
	 *	Param	: nHeight
	 *	Return	: 없음
	 *
	 *	사용예제
	 *		setOpenPopup( '/Popup/popPassword.jsp', 'popPassword', 300, 200 );
	 */
	function setOpenPopup( cUrl, cOpenName, nWidth, nHeight )
	{
		// 팝업 위치 자동 조정
		LeftPosition = (screen.width) ? (screen.width-nWidth)/2 : 0;
		TopPosition = (screen.height) ? (screen.height-nHeight)/2 : 0;

		var windowprops = "width="+ nWidth+", height="+ nHeight+", toolbar=0, location=0, status=0, menubar=0, scrollbars=0, resizable=0, top="+ TopPosition +", left="+ LeftPosition +"  ";
		window.open(cUrl, cOpenName, windowprops);
	}

/**
*	TO DO 	: 팝업창 옵션에 따라 띄우기
*	Param	: cUrl
*	Param	: cOpenName
*	Param	: nWidth
*	Param	: nHeight
*	Param	: cOption
*	Return	: 없음
*
*	사용예제
*		setOpenPopupOption( '/Popup/popPassword.jsp', 'popPassword', 300, 200, "scrollbars=no");
**/
function setOpenPopupOption( cUrl, cOpenName, nWidth, nHeight, cOption )
{
	var cDefaultOption = "location=no, scrollbars=no, menubars=no, toolbars=no, resizable=no";
	
	cOption = (cOption != "") ? cOption : cDefaultOption; 
	
	var windowprops = "width="+ nWidth+", height="+ nHeight+", "+ cOption +"";
	window.open(cUrl, cOpenName, windowprops);
}

	/**
	 *	팝업창을 가운데로 조정하고, 포커스를 줌.
	 *	Return	: 없음
	 *
	 *	사용예제
	 *	window.onload = function(){popupCenterFocus();} 
	 */
	function popupCenterFocus()
	{
		var thisX = parseInt(document.body.scrollWidth);
	    var thisY = parseInt(document.body.scrollHeight);
	    var maxThisX = screen.width - 50;
	    var maxThisY = screen.height - 50;
	    var marginY = 0;
	    
	    // 브라우저별 높이 조절.
	    if (navigator.userAgent.indexOf("MSIE 6") > 0) marginY = 45;        // IE 6.x
	    else if(navigator.userAgent.indexOf("MSIE 7") > 0) marginY = 75;    // IE 7.x
	    else if(navigator.userAgent.indexOf("Firefox") > 0) marginY = 50;   // FF
	    else if(navigator.userAgent.indexOf("Opera") > 0) marginY = 30;     // Opera
	    else if(navigator.userAgent.indexOf("Netscape") > 0) marginY = -2;  // Netscape
	
	    if (thisX > maxThisX) {
	        //window.document.body.scroll = "yes";
	        thisX = maxThisX;
	    }
	    if (thisY > maxThisY - marginY) {
	        //window.document.body.scroll = "yes";
	        thisX += 19;
	        thisY = maxThisY - marginY;
	    }
	
	    // 센터 정렬
	    var windowX = (screen.width - (thisX+10))/2;
	    var windowY = (screen.height - (thisY+marginY))/2 - 20;
	    window.moveTo(windowX,windowY);
	}
	
/**
*	TO DO 	: 팝업창 자동 사이즈 조절
*	Return	: 없음
*
*	사용예제
*	window.onload = function(){popupAutoResize();} 
**/
function popupAutoResize() 
{
    var thisX = parseInt(document.body.scrollWidth);
    var thisY = parseInt(document.body.scrollHeight);
    var maxThisX = screen.width - 50;
    var maxThisY = screen.height - 50;
    var marginY = 0;
    
    // 브라우저별 높이 조절.
    if (navigator.userAgent.indexOf("MSIE 6") > 0) marginY = 45;        // IE 6.x
    else if(navigator.userAgent.indexOf("MSIE 7") > 0) marginY = 75;    // IE 7.x
    else if(navigator.userAgent.indexOf("Firefox") > 0) marginY = 50;   // FF
    else if(navigator.userAgent.indexOf("Opera") > 0) marginY = 30;     // Opera
    else if(navigator.userAgent.indexOf("Netscape") > 0) marginY = -2;  // Netscape

    if (thisX > maxThisX) {
        window.document.body.scroll = "yes";
        thisX = maxThisX;
    }
    if (thisY > maxThisY - marginY) {
        window.document.body.scroll = "yes";
        thisX += 19;
        thisY = maxThisY - marginY;
    }
    window.resizeTo(thisX+10, thisY+marginY);

    // 센터 정렬
    var windowX = (screen.width - (thisX+10))/2;
    var windowY = (screen.height - (thisY+marginY))/2 - 20;
    window.moveTo(windowX,windowY);
}


/**
*	TO DO	: 자동콤마 찍기
*	Param	: objEle (TextBox Name)
*
*	Return	: 없음 (TextBox 실시간 처리)
*
*	사용예제
*		<input type="text" name="money" onKeyup="setAutoComma(this)" style="text-align:right; ime-mode:disabled;">
**/
function setAutoComma( objEle )
{
	var str 		= "" + objEle.value.replace(/,/gi, '');	// 콤마 제거
	var pattern	= new RegExp(/(-?\d+)(\d{3})/);
	var bExists	= str.indexOf(".", 0);
	var strArr  	= str.split('.');

	while(pattern.test(strArr[0]))
	{
		strArr[0] = strArr[0].replace(pattern, "$1, $2");
	}
	
	if (bExists > -1)
	{
		objEle.value = strArr[0] + "." + strArr[1]; 
	}
	else
	{
		objEle.value = strArr[0];
	}
}

/**
 * 숫자만 입력
 *	@Param	: obj (TextBox Name)
 * @Return	: 없음 (TextBox 실시간 처리)
 * @사용예제
 *		<input type="text" name="money" onkeypress='SetNum(this)' onblur='SetNum(this)'>
 */
function SetNum(obj){
	val=obj.value;
	re=/[^0-9]/gi;
	obj.value=val.replace(re,""); 
}

/**
*	TO DO	: 빈값여부 체크 후 포커스
*	Param	: obj (TextBox Name)
*
*	Return	: Boolean
*
*	사용예제
*	if( IsCheck(form.id, "아이디를 입력해주세요.") == false ) return;
**/
function IsCheck(obj, strMsg)
{
	if ( IsEmpty(obj.value) )
	{
		alert(strMsg);
		obj.focus();
		return false;
	}
	return true;
}


	/**
	*	TO DO 	: 멀티셀렉트박스의 이동 (위로이동)
	*	Param	: strObjName
	*
	*	사용예제
	*	<input type="button" value="위로이동"	onClick="setSelected_MoveTop('strObjName')">
	**/
    function setSelected_MoveUp( strObjName )
    {
        var objSelect = document.getElementById(strObjName);
        var i = objSelect.selectedIndex;
        if ( i > 0 )
        {
            setSelected_Move( objSelect, i, i-1 );

            objSelect.options[i-1].selected = true;
            objSelect.options[i].selected   = false;
        }
    }

	/**
	*	TO DO 	: 멀티셀렉트박스의 이동 (아래로이동)
	*	Param	: strObjName
	*
	*	사용예제
	*	<input type="button" value="아래로이동"	onClick="setSelected_MoveDown('strObjName')">
	**/
    function setSelected_MoveDown( strObjName )
    {
        var objSelect = document.getElementById(strObjName);
        var i = objSelect.selectedIndex;
    
        if ( i<objSelect.length-1 && i>-1 )
        {
            setSelected_Move(objSelect,i+1,i);
    
            objSelect.options[i+1].selected = true;
            objSelect.options[i].selected   = false;
        }
    }

	/**
	*	TO DO 	: 멀티셀렉트박스의 이동 (맨위로이동)
	*	Param	: strObjName
	*
	*	사용예제
	*	<input type="button" value="맨위로이동"	onClick="setSelected_MoveTop('strObjName')">
	**/
    function setSelected_MoveTop( strObjName )
    {
        var objSelect = document.getElementById(strObjName);
        var i  =objSelect.selectedIndex;
        for(; i>0; i--)
        {
            setSelected_Move(objSelect,i,i-1);
    
            objSelect.options[i-1].selected = true;
            objSelect.options[i].selected   = false;
        }
    }

	/**
	*	TO DO 	: 멀티셀렉트박스의 이동 (맨아래로이동)
	*	Param	: strObjName
	*
	*	사용예제
	*	<input type="button" value="맨아래로이동"	onClick="setSelected_MoveBottom('strObjName')">
	**/
    function setSelected_MoveBottom( strObjName )
    {
        var objSelect = document.getElementById(strObjName);
        var i = objSelect.selectedIndex;
        if ( i>-1 ) {
            for(; i<objSelect.length-1; i++)
            {
                setSelected_Move(objSelect,i+1,i);
    
                objSelect.options[i+1].selected = true;
                objSelect.options[i].selected   = false;
            }
        }
    }

	/**
	*	TO DO 	: 멀티셀렉트박스의 이동
	*	Param	: strObjName
	*	Param	: intIndex1
	*	Param	: intIndex2		
	*
	*	사용예제
	*	<input type="button" value="이동테스트"	onClick="setSelected_Move( objSelect, intIndex1, intIndex2 )">
	**/
    function setSelected_Move( objSelect, intIndex1, intIndex2 )
    {
        var savedValue  = objSelect.options[intIndex1].value;
        var savedText   = objSelect.options[intIndex1].text;

        objSelect.options[intIndex1].value = objSelect.options[intIndex2].value;
        objSelect.options[intIndex1].text  = objSelect.options[intIndex2].text;
        objSelect.options[intIndex2].value = savedValue;
        objSelect.options[intIndex2].text  = savedText;
    }



	/**
	*	TO DO 	: 여러 멀티셀렉트박스에서의 이동 교환
	*	Param	: strObjName_Original
	*	Param	: strObjName_Target
	*
	*	사용예제
	*	<input type="button" value="맞교환"	onClick="setSelected_MoveElements( strObjName_Original, strObjName_Target )">
	**/
    function setSelected_MoveElements( strObjName_Original, strObjName_Target )
    {
        var objOriginal = document.getElementById(strObjName_Original);
        var objTarget   = document.getElementById(strObjName_Target);

        // 이동 (원본-->타켓)
        var intRemoveCount = 0;     // 이동할 항목수
        for( var i=0; i < objOriginal.options.length; i++ )
        {
            if ( objOriginal.options[i].selected == true )
            {
                var addText     = objOriginal.options[i].text;
                var addValue    = objOriginal.options[i].value;

                objTarget.options[objTarget.options.length] = new Option(addText,addValue);
                objOriginal.options[i].selected = false;
                ++intRemoveCount;
            } else {
                objOriginal.options[i-intRemoveCount].selected = false;
                objOriginal.options[i-intRemoveCount].text  = objOriginal.options[i].text;
                objOriginal.options[i-intRemoveCount].value = objOriginal.options[i].value;
            }
        }

        // 이동후 원본에서 제거
        var intRemainCount = objOriginal.options.length - intRemoveCount;   // 이동후 남은 항목수
        for( i=objOriginal.options.length-1; i>=intRemainCount; i-- )
        {
            objOriginal.options[i] = null;
        }
    }

	/**
	*	TO DO 	: 멀티셀렉트박스에서의 전체 토글 (체크박스사용)
	*	Param	: objCheckBox	
	*	Param	: strObjName
	*
	*	사용예제
	*	<input type="button" value="전체토글"	onClick="setSelectBox_ToggleAll( objCheckBox, strObjName )">
	**/
    function setSelectBox_ToggleAll( objCheckBox, strObjName )
    {
        var objSelect=document.getElementById(strObjName);
        if ( objCheckBox.checked )
        {
            for( var i=0; i<objSelect.options.length; i++ )
            {
                objSelect.options[i].selected = true;
            }
        } else {
            for( var i=0; i<objSelect.options.length; i++ )
            {
                objSelect.options[i].selected = false;
            }
        }
    }
    
	/**
	*	TO DO 	: 멀티셀렉트박스에서의 전체 선택/해제 {토글}
	*	Param	: strObjName
	*	Param	: nBoolean
	*
	*	사용예제
	*	<input type="button" value="전체선택"	onClick="setSelectBox_AllSelected( form.Category, nBoolean)">
	**/
	function setSelectBox_AllSelected( strObjName, nBoolean )
	{
		var bSelected = (nBoolean == 0) ? false : true;
		for( var i=0; i<strObjName.options.length; i++ )
		{
			strObjName.options[i].selected = bSelected;
		}
	}



	/**
	*	TO DO 	: 나모 엑티브 스퀘어6 입력내용 체크
	*	Param	: objForm				// 폼 객체
	*	Param	: strEditorId			// 에디터의 id 값
	*
	*	사용예제
	*	if ( IsBlank_NamoEditor(form, "wec") ) alert("입력값 없음");
	**/
	function IsBlank_NamoEditor( objForm, strEditorId )
	{
		if ( strEditorId == null || getTrim(strEditorId,"A") == "" )
		{
			strEditorId = "wec";			// 기본적으로 사용하는 id
		}
		
		var form 			= objForm;
		var objEditor		= eval('form.' + strEditorId);
		var bodyValue	= objEditor.BodyValue;													// 에디터내 <body>에 있는 내용만을 가져옴
		var textValue		= objEditor.TextValue;													// 에디터내 사용자가 작성한 텍스트만을 가져옴
		var bImage	= ( bodyValue.indexOf('<img') == -1 )	? true	: false;			// <body>의 내용중 사용자 삽입 이미지가 있는지를 판별 (TextValue로 체크시 이미지는 체크되지 않음)
		var bText 		= ( getTrim(textValue, "A") == "" ) 		? true	: false;			// 전체공백을 제거하여 값을 입력했는지를 판별 (에디터 자체에 기본으로 하나의 공백이 들어가기때문)
		var bReturn	= (bText && bImage) ? true : false;
	
		return bReturn;
	}	


	
	/**
	*	TO DO 	: 파일 다운로드
	*	Param	: filepath
	*	Param	: fileOrgname
	* Param	: fileSavename
	*
	**/
	function fnFileDownLoad(path, org, save)
	{
		var oDiv = document.createElement("<div style='display: none;'></div>");
		
		var oForm = document.createElement("<form name='fileFomAction'></form>");
		oForm.method = "post";
		oForm.action = "/common/jsp/commonFileDown.jsp?";
		//oForm.action = "/common/jsp/commonFileDown.jsp?path="+path+"&org="+org+"&save="+save;
		
		var oInputHidden = document.createElement("<input text='hidden' name='path'>");
		oInputHidden.value = path;
		oForm.appendChild(oInputHidden);
		
		var oInputHidden = document.createElement("<input text='hidden' name='org'>");
		oInputHidden.value = org;
		oForm.appendChild(oInputHidden);
		
		var oInputHidden = document.createElement("<input text='hidden' name='save'>");
		oInputHidden.value = save;
		oForm.appendChild(oInputHidden);
		
		oDiv.appendChild(oForm);
		document.body.appendChild(oDiv);
		
		oForm.submit();
	}
	
	/**
	*	TO DO 	: 파일 삭제
	*	Param	: cTableName 	- 삭제 테이블명
	*	Param	: cSeqName		- 삭제 시퀀스명
	*  Param	: cSeq				- 삭제 시퀀스
	*  Param	: cPath				- 삭제 경로
	*  Param	: cSave				- 삭제 저장명
	*  Param	: cOriginal			- 삭제 원본명
	*  Param	: cDelId				- 화면상에 지워질 파일명 id
	*
	**/
	function goFileDelete( cTableName, cSeqName, cSeq, cPath, cSave, cOriginal, cDelId )
	{
		if ( !confirm('Do you really want to delete?') )	return;
		var actionMethod	= "post";
		var actionURL 		= "/common/jsp/commonFileDelete.jsp";
		var actionParams	= "tablename="+cTableName+"&seqname="+cSeqName+"&seq="+cSeq+"&path="+cPath+"&save="+cSave+"&original="+cOriginal;
		
		var ajax = new Ajax.Request(
			actionURL, 
			{
				method: actionMethod, 
				parameters: actionParams, 
				onComplete: goFileNameDelete(cDelId),
				onFailure: goFileDeleteErr
			});
	}
	
	// 화면상에서의 첨부파일 삭제
	function goFileNameDelete(cDelId)
	{
		//var cDelIdObj = $(cDelId);
		var cDelIdObj = document.getElementById(cDelId);
		cDelIdObj.innerText = "";
	}
	
	// 첨부파일 삭제 에러시
	function goFileDeleteErr()
	{
		alert("We failed to delete the file.");
	}
	
	
	/**
	*	TO DO 	: 화면 이동
	*	Param	: cUrl
	*
	*	사용예제
	*	<input type="button" value="이동"	onClick="goPageMoveUrl('/')">
	**/
	function goPageMoveUrl( cUrl )
	{
		window.location.href = cUrl;
	}

	/**
	*	TO DO 	: 화면 이동(새창)
	*	Param	: cUrl
	*
	*	사용예제
	*	<input type="button" value="이동"	onClick="goPageOpenUrl('/')">
	**/
	function goPageOpenUrl( cUrl )
	{
		window.open(cUrl, "_blank")
	}


	/**
	*	TO DO 	: 이미지 파일 체크
	*	Param	: value
	*
	*	사용예제
	*	if ( !uploadImg_Check(form.attachfile.value) ) 	return;
	**/
	function uploadImg_Check( value )
	{
	    var src = getFileExtension(value);
	    if (src == "")
		{
	        alert('Input the valid file.');
		    return false;
	    }
	    else if ( !((src.toLowerCase() == "png") || (src.toLowerCase() == "gif") 
	    			|| (src.toLowerCase() == "jpg") || (src.toLowerCase() == "jpeg") || (src.toLowerCase() == "bmp") ) )
	    {
	        alert('We only support png, gif, jpg, bmp files.');
		    return false;
	    }
	    return true;
	}
	

	/**
	*	TO DO 	: 파일 확장자 알아내기
	*	Param	: filePath
	*
	*	사용예제
	*	alert( getFileExtension(form.attachfile.value) );
	**/
	function getFileExtension( filePath )
	{
	    var lastIndex = -1;
	    lastIndex = filePath.lastIndexOf('.');
	    var extension = "";
	
		if ( lastIndex != -1 )
		{
		    extension = filePath.substring( lastIndex+1, filePath.len );
		} else {
		    extension = "";
		}
		
	    return extension;
	}
	
	/**
	*	TO DO 	: 사진 보기
	*	Param	: filePath
	*
	*	사용예제
	*	showImg(img);
	**/
	function showImg(sURL) {
	    var sURL = "/common/jsp/commonImgViewer.jsp?img=" + sURL;
		setOpenPopup( sURL, 'imgView', 0, 0 );
	}
	
	/**
	 *	3자리수마다 ,를 찍어주는 함수
	 *	Param	: 숫자값
	 *
	 *	사용예제
	 *	getDecimalFormat(숫자값);
	 */
	function getDecimalFormat(mValue)
	{
		var temp_str = String(mValue);
		for(var i = 0 , retValue = String() , stop = temp_str.length; i < stop ; i++)
		{
			retValue = ((i%3) == 0) && i != 0 ? temp_str.charAt((stop - i) -1) + "," + retValue : temp_str.charAt((stop - i) -1) + retValue;
		}
		return retValue;
	}
	
	/**
	 *	폼의 요소를 없애주는 함수
	 *	Param	: 폼
	 *
	 *	사용예제
	 *	getRemoveFormElement(폼);
	 */
	function getRemoveFormElement(targetForm)
	{
		var targetElements = targetForm.elements;
		var tagetElementsCount = targetElements.length;
		for( var i = 0; i < tagetElementsCount; i++ )
		{
			targetForm.removeChild(targetElements[0]);
		}
	}
//-->