// popup calendar date picker function popup_calendar(as_target, as_dt) { // initial date from argument user passed var ldt_current = (as_dt == null || as_dt =="") ? (new Date()) : (str2dt(as_dt)); //var ldt_prevyear = next_month(ldt_current, -12); //var ldt_nextyear = next_month(ldt_current, 12); var ldt_prevyear = next_year(ldt_current, -1); var ldt_nextyear = next_year(ldt_current, 1); var ldt_prevmon = next_month(ldt_current, -1); var ldt_nextmon = next_month(ldt_current, 1); var ldt_first = day_month(ldt_current, 1); var ldt_last = day_month(ldt_nextmon, 0); // calendar header var ls_html = "" + "\n" + "\n
\n" + "\n"; // print year & month titles ls_html += "\n" // previous month + "\n"; // previous year ls_html += "\n"; // show year/month (yyyy/mm) ls_html += "\n"; // next year ls_html += "\n"; // next month ls_html += "\n" + "\n"; // print weekdays titles var week_days = ["日", "一", "二", "三", "四", "五", "六"]; ls_html += "\n"; for (var li_wday=0; li_wday<7; li_wday++) { ls_html += "\n"; } ls_html += "\n"; // print days rows ldt_first.setDate(1 - (6+ldt_first.getDay())%7); // row(0,0)'s date var ldt_draw = new Date(ldt_first); while (ldt_draw.getMonth() == ldt_current.getMonth() || ldt_draw.getMonth() == ldt_first.getMonth()) { // print row heder ls_html += "\n"; for (var li_wday=0; li_wday<7; li_wday++) { // check date kind if (ldt_draw.getDate() == ldt_current.getDate() && ldt_draw.getMonth() == ldt_current.getMonth()){ // print current date ls_html += "\n"; // next date ldt_draw.setDate(ldt_draw.getDate()+1); } // print row footer ls_html += "\n"; } // print calendar footer ls_html += "
" + "" + "<" + "" + "<<" + "" + dt2ym1(ldt_current) + "" + "" + ">>" + "" + ">
" + "" + week_days[(li_wday+1)%7] + "
"; }else if (ldt_draw.getDay() == 0 || ldt_draw.getDay() == 6){ // weekend days ls_html += ""; } else{ // print working days of current month ls_html += ""; } if (ldt_draw.getMonth() == ldt_current.getMonth()){ // print days of current month ls_html += "" + ""; } else { // print days of other months ls_html += "" + ""; } // date text ls_html += ldt_draw.getDate() + "
\n
"; $(".calendar").html(ls_html); } // popup calendar date picker function popup_calendar2(as_target, as_dt , as_target2) { // initial date from argument user passed var ldt_current = (as_dt == null || as_dt =="") ? (new Date()) : (str2dt(as_dt)); //var ldt_prevyear = next_month(ldt_current, -12); //var ldt_nextyear = next_month(ldt_current, 12); var ldt_prevyear = next_year(ldt_current, -1); var ldt_nextyear = next_year(ldt_current, 1); var ldt_prevmon = next_month(ldt_current, -1); var ldt_nextmon = next_month(ldt_current, 1); var ldt_first = day_month(ldt_current, 1); var ldt_last = day_month(ldt_nextmon, 0); // calendar header var ls_html = + "" + "\n" + "\n
\n" + "\n"; // print year & month titles ls_html += "\n" // previous month + "\n" // previous year + "\n" // show year/month (yyyy/mm) + "\n" // next year + "\n" // next month + "\n" + "\n"; // print weekdays titles var week_days = ["日", "一", "二", "三", "四", "五", "六"]; ls_html += "\n"; for (var li_wday=0; li_wday<7; li_wday++) { ls_html += "\n"; } ls_html += "\n"; // print days rows ldt_first.setDate(1 - (6+ldt_first.getDay())%7); // row(0,0)'s date var ldt_draw = new Date(ldt_first); while (ldt_draw.getMonth() == ldt_current.getMonth() || ldt_draw.getMonth() == ldt_first.getMonth()) { // print row heder ls_html += "\n"; for (var li_wday=0; li_wday<7; li_wday++) { // check date kind if (ldt_draw.getDate() == ldt_current.getDate() && ldt_draw.getMonth() == ldt_current.getMonth()) // print current date ls_html += "\n"; // next date ldt_draw.setDate(ldt_draw.getDate()+1); } // print row footer ls_html += "\n"; } // print calendar footer ls_html += "
" + "" + "<" + "" + "<<" + "" + dt2ym1(ldt_current) + "" + "" + ">>" + "" + ">
" + "" + week_days[(li_wday+1)%7] + "
"; else if (ldt_draw.getDay() == 0 || ldt_draw.getDay() == 6) // weekend days ls_html += ""; else // print working days of current month ls_html += ""; if (ldt_draw.getMonth() == ldt_current.getMonth()) { // print days of current month var now = DateAdd("d",-1,new Date()); var beforeThreeDay = addDate(ldt_draw.getFullYear(),ldt_draw.getMonth(),ldt_draw.getDate(),ldt_draw.getHours(),0,-3); if(dt2ymd(now) >= dt2ymd(beforeThreeDay)) ls_html += "" + ""; else ls_html += "" + ""; }else { // print days of other months var now = DateAdd("d",-1,new Date()); var beforeThreeDay = addDate(ldt_draw.getFullYear(),ldt_draw.getMonth(),ldt_draw.getDate(),ldt_draw.getHours(),0,-3); if(dt2ymd(now) >= dt2ymd(beforeThreeDay)) ls_html += "" + ""; else ls_html += "" + ""; } // date text ls_html += ldt_draw.getDate() + "
\n
"; // open calendar $(".calendar").replaceWith(ls_html); } function addDate(dy,dmomth,dd,dh,dm,dadd){ var a = new Date(dy,dmomth,dd,dh,dm) a = a.valueOf() a = a + dadd * 1 * 24 * 60 * 60 * 1000 a = new Date(a) return a; } function displayCalendar(begin_month, begin_day, end_month, end_day) { var ldt_current = new Date(); var ldt_first = day_month(ldt_current, 1); var ls_html = "\n" + " \n"; ls_html += " \n"; ls_html += "
\n" + " \n"; ls_html += " \n" + " \n" + " \n"; var week_days = ["日", "一", "二", "三", "四", "五", "六"]; ls_html += " \n"; for (var li_wday=0; li_wday<7; li_wday++) { ls_html += " \n"; } ls_html += " \n"; ldt_first.setDate(1 - (6+ldt_first.getDay())%7); var ldt_draw = new Date(ldt_first); while (ldt_draw.getMonth() == ldt_current.getMonth() || ldt_draw.getMonth() == ldt_first.getMonth()) { ls_html += " \n"; for (var li_wday=0; li_wday<7; li_wday++) { if (ldt_draw.getDate() == ldt_current.getDate() && ldt_draw.getMonth() == ldt_current.getMonth()) { ls_html += " \n"; ldt_draw.setDate(ldt_draw.getDate()+1); } ls_html += " \n"; } ls_html += "
" + "" + dt2ym1(ldt_current) + "
" + "" + week_days[(li_wday+1)%7] + "
"; } else if (ldt_draw.getDay() == 0 || ldt_draw.getDay() == 6) { ls_html += " "; } else { ls_html += " "; } if (ldt_draw.getMonth() == ldt_current.getMonth()) { if (parseInt(end_month, 10) == (ldt_draw.getMonth() + 1)) { if (ldt_draw.getDate() >= parseInt(begin_day, 10) && ldt_draw.getDate() <= parseInt(end_day, 10)) { ls_html += ""; } else { ls_html += ""; } } else { ls_html += ""; } } else { ls_html += ""; } ls_html += ldt_draw.getDate() + "
\n"; ls_html += "
\n"; $(".calendar").replaceWith(ls_html); } // next month's date function next_year(adt_data, li_years) { var last_day = adt_data.getDate(); var ldt_ret = new Date(adt_data.getFullYear()+li_years, adt_data.getMonth()+1, 0); if (last_day < ldt_ret.getDate()) { ldt_ret.setDate(last_day); } return ldt_ret; } // next month's date function next_month(adt_data, li_mons) { //var ldt_ret = new Date(adt_data); //ldt_ret.setMonth(adt_data.getMonth() + li_mons); var last_day = adt_data.getDate(); var ldt_ret = new Date(adt_data.getFullYear(), (adt_data.getMonth()+1+li_mons), 0); if (last_day < ldt_ret.getDate()) { ldt_ret.setDate(last_day); } return ldt_ret; } // assigned date to day of the month function day_month(adt_data, li_day) { var ldt_ret = new Date(adt_data); ldt_ret.setDate(li_day); return ldt_ret; } // convert string to date function str2dt(as_data) { // var re_date = /^(\d+)\/(\d+)\/(\d+)\s+$/; // free tail space var re_date = /^(\d+)\/(\d+)\/(\d+)$/; // if ilegal format return today() if (!re_date.exec(as_data)) { alert("wrong: "+ as_data); return (new Date()); } // if not legal month or date return today() if (RegExp.$2 > 12 || RegExp.$3 > 31) { alert("wrong: "+ as_data); return (new Date()); } var year = parseInt(RegExp.$1, 10) + 1911; return (new Date(year, RegExp.$2-1, RegExp.$3)); } // convert date to yyyy/mm/dd string function dt2ymd(adt_data) { return (adt_data.getFullYear()-1911) + "/" + (adt_data.getMonth() < 9 ? "0" : "") + (adt_data.getMonth()+1) + "/" + (adt_data.getDate() < 10 ? "0" : "") + adt_data.getDate(); } // convert date to yyyy/mm string function dt2ym(adt_data) { return adt_data.getFullYear() + "/" + (adt_data.getMonth() < 9 ? "0" : "") + (adt_data.getMonth()+1) } function dt2ym1(adt_data) { var adt_fmt = (adt_data.getFullYear()-1911)+ " 年" + (adt_data.getMonth()+1) + " 月"; return adt_fmt; }