diff --git a/jquery.simple-dtpicker.js b/jquery.simple-dtpicker.js
index ba54cdd..1bb3793 100644
--- a/jquery.simple-dtpicker.js
+++ b/jquery.simple-dtpicker.js
@@ -14,6 +14,8 @@
format: 'YYYY-MM-DD hh:mm',
prevMonth: 'Previous month',
nextMonth: 'Next month',
+ prevYear: 'Previous year',
+ nextYear: 'Next year',
today: 'Today'
},
ro:{
@@ -417,7 +419,29 @@
}, newdate.getFullYear(), newdate.getMonth(), newdate.getDate(), newdate.getHours(), newdate.getMinutes());
}
};
+ var beforeYear = function($obj) {
+ var $picker = getParentPickerObject($obj);
+
+ var date = getPickedDate($picker);
+ var targetYear_lastDay = new Date(date.getFullYear(), date.getMonth(), 0).getDate();
+ if (targetYear_lastDay < date.getDate()) {
+ date.setDate(targetYear_lastDay);
+ }
+ draw($picker, {
+ "isAnim": true,
+ "isOutputToInputObject": true
+ }, date.getFullYear() - 1, date.getMonth(), date.getDate(), date.getHours(), date.getMinutes());
+
+ var todayDate = new Date();
+ var isCurrentYear = todayDate.getFullYear() == date.getFullYear();
+ var isCurrentMonth = isCurrentYear && todayDate.getMonth() == date.getMonth();
+
+ draw($picker, {
+ "isAnim": true,
+ "isOutputToInputObject": true
+ }, date.getFullYear() - 1, date.getMonth(), date.getDate(), date.getHours(), date.getMinutes());
+ };
var nextMonth = function($obj) {
var $picker = getParentPickerObject($obj);
var date = getShownDate($picker);
@@ -439,6 +463,24 @@
"keepPickedDate": true
}, newdate.getFullYear(), newdate.getMonth(), newdate.getDate(), newdate.getHours(), newdate.getMinutes());
};
+ var nextYear = function($obj) {
+ var $picker = getParentPickerObject($obj);
+ var date = getPickedDate($picker);
+ var targetYear_lastDay = new Date(date.getFullYear() + 1, date.getMonth(), 0).getDate();
+ if (targetYear_lastDay < date.getDate()) {
+ date.setDate(targetYear_lastDay);
+ }
+
+ // Check a last date of a next month
+ if (getLastDate(date.getFullYear() + 1, date.getMonth()) < date.getDate()) {
+ date.setDate(getLastDate(date.getFullYear() + 1, date.getMonth()));
+ }
+
+ draw($picker, {
+ "isAnim": true,
+ "isOutputToInputObject": true
+ }, date.getFullYear() + 1, date.getMonth(), date.getDate(), date.getHours(), date.getMinutes());
+ };
/**
Check a last date of a specified year and month
@@ -830,7 +872,30 @@
nextMonth($picker);
});
}
-
+ var $link_next_year = null;
+ if ((maxDate == null) || (maxDate > cDate.getTime())) {
+ $link_next_year = $('');
+ $link_next_year.text('>>');
+ $link_next_year.prop('alt', translate(locale,'nextYear'));
+ $link_next_year.prop('title', translate(locale,'nextYear'));
+ $link_next_year.click(function() {
+ nextYear($picker);
+ });
+ }
+ var $link_before_year = null;
+ if ((!isFutureOnly || !isCurrentMonth) && ((minDate == null) || (minDate < cDate.getTime()))
+ ) {
+ $link_before_year = $('');
+ $link_before_year.text('<<');
+ $link_before_year.prop('alt', translate(locale,'prevYear'));
+ $link_before_year.prop('title', translate(locale,'prevYear') );
+ $link_before_year.click(function() {
+ beforeYear($picker);
+ });
+ $picker.data('stateAllowBeforeYear', true);
+ } else {
+ $picker.data('stateAllowBeforeYear', false);
+ }
if (isTodayButton) {
var $link_today = $('');
$link_today.addClass('icon-home');
@@ -853,11 +918,11 @@
}
if ($link_before_month != null) {
- $header.append($link_before_month);
+ $header.append($link_before_year, ' ', $link_before_month);
}
$header.append($now_month);
if ($link_next_month != null) {
- $header.append($link_next_month);
+ $header.append($link_next_month, ' ', $link_next_year);
}
/* Calendar > Table ----- */