function AttachEvent(obj,evt,fnc,useCapture){
	if (!useCapture) useCapture=false;
	if (obj.addEventListener){
		obj.addEventListener(evt,fnc,useCapture);
		return true;
	} else if (obj.attachEvent) return obj.attachEvent("on"+evt,fnc);
	else{
		MyAttachEvent(obj,evt,fnc);
		obj['on'+evt]=function(){ MyFireEvent(obj,evt) };
	}
} 

//The following are for browsers like NS4 or IE5Mac which don't support either
//attachEvent or addEventListener
function MyAttachEvent(obj,evt,fnc){
	if (!obj.myEvents) obj.myEvents={};
	if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
	var evts = obj.myEvents[evt];
	evts[evts.length]=fnc;
}
function MyFireEvent(obj,evt){
	if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
	var evts = obj.myEvents[evt];
	for (var i=0,len=evts.length;i<len;i++) evts[i]();
}


function installListeners()
{
	var day_element = document.getElementById('dayfix');
	var month_element = document.getElementById('monthfix');
	var year_element = document.getElementById('yearfix');
	
	
	if(day_element)
	{
		// set up listener for the day field
		AttachEvent(day_element, 'change', datefix, false);
	}
	
	if(month_element)
	{
		// set up the listener for the month field
		AttachEvent(month_element, 'change', datefix, false);
	}
	
	if(year_element)
	{
		// set up the listener for the year field
		AttachEvent(year_element, 'change', datefix, false);
	}

}

AttachEvent(window, 'load', installListeners, false);

function datefix()
{
	var day = document.getElementById('dayfix');
	var month = document.getElementById('monthfix');
	var year = document.getElementById('yearfix');
	
	dayprevious = day.value;

	monthlen = new Date(year.value, month.value, 0).getDate();

	day.length = 0;
	for(d = 1; d <= monthlen; d++)
	{
		var newoption = document.createElement('option');
		newoption.setAttribute('value', d);
		newoption.innerHTML = d;
		if(d == dayprevious)
		{
			newoption.setAttribute('selected', 'selected');
		}		
		day.appendChild(newoption);	
	}	
}
