	var DateSelector = function () {
		function xGetElementById(e) {
			if (typeof(e) == 'string') {
				if (document.getElementById) e = document.getElementById(e);
				else if (document.all) e = document.all[e];
				else e = null;
			}
			return e;
		}

		function xGetElementsByTagName(t,p) {
		  var list = null;
	  	t = t || '*';
		  p = xGetElementById(p) || document;
			if (typeof p.getElementsByTagName != 'undefined') { // DOM1
				list = p.getElementsByTagName(t);
				if (t=='*' && (!list || !list.length)) list = p.all; // IE5 '*' bug
			} else { // IE4 object model
				if (t=='*') list = p.all;
			  else if (p.all && p.all.tags) list = p.all.tags(t);
			}
			return list || [];
		}


		function update(id, what) {
			var d = new Date();
			var selectedYear = xGetElementById('ds-year-'+id).value;
			var selectedMonth = xGetElementById('ds-month-'+id).value;
			var daysInMonth = new Date(selectedYear,selectedMonth,0).getDate();
			if (d.getFullYear() == selectedYear && d.getMonth() + 1 == selectedMonth) {
				daysInMonth = d.getDate();
			}

			if (what == 'year') {
					var months = xGetElementsByTagName('option','ds-month-'+id);
					for (i in months) {
						if (typeof months[i] == "object") {
							months[i].removeAttribute('selected');
							months[i].removeAttribute('disabled');
							if (selectedYear == d.getFullYear() && months[i].getAttribute('value') > d.getMonth() + 1) months[i].setAttribute('disabled','disabled');
						}
					}
					months[0].selected = true;
			}

			if (what == 'month' || what == 'year') {
				var daysSelect = xGetElementById('ds-day-'+id);
				days = xGetElementsByTagName('option',daysSelect);
				for (var i = days.length - 1; i >= 0; i--) daysSelect.removeChild(days[i]);
				for (var i = 1; i <= daysInMonth; i++) {
					var el = document.createElement('option');
					el.innerHTML = i;
					daysSelect.appendChild(el);
				}
			}
			return false;
		}
		return {
			update: update
		}
	}();


