var DTPPref = "DTPICKER_";

var DTPSuff_Cal = "_CALENDAR";
var DTPSuff_Cal_Cell = "_CALENDAR_CELL";
var DTPSuff_Clr = "_CLEAR";

var DTP_FirstDayOfWeek = 0; // Sunday
var DTP_TableRows = 6;

var DTP_Calendars = new Array();

var DTP_LastCalendar = null;

// The following constant is the upper limit for it to be included in year 2000+
var ConstantTwoDigitYearUpperLimit = 29;
// The following constant is the lower limit for it to be included in year 2000+
var ConstantTwoDigitYearLowerLimit = 00;
// The following constant is the upper limit for it to be included in year 1900
var ConstantNineteenHundredUpperLimit = 99;

function DTPGetStem(DTPickerField)
{
  var id = (DTPickerField.name ? DTPickerField.name : DTPickerField.id);
   if (!id) return null;

   var Stem = id;
   if (Stem.length > DTPPref.length && Stem.substring(0, DTPPref.length) == DTPPref)
    Stem = Stem.substring(DTPPref.length, Stem.length);

   return Stem;
}

function SetupDateTimeDicker(DTPickerField)
{
  var Stem = DTPGetStem(DTPickerField);
   if (!Stem) return;
   var iebrowser_version = parseFloat(navigator.appVersion.split("MSIE")[1]);
   if (navigator.userAgent.indexOf('Mac')>=0 || navigator.userAgent.indexOf('Windows CE')>=0 || navigator.userAgent.indexOf('Opera')>=0) { iebrowser_version = 0;}
   if (iebrowser_version == 6) return;

   var BaseSrc = "";
   var AltSrcField = formHelper.GetElementById("WSRPBASEURL");
   if (AltSrcField) BaseSrc = AltSrcField.value;

   var CalendarCell = formHelper.GetElementById(Stem + DTPSuff_Cal_Cell);
   if (CalendarCell && CalendarCell.Added == null)
   {
    CalendarCell.Added = true;
    var CalImg = document.createElement('img');
    CalImg.src = BaseSrc + 'DTP-Calendar.gif';
    CalImg.style.border = '0';
    CalImg.title = 'Select a Date/Time from the Calendar';
    CalImg.align = 'absmiddle';
    if (window.addEventListener) {
      CalImg.addEventListener('click', function(){DTPLaunchCalendar(CalendarCell, Stem);}, false);
    } else {
      CalImg.attachEvent('onclick', function(){DTPLaunchCalendar(CalendarCell, Stem);});
    }
    CalendarCell.appendChild(CalImg);
  }

   var ClearCell = formHelper.GetElementById(Stem + DTPSuff_Clr);
   if (ClearCell && ClearCell.Added == null)
   {
    ClearCell.Added = true;
    var CalClsImg = document.createElement('img');
    CalClsImg.src = BaseSrc + 'DTP-Calendar-Clear.gif';
    CalClsImg.style.border = '0';
    CalClsImg.title = 'Clear the current Date/Time value';
    CalClsImg.align = 'absmiddle';
    if (window.addEventListener) {
      CalClsImg.addEventListener('click', function(){DTPClear(Stem);}, false);
    } else {
      CalClsImg.attachEvent('onclick', function(){DTPClear(Stem);});
    }
    ClearCell.appendChild(CalClsImg);
   }
   
   var FieldYear = formHelper.GetElementById(Stem + "_YEAR");
   if (FieldYear)
   {
   	if (window.addEventListener) {
   		FieldYear.addEventListener('change', function(){DTPUpdateYear(FieldYear);}, false);
   	} else {
   		FieldYear.attachEvent('onchange', function(){DTPUpdateYear(FieldYear);}, false);
   	}
   }
}

// Mozilla doesn't like adding anonymous rows and cells, so we force position
function DTPCalendar(Cell, CalendarStem)
{
  this.Stem = CalendarStem;
  this.Cell = Cell;

  this.Today = new Date();

  this.FieldYear = formHelper.GetElementById(CalendarStem + "_YEAR");
  this.FieldMonth = formHelper.GetElementById(CalendarStem + "_MONTH");
  this.FieldDay = formHelper.GetElementById(CalendarStem + "_DAY");
  this.FieldHours24 = formHelper.GetElementById(CalendarStem + "_HOURS24");
  this.FieldHours12 = formHelper.GetElementById(CalendarStem + "_HOURS12");
  this.FieldMinutes = formHelper.GetElementById(CalendarStem + "_MINUTES");
  this.FieldSeconds = formHelper.GetElementById(CalendarStem + "_SECONDS");
  this.FieldAMPM = formHelper.GetElementById(CalendarStem + "_AMPM");

  this.GetYear = function() { var Val = this.FieldYear ? this.FieldYear.value : null; return Val ? Val : this.Today.getFullYear(); }
  this.GetMonth = function() { var Val = this.FieldMonth ? this.FieldMonth.value : null; return Val ? Val : this.Today.getMonth() + 1; }
  this.GetDay = function() { var Val = this.FieldDay ? this.FieldDay.value : null; return Val ? Val : this.Today.getDate(); }

  this.SetYear = function(Year) { if (this.FieldYear) this.FieldYear.value = Year; }
  this.SetMonth = function(Month) { if (this.FieldMonth) this.FieldMonth.value = Month; }
  this.SetDay = function(Day) { if (this.FieldDay) this.FieldDay.value = Day; }

  this.Year = this.GetYear();
  this.Month = this.GetMonth();
  this.Day = this.GetDay();

  this.Div = document.createElement('div');
  this.Div.id =  CalendarStem + "_CALENDARDIV";
  this.Div.className = "IE-DatePicker-Calendar";
  this.Div.style.position = "absolute";

  this.ControlBar = document.createElement('div');
  this.ControlBar.className = "IE-DatePicker-CalendarControlBar";
  this.ControlBar.innerHTML = "<a href=\"javascript:DTPCloseCalendar('" +
                        CalendarStem +
                      "')\">X</a>";
  this.Div.appendChild(this.ControlBar);

  this.Header = document.createElement('table');
  this.Header.className = "IE-DatePicker-CalendarHeader";
  this.Header.width = "100%";
  this.Div.appendChild(this.Header);

  var HeaderRow = this.Header.insertRow(0);

  var HeaderCellLast = HeaderRow.insertCell(0);
  HeaderCellLast.align = "left";
  var LinkLast = document.createElement('a');
  LinkLast.href = "javascript:DTPLastMonth('" + CalendarStem + "')";
  LinkLast.innerHTML = "&lt;&lt;";
  HeaderCellLast.appendChild(LinkLast);

  var HeaderCellMonth = HeaderRow.insertCell(1);
  HeaderCellMonth.align = "center";
  HeaderCellMonth.nowrap = true;
  this.MonthName = document.createElement('span');
  HeaderCellMonth.appendChild(this.MonthName);

  var HeaderCellNext = HeaderRow.insertCell(2);
  HeaderCellNext.align = "right";
  var LinkNext = document.createElement('a');
  LinkNext.href = "javascript:DTPNextMonth('" + CalendarStem + "')";
  LinkNext.innerHTML = "&gt;&gt;";
  HeaderCellNext.appendChild(LinkNext);

  this.DateTable = document.createElement('table');
  this.DateTable.className = "IE-DatePicker-CalendarTable";
  this.DateTable.width = "100%";
  this.DateTable.border = "0";
  this.DateTable.cellspacing = "0";
  this.DateTable.cellpadding = "0";
  this.Div.appendChild(this.DateTable);

  this.DateTableHead = this.DateTable.createTHead();
  var DateTableHeadRow = this.DateTableHead.insertRow(0);
  for (var i = 0; i < 7; i++)
  {
    var HeaderCell = DateTableHeadRow.insertCell(i);
    if(HeaderCell.innerHTML != undefined) {
      HeaderCell.innerHTML = DTPLookupDayNameShort((DTP_FirstDayOfWeek + i) % 7);
    } else {
      HeaderCell.contentText = DTPLookupDayNameShort((DTP_FirstDayOfWeek + i) % 7);
    }
  }

  this.DateTableBody = document.createElement('tbody');
  this.DateTable.appendChild(this.DateTableBody);

  this.RenderMonth = function() {
    var FirstDayOfMonth = (new Date(this.Year, this.Month - 1, 1)).getDay();
    var NoDaysPerMonth = DTPDaysPerMonth(this.Month, this.Year);

    this.MonthName.innerHTML = DTPLookupMonthNameShort(this.Month) + " " + this.Year.toString();

    for (var i = this.DateTableBody.rows.length - 1; i >= 0; i--)
      this.DateTableBody.deleteRow(i);

    var ModFirstDayOfMonth = FirstDayOfMonth - DTP_FirstDayOfWeek;
    if (ModFirstDayOfMonth < 0) ModFirstDayOfMonth += 7;

    var iCurrentRow = 0;

    var RelativeDayOfWeek = 0;

    var CurrentRow = this.DateTableBody.insertRow(iCurrentRow);
    ++iCurrentRow;

    for (var i = 0; RelativeDayOfWeek < ModFirstDayOfMonth; RelativeDayOfWeek++, ++i)
    {
      var DayCell = CurrentRow.insertCell(i);
      DayCell.className = "IE-DatePicker-DayCell";
    }

    var IsMonthOfToday = ((this.Year == this.Today.getYear() || this.Year == this.Today.getFullYear()) && this.Month == (this.Today.getMonth() + 1));
    var DateOfToday = this.Today.getDate();

    for (var DayOfMonth = 0; DayOfMonth < NoDaysPerMonth; RelativeDayOfWeek++, DayOfMonth++)
    {
      if (RelativeDayOfWeek == 7)
      {
        CurrentRow = this.DateTableBody.insertRow(iCurrentRow);
        ++iCurrentRow;
        RelativeDayOfWeek = 0;
      }

      var DayCell = CurrentRow.insertCell(RelativeDayOfWeek);
      
      DayCell.className = (IsMonthOfToday && DateOfToday == DayOfMonth + 1 ? "IE-DatePicker-DayCell-Today" : "IE-DatePicker-DayCell");
      
      DayCell.innerHTML = "<a href=\"javascript:DTPSetDate('" + this.Stem + "'," +
                          this.Year.toString() + "," +
                          this.Month.toString() + "," +
                          (DayOfMonth + 1).toString() +
                      ")\">" + (DayOfMonth + 1).toString() + "</a>";
    }
	

    while (RelativeDayOfWeek < 7)
    {
      var DayCell = CurrentRow.insertCell(RelativeDayOfWeek);
      DayCell.className = "IE-DatePicker-DayCell";
      DayCell.innerHTML = "&nbsp;";
      RelativeDayOfWeek++;
    }

    while (this.DateTableBody.rows.length < DTP_TableRows)
    {
      var Row = this.DateTableBody.insertRow(iCurrentRow);
      ++iCurrentRow;
      for (var Day = 0; Day < 7; Day++)
      {
        var DayCell = Row.insertCell(Day);
        DayCell.className = "IE-DatePicker-DayCell";
        DayCell.innerHTML = "&nbsp;";
      }
    }
  }

  this.Last = function() { this.Month--; if (this.Month == 0) { this.Month=12; this.Year--;} this.RenderMonth(); }
  this.Next = function() { this.Month++; if (this.Month == 13) { this.Month=1; this.Year++;} this.RenderMonth(); }

  this.Open = function() {
    this.Year = this.GetYear();
    this.Month = this.GetMonth();
    this.Day = this.GetDay();
    this.RenderMonth();
    this.Cell.appendChild(this.Div);
  }
  if (this.Div.removeNode) {
    this.Close = function() { this.Div.removeNode(true); };
  } else {
    this.Close = function() { // Firefox
      var el = DTPGetElement(this.Stem + "_CALENDARDIV");
      el.parentNode.removeChild(el);
    };
  }


  this.SetDate = function(Year, Month, Day) {
    this.SetYear(Year);
    this.SetMonth(Month);
    this.SetDay(Day);
    this.SetDefaultTime();
  }
  this.Clear = function() {
    this.SetYear("");
    this.SetMonth("");
    this.SetDay("");
    if (this.FieldHours24) this.FieldHours24.value = "";
    if (this.FieldHours12) this.FieldHours12.value = "";
    if (this.FieldAMPM) this.FieldAMPM.value = "";
    if (this.FieldMinutes) this.FieldMinutes.value = "";
    if (this.FieldSeconds) this.FieldSeconds.value = "";
  }

  this.SetDefaultTime = function() {

    if (this.FieldHours24)
    {
      if (this.FieldHours24.type == "hidden")
      {
        if (this.FieldHours12 && this.FieldHours12.value == "") this.FieldHours12.value = 12;
        if (this.FieldAMPM && this.FieldAMPM.value == "") this.FieldAMPM.value = "AM";
        this.FieldHours24.value = this.FieldHours12 ?
                        this.FieldAMPM && this.FieldAMPM.value == "AM" ?
                          this.FieldHours12.value == 12 ?
                            0 :
                            this.FieldHours12.value
                          :
                          this.FieldHours12.value > 12 ?
                            this.FieldHours12.value + 12 :
                            this.FieldHours12.value
                        : 0;


      }
      else
      {
        if (this.FieldHours24.value == "") this.FieldHours24.value = 0;
        if (this.FieldHours12) this.FieldHours12.value = this.FieldHours24.value == 0 ? 12 : this.FieldHours24.value > 12 ? this.FieldHours24.value - 12 : this.FieldHours24.value;
        if (this.FieldAMPM) this.FieldAMPM.value = this.FieldHours24.value > 11 ? "AM" : "PM";
      }
    }

    if (this.FieldHours12 && this.FieldHours12.value == "") this.FieldHours12.value = 12;
    if (this.FieldAMPM && this.FieldAMPM.value == "") this.FieldAMPM.value = "PM";
    if (this.FieldMinutes && this.FieldMinutes.value == "") this.FieldMinutes.value = "00";
    if (this.FieldSeconds && this.FieldSeconds.value == "") this.FieldSeconds.value = "00";
  }

  this.Open();
}

function DTPLaunchCalendar(Cell, CalendarStem)
{
  if (DTP_LastCalendar)
  {
    if (DTP_LastCalendar.Stem == CalendarStem)
      return;
    else
      DTP_LastCalendar.Close();
  }

  DTP_LastCalendar = DTP_Calendars[CalendarStem];

  if (DTP_LastCalendar)
    DTP_LastCalendar.Open();
  else
  {
    DTP_LastCalendar = new DTPCalendar(Cell, CalendarStem);
    DTP_Calendars[CalendarStem] = DTP_LastCalendar;
  }
}

function DTPClear(Stem)
{
  DTPClearElem(formHelper.GetElementById(Stem + "_YEAR"));
  DTPClearElem(formHelper.GetElementById(Stem + "_MONTH"));
  DTPClearElem(formHelper.GetElementById(Stem + "_DAY"));
  DTPClearElem(formHelper.GetElementById(Stem + "_HOURS24"));
  DTPClearElem(formHelper.GetElementById(Stem + "_HOURS12"));
  DTPClearElem(formHelper.GetElementById(Stem + "_MINUTES"));
  DTPClearElem(formHelper.GetElementById(Stem + "_SECONDS"));
  DTPClearElem(formHelper.GetElementById(Stem + "_AMPM"));
}

function DTPClearElem(Elem)
{
  if (Elem) Elem.value = "";
}

function DTPGetElement(txt)
{
	if (document.getElementById(txt))
		return document.getElementById(txt);
	else
		return document.getElementsByName(txt)[0];
}

// These are fallback values. Correct culture-specific text will be retrieved from the server.
// DO NOT TRANSLATE.

var DTPMonthNamesLong = new Array();
DTPMonthNamesLong[1] = "January";
DTPMonthNamesLong[2] = "February";
DTPMonthNamesLong[3] = "March";
DTPMonthNamesLong[4] = "April";
DTPMonthNamesLong[5] = "May";
DTPMonthNamesLong[6] = "June";
DTPMonthNamesLong[7] = "July";
DTPMonthNamesLong[8] = "August";
DTPMonthNamesLong[9] = "September";
DTPMonthNamesLong[10] = "October";
DTPMonthNamesLong[11] = "November";
DTPMonthNamesLong[12] = "December";

var DTPMonthNamesShort = new Array();
DTPMonthNamesShort[1] = "Jan";
DTPMonthNamesShort[2] = "Feb";
DTPMonthNamesShort[3] = "Mar";
DTPMonthNamesShort[4] = "Apr";
DTPMonthNamesShort[5] = "May";
DTPMonthNamesShort[6] = "Jun";
DTPMonthNamesShort[7] = "Jul";
DTPMonthNamesShort[8] = "Aug";
DTPMonthNamesShort[9] = "Sep";
DTPMonthNamesShort[10] = "Oct";
DTPMonthNamesShort[11] = "Nov";
DTPMonthNamesShort[12] = "Dec";

var DTPDayNamesLong = new Array();
DTPDayNamesLong[0] = "Sunday";
DTPDayNamesLong[1] = "Monday";
DTPDayNamesLong[2] = "Tuesday";
DTPDayNamesLong[3] = "Wednesday";
DTPDayNamesLong[4] = "Thursday";
DTPDayNamesLong[5] = "Friday";
DTPDayNamesLong[6] = "Saturday";

var DTPDayNamesShort = new Array();
DTPDayNamesShort[0] = "Sun";
DTPDayNamesShort[1] = "Mon";
DTPDayNamesShort[2] = "Tue";
DTPDayNamesShort[3] = "Wed";
DTPDayNamesShort[4] = "Thu";
DTPDayNamesShort[5] = "Fri";
DTPDayNamesShort[6] = "Sat";

var DTPAMPMNames = new Array();
DTPAMPMNames["AM"] = "AM";
DTPAMPMNames["PM"] = "PM";

function DTPLookupMonthNameLong(MonthID)
{
  return DTPLookupName(MonthID, "IEDATEPICKER_MONTHS_LONG", DTPMonthNamesLong);
}

function DTPLookupMonthNameShort(MonthID)
{
  return DTPLookupName(MonthID, "IEDATEPICKER_MONTHS_SHORT", DTPMonthNamesShort);
}

function DTPLookupDayNameShort(DayID)
{

  return DTPLookupName(DayID, "IEDATEPICKER_DAYS_SHORT", DTPDayNamesShort);
}

function DTPLookupName(ID, SelectName, FallbackArray)
{
  var Name;

  var Select = formHelper.GetElementById(SelectName);
  if (Select && Select.options)
  {
    Name = DTPLookupOptionText(Select.options, ID);
    if (Name) return Name;
  }

  if (!isNaN(parseInt(ID, 10)))
    Name = FallbackArray[parseInt(ID, 10)];
  if (!Name)
    Name = FallbackArray[ID];

  return Name ? Name : ID;
}

function DTPLookupOptionText(Options, OptionValue)
{
  for (var i = 0; i < Options.length; i++)
    if (Options[i].value == OptionValue) return Options[i].text;
  return null;
}

function DTPDaysPerMonth(Month, Year)
{
  switch(parseInt(Month))
  {
    case 4:
    case 6:
    case 9:
    case 11:
      return 30;
    case 2:
      if (Year % 4 != 0 || Year % 100 == 0 && Year % 400 != 0)
        return 28;
      else
        return 29;
    default:
      return 31;
  }
}

function DTPCloseCalendar(Stem)
{
  if (DTP_LastCalendar && DTP_LastCalendar.Stem == Stem)
  {
    DTP_LastCalendar.Close();
    DTP_LastCalendar = null;
  }
}

function DTPSetDate(Stem, Year, Month, Day)
{
  if (DTP_LastCalendar && DTP_LastCalendar.Stem == Stem)
  {
    DTP_LastCalendar.SetDate(Year, Month, Day);
    DTP_LastCalendar.Close();
    DTP_LastCalendar = null;
  }
}

function DTPLastMonth(Stem)
{
   if (DTP_LastCalendar && DTP_LastCalendar.Stem == Stem)
  {
    DTP_LastCalendar.Last();
    }
}

function DTPNextMonth(Stem)
{
   if (DTP_LastCalendar && DTP_LastCalendar.Stem == Stem)
  {
    DTP_LastCalendar.Next();
    }
}

function DTPValidate(DTPickerField)
{
  var Stem = DTPGetStem(DTPickerField);

  var FieldYear = (formHelper.GetElementById(Stem + "_YEAR"));
  var FieldMonth = (formHelper.GetElementById(Stem + "_MONTH"));
  var FieldDay = (formHelper.GetElementById(Stem + "_DAY"));
  var FieldHours24 = (formHelper.GetElementById(Stem + "_HOURS24"));
  var FieldAMPM = (formHelper.GetElementById(Stem + "_AMPM"));
  var FieldHours12 = (formHelper.GetElementById(Stem + "_HOURS12"));
  var FieldMinutes = (formHelper.GetElementById(Stem + "_MINUTES"));
  var FieldSeconds = (formHelper.GetElementById(Stem + "_SECONDS"));

  var DefinedDate = new Object();
  DefinedDate.AllProvided = true;
  DefinedDate.AnyProvided = false;
  DefinedDate.ValidDate = true;

  DTPValidateCheckField(FieldYear, DefinedDate, DTPValidateYear);
  DTPValidateCheckField(FieldMonth, DefinedDate, DTPValidateMonth);
  DTPValidateCheckField(FieldDay, DefinedDate, DTPValidateDay);
  DTPValidateCheckField(FieldHours24, DefinedDate, DTPValidateHours24);
  DTPValidateCheckField(FieldAMPM, DefinedDate, DTPValidateAMPM);
  DTPValidateCheckField(FieldHours12, DefinedDate, DTPValidateHours12);
  DTPValidateCheckField(FieldMinutes, DefinedDate, DTPValidateMinutes);
  DTPValidateCheckField(FieldSeconds, DefinedDate, DTPValidateSeconds);

  return DefinedDate.ValidDate;
}

function DTPValidateCheckField(Field, DefinedDate, ValidateFunction)
{
  if (DefinedDate.ValidDate && Field && Field.type != "hidden")
  {
    var Value = DTPTrimString(Field.value);
    if (Value.length == 0)
      DefinedDate.AllProvided = false;
    else
    {
      ValidateFunction(DefinedDate, Value);
      DefinedDate.AnyProvided = true;
    }

    DefinedDate.ValidDate = DefinedDate.ValidDate && (DefinedDate.AllProvided || !DefinedDate.AnyProvided);
  }
}

function DTPTrimString(Value)
{
  if (Value)
  {
    Value = Value.toString();
    var lower = 0, upper = Value.length;
    for (;lower < upper;lower++)
      if (Value.charCodeAt(lower) > 32) break;
    for (;upper > lower;upper--)
      if (Value.charCodeAt(upper - 1) > 32) break;
    return Value.substring(lower, upper);
  }
  return "";
}

function DTPUpdateYear(elem)
{
	var Year = parseInt(elem.value, 10);
	if (!isNaN(Year))
	{
		if (Year >= ConstantTwoDigitYearLowerLimit && Year <= ConstantTwoDigitYearUpperLimit)
			Year += 2000;
		else if (Year <= ConstantNineteenHundredUpperLimit && Year > ConstantTwoDigitYearUpperLimit)
  			Year += 1900;
  		elem.value = Year;
	}
	else
	{
	    elem.value = "";	   
	}
}

function DTPValidateYear(DefinedDate, Year)
{
  Year = parseInt(Year, 10);
  if (isNaN(Year) || 
  		(Year < 1900 && Year < ConstantTwoDigitYearLowerLimit) ||
  		(Year < 1900 && Year > 99))
    DefinedDate.ValidDate = false;
  else
  {
    DefinedDate.Year = Year;
  }
}

function DTPValidateMonth(DefinedDate, Month)
{
  Month = parseInt(Month, 10);
  if (isNaN(Month) || Month < 1 || Month > 12)
    DefinedDate.ValidDate = false;
  else
    DefinedDate.Month = Month;
}

function DTPValidateDay(DefinedDate, Day)
{
  Day = parseInt(Day, 10);

  if (!DefinedDate.Year) DefinedDate.Year = (new Date()).getYear();
  if (!DefinedDate.Month) DefinedDate.Month = (new Date()).getMonth();

  if (isNaN(Day) || Day < 1 || Day > DTPMaxDaysInMonth(DefinedDate.Year, DefinedDate.Month))
    DefinedDate.ValidDate = false;
  else
    DefinedDate.Day = Day;
}

function DTPMaxDaysInMonth(Year, Month)
{
  switch(Month)
  {
    case 1: case 3: case 5: case 7: case 8: case 10: case 12:
      return 31;
    case 4: case 6: case 9: case 11:
      return 30;
    default:
      if (Year % 4 == 0 && (Year % 100 != 0 || Year % 400 == 0))
        return 29;
      else
        return 28;
  }
}

function DTPValidateHours24(DefinedDate, Hours24)
{
  Hours24 = parseInt(Hours24, 10);

  if (isNaN(Hours24) || Hours24 < 0 || Hours24 > 23)
    DefinedDate.ValidDate = false;
  else
  {
    DefinedDate.Hours = Hours24;
    DefinedDate.AMPM = "AM";
  }
}

function DTPValidateAMPM(DefinedDate, AMPM)
{
  if (DefinedDate.AMPM)
    return;
  else if (AMPM != "AM" && AMPM != "PM")
    DefinedDate.ValidDate = false;
  else
    DefinedDate.AMPM = AMPM;
}

function DTPValidateHours12(DefinedDate, Hours12)
{
  if (DefinedDate.Hours24)
    return;

  Hours12 = parseInt(Hours12, 10);
  if (isNaN(Hours12) || Hours12 < 1 || Hours12 > 12)
    DefinedDate.ValidDate = false;
  else if (DefinedDate.AMPM)
  {
    if (DefinedDate.AMPM == "AM")
    {
      if (Hours12 == 12)
        DefinedDate.Hours = 0;
      else
        DefinedDate.Hours = Hours12;
    }
    else
    {
      if (Hours12 == 12)
        DefinedDate.Hours = Hours12;
      else
        DefinedDate.Hours = Hours12 + 12;
    }
  }
  else if (Hours12 == 12)
  {
    DefinedDate.Hours = 0;
    DefinedDate.AMPM = "AM";
  }
  else
  {
    DefinedDate.Hours = Hours12;
    DefinedDate.AMPM = "AM";
  }
}

function DTPValidateMinutes(DefinedDate, Minutes)
{
  Minutes = parseInt(Minutes, 10);

  if (isNaN(Minutes) || Minutes < 0 || Minutes > 59)
    DefinedDate.ValidDate = false;
  else
    DefinedDate.Minutes = Minutes;
}

function DTPValidateSeconds(DefinedDate, Seconds)
{
  Seconds = parseInt(Seconds, 10);

  if (isNaN(Seconds) || Seconds < 0 || Seconds > 59)
    DefinedDate.ValidDate = false;
  else
    DefinedDate.Seconds = Seconds;
}
