// js calendar by jaewon // last_modified : 2009/01/15 // Usage : < script type="text/javascript" src="calendar.js">< /script > // < input type="text" id="start_date" name="start_date" value="20081027|null" > // < input type="button" name="´Þ·Â" onclick="calendar(event, 'start_date')" > var calendar_div; var calendar_obj; var calendar_tt; // ¼û°Ü¾ß µÇ´Â select element ÀúÀ庯¼ö(Array) var hidden_select; // elementÀÇ x, y, width, height¸¦ °¡Á®¿È. (select¿Ü¿¡ object¸¦ Àμö·Î »ç¿ëÇØµµ µÊ ex:div) function get_pos(selectObj) { var pos = new Array(); var pos_x = 0, pos_y = 0; // while¿¡¼­ offsetParent¸¦ ã¾Æ°¡´Â ¹æ½ÄÀ̶ó // ´Ù¸¥ ÁöÁ¤ÀÚ¿¡ Àμö·Î ³Ñ¾î¿Â object¸¦ ³Ñ°ÜÁÜ. obj = selectObj; // ÁÂÇ¥°è»ê while(obj.offsetParent) { pos_y += parseInt(obj.offsetTop); pos_x += parseInt(obj.offsetLeft); obj = obj.offsetParent; } pos_x += parseInt(obj.offsetLeft); pos_y += parseInt(obj.offsetTop); // ÁÂÇ¥ÀúÀå pos.x = pos_x; pos.y = pos_y; pos.x2 = pos_x + selectObj.offsetWidth; pos.y2 = pos_y + selectObj.offsetHeight; return pos; } function hide_select(x, y, x2, y2) { var selects = document.getElementsByTagName('select'); var hidden_count = 0; x = parseInt(x); y = parseInt(y); x2 = parseInt(x2); y2 = parseInt(y2); var x_cross = false; var y_cross = false; hidden_select = new Array(); //alert(x + ':' + y + ':' + x2 + ':' + y2); for(var i=0; i= selects[i].pos.x) || (x <= selects[i].pos.x2 && x2 >= selects[i].pos.x2)) x_cross = true; else x_cross = false; if((y <= selects[i].pos.y && y2 >= selects[i].pos.y) || (y <= selects[i].pos.y2 && y2 >= selects[i].pos.y2)) y_cross = true; else y_cross = false; if(x_cross == true && y_cross == true) { selects[i].style.visibility = "hidden"; hidden_select[hidden_count++] = i; } } } function show_select() { var selects = document.getElementsByTagName('select'); for(var i=0; i"; var calendar_date, calendar_t; if(set_date && (set_date.length == 6 || set_date.length == 8)) { calendar_date = set_date; var y = calendar_date.substring(0, 4); var m = calendar_date.substring(4, 6); var s_t = new Date(y, m-1, 1); if(s_t.getMonth()+1 != Number(m)) calendar_t = null; else calendar_t = new Date(y, m-1, 1); } var t = new Date(); var today = t.getFullYear(); if(t.getMonth()+1 < 10) today += '0' + String(t.getMonth()+1); else today += String(t.getMonth()+1); if(t.getDate() < 10) today += '0' + String(t.getDate()); else today += String(t.getDate()); if(!calendar_t) { var y = t.getFullYear(); var m = t.getMonth(); calendar_t = new Date(y, m, 1); } var calendar_yymm = calendar_t.getFullYear(); calendar_yymm += (calendar_t.getMonth()+1 < 10)? String('0' + (calendar_t.getMonth() + 1)) : String(calendar_t.getMonth()+1); var calendar_y = Number(calendar_yymm.substring(0, 4)); var calendar_m = Number(calendar_yymm.substring(4, 6)); var prev_m; if(Number(calendar_m) == 1) { prev_m = String(calendar_y - 1); prev_m += 12; } else { prev_m = String(calendar_y); prev_m += (calendar_m - 1 < 10)? '0' + (calendar_m - 1) : calendar_m - 1; } var next_m; if(Number(calendar_m) == 12) { next_m = String(calendar_y + 1); next_m += '01'; } else { next_m = String(calendar_y); next_m += (calendar_m + 1 < 10)? '0' + (calendar_m + 1) : calendar_m + 1; } calendar_m = (calendar_m < 10)? String('0' + calendar_m) : String(calendar_m); var prev_y = String(calendar_y-1) + calendar_m; var next_y = String(calendar_y+1) + calendar_m; var prev_yy = String(calendar_y-10) + calendar_m; var next_yy = String(calendar_y+10) + calendar_m; html += ""; html += " "; html += " "; html += " "; html += " "; html += " "; html += " "; html += " "; html += ""; /* table.CalendarLayout tr td span.ArrowForward { width: 14px; height: 15px; background: transparent url('/PhoneEnglish/images/Calendar/ArrowForward.gif') no-repeat 0 0; cursor: pointer; } table.CalendarLayout tr td span.ArrowBack { width: 14px; height: 15px; background: transparent url('/PhoneEnglish/images/Calendar/ArrowBack.gif') no-repeat 0 0; cursor: pointer; } table.CalendarLayout tr td span.ArrowNext { width: 14px; height: 15px; background: transparent url('/PhoneEnglish/images/Calendar/ArrowNext.gif') no-repeat 0 0; cursor: pointer; } table.CalendarLayout tr td span.ArrowPrevious */ html += ""; html += " "; html += ""; html += " "+calendar_y+"³â"; html += " "+calendar_m+"¿ù"; html += " "; // html += ""; // html += "X"; html += ""; html += ""; html += "SUN"; html += "MON"; html += "TUE"; html += "WED"; html += "THU"; html += "FRI"; html += "SAT"; html += ""; var week = calendar_t.getDay(); // ºó TD Ãâ·Â for(var i=0; i \n"; } // ÇØ´ç¿ùÀÇ ¸¶Áö¸· ³¯À» °¡Á®¿È. if(String(calendar_t.getMonth()+1) == '2') max_days = ((( calendar_y % 4 == 0) && (calendar_y % 100 != 0)) || (calendar_y % 400 == 0))? 29 : 28; else max_days = days_arr[calendar_t.getMonth()]; var this_date; for(var i=1; i<=max_days; i++) { if(week > 6) { html += ""; week = 0; } if(week == 0) { html += ""; } this_date = calendar_yymm; this_date += (i <= 9)? String('0' + i) : String(i); var style = "cursor: pointer;"; if(set_date == this_date) style += " text-decoration: underline; background: #ff0; color: #629;"; if(today == this_date) style += " font-weight: bolder; color: #000; background: #dff; border: 1px solid #a00;"; if(week == 0) style += " color: #f10;"; if(week == 6) style += " color: #05a;"; html += ""+i+""; week ++; } if(week < 6) { for(var i=week; i<=6; i++) { html += " \n"; } html += ""; } html += ""; calendar_div.innerHTML = html; } function calendar_set_date(set_date) { // FMT º¯°æ if(calendar_obj) { calendar_obj.value = set_date.substring(0,4) + '-' + set_date.substring(4,6) + '-' + set_date.substring(6,8); //calendar_obj.value = set_date; } calendar_close(); } function calendar_hide() { if(calendar_tt) window.clearTimeout(calendar_tt); calendar_close(); } function calendar_afterHide() { if(calendar_tt) window.clearTimeout(calendar_tt); this.t = window.setTimeout("calendar_hide()", 300); } function calendar_clearT() { if(calendar_tt) window.clearTimeout(calendar_tt); } function calendar(e, obj_name) { if(!e) var e = window.event; calendar_obj = document.getElementById(obj_name); var default_date = calendar_obj.value.replace(/[^0-9]/g, ''); if(default_date.length != 8) default_date = ''; if(!calendar_obj) { alert(calendar_obj + ' object is null'); return; } calendar_set(e); calendar_draw(default_date); if(hidden_select) show_select(); if(navigator.userAgent.indexOf('Chrome') == -1 && navigator.userAgent.indexOf('Firefox') == -1 && navigator.userAgent.indexOf('Safari') == -1) { var calendar_div = document.getElementById('calendar_div'); hide_select(parseInt(calendar_div.style.left), parseInt(calendar_div.style.top), parseInt(calendar_div.style.left) + parseInt(calendar_div.offsetWidth), parseInt(calendar_div.style.top) + parseInt(calendar_div.offsetHeight)); } }