var DateSeparator = "/";
var CenturyNumber = 30;
var Calendars = [];
var RegExNumbers = /^\-?\d+$/;
function BuildCalendar(TheTarget)
{
this.DateGenerator = This_DateGenerator;
this.FindDate = This_FindDate;
this.FindTime = This_FindTime;
this.FindStamp = This_FindStamp;
this.popup = This_Popup;
if (!TheTarget)
{
return DisplayError("Fehler!\t\t\n\n\tKein Formfeld angegeben.\t\t");
}
if (TheTarget.value == null)
{
return DisplayError("\tFehler!\t\t\n\n\tUngueltiger Parameter Wert.\t\t");
}
this.target = TheTarget;
this.id = Calendars.length;
Calendars[this.id] = this;
}
function This_Popup (strDate)
{
this.CurrentDate = this.FindStamp(strDate ? strDate : this.target.value);
if (!this.CurrentDate)
{
return;
}
var CalendarWindow = window.open('calendar_de.htm?datetime=' + this.CurrentDate.valueOf()+ '&id=' + this.id, 'Calendar', 'width=200,height=170,status=no,resizable=no,top=200,left=200,dependent=yes,alwaysRaised=yes' );
CalendarWindow.opener = window;
CalendarWindow.focus();
}
function This_DateGenerator (CurrentDates)
{
return ((CurrentDates.getDate() < 10 ? "0" : "") + CurrentDates.getDate() + DateSeparator + (CurrentDates.getMonth() < 9 ? "0" : "") + (CurrentDates.getMonth() + 1) + DateSeparator + CurrentDates.getFullYear() );
}
function This_FindStamp (strDate)
{
if (!strDate)
{
return (new Date());
}
if (RegExNumbers.exec(strDate))
{
return new Date(strDate);
}
return this.FindTime(this.FindDate(strDate));
}
function This_FindDate (TheDate)
{
var DateArray = TheDate.split(DateSeparator);
if (DateArray.length != 3)
{
return alert ("\tUngueltiges Datum: " + TheDate + ".\t\t\n\n\tErlaubtes Format ist Tag" + DateSeparator + "Monat" + DateSeparator + "Jahr.\t\t");
}
if (!DateArray[0])
{
return alert ("\tUngueltiges Datum: " + TheDate + ".\t\t\n\n\tFehlender Tag Wert.\t\t");
}
if (!RegExNumbers.exec(DateArray[0]))
{
return alert ("\tUngueltiger Tag Wert: " + DateArray[0] + ".\t\t\n\n\tErlaubt sind nur Nummern.\t\t");
}
if (!DateArray[0])
{
return alert ("\tUngueltiges Datum: " + TheDate + ".\t\t\n\n\tFehlender Monat Wert.\t\t");
}
if (!RegExNumbers.exec(DateArray[1]))
{
return alert ("\tUngueltiger Monat Wert: " + DateArray[1] + ".\t\t\n\n\tErlaubt sind nur Nummern.\t\t");
}
if (!DateArray[2])
{
return alert ("\tUngueltiges Datum: " + TheDate + ".\t\t\n\n\tFehlender Jahres Wert.\t\t");
}
if (!RegExNumbers.exec(DateArray[2]))
{
return alert ("\tUngueltiger Jahres Wert: " + DateArray[2] + ".\t\t\n\n\tErlaubt sind nur Nummern.\t\t");
}
 var ThisDate = new Date();
ThisDate.setDate(1);
 if (DateArray[1] < 1 || DateArray[1] > 12)
{
return alert ("\tUngueltiger Monat Wert: " + DateArray[1] + ".\t\t\n\n\tErlaubt ist 01 - 12.\t\t");
}
ThisDate.setMonth(DateArray[1] - 1);
 if (DateArray[2] < 100)
{
DateArray[2] = Number(DateArray[2]) + (DateArray[2] < CenturyNumber ? 2000 : 1900);
}
ThisDate.setFullYear(DateArray[2]);
 var dt_numdays = new Date(DateArray[2], DateArray[0], 0);
ThisDate.setDate(DateArray[0]);
if (ThisDate.getMonth() != (DateArray[1] - 1))
{
return alert ("\tUngueltiger Tag Wert: " + DateArray[0] + ".\t\t\n\n\tErlaubt ist 01 - " + dt_numdays.getDate() + ".\t\t");
}
return (ThisDate);
}
function This_FindTime (ThisDate)
{
if (!ThisDate)
{
return null;
}
return ThisDate;
}
function DisplayError (str_message)
{
alert (str_message);
return null;
}
