/***************************************************************/
/* 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 (
"21.06.2024-24.06.2024",
"19.09.2024-26.09.2024",
"17.10.2024-20.10.2024",
"31.01.2025-02.02.2025",
"04.04.2025-06.04.2025",
"27.12.2024-03.01.2025"
);
/***************************************************************/
/* 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("
"+URMNAMES[anzMonat]+" "+anzJahr+"
");
if (URUSEBUTTONS)
{
document.write("
»
");
}
document.write("
");
document.write("
");
for (i = 0; i < 7; i++)
if ((i == 0) || (i == 6))
document.write("