

var dtUtil =
{
	CONST:
	{
		Days: [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ]
	, Ddd: new Array() // filled in programmatically below

	, Months:	[ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'Auguse', 'September', 'Octotber', 'November', 'December' ]
	, Mmm: new Array() // filled in programmatically below

	, now: new Date()

	, today: null	// filled in below
	} // CONST


, DEFAULTS:
	{
		opts:
			{
				fullYear: false
			, twentyFour:		false
			, zFill: 2
			}	// opts
	} // DEFAULTS



, amPM: function
(
  dt
)
		{
		return	( dt.getHours() > 11  ?  'pm'  :  'am' );
		}	// End method; amPM


, zFill:	function
(
  val
, siz
)
		{
		siz = ( (typeof sz) != 'undefined'  ?  sz  :  this.DEFAULTS.opts.zFill );

		val = '00000000000000000000' + val;

		return	val.substring( val.length-siz );
		}





// Returns 'hh:mm' if today, else returns 'm/d' (or m/d/yyyy)
, hmMD: function
(
  dt
, opts
)
		{
		var val;
		opts = ( (typeof opts) != 'undefined'  ?  opts  :  this.DEFAULTS.opts );
		opts.fullYear = ( (typeof opts.fullYear) != 'undefined'  ?  opts.fullYear  :  this.DEFAULTS.opts.fullYear );
		opts.twentyFour = ( (typeof opts.twentyFour) != 'undefined'  ?  opts.twentyFour  :  this.DEFAULTS.opts.twentyFour );

		var dtToday = new Date( dt.getFullYear(), dt.getMonth(), dt.getDate() );
		if ( dtToday.getTime()  !=  this.CONST.today.getTime() )
			{	// NOT today (past or future *day*)
			val = (dt.getMonth()+1) + '/' + dt.getDate() + ( opts.fullYear  ||  dt.getFullYear() != this.CONST.now.getFullYear()  ?  '/' + dt.getFullYear()  :  '' );
			}
		else	// today
			{
			var h = dt.getHours() % 12;
			val = (  opts.twentyFour  ?  this.zFill( dt.getHours() ) + ':' + this.zFill( dt.getMinutes() )
						:  ( h == 0  ?  12  :  h ) + ':' + this.zFill( dt.getMinutes() ) + this.amPM( dt )
						);
			}

		return	val;
		}	// End method; hmMD





// full date
, yyyymmddhhmmss: function
(
  dt
, opts
)
		{
		var val;
		opts = ( (typeof opts) != 'undefined'  ?  opts  :  this.DEFAULTS.opts );
		opts.twentyFour = ( (typeof opts.twentyFour) != 'undefined'  ?  opts.twentyFour  :  this.DEFAULTS.opts.twentyFour );

		val = this.zFill( (dt.getMonth()+1)) + '/' + this.zFill( dt.getDate() ) + '/' + dt.getFullYear();
		var h = dt.getHours() % 12;
		val += ' ' + (  opts.twentyFour  ?  this.zFill( dt.getHours() ) + ':' + this.zFill( dt.getMinutes() ) + ':' + this.zFill( dt.getSeconds() )
						:  ( h == 0  ?  12  :  h ) + ':' + this.zFill( dt.getMinutes() ) + ':' + this.zFill( dt.getSeconds() ) + this.amPM( dt )
						);


		return	val;
		}	// End method; yyyymmddhhmmss




}	// End object; dtUtil

dtUtil.CONST.today = new Date( dtUtil.CONST.now.getFullYear(), dtUtil.CONST.now.getMonth(), dtUtil.CONST.now.getDate() );


for ( var m = 0;  m < dtUtil.CONST.Months.length;  m++ )
	dtUtil.CONST.Mmm[m] = dtUtil.CONST.Months[m].substring( 0, 3 );

for ( var d = 0;  d < dtUtil.CONST.Days.length;  d++ )
	dtUtil.CONST.Ddd[d] = dtUtil.CONST.Days[d].substring( 0, 3 );
