// Result OK
var RECEIVE_DATA_OK = "S_OK";

// 에러메세지
var ERR_MSG = "";

// Commit 여부
var isWork = false;

// Title 필드 bgcolor
var TITLE_BGCOLOR = "#E8F2FD";

// Wait 프레임 객체
var frmWait = null;
// 2009-05-22 강덕율 수정
//var WAIT_PAGE = "../../common/Wait.html";
var WAIT_PAGE = "../common/Wait.html";

// 이벤트 발생 객체
var C_EventObject = null;

// 프로그램 권한(R:읽기, I:입력가능, P:보고서, E:엑셀)
var C_ProgAuthority   = "";
var C_ProgAuthority_R = "";
var C_ProgAuthority_A = "";
var C_ProgAuthority_I = "";
var C_ProgAuthority_D = "";
var C_ProgAuthority_S = "";
var C_ProgAuthority_C = "";
var C_ProgAuthority_P = "";
var C_ProgAuthority_E = "";

// keyCode 값
var C_keyCode = "";

// 표준버트 color
var MOUSE_OVER="#FF0000";
var MOUSE_OUT="#000000";

var S_MOUSE_OVER="#FFFFFF";
var S_MOUSE_OUT="#333333";

var DEFAULT_ROW_BGCOLOR = "#FFFFFF";
var ROW_SELECT_BGCOLOR = "#D5D5D5";
var ROW_MOUSEOVER_BGCOLOR = "#E5E5E5";
var ROW_MOUSEOUT_BGCOLOR = "#D5D5D5";
var POPUP_ROW_SELECT_BGCOLOR = "#D5D5D5";
var POPUP_ROW_MOUSEOVER_BGCOLOR = "#E5E5E5";
var POPUP_ROW_MOUSEOUT_BGCOLOR = "#D5D5D5";

var MSG_NO_DATA = "자료가 없습니다";
var MSG_SAVE_OK = "저장완료";
var MSG_DELETE_OK = "삭제완료";

var HOME_URL = "http://localhost/DBHM/";
var CONTENT_URL = "../commons/images/main.jpg";
var LOGO_IMG_URL = "../commons/images/logo.png";

// 공통 페이지 경로
var COMM_PATH = "/common/";

// 전자결재 URL
//var APPROVAL_PATH = "http://192.168.8.212:8090/custom/GianMain.jsp";
//var APPROVAL_VIEW = "http://192.168.8.212:8090/custom/ApprView.jsp";

//서버용
var APPROVAL_PATH = "http://portal.dcco.kr:8090/custom/GianMain.jsp";
var APPROVAL_VIEW = "http://portal.dcco.kr:8090/custom/ApprView.jsp";

var	C_arrDateInfos = new Array();
var	C_arrAutoChangeLovs = new Array();

//헌장계약관리 계약서 팝업창 오토로드
var C_CONT_PU_DE = "T";

var isVista = false;


//사업관리 MIS결제용 KEYVALUE(배용근)
var CONSBM_KEY_NAME1 = "";
var CONSBM_KEY_VALUE1 = "";
var CONSBM_KEY_NAME2 = "";
var CONSBM_KEY_VALUE2 = "";
var CONSBM_KEY_NAME3 = "";
var CONSBM_KEY_VALUE3 = "";
var CONSBM_KEY_NAME4 = "";
var CONSBM_KEY_VALUE4 = "";
var CONSBM_KEY_NAME5 = "";
var CONSBM_KEY_VALUE5 = "";
var CONSBM_TABLE_NAME = "";
var COMSBM_SELECTPAGE = "./CCONSBMApprovalKeyValue_S.jsp";


/*-------------------- 기본 자료형 --------------------*/
//다른 클래스 상속 받기
function        inheritFrom(aObject,aSuperClass)
{
    for(var i in aSuperClass)
    {
        if(! aObject[i])
            aObject[i] = aSuperClass[i];
    }
}
//객체 배열
function		ObjectCollection()
{
	this.innerList_ = new Array();
	this.innerIterator_ = 0;
	this.direction_ = true;
}
ObjectCollection.prototype.add = function(aObject)
{
	this.innerList_[this.innerList_.length] = aObject;
	return this.innerList_.length - 1;
}
ObjectCollection.prototype.insert = function(aIndex,aObject)
{
	this.innerList_.splice(aIndex,0,aObject);
	return aIndex;
}
ObjectCollection.prototype.removeAt = function(aIndex)
{
	var		o = this.innerList_[aIndex];
	this.innerList_[aIndex] = null;
	this.innerList_.splice(aIndex,1);
	return o;
}
ObjectCollection.prototype.getAt = function(aIndex)
{
	return  this.innerList_[aIndex];
}
ObjectCollection.prototype.removeCurrent = function()
{
	return this.removeAt(this.innerIterator_);
}
ObjectCollection.prototype.indexOfValue = function(aObject)
{
	for(var i = 0 ; i < this.innerList_.length ; i ++)
	{
		if(this.innerList_[i] == aObject) return i;
	}
	return -1;
}
ObjectCollection.prototype.remove = function(aObject)
{
	var		findIndex = this.indexOfValue(aObject);
	if(findIndex < 0) return null;
	return this.removeAt(findIndex);
}
ObjectCollection.prototype.count = function()
{
	return this.innerList_.length;
}
ObjectCollection.prototype.first = function()
{
	this.innerIterator_ = 0;
	this.direction_ = true;
}
ObjectCollection.prototype.last = function()
{
	this.innerIterator_ = this.innerList_.length - 1;
	this.direction_ = false;
}
ObjectCollection.prototype.next = function()
{
	this.innerIterator_ ++;
}
ObjectCollection.prototype.previous = function()
{
	this.innerIterator_ --;
}
ObjectCollection.prototype.currentValue = function()
{
	return this.innerList_[this.innerIterator_];
}
ObjectCollection.prototype.isDone = function()
{
	if(this.direction_)
		return this.innerIterator_ >= this.innerList_.length;
	else
		return this.innerIterator_ < 0;
}
ObjectCollection.prototype.currentIterator = function()
{
	return this.innerIterator_;
}
function	PublicCommand(aObject,aFunction)
{
	this.object_ = aObject;
	this.function_ = aFunction;
	this.run = function(aParameters)
	{
		this.function_.apply(this.object_,aParameters);
	}
}
function	addEventListener(aObject,aEventName,aFunction,aFlag)
{
    if(aObject.addEventListener)
    {
        aObject.addEventListener(aEventName,aFunction,aFlag);
    }
    else if(aObject.attachEvent)
    {
        aObject.attachEvent("on"+aEventName,aFunction);
    }
    else
    {
    	try {
        	eval("aObject.on"+aEventName+"="+aFunction);
        }
        catch (e)
		{
		}
    }
}
function	removeEventListener(aObject,aEventName,aFunction,aFlag)
{
    if(aObject.removeEventListener)
    {
        aObject.removeEventListener(aEventName,aFunction,aFlag);
    }
    else if(aObject.detachEvent)
    {
        aObject.detachEvent("on"+aEventName,aFunction);
    }
    else
    {
    	try{
        	eval("aObject.on"+aEventName+"=null");
        }
        catch(e){
        }
    }
}

/*-------------------- 날짜팝업을 위한 정보 --------------------*/
function	C_DatePopInfo(arTextControl,arButtonControl,arDateTag)
{
	try
	{
		this.TextControl = arTextControl;
		this.ButtonControl = arButtonControl;
		if(C_isNull(arDateTag)) arDateTag = "D"; 
		this.DateTag = arDateTag;
		this.CalendarID = arTextControl.id;
		arButtonControl.attachEvent ("onclick", new Function("C_popDatePopup(" + arTextControl.id +",'"+arDateTag+ "' );"));
	}
	catch (e)
	{
		C_msgOk("C_DatePopInfo 에러 : " + e.message, "에러");
	}
}
function	C_addDateCol(arTextControl,arButtonControl,arDateTag)
{
	try
	{
		var objDateInfo = new C_DatePopInfo(arTextControl,arButtonControl,arDateTag);
		
		if (C_arrDateInfos == null) C_arrDateInfos = new Array();
		
		C_arrDateInfos.push(objDateInfo);
	}
	catch (e)
	{
		C_msgOk("날짜 컬럼 등록 에러 : " + e.message, "에러");
		return false;
	}
}
function	C_popDatePopup(arTextControl,arDateTag)
{
	C_Calendar(arTextControl.id, arDateTag, arTextControl.value);
}
function	C_CalendarResult(asCalendarID, asDate, asYear, asMonth, asDay)
{
	if (C_arrDateInfos == null) C_arrDateInfos = new Array();
	for(var i = 0 ; i < C_arrDateInfos.length ; i ++)
	{
		if(C_arrDateInfos[i].CalendarID == asCalendarID)
		{
		    var l_OldDateValue = C_arrDateInfos[i].TextControl.value;
		    
			C_arrDateInfos[i].TextControl.value = asDate;
			// 2009-03-16 강덕율 추가
			// TextControl의 onChange 이벤트 실행
			if (l_OldDateValue != asDate)
			{
			    C_arrDateInfos[i].TextControl.fireEvent("onchange");
			}
		}
	}
}

/*-------------------- 웹페이지 초기화 --------------------*/
function C_Initialize()
{
	try
	{
		
		if(top.reportEndOnLoad)
		{
			top.reportEndOnLoad();
		}
	}
	catch(E)
	{
	}
	try
	{	
		var lsString = "" + document.location.href;
		
	
		//프로그램 버튼 조정
		var lsPage_R = "&R=";
		var lsPage_A = "&A=";
		var lsPage_I = "&I=";
		var lsPage_D = "&D=";
		var lsPage_S = "&S=";
		var lsPage_C = "&C=";
		var lsPage_P = "&P=";
		var lsPage_E = "&E=";		
		var	liPagePos_R = lsString.indexOf(lsPage_R) + lsPage_R.length;
		var	liPagePos_A = lsString.indexOf(lsPage_A) + lsPage_A.length;
		var	liPagePos_I = lsString.indexOf(lsPage_I) + lsPage_I.length;
		var	liPagePos_D = lsString.indexOf(lsPage_D) + lsPage_D.length;
		var	liPagePos_S = lsString.indexOf(lsPage_S) + lsPage_S.length;
		var	liPagePos_C = lsString.indexOf(lsPage_C) + lsPage_C.length;
		var	liPagePos_P = lsString.indexOf(lsPage_P) + lsPage_P.length;
		var	liPagePos_E = lsString.indexOf(lsPage_E) + lsPage_E.length;
				
		C_ProgAuthority_R = lsString.substring(liPagePos_R,liPagePos_A-lsPage_A.length).toUpperCase();
		C_ProgAuthority_A = lsString.substring(liPagePos_A,liPagePos_I-lsPage_I.length).toUpperCase();
		C_ProgAuthority_I = lsString.substring(liPagePos_I,liPagePos_D-lsPage_D.length).toUpperCase();
		C_ProgAuthority_D = lsString.substring(liPagePos_D,liPagePos_S-lsPage_S.length).toUpperCase();
		C_ProgAuthority_S = lsString.substring(liPagePos_S,liPagePos_C-lsPage_C.length).toUpperCase();
		C_ProgAuthority_C = lsString.substring(liPagePos_C,liPagePos_P-lsPage_P.length).toUpperCase();
		C_ProgAuthority_P = lsString.substring(liPagePos_P,liPagePos_E-lsPage_E.length).toUpperCase();
		C_ProgAuthority_E = lsString.substring(liPagePos_E,lsString.length).toUpperCase();
				
		//사용자별 프로그램 권한
		var lsMove_Level = "&ML=";
		var	liMove_LevelPos = lsString.indexOf(lsMove_Level) + lsMove_Level.length;
		
		C_ProgAuthority = lsString.substring(liMove_LevelPos,liPagePos_R-lsPage_R.length).toUpperCase();
		if(top.getExecParameter)
		{
		
			var		runParam = top.getExecParameter();
			if(runParam)
			{
				C_ProgAuthority_R = runParam.getRead();
				C_ProgAuthority_A = runParam.getAdd();
				C_ProgAuthority_I = runParam.getInsert();
				C_ProgAuthority_D = runParam.getDelete();
				C_ProgAuthority_S = runParam.getSave();
				C_ProgAuthority_C = runParam.getCancel();
				C_ProgAuthority_P = runParam.getPrint();
				C_ProgAuthority_E = runParam.getExcel();				
				C_ProgAuthority = runParam.getUserLevel();
			}
		}
		
		document.body.onselectstart = C_processMouse;
		document.body.oncontextmenu = C_processMouse;
		document.body.ondragstart = C_processMouse;
		
		addEventListener(document.body,"keydown",C_processKey);
		addEventListener(document.body,"keydown",C_processKeyUp);
		//document.body.onkeydown = C_processKey;
		
		if ( window.navigator.userAgent.indexOf( "MSIE 7.0" ) != -1 )
		{
			isVista = true;
		}
		
		// Windows 비스타 관련
		if (window.dialogTop != null)
		{
//			if (isVista)
//			{
//				var intDalHeight = window.dialogHeight.substring(0, window.dialogHeight.indexOf("px"));
//				var intDalWidth = window.dialogWidth.substring(0, window.dialogWidth.indexOf("px"));
//
//				intDalHeight = intDalHeight - 45;
//				intDalWidth = intDalWidth - 5;
//				
//				window.dialogHeight = (parseInt(intDalHeight) + 20).toString() + "px";
//				window.dialogWidth = (parseInt(intDalWidth)).toString() + "px";
//			}
			
//			var isXpSP2 = false;
//			
//			if (window.navigator.userAgent.indexOf("Windows NT 5.1") > -1)
//			{
//				if (window.navigator.userAgent.indexOf("SV1") > -1)
//				{
//					isXpSP2 = true;
//				}
//			}
//			
//			// 서비스팩 패치후 사용 안함
//			if (isXpSP2)
//			{
//				//alert("당신에 운영체제는 Windows XP SP2 입니다.");
//				//var intDalHeight = window.dialogHeight.substring(0, window.dialogHeight.indexOf("px"));
//				//window.dialogHeight = (parseInt(intDalHeight) + 20).toString() + "px";
//			}
		}
	}
	catch (E)
	{
		alert("C_Initialize() 초기화 오류 : " + E.message, "에러");
	}
	
	try
	{
		S_Initialize();
	}
	catch (E)
	{
		//C_msgOk("S_Initialize() 함수가 존재하지 않습니다.", "에러");
		//C_msgOk("S_Initialize() : " + E.message, "에러");
	}
	
	try
	{
		G_Initialize();
	}
	catch (E)
	{
		//C_msgOk("G_Initialize() 함수가 존재하지 않습니다.", "에러");
		//C_msgOk("G_Initialize() : " + E.message, "에러");
	}
	
	try
	{
		// 공통버튼 보이기
		top.frames['main_title'].mouse_over();
	}
	catch (E)
	{
		//C_msgOk("공통버튼 : " + E.message, "에러");
	}
	
	try
	{
		Initialize();
	}
	catch (E)
	{
		//C_msgOk("Initialize() 함수가 존재하지 않습니다.", "에러");
		C_msgOk("Initialize() : " + E.message, "에러");
	}
}

function C_processMouse()
{
	return true;
} 				
function C_processKeyUp()
{
	if(top.processKeyUp)
	{
		if( top.processKeyUp(event) ) return ;
	}
}
function C_processKey()
{
	if(top.processKeyDown)
	{
		if( top.processKeyDown(event) ) return ;
	}
	if (event.keyCode == 8)
	{
		if (event.srcElement.type == "text" || event.srcElement.type == "textarea" || event.srcElement.type == "password")
		{
			if (event.srcElement.readOnly) event.returnValue = false;
		}
		else
		{
			event.returnValue = false;
		}
	}
	else if (event.ctrlLeft == true && event.shiftLeft == true)
	{
		if(event.keyCode==68) {
			C_msgError(G_FocusDataset.ExportData(1, G_FocusDataset.CountRow, true),"확인")
		} else if(event.keyCode==72) {
			C_msgError(document.getElementsByTagName("html")[0].outerHTML, "Page HTML 소스 정보");
		} else if(event.keyCode==80) {
			C_msgError(document.location.href, "Page 정보");
		}
	}
	else if (event.altLeft == true)
	{
		if (C_EventObject != null || C_EventObject != "undefined")
		{
			if ((event.keyCode == 82) && (C_ProgAuthority_R == "T")) // 조회(ALT+R)
			{
				try
				{
					C_keyCode = event.keyCode;
					btnretrieve_onclick();
				}
				catch (e)
				{
					if (typeof(btnretrieve_onclick) == "function")
					{
						C_msgOk("공통버튼(조회) 개발자 정의 함수 Call 에러 : " + e.message, "에러");
					}
					else
					{
						C_msgOk("공통버튼(조회) 개발자 정의 함수가 존재하지 않습니다.", "에러");
					}
				}
			}
			else if ((event.keyCode == 65) && (C_ProgAuthority == "I") && (C_ProgAuthority_A == "T")) // 추가(ALT+A)
			{
				try
				{
					C_keyCode = event.keyCode;
					btnadd_onclick();
				}
				catch (e)
				{
					if (typeof(btnadd_onclick) == "function")
					{
						C_msgOk("공통버튼(추가) 개발자 정의 함수 Call 에러 : " + e.message, "에러");
					}
					else
					{
						C_msgOk("공통버튼(추가) 개발자 정의 함수가 존재하지 않습니다.", "에러");
					}
				}
			}
			else if ((event.keyCode == 73) && (C_ProgAuthority == "I") && (C_ProgAuthority_I == "T")) // 삽입(ALT+I)
			{
				try
				{
					C_keyCode = event.keyCode;
					btninsert_onclick();
				}
				catch (e)
				{
					if (typeof(btninsert_onclick) == "function")
					{
						C_msgOk("공통버튼(삽입) 개발자 정의 함수 Call 에러 : " + e.message, "에러");
					}
					else
					{
						C_msgOk("공통버튼(삽입) 개발자 정의 함수가 존재하지 않습니다.", "에러");
					}
				}
			}
			else if ((event.keyCode == 88) && (C_ProgAuthority == "I") && (C_ProgAuthority_D == "T")) // 삭제(ALT+X)
			{
				try
				{
					C_keyCode = event.keyCode;
					btndelete_onclick();
				}
				catch (e)
				{
					if (typeof(btndelete_onclick) == "function")
					{
						C_msgOk("공통버튼(삭제) 개발자 정의 함수 Call 에러 : " + e.message, "에러");
					}
					else
					{
						C_msgOk("공통버튼(삭제) 개발자 정의 함수가 존재하지 않습니다.", "에러");
					}
				}
			}
			else if ((event.keyCode == 83) && (C_ProgAuthority == "I") && (C_ProgAuthority_S == "T")) // 저장(ALT+S)
			{
				try
				{
					C_keyCode = event.keyCode;
					btnsave_onclick();
				}
				catch (e)
				{
					if (typeof(btnsave_onclick) == "function")
					{
						C_msgOk("공통버튼(저장) 개발자 정의 함수 Call 에러 : " + e.message, "에러");
					}
					else
					{
						C_msgOk("공통버튼(저장) 개발자 정의 함수가 존재하지 않습니다.", "에러");
					}
				}
			}
			else if (event.keyCode == 70 ) // 찾기(ALT+F)
			{
				try
				{
					C_keyCode = event.keyCode;
					btnfind_onclick();
				}
				catch (e)
				{
					if (typeof(btnsave_onclick) == "function")
					{
						C_msgOk("공통버튼(저장) 개발자 정의 함수 Call 에러 : " + e.message, "에러");
					}
					else
					{
						C_msgOk("공통버튼(저장) 개발자 정의 함수가 존재하지 않습니다.", "에러");
					}
				}
			}
			else if (event.keyCode == 67 && (C_ProgAuthority == "I") && ((C_ProgAuthority_A == "T") || (C_ProgAuthority_I == "T") || (C_ProgAuthority_S == "T"))) // 복제(ALT+C)
			{
				try
				{
					C_keyCode = event.keyCode;
					btndup_onclick();
				}
				catch (e)
				{
					if (typeof(btnsave_onclick) == "function")
					{
						C_msgOk("공통버튼(저장) 개발자 정의 함수 Call 에러 : " + e.message, "에러");
					}
					else
					{
						C_msgOk("공통버튼(저장) 개발자 정의 함수가 존재하지 않습니다.", "에러");
					}
				}
			}
			else if (event.keyCode == 80 && ((C_ProgAuthority == "I") || (C_ProgAuthority == "P")) && (C_ProgAuthority_P == "T")) // 출력(ALT+P)
			{
				try
				{
					C_keyCode = event.keyCode;
					btnprint_onclick();
				}
				catch (e)
				{
					if (typeof(btnsave_onclick) == "function")
					{
						C_msgOk("공통버튼(출력) 개발자 정의 함수 Call 에러 : " + e.message, "에러");
					}
					else
					{
						C_msgOk("공통버튼(출력) 개발자 정의 함수가 존재하지 않습니다.", "에러");
					}
				}
			}
			else if (event.keyCode == 69 && ((C_ProgAuthority == "I") || (C_ProgAuthority == "P")) && (C_ProgAuthority_E == "T")) // 엑셀(ALT+E)
			{
				try
				{
					C_keyCode = event.keyCode;
					btnexcel_onclick();
				}
				catch (e)
				{
					if (typeof(btnexcel_onclick) == "function")
					{
						C_msgOk("공통버튼(엑셀) 개발자 정의 함수 Call 에러 : " + e.message, "에러");
					}
					else
					{
						C_msgOk("공통버튼(엑셀) 개발자 정의 함수가 존재하지 않습니다.", "에러");
					}
				}
			}			
			else if (event.keyCode == 90 && (C_ProgAuthority_C == "T")) // 취소(ALT+Z)
			{
				try
				{
					C_keyCode = event.keyCode;
					btncancel_onclick();
				}
				catch (e)
				{
					if (typeof(btnsave_onclick) == "function")
					{
						C_msgOk("공통버튼(취소) 개발자 정의 함수 Call 에러 : " + e.message, "에러");
					}
					else
					{
						C_msgOk("공통버튼(취소) 개발자 정의 함수가 존재하지 않습니다.", "에러");
					}
				}
			}
		}
	}
	
	try
	{
		// 개발자 재정의 함수
		document_onKeyDown();
	}
	catch (e)
	{
	}
} 				

function C_Submit(readForm, sendForm)
{
	try
	{
		sendForm.action = readForm.action;
		sendForm.target = readForm.target;
		sendForm.method = readForm.method;
		
		//암호화 적용
		//if (EncForm2(readForm, sendForm)) sendForm.submit();
		
		//암호화 미적용
		readForm.submit();
	}
	catch (E)
	{
		C_msgOk("C_Submit Error : " + E.message, "에러");
	}
}

/*-------------------- 윈도우 관련 함수 --------------------*/
// 새창 여는 함수(Window)
function C_openWindow(asURL, asName, aiSizeW, aiSizeH)
{
	var intLeft  = screen.width / 2 - aiSizeW / 2;
	var intTop  = screen.height / 2 - aiSizeH / 2;

	opt = ",toolbar=no,menubar=no,location=no,scrollbars=no,status=yes";
	window.open(asURL, asName, "left=" + intLeft + ",top=" +  intTop + ",width=" + aiSizeW + ",height=" + aiSizeH  + opt);
}

// 확인 메세지 창
// 영문자 'O'를 리턴
function C_msgOk(asMessage, asTitle)
{
	var arrRtn = null;
	var arrArg = new Array(asMessage, asTitle);
	
	arrArg[0] = asMessage;
	arrArg[1] = C_isNull(asTitle) ? "확인" : asTitle;
	
	var intDalHeight = 222;
	var intDalWidth = 378;

	if ( window.navigator.userAgent.indexOf( "MSIE 7.0" ) != -1 )
	{
		isVista = true;
	}
	
	if(isVista)
	{
		intDalHeight = intDalHeight - 45;
		intDalWidth = intDalWidth - 5;
	}
	
	arrRtn = window.showModalDialog(COMM_PATH + "alertOk.jsp", arrArg, "center:yes; dialogWidth:"+intDalWidth+"px; dialogHeight:"+intDalHeight+"px; status:yes; help:no; scroll:no");
	return arrRtn == null ? "O" : arrRtn;
}


// 확인/취소 메세지 창
// 영문자 'O','C'를 리턴
function C_msgOkCancel(asMessage, asTitle)
{
	var arrRtn = null;
	var arrArg = new Array(asMessage, asTitle);
	
	arrArg[0] = asMessage;
	arrArg[1] = C_isNull(asTitle) ? "선택" : asTitle;
	
	var intDalHeight = 222;
	var intDalWidth = 378;

	if ( window.navigator.userAgent.indexOf( "MSIE 7.0" ) != -1 )
	{
		isVista = true;
	}
	
	if(isVista)
	{
		intDalHeight = intDalHeight - 45;
		intDalWidth = intDalWidth - 5;
	}
	
	arrRtn = window.showModalDialog(COMM_PATH + "alertOkCancel.jsp", arrArg, "center:yes; dialogWidth:"+intDalWidth+"px; dialogHeight:"+intDalHeight+"px; status:yes; help:no; scroll:no");
	return arrRtn == null ? "C" : arrRtn;
}

// 예/아니오 메세지 창
// 영문자 'Y','N'을 리턴
function C_msgYesNo(asMessage, asTitle)
{
	var arrRtn = null;
	var arrArg = new Array(asMessage, asTitle);
	
	arrArg[0] = asMessage;
	arrArg[1] = C_isNull(asTitle) ? "선택" : asTitle;
	
	var intDalHeight = 222;
	var intDalWidth = 378;

	if ( window.navigator.userAgent.indexOf( "MSIE 7.0" ) != -1 )
	{
		isVista = true;
	}
	
	if(isVista)
	{
		intDalHeight = intDalHeight - 45;
		intDalWidth = intDalWidth - 5;
	}
	
	arrRtn = window.showModalDialog(COMM_PATH + "alertYesNo.jsp", arrArg, "center:yes; dialogWidth:"+intDalWidth+"px; dialogHeight:"+intDalHeight+"px; status:yes; help:no; scroll:no");
	return arrRtn == null ? "N" : arrRtn;
}

// 예/아니오/취소 메세지 창
// 영문자 'Y','N','C'를 리턴
function C_msgYesNoCancel(asMessage, asTitle)
{
	var arrRtn = null;
	var arrArg = new Array(asMessage, asTitle);
	
	arrArg[0] = asMessage;
	arrArg[1] = C_isNull(asTitle) ? "선택" : asTitle;
	
	var intDalHeight = 222;
	var intDalWidth = 378;

	if ( window.navigator.userAgent.indexOf( "MSIE 7.0" ) != -1 )
	{
		isVista = true;
	}
	
	if(isVista)
	{
		intDalHeight = intDalHeight - 45;
		intDalWidth = intDalWidth - 5;
	}
	
	arrRtn = window.showModalDialog(COMM_PATH + "alertYesNoCancel.jsp", arrArg, "center:yes; dialogWidth:"+intDalWidth+"px; dialogHeight:"+intDalHeight+"px; status:yes; help:no; scroll:no");
	return arrRtn == null ? "C" : arrRtn;
}

// 에러 메세지 창
// 영문자 'O'를 리턴
function C_msgError(asMessage, asTitle)
{
	var arrRtn = null;
	var arrArg = new Array(asMessage, asTitle);
	
	arrArg[0] = asMessage;
	arrArg[1] = C_isNull(asTitle) ? "에러" : asTitle;
	
	var intDalHeight = 222;
	var intDalWidth = 378;

	if ( window.navigator.userAgent.indexOf( "MSIE 7.0" ) != -1 )
	{
		isVista = true;
	}
	
	if(isVista)
	{
		intDalHeight = intDalHeight - 45;
		intDalWidth = intDalWidth - 5;
	}
	
	arrRtn = window.showModalDialog(COMM_PATH + "alertError.jsp", arrArg, "center:yes; dialogWidth:"+intDalWidth+"px; dialogHeight:"+intDalHeight+"px; status:yes; help:no; scroll:no");
	return arrRtn == null ? "O" : arrRtn;
}

// 달력 창(asCalendarID:달력ID, asType:달력타입[D,M], asDate:초기설정 날자, aiTopPos: 표시위치_Y, aiLeftPos: 표시위치_X)
function C_Calendar(asCalendarID, asType, asDate, aiTopPos, aiLeftPos)
{
	var frmCalender = document.getElementById("C_frmCalender");
	var lsType = "D";
	var liTop = aiTopPos;
	var liLeft = aiLeftPos;
	var liWidth = 0;
	var liHeight = 0;
	var liX = 0;
	var liY = 0;
	
	if (event != null)
	{
		// 이벤트 발생 객체
		C_EventObject = event.srcElement;
		liX = event.clientX - event.offsetX;
		liY = event.clientY - event.offsetY;
	}
	else // event 객체가 null인 경우(가우스 그리드)
	{
		try
		{
			if (C_EventObject != null && C_EventObject != "undefined")
			{
				var datasetinfo = G_searchDataSetInfo(C_EventObject.DataID);
				
				liX = datasetinfo.grid_x + datasetinfo.grid_event_x;
				liY = datasetinfo.grid_y + datasetinfo.grid_event_y;
			}
		}
		catch (e)
		{
			C_EventObject = null;
			liX = document.body.clientWidth / 2 + 73;
			liY = document.body.clientHeight / 2 + 105;
		}
	}
	
	if (frmCalender == null)
	{
		frmCalender = document.createElement("<iframe id='C_frmCalender' width='206' height='190' onBlur='C_CalendarHide(-1)' style='position:absolute;' frameborder='1' scrolling='no'></iframe>");
		document.body.insertBefore(frmCalender);
	}
	
	if (asType != null && !C_isNull(asType)) lsType = asType;
	
	if (lsType == "M")
	{
		liWidth = 206;
		liHeight = 104;
	}
	else
	{
		liWidth = 206;
		liHeight = 190;
	}
	
	if (aiTopPos == null)
	{
		liTop = document.body.clientHeight - liY > 210 ? liY + 20 : liY - 192;
	}
	
	if (aiLeftPos == null)
	{
		liLeft = liX > 186 ? liX - 186 : liX;
	}
	
	frmCalender.width = liWidth;
	frmCalender.height = liHeight;
	frmCalender.style.top = liTop;
	frmCalender.style.left = liLeft;
	frmCalender.src = COMM_PATH + "Calendar.jsp?CID=" + asCalendarID + "&TYPE=" + lsType + "&DATE=" + asDate;
}

// 이미 생성된 달력 창을 보이게 할때 사용
function C_CalendarShow()
{
	var frmCalender = document.getElementById("C_frmCalender");
	
	if (frmCalender != null)
	{
		frmCalender.style.visibility = "visible";
	}
}

// 달력 창이 닫힐때 호출되는 메소드(asCalendarID가 (-1)인 경우는 취소됨을 의미함)
function C_CalendarHide(asCalendarID, asDate)
{
	var frmCalender = document.getElementById("C_frmCalender");
	
	if (frmCalender != null)
	{
		frmCalender.style.visibility = "hidden";
	}
	
	// asCalendarID : -1 <-- 취소를 의미함
	// CalendarResult(asCalendarID, asDate, asYear, asMonth, asDay) <- 개발자 재정의 함수
	if (asCalendarID != -1)
	{
		
		try
		{
			C_CalendarResult(asCalendarID, asDate, asDate.substring(0, 4), asDate.substring(5, 7), asDate.substring(8));
		}
		catch (e)
		{
		}
		try
		{
			G_CalendarResult(asCalendarID, asDate, asDate.substring(0, 4), asDate.substring(5, 7), asDate.substring(8));
		}
		catch (e)
		{
		}
		try
		{
			CalendarResult(asCalendarID, asDate, asDate.substring(0, 4), asDate.substring(5, 7), asDate.substring(8));
		}
		catch (e)
		{
			if (typeof(CalendarResult) == "function")
			{
				C_msgOk("CalendarResult 개발자 정의 함수 Call 에러 : " + e.message, "에러");
			}
			else
			{
				C_msgOk("CalendarResult 개발자 정의 함수가 존재하지 않습니다.", "에러");
			}
		}
	}
	
	try
	{
		// 달력을 호출한 객체에게 포커스를 넘긴다.
		if (C_EventObject != null && C_EventObject != "undefined") C_EventObject.focus();
	}
	catch (e)
	{
	}
}

// LOV 호출
function C_LOV(asLovName, aArgs, aAutoLoad)
{
	return C_LOV_MULTI(asLovName, null, aArgs, aAutoLoad, 'F');
}

function C_LOV_MULTI(asLovName, asCtrl, aArgs, aAutoLoad, aMultiSelect)
{
	var lrArgsExt = new Array();
	

	var lrArgs = null;
	var lsAutoLoad = "F";

	try
	{	
		if (C_isNull(asLovName))
		{
			C_msgError("LOV의 이름이 널(Null)입니다.");
			return;
		}
		
		if(aArgs == null || aArgs == undefined)
		{
			lrArgs = new C_Dictionary();
		}
		else
		{
			lrArgs = aArgs;
		}
		
		lrArgsExt.opener = window;
		lrArgsExt.ctrl = asCtrl;
		lrArgsExt.lrArgs = lrArgs;
		
		if (aAutoLoad != null && !C_isNull(aAutoLoad)) lsAutoLoad = aAutoLoad;
		
		var intDalHeight = 222;
		var intDalWidth = 378;

		if ( window.navigator.userAgent.indexOf( "MSIE 7.0" ) != -1 )
		{
			isVista = true;
		}
		
		if(isVista)
		{
			intDalHeight = intDalHeight - 45;
			intDalWidth = intDalWidth - 5;
		}
		
		return window.showModalDialog(COMM_PATH + "Lov.jsp?LOV_NAME=" + asLovName + "&AUTO_LOAD=" + aAutoLoad + "&MULTI_SELECT=" + aMultiSelect + "&ML=R&R=T&A=F", lrArgsExt, "center:yes; dialogWidth:"+intDalWidth+"px; dialogHeight:"+intDalHeight+"px; status:yes; help:no; scroll:no; resizable:no");
	}
	catch (e)
	{
		C_msgOk("C_LOV 에러 : " + e.message, "에러");
		return null;
	}
}

function C_AutoLov(arDataset, asLovName, aArgs, aAutoLoad)
{
	var lrArgs = null;
	var lrReturn = null;
	
	try
	{
		if (C_isNull(asLovName))
		{
			C_msgError("LOV의 이름이 널(Null)입니다.");
			return null;
		}
		
		if(aArgs == null || aArgs == undefined)
		{
			lrArgs = new C_Dictionary();
		}
		else
		{
			lrArgs = aArgs;
		}

		var arrKeys = null;
		var arrItems = null;
		var	strArgs = "";
		
		if (lrArgs != null)
		{
			arrKeys = lrArgs.keys();
			arrItems = lrArgs.items();
		
			for (var i = 0; i < arrKeys.length; i++)
			{
				strArgs += arrKeys[i] + "=" + arrItems[i] + "&";
			}
		
			strArgs = strArgs.substr(0, strArgs.length - 1);
		}
		//SyncLoad 상태를 검증한다.
		if(! arDataset.SyncLoad) 
		{
			arDataset.SyncLoad = true;
		}

		G_Load(arDataset, COMM_PATH + "LovAuto_q.jsp?LOV_NAME=" + asLovName + "&" + strArgs);

		if(arDataset.CountRow == 1)
		{
			lrReturn = lrArgs;
			lrReturn.removeAll();
			
			for (var i = 1; i <= arDataset.CountColumn; i++)
			{
				lrReturn.set(arDataset.ColumnID(i), arDataset.ColumnString(1, i));
			}
			
			return lrReturn;
		}
		
		lrReturn = C_LOV(asLovName, lrArgs, aAutoLoad);
		return lrReturn;
	}
	catch (e)
	{
		C_msgOk("C_AutoLov 에러 : " + e.message, "에러");
		return null;
	}
}

/*-------------------- 데이터 관련 함수 --------------------*/
function C_ReceiveData(asURL)
{
	var arrRtn;
	//var intLeft  = screen.width / 2 - aiSizeW / 2;
	//var intTop  = screen.height / 2 - aiSizeH / 2;
	
	if (C_isNull(asURL)) return null;

	return window.showModalDialog(asURL, null, "dialogHide:yes; center:no; dialogTop:" + screen.height + "; dialogLeft:" + screen.width + "; dialogWidth:100; dialogHeight:100; status:yes; help:no; scroll:no");
}

/*-------------------- 유효성 관련 함수 --------------------*/
// 입력값이 NULL인지 체크
function C_isNull(asValue)
{
    if (asValue == null || asValue == undefined || asValue.toString().replace(/^\s+|\s+$/g,"") == "")
    {
        return true;
    }
    
    return false;
}

// 숫자검증
function C_isNum(asValue)
{
	if (C_isNull(asValue)) return false;
	
	for (var i = 0; i < asValue.length; i++)
	{
		if (asValue.charAt(i) < '0' || asValue.charAt(i) > '9')
		{
			return false;
		}
	}
	
	return true;
}

function C_isAlpha(asValue)
{
	if (C_isNull(asValue)) return false
	
	for (var i = 0; i < asValue.length; i++)
	{
		if (!((asValue.charAt(i) >='a' && asValue <= 'z') || (asValue.charAt(i) >= 'A' && asValue <= 'Z')))
		{
			return false;
		}
	}

	return true;
}

// 한글검증
function C_isHangul(asValue)
{
	if (C_isNull(asValue)) return false;
	
	for (var i = 0; i < asValue.length; i++)
	{
		var c = escape(asValue.charAt(i));
	
		if (c.indexOf("%u") == -1)
		{
			return false;
		}
	}
	return true;		
}

function C_isAlphaNum(asValue)
{
	if (C_isNull(asValue)) return false
	
	for (var i = 0; i < asValue.length; i++)
	{
		if (!((asValue.charAt(i) >='a' && asValue.charAt(i) <= 'z') || (asValue.charAt(i) >= 'A' && asValue.charAt(i) <= 'Z') || (asValue.charAt(i) >= '0' && asValue.charAt(i) <= '9') ))
		{
			return false;
		}
	}

	return true;
}

/*
  입력값이 이메일 형식인지 체크
  ex) if (!C_isValidEmail(form.email.value)) {
          alert("올바른 이메일 주소가 아닙니다.");
      }
*/
function C_isValidEmail(asValue)
{
	var strFormat = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
	return C_isValidFormat(asValue, strFormat);
}

// 이메일 유효성01 1119
function C_isValidEmail01(asValue)
{
	var strFormat = /^((\w|[\-\.])+)$/;
	return C_isValidFormat(asValue, strFormat);
}

// 이메일 유효성02 1119
function C_isValidEmail02(asValue)
{
	var strFormat = /^((\w|[\-\.])+)\.([A-Za-z]+)$/;
	return C_isValidFormat(asValue, strFormat);
}




// 입력값이 전화번호 형식(숫자-숫자-숫자)인지 체크
function C_isValidPhone(asValue) {
	var strFormat = /^(\d+)-(\d+)-(\d+)$/;
	return C_isValidFormat(asValue, strFormat);
}




//주민등록번호 유효성 검증 / 회원가입 개인 실명 인증 사용 1110

 function C_isValidRegNo01(userNo11,userNo22){


        var chk=0;
        var yy=userNo11.substring(0, 2); //출생년도 추출
        var mm=userNo11.substring(2, 4); //출생월 추출
        var dd=userNo11.substring(4, 6); //출생일 추출
        var sex=userNo22.substring(0, 1); //성별 추출
          

        //첫 번째필드가 6자리가 아닐때
        if(userNo11.length!=6 ){
    
            C_msgOk('주민번호 첫번째자리 형식이 잘못 되었습니다.');
            return false;
        }


  		//첫 번째필드의  생년월일이 날짜 형식에 위배될때
        if(mm<1 || mm>12 || dd<1 || dd>31){
    
			C_msgOk('생년월일을 잘못 입력하셨습니다.');
            return false;
        }

 
        //두번째 필드의 성별형식이 틀릴때 
        if(sex!=1 && sex!=2 && sex!=3 && sex!=4){
        
			C_msgOk('주민번호 두번째자리 형식이 잘못 되었습니다.');
            return false;
        }

        //두 번째 필드가 7자리가 아닐때
        if(userNo22.length!=7){
        
			C_msgOk('주민번호 두번째자리 형식이 잘못 되었습니다.');
            return false;
        }
 

        //주민등록번호 체크에 관한
        for(i=0; i<=5; i++)
            chk=chk+((i%8+2)*parseInt(userNo11.substring(i, i+1)));
 

        for(i=6; i<=11; i++)
            chk=chk+((i%8+2)*parseInt(userNo22.substring(i-6, i-5)));
 

        chk=(11-(chk%11))%10;
        if(chk!=userNo22.substring(6, 7)){

			C_msgOk('주민번호 형식이 잘못 되었습니다.');
            return false;
        }

        return true;
    }









//주민등록번호 유효성 검증
function C_isValidRegNo(asValue)
{
	var arrRegNo = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
	var intSum = 0;
	var intMod = 0;	
	var i = 0;
	var odd = 0;
	var sum = 0;
	var flag = 0;
	
	if (C_isNull(asValue)) return true;
	
	var strValue = asValue.toString().replace(/-/g, "");
	
	if (C_getByteLength(strValue) == 10)
	{

		return C_isValidCustNo(strValue);
		
	}
	
	
	
	if (C_getByteLength(strValue) != 13 || !C_isNum(strValue))
	{
		ERR_MSG = "주민등록번호는 13자리 숫자입니다.";
		return false;
	}

	if (strValue == '0000000000000') return true;

	for (i = 0; i < 13; i++) arrRegNo[i] = strValue.substr(i, 1);		
	for (i = 0; i < 12; i++) intSum += arrRegNo[i] * ((i > 7) ? (i - 6) : (i + 2));	
	intMod = 11 - intSum % 11;	
	if (intMod >= 10) intMod -= 10;

	odd = arrRegNo[7]*10 + arrRegNo[8];
    sum  = intSum;

	if(odd % 2 != 0)  flag = 1;


	if ((arrRegNo[11] != 6) && (arrRegNo[11] != 7) && (arrRegNo[11] != 8) && (arrRegNo[11] != 9))
	{
		flag = 1;

	}	
	sum = 11 - (sum%11);
	if (sum >= 10)
	{
		sum -= 10 ;

	}
	sum += 2;
	if (sum >= 10 )
	{
		sum -= 10 ;

	}
	if (sum != arrRegNo[12])  flag = 1;	

    //alert(intMod +"::"+ sum +"::"+ odd);
	if ((intMod != arrRegNo[12]) && (flag==1))
	{
		ERR_MSG = "올바르지 않은 주민등록번호입니다.";
		return false;
	}
	
	return true;
}






//사업자번호 유효성 검증
function C_isValidCustNo(asValue)
{
	var intSumMod = 0;
	
	if (C_isNull(asValue)) return true;
	
	var strValue = asValue.toString().replace(/-/g, "");
	
	if (C_getByteLength(strValue) == 13)
	{
		return C_isValidRegNo(strValue);
	}
	
	if (C_getByteLength(strValue) != 10 || !C_isNum(strValue))
	{
		ERR_MSG = "사업자등록번호는 10자리 숫자입니다.";
		return false;
	}
	
	intSumMod += parseInt(strValue.substr(0, 1));
	intSumMod += parseInt(strValue.substr(1, 1)) * 3 % 10;
	intSumMod += parseInt(strValue.substr(2, 1)) * 7 % 10;
	intSumMod += parseInt(strValue.substr(3, 1)) * 1 % 10;
	intSumMod += parseInt(strValue.substr(4, 1)) * 3 % 10;
	intSumMod += parseInt(strValue.substr(5, 1)) * 7 % 10;
	intSumMod += parseInt(strValue.substr(6, 1)) * 1 % 10;
	intSumMod += parseInt(strValue.substr(7, 1)) * 3 % 10;
	intSumMod += Math.floor(parseInt(strValue.substr(8, 1)) * 5 / 10);
	intSumMod += parseInt(strValue.substr(8, 1)) * 5 % 10;
	intSumMod += parseInt(strValue.substr(9, 1));
	
	if (intSumMod % 10 != 0)
	{
		ERR_MSG = "올바르지 않은 사업자등록번호입니다.";
		return false;
	}
	
	return	true;
}

// xxxx은행 계좌번호 검증
function C_isValidAcctNo(asValue)
{
	var intSum = 0;
	var intValue = 0;
	var intCheckDigit = parseInt(asValue.substring(10));
	
	if (C_isNull(asValue)) return true;
	
	var strValue = asValue.toString().replace(/-/g, "");
	
	if (C_getByteLength(strValue) != 11 || !C_isNum(strValue))
	{
		ERR_MSG = "계좌번호는 '-'를 제외한 11자리 숫자입니다.";
		return false;
	}
	
	for (var i = 0; i <=9 ; i++)
	{
		intValue = strValue.substr(i, 1);
		
		if (i == 0 || i == 2 || i == 4 || i == 6 || i == 8)
		{
			intValue *= 1;
		}
		else {
			intValue *= 2;
		}
		
		intSum += intValue;
	}
	
	var intLast = 10 - (intSum - (Math.floor(intSum / 10) * 10));
	
	if (intLast == 10) intLast = 0;
	if (intLast != intCheckDigit)
	{
		ERR_MSG = "올바르지 않은 계좌번호입니다.";
		return false;
	}
	
	return true;
}

/*-------------------- 문자열 관련 함수 --------------------*/
// 캐릭터 타입 검증 'H'-한글, 'E'-영문, 'N'-숫자, 'Z'-기타
function C_getCharType(asValue)
{
	var bolHan = false;
	var bolAlp = false;
	var bolNum = false;
	var bolEtc = false;
	
	var retStr = "";

	if (C_isNull(asValue))
	{
		return "";
	}
	
	for (var i = 0; i < asValue.length; i++)
	{
		if (C_isAlpha(asValue.charAt(i)))
		{
			bolAlp = true;
			retStr += "E";
		}
		else if (C_isNum(asValue.charAt(i)))
		{
			bolNum = true;
			retStr += "N";
		}
		else if (C_isHangul(asValue.charAt(i)))
		{
			bolHan = true;
			retStr += "H";
		}
		else
		{
			bolEtc = true;
			retStr += "Z";
		}
	}
	
	return retStr;
}

/*
  입력값에 특정 문자(chars)가 있는지 체크
  특정 문자를 허용하지 않으려 할 때 사용
  ex) if (containsChars(form.name,"!,*&^%$#@~;")) {
          alert("이름 필드에는 특수 문자를 사용할 수 없습니다.");
      }
*/
function C_containsChars(asValue, asChars)
{
	for (var i = 0; i < asValue.length; i++)
	{
		if (asChars.indexOf(asValue.charAt(i)) != -1)	return true;
	}
	
	return false;
}

/*
  입력값이 특정 문자(chars)만으로 되어있는지 체크
  특정 문자만 허용하려 할 때 사용
  ex) if (!C_containsCharsOnly("M", "MW")) {
          alert("성별 필드에는 M,W 문자만 사용할 수 있습니다.");
      }
*/
function C_containsCharsOnly(asValue, asChars)
{
	for (var i = 0; i < asValue.length; i++)
	{
		if (asChars.indexOf(asValue.charAt(i)) == -1) return false;
	}
	
	return true;
}

/*
  입력값이 사용자가 정의한 포맷 형식인지 체크
  자세한 format 형식은 자바스크립트의 'regular expression'을 참조
*/
function C_isValidFormat(asValue, asFormat)
{
	if (C_isNull(asValue)) return true;
	if (asValue.search(asFormat) != -1) return true; //올바른 포맷 형식

	return false;
}

/*
  입력값의 바이트 길이를 리턴
  ex) if (getByteLength(form.title) > 100) {
          alert("제목은 한글 50자(영문 100자) 이상 입력할 수 없습니다.");
      }
*/
function C_getByteLength(asValue)
{
	var byteLength = 0;
	var	lsEsc = "%B2%B3%B4%B7%A8%AD%B1%D7%F7%B0%A7%B8%A1%BF%A4%B6%AE%C6%D0%AA%3F%3F%D8%BA%DE%BD%BC%BE%E6%F0%F8%DF%FE%B9";
	
	for (var i = 0; i < asValue.length; i++)
	{
		var oneChar = escape(asValue.charAt(i));
		
		if (oneChar.length == 1 )
		{
			byteLength ++;
		}
		else if (oneChar.indexOf("%u") != -1)
		{
			byteLength += 2;
		}
		else if (oneChar.indexOf("%") != -1)
		{
			if(lsEsc.indexOf(oneChar) != -1)
			{
				byteLength += 2;
			}
			else
			{
				byteLength += oneChar.length / 3;
			}
		}
	}
	
	return byteLength;
}

// 문자열에 있는 특정문자패턴을 다른 문자패턴으로 바꾸는 함수.
function C_Replace(asTarget, asSearch, asReplace)
{
	var strTemp = "";

	for (var i = 0 ; i < asTarget.length ; i++)
	{
		if (asTarget.charAt(i) != asSearch)
		{
			strTemp = strTemp + asTarget.charAt(i);
		}
		else
		{
			strTemp = strTemp + asReplace;
		}
	}
	
	return strTemp;
}

// 문자열에서 좌우 공백제거
function C_Trim(asValue)
{
	var intStart = 0;
	var intEnd   = 0;

	for (var i = 0 ; i < asValue.length ; i++)
	{
		if (asValue.charAt(i) != " ")
		{
			intStart = i;
			break;
		}
	}
	
	for (var j = asValue.length - 1 ; j >= 0 ; j--)
	{
		if (asValue.charAt(j) != " ")
		{
			intEnd = j + 1;
			break;
		}
	}
	
	return asValue.substring(intStart, intEnd);
}

// 문자열을 숫자 포맷으로 변경한다.(abDot : true(소수점 포함), false(소수점 미포함))
function C_toNumberFormatString(asValue, abDot)
{
	if (C_isNull(asValue)) return "";
	
	//var intNumber = parseFloat(C_removeComma(asValue), 10);
	var intNumber = C_removeComma(asValue, abDot);
	var bolMinus = false;
	var bolDot = false;
	var dotPos;
	var dotU;
	var dotD;
	var commaFlag;
	var strOut = "";

	if (intNumber < 0)
	{
		intNumber *= -1; 
		bolMinus = true;
	}
	
	if (intNumber.toString().indexOf(".") > -1)
	{
		if (abDot == false)
		{
			intNumber = intNumber.substring(0, intNumber.toString().indexOf("."));
		}
	}

	if (intNumber.toString().indexOf(".") > -1)
	{
		dotPos = intNumber.toString().split(".");
		//dotU = dotPos[0];
		dotU = Number(dotPos[0], 10).toString();
		dotD = dotPos[1];
		bolDot = true;
	}
	else
	{
		//dotU = intNumber.toString();
		dotU = Number(intNumber.toString(), 10).toString();
		dotD = "";
	}

	commaFlag = dotU.length % 3;
	
	if (commaFlag)
	{
		strOut = dotU.substring(0, commaFlag);
		if (dotU.length > 3) strOut += ",";
	}
	
	for (var i = commaFlag; i < dotU.length; i+=3)
	{
		strOut += dotU.substring(i, i + 3) ;
		if (i < dotU.length - 3) strOut += ",";
	}
	
	if (bolMinus) strOut = "-" + strOut;
	if (bolDot) strOut = strOut + "." + dotD;
	
	return strOut;
}

// 입력값에서 콤마 및 공백을 없앤다.(abDot : true(소수점 포함), false(소수점 미포함))
function C_removeComma(asValue, abDot)
{
	var intNumber = asValue.toString().replace(/,/g, "").replace(/ /g, "");
	
	if (intNumber.toString().indexOf(".") > -1)
	{
		if (abDot == false)
		{
			intNumber = intNumber.substring(0, intNumber.toString().indexOf("."));
		}
	}
	
    return intNumber;
}
//입력값에서 콤마 및 공백을 없애고 숫자형식 문자열을 되돌린다.
function	C_getNumberTypeString(asValue)
{
	var		lsRet = C_removeComma(asValue,false);
	if(C_isNull(lsRet))
	{
		return "0";
	}
	else
	{
		return lsRet;
	}
}
// Left 빈자리 만큼 strPadChar 을 붙인다.
function C_LPad(strValue, intLength, strPadChar)
{
	var strTemp = "";
	var intPadCnt = intLength - strValue.length;
	
	for (var i = 0; i < intPadCnt; i++) strTemp += strPadChar;
	
	return strTemp + strValue;
}

// Right 빈자리 만큼 strPadChar 을 붙인다.
function C_RPad(strValue, intLength, strPadChar)
{
	var strTemp = "";
	var intPadCnt = intLength - strValue.length;
	
	for (var i = 0; i < intPadCnt; i++) strTemp += strPadChar;
	
	return strValue + strTemp;
}

// 대문자변환
function C_toUpperCase(asValue)
{
	if(C_isNull(asValue)) return asValue;
	return asValue.toUpperCase();
}

// 소문자변환
function C_toLowerCase(asValue)
{
	if(C_isNull(asValue)) return asValue;
	return asValue.toLowerCase();
}

/*
문자열을 입력한 포맷으로 변경한다.
ex) alert(C_StringFM("123456789", "xxx-xxx-xxxx"));
*/
function C_StringFM(strValue, strFormat)
{
	var strData;
	var strPattern;
	var intLen;
	var intPos;
	
	intPos = -1;
	strPattern = /-/g;
	
	if (strValue == null || strValue.length < 1 || strFormat == null || strFormat.length < 1) return strValue;

	strData = strValue.replace(strPattern, "");

	intLen = strData.length;

	if (intLen != strFormat.replace(strPattern, "").length) return strValue;

	while (true)
	{
		intPos = strFormat.indexOf("-", intPos + 1);

		if (intPos < 1) break;
		
		strData = strData.substr(0, intPos) + "-" + strData.substr(intPos);
	}

	return strData;
}

// 한글변환시 bolTag에 true를 넘기고 서버 코딩에서 사용시 반드시 디코딩한다.
function C_Encode(strValue, bolTag)
{
	return bolTag == true ? escape(encodeURI(strValue)) : encodeURI(strValue) ;
}

// 한글이 인코딩된 경우 bolTag에 true를 넘긴다.
function C_Decode(strValue, bolTag)
{
	return bolTag == true ? decodeURI(unescape(strValue)) : decodeURI(strValue);
}

/*-------------------- 체크박스와 라디오버튼 관련 함수 --------------------*/
// 해당 폼에 선택된 체크박스나 라디오버튼이 있는지 체크
function C_isCheckedRadio(aObj)
{
	var elem = isIE ? aObj.all.tags('INPUT') : aObj.getElementsByTagName("INPUT");
	
	for (var i = 0; i < elem.length; i++)
	{
		if (elem[i].type != "radio" && elem[i].type != "checkbox") continue;
		if (elem[i].checked) return true;
	}
	
	return false;
}

// 해당 폼에 선택된 체크박스나 라디오버튼이 그 개수를 반환
function C_countCheckedRadio(aObj)
{
	var elem = isIE ? aObj.all.tags('INPUT') : aObj.getElementsByTagName("INPUT");
	var intCount = 0;
	
	for (var i = 0; i < elem.length; i++)
	{
		if (elem[i].type != "radio" && elem[i].type != "checkbox") continue;
	    if (elem[i].checked) intCount++;
	}
	
	return intCount;
}

// 해당 폼에 모든 체크박스를 선택한다.
function C_checkAll(aObj)
{
	var elem = isIE ? aObj.all.tags('INPUT') : aObj.getElementsByTagName("INPUT");
	
	for (var i = 0; i < elem.length; i++)
	{
		if (elem[i].type != "checkbox") continue;
	    elem[i].checked = true;
	    C_RowSelect(elem[i]);
	}
}

// 해당 폼에 모든 체크박스의 선택을 취소한다.
function C_uncheckAll(aObj)
{
	var elem = isIE ? aObj.all.tags('INPUT') : aObj.getElementsByTagName("INPUT");
	
	for (var i = 0; i < elem.length; i++)
	{
		if (elem[i].type != "checkbox") continue;
	    elem[i].checked = false;
	    C_RowSelect(elem[i]);
	}
}

/*
  해당 폼에 선택된 체크박스나 라디오버튼의 Value 값을 리턴한다.
  다수가 선택된 경우 ','로 구분한다("1,2,3,4")
*/
function C_getCheckedRadioValue(aObj)
{
	var elem = isIE ? aObj.all.tags('INPUT') : aObj.getElementsByTagName("INPUT");
	var strKey = "";
	
	for (var i = 0; i < elem.length; i++)
	{
		if (elem[i].type != "radio" && elem[i].type != "checkbox") continue;
	    if (elem[i].checked) strKey += elem[i].value + ",";
	}
	
	return strKey.substr(0, strKey.length - 1);
}

// 체크박스나 라디오버튼을 선택할 경우 Row에 색상을 변경한다.
var check = 0;
function C_RowSelect(aoItem)
{
	var objTable;
	
	try
	{
		objTable = aoItem.parentElement.parentElement.parentElement.parentElement;
	
		if (aoItem.type == "radio")
		{
	    	for (var i = 0; i < objTable.rows.length; i++)
			{
			    objTable.rows(i).bgColor = DEFAULT_ROW_BGCOLOR;
			}
	    }
		
		aoItem.parentElement.parentElement.bgColor = aoItem.checked ? ROW_SELECT_BGCOLOR : DEFAULT_ROW_BGCOLOR;
	}
	catch (E)
	{
	}
	
	check = 1;
}

// 체크박스나 라디오버튼을 선택할 경우 Row에 색상을 변경한다.(POP-UP 창에 관련된것) -- 작성자-> 이승준
function C_PopRowSelect(aoItem)
{
	var objTable;
	
	try
	{
		objTable = aoItem.parentElement.parentElement.parentElement.parentElement;
	
		if (aoItem.type == "radio")
		{
	    	for (var i = 0; i < objTable.rows.length; i++)
			{
			    objTable.rows(i).bgColor = DEFAULT_ROW_BGCOLOR;
			}
	    }
		
		aoItem.parentElement.parentElement.bgColor = aoItem.checked ? POPUP_ROW_SELECT_BGCOLOR : DEFAULT_ROW_BGCOLOR;
	}
	catch (E)
	{
	}
	
	check = 1;
}

/*-------------------- 테이블 관련 함수 --------------------*/
// 마우스가 위치한 테이블의 Row에 색상을 변경한다.
function C_RowMouseOver(aoRow)
{
    aoRow.bgColor = ROW_MOUSEOVER_BGCOLOR;
}

// 마우스가 해당 Row에서 벗어난 경우 Row에 색상을 변경한다.
function C_RowMouseOut(aoRow)
{
    aoRow.bgColor = aoRow.childNodes[0].childNodes[0].checked ? ROW_MOUSEOUT_BGCOLOR : DEFAULT_ROW_BGCOLOR;
}

// 마우스가 위치한 테이블의 Row에 색상을 변경한다. (POP-UP)-- 작성자-> 이승준
function C_PopRowMouseOver(aoRow)
{
    aoRow.bgColor = POPUP_ROW_MOUSEOVER_BGCOLOR;
}

// 마우스가 해당 Row에서 벗어난 경우 Row에 색상을 변경한다. (POP-UP)
function C_PopRowMouseOut(aoRow)
{
    aoRow.bgColor = aoRow.childNodes[0].childNodes[0].checked ? POPUP_ROW_MOUSEOUT_BGCOLOR : DEFAULT_ROW_BGCOLOR;
}

// 마우스가 해당 Row에서 벗어난 경우 Row에 색상을 변경한다.
function C_RowMouseClick(aoRow)
{
	if (check == 1)
	{
		check = 0;
		return;
	}
	
	var elem = aoRow.getElementsByTagName("INPUT");
	var obj;
	
	for (var i = 0; i < elem.length; i++)
	{
		if (elem[i].type == "radio" || elem[i].type == "checkbox")
		{
			if (elem[i].type == "checkbox")
			{
				elem[i].checked = elem[i].checked ? false : true;
			}
			else
			{
				elem[i].checked = true;
			}
			
			C_RowSelect(elem[i]);
			check = 0;
		}
	}
}

// 기존의 체크박스가 체크되어있는경우 체크된 체크박스에 이벤트를 받지않게 하기위한 함수.//이승준
function C_NotRowMouseClick(aoRow)
{
	if (check == 1)
	{
		check = 0;
		return;
	}
	
	var elem = aoRow.getElementsByTagName("INPUT");
	var obj;
	
	for (var i = 0; i < elem.length; i++)
	{
		if (elem[i].type == "radio" || elem[i].type == "checkbox")
		{
			if (elem[i].type == "checkbox")
			{
				elem[i].checked = elem[i].checked ? true : false;
			}
			else
			{
				elem[i].checked = true;
			}
			
			C_RowSelect(elem[i]);
			check = 0;
		}
	}
}

// 마우스가 해당 Row에서 벗어난 경우 Row에 색상을 변경한다.(pop-up 화면에 적용)-- 작성자-> 이승준
function C_PopRowMouseClick(aoRow)
{
	if (check == 1)
	{
		check = 0;
		return;
	}
	
	var elem = aoRow.getElementsByTagName("INPUT");
	var obj;
	
	for (var i = 0; i < elem.length; i++)
	{
		if (elem[i].type == "radio" || elem[i].type == "checkbox")
		{
			if (elem[i].type == "checkbox")
			{
				elem[i].checked = elem[i].checked ? false : true;
			}
			else
			{
				elem[i].checked = true;
			}
			
			C_PopRowSelect(elem[i]);
			check = 0;
		}
	}
}

/*-------------------- 날짜, 시간 관련 함수 --------------------*/
// 유효한(존재하는) 년(年)인지 체크
function C_isValidYear(yyyy)
{
	var intYear = parseInt(yyyy, 10);
	return (intYear >= 1900 && intYear <= 2999);
}

// 유효한(존재하는) 월(月)인지 체크
function C_isValidMonth(mm)
{
	var intMonth = parseInt(mm, 10);
	return (intMonth >= 1 && intMonth <= 12);
}

// 유효한(존재하는) 일(日)인지 체크
function C_isValidDay(yyyy, mm, dd)
{
	var intMonth = parseInt(mm, 10) - 1;
	var intDay = parseInt(dd, 10);	
	var arrLastDay = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	
	if ((yyyy % 4 == 0 && yyyy % 100 != 0) || yyyy % 400 == 0) arrLastDay[1] = 29;	
	
	return (intDay >= 1 && intDay <= arrLastDay[intMonth]);
}

// 유효한(존재하는) 시(時)인지 체크
function C_isValidHour(hh)
{
	var intHour = parseInt(hh, 10);
	return (intHour >= 0 && intHour <= 23);
}

// 유효한(존재하는) 분(分)인지 체크
function C_isValidMin(mi)
{
	var intMin = parseInt(mi, 10);
	return (intMin >= 0 && intMin <= 59);
}

// 입력된 날짜값에서 '-', '/', '.', ':', ' '(공백)을 없앤다.
function C_removeDateTimeFormat(asValue)
{
	return asValue.toString().replace(/-/g, "").replace(/\//g, "").replace(/\./g, "").replace(/:/g, "").replace(/ /g, "");
}

/*
  유효하는(존재하는) 날짜 인지 체크
  ex) var date = form.date.value; //'20010231'
      if (!C_isValidDate(date)) {
          alert("올바른 날짜가 아닙니다.");
      }
 */
function C_isValidDate(asDate)
{
	if (C_isNull(asDate)) return true;
	
	var strDate = C_removeDateTimeFormat(asDate);
	var year  = "";
	var month = "";
	var day   = "";
	var hour  = "";
	var min   = "";
	
	if (strDate.length == 6)
	{
		year  = strDate.substr(0,4);
		month = strDate.substr(4,2);
		
		if (parseInt(year, 10) >= 1900 && C_isValidMonth(month)) return true;
	}
	else if (strDate.length == 8)
	{
		year  = strDate.substr(0,4);
		month = strDate.substr(4,2);
		day   = strDate.substr(6,2);
		
		if (parseInt(year, 10) >= 1900 && C_isValidMonth(month) && C_isValidDay(year,month,day)) return true;
	}
	else if (strDate.length == 12)
	{
		year  = strDate.substr(0,4);
		month = strDate.substr(4,2);
		day   = strDate.substr(6,2);
		hour  = strDate.substr(8,2);
		min   = strDate.substr(10,2);
		
		if (parseInt(year, 10) >= 1900 && C_isValidMonth(month) && C_isValidDay(year, month, day) &&
			C_isValidHour(hour) && C_isValidMin(min)) return true;
	}

	return false;
}


//날짜문자열을 인자2만큼의 이전 날을 구한다.
function C_agoDay(asDate,AddDay)
{
	if (!C_isValidDate(asDate)) return "";

var agoWeek=C_toDate(asDate)-( AddDay*24*60*60*1000);

agoWeek = new Date(agoWeek);

agoWeek = C_toDateString(agoWeek,8)//fromDate.setDate(agoWeek);

agoWeek = C_toDateFormatString(agoWeek,8)//fromDate.setDate(agoWeek);
return agoWeek;
}

/*
  Date 스트링을 자바스크립트 Date 객체로 변환
  ex) alert(C_toDate("20040329"));
 */
function C_toDate(asDate)
{
	var strDate = C_removeDateTimeFormat(asDate);
	var year  = "";
	var month = "";
	var day   = "";
	var hour  = "";
    var min   = "";
	
	if (strDate.length == 6)
	{
		year  = strDate.substr(0,4);
		month = strDate.substr(4,2) - 1; // 1월=0,12월=11
		
		return new Date(year, month, 1);
	}
	else if (strDate.length == 8)
	{
		year  = strDate.substr(0,4);
		month = strDate.substr(4,2) - 1; // 1월=0,12월=11
		day   = strDate.substr(6,2);
		
		return new Date(year, month, day);
	}
	else if (strDate.length == 12)
	{
		year  = strDate.substr(0,4);
		month = strDate.substr(4,2) - 1; // 1월=0,12월=11
		day   = strDate.substr(6,2);
		hour  = strDate.substr(8,2);
	    min   = strDate.substr(10,2);
		
		return new Date(year, month, day, hour, min);
	}
	
	return null;
}

/*
  자바스크립트 Date 객체를 Date 스트링(20031225)으로 변환
  ex) var date = new Date();
      alert(C_toDateString(date, 8));
 */
function C_toDateString(aoDate, aiLength)
{
	var year  = aoDate.getFullYear();
	var month = aoDate.getMonth() + 1; // 1월=0,12월=11이므로 1 더함
	var day   = aoDate.getDate();
	var hour  = aoDate.getHours();
    var min   = aoDate.getMinutes();
    
    if (("" + month).length == 1) { month = "0" + month; }
	if (("" + day).length   == 1) { day   = "0" + day;   }
	if (("" + hour).length  == 1) { hour  = "0" + hour;  }
    if (("" + min).length   == 1) { min   = "0" + min;   }
	
	if (aiLength == 8)
	{
		return ("" + year + month + day)
	}
	else if (aiLength == 12)
	{
		return ("" + year + month + day + hour + min)
	}
	
	return "";
}

/*
  Date 스트링을 yyyy-mm-dd 포맷의 스트링으로 변환.
  ex) alert(C_toDateFormatString("20040329"));
 */
function C_toDateFormatString(asDate)
{
	var strDate = C_removeDateTimeFormat(asDate);
	var strTemp = "";
	
	if (strDate.length == 6)
	{
		strTemp += strDate.substr(0,4);
		strTemp += "-";
		strTemp += strDate.substr(4,2);
	}
	else if (strDate.length == 8)
	{
		strTemp += strDate.substr(0,4);
		strTemp += "-";
		strTemp += strDate.substr(4,2);
		strTemp += "-";
		strTemp += strDate.substr(6,2);
	}
	else if (strDate.length == 12)
	{
		strTemp += strDate.substr(0,4);
		strTemp += "-";
		strTemp += strDate.substr(4,2);
		strTemp += "-";
		strTemp += strDate.substr(6,2);
		strTemp += " ";
		strTemp += strDate.substr(8,2);
		strTemp += ":";
		strTemp += strDate.substr(10,2);
	}
	else
	{
		strTemp = asDate;
	}
	
	return strTemp;
}

// 현재 시각을 Date String 형식으로 리턴 (20040329)
function C_getNowDateString(aiLength)
{
	return C_toDateString(new Date(), aiLength);
}

// 현재 시각을 Date Format String 형식으로 리턴 (2004-03-29)
function C_getNowDateFormatString(aiLength)
{
	return C_toDateFormatString(C_toDateString(new Date(), aiLength));
}

// 현재 시각을 지정한 구분자를 Date Format String 형식으로 리턴 (YYYY-MM) 예 delimiter -
//추가 - 한재원
function getYearMonth(delimiter)
{
	var strYear = C_getYear();
	var strMonth = C_getMonth();
			
	var strYearMonth = strYear + ''+ delimiter + ''+ strMonth;
	return strYearMonth;
}
// 현재 年을 YYYY형식으로 리턴
function C_getYear()
{
	return C_getNowDateString(12).substr(0,4);
}

// 현재 月을 MM형식으로 리턴
function C_getMonth()
{
	return C_getNowDateString(12).substr(4,2);
}

// 현재 日을 DD형식으로 리턴
function C_getDay()
{
	return C_getNowDateString(12).substr(6,2);
}

// 현재 時를 HH형식으로 리턴
function C_getHour()
{
	return C_getNowDateString(12).substr(8,2);
}


// 현재 日의 요일을 구한다.
function C_getToDayOfWeek()
{
	var week = new Array('일','월','화','수','목','금','토');
	var now  = new Date();
	var day  = now.getDay(); //일요일=0,월요일=1,...,토요일=6

	return week[day];
}

// 특정날짜의 요일을 구한다.
function C_getDayOfWeek(asDate)
{
	var week = new Array('일','월','화','수','목','금','토');
	var now  = C_toDate(asDate);
	var day  = now.getDay(); //일요일=0,월요일=1,...,토요일=6

	return week[day];
}

// 현재날짜의 데이트+시각을 구한다
function C_getDateTime()
{
   var d, s = "";

   d = new Date();
   s += C_getNowDateString(8); 
   s += d.getHours();
   s += d.getMinutes();
   s += d.getSeconds();
   s += d.getMilliseconds();
   return(s);
}

//월의 끝 일자 얻기
function C_getEndDay(asDate)
{
	var arrLastDay = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	var strDate = C_removeDateTimeFormat(asDate);
	var year = parseInt(strDate.substr(0,4), 10);
	var month = parseInt(strDate.substr(4,2), 10);
	
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) arrLastDay[1] = 29;	

	return arrLastDay[month - 1];
}

//월의 끝 일자 얻기(yyyymmdd로 리턴)
function C_getEndDate(asDate)
{
	var strDate = C_removeDateTimeFormat(asDate);

	var year	= strDate.substr(0,4);
	var month	= strDate.substr(4,2);
	var Day		= C_getEndDay(strDate);
	var EndDate = C_toDateFormatString(year+month+Day)
	
	return EndDate;
}

//시작일자와 종료일자를 비교(종료일자가 크면 true, 시작일자가 크면 false)
function C_compareDateFT(asFDate, asTDate)
{
	if (!C_isValidDate(asFDate) || !C_isValidDate(asTDate)) return true;
	
	var iFDate = parseFloat(C_removeDateTimeFormat(asFDate));
	var iTDate = parseFloat(C_removeDateTimeFormat(asTDate));
	
	if (isNaN(iFDate) || isNaN(iTDate)) return true;
	
	return iFDate <= iTDate ? true : false;
}

//시작일자와 종료일자를 계산해서 몇년, 몇월, 몇일이 차이가 나는지 계산(결과값은 배열로 넘긴다)
function C_calcDateFT(asFromDate, asToDate)
{

	if (!C_isValidDate(asFromDate) || !C_isValidDate(asToDate)) return null;
	
	var lsFromDate = C_removeDateTimeFormat(asFromDate);
	var lsToDate = C_removeDateTimeFormat(asToDate);
	
	if (isNaN(parseFloat(lsFromDate)) || isNaN(parseFloat(lsToDate))) return null;
	
	var larrRet = new Array(3);
	var liFromDay = 0;
	var liToDay = 0;
	var liTemp = 0;
	var liYear = 0;
	var liMonth = 0;
	var liDay = 0;
	
	liFromDay = (parseFloat(lsFromDate.substr(0, 4)) * 365) + (parseFloat(lsFromDate.substr(4, 2)) * 30) + parseFloat(lsFromDate.substr(6, 2));
	liToDay = (parseFloat(lsToDate.substr(0, 4)) * 365) + (parseFloat(lsToDate.substr(4, 2)) * 30) + parseFloat(lsToDate.substr(6, 2));
	
	liTemp = Math.abs(liToDay - liFromDay);
	
	// 년 계산
	if (liTemp >= 365)
	{
		liYear = parseInt(liTemp / 365);
		liTemp = (liTemp % 365);
	}
	else
	{
		liYear = 0;
	}
	
	// 월 계산
	if (liTemp >= 30)
	{
		liMonth = parseInt(liTemp / 30);
		liTemp = (liTemp % 30);
	}
	else
	{
		liMonth = 0;
	}
	
	liDay = liTemp;
	
	larrRet[0] = liYear;
	larrRet[1] = liMonth;
	larrRet[2] = liDay;
	if (liMonth == 12)
	{
		larrRet[0] = larrRet[0] + 1;
		larrRet[1] = 0;
	}
	
	return larrRet;
}

/*-------------------- 전화번호 관련 함수 --------------------*/
// 전화번호 국번검증
function C_isValidPhoneNum(asPhoneNum)
{
	if (C_isNull(asPhoneNum)) return false;
	tmpStr = new String(asPhoneNum);
	temp = tmpStr.length;
	if(temp>3){ 
		asPhoneNum = tmpStr.substr(0,3);
		if(asPhoneNum.substr(0,2) == "02") {
			return true;
		}	
	}
	if (asPhoneNum != "02" && asPhoneNum != "031" && asPhoneNum != "032" && asPhoneNum != "033" && asPhoneNum != "041" &&
		asPhoneNum != "042" && asPhoneNum != "043" && asPhoneNum != "051" && asPhoneNum != "052" && asPhoneNum != "053" &&
		asPhoneNum != "054" && asPhoneNum != "055" && asPhoneNum != "061" && asPhoneNum != "062" && asPhoneNum != "063" &&
		asPhoneNum != "064" && asPhoneNum != "011" && asPhoneNum != "016" && asPhoneNum != "017" && asPhoneNum != "018" &&
		asPhoneNum != "019" && asPhoneNum != "010" && asPhoneNum != "070")
	{
		ERR_MSG = "잘못된 전화번호 국번입니다.";
		return false;
	}

	return true;
	
}

// 전화번호/핸드폰 숫자만 입력하는지 확인
function C_isValidPhoneNumCheck(num)
{
	 for(h=0; h<num.length; h++){
		  var g = num.charCodeAt(h);
		   if( !( 48 <= g && g <= 57 )){
  			    return false;
		 	}
		 }
		 	return true;
}



/*-------------------- 콤보박스 관련 함수 --------------------*/
// 콤보박스 초기화
function C_intiCombo(aCbo)
{
	while (aCbo.options.length > 0)
	{
		for (var i = 0; i < aCbo.options.length; i++)
		{
			aCbo.remove(i);
		}
	}
}

// 해당 URL에서 데이터를 읽어와 콤보박스 설정
function C_setCombo(aCbo, asURL)
{
	var oOption = null;
	var arrData = null;
	var arrTemp = null;
	
	C_intiCombo(aCbo);
	
	arrData = C_ReceiveData(asURL);
	
	if (arrData == null || arrData.length < 1) return;
	if (arrData[0] != RECEIVE_DATA_OK)
	{
		C_msgOk(arrData[0], "에러");
		return;
	}
	
	for (var i = 1; i < arrData.length; i++)
	{
		oOption = document.createElement("OPTION");
		arrTemp = arrData[i].split("\t");
		
		oOption.value = arrTemp[0];
		oOption.text = arrTemp[1];
		aCbo.add(oOption);
	}
}

// 해당 URL에서 데이터를 읽어와 콤보박스 설정(전체포함)
function C_setComboAll(aCbo, asURL, asAllString)
{
	var oOption = null;
	var arrData = null;
	var arrTemp = null;
	
	C_intiCombo(aCbo);
	
	arrData = C_ReceiveData(asURL);
	
	if (arrData == null || arrData.length < 1) return;
	if (arrData[0] != RECEIVE_DATA_OK)
	{
		C_msgOk(arrData[0], "에러");
		return;
	}
	
	oOption = document.createElement("OPTION");
	oOption.value = C_isNull(asAllString) ? "%" : asAllString;
	oOption.text = "전체";
	aCbo.add(oOption);
	
	for (var i = 1; i < arrData.length; i++)
	{
		oOption = document.createElement("OPTION");
		arrTemp = arrData[i].split("\t");
		
		oOption.value = arrTemp[0];
		oOption.text = arrTemp[1];
		aCbo.add(oOption);
	}
}

// 해당 배열의 값으로 콤보박스 설정
function C_setArrayCombo(aCbo, aArr)
{
	var oOption = null;
	var arrTemp = null;
	
	C_intiCombo(aCbo);
	
	if (aArr == null || aArr.length < 1) return;
	
	for (var i = 0; i < aArr.length; i++)
	{
		oOption = document.createElement("OPTION");
		arrTemp = aArr[i].split("\t");
		
		oOption.value = arrTemp[0];
		oOption.text = arrTemp[1];
		aCbo.add(oOption);
	}
}

// 해당 배열의 값으로 콤보박스 설정(전체포함)
function C_setArrayComboAll(aCbo, aArr, asAllString)
{
	var oOption = null;
	var arrTemp = null;
	
	C_intiCombo(aCbo);
	
	oOption = document.createElement("OPTION");
	oOption.value = C_isNull(asAllString) ? "%" : asAllString;
	oOption.text = "전체";
	aCbo.add(oOption);
	
	if (aArr == null || aArr.length < 1) return;
	
	for (var i = 0; i < aArr.length; i++)
	{
		oOption = document.createElement("OPTION");
		arrTemp = aArr[i].split("\t");
		
		oOption.value = arrTemp[0];
		oOption.text = arrTemp[1];
		aCbo.add(oOption);
	}
}

// 항목을 추가한다.
function C_addComboItem(aCbo, aValue, aText)
{
	var oOption = null;
	var oNewOption = null;
	var isAdd = true;
	
	// 2009-03-05 강덕율 수정(전체를 사용할 때 % 대신 널(Null)을 사용하기 위해...)
	//if (aCbo == null || C_isNull(aValue) || C_isNull(aText)) return;
	if (aCbo == null) return;
	
	for (var i = 0; i < aCbo.options.length; i++)
	{
		oOption = aCbo.options(i);
		
		if (oOption.value == aValue) isAdd = false;
	}
	
	if (isAdd)
	{
		oNewOption = document.createElement("OPTION");
		
		oNewOption.value = aValue;
		oNewOption.text = aText;
		aCbo.add(oNewOption);
	}
}

/*-------------------- 탭페이지 관련 함수 --------------------*/
// 탭페이지 선택시 이미지 변환 함수
// index : 선택된 탭의 순번
// totcount : 전체 탭의 갯수
// 탭 좌측 이미지명 : imgTabLeft + 순번
// 탭 중앙 td명 : tab + 순번
// 탭 우측 이미지명 : imgTabRight + 순번
function C_selectTab(index, totcount)
{
	var tab = null;
	var imgTabLeft = null;
	var imgTabRight = null;
	
	try
	{
		for (var i = 1; i <= totcount; i++)
		{
			tab = eval("tab" + i);
			imgTabLeft = eval("imgTabLeft" + i);
			imgTabRight = eval("imgTabRight" + i);
			
			tab.background = "../commons/images/tab_bgimage.gif";
			imgTabLeft.src="../commons/images/tab_after.gif";
			imgTabRight.src="../commons/images/tab_back.gif";
		}
		
		tab = eval("tab" + index);
		imgTabLeft = eval("imgTabLeft" + index);
		imgTabRight = eval("imgTabRight" + index);
		
		tab.background = "../commons/images/tab_bgimage_r.gif";
		imgTabLeft.src="../commons/images/tab_after_r.gif";
		imgTabRight.src="../commons/images/tab_back_r.gif";
	}
	catch (ex)
	{
		C_msgOk("탭페이지 에러 : " + ex.message, "에러");
		return false;
	}
	
	return true;
}

// depth : img 파일의 경로. 값이 없을 경우 0이고, 0은 기본값으로 ../의 경로를 나타낸다.
function C_selectTab2(index, totcount, depth)
{
	var tab = null;
	var imgTabLeft = null;
	var imgTabRight = null;
	var path = "";
	
	try
	{
		if (C_isNull(depth))
		{
			depth = 0;
		}
		
		for (var i = 0; i <= depth; i++)
		{
			path = path + "../"; 
		}
	
		for (var i = 1; i <= totcount; i++)
		{
			tab = eval("tab" + i);
			imgTabLeft = eval("imgTabLeft" + i);
			imgTabRight = eval("imgTabRight" + i);
			
			tab.background =  "../commons/images/tab_bgimage.gif";
			imgTabLeft.src= "../commons/images/tab_after.gif";
			imgTabRight.src= "../commons/images/tab_back.gif";
		}
		
		tab = eval("tab" + index);
		imgTabLeft = eval("imgTabLeft" + index);
		imgTabRight = eval("imgTabRight" + index);
		
		tab.background = "../commons/images/tab_bgimage_r.gif";
		imgTabLeft.src= "../commons/images/tab_after_r.gif";
		imgTabRight.src= "../commons/images/tab_back_r.gif";
	}
	catch (ex)
	{
		C_msgOk("탭페이지 에러 : " + ex.message, "에러");
		return false;
	}
	
	return true;
}
/*-------------------- Dictionary 객체 --------------------*/
// 생성 : var lrDict = new C_Dictionary();
// 전체삭제 : lrDict.removeAll();
// 기타등등
function	C_Dictionary()
{
	this.List = new ActiveXObject("Scripting.Dictionary");
	this.set = C_dictSetMapElement;
	this.get = C_dictGetMapElement;
	this.remove = C_dictRemoveMapElement;
	this.count = C_dictCountMapElement;
	this.exists = C_dictExistsMapElement;
	this.keys = C_dictKeysMapElement;
	this.items = C_dictItemsMapElement;
	this.removeAll = C_dictRemoveAllMapElement;
}
function	C_dictRemoveAllMapElement()
{
	this.List.RemoveAll();
}
function	C_dictItemsMapElement()
{
	return (new VBArray(this.List.Items())).toArray();
}
function	C_dictKeysMapElement()
{
	return (new VBArray(this.List.Keys())).toArray();
}
function	C_dictExistsMapElement(asKey)
{
	return this.List.Exists(asKey);
}
function	C_dictCountMapElement()
{
	return this.List.Count;
}
function	C_dictSetMapElement(asKey,asValue)
{
	this.List.Item(asKey) = asValue;
}
function	C_dictGetMapElement(asKey)
{
	try
	{
		if(this.List.Exists(asKey))
		{
			return this.List.Item(asKey);
		}
		else
		{
			return undefined;
		}
	}
	catch(e)
	{
		return undefined;
	}
}
function	C_dictRemoveMapElement(asKey)
{
	try
	{
		this.List.Remove(asKey);
	}
	catch(e)
	{
	}
}


/*-------------------- 텍스트 박스에서 LOV 자동호출 함수 --------------------*/
function	C_AutoPopWhenChange(arDataSet,asLOVName,arTextControl,varName,abIfNullClear,abAutoRetrieve)
{
	this.Dataset = arDataSet;
	this.LOVName = asLOVName;
	this.VarName = varName;
	this.TextControl = arTextControl;
	this.OldValue = arTextControl.value;
	this.OldOnBlur = arTextControl.onblur;
	this.OldOnFocus = arTextControl.onfocus;
	this.NewOnBlur = C_autoPopOnBlur;
	this.NewOnFocus = C_autoPopOnFocus;
	arTextControl.attachEvent ("onblur", new Function("C_autoPopOnBlur("+arTextControl.id+"," + varName + ");"));
	arTextControl.attachEvent ("onfocus", new Function("C_autoPopOnFocus("+arTextControl.id+"," + varName + ");"));
	this.Args = new C_Dictionary();
	this.ArgInfo = new C_Dictionary();
	this.ReturnInfo = new C_Dictionary();
	this.SetArgBind = C_setArgBind;
	this.SetReturnBind = C_setReturnBind;
	this.SetArgConst = C_setArgConst;
	this.NullClear = abIfNullClear;
	if(abAutoRetrieve == null)
	{
		this.AutoRetrieve = 'F';
	}
	else if(abAutoRetrieve == true || abAutoRetrieve == 'T')
	{
		this.AutoRetrieve = 'T';
	}
	else
	{
		this.AutoRetrieve = 'F';
	}
	this.OldOnClick = null;
	this.NewOnClick = null;
	this.Button = null;
	this.AttachButton = C_autoPopAttachButton;
	this.SyncOldValue = C_syncOldValue;
	if(C_arrAutoChangeLovs == null ) C_arrAutoChangeLovs = new Array();
	C_arrAutoChangeLovs.push(this);
}
function	C_syncOldValue()
{
	this.OldValue = this.TextControl.value;
}
function	C_autoPopAttachButton(arButton)
{
	this.Button = arButton;
	this.OldOnClick = arButton.onclick;
	this.NewOnClick = C_popLov;
	arButton.attachEvent ("onclick", new Function("C_popLov("+this.VarName+");"));
}

function	C_popLov(objvar)
{
	var			arrKeys;
	var			arrItems;
	
	if(!C_raiseEvent_OnBeforeLov(objvar.TextControl, objvar.OldValue)) return;
	
	arrKeys = objvar.ArgInfo.keys();
	arrItems = objvar.ArgInfo.items();
	objvar.Args.removeAll();
	
	for (var i = 0; i < arrKeys.length; i++)
	{
		var		lrInfo = arrItems[i];
		
		if(lrInfo.IsConst)
		{
			objvar.Args.set(lrInfo.ArgName,lrInfo.RelControlAttr);
		}
		else
		{
			if(objvar.TextControl == lrInfo.RelControl)
			{
				objvar.Args.set(lrInfo.ArgName,"");
			}
			else
			{
				objvar.Args.set(lrInfo.ArgName,lrInfo.RelControl.getAttribute(lrInfo.RelControlAttr));
			}
		}
	}
	
	// 2009-03-10 강덕율 수정 검색버튼을 사용시 LOV의 자동읽기 기능을 따른다.
	//var		lrRet = C_LOV(objvar.LOVName,objvar.Args,objvar.AutoRetrieve);
	var		lrRet = C_LOV(objvar.LOVName,objvar.Args,"");
	
	if(lrRet == null)
	{
		C_raiseEvent_OnCancelLov(objvar.TextControl);
		return;
	}
	
	arrKeys = objvar.ReturnInfo.keys();
	arrItems = objvar.ReturnInfo.items();
	
	for (var i = 0; i < arrKeys.length; i++)
	{
		var		lrInfo = arrItems[i];
		lrInfo.RelControl.setAttribute(lrInfo.RelControlAttr,lrRet.get(lrInfo.ArgName));
	}
	C_raiseEvent_OnSuccessLov(objvar.TextControl);
}
function	C_AutoPopArgInfo(arControl,arControlAttribute,asArgName,abConst)
{
	this.RelControl = arControl;
	this.RelControlAttr = arControlAttribute;
	this.ArgName = asArgName;
	this.IsConst = abConst;
}

function	C_setArgConst(asArgName,asConst)
{
	this.ArgInfo.set(asArgName,new C_AutoPopArgInfo(null,asConst,asArgName,true));
}

function	C_setArgBind(asArgName,arControl,arControlAttribute)
{
	this.ArgInfo.set(asArgName,new C_AutoPopArgInfo(arControl,arControlAttribute,asArgName,false));
}

function	C_setReturnBind(asArgName,arControl,arControlAttribute)
{
	this.ReturnInfo.set(asArgName,new C_AutoPopArgInfo(arControl,arControlAttribute,asArgName,false));
}

function	C_autoPopOnFocus(objtarget,objvar)
{
	objvar.OldValue = objtarget.value;
}

function	C_raiseEvent_OnBeforeLov(objtarget, olddata)
{
	var ret = true;
	try
	{
		ret = OnBeforeLov(objtarget, olddata);
	}
	catch (e)
	{
		if (typeof(OnBeforeLov) == "function")
		{
			C_msgOk("OnBeforeLov 이벤트의 개발자 정의 함수 Call 에러 : " + e.message, "에러");
			return false
		}
	}
	
	// ret의 값이 false인 경우 LOV호출이 취소된다.
	if (ret == false) return false;
	
	return true;
}
function	C_raiseEvent_OnSuccessLov(objtarget)
{
	try
	{
		OnSuccessLov(objtarget);
	}
	catch (e)
	{
		if (typeof(OnSuccessLov) == "function")
		{
			C_msgOk("OnSuccessLov 이벤트의 개발자 정의 함수 Call 에러 : " + e.message, "에러");
		}
	}
}
function	C_raiseEvent_OnCancelLov(objtarget)
{
	try
	{
		OnCancelLov(objtarget);
	}
	catch (e)
	{
		if (typeof(OnCancelLov) == "function")
		{
			C_msgOk("OnSuccessLov 이벤트의 개발자 정의 함수 Call 에러 : " + e.message, "에러");
		}
	}
}

function	C_autoPopOnBlur(objtarget,objvar)
{
	var			strOldBack = objvar.OldValue;
	var			arrKeys;
	var			arrItems;
	
	if(!C_raiseEvent_OnBeforeLov(objtarget, strOldBack))
	{
		C_raiseEvent_OnCancelLov(objtarget);
		return;
	}
	
	if(objtarget.value == objvar.OldValue)
	{
		C_raiseEvent_OnCancelLov(objtarget);
		return;
	}
	
	if(C_isNull(objtarget.value) && objvar.NullClear)
	{
		arrKeys = objvar.ReturnInfo.keys();
		arrItems = objvar.ReturnInfo.items();
		
		for (var i = 0; i < arrKeys.length; i++)
		{
			var		lrInfo = arrItems[i];
			lrInfo.RelControl.setAttribute(lrInfo.RelControlAttr,"");
		}
		C_raiseEvent_OnSuccessLov(objtarget);
		return;
	}
	
	arrKeys = objvar.ArgInfo.keys();
	arrItems = objvar.ArgInfo.items();
	objvar.Args.removeAll();
	
	for (var i = 0; i < arrKeys.length; i++)
	{
		var		lrInfo = arrItems[i];
		
		if(lrInfo.IsConst)
		{
			objvar.Args.set(lrInfo.ArgName,lrInfo.RelControlAttr);
		}
		else
		{
			objvar.Args.set(lrInfo.ArgName,lrInfo.RelControl.getAttribute(lrInfo.RelControlAttr));
		}
	}
	
	var		lrRet = C_AutoLov(objvar.Dataset,objvar.LOVName,objvar.Args,objvar.AutoRetrieve);
	
	if(lrRet == null)
	{
		objtarget.value = strOldBack;
		objtarget.focus();
		C_raiseEvent_OnCancelLov(objtarget);
		return;
	}
	
	arrKeys = objvar.ReturnInfo.keys();
	arrItems = objvar.ReturnInfo.items();
	
	for (var i = 0; i < arrKeys.length; i++)
	{
		var		lrInfo = arrItems[i];
		lrInfo.RelControl.setAttribute(lrInfo.RelControlAttr,lrRet.get(lrInfo.ArgName));
	}
	C_raiseEvent_OnSuccessLov(objtarget);
	for (var i = 0; i < C_arrAutoChangeLovs.length; i++)
	{
		C_arrAutoChangeLovs[i].SyncOldValue();
	}
}

/*-------------------- Wait 프레임 함수 --------------------*/
function C_ShowWait(aShow)
{
	if (frmWait == null || frmWait == undefined)
	{
		// Wait 프레임 객체 생성
		var liWidth = document.body.scrollWidth;
		var liHeight = document.body.scrollHeight;
		
		//frmWait = document.createElement("<iframe id='frmWait' width='140' height='60' style='position:absolute; visibility:hidden' frameborder='0' tabindex='-1' scrolling='no'></iframe>");
		frmWait = document.createElement("<iframe id='frmWait' width='264' height='125' style='position:absolute; visibility:hidden' frameborder='0' tabindex='-1' scrolling='no'></iframe>");
		
		frmWait.src = WAIT_PAGE;
		frmWait.style.top = (liHeight / 2 - 30) + "px";
		frmWait.style.left = (liWidth / 2 - 70) + "px";
		
		document.body.insertBefore(frmWait);
	}
	
	frmWait.style.visibility = aShow == true ? "visible" : "hidden";
}
function	C_convSafeFloat(asData)
{
	try
	{
		var			lfRet = parseFloat(asData.toString().replace(/,/g,""));
		if(isNaN(lfRet)) return 0.0;
		return lfRet;
	}
	catch(e)
	{
		return 0.0;
	}
}
function	C_convSafeInt(asData)
{
	try
	{
		var			lfRet = parseInt(asData.toString().replace(/,/g,""));
		if(isNaN(lfRet)) return 0;
		return lfRet;
	}
	catch(e)
	{
		return 0;
	}
}
function	C_safeDivide(af1,af2)
{
	if(af2 == 0)
	{
		return 0;
	}
	else
	{
		return af1 / af2;
	}
}
function	C_Change(aObject)
{
	var strValue = aObject.value;
}
function	C_Round(arNumber,arDec)
{
	return Math.round(arNumber * Math.pow(10,(C_isNull(arDec)?0:arDec))) / Math.pow(10,(C_isNull(arDec)?0:arDec));
}
function	C_Floor(arNumber,arDec)
{
	return Math.floor(arNumber * Math.pow(10,(C_isNull(arDec)?0:arDec))) / Math.pow(10,(C_isNull(arDec)?0:arDec));
}
function	C_Ceil(arNumber,arDec)
{
	return Math.ceil(arNumber * Math.pow(10,(C_isNull(arDec)?0:arDec))) / Math.pow(10,(C_isNull(arDec)?0:arDec));
}
function	C_MoneyFloor(arNumber,arDec)
{
	return Math.floor(arNumber * Math.pow(10,(C_isNull(arDec)?0:arDec))) / Math.pow(10,(C_isNull(arDec)?0:arDec));
}
function C_SafeMultiplication(af1,af2)
{
	// 자바스크립트 곱셈오류대응 ex: 1027.87,32.3~43.3,64.6~86.6,1846.87 등의 숫자가 어떤숫자와 곱하여 질때 999999999999 
		var intNumber=af1;

		var dotPos = intNumber.toString().split(".");
		var dotU = Number(dotPos[0], 10).toString();
		var dotD = "0."+dotPos[1];
		if (dotPos.length==2)
		{
		varAMT = (dotU* af2 ) + (dotD * af2 );
		}
		else
		{
		varAMT = intNumber* af2 ;
		}
    return varAMT;

}

// --추가
function	C_ConvPY(asAREA,arDec)
{
	if (asAREA==0) return 0;
	if (C_isValidFormat(asAREA, /^(\d+).(\d+)$/))
	{
	return C_Round((asAREA / 3.3058),arDec);
	};
}

function	C_ConvCoverage(asA ,asB ,arDec)
{

	if (!C_isValidFormat(asB, /^(\d+).(\d+)$/)) return 0;
	if (!C_isValidFormat(asA, /^(\d+).(\d+)$/)) return 0;
	if ( asA == 0) return 0;
	return C_Round( (C_convSafeFloat(asB/asA) * 100 ),arDec);
}

function C_Move(dataset,SortId,aSign)
{
	var Crow =  dataset.RowPosition;
	var OrgValue = 	dataset.NameValue(dataset.RowPosition,SortId)
	if (aSign=="UP")	 dataset.NameValue(Crow,SortId) = dataset.NameValue(--Crow,SortId);
	if (aSign=="DOWN")	 dataset.NameValue(Crow,SortId) = dataset.NameValue(++Crow,SortId);
	dataset.NameValue(Crow,SortId) = OrgValue;
	dataset.SortExpr = "+"+SortId;
	dataset.Sort();
	return true;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//input text box 에 마스크 기능을 추가를 위한 정의
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var dFilterStep

function dFilterStrip (dFilterTemp, dFilterMask)
{
    dFilterMask = replace(dFilterMask,'#','');
    for (dFilterStep = 0; dFilterStep < dFilterMask.length++; dFilterStep++)
		{
		    dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
		}
		return dFilterTemp;
}

function dFilterMax (dFilterMask)
{
 		dFilterTemp = dFilterMask;
    for (dFilterStep = 0; dFilterStep < (dFilterMask.length+1); dFilterStep++)
		{
		 		if (dFilterMask.charAt(dFilterStep)!='#')
				{
		        dFilterTemp = replace(dFilterTemp,dFilterMask.charAt(dFilterStep),'');
				}
		}
		return dFilterTemp.length;
}

function dFilter (key, textbox, dFilterMask)
{
		dFilterNum = dFilterStrip(textbox.value, dFilterMask);
		
		if (key==9)
		{
		    return true;
		}
		else if (key==8&&dFilterNum.length!=0)
		{
		 	 	dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
		}
 	  else if ( ((key>47&&key<58)||(key>95&&key<106)) && dFilterNum.length<dFilterMax(dFilterMask) )
		{
        dFilterNum=dFilterNum+String.fromCharCode(key);
		}

		var dFilterFinal='';
    for (dFilterStep = 0; dFilterStep < dFilterMask.length; dFilterStep++)
		{
        if (dFilterMask.charAt(dFilterStep)=='#')
				{
					  if (dFilterNum.length!=0)
					  {
				        dFilterFinal = dFilterFinal + dFilterNum.charAt(0);
					      dFilterNum = dFilterNum.substring(1,dFilterNum.length);
					  }
				    else
				    {
				        dFilterFinal = dFilterFinal + "";
				    }
				}
		 		else if (dFilterMask.charAt(dFilterStep)!='#')
				{
				    dFilterFinal = dFilterFinal + dFilterMask.charAt(dFilterStep); 			
				}
//		    dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
		}


		textbox.value = dFilterFinal;
    return false;
}

function replace(fullString,text,by) {
// Replaces text with by in string
    var strLength = fullString.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return fullString;

    var i = fullString.indexOf(text);
    if ((!i) && (text != fullString.substring(0,txtLength))) return fullString;
    if (i == -1) return fullString;

    var newstr = fullString.substring(0,i) + by;

    if (i+txtLength < strLength)
        newstr += replace(fullString.substring(i+txtLength,strLength),text,by);

    return newstr;
}

function checkViewDate(sdate, edate, msg)
{
	if (sdate != null && edate != null) {
		if (msg == null) msg = "";

        if (C_isNull(sdate.value) || C_isNull(edate.value))
        {
            C_msgOk(msg + "일자를 입력하세요.");
            return false;
        }
        
        if (C_removeDateTimeFormat(sdate.value) > C_removeDateTimeFormat(edate.value))
        {
            C_msgOk(msg + "시작일자가 종료일자 보다 큽니다.");
            return false;
        }
	}
	else if (sdate != null && edate == null) {
        if (msg == null) msg = "";

        if (C_isNull(sdate.value))
        {
            C_msgOk(msg + "일자를 입력하세요.");
            return false;
        }
	}
	else {
		try {
            if (C_isNull(txtSdate.value)) {
                C_msgOk("조회일자를 입력하세요.");
                return false;
            }
		}
		catch (e) {
			
		}
        try {
            if (C_isNull(txtEdate.value)) {
                C_msgOk("조회일자를 입력하세요.");
                return false;
            }
        }
        catch (e) {
            
        }
        
        try {
	        if (C_removeDateTimeFormat(txtSdate.value) > C_removeDateTimeFormat(txtEdate.value))
	        {
	            C_msgOk("조회 시작일자가 종료일자 보다 큽니다.");
	            return false;
	        }
        }
        catch (e) {
            
        }
	}
	
    return true;
}

//xml객체생성
function C_getObjXMLHTTP(){
	var xmlhttp = false;

	if(window.ActiveXObject){
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e2) {
				xmlhttp = false;
			}
		}
	}else if(window.XMLHttpRequest){
		xmlhttp = new XMLHttpRequest();
	}else{
		xmlhttp = false;
	}

	return xmlhttp;
}

//로그저장처리
function C_getObjAJAX(){

	this.send = function(callbackFunc){
		var objXMLHTTP = C_getObjXMLHTTP();
		
		//http 호출 방법 결정 생략시에는 GET 으로 동작
		this.method = (this.method == undefined)? "GET" : this.method.toUpperCase();

		//전달하고자 하는 인자값에 대한 처리
		if(typeof this.queryString == "undefined") this.queryString = null;

		//GET 방식일 경우는 url 뒤에 파라메터로 값을 넘기도록 처리
		//send 시에는 null 값만 호출
		if(this.method == "GET" && !!(this.queryString)){
			this.url += ((this.url.indexOf("?") > 0)? "" : "?") + this.queryString;
			this.queryString = null;
		}
				
		//XMLHTTP 요청의 상태가 변경되면 아래 함수를 호출함
		objXMLHTTP.onreadystatechange = function(){
			if (objXMLHTTP.readyState != 4) {
				//요청이 대기중일 경우의 처리
			}else{
				//모든 응답이 완료되었을때의 xml 결과를
				//콜백 함수의 인자로 호출
				if (objXMLHTTP.status == 200) {
					callbackFunc(objXMLHTTP);
					return true;
					delete ojbXMLHTTP;
				}
				else
				{
					callbackFunc(objXMLHTTP);
				}
			}
		}

		//open 매소드 호출, http 인증 부분은 생략하였음
		objXMLHTTP.open(this.method, this.url, true);
		//alert("url:->"+this.url);		
		//alert("queryString:->"+this.queryString);
		objXMLHTTP.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
		//objXMLHTTP.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=euc-kr');

		objXMLHTTP.send(this.queryString);
	}
}


//로그저장함수
function C_setButtonLog(asBtn,asSystemNo,asMenuNo)
{
	/*
	var strQuery = "";
    var objAJAX = new C_getObjAJAX();
    objAJAX.url = "/DCCO/dccoportal/WIPTButtonLogRegister.jsp";
	strQuery +=  "ACT=LOG";
	strQuery +=  "&pBtnType="+asBtn;
	strQuery +=  "&pSystemNo="+asSystemNo;	
	strQuery +=  "&pMenuNo="+asMenuNo;
    objAJAX.queryString = strQuery;
    objAJAX.method = "GET";	
	objAJAX.send(C_callBack);
	*/	
}

function C_callBack(responseAJAX)
{
	return;
}

//
function notice_getCookie(name)
{
	var nameOfCookie = name + "=";
	var x = 0;
	
	while(x <= document.cookie.length)
	{
		var y = (x+nameOfCookie.length);
		
		if(document.cookie.substring( x, y ) == nameOfCookie)
		{
			if((endOfCookie=document.cookie.indexOf(";", y)) == -1)
				endOfCookie = document.cookie.length;
				return unescape( document.cookie.substring(y, endOfCookie));
		}
		x = document.cookie.indexOf( " ", x ) + 1;
		
		if(x == 0)
		break;
	}
	return "";
}

// 
function popUp(width,height,URL,scroll)
{
	var path = URL;
	var popup = null;
	var w = width;
	var h = height;
	var s = scroll;
	if(scroll == null)
		s = 'no';
	popup = window.open( path , w + h , 'width=' + w + ',height=' + h +',scrollbars=' + s + ',toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no' );
 	popup.moveTo((screen.availWidth-w)/2,(screen.availHeight-h)/2) // 
 	popup.focus();
}

//
function bluring()
{ 
	if(event.srcElement.tagName=="A"||event.srcElement.tagName=="IMG") document.body.focus(); 
} 
document.onfocusin=bluring;

function swf(src,w,h){
	html = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="'+w+'" height="'+h+'">';
	html += '	<param name="movie" value="'+src+'">';
	html += '<param name="quality" value="high">';
	html += '<param name="wmode" value="transparent">';
	html += '<param name="menu" value="false">';
	html += '<embed src="'+src+'" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'+w+'" height="'+h+'"><\/embed>';
	html += '<\/object>';
	document.write(html);
}

function trim(str) {
    return str.replace(/(^\s*)|(\s*$)/g, "");
}

/**
 * available number(0~9)
 * OnKeyPress="numericOnly();" style="ime-mode:disabled" add
 */
function numericOnly(func) {
	if(event.keyCode == 13 && numericOnly.arguments.length > 0) {
		eval(func);
		return;
	}
	if((event.keyCode < 48) || (event.keyCode > 57)) {
    	event.returnValue = false;
	}
}

// OnKeyPress="handleEnter(functionName);" 
function handleEnter(func) {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
    
    if (keyCode == 13) {
		eval(func);
		event.returnValue = false;
	}
}

function popURI(contextURI,name,width,height,scrollbars) {
    var x, y, hwin;
    x=(screen.width-width)/2;
    y=(screen.height-height)/2;
	if(contextURI != null && contextURI != "") {
		hwin = window.open(contextURI,name,'width='+width+',height='+height+',menubar=no,toolbar=no,location=no,directories=no,resizable=no,status=no,left=' + x + ',top=' + y + ',scrollbars='+scrollbars+',titlebar=no');
		hwin.focus();
	}
}

function js_LFrmSubmit(frm, fileName)
{
    frm.action = fileName;
    frm.target = '_self';
    frm.submit();
}

function viewArchiveEventOrigin(archiveEventId)
{
    document.getElementById("viewHiddenFrame").src="/next/common/viewOrigin.do?archiveEventId=" + archiveEventId;
}

function viewArchiveOrigin(archiveId)
{
    document.getElementById("viewHiddenFrame").src="/next/common/viewOrigin.do?archiveId=" + archiveId;
}

function popZipcode(zipNm, addrNm, addrNm2) {
	var url ="/common/zipcodeSearch.do?zipName="+zipNm+"&addrName="+addrNm+"&addrName2="+addrNm2;
	C_openWindow(url, "zipcodeSearch", 455, 570);
}

//textarea 크기 자동조절
//사용예 : onload시 또는 그리드 클릭시 - f_autosize(document.all.PROD_OUTLN.scrollHeight,document.all.PROD_OUTLN);
//       해당 textarea - <textarea name="textarea" style="height:50px" id="PROD_CAPA" maxLength="1300" onkeyup="f_autosize(this.scrollHeight,this);msgByteLength('PROD_CAPA','txt_stats_byte2')" />
function f_autosize(s,obj) {
    var m=50; //textarea 높이

    if ( s >= m ) {
        obj.style.pixelHeight = obj.scrollHeight+20;		// 해당 텍스트필드의 높이를 동적으로 받아오게 수정
    } else {
        obj.style.pixelHeight = m;
    }
}

function openWin(url, wname, wopt) {
	var newopt = "", wHeight = 0, wWidth = 0;
	if (wopt != "") {
		var woptlist = wopt.replace(/ /g, "").split(",");
		for (var i in woptlist) {
			if (woptlist[i].match(/^height=/i)) {
				wHeight = parseInt(woptlist[i].substr(7), 10);
				wHeight += 35;
				if (!isNaN(wHeight)) newopt += "top=" + Math.floor((screen.availHeight - wHeight) / 2) + ",";
			}
			if (woptlist[i].match(/^width=/i)) {
				wWidth = parseInt(woptlist[i].substr(6), 10);
				wWidth += 10;
				if (!isNaN(wWidth)) newopt += "left=" + Math.floor((screen.availWidth - wWidth) / 2) + ",";
			}
		}
	}
	window.open(url, wname, newopt + wopt);
}




