date preset widget
easily select some comment date ranges
by Jason Crowther
HTML
<p>
<label for="datePreset">Date Preset</label>
<select id ="datePreset">
<option value="">--</option>
<option value="thisMonth">This Month</option>
<option value="lastMonth">Last Month</option>
<option value="thisQuarter">This Quarter</option>
<option value="lastQuarter">Last Quarter</option>
<option value="thisYear">This Year</option>
<option value="lastYear">Last Year</option>
</select>
</p>
<p>
<label>From Date</label>
<input type="text" id="fromDate">
</p>
<p>
<label>To Date</label>
<input type="text" id="toDate">
</p>
CSS
label { display: block }
JavaScript
$(document).ready(function(){
datePreset.init({
selectField: $('#datePreset'),
fromField: $('#fromDate'),
toField: $('#toDate')
});
})
var datePreset = {
init : function(args) {
this.selectField = args.selectField;
this.selectField.change( $.proxy(this.changeHandler, this) );
this.fromField = args.fromField;
this.toField = args.toField;
},
currentDate : function(){
var TodayDate=new Date();
return [
TodayDate.getMonth()+1,
TodayDate.getDate(),
TodayDate.getFullYear()
];
},
changeHandler: function() {
var Today = this.currentDate();
var TodayMonth=Today[0];
var TodayDay=Today[1];
var TodayYear=Today[2];
this.toField.val(this.formatdate(TodayMonth,TodayDay,TodayYear));
var c = this.selectField.val();
if( c == 'thisMonth') {
this.fromField.val(this.formatdate(TodayMonth,1,TodayYear));
} else if ( c == 'lastMonth' ) {
var lm = TodayMonth-1;
var ly = TodayYear;
if(TodayMonth == 1) {
lm = 12;
ly = TodayYear - 1;
}
this.fromField.val(this.formatdate(lm,1,ly));
this.toField.val(this.formatdate( lm,this.monthEndDay(lm,ly),ly ));
} else if ( c == 'thisQuarter' ) {
var q = this.findquarter(TodayMonth);
this.fromField.val(this.formatdate(this.quarterstart(q),1,TodayYear));
} else if ( c == 'lastQuarter' ) {
var q = this.findquarter(TodayMonth);
var r = this.lastquarter(q,TodayYear)
var e = this.quarterend(r[0]);
this.fromField.val(this.formatdate(this.quarterstart(r[0]),1,r[1]));
this.toField.val(this.formatdate(e,this.monthEndDay(e,r[1]),r[1]));
} else if ( c == 'thisYear' ) {
this.fromField.val(this.formatdate(1,1,TodayYear));
} else if ( c == 'lastYear' ) {
var ly = TodayYear - 1;
this.fromField.val(this.formatdate(1,1,ly));
this.toField.val(this.formatdate(12,31,ly));
} else if ( c == '') {
// do nothing for null...