/* ***************** */ /* **** 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(); }