// 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";
// print year & month titles
ls_html +=
"\n"
// previous month
+ ""
+ ""
+ "< | \n";
// previous year
ls_html += ""
+ ""
+ "<< | \n";
// show year/month (yyyy/mm)
ls_html += ""
+ ""
+ dt2ym1(ldt_current) + " | \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 +=
""
+ ""
+ week_days[(li_wday+1)%7]
+ " | \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 += "";
}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";
// next date
ldt_draw.setDate(ldt_draw.getDate()+1);
}
// print row footer
ls_html += " \n";
}
// print calendar footer
ls_html += " \n |
\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";
// print year & month titles
ls_html +=
"\n"
// previous month
+ ""
+ ""
+ "< | \n"
// previous year
+ ""
+ ""
+ "<< | \n"
// show year/month (yyyy/mm)
+ ""
+ ""
+ dt2ym1(ldt_current) + " | \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 +=
""
+ ""
+ week_days[(li_wday+1)%7]
+ " | \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 += "";
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";
// next date
ldt_draw.setDate(ldt_draw.getDate()+1);
}
// print row footer
ls_html += " \n";
}
// print calendar footer
ls_html += " \n |
\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"
+ " \n";
ls_html += " \n"
+ " "
+ ""
+ dt2ym1(ldt_current) + " | \n"
+ " \n";
var week_days = ["日",
"一",
"二",
"三",
"四",
"五",
"六"];
ls_html += " \n";
for (var li_wday=0; li_wday<7; li_wday++) {
ls_html += " "
+ ""
+ week_days[(li_wday+1)%7]
+ " | \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 += " ";
}
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";
ldt_draw.setDate(ldt_draw.getDate()+1);
}
ls_html += " \n";
}
ls_html += " \n";
ls_html += " | \n";
ls_html += "
\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;
}