//--stringDateSelector for WE: input-date as String 'yyyyMMdd'
//--v. 2.0 -- dd 2004.02.23
months = new arr('jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec');

var min_year = (new Date()).getFullYear()-80;//--defines lowest year in year selectbox
var max_year = (new Date()).getFullYear();//--defines highest year in the year selectbox

if (min_year <= 400) {
	alert('Minimum year must be higher than 400 for this algorithm to work.');
}

function changeDays(date_form,aname) {
	MonthCtrl = eval('document.' + date_form + '.' + aname + 'Month');
	DayCtrl = eval('document.' + date_form + '.' + aname + 'Day');
	YearCtrl = eval('document.' + date_form + '.' + aname + 'Year');

	mth = eval(MonthCtrl.options[MonthCtrl.selectedIndex].value);
	yr = eval(YearCtrl.options[YearCtrl.selectedIndex].value);

	numDays = numDaysIn(mth,yr);
	eval('document.' + date_form + '.' + aname + 'Day.options.length=' + (numDays+1)) ;
	for (i=27;i<=numDays;i++) {
		eval('document.' + date_form + '.' + aname + 'Day.options[' + i + '].text = ' + i);
		eval('document.' + date_form + '.' + aname + 'Day.options[' + i + '].value = ' + i);
	}
}

function setToFirst(date_form, aname, jsType) {
	//type 2=Month; 3=Day
	var jsStrType = 'Day';
	if ( jsType == 2 ) {
		jsStrType = 'Month';
	}
	eval('document.' + date_form + '.' + aname + jsStrType + '.options[1].selected=true');
}

function selectYear(date_form, aname) {
	newYearString = eval('document.' + date_form + '.' + aname + 'Year.value');
	newMonthString = '01';
	newDayString = '01';
	newDateString = '';
	if ( parseInt(newYearString) < 0) {
		eval('document.' + date_form + '.' + aname + 'Month.selectedIndex=0');
		eval('document.' + date_form + '.' + aname + 'Day.selectedIndex=0');
	} else {
		newDateString = newYearString + newMonthString + newDayString;
		setToFirst(	date_form, aname, 2);
		setToFirst(	date_form, aname, 3);
	}
	eval('document.' + date_form + '.' + aname + '.value=\'' + newDateString + '\'');
	changeDays(date_form, aname);
}

function selectMonth(date_form, aname) {
	newYearString = eval('document.' + date_form + '.' + aname + 'Year.value');
	newMonthString = '0' + (parseInt(eval('document.' + date_form + '.' + aname + 'Month.value')) + 1);
	newMonthString = newMonthString.substring(newMonthString.length-2, newMonthString.length);
	newDayString = '01';

	newDateString = '';
	if ( parseInt(eval('document.' + date_form + '.' + aname + 'Month.value')) < 0) {
		eval('document.' + date_form + '.' + aname + 'Year.selectedIndex=0');
		eval('document.' + date_form + '.' + aname + 'Day.selectedIndex=0');
	} else {
		if ( parseInt(newYearString)>0 && parseInt(newDayString)>0 ) {
			newDateString = newYearString + newMonthString + newDayString;
		}
		setToFirst(	date_form, aname, 3);
	}
	eval('document.' + date_form + '.' + aname + '.value=\'' + newDateString + '\'');
	changeDays(date_form, aname);
}

function selectDay(date_form, aname) {
	newYearString = eval('document.' + date_form + '.' + aname + 'Year.value');
	newMonthString = '0' + (parseInt(eval('document.' + date_form + '.' + aname + 'Month.value')) + 1);
	newMonthString = newMonthString.substring(newMonthString.length-2, newMonthString.length);
	newDayString = '0' + parseInt(eval('document.' + date_form + '.' + aname + 'Day.value'));
	newDayString = newDayString.substring(newDayString.length-2, newDayString.length);

	newDateString = '';
	if ( parseInt(newDayString) < 0) {
		eval('document.' + date_form + '.' + aname + 'Year.selectedIndex=0');
		eval('document.' + date_form + '.' + aname + 'Month.selectedIndex=0');
	} else {
		if ( parseInt(newYearString)>0 && parseInt(eval('document.' + date_form + '.' + aname + 'Month.value'))>=0 ) {
			newDateString = newYearString + newMonthString + newDayString;
		}
	}
	eval('document.' + date_form + '.' + aname + '.value=\'' + newDateString + '\'');
}

function numDaysIn(mth,yr) {
	if (mth==3 || mth==5 || mth==8 || mth==10) {
		return 30;
	} else if ((mth==1) && leapYear(yr)) {
		return 29;
	} else if (mth==1) {
		return 28;
	} else {
		return 31;
	}
}

function leapYear(yr) {
	if (((yr % 4 == 0) && yr % 100 != 0) || yr % 400 == 0) {
		return true;
	} else {
		return false;
	}
}

function arr() {
	this.length=arr.arguments.length;
	for (n=0; n<arr.arguments.length; n++) {
		this[n] = arr.arguments[n];
	}
}

// fixes a Netscape 2 and 3 bug
function getFullYear(d) { // d is a date object
	yr = d.getYear();
	if (yr < 1000) {
		yr+=1900;
	}
	return yr;
}

//--getDateSelector('f_birthday', '20040223')
//--getDateSelector('f_birthday', '20040223', 1950, 2004)
function getDateSelector(myname, feedDateString, minYear, maxYear){
	if (minYear) {
		min_year = minYear;
	}
	if (maxYear) {
		max_year = maxYear;
	}
	if ( feedDateString && feedDateString.length==8 ) {
		feedYear = parseInt(feedDateString.substring(0,4));
		feedMonth = (parseInt(feedDateString.substring(4,6))-1);
		feedDay = feedDateString.substring(6, 8);
		d=new Date(feedYear, feedMonth, feedDay);
		edmonth=d.getMonth();
		edday=d.getDate();
		edyear=d.getFullYear();
	} else {//--no valid feed-date
		d=new Date();
		edmonth=-1;
		edday=-1;
		edyear=-1;
	}

	// write year element
	document.write('<select name=\"' + myname + 'Year\" onchange=\"selectYear(this.form.name, \'' + myname + '\');\">\n');
	document.write('<option value=\"-1\"></option>\n');
	for (i=min_year;i<=max_year;i++) {
		document.write('<option value=\"' + i + '\" ' +(edyear==i?' selected="selected"':'')+'>'+i+'</option>\n');
	}
	document.write('</select>');
	// write month element
	document.write('<select name=\"' + myname + 'Month\" onchange=\"selectMonth(this.form.name, \'' + myname + '\');\">\n');
	document.write('<option value=\"-1\"></option>\n');
	for (i=0;i<12;i++) {
		document.write('<option value=\"'+ i + '\" ' +(edmonth==i?' selected="selected"':'')+'>' + months[i] + '</option>\n');
	}
	document.write('</select>');
	// write day element
	document.write('<select name=\"' + myname + 'Day\" onchange=\"selectDay(this.form.name, \'' + myname + '\');\">\n');
	document.write('<option value=\"-1\"></option>\n');
	maxDaysInMonth = numDaysIn(d.getMonth(),getFullYear(d));
	for (i=1;i<=maxDaysInMonth;i++) {
		document.write('<option value=\"' + i + '\" '+(edday==i?' selected="selected"':'')+'>' + i + '</option>\n');
	}
	document.write('</select>');
	document.write('<input type=\"hidden\" name=\"' + myname + '\" value=\"' + feedDateString + '\"/>');
}