
<!--
/*****************************************************************************
 * Copyright (c) 2001 Multex.com, Inc. All Rights Reserved.
 *
 * File:        dateLib
 * Author:		Jacob Metcalf ( jacob.metcalf@multex.com )
 * Description: 
 *	
 ****************************************************************************/

function dateDebug( msg ) {
	if ( eval( 'mxDebug' ) != null ) {
		mxDebug( msg );
	} else {
		alert( msg );
	}
}
function dateError( msg ) {
	if ( eval( 'mxError' ) != null ) {
		mxError( msg );
	} else {
		alert( msg );
	}
}
 /*****************************************************************************
 * Function:		popDate
 * Description:		Populates an option list with date options.
 *
 ****************************************************************************/
function mxPopDate( datePart, vSelected, startYear, endYear, timeInterval, tzOffset, reverseOrder ) {
	if ( datePart == null ) {
		dateError( "Error: popDate() No DatePart parameter supplied."  ); return;
	}
	
	if ( vSelected == null ) { vSelected=""; }
			
//	var selected = vSelected.split(',');
	
	var text = "";
	var today = new Date();
	
	switch ( datePart ){
		case 'd':
			//if (!vSelected) vSelected=today.getDate();
			for (var i=1; i<32; i++){
				text = String(i);
				if ( text.length == 1) text = "0" + text;
				document.write('<option value="' + text + '"');
				if (vSelected == text) document.write(' selected')
				document.write('>' + i + '</option>')
			}
			break
		case 'm':
			//if (!vSelected) vSelected=today.getMonth()+1;
			for (var i=1; i<13; i++){
				text = String(i);
				if ( text.length == 1) text = "0" + text;
				document.write('<option value="' + text + '"');
				if (vSelected == text) document.write(' selected')
				if (i==1) document.write('>January</option>')
				if (i==2) document.write('>February</option>')
				if (i==3) document.write('>March</option>')
				if (i==4) document.write('>April</option>')
				if (i==5) document.write('>May</option>')
				if (i==6) document.write('>June</option>')
				if (i==7) document.write('>July</option>')
				if (i==8) document.write('>August</option>')
				if (i==9) document.write('>September</option>')
				if (i==10) document.write('>October</option>')
				if (i==11) document.write('>November</option>')
				if (i==12) document.write('>December</option>')
			}
			break
		case 'b':
			for (var i=1; i<13; i++){
				text = String(i);
				if ( text.length == 1) text = "0" + text;
				document.write('<option value="' + text + '"');
				if (vSelected == text) document.write(' selected')
				if (i==1) document.write('>Jan</option>')
				if (i==2) document.write('>Feb</option>')
				if (i==3) document.write('>Mar</option>')
				if (i==4) document.write('>Apr</option>')
				if (i==5) document.write('>May</option>')
				if (i==6) document.write('>Jun</option>')
				if (i==7) document.write('>Jul</option>')
				if (i==8) document.write('>Aug</option>')
				if (i==9) document.write('>Sep</option>')
				if (i==10) document.write('>Oct</option>')
				if (i==11) document.write('>Nov</option>')
				if (i==12) document.write('>Dec</option>')
			}
			break
		case 'y':
			if (!vSelected) vSelected=today.getFullYear();
			var today = new Date();
			if (endYear == null){endYear = today.getFullYear();}
			else{endYear = today.getFullYear() + endYear}
			
			if (startYear == null) {startYear = today.getFullYear();}
			else{startYear = today.getFullYear() - startYear;}
			
			for (var i=0; i<=endYear-startYear; i++){
				
				if (reverseOrder)
					text = startYear + i;
				else
					text = endYear - i;

				document.write('<option value="' + text + '"');
				if (vSelected == text) document.write(' selected')
				document.write('>' + text + '</option>')
			}
			
			break
		case 'H':
			var hour = ''
			var time = timeInterval
			var adjustedTime = vSelected
			
			//add tzOffset to required time
			if ( tzOffset!=null && tzOffset!='' ){
				if ( adjustedTime!=null && adjustedTime!='' ){
					var hourPart = adjustedTime.substr(0,2)
					var minPart = adjustedTime.substr(3)
					
					hourPart = parseInt(tzOffset) + parseInt(hourPart)

					var hourString = hourPart
					if ( hourPart < 10 ){
						hourString = '0' + hourPart
					}
					adjustedTime = hourString + ':' + minPart
				}
			}
			
			if (time == null) time = 1
			for ( var i=0; i<24; i++){
				hour = i
				if (i<10) hour = '0' + hour
				for ( var j=0; j<time; j++ ){
					if (j==0)text = hour + ':00'
					if (j==2)text = hour + ':30'
					if (j==3)text = hour + ':45'
					if (j==1 && time==2)text = hour + ':30'		
					if (j==1 && time==4)text = hour + ':15'
					document.write('<option value="' + text + '"');
					if (adjustedTime == text) document.write(' selected')
					document.write('>' + text + '</option>')
				}
			}
			
	}
	
}



/*****************************************************************************
 * Function:		mxFormatDate
 * Description:		Formats a date from Tornado using the user's date format.
 *					Date formats use the 
 *
 ****************************************************************************/
function mxFormatDate( inputDate, dateFormat, tzOffset, todaysDateFormat )
{
	document.write( mxGetFormattedDate(inputDate, dateFormat, tzOffset, todaysDateFormat) );
}

/*****************************************************************************
 * Function:		mxGetFormattedDate
 * Description:		Formats a date from Tornado using the user's date format.
 *					Date formats use the 
 *
 ****************************************************************************/
function mxGetFormattedDate( inputDate, dateFormat, tzOffset, todaysDateFormat )
{
	var result='';	
	//	mxFormatDate( '<xsl:value-of select="//Production/@date"/>', '%B %d, %Y %h:%M %t', null, '' );

	if( inputDate != '' ) 
	{
		// if text/tornado/xml date, parse by char position
		var date = null;
		var year = 0;
		var month = 0; 
		var day = 0;
		var hour = 0;
		var min = 0;
		var parseFailed = false;
		
		if ( (inputDate.length == 19 || inputDate.length == 20) && inputDate.substring(10,11) == 'T' ) 
		{		
			year	= getDateInt( inputDate.substring(0,4));
			month	= getDateInt( inputDate.substring(5,7));	// have to specify radix otherwise 02 would be taken as octal
			day		= getDateInt( inputDate.substring(8,10));
			hour	= getDateInt( inputDate.substring(11,13));
			min		= getDateInt( inputDate.substring(14,16));
		} 
		else if (inputDate.length >19) 
		{		
			year	= getDateInt( inputDate.substring(0,4));
			month	= getDateInt( inputDate.substring(5,7));	// have to specify radix otherwise 02 would be taken as octal
			day		= getDateInt( inputDate.substring(8,10));
			hour	= getDateInt( inputDate.substring(11,13));
			min		= getDateInt( inputDate.substring(14,16));
		} 
		else if(inputDate.length == 10) 
		{
			year	= getDateInt( inputDate.substring(0,4));
			month	= getDateInt( inputDate.substring(5,7));	// have to specify radix otherwise 02 would be taken as octal
			day		= getDateInt( inputDate.substring(8,10));
		}
		else if(inputDate.substring(10,11) == 'T' && inputDate.length > 19) 
		{
			//if date is parsable -- but time is in an unrecognized format...
			year	= getDateInt( inputDate.substring(0,4));
			month	= getDateInt( inputDate.substring(5,7));	// have to specify radix otherwise 02 would be taken as octal
			day		= getDateInt( inputDate.substring(8,10));
		}
		else if(inputDate.length == 9)
		{
			year = getDateInt( inputDate.substring(7,9));
			year = 2000 + year;
			month	= getDateInt( mxParseMonthName(inputDate.substring(3,6)));
			day		= getDateInt( inputDate.substring(0,2));
		}
		else if(inputDate.length == 11)
		{
			year = getDateInt( inputDate.substring(7,11));
			month	= getDateInt( mxParseMonthName(inputDate.substring(3,6)));
			day		= getDateInt( inputDate.substring(0,2));
		}
		else 
		{
			parseFailed = true;
		}
		
		// if any attempts to parse the year, month, or day failed, they will be 0
		if (year == 0 || month == 0 || day == 0)
			parseFailed = true;
			
		// see if javascript can parse the raw string
		if (parseFailed)
		{	
			try
			{
				date = new Date( inputDate );
			}
			catch(e)
			{
				return '';
		}
		}
		else
			date = new Date( year, month - 1, day, hour, min);
		//date.toGMTString();
		// calculate offset for user timezone
		if ( tzOffset != null ) 
			date.setTime( date.getTime() + ( tzOffset * 60000 ));
		
		if (todaysDateFormat != '') 
		{
			var today = new Date();
			if ( tzOffset != null ) 
				today.setTime( today.getTime() + ( tzOffset * 60000 ));
			if ( (date.getDate() == today.getDate()) && (date.getMonth() == today.getMonth()) && (date.getYear() == today.getYear()) ) 
				dateFormat = todaysDateFormat;
			}		
		
		result = mxOutputDate( date, dateFormat );
	}
	
	return result;	
	}
	
function getDateInt(_value)
{
	result = 0;
	try 
	{
		result = parseInt(_value,10);
	}
	catch (e)
	{
		result =  0;
	}
	if (isNaN(result))
		result = 0;
	return result;	
}

function mxGetFormattedTime( inputTime, dateFormat, tzOffset, todaysDateFormat ) {
	var result = "";
	if(inputTime.length > 10 && inputTime.substring(10,11) == 'T')
	{
			var year, month, day, hour, min
			year	= parseInt( inputTime.substring(0,4),10);
			month	= parseInt( inputTime.substring(5,7),10);	// have to specify radix otherwise 02 would be taken as octal
			day		= parseInt( inputTime.substring(8,10),10);
			hour	= parseInt( inputTime.substring(11,13),10);
			min		= parseInt( inputTime.substring(14,16),10);
			sec		= parseInt( inputTime.substring(17,19),10);
			var date = new Date( year, month - 1, day, hour, min, sec );
			if ( tzOffset != null ) 
			{ 
				date.setTime( date.getTime() + ( tzOffset * 60000 ));
			} 
			result = mxOutputDate( date, dateFormat );
	}
	else if(inputTime.length > 4)
	{
		// new current date/time
		var date = new Date();
		// split inputTime into h, m, s
		var h = parseInt( inputTime.substring(0,2), 10 );
		var m = parseInt( inputTime.substring(3,5), 10 );
		var s = 0;
		if ( inputTime.length > 5 ) {
			s = parseInt( inputTime.substring(6,8), 10 );
		}
		// new current date using inputTime
		var date2 = new Date( date.getFullYear(), date.getMonth()+1, date.getDate(), h, m, s );
		if ( tzOffset != null ) 
		{ 
			date2.setTime( date2.getTime() + ( tzOffset * 60000 ));
		} 
		result = mxOutputDate( date2, dateFormat );
	}
	return result;
}

/*****************************************************************************
 * Function:		mxOutputDate
 * Description:		Outputs a date in the given format.
 *
 ****************************************************************************/
function mxOutputDate( date, dateFormat ) {
	var result = '';
	var theChar, i, formatCode, s;
	formatCode = false;
	
	if ( dateFormat.length > 0 ) {
		for ( i = 0; i < dateFormat.length; i++ ) {
			theChar = dateFormat.charAt( i );
			if ( formatCode ) {
				switch ( theChar ) {
					case "a": result += mxWeekdayName( date.getDay()).substr(0,3); break;
					case "A": result += mxWeekdayName( date.getDay()); break;
					case "b": result += mxMonthName( date.getMonth()).substr(0,3); break;
					case "B": result += mxMonthName( date.getMonth()); break;
					case "d": s = date.getDate(); result += (( s < 10 ) ? ( '0' + s ) : s ); break;
					case "D": result += date.getDate(); break;
					case "h": 
						s = date.getHours(); 
						if (s > 12) s = s - 12;
						if (s == 0) s = 12;						
						result += (( s < 10 ) ? ( '0' + s ) : s ); break;
					case "H": s = date.getHours(); result += (( s < 10 ) ? ( '0' + s ) : s ); break;
					case "m": s = date.getMonth()+1; result += (( s < 10 ) ? ( '0' + s ) : s ); break;
					case "n": result += date.getMonth()+1; break;
					case "M": s = date.getMinutes(); result += (( s < 10 ) ? ( '0' + s ) : s ); break;
					case "s": s = date.getSeconds(); result += (( s < 10 ) ? ( '0' + s ) : s ); break;
					case "y": result += ( date.getFullYear().toString().substring(2,4) ); break;
					case "Y": result += date.getFullYear(); break;
					case "w": result += date.getDay(); break;
					case "%": result += "%"; break;
					case "t": result += ( ( date.getHours() < 12 ) ? 'AM' : 'PM' ); break;
					case "T": result += "T"; break;
					default: 
						dateError( "Error: mxFormatDate() Invalid Format Code: '%" + theChar +"'."  ); break;
				}
				formatCode = false;
			}
			else if ( theChar == "%" ) formatCode = true;
			else { result += theChar }	// Just add it
		}
	}
	else {
		result = date;
	}
	return result;
}

/*****************************************************************************
 * Function:		mxValidateOptionDate
 * Description:		Parses a date and outputs to Tornado Format using 
 *					the user's date format. Assumes that the form has 3 select boxes
 *					named prefix + Day, prefix + Month, prefix + Year and an optional
 *					prefix + Time.
 *
 ****************************************************************************/
function mxValidateOptionDate(formName, prefix, outputField, dateFormat, tzOffset, optional, tornadoFormat){
	var inputDate = ""
	var result = true;
	var form = eval( "document." + formName );
	
	if ( form == null ) {
		dateError( "Error: mxValidateDate() Could not find form '" + formName + "'."  );
	} else {
		var dayObj = eval( "document." + formName + "." + prefix + "Day" );
		var monthObj = eval( "document." + formName + "." + prefix + "Month" );
		var yearObj = eval( "document." + formName + "." + prefix + "Year" );
		var timeObj = eval( "document." + formName + "." + prefix + "Time" );
		var outputFieldObj = eval( "document." + formName + "." + outputField );
		
		if ( outputFieldObj == null ){
			dateError( "Error: mxValidateOptionDate() Could not find field '" + outputField + "'."  ); 			
		}
		else if ( dayObj == null ){
			dateError( "Error: mxValidateOptionDate() Could not find field '" + prefix + "Day" + "'."  ); 
		}
		else if ( monthObj == null ){
			dateError( "Error: mxValidateOptionDate() Could not find field '" + prefix + "Month" + "'."  ); 			
		}
		else if ( yearObj == null){
			dateError( "Error: mxValidateOptionDate() Could not find field '" + prefix + "Year" + "'."  ); 		
		}
		else {
			inputDate = yearObj.value + "-" + monthObj.value + "-" + dayObj.value

			if ( inputDate.length > 2 ){
				if ( timeObj != null ){					
					inputDate += " " + timeObj.value
				}
				else{
					inputDate += " 00:00:00"
				}
				result = mxValidateDate( formName, inputDate, outputField, dateFormat, tzOffset, tornadoFormat )
			}		
			else{
				result = false;
			}
		}
		
	}	
	return result;
}

/*****************************************************************************
 * Function:		mxValidateTextDate
 * Description:		Parses a date and outputs to Tornado Format using 
 *					the user's date format.
 *
 ****************************************************************************/
function mxValidateTextDate( formName, inputField, outputField, dateFormat, tzOffset, optional, tornadoFormat ) {
	var result = true;
	var form = eval( "document." + formName );
	
	if ( form == null ) {
		dateError( "Error: mxValidateDate() Could not find form '" + formName +"'."  ); 
	} else {
		var inputFieldObj = eval( "document." + formName + "." + inputField );
		var outputFieldObj = eval( "document." + formName + "." + outputField );

		if ( inputFieldObj == null ) {
			dateError( "Error: mxValidateDate() Could not find field '" + inputField +"'."  ); 
		}
		else if ( outputFieldObj == null ) {
			dateError( "Error: mxValidateDate() Could not find field '" + outputField +"'."  ); 
		} else {
			var inputDate = inputFieldObj.value;
			

			if ( inputDate.length == 0 )	// If blank
			{
				result = optional;
			}
			else if ( inputDate == inputFieldObj.defaultValue )	// If info still in there !!
			{
				result = optional;
			}
			else
			{
				result = mxValidateDate( formName, inputDate, outputField, dateFormat, tzOffset, tornadoFormat )
				
			}
		}
	}
	// dateDebug( "Debug: mxValidateDate() result=" + result );
	return result;
}

/*****************************************************************************
 * Function:		mxValidateDate
 * Description:		
 *
 ****************************************************************************/
function mxValidateDate( formName, inputDate, outputField, dateFormat, tzOffset, tornadoFormat )
{
	var result = true;
	var year = 0;
	var month = 0;
	var day = 0; 
	var min = 0;
	var hour = 0;
	var theChar;
	var formatCode = false;
	var pos = 0;
	var outputDate = ''


	var outputFieldObj = eval( "document." + formName + "." + outputField );

	if ( outputFieldObj == null ) {
		dateError( "Error: mxValidateDate() Could not find field '" + outputField +"'."  ); 
	} else {				
		for ( i = 0; (i < dateFormat.length ) && ( result == true ); i++ ) {
			theChar = dateFormat.charAt( i );
			if ( formatCode ) {
				switch ( theChar ) {
					case "b": month = mxParseMonthName( inputDate.substr(pos,3)); result = !isNaN( month ); pos+=3; break;
					case "B": dateError( "Error: mxParseDate() %B not yet implemented." ); break;
					case "d": day   = parseInt(inputDate.substr(pos,2),10); result = !isNaN( day );pos+=2; break;
					case "H": hour  = parseInt(inputDate.substr(pos,2),10); result = !isNaN( hour );pos+=2; break;
					case "m": month = parseInt(inputDate.substr(pos,2),10); result = !isNaN( month );pos+=2; break;
					case "M": min   = parseInt(inputDate.substr(pos,2),10); result = !isNaN( min );pos+=2; break;
					case "y": year  = ( 100 * Math.floor( Date().getFullYear() / 100 )) + parseInt(inputDate.substr(pos,2),10); result = !isNaN( year );pos+=2; break;
					case "Y": year  = parseInt(inputDate.substr(pos,4),10); result = !isNaN( year );pos+=4; break;
					case "%": result += "%"; break;
					default: // ignore everything else
				}
				formatCode = false;
			}
			else if ( theChar == "%" ) formatCode = true;
			else {
				if ( inputDate.substr( pos,1 ) == theChar ) pos++;
				else result = false; // Invalid separator
			}
		}

		if ( result == true ) {
			if (( month >= 1 ) && ( month <= 12 ) && 
				( day >=1 ) && ( day <= mxDayCount( month, year )) &&
				( hour >= 0 ) && ( hour < 24 ) &&
				( min >= 0 )  && ( min < 60 ))
			{  
				var date = new Date( year, month - 1, day, hour, min, 0 )
				if ( tzOffset != null ) { date.setTime( date.getTime() - ( tzOffset * 3600000 )); } 
				
				if (tornadoFormat==true){
					outputFieldObj.value = mxOutputDate( date, '%Y-%m-%d' );
				}
				else{
					outputFieldObj.value = mxOutputDate( date, '%Y-%m-%d %H:%M' );							
				}
			} else {
				result = false;
			}
		}
	}
	return result;
}


/*****************************************************************************
 * Function:		mxMonthName
 * Description:		Gets month name from numeric
 *
 ****************************************************************************/
function mxMonthName( month )
{
	switch ( month )
	{
		case 0: return "January"; break;	case 1: return "February"; break;
		case 2: return "March"; break;		case 3: return "April"; break;
		case 4: return "May"; break;		case 5: return "June"; break;
		case 6: return "July"; break;		case 7: return "August"; break;
		case 8: return "September"; break;	case 9: return "October"; break;
		case 10: return "November"; break;	case 11: return "December"; break;
		default: dateError( "Error: mxMonthName() Out of range: " + month ); break;
	}
}

/*****************************************************************************
 * Function:		mxParseMonthName
 * Description:		Parses month name - returns NaN if unrecognized
 *
 ****************************************************************************/
function mxParseMonthName( monthName )
{
	switch ( monthName.toLowerCase() )
	{
		case "jan": return 1; break;	case "feb": return 2; break;
		case "mar": return 3; break;	case "apr": return 4; break;
		case "may": return 5; break;	case "jun": return 6; break;
		case "jul": return 7; break;	case "aug": return 8; break;
		case "sep": return 9; break;	case "oct": return 10; break;
		case "nov": return 11; break;	case "dec": return 12; break;
		default:    return Number.NaN; break;
	}
}


/*****************************************************************************
 * Function:		mxWeekdayName
 * Description:		Gets weekday name from numeric
 *
 ****************************************************************************/
function mxWeekdayName( day )
{
	switch ( day )
	{
		case 0: return "Sunday"; break;		case 1: return "Monday"; break;
		case 2: return "Tuesday"; break;	case 3: return "Wednesday"; break;
		case 4: return "Thursday"; break;	case 5: return "Friday"; break;
		case 6: return "Saturday"; break;
		default: dateError( "Error: mxWeekdayName() Out of range: " + day ); break;
	}
}

/*****************************************************************************
 * Function:		mxDayCount
 * Description:		Gets the number of days in a month
 *
 ****************************************************************************/
function mxDayCount( month, year )
{
	switch ( month )
	{
		case 1: return 31; break;	
		case 2: return ((( year % 4 == 0 ) && (( year % 100 != 0 ) || ( year % 400 == 0 ))) ? 29 : 28 );
		case 3: return 31; break;	case 4: return 30; break;
		case 5: return 31; break;	case 6: return 30; break;
		case 7: return 31; break;	case 8: return 31; break;
		case 9: return 30; break;	case 10: return 31; break;
		case 11: return 30; break;	case 12: return 31; break;
		default: dateError( "Error: mxDayCount() Out of range: " + month ); break;
	}
}

/*****************************************************************************
 * Function:		mxInsertDate
 * Description:		Formats a date from Tornado using the user's date format.
 *					Date formats use the 
 *
 ****************************************************************************/
function mxInsertDate( inputDate, dateFormat, tzOffset )
{
	var result='';
	if( inputDate != '' )
	{
		var year, month, day, hour, min
		
		year	= parseInt( inputDate.substring(0,4),10)
		month	= parseInt( inputDate.substring(5,7),10)	// have to specify radix otherwise 02 would be taken as octal
		day		= parseInt( inputDate.substring(8,10),10)
		
		if ( inputDate.substring(10,11) == 'T' )
		{
			hour	= parseInt( inputDate.substring(11,13),10)
			min		= parseInt( inputDate.substring(14,16),10)
		}
		else
		{
			hour = 0;
			min = 0;
		}
		
		var date = new Date( year, month - 1, day, hour, min, 0 )
		if ( tzOffset != null ) { date.setTime( date.getTime() + ( tzOffset * 3600000 )); } 
		
		result = mxOutputDate( date, dateFormat )
	}
	else
	{
		result = ''
		// DO not alert - this sometimes happens 
		//dateError( "Error: mxFormatDate() Invalid Date: '" + inputDate +"'."  ); 
	}
	return result;
}

function mxSetTimePart( formName, select1, select2, time ){
	var frm = eval( "document." + formName );

	var s1 = eval('frm.' + select1);
	var s2 = eval('frm.' + select2);
	
	var val = mxGetDate( time );
	for ( var i=0; i<s1.options.length; i++){
		if ( s1.options[i].value == val ){
			s1.options[i].selected = true;
		}
	}
	setOptions( formName, select1, select2 )
	
}
function mxGetDate( time ){
	var now = new Date()
	var value
	
	switch ( time ){
	case "t":
		var min = now.getUTCMinutes()
		var hour = (now.getTimezoneOffset()/60 * -1) + now.getUTCHours()
		if ( min > 0 && min <= 30 ){ min = 30 }
		if ( min > 30 && min <= 59 ){ 
			min = 0 
			hour += 1;
		}
		value = padNumber( hour ) + ":" + padNumber( min )
		break;
	case "d":
		value = padNumber( now.getUTCDate() )
		break;
	case "m":
		value = padNumber( now.getMonth() + 1 )
		break;
	case "y":
		value = now.getYear();
		if (value < 1000) value += 1900;
		break;
	default:
	}
	return value;
}
function padNumber( num ){
	if (num < 10 )num = "0" + num;
	return num;
}
function setOptions( formName, select1, select2 ){
	var frm = eval( "document." + formName );

	var s1 = eval('frm.' + select1);
	var s2 = eval('frm.' + select2);
	
	s2.options[s1.selectedIndex].selected = true
}

function buildDate( objDay, objMonth, objYear, objTime ){
	
	//builds date in yyyy-mm-ddT00:00:00 format - assumes the dates are
	//in individual select boxes
	
	var date = '';
	
	date += objYear.options[objYear.selectedIndex].value;
	date += '-' + objMonth.options[objMonth.selectedIndex].value;
	date += '-' + objDay.options[objDay.selectedIndex].value;
	
	if (objTime){
		date += 'T' + objTime.options[objTime.selectedIndex].value;
	} else date += 'T00:00:00'
	
	return date;
	
}

/*function mxValidateDate( formName, inputField, outputField, dateFormat, tzOffset, optional, tornadoFormat )
{
	// dateDebug( "Debug: mxValidateDate('" + formName + "','" + inputField + "','" + outputField + "','"+ dateFormat + "','"); 
	var result = true;
	var form = eval( "document." + formName );
	
	if ( form == null ) 
	{
		dateError( "Error: mxValidateDate() Could not find form '" + formName +"'."  ); 
	}
	else
	{
		var inputFieldObj = eval( "document." + formName + "." + inputField );
		var outputFieldObj = eval( "document." + formName + "." + outputField );

		if ( inputFieldObj == null ) 
		{
			dateError( "Error: mxValidateDate() Could not find field '" + inputField +"'."  ); 
		}
		else if ( outputFieldObj == null ) 
		{
			dateError( "Error: mxValidateDate() Could not find field '" + outputField +"'."  ); 
		}
		else
		{
			var inputDate = inputFieldObj.value;

			if ( inputDate.length == 0 )	// If blank
			{
				result = optional;
			}
			else if ( inputDate == inputFieldObj.defaultValue )	// If info still in there !!
			{
				result = optional;
			}
			else
			{
				var year = 0;
				var month = 0;
				var day = 0; 
				var min = 0;
				var hour = 0;
				var theChar;
				var formatCode = false;
				var pos = 0;
						
				for ( i = 0; (i < dateFormat.length ) && ( result == true ); i++ )
				{
					theChar = dateFormat.charAt( i );
					if ( formatCode ) 
					{
						switch ( theChar ) 
						{
							case "b": month = mxParseMonthName( inputDate.substr(pos,3)); result = !isNaN( month ); pos+=3; break;
							case "B": dateError( "Error: mxParseDate() %B not yet implemented." ); break;
							case "d": day   = parseInt(inputDate.substr(pos,2),10); result = !isNaN( day );pos+=2; break;
							case "H": hour  = parseInt(inputDate.substr(pos,2),10); result = !isNaN( hour );pos+=2; break;
							case "m": month = parseInt(inputDate.substr(pos,2),10); result = !isNaN( month );pos+=2; break;
							case "M": min   = parseInt(inputDate.substr(pos,2),10); result = !isNaN( min );pos+=2; break;
							case "y": year  = ( 100 * Math.floor( Date().getFullYear() / 100 )) + parseInt(inputDate.substr(pos,2),10); result = !isNaN( year );pos+=2; break;
							case "Y": year  = parseInt(inputDate.substr(pos,4),10); result = !isNaN( year );pos+=4; break;
							case "%": result += "%"; break;
							default: // ignore everything else
						}
						formatCode = false;
					}
					else if ( theChar == "%" ) formatCode = true;
					else 
					{
						if ( inputDate.substr( pos,1 ) == theChar ) pos++;
						else result = false; // Invalid separator
					}
				}

				if ( result == true )
				{
					if (( month >= 1 ) && ( month <= 12 ) && 
						( day >=1 ) && ( day <= mxDayCount( month, year )) &&
						( hour >= 0 ) && ( hour < 24 ) &&
						( min >= 0 )  && ( min < 60 ))
					{  
						var date = new Date( year, month - 1, day, hour, min, 0 )
						if ( tzOffset != null ) { date.setTime( date.getTime() - ( tzOffset * 3600000 )); } 

						if (tornadoFormat==true){
							outputFieldObj.value = mxOutputDate( date, '%Y-%m-%dT%H:%M:00' );
						}
						else{
							outputFieldObj.value = mxOutputDate( date, '%Y-%m-%d %H:%M:00' );							
						}
					}
					else
					{
						result = false;
					}
				}
			}
		}
	}
	//dateDebug( "Debug: mxValidateDate() result=" + result );		
	dateDebug(outputFieldObj.value)
	return result;
}*/
//-->
