var target;
var tarForm;
function Mcal(tar,frm) {
var obj = document.getElementById("minical");
if ( obj ) {
return;
}
var newDiv = document.createElement("<div id='minical' oncontextmenu='return false' ondragstart='return false' onselectstart='return false'></div>");
document.body.appendChild(newDiv);
var obj = getBounds(document.getElementById(tar));
newDiv.style.left = obj.left;
newDiv.style.top = obj.top + 7;
target = tar;
tarForm = frm;
// x = (document.layers) ? loc.pageX : event.clientX;
// y = (document.layers) ? loc.pageY : event.clientY;
// minical.style.pixelTop = y-0;
// minical.style.pixelLeft = x-50;
// minical.style.display = (minical.style.display == "block") ? "none" : "block";
Show_cal0(0,0,0);
}
var stime;
function doOver() {
var el = window.event.srcElement;
cal_Day = el.title;
if (cal_Day.length > 7) {
el.style.borderTopColor = el.style.borderLeftColor = "buttonhighlight";
el.style.borderRightColor = el.style.borderBottomColor = "buttonshadow";
}
window.clearTimeout(stime);
}
function doClick() {
cal_Day = window.event.srcElement.title;
window.event.srcElement.style.borderColor = "red";
if ( window.event.srcElement.style.backgroundColor == "" ) {
window.event.srcElement.style.backgroundColor = "#bdd8e9"
} else if ( window.event.srcElement.style.backgroundColor == "#bdd8e9" ) {
window.event.srcElement.style.backgroundColor = "";
}
if (cal_Day.length > 7) {
var vYear = cal_Day.substring(0,4);
var tmp = cal_Day.substring(cal_Day.indexOf("-")+1);
var vMon = tmp.substring(0, tmp.indexOf("-"));
var vDay = tmp.substring(tmp.indexOf("-")+1);
//alert('year : '+vYear);
//alert('month : '+vMon);
//alert('date : '+vDay);
vMon = (vMon < 10)? '0'+vMon:''+vMon;
vDay = (vDay < 10)? '0'+vDay:''+vDay;
//eval("document." + tarForm.name + "." + target).value = vYear + '-'+vMon + '-' + vDay;
//document.body.removeChild(document.getElementById('minical'));
}
}
function doOut() {
var el = window.event.fromElement;
cal_Day = el.title;
if (cal_Day.length > 7) {
el.style.borderColor = "white";
}
//stime = window.setTimeout("minical.style.display='none';", 200);
//stime = window.setTimeout("document.body.removeChild(document.getElementById('minical'));", 200);
}
function Show_cal0(sYear,sMonth,sDay) {
var datToday = new Date();
var Cal_HTML = "";
intThisYear = sYear; //년 넘겨받기
intThisMonth = sMonth; //월 넘겨받기
intThisDay = sDay;
if ( intThisYear == 0 ) { //만약 년도와 월값을 넘겨받지 않았다면 현재 년도를 년도 변수에
intThisYear = datToday.getYear();
}
if ( intThisMonth == 0 ) { //현재 월을 월 변수에
intThisMonth = datToday.getMonth()+1;
}
if ( intThisDay == 0 ) { //오늘 날짜
intThisDay = datToday.getDate();
}
if ( intThisMonth == 1 ) {
intPrevYear = intThisYear-1;
intPrevMonth = 12;
intNextYear = intThisYear;
intNextMonth = 2;
} else if ( intThisMonth == 12 ) {
intPrevYear = intThisYear;
intPrevMonth = 11;
intNextYear = intThisYear + 1;
intNextMonth = 1;
} else {
intPrevYear = intThisYear;
intPrevMonth = intThisMonth - 1;
intNextYear = intThisYear;
intNextMonth = intThisMonth + 1;
}
var NowThisYear = datToday.getYear(); //현재 연도값
var NowThisMonth = datToday.getMonth()+1; //현재 월값
var NowThisDay = datToday.getDate(); //오늘 날짜 값
var datFirstDay = new Date(intThisYear, intThisMonth-1, 1); //넘겨받은 날짜의 월초기값 파악
var intFirstWeekday = datFirstDay.getDay()+1;
var intThirdWeekDay = intFirstWeekday;
intPrintDay = 1; //출력 초기일 값은 1부터
thirdPrintDay = 1;
Stop_Flag = 0;
if ( intThisMonth == 4 || intThisMonth == 6 || intThisMonth == 9 || intThisMonth == 11 ) { //월말 값 계산
intLastDay = 30;
} else if ( intThisMonth == 2 && intThisYear % 4 != 0 ) {
intLastDay = 28;
} else if ( intThisMonth == 2 && intThisYear % 4 == 0 ) {
if ( intThisYear % 100 == 0 ) {
if ( intThisYear % 400 == 0 ) {
intLastDay = 29;
} else {
intLastDay = 28;
}
} else {
intLastDay = 29;
}
} else {
intLastDay = 31;
}
if ( intPrevMonth == 4 || intPrevMonth == 6 || intPrevMonth == 9 || intPrevMonth == 11 ) { //월말 값 계산
intPrevLastDay = 30;
} else if ( intPrevMonth == 2 && intPrevYear % 4 != 0 ) {
intPrevLastDay = 28;
} else if ( intPrevMonth == 2 && intPrevYear % 4 != 0 ) {
if ( intPrevYear % 100 == 0 ) {
if ( intPrevYear % 400 == 0 ) {
intPrevLastDay = 29;
} else {
intPrevLastDay = 28;
}
} else {
intPrevLastDay = 29;
}
} else {
intPrevLastDay = 31;
}
Stop_Flag = 0;
Cal_HTML = Cal_HTML + "<table border=0 cellpadding=1 cellspacing=1 class='Calendar'>";
Cal_HTML = Cal_HTML + "<tr align=center>";
Cal_HTML = Cal_HTML + "<td></td>";
Cal_HTML = Cal_HTML + "<td colspan=5><font color=red><b>";
Cal_HTML = Cal_HTML + intThisYear + "년 " + intThisMonth + "월";
Cal_HTML = Cal_HTML + "</font></b></td>";
Cal_HTML = Cal_HTML + "<td></td>";
Cal_HTML = Cal_HTML + "</tr>";
Cal_HTML = Cal_HTML + "<tr align=center bgcolor=navy style='color: #ffffff; font-weight: bold'>";
Cal_HTML = Cal_HTML + "<td>일</td><td>월</td><td>화</td><td>수</td><td>목</td><td>금</td><td>토</td>";
Cal_HTML = Cal_HTML + "</tr>";
for ( var intLoopWeek=1 ; intLoopWeek <= 6 ; intLoopWeek++ ) { //주단위 루프 시작, 최대 6주
Cal_HTML = Cal_HTML + "<tr align=right valign=top bgcolor=white >";
for ( var intLoopDay=1 ; intLoopDay <= 7 ; intLoopDay++ ) { //요일단위 루프 시작, 일요일부터
if ( intThirdWeekDay > 1 ) { //첫주시작일이 1보다 크면
Cal_HTML = Cal_HTML + "<td> </td>";
intThirdWeekDay--;
} else {
if ( thirdPrintDay > intLastDay ) { //입력날짜가 월말보다 크다면
Cal_HTML = Cal_HTML + "<td> </td>";
} else { //입력날짜가 현재월에 해당되면
Cal_HTML = Cal_HTML + "<td title='" + intThisYear + "-" + intThisMonth + "-" + thirdPrintDay + "' style='cursor: hand;border: 1px solid white;width:18; height:18;";
//오늘 날짜이면은 글씨폰트를 다르게
if ( intThisYear-NowThisYear == 0 && intThisMonth-NowThisMonth == 0 && thirdPrintDay-intThisDay == 0 ) {
Cal_HTML = Cal_HTML + "background-color:cyan;";
}
if ( intLoopDay == 1 ) { //일요일이면 빨간 색으로
Cal_HTML = Cal_HTML + "color:red;";
} else { //그외의 경우
Cal_HTML = Cal_HTML + "color:black;";
}
Cal_HTML = Cal_HTML + "' onmouseover='doOver()' onmouseout='doOut()' onclick='doClick()'>" + thirdPrintDay;
}
thirdPrintDay = thirdPrintDay + 1; //날짜값을 1 증가
if ( thirdPrintDay > intLastDay ) { //만약 날짜값이 월말값보다 크면 루프문 탈출
Stop_Flag = 1;
}
}
Cal_HTML = Cal_HTML + "</td>"
}
Cal_HTML = Cal_HTML + "</tr>"
if ( Stop_Flag == 1 ) {
break;
}
}
Cal_HTML = Cal_HTML + "</table>"
Cal_HTML = Cal_HTML + ""
Cal_HTML = Cal_HTML + ""
return Cal_HTML;
}
=====
한가지 언어로 쓰는 것이 좋을 거 같아서 기존 VBScript 버전을 JavaScript 버전으로 바꾼 것이다.
소스는 조금만 들여다보면 어떻게 사용하는지 알 수 있을 것이다.