function DateNTime( sInID, oInDateTimeInfo ){
	this.ID = sInID;
	this.DateTimeInfo = oInDateTimeInfo;
	// Type:
    // 0: None
    // 1: Now
    // 2: StartTime
    // 3  ExpireTime
    // 4: ReviewNRevisionTime
	this.Type = 0;
	// DateFormat:
	// 0: None
	// 1: ShortDate
	// 2: LongDate
	// 3: EngDate
	// 4: ChiDate
	this.DateFormat = 0;
	// TimeFormat:
	// 0: None
	// 1: HHMM12
	// 2: HHMM24
	// 3: HHMMSS12
	// 4: HHMMSS24
	this.TimeFormat = 0;

	var MonthName = new Array( "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" );

	this.ShowDateNTime = function ShowDateNTime(){
		var dtShowTime = null;
		switch( this.Type ){
			case 1:
				dtShowTime = new Date();
				break;
			case 2:
				dtShowTime = this.DateTimeInfo.StartTime;
				break;
			case 3:
				dtShowTime = this.DateTimeInfo.ExpireTime;
				break;
			case 4:
				if( this.DateTimeInfo.ReviewTime.getTime() > this.DateTimeInfo.RevisionTime.getTime() )
				{
					dtShowTime = this.DateTimeInfo.ReviewTime;
				} else {
					dtShowTime = this.DateTimeInfo.RevisionTime;
				}
				break;
		}

		if( dtShowTime == null ) return;
		switch( this.DateFormat ){
			case 1:
				document.write( dtShowTime.getDate() + '/' + (dtShowTime.getMonth() + 1) + '/' + dtShowTime.getFullYear() + '\n');
				break;
			case 2:
				document.write( this.ZeroFix(dtShowTime.getDate()) + '/' + this.ZeroFix(dtShowTime.getMonth() + 1) + '/' + dtShowTime.getFullYear() + '\n');
				break;
			case 3:
				document.write( dtShowTime.getDate() + ' ' + MonthName[dtShowTime.getMonth()] + ', ' + dtShowTime.getFullYear() + '\n');
				break;
			case 4:
				document.write( dtShowTime.getFullYear() + ' ¦~ ' + (dtShowTime.getMonth() + 1) + ' ¤ë ' + dtShowTime.getDate() + ' ¤é\n');
				break;
		}
		switch( this.TimeFormat ){
			case 1:
				document.write( this.ZeroFix(this.HourFix(dtShowTime.getHours())) + ':' + this.ZeroFix(dtShowTime.getMinutes()) + ' ' + this.AMPM(dtShowTime) );
				break;
			case 2:
				document.write( this.ZeroFix(dtShowTime.getHours()) + ':' + this.ZeroFix(dtShowTime.getMinutes()) );
				break;
			case 3:
				document.write( this.ZeroFix(this.HourFix(dtShowTime.getHours())) + ':' + this.ZeroFix(dtShowTime.getMinutes()) + ':' + this.ZeroFix(dtShowTime.getSeconds()) + ' ' + this.AMPM(dtShowTime) );
				break;
			case 4:
				document.write( this.ZeroFix(dtShowTime.getHours()) + ':' + this.ZeroFix(dtShowTime.getMinutes()) + ':' + this.ZeroFix(dtShowTime.getSeconds()) );
				break;
		}
	}

	this.ZeroFix = function ZeroFix( nIn ){
		return ((nIn < 10) ? "0" : "") + nIn;
	}

	this.HourFix = function HourFix( nInHour ){
		return ((nInHour <= 12) ? nInHour : nInHour - 12);
	}

	this.AMPM = function AMPM( dtInTime ){
		return ((dtInTime.getHours() < 12) ? "AM" : "PM");
	}
}
