var
calUtil = {
showYear:2015,
showMonth:1,
showDays:1,
eventName:
"load"
,
init:
function
(signList){
calUtil.setMonthAndDay();
calUtil.draw(signList);
calUtil.bindEnvent();
},
draw:
function
(signList){
var
str = calUtil.drawCal(calUtil.showYear,calUtil.showMonth,signList);
$(
"#calendar"
).html(str);
var
calendarName=calUtil.showYear+
"年"
+calUtil.showMonth+
"月"
;
$(
".calendar_month_span"
).html(calendarName);
},
bindEnvent:
function
(){
$(
".calendar_month_prev"
).click(
function
(){
var
signList=[{
"signDay"
:
"10"
},{
"signDay"
:
"11"
},{
"signDay"
:
"12"
},{
"signDay"
:
"13"
}];
calUtil.eventName=
"prev"
;
calUtil.init(signList);
});
$(
".calendar_month_next"
).click(
function
(){
var
signList=[{
"signDay"
:
"10"
},{
"signDay"
:
"11"
},{
"signDay"
:
"12"
},{
"signDay"
:
"13"
}];
calUtil.eventName=
"next"
;
calUtil.init(signList);
});
},
setMonthAndDay:
function
(){
switch
(calUtil.eventName)
{
case
"load"
:
var
current =
new
Date
();
calUtil.showYear=current.getFullYear();
calUtil.showMonth=current.getMonth() + 1;
break
;
case
"prev"
:
var
nowMonth=$(
".calendar_month_span"
).html().split(
"年"
)[1].split(
"月"
)[0];
calUtil.showMonth=parseInt(nowMonth)-1;
if
(calUtil.showMonth==0)
{
calUtil.showMonth=12;
calUtil.showYear-=1;
}
break
;
case
"next"
:
var
nowMonth=$(
".calendar_month_span"
).html().split(
"年"
)[1].split(
"月"
)[0];
calUtil.showMonth=parseInt(nowMonth)+1;
if
(calUtil.showMonth==13)
{
calUtil.showMonth=1;
calUtil.showYear+=1;
}
break
;
}
},
getDaysInmonth :
function
(iMonth, iYear){
var
dPrevDate =
new
Date
(iYear, iMonth, 0);
return
dPrevDate.
getDate
();
},
bulidCal :
function
(iYear, iMonth) {
var
aMonth =
new
Array();
aMonth[0] =
new
Array(7);
aMonth[1] =
new
Array(7);
aMonth[2] =
new
Array(7);
aMonth[3] =
new
Array(7);
aMonth[4] =
new
Array(7);
aMonth[5] =
new
Array(7);
aMonth[6] =
new
Array(7);
var
dCalDate =
new
Date
(iYear, iMonth - 1, 1);
var
iDayOfFirst = dCalDate.getDay();
var
iDaysInMonth = calUtil.getDaysInmonth(iMonth, iYear);
var
iVarDate = 1;
var
d, w;
aMonth[0][0] =
"日"
;
aMonth[0][1] =
"一"
;
aMonth[0][2] =
"二"
;
aMonth[0][3] =
"三"
;
aMonth[0][4] =
"四"
;
aMonth[0][5] =
"五"
;
aMonth[0][6] =
"六"
;
for
(d = iDayOfFirst; d < 7; d++) {
aMonth[1][d] = iVarDate;
iVarDate++;
}
for
(w = 2; w < 7; w++) {
for
(d = 0; d < 7; d++) {
if
(iVarDate <= iDaysInMonth) {
aMonth[w][d] = iVarDate;
iVarDate++;
}
}
}
return
aMonth;
},
ifHasSigned :
function
(signList,day){
var
signed = false;
$.each(signList,
function
(index,item){
if
(item.signDay == day) {
signed = true;
return
false;
}
});
return
signed ;
},
drawCal :
function
(iYear, iMonth ,signList) {
var
myMonth = calUtil.bulidCal(iYear, iMonth);
var
htmls =
new
Array();
htmls.push(
"<div class='sign_main' id='sign_layer'>"
);
htmls.push(
"<div class='sign_succ_calendar_title'>"
);
htmls.push(
"<div class='calendar_month_next'>下月</div>"
);
htmls.push(
"<div class='calendar_month_prev'>上月</div>"
);
htmls.push(
"<div class='calendar_month_span'></div>"
);
htmls.push(
"</div>"
);
htmls.push(
"<div class='sign' id='sign_cal'>"
);
htmls.push(
"<table>"
);
htmls.push(
"<tr>"
);
htmls.push(
"<th>"
+ myMonth[0][0] +
"</th>"
);
htmls.push(
"<th>"
+ myMonth[0][1] +
"</th>"
);
htmls.push(
"<th>"
+ myMonth[0][2] +
"</th>"
);
htmls.push(
"<th>"
+ myMonth[0][3] +
"</th>"
);
htmls.push(
"<th>"
+ myMonth[0][4] +
"</th>"
);
htmls.push(
"<th>"
+ myMonth[0][5] +
"</th>"
);
htmls.push(
"<th>"
+ myMonth[0][6] +
"</th>"
);
htmls.push(
"</tr>"
);
var
d, w;
for
(w = 1; w < 7; w++) {
htmls.push(
"<tr>"
);
for
(d = 0; d < 7; d++) {
var
ifHasSigned = calUtil.ifHasSigned(signList,myMonth[w][d]);
console.log(ifHasSigned);
if
(ifHasSigned){
htmls.push(
"<td class='on'>"
+ (!isNaN(myMonth[w][d]) ? myMonth[w][d] :
" "
) +
"</td>"
);
}
else
{
htmls.push(
"<td>"
+ (!isNaN(myMonth[w][d]) ? myMonth[w][d] :
" "
) +
"</td>"
);
}
}
htmls.push(
"</tr>"
);
}
htmls.push(
"</table>"
);
htmls.push(
"</div>"
);
htmls.push(
"</div>"
);
return
htmls.join(
''
);
}
};