/** fix from date to be greater than actual date */ function fix_from_date() { var from = new Date(); var actual = new Date(); from.setFullYear(document.getElementById('yearfrom').value, (Number(document.getElementById('monthfrom').value) - 1), document.getElementById('dayfrom').value); actual.setFullYear(2024,4,3); if(from.getTime() < actual.getTime()) { document.getElementById('dayfrom').options[actual.getDate() - 1].selected = true; document.getElementById('monthfrom').options[actual.getMonth()].selected = true; } } /** fix number of days according to given month and year * * @param string type type of date (from|to) */ function fix_days(type) { if(type == 'from' || type == 'to') { var date = new Date(); var day = 32; var month = Number(document.getElementById('month'+type).value) - 1; var year = document.getElementById('year'+type).value; var element = document.getElementById('day'+type); date.setFullYear(year, month, day); // find first correct day of the month do { day--; date.setFullYear(year, month, day); } while(date.getMonth() > month); // find selected day var selected = null; for(i = 0; i < element.length; i++) if(element.options[i].selected) { selected = element.value; break; } // rebuild option list of days for(i = element.length - 1; i >= 0; i--) element.remove(i); for(i = 0; i < day; i++) { var option = document.createElement('OPTION'); option.text = i + 1; option.value = i + 1; element.options.add(option); } // correct selected day if(selected != null && day < selected) selected = day; if(selected != null) element.options[selected - 1].selected = true; } }