window.undef=window.undef;
function dsInput( objName, formName, objDayName, objMonthName, objYearName, offsetDays, dateObj) {
	this.objName 	= objName;
	this.today          = new Date();
	this.today.setDate(this.today.getDate()+offsetDays);
	if(dateObj!=undef) {
		this.date           = dateObj.day;
		this.month          = dateObj.month;
		this.year           = dateObj.year;
	} else {	
		this.date           = this.today.getDate();
		this.month          = this.today.getMonth()+1;
		this.year           = this.today.getFullYear();
	}
	if(this.year < 2000) this.year += 1900; //for Netscape
	this.yearComboRange = 6;
	this.formName 		= arguments[1] ? arguments[1] : 'none';
	this.dayObj			= '';
	this.monthObj		= '';
	this.yearObj		= '';
	//this.monthNames		= new Array( '','January','February','March','April','May','June','July','August','September','October','November','December' );
	this.monthNames		= shortMonthsName;
	this.setToToday			= ds_setToToday;
	this.adjustDaysInMonth 	= ds_adjustDaysInMonth;
	this.setDate			= ds_setDate;
	this.setDateParts		= ds_setDateParts;
	this.getSelYear			= ds_getYear;
	this.getSelMonth		= ds_getMonth;
	this.getSelDay			= ds_getDay;

	this._initOptions		= ds_initOptions;
	this._writeYearOptions 	= ds_writeYearOptions;
	this._writeMonthOptions = ds_writeMonthOptions;
	this._writeDayOptions 	= ds_writeDayOptions;
	this._getDaysInMonth	= ds_getDaysInMonth;
	
	/* Constructor Code */
	if( this.formName == 'none' ) {
		this.dayObj = eval("document.forms[0]." + objDayName);
		this.monthObj = eval("document.forms[0]." + objMonthName);
		this.yearObj = eval("document.forms[0]." + objYearName);
	} else {
		this.dayObj = eval("document." + this.formName + "." + objDayName);
		this.monthObj = eval("document." + this.formName + "." + objMonthName);
		this.yearObj = eval("document." + this.formName + "." + objYearName);	
	}	
	this._initOptions();
	this.setToToday();
	this.adjustDaysInMonth();	
}

function ds_setToToday() {
	this.setDateParts( this.year, this.month, this.date );
}
function ds_setDate( dateStr ) {
	var y, m, d;
	y = dateStr.substr(0,4);
	m = dateStr.substr(4,2);
	d = dateStr.substr(6,2);
	this.setDateParts( y, m, d );
}

function ds_setDateParts( year, month, date ) {
	//this.dayObj[date-1].selected = true;
	if(this.dayObj[date-1]) this.dayObj[date-1].selected = true;
	else { //here comes the correction for the last days of the month: feb28 --> jan.31. can't be select, because in feb. there are only 28 days
		for(var i=this.dayObj.length; i<date+1; i++)
		{
			var y = document.createElement('option');
			y.text = i+1;
			y.value = i+1;
			try {
				this.dayObj.add(y,null); // standards compliant
			} catch(ex) {
				this.dayObj.add(y); // IE only
			}
		} //for
		this.dayObj[date-1].selected = true;
	} //else
	this.monthObj[month-1].selected = true;
	for( i=0; i < this.yearObj.length; i++ ) {
		if( this.yearObj[i].value == year )
			this.yearObj[i].selected = true;
	}
	this.adjustDaysInMonth();
}


function ds_getYear() {
	return this.yearObj[this.yearObj.selectedIndex].value;
}

function ds_getMonth() {
	return this.monthObj[this.monthObj.selectedIndex].value;
}

function ds_getDay() {
	return this.dayObj[this.dayObj.selectedIndex].value;
}

function ds_adjustDaysInMonth() {
	Month = this.monthObj[this.monthObj.selectedIndex].value;
	Year = this.yearObj[this.yearObj.selectedIndex].value;
	DaysForThisSelection = this._getDaysInMonth(Month, Year);
	PrevDaysInSelection = this.dayObj.length;

	if (PrevDaysInSelection > DaysForThisSelection) {
		for (i=0; i<(PrevDaysInSelection-DaysForThisSelection); i++) {
			this.dayObj.options[this.dayObj.options.length - 1] = null
		}
	}
	if (DaysForThisSelection > PrevDaysInSelection) {
		var prevLastDay = this.dayObj.options.length;
		for( i = prevLastDay+1; i <= DaysForThisSelection; i++ ) {
			var newOption = new Option( i, i );
			var optionsColl = this.dayObj.options;
			optionsColl[optionsColl.length] = newOption;
		}
	}
	if (this.dayObj.selectedIndex < 0)
		this.dayObj.selectedIndex == 0;
}
function ds_initOptions() {
	this._writeYearOptions();
	this._writeMonthOptions();
	this._writeDayOptions();
}

function ds_getDaysInMonth( m, y ) {
	return 31;
	/*
	monthdays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
	if (m != 2) {
		return monthdays[m];
	} else {
		return ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0 ? 29 : 28);
	}
	*/
}

function ds_writeYearOptions() {
//	this.date           = this.today.getDate();
//	this.month          = this.today.getMonth()+1;
//	this.year           = this.today.getFullYear();
	for(i=0; i<this.yearObj.options.length; i++) {
		this.yearObj.remove(0);
	}
	if(this.month==1 && this.date<6)
		i=(this.year)-1;
	else
		i=(this.year);	
	//for(i=(new Date()).getFullYear(); i<=(this.year+this.yearComboRange); i++ ) {
	for(i=2006; i<=(this.year+this.yearComboRange); i++ ) {
		var newOption = new Option( i, i );
		var optionsColl = this.yearObj.options;
		optionsColl[optionsColl.length] = newOption;
	}
	
}

function ds_writeMonthOptions() {
	for(i=0; i<this.monthObj.options.length; i++) {
		this.monthObj.remove(0);
	}
	for( i=1; i <= 12; i++ ) {
		var newOption = new Option( this.monthNames[i], i );
		var optionsColl = this.monthObj.options;
		optionsColl[optionsColl.length] = newOption;
	}
}

function ds_writeDayOptions() {
	for(i=0; i<this.dayObj.options.length; i++) {
		this.dayObj.remove(0);
	}
	for( i=1; i <= 31; i++ ) {
		var newOption = new Option( i, i );
		var optionsColl = this.dayObj.options;
		optionsColl[optionsColl.length] = newOption;
	}
}
	function updateHiddenDate() {
		var y = new String( mydate.getSelYear() );
		var m = padZero( mydate.getSelMonth() );
		var d = padZero( mydate.getSelDay() );
		//alert( y + m + d );
		document.form1.mydateHid.value = y + '-' + m + '-' + d;

	}
	function updateHiddenDateyour() {
		var y = new String( yourdate.getSelYear() );
		var m = padZero( yourdate.getSelMonth() );
		var d = padZero( yourdate.getSelDay() );
		//alert( y + m + d );

		document.form1.yourdateHid.value = y + '-' + m + '-' + d;
	}

	// callback for the popup calendar
	function myCallback( year, month, day ) {
		// update the date selector boxes
		mydate.setDateParts( year, month, day );
		upDate(myDateId);
	}
	function yourCallback( year, month, day ) {
		// update the date selector boxes
		yourdate.setDateParts( year, month, day );
	}
	
		function myCallbackyourdate( year, month, day ) {
		// update the date selector boxes
		yourdate.setDateParts( year, month, day );
	}
	
function updateHiddenDateToCalendar(id)
{
	document.getElementById(id+"date").value = document.getElementById(id+"year").value + '-' + 
									document.getElementById(id+"month").value + '-' + 
									document.getElementById(id+"day").value;
}

function updateMyDate(id)
{
	//document.getElementById(id+"date").value = mydate.dayObj.value+'-'+mydate.monthObj.value+'-'+mydate.yearObj.value;
	if(document.getElementById(id+"date") && document.getElementById(id+"year") && document.getElementById(id+"month") && document.getElementById(id+"day"))
	{
		document.getElementById(id+"date").value = document.getElementById(id+"year").value + '-' + 
									document.getElementById(id+"month").value + '-' + 
									document.getElementById(id+"day").value;
		minYear = document.getElementById(id+"year").value;
		minMonth = document.getElementById(id+"month").value - 1;
		minDay = document.getElementById(id+"day").value;
	}
}

function updateYourDate(id)
{
	//document.getElementById(id+"date").value = yourdate.dayObj.value+'-'+yourdate.monthObj.value+'-'+yourdate.yearObj.value;
	if(document.getElementById(id+"date") && document.getElementById(id+"year") && document.getElementById(id+"month") && document.getElementById(id+"day"))
	{
		document.getElementById(id+"date").value = document.getElementById(id+"year").value + '-' + 
									document.getElementById(id+"month").value + '-' + 
									document.getElementById(id+"day").value;
	maxYear = document.getElementById(id+"year").value;
	maxMonth = document.getElementById(id+"month").value - 1;
	maxDay = document.getElementById(id+"day").value;
	}
}

function updateMyDate2(id)
{
	//document.getElementById(id+"date").value = mydate.dayObj.value+'-'+mydate.monthObj.value+'-'+mydate.yearObj.value;
	document.getElementById(id+"date").value = document.getElementById(id+"year").value + '-' + 
									document.getElementById(id+"month").value + '-' + 
									document.getElementById(id+"day").value;
	minYear = document.getElementById(id+"year").value;
	minMonth = document.getElementById(id+"month").value - 1;
	minDay = document.getElementById(id+"day").value;
	alert(minYear+", "+minMonth+", "+minDay);
}

function updateYourDate2(id)
{
	//document.getElementById(id+"date").value = yourdate.dayObj.value+'-'+yourdate.monthObj.value+'-'+yourdate.yearObj.value;
	document.getElementById(id+"date").value = document.getElementById(id+"year").value + '-' + 
									document.getElementById(id+"month").value + '-' + 
									document.getElementById(id+"day").value;
	maxYear = document.getElementById(id+"year").value;
	maxMonth = document.getElementById(id+"month").value - 1;
	maxDay = document.getElementById(id+"day").value;
	alert(maxYear+", "+maxMonth+", "+maxDay);
}

function upDate(id) {
	if(typeof(myDateId) == 'undefined' || typeof(yourDateId) == 'undefined') return;
	if(!document.getElementById(id+"date") || !document.getElementById(id+"year") || !document.getElementById(id+"month") || !document.getElementById(id+"day"))
		return;
	document.getElementById(id+"date").value = document.getElementById(id+"year").value + '-' + 
								document.getElementById(id+"month").value + '-' + 
								document.getElementById(id+"day").value;
	
	var date1 = new Date();
	var day1= parseInt(document.getElementById(myDateId+"day").value);
	var month1= parseInt(document.getElementById(myDateId+"month").value);
	var year1= parseInt(document.getElementById(myDateId+"year").value);
	date1.setFullYear(year1,month1,day1);
	var date2 = new Date();
	var day2= parseInt(document.getElementById(yourDateId+"day").value);
	var month2= parseInt(document.getElementById(yourDateId+"month").value);
	var year2= parseInt(document.getElementById(yourDateId+"year").value);
	date2.setFullYear(year2,month2,day2);
	/*
	if(date2 - date1 < 0) { // if the departing date is greater than the returning date
		if(myDateId == id) { //the first date was modified
			document.getElementById(yourDateId+"month").options[month1-1].selected = true;
			document.getElementById(yourDateId+"day").options[day1-1].selected = true;
			var year2obj = document.getElementById(yourDateId+"year");
			year2obj.options[year1 - year2obj.options[0].value].selected = true;
			document.getElementById(yourDateId+"date").value = year1 + '-' + month1 + '-' + day1;
		} else if(yourDateId == id) { // if the second date was changed
			document.getElementById(myDateId+"month").options[month2-1].selected = true;
			document.getElementById(myDateId+"day").options[day2-1].selected = true;
			var year1obj = document.getElementById(myDateId+"year");
			year1obj.options[year2 - year1obj.options[0].value].selected = true;
			document.getElementById(myDateId+"date").value = year2 + '-' + month2 + '-' + day2;
		}
	}*/
	if(myDateId==id) {
		minYear = document.getElementById(id+"year").value;
		minMonth = document.getElementById(id+"month").value - 1;
		minDay = document.getElementById(id+"day").value;
	} else {
		maxYear = document.getElementById(id+"year").value;
		maxMonth = document.getElementById(id+"month").value - 1;
		maxDay = document.getElementById(id+"day").value;
	}
}