function FnBuildCalender (CalenderDay, CalenderMonth, CalenderYear, TargetElement) {


	// Sæt dato objekt
	
	var objDate = new Date()
	
	objDate.setDate(1)
	objDate.setMonth(CalenderMonth - 1)
	objDate.setYear(CalenderYear)
	
	var intFirstWeekday = objDate.getDay()
	
	if (intFirstWeekday == 0) {
		intFirstWeekday = 7
	}
	
	var intDay = 0
	
	
	
	// Sæt array med antal dage i måneden
	
	var arrDaysInMonth = new Array(12);
	
	arrDaysInMonth[1] = 31;
	arrDaysInMonth[2] = (FnCheckLeapYear(CalenderYear)) ? 29 : 28;
	arrDaysInMonth[3] = 31;
	arrDaysInMonth[4] = 30;
	arrDaysInMonth[5] = 31;
	arrDaysInMonth[6] = 30;
	arrDaysInMonth[7] = 31;
	arrDaysInMonth[8] = 31;
	arrDaysInMonth[9] = 30;
	arrDaysInMonth[10] = 31;
	arrDaysInMonth[11] = 30;
	arrDaysInMonth[12] = 31;
	
	
	
	// Frem- og tilbage tinks
	
	var CalenderMonthNext = CalenderMonth + 1
	var CalenderMonthPrev = CalenderMonth - 1
	var CalenderYearNext = CalenderYear
	var CalenderYearPrev = CalenderYear
	
	if (CalenderMonthNext == 13) {
	
		CalenderMonthNext = 1
		CalenderYearNext = CalenderYear + 1
		
	}
	
	if (CalenderMonthPrev == 0) {
	
		CalenderMonthPrev = 12
		CalenderYearPrev = CalenderYear - 1
		
	}
	
	
	
	// Måneds- og ugedage
	
	strWeekdayNames = 'Mandag,Tirsdag,Onsdag,Torsdag,Fredag,Lørdag,Søndag'
	strMonthNames = 'Januar,Februar,Marts,April,Maj,Juni,Juli,August,September,Oktober,November,December'
	
	arrWeekdayNames = strWeekdayNames.split(",")
	arrMonthNames = strMonthNames.split(",")



	// Opbyg visuel kalender
	
	strCalender = '<div class="BoxOutLeft">'
	
	strCalender += '<table border="0" cellpadding="2" cellspacing="0" width="182" class="BoxIn">'
	strCalender += '<tr><td colspan="7">'
	
	strCalender += '<table border="0" cellpadding="0" cellspacing="0" width="178" class="BoxHeader" style="text-indent:0px;"><tr>'
	

	strCalender += '<td align="left" width="15">'
	
	strCalender += '&nbsp;<a href="javascript:FnBuildCalender (' + CalenderDay + ', ' + CalenderMonthPrev + ', ' + CalenderYearPrev + ', '
	strCalender += "'" + TargetElement + "')"
	strCalender += ';" class="CalendarArrow" title="Forrige måned">&laquo;</a>'
	
	strCalender += '</td>'


	strCalender += '<td align="center">' + arrMonthNames[CalenderMonth - 1] + '&nbsp;' + CalenderYear + '</td>'


	strCalender += '<td align="right" width="15">'
	
	strCalender += '<a href="javascript:FnBuildCalender (' + CalenderDay + ', ' + CalenderMonthNext + ', ' + CalenderYearNext + ', '
	strCalender += "'" + TargetElement + "')"
	strCalender += ';" class="CalendarArrow" title="Næste måned">&raquo;</a>&nbsp;'
	
	strCalender += '</td>'
	

	strCalender += '</tr></table>'
		
	strCalender += '</td></tr><tr>'
	
	
	for (i = 0 ; i < 7 ; i++) {
	
		strCalender += '<td align="center"><b>' + arrWeekdayNames[i].substring(0,1) + '</td>'
		
	}
	
	
	strCalender += '</tr><tr>'

	for (i = 1 ; i < (arrDaysInMonth[CalenderMonth] + intFirstWeekday) ; i++) {
	
		strCalender += '<td align="center">'
		
		if (i >= intFirstWeekday) {
		
			intDay += 1
		
			strCalender += '<a href="javascript:FnPasteDate(' + intDay + ', ' + CalenderMonth + ', ' + CalenderYear + ', '
			strCalender += "'" + TargetElement + "')"
			strCalender += ';" class="Box" title="' + intDay + '. ' + arrMonthNames[CalenderMonth - 1].toLowerCase() + ' ' + CalenderYear + '">' + intDay + '</a>'
			
		}
		
		strCalender += '</td>'
		
		if (i % 7 == 0) {
		
			strCalender += '</tr><tr>'
		
		}
	
	}

	
	strCalender += '</table>'
	
	strCalender += '</div>'
	

	document.getElementById("CalendarLayer").innerHTML = strCalender

}


function FnAddCalenderZeros (number) {

	return (number < 10) ? '0' + number : number;

}


function FnPasteDate (Day, Month, Year, TargetElement) {

	document.getElementById(TargetElement).value = FnAddCalenderZeros(Day) + "-" + FnAddCalenderZeros(Month) + "-" + Year
	
	FnShowHideCalender(null)
	
}


function FnCheckLeapYear (year) {

	if (year % 4 == 0) {

		return true;
	}
	
	return false;
}


function FnShowHideCalender (TargetElement, evt) {

	if (document.getElementById("CalendarLayer").style.display == "block") {
	

		document.getElementById("CalendarLayer").style.display = "none"
		

	} else {
	
	
		var objDate = new Date()
		
		
		FnBuildCalender(1, objDate.getMonth() + 1, objDate.getFullYear(), TargetElement);
		
		
		var e = (window.event) ? window.event : evt;
		

		document.getElementById("CalendarLayer").style.display = "block"

		document.getElementById("CalendarLayer").style.left = (e.clientX - (document.getElementById("CalendarLayer").offsetWidth + 15)) + "px"

		document.getElementById("CalendarLayer").style.top = (e.clientY - (document.getElementById("CalendarLayer").offsetHeight + 15)) + document.documentElement.scrollTop + "px"
		
	}

}