	var contentDays = new Array();

	function CreateCalendar(oCalendar) {
		var month_num = oCalendar.curDate.getMonth(); // Current month number (0-11)
		var month_name = new Array ("Januar ",
																"Februar ",
																"Marts ",
																"April ",
																"Maj ",
																"Juni ",
																"Juli ",
																"August ",
																"September ",
																"Oktober ",
																"November ",
																"December ");
		
		var right_year=oCalendar.curDate.getYear(); 	// Get current year
		var theday = 0; 															// last day of the current month
		var endofmonth = 0;
		var numOfWeeks = 0;

		if (right_year < 2000) right_year = right_year + 1900; 
		if (month_num == 0 || month_num == 2 || month_num == 4 || month_num == 6 || month_num == 7 || month_num == 9 || month_num == 11)	{ 
			endofmonth = 31;
		}
		if (month_num == 3 || month_num == 5 || month_num == 8 || month_num == 10) { 
			endofmonth = 30;
		}
		
		if (month_num == 1)	{ 
			// Calc leapyear
			right_year_divided = right_year / 4;
			right_year_divided_string = new String(right_year_divided);
			
			var is_decimal = right_year_divided_string.indexOf('.');
			
			is_decimal != -1 ? endofmonth = 28 : endofmonth = 29; 
			
			right_year_string = new String(right_year);
			
			var the_century = new String(right_year_string.charAt(2));
			
			the_century = the_century + new String(right_year_string.charAt(3));
			
			if (the_century == "00") { 
				right_year_divided=right_year / 400;
				right_year_divided_string = new String(right_year_divided);
				var is_decimal = right_year_divided_string.indexOf('.');
				
				is_decimal != -1 ? endofmonth = 28 : endofmonth = 29;
			}
		}
		
		//alert(new Date("01/" + month_num + "/" + right_year);
		//numOfWeeks
		
		// Start building calendar
		var oCalDiv = document.createElement("DIV");
		
		oCalendar.Cap.Month.innerHTML = month_name[month_num] + oCalendar.curDate.getFullYear();
		
		first_day = new Date(right_year,month_num,0); // Get day of week by 1st of current month
		
		var oCalDays = document.createElement("DIV");
		var oCalDay = null;
		var clsEnd = "";
		var strDay = "";
		var strMonth = "";

		for (weeks = 0; weeks < 6; weeks++)	{ 
			for (week = 0; week < 7; week++) {
				oCalDay = document.createElement("DIV");
				weeks % 2 == 0 ? clsEnd = "Even" : clsEnd = "Odd";
				oCalDay.className = "EmptyDay" + clsEnd;
				
				if((weeks == 0 && week >= first_day.getDay()) || weeks > 0) theday++;

				if ((theday <= endofmonth && weeks > 0) || (weeks == 0 && week >= first_day.getDay())) {
					oCalDay.dayDate = new Date(oCalendar.curDate.getFullYear(), oCalendar.curDate.getMonth(), theday);
					theday < 10 ? strDay = "0" + theday : strDay = theday;
					(oCalendar.curDate.getMonth() + 1) < 10 ? strMonth = "0" + (oCalendar.curDate.getMonth() + 1) : strMonth = (oCalendar.curDate.getMonth() + 1);
					oCalDay.strDate = strDay + "-" + strMonth + "-" + oCalendar.curDate.getFullYear();
					//alert(oCalendar.today.getFullYear())
					(oCalendar.curDate.getFullYear() == oCalendar.today.getFullYear()) && (oCalendar.curDate.getMonth() == oCalendar.today.getMonth()) && (theday == oCalendar.today.getDate()) ? oCalDay.className = "SelectedDay" + clsEnd : oCalDay.className = "NormalDay" + clsEnd;
					oCalDay.innerHTML = theday;
				}
				else {
					if (theday <= endofmonth && weeks > 0) theday--;
				}
				
				if(contentDays.length > 0) {
					for(var cntIdx = 0; cntIdx < contentDays.length; cntIdx++) {
						if(oCalDay.strDate == contentDays[cntIdx]) {
							if(contentDays[cntIdx+1] == "0") {
								oCalDay.className = "ContentDay";
							}
							else {
								oCalDay.className = "ContentDay_" + contentDays[cntIdx+1];
								oCalDay.innerHTML = "";
							}
							oCalDay.icon = parseInt(contentDays[cntIdx+1]);
							break;
						}
						cntIdx++;
					}
				}
				
				if(week == 6) {
					oCalDay.style.borderRight = "1px solid #FFFFFF";
				}
				
				if(document.all) {
					oCalDay.style.width = 19;
					oCalDay.style.height = 20;
				}
				else {
					oCalDay.style.width = 18;
					oCalDay.style.height = 17;
				}
				
				if(oCalDay.className.indexOf("EmptyDay") == -1) {
					oCalDay.oCalendar = oCalendar;
					
					oCalDay.onmouseover = DayFocus;
					oCalDay.onmouseout = DayLostFocus;
					oCalDay.onclick = DaySelected;
				}
				
				if(oCalendar.strDate != "") {
					if(oCalDay.strDate == oCalendar.strDate) {
						oCalDay.orgCls = oCalendar.selDate.orgCls;
						if(oCalendar.DayFocusClass != "") {
							oCalDay.className = oCalendar.DayFocusClass;
						}
						oCalDay.prevCls = oCalendar.selDate.prevCls;
						oCalendar.selDate = oCalDay;
					}
				}
				
				oCalDays.appendChild(oCalDay);
			}
			
			if(weeks == 4 && theday >= endofmonth) weeks++;
			
			/*
			if(weeks == 4) {
				
				var oCalBack = document.getElementById("CalenderBackground");
				if(theday >= endofmonth) {
					oCalBack.style.top = 136;
					weeks++;
				}
				else {
					oCalBack.style.top = 153;
				}	
			}
			else {
			}
			*/
		}
		
		return oCalDays;
	}
	
	function DayFocus() {
		this.prevCls = this.className;
		if(this.oCalendar.DayFocusClass != "") {
			this.className = this.oCalendar.DayFocusClass;
		}
	}
	
	function DayLostFocus() {
		this.className = this.prevCls;
	}
	
	function DaySelected() {
		if(this.className.indexOf("ContentDay") != -1 || this.className.indexOf("DayFocus") != -1) {
			if(this.oCalendar.selDate) {
				this.oCalendar.selDate.className = this.oCalendar.selDate.orgCls;
				this.oCalendar.selDate.prevCls = this.oCalendar.selDate.orgCls;
			}
			this.orgCls = this.prevCls;
			this.icon == 0 ? this.className = "DayFocus" : this.className = "DayFocus_" + this.icon;
			this.prevCls = this.className;
			
			this.oCalendar.selDate = this;
			this.oCalendar.strDate = this.strDate;
			
			if(this.oCalendar.clickFunc) this.oCalendar.clickFunc(this);
		}
	}
		
	function NextMonth() {
		var curMonth = this.oCalendar.curDate.getMonth() + 1;
		var curYear = this.oCalendar.curDate.getFullYear();
		
		if(curMonth == 12) {
			curMonth = 1;
			curYear++;
		}
		else {
			curMonth++; 
		}
		
		this.oCalendar.curMonth = curMonth;
		this.oCalendar.curYear = curYear;
		
		if(this.oCalendar.monthChangedFunc) {
			this.oCalendar.monthChangedFunc(curMonth, curYear);
		}
		else {
			this.oCalendar.Update();
		}
	}
	
	function UpdateCalendar() {
		SetCalendar(this ,"1-" + this.curMonth + "-" + this.curYear);
	}
	
	function PrevMonth() {
		var curMonth = this.oCalendar.curDate.getMonth();
		var curYear = this.oCalendar.curDate.getFullYear();
		
		if(curMonth < 1) {
			curMonth = 12;
			curYear--;
		}

		this.oCalendar.curMonth = curMonth;
		this.oCalendar.curYear = curYear;
		
		if(this.oCalendar.monthChangedFunc) {
			this.oCalendar.monthChangedFunc(curMonth, curYear);
		}
		else {
			this.oCalendar.Update();
		}
	}
	
	function CalendarCap(oCalendar) {
		var oCap = document.createElement("DIV");
		var oMonth = document.createElement("DIV");
		var oPrev = document.createElement("DIV");
		var oNext = document.createElement("DIV");
		
		oCap.id = "CalCaption";
		
		oMonth.id = "Month";
		oMonth.innerHTML = oCalendar.curDate.getYear(); //"DECEMBER 2006";
		
		oPrev.className = "MonthNaviPrev";
		oPrev.onclick = PrevMonth;
		oPrev.oCalendar = oCalendar;
		
		oNext.className = "MonthNaviNext";
		oNext.onclick = NextMonth;
		oNext.oCalendar = oCalendar;
		
		oCap.appendChild(oPrev);
		oCap.Month = oCap.appendChild(oMonth);
		oCap.appendChild(oNext);

		if(document.all) {
			oCap.style.width = 133;
			oCap.style.height = 18;
		}
		else {
			oCap.style.width = 132;
			oCap.style.height = 17;
		}
		
		return oCap;
	}
	
	function CalendarDays() {
		var oAllDaysDiv = document.createElement("DIV");
		var days = new Array("M", "T", "O", "T", "F", "L", "S");
		var oDayDiv = null;
		
		for(var i=0; i < days.length; i++) {
			oDayDiv = document.createElement("DIV");
			oDayDiv.innerHTML = days[i];
			oDayDiv.className = "CalDay";
			if(days[i] == "S") oDayDiv.className = "CalDaySun";

			if(document.all) {
				oDayDiv.style.width = 19;
				oDayDiv.style.height = 20;
			}
			else {
				oDayDiv.style.width = 18;
				oDayDiv.style.height = 17;
			}

			oAllDaysDiv.appendChild(oDayDiv);
		}
		
		return oAllDaysDiv;
	}
	
	function SetCalendar(oCalendar, newDate) {
		var arrDate = newDate.split("-");
		//alert(arrDate)
		oCalendar.curDate = new Date(arrDate[1] + "/" + arrDate[0] + "/" + arrDate[2]); //new Date(parseInt(arrDate[2]), parseInt(arrDate[1]) - 1, parseInt(arrDate[0] - 1));
		//alert(oCalendar.curDate)
		
		//if(!oCalendar.today) {	
		//	oCalendar.today = oCalendar.curDate;
		//}
		
		oCalendar.innerHTML = "";
		oCalendar.Cap = oCalendar.appendChild(CalendarCap(oCalendar));
		oCalendar.appendChild(CalendarDays());
		oCalendar.appendChild(CreateCalendar(oCalendar));
	}
	
	function InitCalendar(calName, calDate, initDate, clickFunction, monthChangedFunction) {
		var oCalendar = document.getElementById(calName)
		oCalendar.clickFunc = clickFunction;
		oCalendar.monthChangedFunc = monthChangedFunction;
		oCalendar.strDate = "";
		oCalendar.Update = UpdateCalendar;
		oCalendar.DayFocusClass = ""; //"DayFocus";
		
		var arrDate = calDate.split("-");
		oCalendar.today = new Date(arrDate[1] + "/" + arrDate[0] + "/" + arrDate[2]); 
		
		SetCalendar(oCalendar, initDate);
		
		return oCalendar;
	}

