/***************************************************************/ /* Urlaubsrechner - Konfiguration */ /***************************************************************/ /***************************************************************/ /***************************************************************/ /* Hier kann die Preisberechnung veraendert werden ... */ /***************************************************************/ var URMAXPERS = 5; // Maximale Anzahl Personen var URGRUNDP = 49; // Grundpreis var URGRDPERS = 2; // Anzahl Personen Grundpreis var URMEHRP = 10; // Mehrpreis pro zusaetzl. Person var URKINDK1 = 8; // Preis fuer Kinder Kategorie 1 (z.B. 16 Jahren) var URKINDK2 = 5; // Preis fuer Kinder Kategorie 2 (z.B. 8 Jahren) var URWAEHRUNG = " €"; // Angez.Waehrung, z.B. auch " Euro" var URUSEKINDK1 = 1; // Abfrage von Kindern Kategorie 1 (1 = AN / 0 = AUS) var URUSEKINDK2 = 1; // Abfrage von Kindern Kategorie 2 (1 = AN / 0 = AUS) var URUSEZAUFSCHL = 1; var URZAUFSCHL = // Aufschlag im Zeitraum fuer Tarifgruppe auf Grundpreis, Mehrpreis, KindK1 und KindK2 new Array ( new Array("01.01-13.01", 4, 5, 0, 0, 0), // 1.Stelle: Zeitraum vom 01.01 - 11.01 new Array("14.01-03.02", 1, -3, -1, 0, 0), // 2.Stelle: die Gruppe des Tarifs fuer URTIPSD (Tooltips) new Array("04.02-17.02", 0, 0, 0, 0, 0), // und URSTYLES (versch. CSS-Formate in der zug. CSS-Datei) new Array("18.02-15.03", 1, -3, -1, 0, 0), // 3.Stelle: Aufschlag fuer GP new Array("16.03-07.04", 0, 0, 0, 0, 0), // 4.Stelle: Aufschlag fuer MehrP new Array("08.04-28.04", 2, -5, -1, 0, 0), // 5.Stelle: Aufschlag fuer KindK1 new Array("29.04-30.09", 0, 0, 0, 0, 0), // 6.Stelle: Aufschlag fuer KindK2 new Array("01.10-15.12", 3, -5, -1, 0, 0), // new Array("16.12-20.12", 0, 0, 0, 0, 0), // new Array("21.12-31.12", 4, 5, 0, 0, 0) // ); var URUSEKAUFSCHL = 1; var URKAUFSCHL = // Aufschlag wegen Kurzfristig. auf Gesamtpreis new Array ( 40, 40, 40, 35, 30, 25 // fuer einen, zwei, drei, vier, ... Tage ); /***************************************************************/ /* Hier koennen verschiedene Einstellungen gemacht werden ... */ /***************************************************************/ var URUSEBUTTONS = 1; var URUSEMINFO = 1; var URUSECOUNTER = 1; var URCOUNTINFO = 1; var URNOSTARTDAY = 1; var URANIMSTATUS = 0; var URANIMCOLOR = 1; var URANIMRUNTXT = 1; var URUSENUMSEL = 1; var URUSEADDDAYS = 1; var URUSECONSOLE = 0; var URUSESTVALS = 1; var URSTARTVALS = new Array ( "--", "--", "----", "--", "2", "0", "0" ); /***************************************************************/ /* Hier kann ein Counter definiert werden ... */ /***************************************************************/ var URCOUNTER = new Object(); URCOUNTER["_URL_"] = "http://www.georg-lipp.de/js/counter.php"; URCOUNTER["_PC1_"] = "NOOUT=1&CLICK=5" URCOUNTER["_PC2_"] = "NOOUT=1&CLICK=6"; URCOUNTER["_PNC_"] = "NOOUT=1"; URCOUNTER["index.html"] = "NOOUT=1&CLICK=1"; URCOUNTER["home.html"] = "NOOUT=1&CLICK=1"; URCOUNTER["ferienwohnung.html"] = "NOOUT=1&CLICK=2"; URCOUNTER["freizeit.html"] = "NOOUT=1&CLICK=3"; URCOUNTER["preise.html"] = "NOOUT=1&CLICK=4"; /***************************************************************/ /* Hier koennen Texte und Auswahlwerte veraendert werden ... */ /***************************************************************/ var URTTIPSD = new Array ( "Normaltarif", "Fr�hjahrsskipauschale", "Wanderwochen", "Herbstwanderwochen", "Weihnachtszeit" ); var URSTYLES = new Array ( "auf1", "auf2", "auf2", "auf2", "auf3" ); var URBGCOLORS = { "none" : "", "auf1" : "#F5F5F5", "auf2" : "#DCDCDC", "auf3" : "#C0C0C0", "belegt" : "#AC6D78", "aktbel" : "#F0E68C", "akt" : "#6EA775", "on" : "#000000", "off" : "#DDDDDD" }; var URFGCOLORS = { "none" : "", "auf1" : "#000000", "auf2" : "#000000", "auf3" : "#000000", "belegt" : "#000000", "aktbel" : "#000000", "akt" : "#000000", "on" : "#000000", "off" : "#DDDDDD" }; var URTTIPSS = new Array ( "Monat zurück", "Monat vor", "Monat und Jahr auswählen", "Belegt" ); var URLEGEND = new Array ( new Array ("auf1", "Normaltarif"), new Array ("auf2", "Winter- / Herbstpauchale"), new Array ("auf3", "Weihnachtszeit"), new Array ("belegt", "bereits belegte Tage"), new Array ("aktbel", "ausgewählte belegte Tage"), new Array ("akt", "ausgewählte freie Tage") ); var URWDAYS = new Array ( "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So" ); var URMNAMES = new Array ( "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" ); var URTEXT = new Array ( "Urlaubsrechner mit Belegungsplan", "Zeitraum ( An- / Abreisetag )", "Personen ingesamt (max. 4 + Kleinkind):", "Gesamtpreis:", "Preis pro Tag und Person:", "U16", "U8" ); var URMINFO = "
"+ "Unsere Preise sind personenbezogen und ergeben sich z.B. im Normaltarif
"+ "pro Tag aus einem Grundpreis von "+URGRUNDP+URWAEHRUNG+" für 2 Personen, für jede weitere
"+ "zusätzliche erwachsene Person "+URMEHRP+URWAEHRUNG+" (Kinder je nach Alter "+URKINDK1+URWAEHRUNG+" bzw. "+URKINDK2+URWAEHRUNG+")."+ "
"+ "
"+ "Sie können im Urlaubsrechner beruhigt beliebige Eingaben machen,
" + "dies führt zu keiner Buchung oder Buchungsanfrage bei uns." + "
"+ ""; var URHILFE = new Array ( "Bitte unten oder im Kalender links den gew%FCnschten Anreisetag ausw%E4hlen.

"+ "Sie k%F6nnen dazu auch auf einen anderen Monat umschalten,
"+ "indem sie die Buttons '%AB' und '%BB' im Kalender verwenden.", "Bitte geben sie die Anzahl der von ihnen geplanten Urlaubstage
"+ "im zweiten Auswahlfeld unten ein.", "Bitte geben sie die Anzahl der erwachsenen Personen
"+ "im dritten Auswahlfeld unten ein.", "Um den Urlaubszeitraum zu %E4ndern, einfach unten oder im Kalender
"+ "einen anderen Tag f%FCr ihren Urlaubsbeginn ausw%E4hlen oder
"+ "unten die Anzahl der Urlaubstage ver%E4ndern.

"+ "Um auf einen anderen Monat zu schalten, k%F6nnen sie die
"+ "Buttons '%AB' und '%BB' im Kalender verwenden." ); var URZSTAT = new Array ( new Array ( "urdzstatE", unescape("Bitte Anreisetag eingeben"), "#B00000", "#FFFF00"), new Array ( "urdzstatE", unescape("Bitte Anzahl der Urlaubstage eingeben"), "#B00000", "#FFFF00"), new Array ( "urdzstatE", unescape("Bitte Anzahl der Personen angeben"), "#B00000", "#FFFF00"), new Array ( "urdzstatE", unescape("Zeitraum ist leider nicht mehr frei !!"), "#B00000", "#FFFF00"), new Array ( "urdzstatW", unescape("Zeitraum ist nicht komplett frei !!"), "#B00000", "#FFFF00"), new Array ( "urdzstatOK", unescape("Zeitraum ist noch frei"), "#00C000", "#FFFF00") ); var URQUEST = new Array ( new Array ( "Anreisetag eingeben (oder im Kalender anklicken):"), new Array ( "Anzahl der geplanten Urlaubstage eingeben:", 3, 28 ), new Array ( "Anzahl der erwachsenen Personen angeben:", 2, 6 ), new Array ( "Kinder unter 16 Jahren (bei Urlaubsantritt):", 0, 4 ), new Array ( "Kinder unter 8 Jahren (bei Urlaubsantritt):", 0, 4 ) ); var URBELEGT = new Array ( "05.04.2021-12.04.2021", "29.07.2021-02.08.2021", "04.07.2021-18.07.2021", "23.07.2021-29.07.2021", "13.08.2021-22.08.2021", "19.07.2021-23.07.2021", "02.08.2021-12.08.2021", "15.12.2021-17.01.2022", "15.04.2022-24.04.2022", "08.04.2022-11.04.2022", "28.07.2022-15.08.2022", "25.07.2022-01.08.2022", "12.06.2022-22.06.2022", "27.06.2022-03.07.2022", "10.09.2022-17.09.2022", "24.10.2022-30.10.2022", "02.01.2023-08.01.2023", "03.07.2023-16.07.2023", "22.12.2022-01.01.2023", "08.06.2023-12.06.2023", "05.04.2023-09.04.2023", "28.05.2023-01.06.2023", "28.06.2023-02.07.2023", "11.08.2023-13.08.2023", "09.06.2023-11.06.2023", "19.07.2023-02.08.2023", "17.05.2023-21.05.2023", "16.06.2023-23.06.2023", "03.08.2023-07.08.2023", "19.08.2023-09.09.2023", "07.08.2023-10.08.2023", "14.08.2023-19.08.2023", "14.09.2023-18.09.2023", "21.07.2024-12.08.2024", "21.06.2024-24.06.2024" ); /***************************************************************/ /* Urlaubsrechner */ /***************************************************************/ /* (C) 2008, Dipl. Inf. Wolfram Graf (E-Mail: er@dawoife.de) */ /***************************************************************/ /***************************************************************/ /* Lokale Variablen */ /***************************************************************/ var CLICKED1 = 0; var CLICKED2 = 0; var ANIMMODE = 0; var TOP = 0; var LEFT = 0; var CSSPREFIX = ""; /***************************************************************/ /* Lokale Hilfs-Funktionen */ /***************************************************************/ function addDebug(text) { var con = document.getElementById("console"); if (con != null) con.value += getTS() + ": " + text + "\n"; } /***************************************************************/ /***************************************************************/ function twoDigits(num) { return (num < 10) ? "0" + num : num; } /***************************************************************/ function getTS() { var now = new Date(); return twoDigits(now.getHours()) + ':' + twoDigits(now.getMinutes()) + ':' + twoDigits(now.getSeconds()); } /***************************************************************/ function leadZeroS(num, len) { var numStr = ""+num; while (numStr.length < len) numStr = "0"+numStr; return numStr; } /***************************************************************/ /***************************************************************/ function getMonthDays(year, month) { return new Date(year, month+1, 0).getDate() } /***************************************************************/ function getDay(date) { return date.getDate(); } /***************************************************************/ function getMonth(date) { return date.getMonth(); } /***************************************************************/ function getYear(date) { var year = date.getYear(); if (year < 1000) year += 1900; return year; } /***************************************************************/ function addDays(date, days) { return new Date(getYear(date), getMonth(date), getDay(date)+days); } /***************************************************************/ function date2String(date) { var month = getMonth(date)+1; var year = getYear(date); var day = getDay(date); return leadZeroS(day,2)+"."+leadZeroS(month,2)+"."+year; } /***************************************************************/ function dateDiff(date1, date2) { var d1 = new Date(getYear(date1), getMonth(date1), getDay(date1)); var d2 = new Date(getYear(date2), getMonth(date2), getDay(date2)); return Math.ceil((d2.getTime() - d1.getTime()) / (1000 * 3600 * 24)); } /***************************************************************/ /***************************************************************/ function findCSSPrefix() { var prefixes = ['-o-', '-ms-', '-moz-', '-webkit-']; // Create a temporary DOM object for testing var dom = document.createElement('div'); for (var i = 0; i < prefixes.length; i++) { // Attempt to set the style dom.style.background = prefixes[i] + 'linear-gradient(#000000, #ffffff)'; // Detect if the style was successfully set if (dom.style.background) { CSSPREFIX = prefixes[i]; break; } } dom = null; delete dom; } /***************************************************************/ function setGradientBackground(elem, col1, col2) { // Setting the gradient with the proper prefix if (col1 != "" && col2 != "") elem.style.backgroundImage = CSSPREFIX + 'linear-gradient(' + 'bottom right, ' + col2 + ' 50% , ' + col1 + ' 50%)'; // elem.style.backgroundImage = CSSPREFIX + 'linear-gradient(' + // 'left, ' + col1 + ', ' + col2 + ')'; else elem.style.backgroundImage = "none"; } /***************************************************************/ /***************************************************************/ function checkDblClick(elem, isDouble, onSingle, onDouble) { var cdc = elem.getAttribute("checkDblClick"); if (isDouble) return; if (cdc != 1) { elem.setAttribute("checkDblClick", 1); setTimeout(function() { if (elem.getAttribute("checkDblClick") == 1) { elem.removeAttribute("checkDblClick"); onSingle(); } }, 300); } else { elem.removeAttribute("checkDblClick"); onDouble(); } } /***************************************************************/ /***************************************************************/ function getQuestValue(name) { var obj = document.getElementById(name); if (!obj) return 0; var value = 0; if ((obj.nodeName == "DIV") || (obj.nodeName == "SPAN")) { if (isNaN(obj.innerHTML)) value = 0; else value = parseInt(obj.innerHTML, 10); } else if (isNaN(obj.value)) value = 0; else value = parseInt(obj.value, 10); if (value < 0) return 0; return value; } /***************************************************************/ function setQuestValue(name, value) { var obj = document.getElementById(name); if (!obj) return 0; if ((obj.nodeName == "DIV") || (obj.nodeName == "SPAN")) obj.innerHTML = value; else obj.value = value; return 1; } /***************************************************************/ /***************************************************************/ function setObjHTML(obj, html) { if (typeof obj == "string") obj = document.getElementById(obj); if (!obj) return 0; if (obj.innerHTML != html) obj.innerHTML = html; return 1; } /***************************************************************/ function getObjPos(obj, left, top) { LEFT = left; TOP = top; while (obj) { var style = obj.currentStyle; if (typeof style == "undefined") style = document.defaultView.getComputedStyle(obj, null); if (typeof style != "undefined") if (style.position == "relative") { obj = obj.offsetParent; continue; } LEFT += obj.offsetLeft; TOP += obj.offsetTop; obj = obj.offsetParent; } } /***************************************************************/ function setObjAttr(name, attr, value) { document.getElementById(name)[attr] = value; } /***************************************************************/ function getObjAttr(name, attr) { return document.getElementById(name)[attr]; } /***************************************************************/ /***************************************************************/ function hex2byte(h) { if (h.length != 2) return 0; return parseInt(h, 16); } /***************************************************************/ function byte2hex(b) { var hex_alpha = "0123456789ABCDEF"; if (b >= 256) b = 255; return hex_alpha.charAt(b/16) + hex_alpha.charAt(b%16); } /***************************************************************/ function getStringCharsHTML(s) { var a = new Array(); var sz = false; for (i = 0, li = 0, idx = 0; i < s.length; i++) { if (s.charAt(i) == '&') sz = true; if (s.charAt(i) == ';' && sz) sz = false; if (!sz) { a[idx] = s.substring(li, i+1); if (a[idx] == " ") a[idx] = " "; idx++; li = i+1; } } return a; } /***************************************************************/ /***************************************************************/ function doSend(url, params) { var http_request = false; if (window.XMLHttpRequest) { http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType('text/xml; charset= iso-8859-1'); } } else if (window.ActiveXObject) { try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) return; if (params != "") url = url + "?" + params; try { http_request.open('GET', url, true); http_request.send(null); } catch (e) { /* alert(e); */ } /* alert("Send: " + url); */ } /***************************************************************/ function doCount(click, info) { var params = ""; if (!URUSECOUNTER) return; if (typeof URCOUNTER == "undefined") return; if (typeof URCOUNTER["_PC1_"] == "undefined") return; if (typeof URCOUNTER["_PC2_"] == "undefined") return; if (typeof URCOUNTER["_PNC_"] == "undefined") return; if (!URCOUNTINFO) info = ""; if (click == 1 && CLICKED1 == 1 && info == "") return; if (click == 2 && CLICKED2 == 1 && info == "") return; if (click == 1) CLICKED1 = 1; if (click == 2) CLICKED2 = 1; switch (click) { case 1: params = URCOUNTER["_PC1_"]; break; case 2: params = URCOUNTER["_PC2_"]; break; default: params = URCOUNTER["_PNC_"]; break; } if (info != "") params = params + "&INFO=\""+info+"\""; doSend(URCOUNTER["_URL_"], params); } /***************************************************************/ /***************************************************************/ function setAnimatedObj(obj, text, scol, ecol) { if (obj["animatedInfo"] != "undefined") if (obj["animatedInfo"] == text+":"+scol+":"+ecol) return; else obj["animatedInfo"] = text+":"+scol+":"+ecol; obj["animatedText"] = getStringCharsHTML(text); if (obj["animatedTOut"] != "undefined") window.clearTimeout(obj["animatedTOut"]); if (!URANIMSTATUS) { setObjHTML(obj, "[ "+text+" ]"); return; } obj.style.width = 0; if (URANIMCOLOR) { ANIMMODE = 1; setupColorAnim(obj, text, scol, ecol); } if (URANIMRUNTXT) { ANIMMODE = 2; setupRunTxtAnim(obj); } obj["animatedTOut"] = setTimeout(function(){doAnimateObj(obj)}, 100); } /***************************************************************/ function setupColorAnim(obj, text, scol, ecol) { obj["animatedCols"] = new Array(); obj["animatedCIdx"] = 0; if (scol.charAt(0) == "#") scol = scol.substring(1,7); if (ecol.charAt(0) == "#") ecol = ecol.substring(1,7); SR = hex2byte(scol.substring(0,2)); SG = hex2byte(scol.substring(2,4)); SB = hex2byte(scol.substring(4,6)); ER = hex2byte(ecol.substring(0,2)); EG = hex2byte(ecol.substring(2,4)); EB = hex2byte(ecol.substring(4,6)); len = obj["animatedText"].length; cols = Math.max(len, 40); idx = 0; while (idx < len) obj["animatedCols"][idx++] = "#"+scol; for (i = 0; i < cols; i++) { obj["animatedCols"][idx] = "#"; obj["animatedCols"][idx] += byte2hex(SR-i*(SR-ER)/(cols-1)); obj["animatedCols"][idx] += byte2hex(SG-i*(SG-EG)/(cols-1)); obj["animatedCols"][idx] += byte2hex(SB-i*(SB-EB)/(cols-1)); idx++; } idxn = idx; for (i = 0; i < cols; i++) obj["animatedCols"][idx++] = obj["animatedCols"][idxn-1-i]; } /***************************************************************/ function setupRunTxtAnim(obj) { obj["animatedRIdx"] = 0; } /***************************************************************/ function doAnimateObj(obj) { len = obj["animatedText"].length; text = ""; msec = 0; newm = false; switch (ANIMMODE) { case 1: case 2: if (obj.style.textAlign != "center") obj.style.textAlign = "center"; break; case 3: if (obj.style.textAlign != "left") obj.style.textAlign = "left"; break; case 4: if (obj.style.textAlign != "right") obj.style.textAlign = "right"; break; } if (URANIMCOLOR && ANIMMODE == 1) { cols = obj["animatedCols"].length; idx = (cols-obj["animatedCIdx"])%cols; lci = 0; for (i = 0; i < len; i++) { ci = (idx+i)%cols; if (obj["animatedCols"][ci] != obj["animatedCols"][lci] || i == 0) { if (i != 0) text = text + ""; text = text + ""; } text = text + obj["animatedText"][i]; lci = ci; } text = text + ""; obj["animatedCIdx"] = (obj["animatedCIdx"] >= cols-2) ? 0 : (obj["animatedCIdx"]+2); if (obj["animatedCIdx"] == 0) newm = true; msec = 50; } if (URANIMRUNTXT && ANIMMODE != 1) { switch (ANIMMODE) { case 2: case 4: default: for (i = 0; i < obj["animatedRIdx"]; i++) text = text + obj["animatedText"][i]; break; case 3: for (i = obj["animatedRIdx"]; i < len; i++) text = text + obj["animatedText"][i]; obj.style.textAlign = "left"; break; } obj["animatedRIdx"] = (obj["animatedRIdx"] >= len) ? 0 : (obj["animatedRIdx"]+1); if (obj["animatedRIdx"] > 0 && obj["animatedRIdx"] < len-1) obj["animatedRIdx"] = obj["animatedRIdx"]+1; if (obj["animatedRIdx"] == 0) newm = true; if (ANIMMODE == 2) msec = 30; else msec = 80; } if (text == "") text = " "; setObjHTML(obj, text); if (newm) switch (ANIMMODE) { case 1: msec = 3000; ANIMMODE = 3; obj.style.width = obj.offsetWidth; break; case 2: msec = 1000; ANIMMODE = 1; obj.style.width = obj.offsetWidth; break; case 3: msec = 80; ANIMMODE = 4; break; case 4: msec = 1000; ANIMMODE = 1; obj.style.width = obj.offsetWidth; break; } if (msec > 0) obj["animatedTOut"] = setTimeout(function(){doAnimateObj(obj)}, msec); } /***************************************************************/ /***************************************************************/ function Buchungsanfrage() { var days = getQuestValue("questdays"); var pers = getQuestValue("questpers"); var chk1 = getQuestValue("questchk1"); var chk2 = getQuestValue("questchk2"); var type = ""; if (chk1 > 0) type = type + chk1 + " x " + URTEXT[5]; if (chk2 > 0) { if (type != "") type = type + " , "; type = type + chk2 + " x " + URTEXT[6]; } if ((!startTag) || (days == 0) || (pers == 0)) window.location.href = "anfrage.html"; else window.location.href = "/js/anfrage.php?" + "SDAY="+date2String(startTag)+"&" + "EDAY="+date2String(addDays(startTag, days))+"&" + "PERS="+(pers)+"&" + "CHLDS="+(chk1+chk2)+"&" + "CTYPE=\""+type+"\""; } /***************************************************************/ /* Lokale Variablen */ /***************************************************************/ var jetzt = new Date(); var anzJahr = getYear(jetzt); var anzMonat = getMonth(jetzt); var heute = new Date(anzJahr, anzMonat, getDay(jetzt)); var startTag = null; var cinfo = new Array(); var menutmo = null; var helptmo = null; var nseltmo = null; var nselobj = null; /***************************************************************/ /* Lokale Funktionen */ /***************************************************************/ function getAufschlagIdx(date) { for (j = 0; j < URZAUFSCHL.length; j++) { if (URZAUFSCHL[j][0].length != 11) continue; if (URZAUFSCHL[j][0].charAt(2) != '.') continue; if (URZAUFSCHL[j][0].charAt(5) != '-') continue; if (URZAUFSCHL[j][0].charAt(8) != '.') continue; var von = new Date(getYear(date), URZAUFSCHL[j][0].substr(3,2)-1, URZAUFSCHL[j][0].substr(0,2)); var bis = new Date(getYear(date), URZAUFSCHL[j][0].substr(9,2)-1, URZAUFSCHL[j][0].substr(6,2)); if (date >= von && date <= bis) return j; } return -1; } /***************************************************************/ function isTagBelegt(day) { var belegt = 0; /* 1: morgens, 2: abends, 3: ganz */ if (typeof URBELEGT == "undefined") return belegt; for (k = 0; k < URBELEGT.length; k++) { if (URBELEGT[k].length != 21) continue; if (URBELEGT[k].charAt( 2) != '.') continue; if (URBELEGT[k].charAt( 5) != '.') continue; if (URBELEGT[k].charAt(10) != '-') continue; if (URBELEGT[k].charAt(13) != '.') continue; if (URBELEGT[k].charAt(16) != '.') continue; var von = new Date(URBELEGT[k].substr( 6,4), URBELEGT[k].substr( 3,2)-1, URBELEGT[k].substr( 0,2)); var bis = new Date(URBELEGT[k].substr(17,4), URBELEGT[k].substr(14,2)-1, URBELEGT[k].substr(11,2)); if (day.getTime() == von.getTime()) if (belegt == 1) belegt = 3; else belegt = 2; else if (day.getTime() == bis.getTime()) if (belegt == 2) belegt = 3; else belegt = 1; else if (day > von && day < bis) belegt = 3; if (belegt == 3) break; } return belegt; } /***************************************************************/ /* Lokale Callback-Funktionen */ /***************************************************************/ function KalenderRefresh() { var days = getQuestValue("questdays"); var pers = getQuestValue("questpers"); setObjHTML("urdtitle", URMNAMES[anzMonat]+" "+anzJahr); for (i = 1; i <= 42; i++) { var obj = document.getElementById("C"+i); setObjHTML(obj, KalenderZellenText(i)); obj.title = KalenderZellenToolTip(i); // obj.className = KalenderZellenKlasse(i, "off"); KalenderZellenSetzeBG(i, "off"); if (i == 29) if (obj.innerHTML == "") document.getElementById("R5").style.display = "none"; else document.getElementById("R5").style.display = ""; if (i == 36) if (obj.innerHTML == "") document.getElementById("R6").style.display = "none"; else document.getElementById("R6").style.display = ""; } var von = "xx.xx.xxxx"; var bis = "xx.xx.xxxx"; if (startTag) von = date2String(startTag); if (days > 0 && startTag) bis = date2String(addDays(startTag, days)); setObjHTML("urdzraum", von+" - "+bis); if (nselobj != "questchk1") { obj = document.getElementById("questchk1"); obj["bdisabled"] = (pers == 0); obj.className = (pers == 0) ? "bdisabled" : "bup"; } if (nselobj != "questchk2") { obj = document.getElementById("questchk2"); obj["bdisabled"] = (pers == 0); obj.className = (pers == 0) ? "bdisabled" : "bup"; } if (pers == 0) { if (getQuestValue("questchk1") > 0) setQuestValue("questchk1", 0); if (getQuestValue("questchk2") > 0) setQuestValue("questchk2", 0); } obj = document.getElementById("urdzstat"); if (!startTag) { obj.className = URZSTAT[0][0]; setAnimatedObj(obj, URZSTAT[0][1], URZSTAT[0][2], URZSTAT[0][3]); return; } if (days <= 0) { obj.className = URZSTAT[1][0]; setAnimatedObj(obj, URZSTAT[1][1], URZSTAT[1][2], URZSTAT[1][3]); return; } if (pers <= 0) { obj.className = URZSTAT[2][0]; setAnimatedObj(obj, URZSTAT[2][1], URZSTAT[2][2], URZSTAT[2][3]); return; } var bels = 0; for (l = 0; l <= days; l++) { var day = new Date(addDays(startTag,l)); var bel = isTagBelegt(day); if ((bel == 1 && l != 0) || (bel == 2 && l != days) || (bel == 3)) bels++; } if (bels > 0 && bels == days) { obj.className = URZSTAT[3][0]; setAnimatedObj(obj, URZSTAT[3][1], URZSTAT[3][2], URZSTAT[3][3]); } else if (bels > 0) { obj.className = URZSTAT[4][0]; setAnimatedObj(obj, URZSTAT[4][1], URZSTAT[4][2], URZSTAT[4][3]); } else { obj.className = URZSTAT[5][0]; setAnimatedObj(obj, URZSTAT[5][1], URZSTAT[5][2], URZSTAT[5][3]); } } /***************************************************************/ function KalenderTag(cid) { var adate = new Date(anzJahr, anzMonat, 1); var tagW = adate.getDay(); if (tagW == 0) tagW = 6; else tagW -= 1; var days = getMonthDays(anzJahr, anzMonat); var minc = days+tagW; if (minc%7 != 0) minc += (7-minc%7); if (cid <= tagW) return -1; if (cid-tagW > days) if (cid <= minc) return -2; else return -3; return (cid-tagW); } /***************************************************************/ function KalenderTagBelegt(cid) { var tag = KalenderTag(cid); if (tag < 0) return 0; var day = new Date(anzJahr, anzMonat, tag); return isTagBelegt(day); } /***************************************************************/ function KalenderZellenKlassen(cid, norm) { var tag = KalenderTag(cid); if (tag < 0) return [ "none", "none" ]; if (norm == "on") return [ norm, norm ]; var klasse = norm; if (URUSEZAUFSCHL) { var idx = getAufschlagIdx(new Date(anzJahr, anzMonat, tag)); if (idx != -1) { idx = URZAUFSCHL[idx][1]; if (idx >= 0 && idx < URSTYLES.length) klasse = URSTYLES[idx]; else klasse = norm; } else klasse = norm; } var day = new Date(anzJahr, anzMonat, tag); var bel = KalenderTagBelegt(cid); if (startTag) { var days = getQuestValue("questdays"); var von = startTag; var bis = addDays(startTag, days); if (day.getTime() == von.getTime()) { if (bel == 1) // morgens return [ "belegt", "akt" ]; if (bel == 2) // abends return [ klasse, "aktbel" ]; if (bel == 3) // ganz return [ "belegt", "aktbel" ]; return [ klasse, "akt" ]; } if (day.getTime() == bis.getTime()) { if (bel == 1) // morgens return [ "aktbel", klasse ]; if (bel == 2) // abends return [ "akt", "belegt" ]; if (bel == 3) // ganz return [ "aktbel", "belegt" ]; return [ "akt", klasse ]; } if (day > von && day < bis) { if (bel == 1) // morgens return [ "aktbel", "akt" ]; if (bel == 2) // abends return [ "akt", "aktbel" ]; if (bel == 3) // ganz return [ "aktbel", "aktbel" ]; return [ "akt", "akt" ]; } } if (bel == 1) // morgens return [ "belegt", klasse ]; if (bel == 2) // abends return [ klasse, "belegt" ]; if (bel == 3) // ganz return [ "belegt", "belegt" ]; return [ klasse, klasse ]; } /***************************************************************/ function KalenderZellenText(cid) { var tag = KalenderTag(cid); if (tag == -1) return "
"; if (tag == -2) return "
"; if (tag == -3) return ""; return (tag); } /***************************************************************/ function KalenderZellenToolTip(cid) { var tag = KalenderTag(cid); if (tag < 0) return ""; if (KalenderTagBelegt(cid) > 1) return URTTIPSS[3]; if (URUSEZAUFSCHL) { var idx = getAufschlagIdx(new Date(anzJahr, anzMonat, tag)); if (idx != -1) { idx = URZAUFSCHL[idx][1]; if (idx >= 0 && idx < URSTYLES.length) return URTTIPSD[idx]; else return ""; } else return ""; } return ""; } /***************************************************************/ function KalenderZellenSetzeBG(cid, norm) { var obj = document.getElementById("C"+i); var klassen = KalenderZellenKlassen(i, norm); setGradientBackground(obj, URBGCOLORS[klassen[0]], URBGCOLORS[klassen[1]]); } /***************************************************************/ function KalenderSetMenuSel() { var msel = document.getElementById("urcmenusel"); var year = getYear(jetzt); var month = getMonth(jetzt); for (i = 0; i < 25; i++) { if (year == anzJahr && month == anzMonat) { msel.options[i].selected = true; break; } month += 1; if (month == 12) { month = 0; year += 1; } } } /***************************************************************/ function KalenderSetHelpPos() { var help = document.getElementById("urdhelp"); var elem = document.getElementById("urdmain"); getObjPos(elem, elem.offsetWidth - help.offsetWidth - 4, 4); help.style.position = "absolute"; help.style.top = TOP +'px'; help.style.left = LEFT+'px'; help.style.visibility = "visible"; } /***************************************************************/ function KalenderShowMenu() { var elem = (URUSEBUTTONS) ? document.getElementById("BR") : document.getElementById("urdtitle"); var menu = document.getElementById("urpopmenu"); getObjPos(elem, elem.offsetWidth + 2, 0); /* KalenderSetMenuSel(); */ menu.style.position = "absolute"; menu.style.top = TOP +'px'; menu.style.left = LEFT+'px'; menu.style.visibility = "visible"; if (menutmo != null) window.clearTimeout(menutmo); } /***************************************************************/ function KalenderShowHelp(text) { var elem = document.getElementById("urdmain"); var help = document.getElementById("urpophelp"); var htxt = document.getElementById("urhelptext"); setObjHTML(htxt, text); getObjPos(elem, (elem.offsetWidth - help.offsetWidth) / 2, 10); help.style.position = "absolute"; help.style.top = TOP +'px'; help.style.left = LEFT+'px'; help.style.visibility = "visible"; if (helptmo != null) window.clearTimeout(helptmo); } /***************************************************************/ function KalenderOnChangeNSel(name, lzeros) { var val = getQuestValue(name+"sel"); setQuestValue(name, val); setObjHTML(name, leadZeroS(val, lzeros)); if (name.match("^queststart")) KalenderSTSetzen(); preiseBerechnen(); } /***************************************************************/ function KalenderShowNSel(name, min, max, lzeros, setup) { var elem = document.getElementById(name); var nsel = document.getElementById("urpopnsel"); if (setup) { var amin = getObjAttr(name, "_MINSV_"); var amax = getObjAttr(name, "_MAXSV_"); if (typeof amin != "undefined") min = amin; if (typeof amax != "undefined") max = amax; var val = getQuestValue(name); var size = max-min+1; if (size > 5) size = 5; var html = ""; setObjHTML(nsel, html); } getObjPos(elem, (-1)*(nsel.offsetWidth) -1, -1); nsel.style.position = "absolute"; nsel.style.top = TOP +'px'; nsel.style.left = LEFT+'px'; nsel.style.visibility = "visible"; nselobj = name; if (nseltmo != null) window.clearTimeout(nseltmo); } /***************************************************************/ function KalenderHidePopup(popup) { var elem = document.getElementById(popup); elem.style.visibility = 'hidden'; var obj = null; if (popup == "urpopmenu") { obj = document.getElementById("BL"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; obj = document.getElementById("BR"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; } if (popup == "urpophelp") { obj = document.getElementById("urdhelp"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; } if (popup == "urpopnsel") { obj = document.getElementById("queststart_day"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; obj = document.getElementById("queststart_month"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; obj = document.getElementById("queststart_year"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; obj = document.getElementById("questdays"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; obj = document.getElementById("questpers"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; obj = document.getElementById("questchk1"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; obj = document.getElementById("questchk2"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; nselobj = null; } } /***************************************************************/ function KalenderHideMenu() { menutmo = setTimeout("KalenderHidePopup('urpopmenu')", 300); } /***************************************************************/ function KalenderHideHelp() { helptmo = setTimeout("KalenderHidePopup('urpophelp')", 300); } /***************************************************************/ function KalenderHideNSel(name) { if (nselobj != null) if (nselobj != name) return; nseltmo = setTimeout("KalenderHidePopup('urpopnsel')", 300); } /***************************************************************/ function KalenderLinksClick() { if (anzJahr == getYear(jetzt) && anzMonat == getMonth(jetzt)) return; anzMonat -= 1; if (anzMonat == -1) { anzMonat = 11; anzJahr -= 1; } KalenderSetMenuSel(); KalenderRefresh(); KalenderShowMenu(); doCount(1, ""); } /***************************************************************/ function KalenderRechtsClick() { if (anzJahr == getYear(jetzt)+2 && anzMonat == getMonth(jetzt)) return; anzMonat += 1; if (anzMonat == 12) { anzMonat = 0; anzJahr += 1; } KalenderSetMenuSel(); KalenderRefresh(); KalenderShowMenu(); doCount(1, ""); } /***************************************************************/ function KalenderMonatSetzen() { var val = getQuestValue("urcmenusel"); anzJahr = getYear(jetzt); anzMonat = getMonth(jetzt); for (i = 0; i < val; i++) { anzMonat += 1; if (anzMonat == 12) { anzMonat = 0; anzJahr += 1; } } KalenderSetMenuSel(); KalenderRefresh(); doCount(1, ""); } /***************************************************************/ function KalenderSTUpdate() { if (!startTag) return; var year = getYear(startTag); var month = getMonth(startTag)+1; var day = getDay(startTag); setQuestValue("queststart_year", leadZeroS(year,4)); setQuestValue("queststart_month", leadZeroS(month,2)); setQuestValue("queststart_day", leadZeroS(day,2)); setObjAttr("queststart_day", "_MAXSV_", getMonthDays(year, month-1)); if (year == getYear(jetzt)) setObjAttr("queststart_month", "_MINSV_", getMonth(jetzt)+1); else setObjAttr("queststart_month", "_MINSV_", 1); if (year == getYear(jetzt)+2) setObjAttr("queststart_month", "_MAXSV_", getMonth(jetzt)+1); else setObjAttr("queststart_month", "_MAXSV_", 12); } /***************************************************************/ function KalenderSTSetzen() { var year = getQuestValue("queststart_year"); var month = getQuestValue("queststart_month")-1; var day = getQuestValue("queststart_day"); if (year == getYear(jetzt)) if (month < getMonth(jetzt)) month = getMonth(jetzt); if (year == getYear(jetzt)+2) if (month > getMonth(jetzt)) month = getMonth(jetzt); if ((day == 0) || (month == -1) || (year == 0)) return; var days = getMonthDays(year, month); if (day > days) day = days; anzJahr = year; anzMonat = month; startTag = new Date(year, month, day); KalenderSTUpdate(); KalenderSetMenuSel(); } /***************************************************************/ function KalenderMOverDay(cid) { /* var obj = document.getElementById("C"+cid); obj.className = KalenderZellenKlasse(cid, "on"); */ } /***************************************************************/ function KalenderMOutDay(cid) { /* var obj = document.getElementById("C"+cid); obj.className = KalenderZellenKlasse(cid, "off"); */ } /***************************************************************/ function KalenderMClickDay(cid, dbl) { /* if (KalenderTagBelegt(cid) > 1) return; */ var tag = KalenderTag(cid); if (tag < 0) { return; } var clickTag = new Date(anzJahr, anzMonat, tag); if (!startTag || !URUSEADDDAYS || dbl) startTag = clickTag; else { var diff = dateDiff(startTag, clickTag); var days = getQuestValue("questdays"); var min = URQUEST[1][1]; if (diff > 0) { if (days == 0) setQuestValue("questdays", Math.max(diff, min)); else if (diff == days+1) setQuestValue("questdays", days+1); else if (diff == days) setQuestValue("questdays", Math.max(days-1, min)); else startTag = clickTag; } if (diff <= 0) { if (days == 0) { startTag = clickTag; setQuestValue("questdays", Math.max(Math.abs(diff), min)); } else if (diff == 0) { startTag = addDays(clickTag, 1); setQuestValue("questdays", Math.max(days-1, min)); } else if (diff == -1) { startTag = clickTag; setQuestValue("questdays", days+1); } else startTag = clickTag; } } KalenderSTUpdate(); KalenderRefresh(); preiseBerechnen(); } /***************************************************************/ function KalenderMDblClickDay(cid, dbl) { var obj = document.getElementById("C"+cid); checkDblClick(obj, dbl, function() { KalenderMClickDay(cid, false) }, function() { KalenderMClickDay(cid, true) }); } /***************************************************************/ function KalenderMOverButton(bid) { if (bid != "BR") { var obj = document.getElementById("BR"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; } if (bid != "BL") { var obj = document.getElementById("BL"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; } var obj = document.getElementById(bid); obj.className = "bdown"; KalenderShowMenu(); } /***************************************************************/ function KalenderMOutButton(bid) { KalenderHideMenu(); } /***************************************************************/ function KalenderMOverNSel(name, min, max, lzeros, setup) { if (name != "queststart_day") { obj = document.getElementById("queststart_day"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; } if (name != "queststart_month") { obj = document.getElementById("queststart_month"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; } if (name != "queststart_year") { obj = document.getElementById("queststart_year"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; } if (name != "questdays") { obj = document.getElementById("questdays"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; } if (name != "questpers") { obj = document.getElementById("questpers"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; } if (name != "questchk1") { obj = document.getElementById("questchk1"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; } if (name != "questchk2") { obj = document.getElementById("questchk2"); obj.className = obj["bdisabled"] ? "bdisabled" : "bup"; } var obj = document.getElementById(name); if (obj["bdisabled"]) return; obj.className = "bdown"; KalenderShowNSel(name, min, max, lzeros, setup); } /***************************************************************/ function KalenderMOutNSel(name) { KalenderHideNSel(name); } /***************************************************************/ function KalenderMOverHelp() { var obj = document.getElementById("urdhelp"); obj.className = "bdown"; KalenderHilfe(); } /***************************************************************/ function KalenderMOutHelp() { KalenderHideHelp(); } /***************************************************************/ function KalenderHilfe() { /* var obj = document.getElementById("urdhelp"); obj.className = "bup"; */ doCount(2, ""); if (startTag == null) { KalenderShowHelp(unescape(URHILFE[0])); return; } if (getQuestValue("questdays") == 0) { KalenderShowHelp(unescape(URHILFE[1])); return; } if (getQuestValue("questpers") == 0) { KalenderShowHelp(unescape(URHILFE[2])); return; } KalenderShowHelp(unescape(URHILFE[3])); } /***************************************************************/ /***************************************************************/ function preiseBerechnen() { if (URUSEZAUFSCHL) KalenderRefresh(); var days = getQuestValue("questdays"); var pers = getQuestValue("questpers"); var chk1 = getQuestValue("questchk1"); var chk2 = getQuestValue("questchk2"); if (days == 0 || pers == 0 || (!startTag && URUSEZAUFSCHLAG)) { resultLeer(); return; } var respersn = pers + chk1 + chk2; if (respersn > URMAXPERS) { resultLeer(); setObjHTML("respersn", respersn + " !!"); return; } var tagespreis = URGRUNDP; var respreis = 0; if (pers > URGRDPERS) tagespreis += (pers-URGRDPERS)*URMEHRP; if (chk1 > 0) tagespreis += chk1*URKINDK1; if (chk2 > 0) tagespreis += chk2*URKINDK2; if (URUSEZAUFSCHL && startTag) { for (i = 0; i < days; i++) { var day = addDays(startTag, i); var idx = getAufschlagIdx(day); var aufpreis = 0; if (idx >= 0) { aufpreis += URZAUFSCHL[idx][2]; if (pers > URGRDPERS) aufpreis += (pers-URGRDPERS)*URZAUFSCHL[idx][3]; aufpreis += chk1*URZAUFSCHL[idx][4]; aufpreis += chk2*URZAUFSCHL[idx][5]; } respreis += tagespreis + aufpreis; } } else respreis = tagespreis * days; if (URUSEKAUFSCHL) if (days >= 1 && days <= URKAUFSCHL.length) respreis = respreis + URKAUFSCHL[days-1]; var resprspt = respreis / (respersn * days); respreis = respreis.toFixed(2); resprspt = resprspt.toFixed(2); setObjHTML("respersn", respersn); setObjHTML("respreis", respreis + URWAEHRUNG); setObjHTML("resprspt", resprspt + URWAEHRUNG); if (!URCOUNTINFO) return; if (!startTag || days <= 0 || respersn <= 0) return; var von = date2String(startTag); /* var bis = date2String(addDays(startTag, days)); */ var inf = von + ":" + days + ":" + respersn; for (i = 0; i < cinfo.length; i++) if (inf == cinfo[i]) return; cinfo.push(inf); doCount(0, inf); } /***************************************************************/ /***************************************************************/ function SetupConfig() { if (navigator.cookieEnabled) { infs = document.cookie.split(";"); for (i = 0; i < infs.length; i++) if (infs[i] == "urcmod=off") URUSECOUNTER = 0; } } /***************************************************************/ function OnLoadSetup() { findCSSPrefix(); KalenderSetHelpPos(); KalenderSTUpdate(); if (URUSESTVALS) preiseBerechnen(); else doCount(0, ""); KalenderRefresh(); } /***************************************************************/ /* Lokale Funktionen */ /***************************************************************/ function KalenderErzeugen() { document.write(""); if (URUSEBUTTONS) { document.write(""); } document.write(""); if (URUSEBUTTONS) { document.write(""); } document.write(""); document.write(""); for (i = 0; i < 7; i++) if ((i == 0) || (i == 6)) document.write(""); else document.write(""); document.write(""); for (row = 0; row < 6; row++) { document.write(""); for (col = 1; col <= 7; col++) { document.write(""); } document.write(""); } document.write("
«"+URMNAMES[anzMonat]+" "+anzJahr+"»
"+URWDAYS[i]+""+URWDAYS[i]+"
"); document.write(KalenderZellenText(row*7+col)+"
"); } /***************************************************************/ function KalenderInfoErzeugen() { document.write("
Hilfe
"); document.write("
Kalenderlegende
"); document.write(""); for (i = 0; i < URLEGEND.length; i++) document.write(""); document.write("
   "+URLEGEND[i][1]+"
"); document.write("
"+URTEXT[1]+"
"); document.write("
xx.xx.xxxx - xx.xx.xxxx
"); document.write("
"); if (!URANIMSTATUS) document.write("("+URZSTAT[0][1]+")
"); else document.write(URZSTAT[0][1]+""); } /***************************************************************/ function TitelZeileErzeugen(titel) { document.write(""+titel+""); } /***************************************************************/ function DatumsFrageZeileErzeugen(name, frage, svday, svmonth, svyear) { document.write(""+frage+""); document.write(""); document.write(""); document.write(svyear); document.write(""); /* document.write("."); */ document.write(""); document.write(svmonth); document.write(""); /* document.write("."); */ document.write(""); document.write(svday); document.write(""); document.write(""); } /***************************************************************/ function FrageZeileErzeugenNSel(name, frage, antwort_min, antwort_max, startval, needed) { document.write(""+frage+""); document.write(""); document.write("
"); document.write(startval); document.write("
"); } /***************************************************************/ function FrageZeileErzeugenNSelInp(name, frage, antwort_min, antwort_max, startval, needed) { document.write(""+frage+""); document.write(""); document.write(""); } /***************************************************************/ function FrageZeileErzeugen(name, frage, antwort_min, antwort_max, startval, needed) { if (URUSENUMSEL) { FrageZeileErzeugenNSel(name, frage, antwort_min, antwort_max, startval, needed); return; } document.write(""+frage+""); /* document.write(""); if (needed) document.write("