﻿if(typeof dode !== 'undefined') {
	dode.calender = {
		newCalender : function () {
			var dateObj = new Date();
			////////////////////// PRIVATE EIGENSCHAFTEN /////////////////////////////////////
			var month = dateObj.getMonth();
			var day = dateObj.getDate();
			var dayOfWeek = dateObj.getDay();
			var year = dateObj.getFullYear();
			var monthName = ["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"];
			var isDayNow = day;
			var isMonthNow = dateObj.getMonth();
			var isYearNow = dateObj.getFullYear();
			var calObj;
			headlineOff = false;
			////////////////////// PRIVATE METHODEN //////////////////////////////////////////
			var setBoxId = function (id) {
				if (!document.getElementById(id)) {
					alert("Objekt für Kalenderaufnahme nicht vorhanden!");
					return false;
				}
				return document.getElementById(id);
			}
			
			var makeMonth = function (destinationObj) {
				var numberDaysInMonthHelp = new Date(year,month+1,0);
				var numberDaysInMonth = numberDaysInMonthHelp.getDate();
				var startDayInMonthHelp = new Date(year,month,1);
				var startDayInMonth = startDayInMonthHelp.getDay();
				var allContent = [];
				var countArray;
				if (startDayInMonth==0) {
					startDayInMonth = 7;
				}
				for (var i = 1;i < startDayInMonth;i++) {
					allContent[allContent.length]=" ";
					countArray=allContent.length;
				}
				for (var i2 = 1; i2 <= numberDaysInMonth;i2++) {
					allContent[allContent.length]=i2;
					countArray=allContent.length;
				}
				var rest = countArray%7;
				if (rest>0) {
					rest = 7 - rest;
					for (var i3 = 1; i3 <= rest; i3++) {
						allContent[allContent.length]=" ";
						countArray=allContent.length;
					}
				}
				return drawCal(destinationObj,allContent);
			}
			
			var drawCal = function (obj,allContent) {
				////////////////////// Kalender-Blatt erzeugen /////////////////////
				var newCalOuterBox = document.createElement("DIV");
				var newCalTable = document.createElement("TABLE");
				var newCalTableHead = document.createElement("THEAD"); // für IE
				var newCalTableBody = document.createElement("TBODY"); // für IE
				if (!headlineOff) {
					var newCalHeadline = document.createElement("P");
					var textHeadline = document.createTextNode(monthName[month]+" "+year);
					newCalHeadline.appendChild(textHeadline);
					newCalOuterBox.appendChild(newCalHeadline);
					dode.css.addCssClass(newCalHeadline,"calHeadline");
				}
				// DOM-Objekte bauen
				obj.appendChild(newCalOuterBox);
				newCalTable.appendChild(newCalTableHead);
				newCalTable.appendChild(newCalTableBody);
				var newCalTr = document.createElement("TR");// TR
				newCalTableHead.appendChild(newCalTr);
				var dayName=["Mo","Di","Mi","Do","Fr","Sa","So"];
				for (var i = 0;i<dayName.length;i++) {
					var text = document.createTextNode(dayName[i]);
					var newCalTh = document.createElement("TH");// TH
					newCalTh.appendChild(text);
					newCalTr.appendChild(newCalTh);
				}
				for (i = 0; i < allContent.length; i++) {
					if ((i%7)==0) {
						var count = 1;
						var newCalTr2 = document.createElement("TR");// TR
						newCalTableBody.appendChild(newCalTr2);
					}
					var text = document.createTextNode(allContent[i]);
					var newCalTd = document.createElement("TD");// TD
					newCalTd.appendChild(text);
					newCalTr2.appendChild(newCalTd);
					//alert(typeof text);
					if (allContent[i] === isDayNow && isMonthNow === month && isYearNow === year) {
						dode.css.addCssClass(newCalTd,"today");
					}
					if (count === 6 || count === 7) {
						dode.css.addCssClass(newCalTd,"we");
					}
					count++;
				}				
				newCalOuterBox.appendChild(newCalTable);
				calObj = newCalTable;
				return newCalOuterBox;
			}

			////////////////////// ÖFFENTLICHE METHODEN /////////////////////////////////////
			var backCalObj = {
				setHeadlineOff : function (isTrue) {
					headlineOff = isTrue;
				},
				setDate : function (m,y) {
					// Setzen eines neuen Monats
					// month + year -> int
					if (m > 11) {
						y = y + 1;
						m = 0;
					}
					if (m < 0) {
						y = y - 1;
						m = 11;
					}
					//newDate = new Date();
					var newDate = new Date();
					newDate.setDate(1);
					newDate.setMonth(m);
					newDate.setFullYear(y);
					month = newDate.getMonth();
					day = newDate.getDate();
					dayOfWeek = newDate.getDay();
					year = newDate.getFullYear();
				},
				
				getMonth : function () {
					return month;
				},
				
				getMonthName : function () {
					return monthName[month];
				},
				
				getDay : function () {
					return day;
				},
				
				getDayOfWeek : function () {
					return dayOfWeek;
				},
				
				getYear : function () {
					return year;
				},
				
				getCalender : function (id) {
					var calHtmlObj = setBoxId(id);
					if (calHtmlObj) {
						return makeMonth(calHtmlObj);
					} else {
						return false;
					}
				},
				
				getCalObj : function () {
					return calObj;
				}
			}
			return backCalObj;
		}
	},
	dode.calBox = {
		newCalBox : function (htmlObj,newId) {
			if (!htmlObj) {alert("Objekt zur Aufnahme der Kalenderbox nicht vorhanden oder fehlerhaft"); return false;}
			if (typeof htmlObj !== 'object') {alert("Ziel der Box ist kein Objekt"); return false;}
			if (!newId) {alert("Es ist keine ID für die Kalenderbox angegeben"); return false;}
			////////////////////// PRIVATE EIGENSCHAFTEN /////////////////////////////////////
			var calBoxDestinationObj = htmlObj; // HTML Objekt an welches die Kalender Box angehangen wird
			var calBoxHtmlId = newId; // Id der neuen Kalender Box
			var calBoxCloseIcon = "/media/system/seitenelemente/iconschliessen.gif";
			var calBoxCloseText ="Schließen";
			var calBoxCalIcon = "/media/system/seitenelemente/iconkalender.jpg";
			var calBoxIconSwitchLeft ="/media/system/seitenelemente/button_blaettern_links_klein.gif";
			var calBoxIconSwitchLeftAltText ="Nach links blättern";
			var calBoxIconSwitchRight ="/media/system/seitenelemente/button_blaettern_rechts_klein.gif";
			var calBoxIconSwitchRightAltText ="Nach rechts blättern";
			var calBoxSwitchBarHeadline = "Switch-Bar";
			var calBoxTopBarHeadline = "";
			var calBoxBottomBarHeadline = "";
			var calBoxCssClass = "mainBox"; // CSS Klasse für HauptBox
			var calBoxCalBoxClass = "calBox" ; // Klasse für einzelne Kalenderbox
			var calBoxNumCalIcon = [];
			var calBoxAllIcons = [];
			var calBoxInnerBoxInfo = [];
			var calCopyHandler = []; // Hilfs-Array zur Aufnahme des Copy-Ziels
			var calBoxCalIconSetHandler = true; // Soll ein Handler auf die Icons ?
			var calBoxSecondInnerBox = false;  // Gibt es eine zweite innere Box?
			var calBoxIsInDom = false; // Ist die Box schon in das DOM eingehangen?
			var calInnerBoxTopBar = false; // Soll es eine Blättern-Box geben?
			var calCloseByClick = true;
			var calBoxTopBarHeadlineWithDate = false; // Soll das Datum als Boxenüberschrift stehen?
			var calSetHeadlineOff = false;
			var calBoxCloseBarOff = false; // Ausschalten der Schließen-Funktion in der Box ganz oben
			var calNumbersCalInBox = 1; // Wie viele Kalender in einer Box?
			var calNumbersBoxes = 1; // Wie viele Boxen zur Kalenderaufnahme?
			var calInfo = []; // Array für die einzelnen Info zu den Kalenderblättern
			var calBoxSwitchBarHeadlineArray = [];
			var calBoxToCloseObj = null;
			////////////////////// PRIVATER MERKER /////////////////////////////////////////////
			var innerBox = []; // Merker Array für Zustände innerhalb der Boxen!!
			// möglicherweise zweidimensionales array für alle Unterobjekte -> Kalenderblätter
			////////////////////// PRIVATER BOX-ZUSTAND /////////////////////////////////////
			var isCalBoxOpen = false; // False -> hide der ganzen Box über css Klasse !!
			////////////////////// PRIVATE METHODEN //////////////////////////////////////////
			var reset = function () {
				//opener = null;
				return true;
			}
			
			var setIcon = function (obj) {
				var id = "";
				var newIcon = document.createElement("img");
				var parentK1 = obj.parentNode;
				newIcon.src = calBoxCalIcon;
				newIcon.alt = "Ein Kalenderblatt";
				id = obj.getAttribute("ID")+"Icon";
				newIcon.id = id;
				parentK1.appendChild(newIcon);
				dode.css.addCssClass(newIcon,"kalender");
				dode.css.addCssClass(newIcon,"pointer");
				return id;
			}
			
			var setIconHandler = function (iconId,was,func) {
				if (!iconId || !was || !func) {return false;}
				var htmlImgObj = document.getElementById(iconId);
				if (!htmlImgObj) { return false; }
				if (was === 'remove') {
					dode.newevent.removeEvent(htmlImgObj,"click",func);
				}
				if (was === 'add') {
					dode.newevent.addEvent(htmlImgObj,"click",func);
				}
				return true;
			}
			
			var openCalenderBox = function (e) {
				if (calBoxToCloseObj !== null) {
					// Die ANDERE Box schließen!
					calBoxToCloseObj.closeCalBox();
				}
				if (calBoxIsInDom && !isCalBoxOpen) {
					dode.css.deleteCssClass(document.getElementById(calBoxHtmlId),"hide");
					isCalBoxOpen = true;
					for (var i = 0; i < calBoxAllIcons.length; i++) {
						setIconHandler (calBoxAllIcons[i],"remove",openCalenderBox);
						setIconHandler (calBoxAllIcons[i],"add",closeCalenderBox);
					}
				}
			}
			
			var closeCalenderBox = function (e) {
				if (calBoxIsInDom && isCalBoxOpen) {
					isCalBoxOpen = false;
					dode.css.addCssClass(document.getElementById(calBoxHtmlId),"hide");
					for (var i = 0; i < calBoxAllIcons.length; i++) {
						setIconHandler (calBoxAllIcons[i],"remove",closeCalenderBox);
						setIconHandler (calBoxAllIcons[i],"add",openCalenderBox);
					}
				}
			}
			
			var drawCalIcon = function () {
				if (calBoxNumCalIcon.length > 0) {
					for (var i = 0; i < calBoxNumCalIcon.length; i++) {
						var htmlDestinationObj = document.getElementById(calBoxNumCalIcon[i]);
						if (htmlDestinationObj) {
							var iconId = setIcon(htmlDestinationObj);
							calBoxAllIcons[calBoxAllIcons.length] = iconId;
						}
					}
					return calBoxAllIcons;
				} else {
					return false;
				}
			}
			
			var fillInnerBox = function (newInnerBox) {
				// Baue Blätternbox
				if (calInnerBoxTopBar === true) {
					var innerBoxTopBar = document.createElement("DIV");
					newInnerBox.appendChild(innerBoxTopBar);
					dode.css.addCssClass(innerBoxTopBar,"calInnerBoxTopBar");
					drawTopBar(innerBoxTopBar,newInnerBox);
				}
				// Hier den ersten Kalender bauen
				var cal = dode.calender.newCalender();
				drawOneCal (cal,newInnerBox.getAttribute("ID"),0);
				var m = cal.getMonth();
				var y = cal.getYear();
				// Baue weitere Kalender
				if (calNumbersCalInBox > 1) {
					for (var i = 1; i < calNumbersCalInBox;i++) {
						cal.setDate(m+1,y);
						m = cal.getMonth();
						y = cal.getYear();
						drawOneCal (cal,newInnerBox.getAttribute("ID"),i);
					}
				}
				calBoxInnerBoxInfo[calBoxInnerBoxInfo.length-1]["obj"] = cal;
				calBoxInnerBoxInfo[calBoxInnerBoxInfo.length-1]["lastMonth"] = m;
				calBoxInnerBoxInfo[calBoxInnerBoxInfo.length-1]["lastYear"] = y;
				// return htmlobjekt
			}
			
			var drawCalInnerBox = function (i,calNumbersBoxes) {
				var newInnerBox = document.createElement("div");
				newInnerBox.id = calBoxHtmlId+"Ib"+i;
				// Top-Bar vorbereiten zur Aufnahme der Blätterelemente !!!

				if (calNumbersBoxes === 2 && i === 2) {
					dode.css.addCssClass(newInnerBox,"calBoxRight");
				}
				if (calNumbersBoxes === 2 && i === 1) {
					dode.css.addCssClass(newInnerBox,"calBoxLeft");
				}
				dode.css.addCssClass(newInnerBox,calBoxCalBoxClass);
				return newInnerBox;
			}
			
			var setCalPre = function (e) {
				var calMainBox = this.parentNode.parentNode;
				if (dode.css.hasCssClass(calMainBox,calBoxCalBoxClass)) {
					// Das ist die BOX. Ran an die ID
					var boxId = calMainBox.getAttribute("id");
					setCalNew (boxId,"back");
					} else {
					alert("Keine Main-Box vorhanden");
				}
			}
			
			var setCalPost = function (e) {
				var calMainBox = this.parentNode.parentNode;
				if (dode.css.hasCssClass(calMainBox,calBoxCalBoxClass)) {
					// Das ist die BOX. Ran an die ID
					var boxId = calMainBox.getAttribute("id");
					setCalNew (boxId,"next");
					} else {
					alert("Keine Main-Box vorhanden");
				}
			}
			
			var setCalNew = function (boxId,direction) {
				// boxId -> In welcher Box hängt der Kalender
				// direction -> next / back 
				for (var i = 0; i < calBoxInnerBoxInfo.length;i++) {
					if (boxId === calBoxInnerBoxInfo[i]["ID"]) {
						var theBoxNode = document.getElementById(boxId);
						if (theBoxNode.hasChildNodes) {
							var countNodes = theBoxNode.childNodes.length;
							for (var i2 = countNodes-1; i2 > 0; i2--) {
								if (theBoxNode.childNodes[i2].nodeName === "DIV") {
									// Den Eventhandler auf der Box abmelden!!
									if (calBoxInnerBoxInfo[i]["copyDestinationObj"]) {
										// Den TBODY holen
										var tbodyObj = theBoxNode.childNodes[i2].getElementsByTagName("TBODY");
										dode.newevent.removeEvent(tbodyObj[0],"click",copyHandler);
									}
									// Die Kalender löschen
									dode.util.deleteAllNodes(theBoxNode.childNodes[i2]);
									theBoxNode.removeChild(theBoxNode.childNodes[i2]);
								}
							}
							// Jetzt die neuen Kalender bauen
							// Einen Monat weiterschalten
							for (var i2 = 0;i2 < calNumbersCalInBox; i2++) {
								if (direction === "next") {
									calBoxInnerBoxInfo[i]["obj"].setDate(calBoxInnerBoxInfo[i]["lastMonth"]+i2-calNumbersCalInBox+2,calBoxInnerBoxInfo[i]["lastYear"]);
								}
								if (direction === "back") {
									calBoxInnerBoxInfo[i]["obj"].setDate(calBoxInnerBoxInfo[i]["lastMonth"]+i2-calNumbersCalInBox,calBoxInnerBoxInfo[i]["lastYear"]);
								}
								drawOneCal (calBoxInnerBoxInfo[i]["obj"],calBoxInnerBoxInfo[i]["ID"],i2);
							}
							calBoxInnerBoxInfo[i]["lastMonth"] = calBoxInnerBoxInfo[i]["obj"].getMonth();
							calBoxInnerBoxInfo[i]["lastYear"] = calBoxInnerBoxInfo[i]["obj"].getYear();
						}
					}
				}
				return true;
			}
			
			var copyHandler = function (e) {
				if (e.target) {
					var source = e.target;
				} else if (e.srcElement) {
					var source = e.srcElement; 
				} else {
					return false;
				}
				var sourceData = source.firstChild.nodeValue;
				sourceData = sourceData.replace(/(\s)/, "");
				if (sourceData) {
					// Es gibt einen Tag zum Kopieren
					// Das komplette Table-Objekt des Kalenderblattes holen
					var calTableObj = source.parentNode.parentNode.parentNode;
					// Und die entsprechende ID der Box holen
					var boxId = calTableObj.parentNode.parentNode.getAttribute("ID");
					var out = "";
					for (var i = 0; i < calInfo.length;i++) {
						if (calTableObj === calInfo[i]["obj"]) {
							sourceData = sourceData+"."+(calInfo[i]["month"]+1)+"."+calInfo[i]["year"];
							var boxNumId = calInfo[i]["boxNumId"];
							for (var i2 = 0;i2 < calCopyHandler.length; i2++) {
								if (calCopyHandler[i2]["box"] === boxNumId) {
									calCopyHandler[i2]["destObj"].value = sourceData;
									if (calCloseByClick === true) {
										// Geöffnete Box schließen!!!
										if (calBoxIsInDom && isCalBoxOpen) {
											isCalBoxOpen = false;
											dode.css.addCssClass(document.getElementById(calBoxHtmlId),"hide");
											for (var i = 0; i < calBoxAllIcons.length; i++) {
												setIconHandler (calBoxAllIcons[i],"remove",closeCalenderBox);
												setIconHandler (calBoxAllIcons[i],"add",openCalenderBox);
											}
										}
									}
								}
							}
						}
					}
				}
				return true;
			}
			
			var drawOneCal = function (cal,newInnerBox,c) {
				// cal -> Kalender Objekt
				// newInnerBox -> Wohin soll der Kalender Geschrieben werden? ID
				cal.setHeadlineOff(calSetHeadlineOff);
				var m = cal.getMonth();
				var y = cal.getYear();
				var mName = cal.getMonthName();
				cal.setDate(m,y);
				var newCalObj = cal.getCalender(newInnerBox);
				calInfo[c] = [];
				calInfo[c]["obj"] = cal.getCalObj();
				calInfo[c]["month"] = m;
				calInfo[c]["monthName"] = mName;
				calInfo[c]["year"] = y;
				calInfo[c]["boxNumId"] = newInnerBox;
				// Schauen ob ein Copy-Handler vorgesehen ist
				for (var i = 0; i < calCopyHandler.length;i++) {
					if (calCopyHandler[i]["box"] === newInnerBox) {
						// Auf diese Box sollen die Kalender CopyHandler
						// Alle table tbodys holen - denn dort sind die Tage drin
						var allCalBody = newCalObj.getElementsByTagName("TBODY");
						for (var i4 = 0; i4 < allCalBody.length; i4++) {
							dode.newevent.addEvent(allCalBody[i4],"click",copyHandler);
							dode.css.addCssClass(allCalBody[i4],"pointer");
						}
					}
				}
				if (calBoxTopBarHeadlineWithDate) {
					// Das aktuelle Datum wird als Boxenüberschrift geschrieben
					var backMonthYear = calInfo[c]["monthName"]+" "+calInfo[c]["year"];
					var topBarHeadlineElement = document.getElementById(newInnerBox+"TopBar");
					if (topBarHeadlineElement !== null) {
						topBarHeadlineElement.firstChild.nodeValue = backMonthYear;
					}
				}
				return true;
			}
			
			var drawTopBar = function (innerBoxTopBar,newInnerBox) {
				var switchImgLeft = document.createElement("IMG");
				var switchImgRight = document.createElement("IMG");
				switchImgLeft.src = calBoxIconSwitchLeft;
				switchImgLeft.alt = calBoxIconSwitchLeftAltText;
				switchImgRight.src = calBoxIconSwitchRight;
				switchImgRight.alt = calBoxIconSwitchRightAltText;
				innerBoxTopBar.appendChild(switchImgLeft);
				innerBoxTopBar.appendChild(switchImgRight);
				dode.css.addCssClass(switchImgLeft,"pointer");
				dode.css.addCssClass(switchImgLeft,"calSwitchLeft");
				dode.css.addCssClass(switchImgRight,"pointer");
				dode.css.addCssClass(switchImgRight,"calSwitchRight");
				dode.newevent.addEvent(switchImgLeft,"click",setCalPre);
				dode.newevent.addEvent(switchImgRight,"click",setCalPost);
				for (var i = 0; i < calBoxInnerBoxInfo.length; i++) {
					if (calBoxInnerBoxInfo[i]["ID"] === newInnerBox.getAttribute("ID")) {
						if (calBoxInnerBoxInfo[i]["boxHeadline"]) {
							var topBarHeadline = document.createElement("h3");
							topBarHeadline.id = calBoxInnerBoxInfo[i]["ID"]+"TopBar";
							var topBarHeadlineContent = document.createTextNode(calBoxInnerBoxInfo[i]["boxHeadline"]);
							topBarHeadline.appendChild(topBarHeadlineContent);
							innerBoxTopBar.appendChild(topBarHeadline);
						}					
					}
				}

				return true;
			}
			
			var drawCalBox = function () {
				// Übergeordnete Box zur Aufnahme der inneren Boxen (Dort kommen die Kalender rein)
				if (document.getElementById(calBoxHtmlId)) { return false; }
				var isHeadline = false;
				if ((calBoxTopBarHeadline != "") || calBoxNumCalIcon.length > 0) {
					var isHeadline = true;
				}
				var isBottom = false;
				if (calBoxBottomBarHeadline) {
					var isBottom = true;
				}
				var newCalBox = document.createElement("DIV");
				newCalBox.id = calBoxHtmlId;
				if (!isCalBoxOpen) {
					dode.css.addCssClass(newCalBox,"hide");
				}
				dode.css.addCssClass(newCalBox,calBoxCssClass);
				calBoxDestinationObj.appendChild(newCalBox);
				if (isHeadline) {
					var headline = document.createElement("DIV");
					if (calBoxTopBarHeadline) {
						newCalBox.appendChild(headline);
						var contentHeadline = document.createTextNode(calBoxTopBarHeadline);
						headline.appendChild(contentHeadline);
						dode.css.addCssClass(headline,"calInnerBoxTopBar");
					}
					if (calBoxNumCalIcon.length > 0 && calBoxCalIconSetHandler && (!calBoxCloseBarOff)) {
						var closeBox = document.createElement("DIV");
						closeBox.id = newCalBox.id+"KalBoxZu";
						if (calBoxCloseIcon) {
							var closeObj = document.createElement("IMG");
							closeObj.src = calBoxCloseIcon;
							closeBox.appendChild(closeObj);
						}
						if (calBoxCloseText) {
							var closeObj2 = document.createTextNode(calBoxCloseText);
							closeBox.appendChild(closeObj2);
						}
						headline.appendChild(closeBox);
						dode.css.addCssClass(closeBox,"calCloseBox");
						dode.css.addCssClass(closeBox,"pointer");
						setIconHandler (closeBox.id,"add",closeCalenderBox);
					}
				}
				// Start Kalender-Boxen Kalender
				if (calBoxSecondInnerBox) {
					calNumbersBoxes = 2;
				}
				for (var i = 1; i <= calNumbersBoxes; i++) {
					var getBox = drawCalInnerBox(i,calNumbersBoxes);
					if (getBox) { newCalBox.appendChild(getBox); }
					// Merker für Infos zu den Kalendern
					calBoxInnerBoxInfo[i-1] = [];
					calBoxInnerBoxInfo[i-1]["ID"] = getBox.id;
					calBoxInnerBoxInfo[i-1]["copyDestinationObj"] = "";
					calBoxInnerBoxInfo[i-1]["boxHeadline"] = "";
					if (calBoxSwitchBarHeadlineArray[i-1]) {
						calBoxInnerBoxInfo[i-1]["boxHeadline"] = calBoxSwitchBarHeadlineArray[i-1]["headline"];
					}
					// Copy Handler
					var numCopyHandler = calCopyHandler.length;
					for (var i2 = 0; i2 < numCopyHandler; i2++) {
						if (calCopyHandler[i2]["box"] === i-1) {
							// Die Box Nummer auf die ID umspeichern
							calCopyHandler[i2]["box"] = getBox.id;
							calBoxInnerBoxInfo[i2]["copyDestinationObj"] = calCopyHandler[i2]["destObj"];
						}
					}
					// Jetzt mit Kalender füllen
					fillInnerBox(getBox);
				}
				// Ende Kalender-Boxen Kalender
				if (isBottom) {
					var newCalBoxBottom = document.createElement("DIV");
					var newCalBoxBottomContent = document.createTextNode(calBoxBottomBarHeadline);
					newCalBoxBottom.appendChild(newCalBoxBottomContent);
					newCalBox.appendChild(newCalBoxBottom);
					dode.css.addCssClass(newCalBoxBottom,"calInnerBoxBottom");
				}
				calBoxIsInDom = true;
				return true;
			}
		    ////////////////////// ÖFFENTLICHE METHODEN /////////////////////////////////////
			// Erzeuge Object mit den oeffentlichen Eigenschaften und Methoden
		    var backCalBox = {
				setCalBoxCloseIcon : function (imgSrc) {
					closeIcon = imgSrc;
					return true;
				},
				setCalBoxCloseBarOff : function (isTrue) {
					calBoxCloseBarOff = isTrue;
					return true;
				},
				setCalBoxCalIcon : function (imgSrc) {
					calBoxCalIcon = imgSrc;
					return true;
				},
				setCalBoxTopBarHeadlineWithDate : function (isTrue) {
					calBoxTopBarHeadlineWithDate = isTrue;
				},
				setCalHeadlineOff : function (isTrue) {
					// Die Headline in den Kalendern abschalten
					calSetHeadlineOff = isTrue;
				},
				setCalBoxTopBarHeadline : function (text) {
					calBoxTopBarHeadline = text;
					return true;
				},
				setCalBoxBottomBarHeadline : function (text) {
					calBoxBottomBarHeadline = text;
					return true;
				},
				setCalBoxIcon : function (htmlObjId) {
					if (!htmlObjId) {alert("SetCalIcon: ID nicht übergeben"); return false;}
					if (!document.getElementById(htmlObjId)) {alert("SetCalIcon: Objekt mit ID nicht vorhanden"); return false;}
					calBoxNumCalIcon[calBoxNumCalIcon.length] = htmlObjId;
					//isCalBoxOpen = true;
					return true;
				},
				setCalBoxSecondInnerBox : function (isTrue) {
					calBoxSecondInnerBox = isTrue;
				},
				setIsCalBoxOpen : function (isTrue) {
					isCalBoxOpen = isTrue;
				},
				getIsCalBoxOpen : function () {
					return isCalBoxOpen;
				},
				setCalInnerBoxTopBar : function (isTrue) {
					calInnerBoxTopBar = isTrue;
				},
				setCalNumbersCalInBox : function (num) {
					calNumbersCalInBox = num;
				},
				setCopySrcDest : function (innerBox,destinationId) {
					// innerBox -> 0 oder 1 -> box links / rechts
					// destination -> ID des Zielfeldes
					if (innerBox > 1) {
						innerBox = 1;
					}
					if (!destinationId || !document.getElementById(destinationId)) {
						return false;
					}
					var l1 = calCopyHandler.length;
					calCopyHandler[l1] = [];
					calCopyHandler[l1]["box"] = innerBox;
					calCopyHandler[l1]["destObj"] = document.getElementById(destinationId);
				},
				setCalBoxSwitchBarHeadlineArray : function (boxNum,text) {
					// boxNum = 0 oder 1
					if (!text) { return false; }
					if (boxNum > 1) { return false; }
					calBoxSwitchBarHeadlineArray[boxNum] = [];
					calBoxSwitchBarHeadlineArray[boxNum]["headline"] = text;
				},
				setCalBoxCss : function (cssClass) {
					if (!cssClass) { return false; }
					calBoxCssClass = cssClass;
					return true;
				},
				setCalBoxCalBoxClass : function (cssClass) {
					if (!cssClass) { return false; }
					calBoxCalBoxClass = cssClass;
					return true;
				},
				setToCloseObj : function (obj) {
					calBoxToCloseObj = obj;
				},
				closeCalBox : function () {
					// Die ANDERE Box schließen!
					if (calBoxIsInDom && isCalBoxOpen) {
						isCalBoxOpen = false;
						dode.css.addCssClass(document.getElementById(calBoxHtmlId),"hide");
						for (var i = 0; i < calBoxAllIcons.length; i++) {
							setIconHandler (calBoxAllIcons[i],"remove",closeCalenderBox);
							setIconHandler (calBoxAllIcons[i],"add",openCalenderBox);
						}
					}
					return true;
				},
				drawCalBox : function () {
					if (!drawCalBox()) { return false; }
					if (calBoxNumCalIcon.length > 0) { drawCalIcon(); }
					if (calBoxCalIconSetHandler && calBoxAllIcons.length > 0) {
						for (var i = 0; i < calBoxAllIcons.length; i++) {
							setIconHandler (calBoxAllIcons[i],"add",openCalenderBox);
						}
					}
				}
			};
			return backCalBox;
		}
	}
}

