/* ***************** */
/* **** calendar *** */
/* ***************** */
Months = new Array(12);
Months[0] = "Januar";
Months[1] = "Februar";
Months[2] = "März";
Months[3] = "April";
Months[4] = "Mai";
Months[5] = "Juni";
Months[6] = "Juli";
Months[7] = "August";
Months[8] = "September";
Months[9] = "Oktober";
Months[10] = "November";
Months[11] = "Dezember";
function PadSpaces(TheString)
{
var Spaces = " ";
len = Math.round((9 - TheString.length)/2);
return Spaces.substring(0,len) + TheString;
}
function NumLeapYears(StartYear, EndYear)
{
var LeapYears, i;
if (EndYear >= StartYear){
for(LeapYears = 0; StartYear <= EndYear; StartYear++)
if (IsLeapYear(StartYear)) LeapYears++;
}else{
for(LeapYears = 0; EndYear <= StartYear; EndYear++)
if (IsLeapYear(EndYear)) LeapYears++;
}
return LeapYears;
}
function IsLeapYear(Year)
{
if(Math.round(Year/4) == Year/4){
if(Math.round(Year/100) == Year/100){
if(Math.round(Year/400) == Year/400)
return true;
else return false;
}else return true;
}
return false;
}
function Trim(TheString)
{
var len;
len = TheString.length;
while(TheString.substring(0,1) == " "){ //trim left
TheString = TheString.substring(1, len);
len = TheString.length;
}
while(TheString.substring(len-1, len) == " "){ //trim right
TheString = TheString.substring(0, len-1);
len = TheString.length;
}
return TheString;
}
function DetermineMonthIdx()
{
var i, month, month_s, len;
month = Trim(document.getElementById('hiddenMonth').value);
len = month.length;
for( i = 0; i <12; i++){
month_s = Months[i].substring(0,len);
if (month_s.toUpperCase() == month.toUpperCase())
return (i);
}
return -1;
}
function FindNewYearStartingDay(Year)
{
var LeapYears, Years, Day;
LeapYears = NumLeapYears(1995, Year);
if (Year >=1995)
Years = (Year -1995)+LeapYears;
else Years = (Year -1995)-LeapYears;
if (Year >=1995)
Day = Math.round(((Years/7 - Math.floor(Years/7))*7)+.1);
else Day = Math.round(((Years/7 - Math.ceil(Years/7))*7)-.1);
if (Year >=1995){
if(IsLeapYear(Year)) Day--;
}else Day += 7;
if(Day < 0) Day = 6;
if(Day > 6) Day = 0;
return Day;
}
function FindNumDaysInMonth(Year, Month)
{
if(Month == 1){
if(IsLeapYear(Year)) return 29;
else return 28;
}else{
if(Month >6) Month++;
if(Month/2 == Math.round(Month/2)) return 31;
}
return 30;
}
function FindMonthStartDay(NewYearDay, Year, Month)
{
var MonthStartDay;
AddArray = new Array(12);
AddArray[0]=0;AddArray[1]=3;AddArray[2]=3;AddArray[3]=6;
AddArray[4]=1;AddArray[5]=4;AddArray[6]=6;AddArray[7]=2;
AddArray[8]=5;AddArray[9]=0;AddArray[10]=3;AddArray[11]=5;
MonthStartDay = NewYearDay + AddArray[Month];
if(IsLeapYear(Year) && (Month ) > 1) MonthStartDay ++;
if (MonthStartDay > 6) MonthStartDay -= 7;
return MonthStartDay;
}
function FillCalendar()
{
var Year, Month, Midx, NewYearDay, MonthStartDay;
var NumDaysInMonth, i, t, x;
Year = parseFloat(document.getElementById('hiddenYear' ).value);
Month = document.getElementById('hiddenMonth').value;
Midx = DetermineMonthIdx();
if (Midx == -1){
alert ("Can't recognize that month");
return;
}
NewYearDay = FindNewYearStartingDay(Year);
MonthStartDay = FindMonthStartDay(NewYearDay, Year, Midx);
NumDaysInMonth = FindNumDaysInMonth(Year, Midx);
var allMyPrettyDivs = document.getElementsByTagName('div');
var date=new Date();
var dd=date.getDate();
var mm=date.getMonth();
var yy=date.getYear();
var weekday=date.getDay();
var dayLast=date.getDate();
var monthLast=date.getMonth();
var yearLast=date.getYear();
if(date.getDate() +21 > NumDaysInMonth){
dayLast = (dd + 21) - FindNumDaysInMonth(Year, Midx -1);
monthLast = mm +1
}
else{
dayLast = date.getDate() +21;
}
if (yy < 999){
yy += 1900;
yearLast+= 1900;
}
for(i = 0; i < allMyPrettyDivs.length; i++){
if(i==0){
x = 0;
}
if(allMyPrettyDivs[i].className == "row11" || allMyPrettyDivs[i].className == "row11before"|| allMyPrettyDivs[i].className == "withoutDay" || allMyPrettyDivs[i].className == "today"){
t = x + 1 - MonthStartDay;
if ( t >= 1 && t <= NumDaysInMonth)
{
allMyPrettyDivs[i].innerHTML = t;
if(dd == t && mm == Midx && yy == Year){
allMyPrettyDivs[i].parentNode.className = "today";
allMyPrettyDivs[i].onclick = function (e) {
var monthNumber = Midx + 1;
var dayDate = this.innerHTML;
var monthDate = Midx + 1;
if(this.innerHTML.length==1)dayDate ='0' + dayDate;
if(monthDate < 10)monthDate ='0' + monthDate;
/* month + day + year */
document.getElementById('itdDateDayMonthYear').value = dayDate + '/' + monthDate +'/' + Year;
document.getElementById('calendar-border').style.display='none';
};
}
else{
allMyPrettyDivs[i].className = "row11";
allMyPrettyDivs[i].parentNode.className = "";
if(allMyPrettyDivs[i].id=='calRow_35' || allMyPrettyDivs[i].id=='calRow_28'){
allMyPrettyDivs[i].parentNode.parentNode.style.display='';
}
allMyPrettyDivs[i].onclick = function (e) {
var monthNumber = Midx + 1;
var dayDate = this.innerHTML;
var monthDate = Midx + 1;
if(this.innerHTML.length==1)dayDate ='0' + dayDate;
if(monthDate < 10)monthDate ='0' + monthDate;
document.getElementById('itdDateDayMonthYear').value = dayDate + '/' + monthDate +'/' + Year;
document.getElementById('calendar-border').style.display='none';
};
}
}
else {
if(allMyPrettyDivs[i].id=='calRow_35' || allMyPrettyDivs[i].id=='calRow_28'){
allMyPrettyDivs[i].parentNode.parentNode.style.display='none';
}
allMyPrettyDivs[i].innerHTML= " ";
allMyPrettyDivs[i].className = "withoutDay";
}
x = x+1;
}
}
}
function IncDecYear(step)
{
val =0;
if(DetermineMonthIdx()=='11' && step=='next'){
val = 1;
}
if(DetermineMonthIdx()=='0' && step=='prev'){
val = -1;
}
var valNum = parseInt(val);
var valNum2 = parseInt(document.getElementById('hiddenYear').value)
document.getElementById('hiddenYear').value = valNum2 + valNum;
document.getElementById('year').innerHTML = valNum2 + valNum;
FillCalendar()
if(step=='prev'){
IncDecMonth(-1);
}
else{
IncDecMonth(1);
}
}
function IncDecMonth(val)
{
var valNum = parseInt(val);
var Midx = DetermineMonthIdx();
var MonthSave = DetermineMonthIdx();
Midx += valNum;
if(Midx > 11) Midx = 0;
if(Midx < 0) Midx = 11;
document.getElementById('hiddenMonth').value = PadSpaces(Months[Midx]);
document.getElementById('month').innerHTML = PadSpaces(Months[Midx]);
FillCalendar();
}