Som sagt så lovede jeg at poste hele koden i dag, og her er den så.
Koden hvor der skulle være problemer, er lagt i et indlæg under dette.
<% Function Calendar() %>
<script language="javascript" type="text/javascript">
Date.prototype.getWeek = function (dowOffset) {
/*getWeek() was developed by Nick Baicoianu at MeanFreePath:
http://www.meanfreepath.com */
dowOffset = typeof(dowOffset) == 'number' ? dowOffset : 0; //default dowOffset to zero
var newYear = new Date(this.getFullYear(),0,1);
var day = newYear.getDay() - dowOffset; //the day of week the year begins on
day = (day >= 0 ? day : day + 7);
var daynum = Math.floor((this.getTime() - newYear.getTime() - (this.getTimezoneOffset()-newYear.getTimezoneOffset())*60000)/86400000) + 1;
var weeknum;
//if the year starts before the middle of a week
if(day < 4)
{
weeknum = Math.floor((daynum+day-1)/7) + 1;
if(weeknum > 52)
{
nYear = new Date(this.getFullYear() + 1,0,1);
nday = nYear.getDay() - dowOffset;
nday = nday >= 0 ? nday : nday + 7;
/*if the next year starts before the middle of
the week, it is week #1 of that year*/
weeknum = nday < 4 ? 1 : 53;
}
}
else
{
weeknum = Math.floor((daynum+day-1)/7);
}
return weeknum;
};
function DaysInMonth(year, month)
{
return 32 - new Date(year, month, 32).getDate();
}
/*getFirstDayInWeek was developed by OleBole at Eksperten :
http://www.eksperten.dk */
function getFirstDayInWeek(nWeek, nYear)
{
var nDayCoeff = 24*60*60*1000;
nYear = typeof nYear=="number" ? nYear : new Date().getFullYear();
var oTestDate = new Date(nYear, 0, 1);
return new Date( (oTestDate.getTime()-((oTestDate.getDay()-1)*nDayCoeff))+((nWeek-1)*(7*nDayCoeff)) );
}
function checkForActiveDate(date)
{
for (i = 0; i < activeDays.length; i++)
{
if (activeDays[i].getTime() == date.getTime())
return true;
}
return false;
}
var today = new Date();
var curYear = today.getFullYear();
var curMonth = today.getMonth();
var months = new Array();
months[0] = "Januar";
months[1] = "Februar";
months[2] = "Marts";
months[3] = "April";
months[4] = "Maj";
months[5] = "Juni";
months[6] = "Juli";
months[7] = "August";
months[8] = "September";
months[9] = "Oktober";
months[10] = "November";
months[11] = "December";
var activeDays = new Array();
activeDays[0] = new Date(2008, 9, 12);
activeDays[1] = new Date(2009, 0, 1);
function ViewDays(year, month)
{
var datoNu = new Date(year, month, 1);
var datoDenne = new Date(datoNu.getFullYear(), datoNu.getMonth(), 1);
var datoForrige = new Date(datoNu.getFullYear(), datoNu.getMonth(), 0);
var datoNaeste = new Date(datoNu.getFullYear(), datoNu.getMonth(), (DaysInMonth(datoDenne.getFullYear(), datoDenne.getMonth())+1));
var output = "";
document.getElementById("previous").innerHTML = "<a style='cursor:pointer;' onclick='ViewDays(" + datoForrige.getFullYear() + ", " + datoForrige.getMonth() + ")'><<</a>";
document.getElementById("current").innerHTML = "<a style='cursor:pointer;' onclick='ViewMonths(" + datoDenne.getFullYear() + ")'>" + months[datoDenne.getMonth()] + " " + datoDenne.getFullYear() + "</a>";
document.getElementById("next").innerHTML = "<a style='cursor:pointer;' onclick='ViewDays(" + datoNaeste.getFullYear() + ", " + datoNaeste.getMonth() + ")'>>></a>";
output += "<table width='180' border='0' cellspacing='0' cellpadding='0'>";
output += "<tr align='right' valign='middle' height='17'>";
output += "<td width='22'> </td>"
output += "<td width='22' style='border-bottom:solid 1px black; padding-right:3px;'>M</td>";
output += "<td width='22' style='border-bottom:solid 1px black; padding-right:3px;'>T</td>";
output += "<td width='22' style='border-bottom:solid 1px black; padding-right:3px;'>O</td>";
output += "<td width='22' style='border-bottom:solid 1px black; padding-right:3px;'>T</td>";
output += "<td width='22' style='border-bottom:solid 1px black; padding-right:3px;'>F</td>";
output += "<td width='22' style='border-bottom:solid 1px black; padding-right:3px;'>L</td>";
output += "<td width='22' style='border-bottom:solid 1px black; padding-right:3px;'>S</td>";
var count = 0;
var dateArray = new Array();
var monthArray = new Array();
var yearArray = new Array();
var forrigeStartDag = 1;
var forrigeSlutDag = 1;
if(datoForrige.getWeek(1) == datoDenne.getWeek(1))
{
forrigeStartDag = getFirstDayInWeek(datoDenne.getWeek(1), datoDenne.getFullYear()).getDate();
forrigeSlutDag = DaysInMonth(datoForrige.getFullYear(), datoForrige.getMonth());
}
else
{
forrigeStartDag = getFirstDayInWeek(datoForrige.getWeek(1), datoForrige.getFullYear()).getDate();
forrigeSlutDag = DaysInMonth(datoForrige.getFullYear(), datoForrige.getMonth());
}
var denneStartDag = 1;
var denneSlutDag = DaysInMonth(datoDenne.getFullYear(), datoDenne.getMonth());
for (i = forrigeStartDag; i <= forrigeSlutDag; i++)
{
dateArray[count] = i;
monthArray[count] = datoForrige.getMonth();
yearArray[count] = datoForrige.getFullYear();
count++;
}
for (i = denneStartDag; i <= denneSlutDag; i++)
{
dateArray[count] = i;
monthArray[count] = datoDenne.getMonth();
yearArray[count] = datoDenne.getFullYear();
count++;
}
for (i = 1; count < 42; i++)
{
dateArray[count] = i;
monthArray[count] = datoNaeste.getMonth();
yearArray[count] = datoNaeste.getFullYear();
count++;
}
count = 7;
previousMonth = false;
nextMonth = false;
if (dateArray[0] != 1)
previousMonth = true;
for (i = 0; i < dateArray.length; i++)
{
if (dateArray[i] == 1)
previousMonth = false;
if (dateArray[i] == 1 && i > 7)
nextMonth = true;
var dato = new Date(yearArray[i], monthArray[i], dateArray[i]);
var isActiveDate = checkForActiveDate(dato);
var isToday = false;
if (today.getFullYear() == dato.getFullYear() && today.getMonth() == dato.getMonth() && today.getDate() == dato.getDate())
isToday = true;
if (count == 7)
{
var datoUge = new Date(yearArray[i], monthArray[i], dateArray[i]);
var udUge = "" + datoUge.getWeek(1);
if (udUge.length == 1)
udUge = " " + udUge;
output +="</tr><tr align='right' valign='middle' height='17'>";
output += "<td style='border-right:solid 1px black; cursor:default;'>" + udUge + "</td>";
if (previousMonth || nextMonth)
if (isActiveDate)
if (isToday)
output += "<td style='cursor:default; border:solid 1px #AA0000; padding-right:2px;'><a style='cursor:pointer; font-weight:bold;' onclick='java script:alert(" + dateArray[i] + ")'>" + dateArray[i] + "</a></td>";
else
output += "<td style='cursor:default; border:solid 1px #FFFFFF; padding-right:2px;'><a style='cursor:pointer; font-weight:bold;' onclick='java script:alert(" + dateArray[i] + ")'>" + dateArray[i] + "</a></td>";
else
if (isToday)
output += "<td style='color:#BABABA; cursor:default; border:solid 1px #AA0000; padding-right:2px;'>" + dateArray[i] + "</td>";
else
output += "<td style='color:#BABABA; cursor:default; border:solid 1px #FFFFFF; padding-right:2px;'>" + dateArray[i] + "</td>";
else
if (isActiveDate)
if (isToday)
output += "<td style='cursor:default; border:solid 1px #AA0000; padding-right:2px;'><a style='cursor:pointer; font-weight:bold;' onclick='java script:alert(" + dateArray[i] + ")'>" + dateArray[i] + "</a></td>";
else
output += "<td style='cursor:default; border:solid 1px #FFFFFF; padding-right:2px;'><a style='cursor:pointer; font-weight:bold;' onclick='java script:alert(" + dateArray[i] + ")'>" + dateArray[i] + "</a></td>";
else
if (isToday)
output += "<td style='cursor:default; border:solid 1px #AA0000; padding-right:2px;'>" + dateArray[i] + "</td>";
else
output += "<td style='cursor:default; border:solid 1px #FFFFFF; padding-right:2px;'>" + dateArray[i] + "</td>";
count = 0;
}
else
{
if (previousMonth || nextMonth)
if (isActiveDate)
if (isToday)
output += "<td style='cursor:default; border:solid 1px #AA0000; padding-right:2px;'><a style='cursor:pointer; font-weight:bold;' onclick='java script:alert(" + dateArray[i] + ")'>" + dateArray[i] + "</a></td>";
else
output += "<td style='cursor:default; border:solid 1px #FFFFFF; padding-right:2px;'><a style='cursor:pointer; font-weight:bold;' onclick='java script:alert(" + dateArray[i] + ")'>" + dateArray[i] + "</a></td>";
else
if (isToday)
output += "<td style='color:#BABABA; cursor:default; border:solid 1px #AA0000; padding-right:2px;'>" + dateArray[i] + "</td>";
else
output += "<td style='color:#BABABA; cursor:default; border:solid 1px #FFFFFF; padding-right:2px;'>" + dateArray[i] + "</td>";
else
if (isActiveDate)
if (isToday)
output += "<td style='cursor:default; border:solid 1px #AA0000; padding-right:2px;'><a style='cursor:pointer; font-weight:bold;' onclick='java script:alert(" + dateArray[i] + ")'>" + dateArray[i] + "</a></td>";
else
output += "<td style='cursor:default; border:solid 1px #FFFFFF; padding-right:2px;'><a style='cursor:pointer; font-weight:bold;' onclick='java script:alert(" + dateArray[i] + ")'>" + dateArray[i] + "</a></td>";
else
if (isToday)
output += "<td style='cursor:default; border:solid 1px #AA0000; padding-right:2px;'>" + dateArray[i] + "</td>";
else
output += "<td style='cursor:default; border:solid 1px #FFFFFF; padding-right:2px;'>" + dateArray[i] + "</td>";
}
count++
}
output +="</tr></table>";
document.getElementById("daysInMonth").innerHTML = output;
document.getElementById("daysInMonth").style.display = "block";
document.getElementById("monthsInYear").style.display = "none";
document.getElementById("yearsInDecade").style.display = "none";
}
function ViewMonths(year)
{
curYear = eval(year);
document.getElementById("previous").innerHTML = "<a onclick='ViewMonths(" + eval(eval(year)-1) + ")' style='cursor:pointer;'><<</a>";
document.getElementById("current").innerHTML = "<a onclick='ViewDecade(" + year + ")' style='cursor:pointer;'>" + year + "</a>";
document.getElementById("next").innerHTML = "<a onclick='ViewMonths(" + eval(eval(year)+1) + ")' style='cursor:pointer;'>>></a>";
output = "<table width='180' cellpadding='0' cellspacing='0' border='0'>";
output += "<tr height='30'>";
output += "<td align='right' valign='middle'><a style='cursor:pointer;' onclick='ViewDays(" + year + ", " + 0 + ")'>Jan</a></td>";
output += "<td> </td>"
output += "<td align='center' valign='middle'><a style='cursor:pointer;' onclick='ViewDays(" + year + ", " + 1 + ")'>Feb</a></td>";
output += "<td> </td>"
output += "<td align='left' valign='middle'><a style='cursor:pointer;' onclick='ViewDays(" + year + ", " + 2 + ")'>Mar</a></td>";
output += "</tr>";
output += "<tr height='30'>";
output += "<td align='right' valign='middle'><a style='cursor:pointer;' onclick='ViewDays(" + year + ", " + 3 + ")'>Apr</a></td>";
output += "<td> </td>"
output += "<td align='center' valign='middle'><a style='cursor:pointer;' onclick='ViewDays(" + year + ", " + 4 + ")'>Maj</a></td>";
output += "<td> </td>"
output += "<td align='left' valign='middle'><a style='cursor:pointer;' onclick='ViewDays(" + year + ", " + 5 + ")'>Jun</a></td>";
output += "</tr>";
output += "<tr height='30'>";
output += "<td align='right' valign='middle'><a style='cursor:pointer;' onclick='ViewDays(" + year + ", " + 6 + ")'>Jul</a></td>";
output += "<td> </td>"
output += "<td align='center' valign='middle'><a style='cursor:pointer;' onclick='ViewDays(" + year + ", " + 7 + ")'>Aug</a></td>";
output += "<td> </td>"
output += "<td align='left' valign='middle'><a style='cursor:pointer;' onclick='ViewDays(" + year + ", " + 8 + ")'>Sep</a></td>";
output += "</tr>";
output += "<tr height='29'>";
output += "<td align='right' valign='middle'><a style='cursor:pointer;' onclick='ViewDays(" + year + ", " + 9 + ")'>Okt</a></td>";
output += "<td> </td>"
output += "<td align='center' valign='middle'><a style='cursor:pointer;' onclick='ViewDays(" + year + ", " + 10 + ")'>Nov</a></td>";
output += "<td> </td>"
output += "<td align='left' valign='middle'><a style='cursor:pointer;' onclick='ViewDays(" + year + ", " + 11 + ")'>Dec</a></td>";
output += "</tr>";
output += "</table>";
document.getElementById("monthsInYear").innerHTML = output;
document.getElementById("monthsInYear").style.display = "block";
document.getElementById("yearsInDecade").style.display = "none";
document.getElementById("daysInMonth").style.display = "none";
}
function ViewDecade(year)
{
var temp = new String();
temp = "" + year;
var fromYear = temp.substring(0,3) + "1";
var toYear = eval(fromYear)+9;
document.getElementById("previous").innerHTML = "<a onclick='ViewDecade(" + eval(fromYear-10) + ")' style='text-decoration:none; cursor:pointer;'><<</a>";
document.getElementById("current").innerHTML = "<span id='decade'>" + fromYear + " - " + toYear + "</span>";
document.getElementById("next").innerHTML = "<a onclick='ViewDecade(" + toYear + ")' style='text-decoration:none; cursor:pointer;'>>></a>";
var output = "<table width='180' cellpadding='0' cellspacing='0' border='0'>";
output +="<tr align='center' height='24'>";
output +="<td> </td>"
output +="<td width='40'><a onclick='ViewMonths(" + fromYear + ")' style='cursor:pointer;'>" + fromYear + "</a></td>";
output +="<td> </td>"
output +="<td width='40'><a onclick='ViewMonths(" + eval(eval(fromYear)+1) + ")' style='cursor:pointer;'>" + eval(eval(fromYear)+1) + "</a></td>";
output +="<td> </td>"
output +="</tr>";
output +="<tr align='center' height='24'>";
output +="<td> </td>"
output +="<td width='40'><a onclick='ViewMonths(" + eval(eval(fromYear)+2) + ")' style='cursor:pointer;'>" + eval(eval(fromYear)+2) + "</a></td>";
output +="<td> </td>"
output +="<td width='40'><a onclick='ViewMonths(" + eval(eval(fromYear)+3) + ")' style='cursor:pointer;'>" + eval(eval(fromYear)+3) + "</a></td>";
output +="<td> </td>"
output +="</tr>";
output +="<tr align='center' height='24'>";
output +="<td> </td>"
output +="<td width='40'><a onclick='ViewMonths(" + eval(eval(fromYear)+4) + ")' style='cursor:pointer;'>" + eval(eval(fromYear)+4) + "</a></td>";
output +="<td> </td>"
output +="<td width='40'><a onclick='ViewMonths(" + eval(eval(fromYear)+5) + ")' style='cursor:pointer;'>" + eval(eval(fromYear)+5) + "</a></td>";
output +="<td> </td>"
output +="</tr>";
output +="<tr align='center' height='24'>";
output +="<td> </td>"
output +="<td width='40'><a onclick='ViewMonths(" + eval(eval(fromYear)+6) + ")' style='cursor:pointer;'>" + eval(eval(fromYear)+6) + "</a></td>";
output +="<td> </td>"
output +="<td width='40'><a onclick='ViewMonths(" + eval(eval(fromYear)+7) + ")' style='cursor:pointer;'>" + eval(eval(fromYear)+7) + "</a></td>";
output +="<td> </td>"
output +="</tr>";
output +="<tr align='center' height='23'>";
output +="<td> </td>"
output +="<td width='40'><a onclick='ViewMonths(" + eval(eval(fromYear)+8) + ")' style='cursor:pointer;'>" + eval(eval(fromYear)+8) + "</a></td>";
output +="<td> </td>"
output +="<td width='40'><a onclick='ViewMonths(" + toYear + ")' style='cursor:pointer;'>" + toYear + "</a></td>";
output +="<td> </td>"
output +="</tr>";
output +="</table>";
document.getElementById("yearsInDecade").innerHTML = output;
document.getElementById("yearsInDecade").style.display = "block";
document.getElementById("monthsInYear").style.display = "none";
document.getElementById("daysInMonth").style.display = "none";
}
</script>
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="font-family:Verdana;">
<tr>
<td>
</td>
</tr>
<tr>
<td>
<div id="calendarMenu" style="display:block;">
<table width="180" border="0" cellspacing="0" cellpadding="0">
<tr>
<td id="previous" width="22" align="right"></td>
<td id="current" align="center"></td>
<td id="next" width="22" align="right"></td>
</tr>
</table>
</div>
<div id="yearsInDecade" style="display:none;">
</div>
<div id="monthsInYear" style="display:none;">
</div>
<div id="daysInMonth" style="display:block;">
</div>
<div style="display:block; margin-bottom:2px; margin-top:3px; font-weight:bold;" id="today">
</div>
</td>
</tr>
</table>
<script language="javascript" type="text/javascript">
ViewDays(curYear, curMonth);
document.getElementById("today").innerHTML = "<a style='cursor:pointer;' onclick='ViewDays(" + curYear + ", " + curMonth + ")'>I dag: " + today.getDate() + "-" + curMonth + "-" + curYear + "</a><a style='color:#FFFFFF; text-decoration:none; border:solid 1px #AA0000; padding-left:17px; margin-left:1px;'> </a>";
</script>
<% End Function %>