", 1, -1);
this._nav_pm.width = 25;
this._nav_pm.ttip = Calendar._TT["PREV_MONTH"];
//月份显示
this.title2 = hh("", 1, 302);
this.title2.className = "title";
this.title2.width = 28;
this.title2.ttip = Calendar._TT["SHOW_MONTH"];
//下一年按鈕
this._nav_nm = hh("
", 1, 1);
this._nav_nm.width = 25;
this._nav_nm.ttip = Calendar._TT["NEXT_MONTH"];
if (this.isPopup) {
this.title.ttip = Calendar._TT["DRAG_TO_MOVE"];
var td_close = hh("
", 1, 200);
td_close.ttip = Calendar._TT["CLOSE"];
td_close.align = "right";
}
row = Calendar.createElement("tr", thead);
row.className = "daynames";
if (this.weekNumbers) {
cell = Calendar.createElement("td", row);
cell.className = "name wn";
cell.appendChild(document.createTextNode(Calendar._TT["WK"]));
//去掉周
}
for (var i = 7; i > 0; --i) {
cell = Calendar.createElement("td", row);
cell.appendChild(document.createTextNode(""));
if (!i) {
cell.navtype = 100;
cell.calendar = this;
Calendar._add_evs(cell);
}
}
this.firstdayname = (this.weekNumbers) ? row.firstChild.nextSibling : row.firstChild;
this._displayWeekdays();
var tbody = Calendar.createElement("tbody", table);
this.tbody = tbody;
for (i = 6; i > 0; --i) {
row = Calendar.createElement("tr", tbody);
if (this.weekNumbers) {
cell = Calendar.createElement("td", row);
cell.appendChild(document.createTextNode(""));
}
for (var j = 7; j > 0; --j) {
cell = Calendar.createElement("td", row);
cell.appendChild(document.createTextNode(""));
cell.calendar = this;
Calendar._add_evs(cell);
}
}
var tfoot = Calendar.createElement("tfoot", table);
row = Calendar.createElement("tr", tfoot);
row.className = "footrow";
row.height = 26;
cell = hh(Calendar._TT["SEL_DATE"], this.weekNumbers ? 8 : 7, 300);
cell.className = "ttip";
if (this.isPopup) {
cell.ttip = Calendar._TT["DRAG_TO_MOVE"];
}
this.tooltips = cell;
//添加月份html
div = Calendar.createElement("div", this.element);
this.monthsCombo = div;
div.className = "combo";
div.style.width = "60px";
for (i = 0; i < Calendar._MN.length; ++i) {
var mn = Calendar.createElement("div");
mn.className = "label";
mn.month = i;
mn.appendChild(document.createTextNode(Calendar._MN3[i]));
if (i % 2)
mn.style.float = "right";
else
mn.style.float = "left";
mn.navtype = 303;
mn.calendar = this;
Calendar._add_evs(mn);
div.appendChild(mn);
}
//添加年份份html
div = Calendar.createElement("div", this.element);
this.yearsCombo = div;
div.className = "combo";
div.style.width = "65px";
for (i = 0; i < 20; i++) {
var yr = Calendar.createElement("div");
yr.className = "label";
yr.appendChild(document.createTextNode(""));
if (i % 2)
yr.style.float = "right";
else
yr.style.float = "left";
if (i == 0) {
yr.navtype = 305;//年选择浮层中的上翻下翻事件类型
}
else if(i == 1){
yr.navtype = 306;//年选择浮层中的上翻下翻事件类型
}
else {
yr.navtype = 304;//年选择浮层中的点击具体年份事件类型
}
yr.calendar = this;
Calendar._add_evs(yr);
div.appendChild(yr);
}
this._init(this.mondayFirst, this.date);
parent.appendChild(this.element);
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar._keyEvent = function (ev) {
if (!window.calendar) {
return false;
}
(Calendar.is_ie) && (ev = window.event);
var cal = window.calendar;
var act = (Calendar.is_ie || ev.type == "keypress");
if (ev.ctrlKey) {
switch (ev.keyCode) {
case 37: // KEY left
act && Calendar.cellClick(cal._nav_pm);
break;
case 38: // KEY up
act && Calendar.cellClick(cal._nav_py);
break;
case 39: // KEY right
act && Calendar.cellClick(cal._nav_nm);
break;
case 40: // KEY down
act && Calendar.cellClick(cal._nav_ny);
break;
default:
return false;
}
} else switch (ev.keyCode) {
case 32:
Calendar.cellClick(cal._nav_now);
break;
case 27:
act && cal.hide();
break;
case 37: // KEY left
case 38: // KEY up
case 39: // KEY right
case 40: // KEY down
if (act) {
var date = cal.date.getDate() - 1;
var el = cal.currentDateEl;
var ne = null;
var prev = (ev.keyCode == 37) || (ev.keyCode == 38);
switch (ev.keyCode) {
case 37: // KEY left
(--date >= 0) && (ne = cal.ar_days[date]);
break;
case 38: // KEY up
date -= 7;
(date >= 0) && (ne = cal.ar_days[date]);
break;
case 39: // KEY right
(++date < cal.ar_days.length) && (ne = cal.ar_days[date]);
break;
case 40: // KEY down
date += 7;
(date < cal.ar_days.length) && (ne = cal.ar_days[date]);
break;
}
if (!ne) {
if (prev) {
Calendar.cellClick(cal._nav_pm);
} else {
Calendar.cellClick(cal._nav_nm);
}
date = (prev) ? cal.date.getMonthDays() : 1;
el = cal.currentDateEl;
ne = cal.ar_days[date - 1];
}
Calendar.removeClass(el, "selected");
Calendar.addClass(ne, "selected");
cal.date.setDate(ne.caldate);
cal.callHandler();
cal.currentDateEl = ne;
}
break;
case 13: // KEY enter
if (act) {
cal.callHandler();
cal.hide();
}
break;
default:
return false;
}
return Calendar.stopEvent(ev);
};
/**
* (RE)Initializes the calendar to the given date and style (if mondayFirst is
* true it makes Monday the first day of week, otherwise the weeks start on
* Sunday
*/
Calendar.prototype._init = function (mondayFirst, date) {
var today = new Date();
var year = date.getFullYear();
if (year < this.minYear) {
year = this.minYear;
date.setFullYear(year);
} else if (year > this.maxYear) {
year = this.maxYear;
date.setFullYear(year);
}
this.mondayFirst = mondayFirst;
this.date = new Date(date);
var month = date.getMonth();
var mday = date.getDate();
var no_days = date.getMonthDays();
date.setDate(1);
var wday = date.getDay();
var MON = mondayFirst ? 1 : 0;
var SAT = mondayFirst ? 5 : 6;
var SUN = mondayFirst ? 6 : 0;
if (mondayFirst) {
wday = (wday > 0) ? (wday - 1) : 6;
}
var iday = 1;
var row = this.tbody.firstChild;
var MN = Calendar._MN3[month];
var hasToday = ((today.getFullYear() == year) && (today.getMonth() == month));
var todayDate = today.getDate();
var week_number = date.getWeekNumber();
var ar_days = new Array();
for (var i = 0; i < 6; ++i) {
if (iday > no_days) {
row.className = "emptyrow";
row = row.nextSibling;
continue;
}
var cell = row.firstChild;
if (this.weekNumbers) {
cell.className = "day wn";
cell.firstChild.data = week_number;
cell = cell.nextSibling;
}
++week_number;
row.className = "daysrow";
for (var j = 0; j < 7; ++j) {
cell.className = "day";
if ((!i && j < wday) || iday > no_days) {
// cell.className = "emptycell";
cell.innerHTML = " ";
cell.disabled = true;
cell = cell.nextSibling;
continue;
}
cell.disabled = false;
cell.firstChild.data = iday;
if (typeof this.checkDisabled == "function") {
date.setDate(iday);
if (this.checkDisabled(date)) {
cell.className += " disabled";
cell.disabled = true;
}
}
if (!cell.disabled) {
ar_days[ar_days.length] = cell;
cell.caldate = iday;
cell.ttip = "_";
if (iday == mday) {
cell.className += " selected";
this.currentDateEl = cell;
}
if (hasToday && (iday == todayDate)) {
cell.className += " today";
cell.ttip += Calendar._TT["PART_TODAY"];
}
if (wday == SAT || wday == SUN) {
cell.className += " weekend";
}
}
++iday;
((++wday) ^ 7) || (wday = 0);
cell = cell.nextSibling;
}
row = row.nextSibling;
}
this.ar_days = ar_days;
//this.title.firstChild.data = year + "年";
this.title.firstChild.data = year + "";
this.title2.firstChild.data = Calendar._MN[month];
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.setDate = function (date) {
if (!date.equalsTo(this.date)) {
this._init(this.mondayFirst, date);
}
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.refresh = function () {
this._init(this.mondayFirst, this.date);
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.setMondayFirst = function (mondayFirst) {
this._init(mondayFirst, this.date);
this._displayWeekdays();
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.setDisabledHandler = function (unaryFunction) {
this.checkDisabled = unaryFunction;
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.setRange = function (a, z) {
this.minYear = a;
this.maxYear = z;
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.callHandler = function () {
if (this.onSelected) {
this.onSelected(this, this.date.print(this.dateFormat));
}
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.callCloseHandler = function () {
if (this.onClose) {
this.onClose(this);
}
var el_div = document.getElementById("calincrH_div")
if (el_div) {
el_div.style.display = "none";
}
this.hideShowCovered();
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.destroy = function () {
var el = this.element.parentNode;
el.removeChild(this.element);
Calendar._C = null;
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.reparent = function (new_parent) {
var el = this.element;
el.parentNode.removeChild(el);
new_parent.appendChild(el);
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar._checkCalendar = function (ev) {
if (!window.calendar) {
return false;
}
var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev);
for (; el != null && el != calendar.element; el = el.parentNode);
if (el == null) {
window.calendar.callCloseHandler();
return Calendar.stopEvent(ev);
}
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.show = function () {
var rows = this.table.getElementsByTagName("tr");
for (var i = rows.length; i > 0;) {
var row = rows[--i];
Calendar.removeClass(row, "rowhilite");
var cells = row.getElementsByTagName("td");
for (var j = cells.length; j > 0;) {
var cell = cells[--j];
Calendar.removeClass(cell, "hilite");
Calendar.removeClass(cell, "active");
}
}
this.element.style.display = "block";
this.hidden = false;
if (this.isPopup) {
window.calendar = this;
Calendar.addEvent(document, "keydown", Calendar._keyEvent);
Calendar.addEvent(document, "keypress", Calendar._keyEvent);
Calendar.addEvent(document, "mousedown", Calendar._checkCalendar);
}
this.hideShowCovered();
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.hide = function () {
if (this.isPopup) {
Calendar.removeEvent(document, "keydown", Calendar._keyEvent);
Calendar.removeEvent(document, "keypress", Calendar._keyEvent);
Calendar.removeEvent(document, "mousedown", Calendar._checkCalendar);
}
this.element.style.display = "none";
this.hidden = true;
this.hideShowCovered();
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.showAt = function (x, y) {
var s = this.element.style;
s.left = x + "px";
s.top = y + "px";
this.show();
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.showAtElement = function (el, opts) {
var p = Calendar.getAbsolutePos(el);
if (!opts || typeof opts != "string") {
this.showAt(p.x, p.y + el.offsetHeight);
return true;
}
this.show();
var w = this.element.offsetWidth;
var h = this.element.offsetHeight;
this.hide();
var valign = opts.substr(0, 1);
var halign = "l";
if (opts.length > 1) {
halign = opts.substr(1, 1);
}
switch (valign) {
case "T": p.y -= h; break;
case "B": p.y += el.offsetHeight; break;
case "C": p.y += (el.offsetHeight - h) / 2; break;
case "t": p.y += el.offsetHeight - h; break;
case "b": break; // already there
}
switch (halign) {
case "L": p.x -= w; break;
case "R": p.x += el.offsetWidth; break;
case "C": p.x += (el.offsetWidth - w) / 2; break;
case "r": p.x += el.offsetWidth - w; break;
case "l": break; // already there
}
this.showAt(p.x, p.y);
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.setDateFormat = function (str) {
this.dateFormat = str;
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.setTtDateFormat = function (str) {
this.ttDateFormat = str;
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.parseDate = function (str, fmt) {
var y = 0;
var m = -1;
var d = 0;
var a = str.split(/\W+/);
if (!fmt) {
fmt = this.dateFormat;
}
var b = fmt.split(/\W+/);
var i = 0, j = 0;
for (i = 0; i < a.length; ++i) {
if (b[i] == "D" || b[i] == "DD") {
continue;
}
if (b[i] == "d" || b[i] == "dd") {
d = parseInt(a[i], 10);
}
if (b[i] == "m" || b[i] == "mm") {
m = parseInt(a[i], 10) - 1;
}
if ((b[i] == "y") || (b[i] == "yy")) {
y = parseInt(a[i], 10);
//(y < 100) && (y += (y > 29) ? 1900 : 2000);
}
if (b[i] == "M" || b[i] == "MM") {
for (j = 0; j < 12; ++j) {
if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { m = j; break; }
}
}
}
if (y != 0 && m != -1 && d != 0) {
this.setDate(new Date(y, m, d));
return;
}
y = 0; m = -1; d = 0;
for (i = 0; i < a.length; ++i) {
if (a[i].search(/[a-zA-Z]+/) != -1) {
var t = -1;
for (j = 0; j < 12; ++j) {
if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { t = j; break; }
}
if (t != -1) {
if (m != -1) {
d = m + 1;
}
m = t;
}
} else if (parseInt(a[i], 10) <= 12 && m == -1) {
m = a[i] - 1;
} else if (parseInt(a[i], 10) > 31 && y == 0) {
y = parseInt(a[i], 10);
(y < 100) && (y += (y > 29) ? 1900 : 2000);
} else if (d == 0) {
d = a[i];
}
}
if (y == 0) {
var today = new Date();
y = today.getFullYear();
}
if (m != -1 && d != 0) {
this.setDate(new Date(y, m, d));
}
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype.hideShowCovered = function () {
function getStyleProp(obj, style) {
var value = obj.style[style];
if (!value) {
if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C
value = document.defaultView.
getComputedStyle(obj, "").getPropertyValue(style);
} else if (obj.currentStyle) { // IE
value = obj.currentStyle[style];
} else {
value = obj.style[style];
}
}
return value;
};
var tags = new Array("applet", "select");
var el = this.element;
var p = Calendar.getAbsolutePos(el);
var EX1 = p.x;
var EX2 = el.offsetWidth + EX1;
var EY1 = p.y;
var EY2 = el.offsetHeight + EY1;
for (var k = tags.length; k > 0;) {
var ar = document.getElementsByTagName(tags[--k]);
var cc = null;
for (var i = ar.length; i > 0;) {
cc = ar[--i];
p = Calendar.getAbsolutePos(cc);
var CX1 = p.x;
var CX2 = cc.offsetWidth + CX1;
var CY1 = p.y;
var CY2 = cc.offsetHeight + CY1;
if (this.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) {
if (!cc.__msh_save_visibility) {
cc.__msh_save_visibility = getStyleProp(cc, "visibility");
}
cc.style.visibility = cc.__msh_save_visibility;
} else {
if (!cc.__msh_save_visibility) {
cc.__msh_save_visibility = getStyleProp(cc, "visibility");
}
cc.style.visibility = "hidden";
}
}
}
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype._displayWeekdays = function () {
var MON = this.mondayFirst ? 0 : 1;
var SUN = this.mondayFirst ? 6 : 0;
var SAT = this.mondayFirst ? 5 : 6;
var cell = this.firstdayname;
for (var i = 0; i < 7; ++i) {
cell.className = "day name";
if (!i) {
cell.ttip = this.mondayFirst ? Calendar._TT["SUN_FIRST"] : Calendar._TT["MON_FIRST"];
cell.navtype = 100;
cell.calendar = this;
Calendar._add_evs(cell);
}
if (i == SUN || i == SAT) {
Calendar.addClass(cell, "weekend");
}
cell.firstChild.data = Calendar._DN3[i + 1 - MON];
cell = cell.nextSibling;
}
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype._hideCombos = function (el) {
switch (el.navtype) {
case 301://点击年份
this.monthsCombo.style.display = "none";
break;
case 302://点击月份
this.yearsCombo.style.display = "none";
break;
case 305://点击年浮层中的上翻
break;
case 306://点击年浮层中的下翻
break;
default:
this.monthsCombo.style.display = "none";
this.yearsCombo.style.display = "none";
break;
}
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Calendar.prototype._dragStart = function (ev) {
if (this.dragging) {
return;
}
this.dragging = false;// true;去掉拖动
var posX;
var posY;
if (Calendar.is_ie) {
posY = window.event.clientY + document.body.scrollTop;
posX = window.event.clientX + document.body.scrollLeft;
} else {
posY = ev.clientY + window.scrollY;
posX = ev.clientX + window.scrollX;
}
var st = this.element.style;
this.xOffs = posX - parseInt(st.left);
this.yOffs = posY - parseInt(st.top);
with (Calendar) {
addEvent(document, "mouseover", stopEvent);
addEvent(document, "mouseup", calDragEnd);
}
};
Date._MD = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
Date.SECOND = 1000;
Date.MINUTE = 60 * Date.SECOND;
Date.HOUR = 60 * Date.MINUTE;
Date.DAY = 24 * Date.HOUR;
Date.WEEK = 7 * Date.DAY;
Date.prototype.getMonthDays = function (month) {
var year = this.getFullYear();
if (typeof month == "undefined") {
month = this.getMonth();
}
if (((0 == (year % 4)) && ((0 != (year % 100)) || (0 == (year % 400)))) && month == 1) {
return 29;
} else {
return Date._MD[month];
}
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Date.prototype.getWeekNumber = function () {
var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
var then = new Date(this.getFullYear(), 0, 1, 0, 0, 0);
var time = now - then;
var day = then.getDay();
(day > 3) && (day -= 4) || (day += 3);
return Math.round(((time / Date.DAY) + day) / 7);
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Date.prototype.equalsTo = function (date) {
return ((this.getFullYear() == date.getFullYear()) &&
(this.getMonth() == date.getMonth()) &&
(this.getDate() == date.getDate()));
};
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
Date.prototype.print = function (frm) {
var tempFrm = frm;
if (frm == "yyyymmdd" || frm == "ymmdd") {
frm = "y/mm/dd";
}
var str = new String(frm);
var m = this.getMonth();
var d = this.getDate();
var y = this.getFullYear();
var wn = this.getWeekNumber();
var w = this.getDay();
var s = new Array();
s["d"] = d;
s["dd"] = (d < 10) ? ("0" + d) : d;
s["m"] = 1 + m;
s["mm"] = (m < 9) ? ("0" + (1 + m)) : (1 + m);
s["y"] = y;
s["yy"] = new String(y).substr(2, 2);
s["w"] = wn;
s["ww"] = (wn < 10) ? ("0" + wn) : wn;
with (Calendar) {
s["D"] = _DN3[w];
s["DD"] = _DN[w];
s["M"] = _MN3[m];
s["MM"] = _MN[m];
}
var re = /(.*)(\W|^)(d|dd|m|mm|y|yy|MM|M|DD|D|w|ww)(\W|$)(.*)/;
while (re.exec(str) != null) {
str = RegExp.$1 + RegExp.$2 + s[RegExp.$3] + RegExp.$4 + RegExp.$5;
}
if (tempFrm == "yyyymmdd" || tempFrm == "ymmdd") {
str = str.replace(/\//g, "");
}
return str;
};
window.calendar = null;
Calendar._DN = new Array
("S",
"M",
"T",
"W",
"T",
"F",
"S",
"S");
Calendar._MN = new Array
("Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec");
Calendar._TT = {};
Calendar._TT["TOGGLE"] = "Toggle Week Display";
Calendar._TT["PREV_YEAR"] = "Previous Year";
Calendar._TT["PREV_MONTH"] = "Jump To Previous Month";
Calendar._TT["GO_TODAY"] = "Jump TO Today";
Calendar._TT["NEXT_MONTH"] = "Jump TO Next Month";
Calendar._TT["NEXT_YEAR"] = "Next Year";
Calendar._TT["SHOW_MONTH"] = "Select Month";
Calendar._TT["SHOW_YEAR"] = "Select Year";
Calendar._TT["SEL_DATE"] = "Select Date";
Calendar._TT["DRAG_TO_MOVE"] = "Move";
Calendar._TT["DRAG_TO_MOVE"] = "";
Calendar._TT["PART_TODAY"] = " (Today)";
Calendar._TT["MON_FIRST"] = "Monday is the forst switch";
Calendar._TT["SUN_FIRST"] = "Sunday is the forst switch";
Calendar._TT["CLOSE"] = "Close";
Calendar._TT["TODAY"] = "Today";
Calendar._TT["DEF_DATE_FORMAT"] = "dd-MM-y";
Calendar._TT["TT_DATE_FORMAT"] = "D, y M d";
Calendar._TT["WK"] = "周";
var oldLink = null;
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
function setActiveStyleSheet(link, title) {
var i, a, main;
for (i = 0; (a = document.getElementsByTagName("link")[i]) ; i++) {
if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
a.disabled = true;
if (a.getAttribute("title") == title) a.disabled = false;
}
}
if (oldLink) oldLink.style.fontWeight = 'normal';
oldLink = link;
link.style.fontWeight = 'bold';
return false;
}
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
function selected(cal, date) {
cal.sel.value = date;
if (cal.dateClicked && (cal.sel.id == "sel1" || cal.sel.id == "sel3"))
cal.callCloseHandler();
}
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
function closeHandler(cal) {
cal.hide();
}
function bindCalcInputChkDate(id, format) {
$("#" + id).on("blur", function () {
var dateInput = $(this);
if (!chkCalcInputDate(dateInput.val(), format)) {
dateInput.val("");
}
});
}
function chkCalcInputDate(dateVal,dateFormat) {
var dateVal = trim(dateVal);
var chkResult = true;
var dateArry;
if (dateVal != "") {
if (dateFormat.indexOf("-") != -1) {
dateArry = dateVal.split("-");
}
else if (dateFormat.indexOf("/") != -1) {
dateArry = dateVal.split("/");
}
else {
dateArry = new Array();
if (dateVal.length == 8) {
dateArry[0] = dateVal.substr(0, 4);
dateArry[1] = dateVal.substr(4, 2);
dateArry[2] = dateVal.substr(6, 2);
}
}
if (dateArry.length != 3){
chkResult = false;
}
else {
chkResult = isDate(dateArry[0] + dateArry[1] + dateArry[2]);
}
}
return chkResult;
}
//函数主入口
var sFormat;
function showCalendar(opts) {
var id, format, startDate, endDate, startDateId, endDateId, position, fromToday,incrHeight;
if (opts.incrHeight && opts.incrHeight > 0)
{
var el = document.getElementById("calincrH_div");
if (el) {
el.style.height = opts.incrHeight;
el.style.display = "block";
}
else {
el = document.createElement("div");
el.id = "calincrH_div";
el.style.height = opts.incrHeight;
el.style.display = "block";
document.body.appendChild(el);
}
}
if (opts.format == "yyyy-mm-dd" || opts.format == "y-mm-dd") {
opts.format = "y-mm-dd";
format = opts.format;
sFormat = "yyyy-MM-dd";
}
if (opts.format == "yyyy/mm/dd" || opts.format == "y/mm/dd" ) {
opts.format = "y/mm/dd";
format = opts.format;
sFormat = "yyyy/MM/dd";
}
if (opts.format == "dd-mm-yyyy" || opts.format == "dd-mm-y" ) {
opts.format = "dd-mm-y";
format = opts.format;
sFormat = "dd-MM-yyyy";
}
if (opts.format == "dd/mm/yyyy" || opts.format == "dd/mm/y" ) {
opts.format = "dd/mm/y";
format = opts.format;
sFormat = "dd/MM/yyyy";
}
if (opts.format == "yyyymmdd" || opts.format == "ymmdd" ) {
opts.format = "ymmdd";
format = opts.format;
sFormat = "yyyyMMdd";
}
if (opts.format == "ddmmyyyy" || opts.format == "ddmmy" ) {
opts.format = "ddmmy";
format = opts.format;
sFormat = "ddMMyyyy";
}
position = opts.position ? opts.position : "Br";
id = opts.id;
format = opts.format;
if (opts.startDate) {
startDate = opts.startDate.toDate().format("yyyy/MM/dd");
/*
if (opts.startDate.indexOf("-") != -1) {
startDate = opts.startDate.replace(/-/g, "/");
} else if (opts.startDate.length == 8) {
startDate = opts.startDate.substring(0, 4) + "/" + opts.startDate.substring(4, 6) + "/" + opts.startDate.substring(6, 8);
}
*/
//console.log("startDate=",startDate);
} else {
startDate = CAL_MIN_YEAR + "/01/01";
}
if (opts.endDate) {
endDate = opts.endDate.toDate().format("yyyy/MM/dd");
/*
if (opts.endDate.indexOf("-") != -1) {
endDate = opts.endDate.replace(/-/g, "/");
} else if (opts.endDate.length == 8) {
endDate = opts.endDate.substring(0, 4) + "/" + opts.endDate.substring(4, 6) + "/" + opts.endDate.substring(6, 8);
}
*/
//console.log("endDate=",endDate);
} else {
endDate = CAL_MAX_YEAR + "/12/31";
}
if (opts.startDateId) {
startDateId = opts.startDateId;
} else {
startDateId = false;
}
if (opts.endDateId) {
endDateId = opts.endDateId;
} else {
endDateId = false;
}
Calendar.nonWeekendFlag = opts.nonWeekendFlag || false ;
Calendar.fromToday = opts.fromToday;
Calendar.startDateId = startDateId;
Calendar.endDateId = endDateId;
Calendar.myId = id;
if (format.indexOf("-") != -1) {
Calendar.myFormat = "-";
} else if (format.indexOf("/") != -1) {
Calendar.myFormat = "/";
} else {
Calendar.myFormat = "";
}
if (startDate) {
Calendar.startDate = Date.parse(startDate);
}
if (endDate) {
Calendar.endDate = Date.parse(endDate);
}
var el = document.getElementById(id);
el.click();
if (calendar != null) {
calendar.hide();
} else {
var cal = new Calendar(false, null, selected, closeHandler);
Calendar.myCalendar = cal;
calendar = cal;
Calendar.myCalendar.myid = id;
cal.setRange(CAL_MIN_YEAR, CAL_MAX_YEAR); //更改起始年月
cal.create();
}
calendar.setDateFormat(format);
if (el.value.indexOf("/") == -1 && el.value.indexOf("-") == -1) {
var tempElValue = el.value.substring(0, 4) + "/" + el.value.substring(4, 6) + "/" + el.value.substring(6, 8);
calendar.parseDate(tempElValue);
} else {
calendar.parseDate(el.value);
}
calendar.sel = el;
calendar.showAtElement(el, position);
/*==========================================*/
(function (myId) {
var myYear = null;
var myMonth = null;
var mytemp = "";
if ($("td.title", $("div.calendar")).length) {
myYear = parseInt($("td.title", $(".calendar"))[0].innerHTML);
myMonth = parseInt(monShow[$("td.title", $(".calendar"))[1].innerHTML]);
mytemp += myYear + "/" + myMonth + "/";
}
var lteTodayDate = null, ltTodayDate = null, gteTodayDate = null, gtTodayDate = null;
if (Calendar.fromToday) {
var fromToday = Calendar.fromToday;
var nowDate = new Date();
var yearStr = nowDate.getFullYear();
var monthStr = nowDate.getMonth() + 1;
var dateStr = nowDate.getDate();
if (fromToday == "lteToday") {
lteTodayDate = Date.parse(yearStr + "/" + monthStr + "/" + dateStr);
} else if (fromToday == "ltToday") {
ltTodayDate = Date.parse(yearStr + "/" + monthStr + "/" + (parseInt(dateStr) - 1));
} else if (fromToday == "gteToday") {
gteTodayDate = Date.parse(yearStr + "/" + monthStr + "/" + dateStr);
} else if (fromToday == "gtToday") {
gtTodayDate = Date.parse(yearStr + "/" + monthStr + "/" + (parseInt(dateStr) + 1));
}
}
if ((Date.parse(mytemp + "31") > Calendar.endDate) || (Date.parse(mytemp + "1") < Calendar.startDate) || Calendar.fromToday) {
var myYear = null;
var myMonth = null;
var mytemp = "";
if ($("td.title", $("div.calendar")).length) {
myYear = parseInt($("td.title", $(".calendar"))[0].innerHTML);
myMonth = parseInt(monShow[$("td.title", $(".calendar"))[1].innerHTML]);
mytemp += myYear + "/" + myMonth + "/";
}
var $tds = $("div.calendar tbody td");
for (var k = 0; k < $tds.length; k++) {
if (!isNaN(parseInt($tds[k].innerHTML))) {
if ((Calendar.startDate && (Date.parse(mytemp + $tds[k].innerHTML) < Calendar.startDate)) || (Calendar.endDate && (Date.parse(mytemp + $tds[k].innerHTML) > Calendar.endDate)) || (lteTodayDate && (Date.parse(mytemp + $tds[k].innerHTML) > lteTodayDate)) || (ltTodayDate && (Date.parse(mytemp + $tds[k].innerHTML) > ltTodayDate)) || (gteTodayDate && (Date.parse(mytemp + $tds[k].innerHTML) < gteTodayDate)) || (gtTodayDate && (Date.parse(mytemp + $tds[k].innerHTML) < gtTodayDate))) {
$tds[k].parentNode.replaceChild($('
' + $tds[k].innerHTML + ' | ').css("color", "#999")[0], $tds[k]);
} else {
var inputVal = document.getElementById(myId).value;
inputVal = inputVal.substring(inputVal.length - 2);
var tempTd = null;
if (parseInt(inputVal) <= 9) {
inputVal = parseInt(inputVal);
}
if (inputVal && ($tds[k].innerHTML == inputVal)) {
tempTd = $('' + $tds[k].innerHTML + ' | ')[0];
} else {
tempTd = $('' + $tds[k].innerHTML + ' | ')[0];
}
tempTd.caldate = $tds[k].innerHTML;
tempTd.calendar = Calendar.myCalendar;
tempTd.ttip = "_";
tempTd.disabled = false;
tempTd.value = $tds[k].innerHTML;
Calendar._add_evs2(tempTd);
tempTd.onclick = function () {
$("div.calendar").hide();
if (parseInt(myMonth) < 10) {
myMonth = "0" + parseInt(myMonth);
}
if (this.value < 10) {
this.value = "0" + this.value;
}
$("#" + Calendar.myId).val(dateShow);
//$("#" + Calendar.myId).val(myYear + Calendar.myFormat + myMonth + Calendar.myFormat + this.value);
}
//tempTd.calendar = cal;
$tds[k].parentNode.replaceChild(tempTd, $tds[k]);
}
};
}
return false;
}
if (startDateId) {
var myYear = null;
var myMonth = null;
var mytemp = "";
if ($("td.title", $("div.calendar")).length) {
myYear = parseInt($("td.title", $(".calendar"))[0].innerHTML);
myMonth = parseInt(monShow[$("td.title", $(".calendar"))[1].innerHTML]);
mytemp += myYear + "/" + myMonth + "/";
}
var startDateVal = document.getElementById(startDateId).value;
if (startDateVal.length == 8) {
startDateVal = startDateVal.substring(0, 4) + "/" + startDateVal.substring(4, 6) + "/" + startDateVal.substring(6, 8);
};
if (startDateVal.indexOf("-") != -1) {
startDateVal = startDateVal.replace(/-/g, "/");
}
startDateVal = Date.parse(startDateVal);
var $tds = $("div.calendar tbody td");
for (var k = 0; k < $tds.length; k++) {
if (!isNaN(parseInt($tds[k].innerHTML))) {
if ((startDateVal && (Date.parse(mytemp + $tds[k].innerHTML) < startDateVal)) || (lteTodayDate && (Date.parse(mytemp + $tds[k].innerHTML) > lteTodayDate)) || (ltTodayDate && (Date.parse(mytemp + $tds[k].innerHTML) > ltTodayDate)) || (gteTodayDate && (Date.parse(mytemp + $tds[k].innerHTML) < gteTodayDate)) || (gtTodayDate && (Date.parse(mytemp + $tds[k].innerHTML) < gtTodayDate))) {
$tds[k].parentNode.replaceChild($('' + $tds[k].innerHTML + ' | ').css("color", "#999")[0], $tds[k]);
} else {
var inputVal = document.getElementById(myId).value;
inputVal = inputVal.substring(inputVal.length - 2);
var tempTd = null;
if (parseInt(inputVal) <= 9) {
inputVal = parseInt(inputVal);
}
if (inputVal && ($tds[k].innerHTML == inputVal)) {
tempTd = $('' + $tds[k].innerHTML + ' | ')[0];
} else {
tempTd = $('' + $tds[k].innerHTML + ' | ')[0];
}
tempTd.caldate = $tds[k].innerHTML;
tempTd.calendar = Calendar.myCalendar;
tempTd.ttip = "_";
tempTd.disabled = false;
tempTd.value = $tds[k].innerHTML;
Calendar._add_evs2(tempTd);
tempTd.onclick = function () {
$("div.calendar").hide();
//alert(this.value);
//alert(Calendar.myFormat);
//alert(Calendar.myId+myYear+myMonth+$tds[k].innerHTML);
if (parseInt(myMonth) < 10) {
myMonth = "0" + parseInt(myMonth);
}
if (this.value < 10) {
this.value = "0" + this.value;
}
$("#" + Calendar.myId).val(dateShow);
//$("#" + Calendar.myId).val(myYear + Calendar.myFormat + myMonth + Calendar.myFormat + this.value);
}
//tempTd.calendar = cal;
$tds[k].parentNode.replaceChild(tempTd, $tds[k]);
}
};
}
}
if (endDateId) {
var myYear = null;
var myMonth = null;
var mytemp = "";
if ($("td.title", $("div.calendar")).length) {
myYear = parseInt($("td.title", $(".calendar"))[0].innerHTML);
myMonth = parseInt(monShow[$("td.title", $(".calendar"))[1].innerHTML]);
mytemp += myYear + "/" + myMonth + "/";
}
var endDateVal = document.getElementById(endDateId).value;
if (endDateVal.length == 8) {
endDateVal = endDateVal.substring(0, 4) + "/" + endDateVal.substring(4, 6) + "/" + endDateVal.substring(6, 8);
};
if (endDateVal.indexOf("-") != -1) {
endDateVal = endDateVal.replace(/-/g, "/");
}
endDateVal = Date.parse(endDateVal);
var $tds = $("div.calendar tbody td");
for (var k = 0; k < $tds.length; k++) {
if (!isNaN(parseInt($tds[k].innerHTML))) {
if ((endDateVal && (Date.parse(mytemp + $tds[k].innerHTML) > endDateVal)) || (gteTodayDate && (Date.parse(mytemp + $tds[k].innerHTML) < gteTodayDate)) || (gtTodayDate && (Date.parse(mytemp + $tds[k].innerHTML) < gtTodayDate)) || (lteTodayDate && (Date.parse(mytemp + $tds[k].innerHTML) > lteTodayDate)) || (ltTodayDate && (Date.parse(mytemp + $tds[k].innerHTML) > ltTodayDate))) {
$tds[k].parentNode.replaceChild($('' + $tds[k].innerHTML + ' | ').css("color", "#999")[0], $tds[k]);
} else {
var inputVal = document.getElementById(myId).value;
inputVal = inputVal.substring(inputVal.length - 2);
var tempTd = null;
if (parseInt(inputVal) <= 9) {
inputVal = parseInt(inputVal);
}
if (inputVal && ($tds[k].innerHTML == inputVal)) {
tempTd = $('' + $tds[k].innerHTML + ' | ')[0];
} else {
tempTd = $('' + $tds[k].innerHTML + ' | ')[0];
}
tempTd.caldate = $tds[k].innerHTML;
tempTd.calendar = Calendar.myCalendar;
tempTd.ttip = "_";
tempTd.disabled = false;
tempTd.value = $tds[k].innerHTML;
Calendar._add_evs2(tempTd);
tempTd.onclick = function () {
$("div.calendar").hide();
//alert(this.value);
//alert(Calendar.myFormat);
//alert(Calendar.myId+myYear+myMonth+$tds[k].innerHTML);
if (parseInt(myMonth) < 10) {
myMonth = "0" + parseInt(myMonth);
}
if (this.value < 10) {
this.value = "0" + this.value;
}
$("#" + Calendar.myId).val(dateShow);
//$("#" + Calendar.myId).val(myYear + Calendar.myFormat + myMonth + Calendar.myFormat + this.value);
}
//tempTd.calendar = cal;
$tds[k].parentNode.replaceChild(tempTd, $tds[k]);
}
};
}
}
document.getElementById(myId).focus();//打开控件后,焦点仍然在输入框
})(id);
if(Calendar.nonWeekendFlag===true){
nonWeekend();
}
/*======================================================*/
return false;
}
var MINUTE = 60 * 1000;
var HOUR = 60 * MINUTE;
var DAY = 24 * HOUR;
var WEEK = 7 * DAY;
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
function isDisabled(date) {
var today = new Date();
return (Math.abs(date.getTime() - today.getTime()) / DAY) > 10;
}
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
function flatSelected(cal, date) {
var el = document.getElementById("preview");
el.innerHTML = date;
}
/**
*
* @authors Your Name (struts)
* @date 2014-07-31
* @version $Id$
*/
function showFlatCalendar() {
var parent = document.getElementById("display");
var cal = new Calendar(false, null, flatSelected);
cal.weekNumbers = false;
cal.setDisabledHandler(isDisabled);
cal.setDateFormat("DD, M d");
cal.create(parent);
cal.show();
}
var system = {
print: function (oper) {
if (oper < 10) {
bdhtml = window.document.body.innerHTML;//获取当前页的html代码
sprnstr = "";//设置打印开始区域
eprnstr = "";//设置打印结束区域
prnhtml = bdhtml.substring(bdhtml.indexOf(sprnstr) + 18); //从开始代码向后取html
prnhtml = prnhtml.substring(0, prnhtml.indexOf(eprnstr));//从结束代码向前取html
window.print();
window.document.body.innerHTML = bdhtml;
} else {
window.print();
}
}
}
var careate = {
DialogBox: function (obj) {
var url = obj.url;
var name = obj.name;
var height = obj.height;
var width = obj.width;
var menubar = obj.menu;
var toolbar = obj.tool;
var z_look = obj.z_index;
var titlebar = obj.title;
var parameter = "height=" + height + ",width=" + width + ",menubar=" + menubar + ",toolbar=" + toolbar +
",z-look=" + z_look + ",titlebar=" + titlebar + ",location=no";
if (!obj.resizable) {
parameter += ",resizable=no";
}
window.open(url, name, parameter);
}
}
var weekShow = {
"6":"Sun",
"0":"Mon",
"1":"Tue",
"2":"Wed",
"3":"Thu",
"4":"Fri",
"5":"Sat"
}
var monShow = {
"Jan":"01",
"Feb":"02",
"Mar":"03",
"Apr":"04",
"May":"05",
"Jun":"06",
"Jul":"07",
"Aug":"08",
"Sep":"09",
"Oct":"10",
"Nov":"11",
"Dec":"12"
}
var dateShow = "";
Date.prototype.format = function (_format){
var fmt = _format || sFormat;
var o = {
"M+":this.getMonth()+1,
"d+":this.getDate(),
"h+":this.getHours(),
"m+":this.getMinutes(),
"s+":this.getSeconds(),
"q+":Math.floor((this.getMonth()+3)/3),
"S+":this.getMilliseconds()
}
if(/(y+)/.test(fmt)){
fmt = fmt.replace(RegExp.$1,(this.getFullYear()+"").substr(4-RegExp.$1.length))
}
for( var k in o){
if(new RegExp("("+k+")").test(fmt)){
fmt = fmt.replace(RegExp.$1,RegExp.$1.length == 1 ? o[k] :("00"+o[k]).substr((""+o[k]).length));
//fmt = fmt.replace(RegExp.$1,RegExp.$1.length == 1 ? o[k] :(""+o[k]).substr((""+o[k]).length));
}
}
return fmt;
};
String.prototype.toDate = function (fmt){
var _this = this ,i=0,
temp = Date.parse(_this),
myDate = new Date(temp),
_fmt = fmt ? fmt : sFormat;
if(isNaN(myDate)){
_this = _this.replace(/\D/g,'');
var arys = {"y+":"","M+":"","d+":"","h+":"","m+":"","s+":""}
for(var k in arys){
if(new RegExp("("+k+")").test(_fmt)){
arys[k]=_this.substring(i,i+=RegExp.$1.length);
}
}
myDate = new Date(arys['y+'],parseInt(arys['M+'])-1,arys['d+'],arys['h+'],arys['m+'],arys['s+']);
}
return myDate;
}
function nonWeekend(){
//周末所在列的索引
var weekIndexs =[];
var nameTds = $("div.calendar >table tr.daynames").eq(0).find("td");
for(var i =0; i < nameTds.length; i++){
if(nameTds.eq(i).hasClass("weekend")){
weekIndexs.push(i);
}
}
var dayTrs = $("div.calendar >table tr.daysrow");
//console.log(dayTrs);
for(var i = 0; i < dayTrs.length; i++){
var dayTds = dayTrs.eq(i).find("td");
for(var j = 0; j < weekIndexs.length; j++){
dayTds.eq(weekIndexs[j]).replaceWith('' + dayTds.eq(weekIndexs[j]).html() + ' | ');
}
}
}