﻿/***********************************************************************************
* Copyright (주)블루블랙 from 2008.02.28 (simplicy@hanmail.net)
************************************************************************************
* ● 프로젝트 : GBS
* ○ 파일     : global.js (공통 javascript)
* ○ 생성     : 2008.10.31(금요일) 박찬원
* ○ 최종변경 : 2009.06.23(화요일) 박찬원
***********************************************************************************/

// 브라우져 체크
var isIE = (navigator.userAgent.indexOf("MSIE") != -1);
var isFirefox = (navigator.userAgent.indexOf("Firefox") != -1);
var isChrome = (navigator.userAgent.indexOf("Chrome") != -1);
var isOpera = (navigator.appName == "Opera");
var isSafari = (navigator.userAgent.indexOf("Safari") != -1);

/***********************************************************************************
* 1-1. 사용자 로그인 관련 JavaScript
***********************************************************************************/

var xmlHttpUserLogin; // xmlHttpUserLogin Request
var USER_LOGIN_CLICK_YN = false;

// 관리자 로그인 체크
function checkUserLogin(p_ForwardURL) {
	var obj;
	
	if (USER_LOGIN_CLICK_YN == false) {
		USER_LOGIN_CLICK_YN = true;
		
		obj = document.getElementById("UserID");
		obj.value = obj.value.trim();
		if (obj.value == "") { // 아이디 입력 안됐을때
			USER_LOGIN_CLICK_YN = false;
			alert("아이디를 입력해 주세요.");
			obj.focus();
			try {hideSearchFlash();} catch (e) {}
			return false;
		}
		
		obj = document.getElementById("UserPW");
		obj.value = obj.value.trim();
		if (obj.value == "") { // 비번 입력 안됐을때
			USER_LOGIN_CLICK_YN = false;
			alert("비밀번호를 입력해 주세요.");
			obj.focus();
			try {hideSearchFlash();} catch (e) {}
			return false;
		}
		
		loginUser(p_ForwardURL); // 로그인 하기
		
	} else {
		alert("로그인 중입니다...");
	}
}

// 사용자 로그인하기 (★Ajax 작동★ 시작)
function loginUser(p_ForwardURL) {
	var strURL;
	var strSend;
	
	strURL = "user_login.jsp";
	strSend = "UserID=" + document.getElementById("UserID").value
		+ "&UserPW=" + document.getElementById("UserPW").value;
	
	if (document.getElementById("SaveID")) {
		strSend += "&SaveID=" + document.getElementById("SaveID").value;
	}
	if (document.getElementById("SavePW")) {
		strSend += "&SavePW=" + document.getElementById("SavePW").value;
	}
	if (p_ForwardURL) {
		strSend += "&ForwardURL=" + p_ForwardURL;
	}
	
	if (window.XMLHttpRequest) { // 파이어폭스라면
		xmlHttpUserLogin = new XMLHttpRequest();
	} else { // 윈도우 계열이라면
		xmlHttpUserLogin = new ActiveXObject("Microsoft.xmlHttp");
	}
	xmlHttpUserLogin.open("POST", strURL, true);
	xmlHttpUserLogin.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlHttpUserLogin.onreadystatechange = callbackUserLogin;
	xmlHttpUserLogin.send(strSend);
}

// 사용자 로그인 (콜백 함수)
function callbackUserLogin() { 
	if (xmlHttpUserLogin.readyState == 4) {
		if (xmlHttpUserLogin.status == 200) {
			parseAndUserLogin(xmlHttpUserLogin.responseText);
		} else { // 예외처리
			USER_LOGIN_CLICK_YN = false;
			try {hideSearchFlash();} catch (e) {}
			alert("사용자 로그인 처리 에러 : " + xmlHttpUserLogin.status);
		}
	}
}

// 사용자 로그인 화면처리함수 (콜백 함수 - 처리)
function parseAndUserLogin(p_data) {
	eval("var result = " + p_data);
	if (result.state == "Y") { // 로그인 했다면
		
		if (result.ForwardURL != "") {
			location.replace(result.ForwardURL);
			
		} else {
			/*
			if (opener) {
				//opener.location.reload(true);
				opener.location.replace(result.BeforeURL);
				window.close();
			} else {
				//location.reload(true);
				location.replace(result.BeforeURL);
			}
			*/
			location.replace(result.BeforeURL);
		}
		
	} else if (result.state == "I") { // ID가 틀렸다면
		USER_LOGIN_CLICK_YN = false;
		alert("등록되지 않은 아이디 입니다.");
		document.getElementById("UserID").select();
		document.getElementById("UserID").focus();
		try {hideSearchFlash();} catch (e) {}
		
	} else if (result.state == "P") { // 비번이 틀렸다면
		USER_LOGIN_CLICK_YN = false;
		alert("비밀번호가 틀렸습니다.");
		document.getElementById("UserPW").select();
		document.getElementById("UserPW").focus();
		try {hideSearchFlash();} catch (e) {}
		
	} else if (result.state == "O") { // 탈퇴자라면
		USER_LOGIN_CLICK_YN = false;
		alert("이용할 수 없는 아이디 입니다.");
		/*
		if (opener) {
			opener.location.replace("index.jsp");
			window.close();
		} else {
			location.replace("index.jsp");
		}
		*/
		location.replace("index.jsp");
		
	} else if (result.state == "C") { // 컨펌안됐다면
		USER_LOGIN_CLICK_YN = false;
		alert("승인대기 중인 아이디 입니다.");
		/*
		if (opener) {
			opener.location.replace("index.jsp");
			window.close();
		} else {
			location.replace("index.jsp");
		}
		*/
		location.replace("index.jsp");
		
	}  else if (result.state == "A") { // 관리자로 접속 안했다면
		USER_LOGIN_CLICK_YN = false;
		alert("현재 아이디는 관리자 권한이 없습니다.");
		document.getElementById("UserID").select();
		document.getElementById("UserID").focus();
		try {hideSearchFlash();} catch (e) {}
		
	} else { // 오류라면
		USER_LOGIN_CLICK_YN = false;
		alert("로그인 과정중 오류가 발생하였습니다.");
		try {hideSearchFlash();} catch (e) {}
	}
}

/***********************************************************************************
* 1-2. 사용자 로그아웃 관련 JavaScript
***********************************************************************************/

var xmlHttpUserLogout; // xmlHttpUserLogout Request

// 사용자 로그아웃 하기 (★Ajax 작동★ 시작)
function checkUserLogout() {
	var strURL;
	var strSend;
	
	strURL = "user_logout.jsp";
	strSend = "";
	
	if (window.XMLHttpRequest) { // 파이어폭스라면
		xmlHttpUserLogout = new XMLHttpRequest();
	} else { // 윈도우 계열이라면
		xmlHttpUserLogout = new ActiveXObject("Microsoft.xmlHttp");
	}
	xmlHttpUserLogout.open("POST", strURL, true);
	xmlHttpUserLogout.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlHttpUserLogout.onreadystatechange = callbackUserLogout;
	xmlHttpUserLogout.send(strSend);
}

// 사용자 로그아웃 (콜백 함수)
function callbackUserLogout() { 
	if (xmlHttpUserLogout.readyState == 4) {
		if (xmlHttpUserLogout.status == 200) {
			parseAndUserLogout(xmlHttpUserLogout.responseText);
		} // 예외처리
	}
}

// 사용자 로그아웃 화면처리함수 (콜백 함수 - 처리)
function parseAndUserLogout(p_data) {
	eval("var logout = " + p_data);
	
	location.replace(logout.BeforeURL);
}



/***********************************************************************************
* 3-1. POS 로그인 관련 JavaScript
***********************************************************************************/

var xmlHttpPosLogin; // xmlHttpStaffLogin Request

// POS 로그인 체크
function checkPosLogin(p_ForwardURL) {
	var obj;
	
	obj = document.getElementById("StaffNO");
	obj.value = obj.value.trim();
	if (obj.value == "") { // 직원번호 입력 안됐을때
		alert("직원번호를 입력해 주세요.");
		obj.focus();
		return false;
	} 

	obj = document.getElementById("StaffPW");
	obj.value = obj.value.trim();
	if (obj.value == "") { // 비번 입력 안됐을때
		alert("비밀번호를 입력해 주세요.");
		obj.focus();
		return false;
	}
	
	if (document.getElementById('flaProcessing')) {
		document.getElementById('flaProcessing').style.display='';
	}
	
	loginPos(p_ForwardURL); // 로그인 하기
}

// POS 로그인하기 (★Ajax 작동★ 시작)
function loginPos(p_ForwardURL) {
	var strURL;
	var strSend;
	
	strURL = "pos_login.jsp";
	strSend = "StaffNO=" + document.getElementById("StaffNO").value
		+ "&StaffPW=" + document.getElementById("StaffPW").value;
	
	if (p_ForwardURL) {
		strSend += "&ForwardURL=" + p_ForwardURL;
	}
		
	if (window.XMLHttpRequest) { // 파이어폭스라면
		xmlHttpPosLogin = new XMLHttpRequest();
	} else { // 윈도우 계열이라면
		xmlHttpPosLogin = new ActiveXObject("Microsoft.xmlHttp");
	}
	xmlHttpPosLogin.open("POST", strURL, true);
	xmlHttpPosLogin.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlHttpPosLogin.onreadystatechange = callbackPosLogin;
	xmlHttpPosLogin.send(strSend);
}

// POS 로그인 (콜백 함수)
function callbackPosLogin() { 
	if (xmlHttpPosLogin.readyState == 4) {
		if (xmlHttpPosLogin.status == 200) {
			parseAndPosLogin(xmlHttpPosLogin.responseText);
		} else { // 예외처리
			alert("POS 로그인 처리 에러 : " + xmlHttpPosLogin.status);
		}
	}
}

// POS 로그인 화면처리함수 (콜백 함수 - 처리)
function parseAndPosLogin(p_data) {
	eval("var result = " + p_data);
	
	if (result.state == "Y") { // 로그인 했다면
		if (result.ForwardURL != "") {
			location.replace(result.ForwardURL);
			
		} else {
			/*
			if (opener) {
				//opener.location.reload(true);
				opener.location.replace(result.BeforeURL);
				window.close();
			} else {
				//location.reload(true);
				location.replace(result.BeforeURL);
			}
			*/
			location.replace(result.BeforeURL);
		}
		
	} else if (result.state == "I") { // ID가 틀렸다면
		alert("등록되지 않은 직원입니다.");
		document.getElementById("StaffNO").select();
		document.getElementById("StaffNO").focus();

	} else if (result.state == "P") { // 비번이 틀렸다면
		alert("비밀번호가 틀렸습니다.");
		document.getElementById("StaffPW").select();
		document.getElementById("StaffPW").focus();		
	 
	} else { // 오류라면
		alert("로그인 과정중 오류가 발생하였습니다.");
	}
	
	if (document.getElementById('flaProcessing')) {
		document.getElementById('flaProcessing').style.display='none';
	}
}

/***********************************************************************************
* 3-2. POS 로그아웃 관련 JavaScript
***********************************************************************************/

var xmlHttpPosLogout; // xmlHttpLogout Request

// POS 로그아웃 하기 (★Ajax 작동★ 시작)
function checkPosLogout() {
	var strURL;
	var strSend;
	
	strURL = "pos_logout.jsp";
	strSend = "";
	
	if (window.XMLHttpRequest) { // 파이어폭스라면
		xmlHttpPosLogout = new XMLHttpRequest();
	} else { // 윈도우 계열이라면
		xmlHttpPosLogout = new ActiveXObject("Microsoft.xmlHttp");
	}
	xmlHttpPosLogout.open("POST", strURL, true);
	xmlHttpPosLogout.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlHttpPosLogout.onreadystatechange = callbackPosLogout;
	xmlHttpPosLogout.send(strSend);
}

// POS 로그아웃 (콜백 함수)
function callbackPosLogout() { 
	if (xmlHttpPosLogout.readyState == 4) {
		if (xmlHttpPosLogout.status == 200) {
			parseAndPosLogout(xmlHttpPosLogout.responseText);
		} // 예외처리
	}
}

// POS 로그아웃 화면처리함수 (콜백 함수 - 처리)
function parseAndPosLogout(p_data) {
	eval("var logout = " + p_data);
	
	location.replace("index.jsp");
}


/***********************************************************************************
* 4. 로그인 기타 관련 JavaScript
***********************************************************************************/

// 아이디 저장 클릭
function clickSaveID(p_Name)
{
	var obj;
	obj = document.getElementById(p_Name);
	
	if (obj.checked == true) // 자동 저장 한다면
	{
		obj.value = '1';
	} else { // 자동 저장 No한다면
		obj.value = '0';
	}
}

// PW 저장 클릭
function clickSavePW(p_Name)
{
	var obj;
	obj = document.getElementById(p_Name);
	
	if (obj.checked == true) // 자동 저장 한다면
	{
		obj.value = '1';
	} else { // 자동 저장 No한다면
		obj.value = '0';
	}
}

// 로그인해주세요
function loginPlease() {
	alert("로그인을 하셔야 합니다.");
	//location.href="index.jsp";
	//openPopupLogin();
}


/***********************************************************************************
* 5. 서브메뉴 관련 JavaScript
***********************************************************************************/

// 서브메뉴 변경
function changeSubMenu(p_TopMenuCD)
{
	var i;
	var divControls = document.getElementsByTagName("div");
	
	for (i = 0; i < divControls.length; i++) {
		if (divControls[i].id.substring(0,10) == "divSubMenu") { // 서브메뉴라면
			divControls[i].style.display = "none"; // 모두 안보이게
		}
	}
	
	if (p_TopMenuCD > 0) { // 메뉴코드가 들어왔다면
		document.getElementById("divSubMenu" + p_TopMenuCD).style.display = "block";
	}
}

/***********************************************************************************
* 6. 게시판 관련 JavaScript
***********************************************************************************/

// 글쓰기 못하기
function banWriteBoard() {
	alert("회원님의 등급으로는 쓰실 수 없습니다.");
}

// 읽기 못하기
function banReadBoard() {
	alert("회원님의 등급으로는 볼 수 없습니다.");
}

// 게시판 이미지 바꾸기
function changeBoardImage(p_id, p_file, p_href, p_width, p_height){
	var strHTML;
	if (p_file == "") {
		p_file = "/image/board/noimage.gif"
	}
	
	strHTML = "\n<img src='" + p_file + "' border=0 height=" + p_height + " width=" + p_width + " onclick=" + '"' + "location.href ='" + p_href + "'" + '"' + " style='cursor:pointer' />\n";
	document.getElementById(p_id).innerHTML = strHTML;
}

/***********************************************************************************
* 7. 검색 관련 JavaScript
***********************************************************************************/

// 상단 메뉴에서 검색 클릭했을때
function clickMenuSearch(p_URL, p_txtSearch, p_cboSearch) {
	var strURL;
	var objTextSearch;
	var objComboSearch;
	
	objTextSearch = document.getElementById(p_txtSearch);
	objTextSearch.value = objTextSearch.value.trim();
	if (objTextSearch.value == "") {
		alert("검색어를 입력해주세요.");
		objTextSearch.focus();
		
	} else {
		objComboSearch = document.getElementById(p_cboSearch);
		strURL = p_URL + "?MenuCD=" + objComboSearch.value + "&Find=" + encodeURIComponent(objTextSearch.value);
		location.replace(strURL);
	}
}

/***********************************************************************************
* 8. 방문회수 관련 JavaScript
***********************************************************************************/

var xmlHttpVisitIncrease;

// 방문 카운트늘리기 (★Ajax 작동★ 시작)
function visitIncrease() { 
	var strURL;
	var strSend;

	strURL = "visit_increase.jsp";
	strSend = "";
	
	if (window.XMLHttpRequest) { // 파이어폭스라면
		xmlHttpVisitIncrease = new XMLHttpRequest();
	} else { // 윈도우 계열이라면
		xmlHttpVisitIncrease = new ActiveXObject("Microsoft.xmlHttp");
	}
	xmlHttpVisitIncrease.open("POST", strURL, true);
	xmlHttpVisitIncrease.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlHttpVisitIncrease.onreadystatechange = callbackVisitIncrease;
	xmlHttpVisitIncrease.send(strSend);
}

// 방문 카운트늘리기 (콜백 함수)
function callbackVisitIncrease() { 
	if (xmlHttpVisitIncrease.readyState == 4) {
		if (xmlHttpVisitIncrease.status == 200) {
			xmlHttpVisitIncrease = null;
		} // 예외처리
	}
}

/***********************************************************************************
* 9. 쪽지 관련 JavaScript
***********************************************************************************/

var xmlHttp_Memo_Read; // xmlHttp_Memo_Readt Request
		
		// 쪽지 읽기 (★Ajax 작동★ 시작)
		function readMemo(p_send_dt, p_send_seq, p_obj_read_dt, p_obj_read_yn) { 
			var strURL;
			var strSend;
			
			strURL = "memo_read.jsp";
			strSend = "send_dt=" + p_send_dt;
			strSend += "&send_seq=" + p_send_seq;
			strSend += "&user_id=" + strUser_id;
			strSend += "&obj_read_dt=" + p_obj_read_dt;
			strSend += "&obj_read_yn=" + p_obj_read_yn;
			
			if (window.XMLHttpRequest) { // 파이어폭스라면
				xmlHttp_Memo_Read = new XMLHttpRequest();
			} else { // 윈도우 계열이라면
				xmlHttp_Memo_Read = new ActiveXObject("Microsoft.xmlHttp");
			}
			xmlHttp_Memo_Read.open("POST", strURL, true);
			xmlHttp_Memo_Read.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlHttp_Memo_Read.onreadystatechange = callbackMemo_Read;
			xmlHttp_Memo_Read.send(strSend);
		}
		
		// 쪽지 읽기 (콜백 함수)
		function callbackMemo_Read() { 
			if (xmlHttp_Memo_Read.readyState == 4) {
				if (xmlHttp_Memo_Read.status == 200) {
					parseAndMemo_Read(xmlHttp_Memo_Read.responseText);
					xmlHttp_Memo_Read = null;
				} // 예외처리
			}
		}
		
		// 쪽지 추가 콜백되서 왔다면~ 화면에 설정
		function parseAndMemo_Read(p_data) { 
			eval("var memo = " + p_data);
			
			if (memo.Read_YN == "L") { // 로그인 안했다면
				login_plz();
				
			} else if (memo.Read_YN == "Y") { // 읽었다면
				document.getElementById(memo.obj_read_dt).innerHTML = memo.Read_DT;
				document.getElementById(memo.obj_read_yn).innerHTML = "Y";
				
			} else { // 읽기 안되었다면
				alert("쪽지 읽기 처리에 실패하였습니다.");
			}
		}

// 회원 쪽지/메일 보내기 창 열기
function showUser_Box(p_From_user_id, p_From_user_nick_name, p_To_user_id, p_To_user_nick_name, p_event){
	var obj;
	var fsendMemo, fsendMail;
	
	var x = (p_event.pageX) ? p_event.pageX : document.body.scrollLeft + event.clientX;
	var y = (p_event.pageY) ? p_event.pageY : document.body.scrollTop + event.clientY;	
	obj = document.getElementById('div_msg_send');
	
	if ((x == mouseX && y == mouseY) && (obj.style.display=="block")) {
		obj.style.display = 'none';
	} else {
		obj.style.left= (x + 5) + 'px';
		obj.style.top= (y - 10) + 'px';
		
	   	document.getElementById('li_memo_send').onclick = function() { sendMemo(p_From_user_id, p_From_user_nick_name, p_To_user_id, p_To_user_nick_name); }
	   	document.getElementById('li_mail_send').onclick = function() { sendMail(p_From_user_id, p_From_user_nick_name, p_To_user_id, p_To_user_nick_name); }
		
		obj.style.display="block";
	
		mouseX = x;
		mouseY = y;
	}
}

// 회원 쪽지,메일 보내기 창 닫기
function closeUser_Box(p_event){
	var x = (p_event.pageX) ? p_event.pageX : document.body.scrollLeft+event.clientX;
	var y = (p_event.pageY) ? p_event.pageY : document.body.scrollTop+event.clientY;
	
	if (x != mouseX || y != mouseY) {
		var obj = document.getElementById('div_msg_send');
		obj.style.display = 'none';
	}
}

/***********************************************************************************
* 10. 달력 관련 JavaScript
***********************************************************************************/

var selectYear, selectMonth, selectDate; // 선택된 년월일 전역변수

function setCalandar(p_CalendarObjName, p_InputObjName, p_Year, p_Month, p_Date) {
	var i;
	var tempDate = new Date();
	var todayDate = new Date();
	
	var prevYear, prevMonth, nextYear, nextMonth;
	var strHTML = "";
	
	// 설정된 년월일 설정
	var paramYear, paramMonth, paramDate;
	if (p_Year == null) { // 년 안들어왔으면 오늘 년으로
		paramYear = todayDate.getFullYear();
	} else {
		paramYear = parseInt(p_Year);
	}
	if (p_Month == null) { // 월 안들어왔으면 오늘 월로
		paramMonth = todayDate.getMonth() + 1;
	} else {
		paramMonth = parseInt(p_Month);
	}
	if (p_Date == null) { // 일 안들어왔으면 0
		paramDate = 0;
	} else {
		paramDate = parseInt(p_Date);
	}
	
	// 설정된 년월 세팅 (날짜는 1일로 고정)
	tempDate.setFullYear(paramYear);
	tempDate.setMonth(paramMonth - 1);
	tempDate.setDate(1);
	var intLastDate = lastDateInMonth(paramYear, paramMonth); // 설정된 년월의 마지막날 
	
	// 이전 년월 설정
	if (paramMonth > 1) {
		prevYear = paramYear;
		prevMonth = paramMonth - 1;
	} else {
		prevYear = paramYear - 1;
		prevMonth = 12;
	}
	
	// 다음 년월 설정
	if (paramMonth < 12) {
		nextYear = paramYear;
		nextMonth = paramMonth + 1;
	} else {
		nextYear = paramYear + 1;
		nextMonth = 1;
	}
	
	strHTML += "<div id=\"_calendar_\" class='_calendar_'>";

	// ◀ 년 월 ▶
	strHTML += "<ul>"
			+ "		<li class=\"title\">"
			+ "			<a href=\"javascript:setCalandar('" + p_CalendarObjName + "','" + p_InputObjName + "'," + prevYear + "," + prevMonth + ")\"><font class=\"prev\">◀</font></a> "
						+ paramYear + "년 " + paramMonth + "월 "
						+ "<a href=\"javascript:setCalandar('" + p_CalendarObjName + "','" + p_InputObjName + "'," + nextYear + "," + nextMonth + ")\"><font class=\"next\">▶</font></a>"
			+ "		</li>"
			+ "	</ul>";
	
	// 일 월 화 수 목 금 토
	strHTML += "<ul>"
			+ "		<li class=\"week_sunday\">일</li>"
			+ "		<li class=\"week\">월</li>"
			+ "		<li class=\"week\">화</li>"
			+ "		<li class=\"week\">수</li>"
			+ "		<li class=\"week\">목</li>"
			+ "		<li class=\"week\">금</li>"
			+ "		<li class=\"week_saturday\">토</li>"
			+ "	</ul>";
	
	// 첫날이 일요일이 아니라면 첫날까지 공백추가
	if (tempDate.getDay() != 0) {
		strHTML += "<ul>";
		for (i = 0 ; i < tempDate.getDay() ; i++ ) {
			strHTML += "<li/>";
		}
	}
	
	// 1일부터 마지막 날까지 세팅
	for (i = 1 ; i <= intLastDate; i++) {
		tempDate.setDate(i);
		
		switch(tempDate.getDay()) {
			case 0: // 일요일이면 행바꿈 시작
				strHTML += "<ul>";
				if ((tempDate.getFullYear() == selectYear) && (tempDate.getMonth() == selectMonth-1) && (i == selectDate)) { // 선택된 날짜면
					strHTML += "<li class=\"selectday\" onclick=\"clickCalendar('" + p_CalendarObjName + "','" + p_InputObjName + "'," + tempDate.getFullYear() + "," +  (tempDate.getMonth() + 1) + "," + i +")\">" + i + "</li>";
				} else {
					strHTML += "<li class=\"sunday\" onclick=\"clickCalendar('" + p_CalendarObjName + "','" + p_InputObjName + "'," + tempDate.getFullYear() + "," +  (tempDate.getMonth() + 1) + "," + i +")\">" + i + "</li>";
				}
				break;
				
			case 6: // 토요일이면 행바꿈 마무리
				if ((tempDate.getFullYear() == selectYear) && (tempDate.getMonth() == selectMonth-1) && (i == selectDate)) { // 선택된 날짜면
					strHTML += "<li class=\"selectday\" onclick=\"clickCalendar('" + p_CalendarObjName + "','" + p_InputObjName + "'," + tempDate.getFullYear() + "," +  (tempDate.getMonth() + 1) + "," + i +")\">" + i + "</li>";
				} else {
					strHTML += "<li class=\"saturday\" onclick=\"clickCalendar('" + p_CalendarObjName + "','" + p_InputObjName + "'," + tempDate.getFullYear() + "," +  (tempDate.getMonth() + 1) + "," + i +")\">" + i + "</li>";
				}
				strHTML += "</ul>";
                break;
				
			default:
				if ((tempDate.getFullYear() == selectYear) && (tempDate.getMonth() == selectMonth-1) && (i == selectDate)) { // 선택된 날짜면
					strHTML += "<li class=\"selectday\" onclick=\"clickCalendar('" + p_CalendarObjName + "','" + p_InputObjName + "'," + tempDate.getFullYear() + "," +  (tempDate.getMonth() + 1) + "," + i +")\">" + i + "</li>";
				} else {
					strHTML += "<li class=\"day\" onclick=\"clickCalendar('" + p_CalendarObjName + "','" + p_InputObjName + "'," + tempDate.getFullYear() + "," +  (tempDate.getMonth() + 1) + "," + i +")\">" + i + "</li>";
				}
				break;
		}
	}
	
	// 막날이 토요일이 아니라면 마무리
	tempDate.setDate(intLastDate);
	if (tempDate.getDay() != 6) {
		strHTML += "</ul>";
	}
	
	strHTML += "</div>";
	
	document.getElementById(p_CalendarObjName).innerHTML = strHTML;
}

// 해당 년월의 마지막날 구하기
function  lastDateInMonth(p_Year, p_Month) {
    var intLastDate;
	
	switch(p_Month) {
		case 2: // 2월이면 윤년따라 설정
			if ((( p_Year % 4 == 0) && (p_Year % 100 != 0)) || (p_Year % 400 == 0))  {
				intLastDate = 29;
			} else {
				intLastDate = 28;
			}
			break;
			
		case 4:case 6:case 9:case 11: // 4,6,9,11월 30일
			intLastDate = 30;
			break;
			
		default: // 나머지달 31일
			intLastDate = 31;
			break;
	}
	
    return intLastDate;
}

// 캘린더 클릭
function  clickCalendar(p_CalendarObjName, p_InputObjName, p_Year, p_Month, p_Date) {
	selectYear = parseInt(p_Year);
	selectMonth = parseInt(p_Month);
	selectDate = parseInt(p_Date);
	
	var strMonth, strDate;
	if (selectMonth < 10) {
		strMonth = "0" + selectMonth;
	} else {
		strMonth = selectMonth;
	}
	if (selectDate < 10) {
		strDate = "0" + selectDate;
	} else {
		strDate = selectDate;
	}
	
	document.getElementById(p_InputObjName).value = p_Year + "-" + strMonth + "-" + strDate;
	document.getElementById(p_CalendarObjName).style.display = 'none';
}

// 달력 창 열기
function showCalendar(p_CalendarObjName, p_InputObjName, p_YMD, p_event){
	var obj;
	var tempDate;
	
	var x = (p_event.pageX) ? p_event.pageX : document.body.scrollLeft + event.clientX;
	var y = (p_event.pageY) ? p_event.pageY : document.body.scrollTop + event.clientY;	
	obj = document.getElementById(p_CalendarObjName);
	
	if ((x == mouseX && y == mouseY) && (obj.style.display=="block")) {
		obj.style.display = 'none';

	} else {
		selectYear = 0;
		selectMonth = 0;
		selectDate = 0;

		if ((p_YMD == null) || (p_YMD == "")) {
			setCalandar(p_CalendarObjName, p_InputObjName);

		} else {
			tempDate = p_YMD.split("-");
			if (tempDate.length == 3) {
				selectYear = parseInt(tempDate[0]);
				selectMonth = parseInt(tempDate[1]);
				selectDate = parseInt(tempDate[2]);
				setCalandar(p_CalendarObjName, p_InputObjName, tempDate[0], tempDate[1], tempDate[2]);
				
			} else if (tempDate.length == 2) {
				setCalandar(p_CalendarObjName, p_InputObjName, tempDate[0], tempDate[1]);
			} else {
				setCalandar(p_CalendarObjName, p_InputObjName);
			}
		}
		
		obj.style.left= (x + 5) + 'px'; // 클릭한 위치에서 나타날 left 위치 미세조정
		obj.style.top= (y + 10) + 'px'; // 클릭한 위치에서 나타날 top  위치 미세조정
		obj.style.display="block";
		
		mouseX = x;
		mouseY = y;
	}
}

// 달력 창 닫기
function closeCalendar(p_objName, p_event){
	var x = (p_event.pageX) ? p_event.pageX : document.body.scrollLeft+event.clientX;
	var y = (p_event.pageY) ? p_event.pageY : document.body.scrollTop+event.clientY;
	
	if (x != mouseX || y != mouseY) {
		var obj = document.getElementById(p_objName);
		obj.style.display = 'none';
	}
}


/***********************************************************************************
* 11. 공통 변수 관련 JavaScript
***********************************************************************************/

var mouseX, mouseY; // 마우스 위치

/***********************************************************************************
* 12. 공통 함수 관련 JavaScript
***********************************************************************************/

// 좌우 공백 제거
String.prototype.trim = function() {
	return this.replace(/(^\s*)|(\s*$)/g, "");
}

//좌우 공백 제거
String.prototype.nospace = function() {
	return this.replace(/\s/g, "");
}

// 허용어 체크 (비교문자 , 허용형식 ; ex: checkPermitWord(string , "1234567890") -- 허용벗어난 문자 있으면 false ) 
function checkPermitWord(p_value, p_Type)
{
	var i;

	for(i=0; i<p_value.length; i++) 
	{
		if (p_Type.indexOf(p_value.substring(i, i+1)) < 0) 
		{
			return false;
		}
	}        
	return true;
}

// 금지어 체크 (비교문자 , 금지어 ; ex: checkBanWord(string , "^%$") -- 금지어 있으면 true 반환 ) 
function checkBanWord(p_value, p_Type)
{
	var i;

	for(i=0; i<p_value.length; i++) 
	{
		if (p_Type.indexOf(p_value.substring(i, i+1)) >= 0) 
		{
			return true;
		}
	}
	return false;
}

// 다음 컨트롤로 포커스 이동
function focusNextControl(p_control, p_event) {
	var blnFocusYN = false;
	if (p_event) { // 이벤트가 들어왔고
		if (p_event.keyCode == 13) { // 엔터라면
			blnFocusYN = true;
		}
	} else { // 이벤트가 없다면
		blnFocusYN = true;
	}
	if (blnFocusYN) {
		var inputControls = document.getElementsByTagName("input");
		var input = p_control;
		for (var i = 0; i <inputControls.length; i++) {
			if ((inputControls[i].tabIndex > p_control.tabIndex) && (inputControls[i].type != 'hidden') && (inputControls[i].readOnly == false)) { // 숨겨지지 않은 다음 인덱스
				input = inputControls[i];
				break;
			}
		}
		input.select();
		input.focus();
	}
}

// 숫자인지 체크하며 자리수 차면 포커스이동
function checkCountDigit(p_control, p_count) {
	p_control.value = p_control.value.trim();
	if (checkPermitWord(p_control.value, "0123456789") == false) { // 숫자가 아니라면
		alert("숫자로 적어 주셔야 합니다.");
		p_control.focus();

	} else { // 숫자라면
		if (p_control.value.length >= p_count) { // 정해진 자리수보다 크다면
			focusNextControl(p_control); // 포커스 이동
		}
	}
}

//주민등록번호 유효성 체크
function checkJumin(p_jumin1, p_jumin2) 
{
	var i, n, sum, check_digit;
	
	n = 2;
	sum = 0;
	for (i=0; i<p_jumin1.length; i++) {
		sum += parseInt(p_jumin1.substr(i, 1)) * n++;
	}
	for (i=0; i<p_jumin2.length-1; i++) {
		sum += parseInt(p_jumin2.substr(i, 1)) * n++;
		if (n == 10) {
			n = 2;
		}
	}
	check_digit = 11 - sum % 11;
	if (check_digit == 11) {
		check_digit = 1;
	}
	if (check_digit == 10) {
		check_digit = 0;
	}
	if (check_digit != parseInt(p_jumin2.substr(6, 1))) {
		return false;
	} else {
		return true;
	}
}



/***********************************************************************************
* 13. 통화 관련 JavaScript
***********************************************************************************/

var DECIMAL_POINT = 2; // 통화 소수자리수 2로 고정

// 통화형으로 컨버젼 - 소수점 2자리 이하 버림으로 고정
function parseMoney(p_Number) {
	var result;
	
	if (parseFloat(p_Number) > 0) { // 0보다 크면
		result = Math.floor(parseFloat(p_Number) * Math.pow(10, DECIMAL_POINT)) / Math.pow(10, DECIMAL_POINT);
	} else { // 0보다 작으면
		result = Math.ceil(parseFloat(p_Number) * Math.pow(10, DECIMAL_POINT)) / Math.pow(10, DECIMAL_POINT);
	}
	
	return result;
}

// 통화형 덧셈
function moneyPlus(p_Number1, p_Number2) {
	var money1 = parseMoney(p_Number1) * Math.pow(10, DECIMAL_POINT);
	if (money1 > 0) {
		money1 = Math.floor(money1);
	} else {
		money1 = Math.ceil(money1);
	}
	
	var money2 = parseMoney(p_Number2) * Math.pow(10, DECIMAL_POINT);
	if (money2 > 0) {
		money2 = Math.floor(money2);
	} else {
		money2 = Math.ceil(money2);
	}
	
	return (money1 + money2) / Math.pow(10, DECIMAL_POINT);
}

// 통화형 뺄셈
function moneyMinus(p_Number1, p_Number2) {
	var money1 = parseMoney(p_Number1) * Math.pow(10, DECIMAL_POINT);
	if (money1 > 0) {
		money1 = Math.floor(money1);
	} else {
		money1 = Math.ceil(money1);
	}
	
	var money2 = parseMoney(p_Number2) * Math.pow(10, DECIMAL_POINT);
	if (money2 > 0) {
		money2 = Math.floor(money2);
	} else {
		money2 = Math.ceil(money2);
	}
	
	return (money1 - money2) / Math.pow(10, DECIMAL_POINT);
}

// 통화형 곱셈
function moneyMultiply(p_Number1, p_Number2) {
	var money1 = parseMoney(p_Number1) * Math.pow(10, DECIMAL_POINT);
	if (money1 > 0) {
		money1 = Math.floor(money1);
	} else {
		money1 = Math.ceil(money1);
	}
	
	var money2 = parseMoney(p_Number2) * Math.pow(10, DECIMAL_POINT);
	if (money2 > 0) {
		money2 = Math.floor(money2);
	} else {
		money2 = Math.ceil(money2);
	}
	
	return parseMoney( (money1 * money2) / (Math.pow(10, DECIMAL_POINT)*Math.pow(10, DECIMAL_POINT)) );
}

// 통화형 나눗셈
function moneyDivide(p_Number1, p_Number2) {
	var money1 = parseMoney(p_Number1) * Math.pow(10, DECIMAL_POINT);
	if (money1 > 0) {
		money1 = Math.floor(money1);
	} else {
		money1 = Math.ceil(money1);
	}
	
	var money2 = parseMoney(p_Number2) * Math.pow(10, DECIMAL_POINT);
	if (money2 > 0) {
		money2 = Math.floor(money2);
	} else {
		money2 = Math.ceil(money2);
	}
	
	return parseMoney( (money1 / money2) );
	//return parseMoney(( (parseMoney(p_Number1) * Math.pow(10, DECIMAL_POINT)) / (parseMoney(p_Number2) * Math.pow(10, DECIMAL_POINT)) ) / (Math.pow(10, DECIMAL_POINT) * Math.pow(10, DECIMAL_POINT)));
}

// 3자리마다 콤마찍기 - @@@@@@@@@@@@@@ 나중에 소스 정리 하자
function numberComma(p_Number){
	var i;
	//var tempArray;
	var numberTemp;
	//var numberNatural; // 정수부분
	//var numberDecimal; // 소수부분
	
	if (p_Number == null) {
		return "0";
		
	} else {
		numberTemp = p_Number + "";
		numberTemp = numberTemp.trim();				// 공백제거
		numberTemp = numberTemp.replace(/,/g,"");	// 콤마제거
		if (parseFloat(numberTemp) == "0") { // 0 이라면
			return "0";
			
		} else { // 0 아니라면
			var returnValue = 0;
			 var temp1 = numberTemp.replace(/,/g,"");   // 콤마를 없앰
			 var temp = temp1.split('.');
			 
			 // 정수자리 원단위로 만들기
			 var num1 = "";
			 var comma = 1;
			 for(i = temp[0].length -1; i >= 0; i--){
			  num1 += temp[0].charAt(i);

			  if(comma % 3 == 0 && comma != 0){
			   num1 += ",";
			  } // end if
			  comma++;
			 } // end for
			 

			 var num2 = "";
			 for(i = num1.length -1; i >= 0; i--){
			  num2 += num1.charAt(i);
			 } // end for
			 
			 // 소수점이 있다면...
			 if(temp.length > 1){

			  // 소수점 자리 원 단위로 만들어서 리턴..!!
			  var num3 = "";
			  for(i=1; i <= temp[1].length; i++){
			   num3 += temp[1].charAt(i-1);
			   
			   if((i%3 == 0) && (i != 0)){
			    num3 += ",";
			   }
			  } // end for
			  
			  var num4 = num2 + "." + num3;
			  returnValue = num4.replace(/(^,)|(,$)/g,"");
			 } // end if
			 else
			  returnValue = num2.replace(/(^,)|(,$)/g,"");; // 앞,뒤 콤마 제거
			  
			 if(returnValue == "" || returnValue == ".")
			  return "0";
			 else
			  return returnValue;
		}
	}
}

//배열에 push 오버로딩
if(!Array.prototype.push) {
	function array_push() {
		for(var i=0;i<arguments.length;i++)
			this[this.length]=arguments[i];
		return this.length;
	}
	Array.prototype.push = array_push;
}

//배열에 pop 오버로딩
if(!Array.prototype.pop) {
	function array_pop(){
		lastElement = this[this.length-1];
		this.length = Math.max(this.length-1,0);
		return lastElement;
	}
	Array.prototype.pop = array_pop;
}
//배열 스왑
Array.prototype.swap=function(a, b)
{
	var tmp=this[a];
	this[a]=this[b];
	this[b]=tmp;
}

// 그림 처리 - 미리받고, 바꾸고, 제자리로
function MM_preloadImages() { //v3.0
	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
		var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
		if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function MM_swapImgRestore() { //v3.0
	var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_findObj(n, d) { //v4.01
	var p,i,x;	if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
	var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	 if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


//콤보박스 옵션 초기화 (모두 지우고 초기값 세팅)
function initComboBox(p_ComboBox, p_Value, p_Text, p_Class) {
	if (p_ComboBox) {
		p_ComboBox.innerHTML = "";
		
		if ((p_Value) && (p_Text)) {
			insertComboBox(p_ComboBox, p_Value, p_Text, p_Class);
			p_ComboBox.value = p_Value;
		}
	}
}

// 콤보박스 옵션 추가
function insertComboBox(p_ComboBox, p_Value, p_Text, p_Class) {
	var elmNewOption;
	
	if (p_ComboBox) {
		elmNewOption = document.createElement("option");
		elmNewOption.value = p_Value;
		elmNewOption.text = p_Text;
		if (p_Class) {
			elmNewOption.className = p_Class;
		}
	    try {
	    	p_ComboBox.add(elmNewOption, null); // FireFox
	    } catch(ex) {
	    	p_ComboBox.add(elmNewOption); // IE only
	    }
	}
}





/********************************************************************************
 * 설　명	: 공통 Function
 * 작성일	: 2009.06.05(금요일)
 * 작성자	: 심선주 
 ********************************************************************************/
/**
 * 입력값이  null 인지 체크한다
 */
function isNull(input){
   if (input.value == null || input.value == ""){
         return true;
   }else{
         return false;
   }
}

/**
 * 입력값이 스페이스 이외의 의미있는 값이 있는지 체크한다
 */
function isEmpty(input){
   if (input.value == null || input.value.replace(/ /gi,"") == ""){
         return true;
   }else{
         return false;
   }
}

/**
 * 입력값이 스페이스 이외의 의미있는 값이 있는지 체크한다
 * 인자값을 받아 msg를 출력한다.
 */
function isEmpty(input,msg){
	   if (input.value == null || input.value.replace(/ /gi,"") == ""){
		     if(msg != ""){
		   	   alert(msg);
		     }
	         return true;
	   }else{
	         return false;
	   }
	}

/**
 * 입력값에 특정 문자가 있는지 체크하는 로직이며 
 * 특정문자를 허용하고 싶지 않을때 사용할수도 있다
 * if (containsChars(form.name, "!,*&^%$#@~;")){
 *       alert("특수문자를 사용할수 없습니다");
 * }
 */

function containsChars(input, chars){
   for (var i=0; i < input.value.length; i++){
     if (chars.indexOf(input.value.charAt(i)) != -1){
            return true;
     }
   }
   return false;
}

/**
 * 입력값이 특정 문자만으로 되어있는지 체크하며 
 * 특정문자만을 허용하려 할때 사용한다.
 * if (containsChars(form.name, "ABO")){
 *    alert("혈액형 필드에는 A,B,O 문자만 사용할수 있습니다.");
 * }
 */

function containsCharsOnly(input, chars){
   for (var i=0; i < input.value.length; i++){
     if (chars.indexOf(input.value.charAt(i)) == -1){
            return false;
     }
   }
   return true;
}

/**
 * 입력값이 알파벳인지 체크
 * 아래 isAlphabet() 부터 isNumComma()까지의 메소드가 자주 쓰이는 경우에는
 * var chars 변수를 global 변수로 선언하고 사용하도록 한다.
 * var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 * var lowercase = "abcdefghijklmnopqrstuvwxyz";
 * var number = "0123456789";
 * function isAlphaNum(input){
 *       var chars = uppercase + lowercase + number;
 *    return containsCharsOnly(input, chars);
 * }
 */

function isAlphabet(input){
   var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
   return containsCharsOnly(input, chars);
}

/**
 * 입력값이 알파벳 대문자인지 체크한다
 */
 function isUpperCase(input){
   var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   return containsCharsOnly(input, chars);
 }

/**
 * 입력값이 알파벳 소문자인지 체크한다
 */
function isLowerCase(input){
   var chars = "abcdefghijklmnopqrstuvwxyz";
   return containsCharsOnly(input, chars);
}

/**
 * 입력값이 숫자만 있는지 체크한다.
 */
function isNumer(input){
   var chars = "0123456789";
   return containsCharsOnly(input, chars);
}

/**
 * 입려값이 알파벳, 숫자로 되어있는지 체크한다
 */
function isAlphaNum(input){
   var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
   return containsCharsOnly(input, chars);
}

/**
 * 입력값이 숫자, 대시"-" 로 되어있는지 체크한다
 * 전화번호나 우편번호, 계좌번호에 -  체크할때 유용하다
 */
function isNumDash(input){
   var chars = "-0123456789";
   return containsCharsOnly(input, chars);
}

/**
 * 입력값이 숫자, 콤마',' 로 되어있는지 체크한다
 */
function isNumComma(input){
   var chars = ",0123456789";
   return containsCharsOnly(input, chars);
}

/**
 * 입력값이 사용자가 정의한 포맷 형식인지 체크
 * 자세한 format 형식은 자바스크립트의 'reqular expression' 참고한다
 */
function isValidFormat(input, format){
   if (input.value.search(format) != -1){
         return true; // 올바른 포멧형식
   }      
   return false;
}

/**
 * 입력값이 이메일 형식인지 체크한다
 * if (!isValidEmail(form.email)){
 *       alert("올바른 이메일 주소가 아닙니다");
 * }
 */
function isValidEmail(input){
   var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
   return isValidFormat(input, format);
}

/**
 * 입력값이 전화번호 형식(숫자-숫자-숫자)인지 체크한다
 */
function isValidPhone(input){
   var format = /^(\d+)-(\d+)-(\d+)$/;
   return isValidFormat(input, format);
}

/**
 * 입력값의 바이트 길이를 리턴한다.
 * if (getByteLength(form.title) > 100){
 *    alert("제목은 한글 50자 (영문 100자) 이상 입력할수 없습니다");
 * }
 */

function getByteLength(input){
   var byteLength = 0;
   for (var inx = 0; inx < input.value.charAt(inx); inx++)     {
     var oneChar = escape(input.value.charAt(inx));
     if (oneChar.length == 1){
            byteLength++;
     }else if (oneChar.indexOf("%u") != -1){
            byteLength += 2;
     }else if (oneChar.indexOf("%") != -1){
            byteLength += oneChar.length / 3;
     }
   }
   return byteLength;
}

/**
 * 입력값에서 콤마를 없앤다
 */
function removeComma(input){
   return input.value.replace(/,/gi,"");
}

/**
 * 선택된 라디오버튼이 있는지 체크한다
 */
function hasCheckedRadio(input){
   if (input.length > 1){
     for (var inx = 0; inx < input.length; inx++){
            if (input[inx].checked) return true;
     }
   }else{
     if (input.checked) return true;
   }
   return false;
}

/**
 * 선택된 체크박스가 있는지 체크
 */
function hasCheckedBox(input){
   return hasCheckedRadio(input);
}

/**
 * 브라우져 버젼 체크(Explore&Netscape)
 */
function browserchk(){
    var appname = navigator.appName;
    var browser = 0;
	//alert("appname : "+appname);
	//alert("userAgent : "+navigator.userAgent);
    if(appname == "Microsoft Internet Explorer")   {
    	browser = 0;
    }else if( appname == "Netscape" ){
    	browser = 1;
    }
    return browser;
}

/**
 * 현재날짜를 Array 로 반환 받는다.
 * @param no 1 : year
 * @param 2 : month
 * @param 3 : day
 * @param 4 : Hour
 * @param 5 : Minutes
 * @param 6 : Seconds
 * @return  Date()
 */

/**
 * 현재날짜를 new Array() 로 반환한다.
 * @param no : 1~6까지
 * @return new Array(year,month,day,Hour,Minutes,Seconds);
 * @author sjshim 2009.06.17
 */
function getArrDate(no){
	var dt = new Date();
	var year = dt.getFullYear();
	var month = (dt.getMonth()+1)>9 ?''+(dt.getMonth()+1) : '0'+(dt.getMonth()+1);
	var day = dt.getDate()>9 ? ''+dt.getDate() : '0'+dt.getDate();
	var Hour = dt.getHours();
	var Minutes = dt.getMinutes();
	var Seconds = dt.getSeconds();
	
	var arrDate = new Array(year,month,day,Hour,Minutes,Seconds);
	var reDate = new Array();
	for(var i = 0 ; i < no ; i++){		
		reDate[i]=arrDate[i];
	}
	return reDate;	
}

/**
 * 현재날짜를 new Date 로 반환한다.
 * @param no : 1~6까지
 * @return new Date(year,month,day,Hour,Minutes,Seconds);
 * @author sjshim 2009.06.17
 */
function getNewDate(no){
	var dt = new Date();
	var year = dt.getFullYear();
	var month = (dt.getMonth()+1)>9 ?''+(dt.getMonth()+1) : '0'+(dt.getMonth()+1);
	var day = dt.getDate()>9 ? ''+dt.getDate() : '0'+dt.getDate();
	var Hour = dt.getHours();
	var Minutes = dt.getMinutes();
	var Seconds = dt.getSeconds();
	
	switch(no){
		case 1 : dt = new Date(year);break;
		case 2 : dt = new Date(year,month);break;	
		case 3 : dt = new Date(year,month,day);break;
		case 4 : dt = new Date(year,month,day,Hour);break;
		case 5 : dt = new Date(year,month,day,Hour,Minutes);break;
		case 6 : dt = new Date(year,month,day,Hour,Minutes,Seconds);break;
	}
	return dt;
}


/**
 * Object 생성 - java의 hashtable 
 * 사용 : hashtable = new hasthtable();
 * put, get 사용방법 동일
 * @author sjshim 2009.07.13
 */
//Hashtable 선언
var Hashtable = function() {
	 this.type = "hashtable";
	 this.key = [];

	 this.data = [];
	 this.dataType = [];

	 this.attributeName = [];
	 this.attributeValue = [];
	}

//Hashtable에 get
Hashtable.prototype.get = function( _key ) {
	  var ret = null;
	  try {
	    for( var i = 0 ; i < this.key.length ; i++ ) {
	      if ( this.key[i] == _key ) {
	        ret = this.data[i];
	        break;
	      }
	    }
	  } catch( e ) {
	    alert( e );
	  }
	  return ret;
	}
//Hashtable에 set
	Hashtable.prototype.put = function( _key, _xml ) {
	  var ret = null;
	  try {
	    var exist = false;
	    for( var i = 0 ; i < this.key.length ; i++ ) {
	      if ( this.key[i] == _key ) {
	        exist = true;
	        ret = this.data[i];
	        this.data[i] = _xml + "";
	        this.dataType[i] = "String";
	        break;
	      }
	    }
	    if( !exist ) {
	      this.key.push( _key );
	      this.data.push( _xml + "" );
	      this.dataType.push( "String" );
	    }
	  } catch( e ) {
	    alert( e );
	  }
	  return ret;
	}	

	/**
	 * Hashtable 데이터로 변환
	 * Param : Map 형태의 텍스트;
	 * @author sjshim 2009.07.13
	 */	
	function HashtableEval(text){
		var Hash = new Hashtable();		
		if(text != null){
			text = text.replace(/{/g,"");
			text = text.replace(/}/g,"");
			text = text.replace(/\n/g,"");
			text = text.replace(/\t/g,"");
			text = text.replace(/ /g,"");			
			text = text.replace(/%A0/g,"");
			obj = text.split(",");
			
			//%A0
			//Map형태로 받을 경우 특수문자%A0 으로 되어 있는 공백이 함께 넘어옴 replace로 변환안됨..
			//이를 위한 처리 포함
			var str="";
			for(var i = 0 ;i < obj.length; i++){
				str="";
				for( var j = 0 ; j < obj[i].length ; j++){					
					if(escape(obj[i].charAt(j)) != "%A0"){
						str = str+obj[i].charAt(j);
					}
				}
				obj[i] = str;
				as = obj[i].split(":");			
				Hash.put(as[0],as[1]);
			}
		}
		return Hash;
	}

	/****************************************************************************/
	/* function	: NoComma					    */
	/* description	: 칸마를 뗀다 					    */
	/* parameter	: 캐릭터 라인					    */
	/* return	: 칸마를 뗀 캐릭터 라인				    */
	/****************************************************************************/
	function NoComma(str){
		while (str.indexOf(",") != -1){
			str = str.substring(0, str.indexOf(",")) + str.substring(str.indexOf(",") + 1, str.length);
		}

		return str;
	}
	

	/****************************************************************************/
	/* function	: isDay														*/
	/* description	: 일자의 타당성 체크										*/
	/* parameter	: YearData			입력년									*/
	/* parameter	: MonthData			입력월									*/
	/* parameter	: DayData			입력일									*/
	/* return		: OK:true/NG:false											*/
	/****************************************************************************/
	function isDay( YearData , MonthData , DayData ) {
		var txt, result;
		result = true;

		YearData = parseInt(YearData);
		if (MonthData.charAt(0) == '0'){
			MonthData = MonthData.charAt(1);
		} else {
			MonthData = parseInt(MonthData);
		}
		if (DayData.charAt(0) == '0'){
			DayData = DayData.charAt(1);
		} else {
			DayData = parseInt(DayData);
		}

		if (YearData > 2100 || YearData < 1900){
			result = false;
		}

		if (MonthData > 12 || MonthData < 1){
			result = false;
		}

		if (MonthData == 4 || MonthData == 6 || MonthData == 9 || MonthData == 11){
			if (DayData > 30) {
				result = false;
			}
		}

		if (DayData > 31 || DayData == 0 ) {
			result = false;
		}
		if (MonthData == 2){
			var uruuYear1 = 0;
			var uruuYear2 = 0;
			var uruuYear3 = 0;
			uruuYear1 = YearData % 4;
			uruuYear2 = YearData % 100;
			uruuYear3 = YearData % 400;
			if (uruuYear1 == 0){
				if (uruuYear2 == 0 && uruuYear3 != 0){
					if (DayData > 28) Hantei = false;
				}else{
					if (DayData > 29) Hantei = false;
				}
			}else{
				if (DayData > 28) Hantei = false;
			}
		}

		return result;  
	}

	// 클립보드로 카피
	function CopyToClipboard(strText)
	{
		var strAgent = navigator.userAgent.toLowerCase();
		var bIE = (strAgent.indexOf("msie") != -1);

		if (bIE)
			window.clipboardData.setData("Text", strText);
		else if (window.netscape)
		{
			// You have to sign the code to enable this or allow the action in about:config by changing user_pref("signed.applets.codebase_principal_support", true);
			try
			{
				netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
			}
			catch (e)
			{
				alert('Please change the user preferences [signed.applets.codebase_principal_support] as true in about:config.');
				return false;
			}

			// Store support string in an object.
			var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
			if (!str)
				return false;
			str.data = strText;

			// Make transferable.
			var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
			if (!trans)
				return false;

			// Specify what datatypes we want to obtain, which is text in this case.
			trans.addDataFlavor("text/unicode");
			trans.setTransferData("text/unicode", str, strText.length*2);

			var clipid = Components.interfaces.nsIClipboard;
			var clip = Components.classes["@mozilla.org/widget/clipboard;1"].getService(clipid);
			if (!clip)
				return false;

			clip.setData(trans, null, clipid.kGlobalClipboard);
		}
		return true;
	}
	
	
	
	
	
// 오브젝트 위치값 구하기
function getPosition(p_obj) {
	var position = new Object;
	position.x = 0;
	position.y = 0;
	
	if( p_obj ) {
		position.x = p_obj.offsetLeft;
		position.y = p_obj.offsetTop;
	
		if( p_obj.offsetParent ) {
			var parentpos = getPosition(p_obj.offsetParent);
			position.x += parentpos.x;
			position.y += parentpos.y;
		}
	}
	
	position.cx = p_obj.offsetWidth;
	position.cy = p_obj.offsetHeight;
	
	return position;
}

// 팝업창 가운데로 정렬하는 함수 - 팝업창 JSP 에서 스크립트로 함수만 호출한다.
function centerPopup(){ 
    var x,y; 
    if (self.innerHeight) { // IE 외 모든 브라우저 
        x = (screen.availWidth - self.innerWidth) / 2; 
        y = (screen.availHeight - self.innerHeight) / 2; 
    }else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict 모드 
        x = (screen.availWidth - document.documentElement.clientWidth) / 2; 
        y = (screen.availHeight - document.documentElement.clientHeight) / 2; 
    }else if (document.body) { // 다른 IE 브라우저( IE < 6) 
        x = (screen.availWidth - document.body.clientWidth) / 2; 
        y = (screen.availHeight - document.body.clientHeight) / 2; 
    } 
    window.moveTo(x,y); 
} 

