//js/calendar.js // js calendar by jaewon // last_modified : 2009/08/06 // Usage : // // var calendar_div; var calendar_obj; var calendar_tt; // ex) calendar(event, 'object_name', 'YYYYMMDD') // fmt optionÀÌ ¾øÀ¸¸é ±âº»À¸·Î ¼³Á¤. // YYYY : ³â // MM : ¿ù // DD : ÀÏ var calendar_fmt = "YYYY-MM-DD"; // ¼û°Ü¾ß µÇ´Â 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; } // IE¿Í Maxton¿¡¼­ select elements¸¦ ¼û±è // ´Þ·Â ·¹À̾îÀÇ ÁÂÇ¥¸¦ Àμö·Î ³Ñ°Ü¼­ ÇØ´ç ÁÂÇ¥³»¿¡ select element°¡ ÀÖ´ÂÁö üũÇÏ´Â ¹æ½Ä 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); // XÃàÀÌ °ãÄ¡´ÂÁö üũÇϱâ À§ÇÑ º¯¼ö var x_cross = false; // YÃàÀÌ °ãÄ¡´ÂÁö üũÇϱâ À§ÇÑ º¯¼ö var y_cross = false; // ¼û°Ü¾ß ÇÒ select elements¸¦ ¹è¿­·Î µî·ÏÇÔ. hidden_select = new Array(); 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; // YÃàÀÌ ´Þ·Â ¿µ¿ª¿¡ Æ÷ÇԵǾî ÀÖ´ÂÁö üũ 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; // XÃàÀ̳ª YÃàÀÌ ´Þ·Â ·¹À̾î¿Í °ãÃÄÁö¸é ÇØ´ç select element¸¦ ¼û±è if(x_cross == true && y_cross == true) { selects[i].style.visibility = "hidden"; hidden_select[hidden_count++] = i; } } } // IE¿Í Maxton¿¡¼­ ¼û°ÜÁø select elements¸¦ ´Ù½Ã Ç¥½ÃÇØÁÜ. function show_select() { var selects = document.getElementsByTagName('select'); // hide_select function¿¡¼­ ¼û±ä select elements¸¦ ´Ù½Ã º¸¿©ÁÜ. for(var i=0; i document.body.clientWidth)? document.body.scrollWidth : document.body.clientWidth; } // Ŭ¸¯ÇÑ objectÀÇ ÁÂÇ¥¸¦ °¡Á®¿È var pos_x = 0; var pos_y = 0; var obj = click_obj; 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_y += click_obj.offsetHeight; if(s_width < pos_x + 160) { pos_x -= 160; pos_x += parseInt(click_obj.offsetWidth); } // ±âÁ¸¿¡ ¸¸µç ´Þ·Â ·¹À̾ ÀÖÀ¸¸é Àç»ç¿ë(ÁÂÇ¥´Â ´Ù½Ã °è»êÇÔ)ÇÏ°í ¾øÀ¸¸é »ý¼º calendar_div = document.getElementById('calendar_div'); if(!calendar_div) { calendar_div = document.createElement("DIV"); document.body.appendChild(calendar_div); } document.getElementById("layerPop2").style.display='block'; document.getElementById("wrap").style.display='none'; document.getElementById("footer").style.display='none'; calendar_div.id = "calendar_div"; calendar_div.style.cssText = "width:160px; background-color:#ffffff; border:3px; border-style:double; border-color:#c2c2c2;z-index:2000;"; calendar_div.style.position = "absolute"; calendar_div.style.top = pos_y + 'px'; calendar_div.style.left = pos_x + 'px'; calendar_div.style.visibility = "visible"; // mouseover »óÅ¿¡¼­´Â â´Ý±â ŸÀ̸Ӹ¦ Á¦°ÅÇÔ. calendar_div.onmouseover = function(e) { if(calendar_tt) window.clearTimeout(calendar_tt); } // mouseoutÀÌ µÇ¸é â´Ý±â ŸÀ̸Ӹ¦ ¼³Á¤ÇÔ // ¼³Á¤µÈ ½Ã°£ ÈÄ¿¡ âÀÌ ´ÝÈû calendar_div.onmouseout = function() { if(calendar_tt) window.clearTimeout(calendar_tt); calendar_tt = window.setTimeout("calendar_hide()", 300); } calendar_div.focus(); // ´õºíŬ¸¯Çصµ âÀÌ ´ÝÈ÷µµ·Ï.. //calendar_div.ondblclick = calendar_close; } // ´Þ·Â ·¹À̾ ´ÝÀ½ function calendar_close() { document.getElementById('calendar_div').style.visibility = "hidden"; document.getElementById('calendar_months').style.visibility = "hidden"; document.getElementById('calendar_years').style.visibility = "hidden"; document.getElementById("layerPop2").style.display='none'; document.getElementById("wrap").style.display='block'; document.getElementById("footer").style.display='block'; popup2.location.href="../mobile/empty.php"; if(hidden_select) show_select(); return false; } function calendar_years_change(calendar_y, calendar_m) { var calendar_years = document.getElementById('calendar_years'); var html = calendar_years_html(calendar_y, calendar_m); calendar_years.innerHTML = html; } // ³âµµ ·¹À̾î function calendar_years_html(calendar_y, calendar_m) { var html = ""; var margin_top = 0; var margin_left = 0; var prev_year, next_year; var year = Number(parseInt((Number(calendar_y) - 1) / 10) * 10 + 1); // ³âµµ¼±Åà ·¹ÀÌ¾î ¼³Á¤ for(var i=0; i<10; i++) { margin_top = (i >= 4)? 2 : 0; margin_left = (i % 4 == 0)? 0 : 2; html += "
"+String(year+i)+"
"; } prev_year = (year - i); next_year = (year + i); html += "
ÀÌÀü
"; html += "
´ÙÀ½
"; return html; } // ´Þ·Â ·¹À̾ ´Þ·ÂÀ» Ãâ·ÂÇÔ. function calendar_draw(set_date) { var days_arr = new Array(31,28,31,30,31,30,31,31,30,31,30,31); var html = ""; var calendar_date, calendar_t; // ´Þ·ÂÀ» ÀÔ·ÂÇÒ input boxÀÇ ¼ýÀÚ¸¸ °ËÃâÇÑ °ªÀÇ ÀÚ¸´¼ö°¡ 6ÀÚ¸® YYYYMM À̰ųª 8ÀÚ¸® YYYYMMDD¶ó¸é ÇØ´ç ³â¿ù¿¡ ¸Â°Ô ´Þ·ÂÀ» Ç¥½ÃÇÔ 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); } // ¿À´Ã ³¯Â¥¸¦ ±¸ÇÔ. (¿À´Ã³¯Â¥´Â font-weight:bold; ½ºÅ¸ÀÏ ÁöÁ¤) 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()); // ´Þ·ÂÀ» ÀÔ·ÂÇÒ input boxÀÇ °ªÀ¸·Î ±âº»°ªÀÌ ¼³Á¤µÇÁö ¾Ê¾Ò´Ù¸é ¿À´ÃÀ» ±âÁØÀ¸·Î ´Þ·ÂÀ» Ç¥½ÃÇÔ 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; // Èij⵵ var next_y = String(calendar_y+1) + calendar_m; // ³â, ¿ù, ´Ý±â ¹öư html html += ""; html += ""; html += ""; html += ""; // ¿äÀÏÇ¥½Ã html html += ""; html += ""; html += ""; html += ""; html += ""; html += ""; html += ""; html += ""; html += ""; // ´Þ·Â ½ÃÀÛÀÏÀÇ ¿äÀÏÀ» ±¸ÇÔ var week = calendar_t.getDay(); // ½ÃÀÛÀÏÀÌ ÀÏ¿äÀÏÀÌ ¾Æ´Ï¸é ºó TD Ãâ·Â for(var i=0; i 6) { html += ""; week = 0; } if(week == 0) { html += ""; } // ´Þ·ÂÀÇ ³â¿ù this_date = calendar_yymm; // Ç¥½ÃÀÏ this_date += (i <= 9)? String('0' + i) : String(i); style = "cursor:pointer; font-size:12px; text-align:center;"; // input boxÀÇ °ª°ú µ¿ÀÏÇÑ ³¯Àº underline Ç¥½Ã if(set_date == this_date) style += " text-decoration:underline;"; // ¿À´Ã³¯Â¥´Â ÁøÇÏ°Ô Ç¥½Ã if(today == this_date) style += " font-weight:bold;"; // ÀÏ¿äÀÏÀº »¡°£»ö if(week == 0) style += " color:red;"; // Åä¿äÀÏÀº ÆÄ¶õ»ö if(week == 6) style += " color:blue;"; html += ""; week ++; } // Åä¿äÀÏ·Î ³¡³ªÁö ¾Ê¾ÒÀ¸¸é ºó TD Ãâ·Â if(week < 6) { for(var i=week; i<=6; i++) { html += "\n"; } } html += ""; html += "
"; html += "¢¸ "; html += ""+calendar_y+" "; html += "¢º "; html += "¢¸ "; html += ""+calendar_m+" "; html += "¢º "; html += "X
ÀÏ¿ùÈ­¼ö¸ñ±ÝÅä
"+i+"
"; html += "
"; html += calendar_years_html(calendar_y, calendar_m); html += "
"; // ¿ù¼±Åà ·¹ÀÌ¾î ¼³Á¤ html += "
"; html += "
1
"; html += "
2
"; html += "
3
"; html += "
4
"; html += "
5
"; html += "
6
"; html += "
7
"; html += "
8
"; html += "
9
"; html += "
10
"; html += "
11
"; html += "
12
"; html += "
"; // ´Þ·Â Ç¥½Ã calendar_div.innerHTML = html; // IE/MaxtonÀ϶§ ¼û°ÜÁø select elements Ç¥½Ã if(hidden_select) show_select(); // Crome, Firefox, Safari°¡ ¾Æ´Ï¸é ´Þ·Â ¿µ¿ª°ú °ãÄ¡´Â select elements ¼û±è if(navigator.userAgent.indexOf('Chrome') == -1 && navigator.userAgent.indexOf('Firefox') == -1 && navigator.userAgent.indexOf('Safari') == -1) { 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)); } } // ¼±ÅÃÇÑ ³¯Â¥¸¦ input box¿¡ ³Ö¾îÁÜ. function calendar_set_date(set_date) { var week_arr_han = new Array("ÀÏ", "¿ù", "È­", "¼ö", "¸ñ", "±Ý", "Åä"); var week_arr_eng = new Array("Sun", "Mon", "Tue", "Wed", "The", "Fri", "Sat"); // FMT º¯°æ (YYYY-MM-DD) if(calendar_obj) { var year = set_date.substring(0,4); var month = set_date.substring(4,6); var day = set_date.substring(6,8); var sel_date = new Date(year, month - 1, day); var week = sel_date.getDay(); var calendar_value = calendar_fmt; calendar_value = calendar_value.replace(/yyyy/i, year); calendar_value = calendar_value.replace(/mm/i, month); calendar_value = calendar_value.replace(/dd/i, day); calendar_value = calendar_value.replace(/wh/i, week_arr_han[week]); calendar_value = calendar_value.replace(/we/i, week_arr_eng[week]); calendar_obj.value = calendar_value; // alert("¿©±â¿Óµû"); } calendar_close(); // input object¿¡ ³¯Â¥¸¦ ¼ÂÆÃÇϰí Ãß°¡ÀûÀ¸·Î ÀÛ¾÷ÇØ¾ßÇÒ °æ¿ì°¡ À־ // document¿¡ calendar_set_date_after functionÀÌ ÀÖÀ¸¸é ½ÇÇàÇÏ°Ô ÇÔ. // calendar_set_date_after() ¿¹Á¦ // if(document.getElementById('sdate').value < '2009-09-14') // { // alert('9¿ù 14ÀÏ º¸´Ù ÀÌÀüÀ» ¼±ÅÃÇÒ ¼ö ¾ø½À´Ï´Ù'); // } if(typeof calendar_set_date_after == 'function') { calendar_set_date_after(calendar_obj); } } // ´Þ·ÂÀ» ¼û±è function calendar_hide() { if(calendar_tt) window.clearTimeout(calendar_tt); calendar_close(); } // 300ms ÈÄ¿¡ ´Þ·ÂÀ» ¼û±è // mouseout¶§ ¹Ù·Î ´ÝÈ÷Áö ¾Ê°í ¾à°£ÀÇ ÅÒÀ» µÎ¾î ´Ù½Ã ¸¶¿ì½º°¡ °¬À»¶§ ´Þ·Â ·¹À̾ À¯ÁöÇϱâ À§ÇÔ function calendar_afterHide() { if(calendar_tt) window.clearTimeout(calendar_tt); calendar_tt = window.setTimeout("calendar_hide()", 300); } // ´Þ·Â ¼û±è ŸÀ̸Ӹ¦ »èÁ¦ÇÔ. function calendar_clearT() { if(calendar_tt) window.clearTimeout(calendar_tt); } // ³âµµ Ŭ¸¯½Ã ¿ù¼±Åà ·¹À̾ Ç¥½Ã/°¨Ãã // on -> off // off -> on function calendar_years_toggle() { var calendar_div = document.getElementById('calendar_div'); var calendar_years = document.getElementById('calendar_years'); var calendar_months = document.getElementById('calendar_months'); calendar_months.style.visibility = "hidden"; // ´Þ·ÂÀÇ ³â,¿ù,´Ý±â ºÎºÐÀº Ç¥½ÃµÇµµ·Ï »ó´Ü¿¡¼­ 20px ³»·Á¼­ Ç¥½ÃÇÔ. var top = parseInt(calendar_div.style.top) + 20; var left = parseInt(calendar_div.style.left); // position:absolute; ÀÌÁö¸¸ ´Þ·Â ·¹À̾îÀÇ »ó´ë¼º Àý´ëÁÂÇ¥·Î ÀνÄÇÔ. calendar_years.style.top = '20px'; calendar_years.style.left = '0px'; // ¿ù¼±Åà ·¹À̾î Åä±Û if(calendar_years.style.visibility == "hidden") calendar_years.style.visibility = "visible"; else calendar_years.style.visibility = "hidden"; } // ¿ù Ŭ¸¯½Ã ³âµµ¼±Åà ·¹À̾ Ç¥½Ã/°¨Ãã // on -> off // off -> on function calendar_months_toggle() { var calendar_div = document.getElementById('calendar_div'); var calendar_months = document.getElementById('calendar_months'); var calendar_years = document.getElementById('calendar_years'); calendar_years.style.visibility = "hidden"; // ´Þ·ÂÀÇ ³â,¿ù,´Ý±â ºÎºÐÀº Ç¥½ÃµÇµµ·Ï »ó´Ü¿¡¼­ 20px ³»·Á¼­ Ç¥½ÃÇÔ. var top = parseInt(calendar_div.style.top) + 20; var left = parseInt(calendar_div.style.left); // position:absolute; ÀÌÁö¸¸ ´Þ·Â ·¹À̾îÀÇ »ó´ë¼º Àý´ëÁÂÇ¥·Î ÀνÄÇÔ. calendar_months.style.top = '20px'; calendar_months.style.left = '0px'; // ¿ù¼±Åà ·¹À̾î Åä±Û if(calendar_months.style.visibility == "hidden") calendar_months.style.visibility = "visible"; else calendar_months.style.visibility = "hidden"; } // ´Þ·ÂÇ¥½Ã È£ÃâÇÔ¼ö onClick="calendar(event, 'ID')"·Î È£Ãâ function calendar(e, obj_name, fmt) { if(!e) var e = window.event; calendar_obj = document.getElementById(obj_name); // input objectÀÇ °ª¿¡¼­ ¼ýÀÚ¸¸ ÃßÃâÇÔ. var default_date = calendar_obj.value.replace(/[^0-9]/g, ''); // YYYYMM ȤÀº YYYYMMDD Çü½ÄÀÌ ¾Æ´Ï¸é ¹«½ÃÇÔ. if(default_date.length != 6 && default_date.length != 8) default_date = ''; // onClick="calendar(event, 'ID')"ÀÇ ID Object°¡ ¾øÀ¸¸é ´Þ·ÂÀ» Ç¥½ÃÇØµµ ³ÖÀ»°÷ÀÌ ¾øÀ¸¹Ç·Î ¿À·ùó¸® if(!calendar_obj) { alert(obj_name + ' object undefined'); return; } if(fmt) calendar_fmt = fmt; else calendar_fmt = "YYYY-MM-DD"; // ´Þ·Â ·¹À̾î ÃʱâÈ­ calendar_set(e); // ´Þ·Â Ç¥½Ã calendar_draw(default_date); }