///
///
///
DateSelectBox = function () {
this.ControlID = "Window_DateSelectBox";
this.ParentElement = null; //要加入的父容器
var My = this;
var cmdPrevMonth = My.ControlID + "_" + "cmdPrevMonth";
var txtYear = My.ControlID + "_" + "txtYear";
var listYearName = My.ControlID + "_" + "listYearName";
var txtMonth = My.ControlID + "_" + "txtMonth";
var listMonthName = My.ControlID + "_" + "listMonthName";
var cmdNextMonth = My.ControlID + "_" + "cmdNextMonth";
var ListDateDay = My.ControlID + "_" + "ListDateDay";
var cmdPrevYear = My.ControlID + "_" + "cmdPrevYear";
var cmdPrevMonth2 = My.ControlID + "_" + "cmdPrevMonth2";
var cmdDay = My.ControlID + "_" + "cmdDay";
var cmdNextMonth2 = My.ControlID + "_" + "cmdNextMonth2";
var cmdNextYear = My.ControlID + "_" + "cmdNextYear";
var cmdClose = My.ControlID + "_" + "cmdClose";
var cmdMenu = My.ControlID + "_" + "cmdMenu";
var SelectYear = 0;
var SelectMonth = 0;
var SelectDate = null;
var ListDate = new Array();
var EventHandler = new Sys.EventHandlerList();
//#region 加载
this.Load = function () {
Init();
var CurrentDate = new Date();
SelectYear = CurrentDate.getFullYear();
SelectMonth = CurrentDate.getMonth() + 1;
BindDateTime();
$("#" + txtYear + ",#" + txtMonth, My.ParentElement).hover(function () {
$(this).css("background-color", "#ffd700");
}, function () {
$(this).css("background-color", "");
});
$("#" + cmdPrevYear, My.ParentElement).live("click", function () {
SelectYear -= 1;
$("#" + txtYear, My.ParentElement).html(SelectYear + "年").show();
$("#" + txtMonth, My.ParentElement).html(SelectMonth + "月").show();
$("#" + listYearName, My.ParentElement).hide();
$("#" + listMonthName, My.ParentElement).hide();
BindDateTime();
});
$("#" + cmdNextYear, My.ParentElement).live("click", function () {
SelectYear += 1;
$("#" + txtYear, My.ParentElement).html(SelectYear + "年").show();
$("#" + txtMonth, My.ParentElement).html(SelectMonth + "月").show();
$("#" + listYearName, My.ParentElement).hide();
$("#" + listMonthName, My.ParentElement).hide();
BindDateTime();
});
$("#" + cmdPrevMonth + ",#" + cmdPrevMonth2, My.ParentElement).live("click", function () {
SelectMonth -= 1;
if (SelectMonth == 0) { SelectMonth = 12; SelectYear--; }
$("#" + txtYear, My.ParentElement).html(SelectYear + "年").show();
$("#" + txtMonth, My.ParentElement).html(SelectMonth + "月").show();
$("#" + listYearName, My.ParentElement).hide();
$("#" + listMonthName, My.ParentElement).hide();
BindDateTime();
});
$("#" + cmdNextMonth + ",#" + cmdNextMonth2, My.ParentElement).live("click", function () {
SelectMonth += 1;
if (SelectMonth == 13) { SelectMonth = 1; SelectYear++; }
$("#" + txtYear, My.ParentElement).html(SelectYear + "年").show();
$("#" + txtMonth, My.ParentElement).html(SelectMonth + "月").show();
$("#" + listYearName, My.ParentElement).hide();
$("#" + listMonthName, My.ParentElement).hide();
BindDateTime();
});
$('#' + listYearName, My.ParentElement).live("change", function () {
SelectYear = parseInt($(this).val());
$("#" + txtYear, My.ParentElement).html(SelectYear + "年").show();
$("#" + listYearName, My.ParentElement).hide();
BindDateTime();
});
$('#' + listMonthName, My.ParentElement).live("change", function () {
SelectMonth = parseInt($(this).val());
$("#" + txtMonth, My.ParentElement).html(SelectMonth + "月").show();
$("#" + listMonthName, My.ParentElement).hide();
BindDateTime();
});
$("#" + txtYear, My.ParentElement).click(function () {
BindListYear();
$("#" + txtYear, My.ParentElement).hide();
$("#" + listYearName, My.ParentElement).show();
$("#" + listMonthName, My.ParentElement).hide();
$("#" + txtMonth, My.ParentElement).html(SelectMonth + "月").show();
});
$("#" + txtMonth, My.ParentElement).click(function () {
$("#" + txtMonth, My.ParentElement).hide();
$("#" + listMonthName, My.ParentElement).show();
$("#" + listYearName, My.ParentElement).hide();
$("#" + txtYear, My.ParentElement).html(SelectYear + "年").show();
$("#" + listMonthName, My.ParentElement).val(SelectMonth);
});
$("#" + cmdClose, My.ParentElement).live("click", function () {
$.fancybox.close();
});
$("#" + ListDateDay + " :checkbox", My.ParentElement).live("click", function () {
var cDate = $(this).val();
if (this.checked == true) {
ListDate.push(cDate);
} else {
for (var i = ListDate.length - 1; i >= 0; i--) {
if (ListDate[i] == cDate) { Array.removeAt(ListDate,i); break; }
}
}
OnSelectChange();
});
}
//#endregion
//#region 初始化
function Init() {
if (My.ParentElement == null) My.ParentElement = $(document.body);
if ($("#" + My.ControlID, My.ParentElement).length > 0) return;
var htmlString = new Sys.StringBuilder();
htmlString.append("
");
htmlString.append("
");
htmlString.append('
');
htmlString.append('');
htmlString.append('');
htmlString.append('');
htmlString.append('');
htmlString.append('< | ');
htmlString.append('');
htmlString.append('2012年');
htmlString.append('');
htmlString.append(' | ');
htmlString.append('');
htmlString.append('2月');
htmlString.append('');
htmlString.append(' | ');
htmlString.append('> | ');
htmlString.append(' ');
htmlString.append(' ');
htmlString.append(' | ');
htmlString.append('
');
htmlString.append('');
htmlString.append('');
htmlString.append('');
htmlString.append(' ');
htmlString.append(' |
');
htmlString.append('');
htmlString.append('');
htmlString.append(' |
');
htmlString.append('
');
htmlString.append("
");
htmlString.append("
");
My.ParentElement.append(htmlString.toString());
}
//#endregion
//#region 显示
this.Show = function (obj) {
ListDate = obj;
if (ListDate == null) ListDate = new Array();
//SelectDate = null;
//var CurrentDate = new Date();
//SelectYear = CurrentDate.getFullYear();
//SelectMonth = CurrentDate.getMonth() + 1;
//$("#" + listMonthName, My.ParentElement).hide()
//$("#" + listYearName, My.ParentElement).hide();
BindDateTime();
$.fancybox({
'autoScale': false,
'transitionIn': 'elastic',
'transitionOut': 'elastic',
'href': '#' + My.ControlID,
'onStart': function () {
}
}, 0);
}
//#endregion
//#region 绑定年份下拉框
function BindListYear() {
var html = new Sys.StringBuilder();
for (var i = SelectYear - 20; i < SelectYear; i++) {
html.append("");
}
for (var i = SelectYear; i < SelectYear + 20; i++) {
if (i == SelectYear) { html.append(""); }
else { html.append(""); }
}
$('#' + listYearName, My.ParentElement).html(html.toString());
}
//#endregion
//#region 绑定日期
function BindDateTime() {
var SelectDateTime = Date.parseInvariant(SelectYear + "-" + SelectMonth + "-1", "yyyy-M-d");
$("#" + txtYear, My.ParentElement).html(SelectYear + "年").show();
$("#" + txtMonth, My.ParentElement).html(SelectMonth + "月").show();
var week = SelectDateTime.getDay();
var day = SelectDateTime.getDate() - week;
var StartDate = CloneDate(SelectDateTime);
StartDate.setDate(day);
var html = new Sys.StringBuilder();
var index = 0;
var CurrentYear = 0;
var CurrentMonth = 0;
var CurrentDay = 0;
if (SelectDate != null) {
CurrentYear = SelectDate.getFullYear();
CurrentMonth = SelectDate.getMonth() + 1;
CurrentDay = SelectDate.getDate();
}
var ToDate = new Date();
var ToYear = ToDate.getFullYear();
var ToMonth = ToDate.getMonth() + 1;
var ToDay = ToDate.getDate();
for (var i = 1; i < 40; i++) {
if (index == 0) html.append('');
var month = StartDate.getMonth() + 1;
var year = StartDate.getFullYear();
day = StartDate.getDate();
var cDate = year + "-" + month + "-" + day;
var checkState = 0;
$(ListDate).each(function () {
if (this == cDate) { checkState=1; return false; }
});
var FontColor = "";
if (index == 0 || index==6) FontColor = "color: red;";
var TdColor = "background-color: #e0e0e0;";
if (year == ToYear && month == ToMonth && day == ToDay) TdColor = "background-color: #ffd700;";
if (year == CurrentYear && month == CurrentMonth && day == CurrentDay) TdColor = "background-color: #00ffff;";
html.append('' + day + ' | ");
index++;
if (index == 7) { html.append('
'); index = 0; }
StartDate.setDate(day + 1);
}
html.append(' | ');
$("#" + ListDateDay + " tr[name='DataGridRow']", My.ParentElement).remove();
$("#" + ListDateDay, My.ParentElement).append(html.toString());
}
//#endregion
//#region 复制日期
function CloneDate(datetime, s) {
var dt = new Date();
dt.setFullYear(datetime.getFullYear());
dt.setMonth(datetime.getMonth());
dt.setDate(datetime.getDate());
dt.setHours(datetime.getHours());
dt.setMinutes(datetime.getMinutes());
dt.setSeconds(datetime.getSeconds());
dt.setMilliseconds(datetime.getMilliseconds());
return dt;
}
//#endregion
//#region 点击确定时触发
this.SelectChange = function (handler) {
EventHandler.addHandler('SelectChange', handler);
}
//#endregion
//#region 点击确定时触发
function OnSelectChange() {
var h = EventHandler.getHandler('SelectChange');
if (h) h(ListDate);
}
//#endregion
}