function encode_utf8( string ) { return unescape( encodeURIComponent( string ) ); } function decode_utf8( string ) { return decodeURIComponent( escape( string ) ); }// Allgemein var Kalender_Variablenname; // Liste der HTML-Elemente an die Inhalte ins "value"-Attribut zurueckgegeben werden muessen var Kalender_htmltags_tag = new Array("INPUT"); var Kalender_htmltags_value = new Array("value"); // Liste der Kalendermonate in Array speichern var Kalender_Monate = new Array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'); // Einblenden von Kalender // Variablen: // - Linkobjekt (parallel dazu wird der Kalender im DOM aufgebaut) // - Rueckgabeobjekt-ID (ID des Elements in welches ein einzelnes Datum im VIO.Matrix-Format zurueckgegeben werden soll) function Kalender_showKalender( obj, returnobjid ) { // pruefen, ob die SAJAX-Funktion verfuegbar ist. Wenn nicht, dann keinen Kalender anzeigen if( typeof(window.sajax_content) == "function" ) { // Einblenden von Kalender, wenn dieser noch nicht existiert if( !document.getElementById("Kalender") ) { Kalender_createKalender(obj, returnobjid); } else { // Entfernen von Kalender wenn dieser existiert Kalender_Close(); } return false; } else { alert("SAJAX-Funktionen nicht gefunden!"); } return true; } // Aufbau von Kalender-Struktur in DOM function Kalender_createKalender( obj, returnobjid ) { // DIV erzeugen, welches den Kalender enthalten wird var Kalender_div = document.createElement("div"); var Kalender_div_id = document.createAttribute("id"); Kalender_div_id.nodeValue = "Kalender"; Kalender_div.setAttributeNode(Kalender_div_id); // Rahmen erzeugen obj.parentNode.appendChild(Kalender_div); // DIV erzeugen, welches die Info enthalten wird in welches Element das Ergebnis zurueckgegeben werden soll if( !document.getElementById("Kalender_returnobj") ) { var Kalender_returnobj_div = document.createElement("div"); var Kalender_returnobj_div_id = document.createAttribute("id"); Kalender_returnobj_div_id.nodeValue = "Kalender_returnobj"; Kalender_returnobj_div.setAttributeNode(Kalender_returnobj_div_id); obj.parentNode.appendChild(Kalender_returnobj_div); // Info ueber returnobjekt speichern document.getElementById("Kalender_returnobj").innerHTML = returnobjid; } // Aufruf von Kalenderblatt Kalender_callKalendermonth("Kalender"); } // Schließen von Kalender function Kalender_Close() { // Entfernen von Kalender Kalender_deleteElement(document.getElementById("Kalender")); Kalender_deleteElement(document.getElementById("Kalender_returnobj")); return false; } // Loeschen eines Elements function Kalender_deleteElement( obj ) { if ( obj ) { var obj_parent = obj.parentNode; if (obj_parent){ obj_parent.removeChild(obj); } } } // vorherigen Monat anzeigen function Kalender_showLastMonth() { if( document.getElementById("Kalender_Aktuell") ) { var aktuell = new Date(document.getElementById("Kalender_Aktuell").innerHTML); // aktuellen Monat auslesen. Da diese Monatszahl von JavaScript bereits 1 kleiner als die VIO.Matrix Monatszahl ist nichts dran aendern var last_month = aktuell.getMonth(); // Jahr 2000 Problem beheben, falls erforderlich var last_year = aktuell.getYear(); if(last_year < 1900) { last_year = last_year + 1900; } if(last_month < 0) { last_month = 11; last_year = last_year - 1; } if(last_month > 11) { last_month = 0; last_year = last_year + 1; } // Aufruf von Kalenderblatt Kalender_callKalendermonth("Kalender_Wochen", last_month + "/1/" + last_year); } return false; } // vorherigen Monat anzeigen function Kalender_showNextMonth() { if( document.getElementById("Kalender_Aktuell") ) { var aktuell = new Date(document.getElementById("Kalender_Aktuell").innerHTML); // aktuellen Monat auslesen und um 2 erhoehen um das VIO.Matrix-Datum des naechsten Monats zu treffen. var next_month = aktuell.getMonth() + 2; // Jahr 2000 Problem beheben, falls erforderlich var next_year = aktuell.getYear(); if(next_year < 1900) { next_year = next_year + 1900; } if(next_month > 12) { next_month = 1; next_year = next_year + 1; } // Aufruf von Kalenderblatt Kalender_callKalendermonth("Kalender_Wochen", next_month + "/1/" + next_year); } return false; } // Funktion zum Aktualisieren des Jahres function Kalender_showJahr( obj ) { if( obj && obj.value > 0 && obj.value.length == 4 ) { var aktuell = new Date(document.getElementById("Kalender_Aktuell").innerHTML); // aktuellen Monat auslesen und um 1 erhoehen um das VIO.Matrix-Datum des aktuellen Monats zu treffen. var aktuell_month = aktuell.getMonth() + 1; // Kalender aktualisieren Kalender_callKalendermonth("Kalender", aktuell_month + "/1/" + obj.value); } return true; } // Kalenderblatt eines Monats aufrufen // Variablen: // - Objekt-ID in die Kalender eingetragen werden soll // - uebergebenes Datum als JavaScript-Datum MM/DD/YYYY (optional) function Kalender_callKalendermonth( objid, date ) { if( objid ) { // ermitteln, welche Monat angezeigt werden soll var viodate = ""; if( date ) { var dateobj = new Date(date); // VIO.Matrix-Monatszahl liegt 1 Zaehler vor JavaScript-Monatszahl, also 1 Addieren var viodate_month = dateobj.getMonth() + 1; // Jahr 2000 Problem beheben var viodate_year = dateobj.getYear(); if(viodate_year < 1900) { viodate_year = viodate_year + 1900; } if(viodate_month > 12) { viodate_month = 0; viodate_year = viodate_year + 1; } viodate = "01." + viodate_month + "." + viodate_year; document.getElementById("Kalender_Aktuell").innerHTML = viodate_month + "/1/" + viodate_year; if(document.getElementById("Kalender_Aktuell_Ausgabe")) { // Monatszahl um 0 ergaenzen, wenn sie 1stellig ist if( viodate_month < 10 ) { viodate_month = "0" + viodate_month; } // Ausgabeformat des aktuellen Kalendermonats bestimmen var Kalender_Aktuell_Ausgabe = '[MONATSNAME] [JAHR]'; Kalender_Aktuell_Ausgabe = Kalender_Aktuell_Ausgabe.replace(/\[MONAT\]/g, viodate_month); Kalender_Aktuell_Ausgabe = Kalender_Aktuell_Ausgabe.replace(/\[MONATSNAME\]/g, Kalender_Monate[viodate_month-1]); Kalender_Aktuell_Ausgabe = Kalender_Aktuell_Ausgabe.replace(/\[JAHR\]/g, viodate_year); Kalender_Aktuell_Ausgabe = Kalender_Aktuell_Ausgabe.replace(/\[JAHR_2\]/g, viodate_year); Kalender_Aktuell_Ausgabe = Kalender_Aktuell_Ausgabe.replace(/\[JAHR_EINGABEFELD\]/g, ""); document.getElementById("Kalender_Aktuell_Ausgabe").innerHTML = Kalender_Aktuell_Ausgabe; } } // Datum beschraenken (wenn Array angegeben wurde) // Werte per SAJAX uebergeben var Kalender_Datumsbereiche = ""; if( typeof Kalender_erlaubtesDatum != "undefined" ) { Kalender_Datumsbereiche = Kalender_Datumsbereiche + "&Kalender_Datumerlaubt=" + Kalender_erlaubtesDatum.length; for(var k = 0;k < Kalender_erlaubtesDatum.length;k++) { Kalender_Datumsbereiche = Kalender_Datumsbereiche + "&Kalender_Datumerlaubt_" + k + "=" + Kalender_erlaubtesDatum[k]; } } Kalender_Variablenname = "Kalender_erlaubtesDatum_" + Kalender_getReturnObjID(); if( isdefined(Kalender_Variablenname) ) { eval("var Kalender_erlaubtesDatum_temp = " + Kalender_Variablenname); Kalender_Datumsbereiche = Kalender_Datumsbereiche + "&Kalender_Datumerlaubt=" + Kalender_erlaubtesDatum_temp.length; for( var k = 0; k < Kalender_erlaubtesDatum_temp.length; k++ ) { Kalender_Datumsbereiche = Kalender_Datumsbereiche + "&Kalender_Datumerlaubt_" + k + "=" + Kalender_erlaubtesDatum_temp[k]; } } var Kalender_Datumsbereiche2 = ""; if( typeof Kalender_erlaubterDatumbereich != "undefined" ) { Kalender_Datumsbereiche2 = Kalender_Datumsbereiche2 + "&Kalender_Datumsbereicherlaubt=" + Kalender_erlaubterDatumbereich.length; for( var k = 0; k < Kalender_erlaubterDatumbereich.length; k++ ) { Kalender_Datumsbereiche2 = Kalender_Datumsbereiche2 + "&Kalender_Datumsbereicherlaubt_" + k + "=" + Kalender_erlaubterDatumbereich[k]; } } Kalender_Variablenname = "Kalender_erlaubterDatumbereich_" + Kalender_getReturnObjID(); if( isdefined(Kalender_Variablenname) ) { eval("var Kalender_Datumsbereicherlaubt_temp = " + Kalender_Variablenname); Kalender_Datumsbereiche2 = Kalender_Datumsbereiche2 + "&Kalender_Datumsbereicherlaubt=" + Kalender_Datumsbereicherlaubt_temp.length; for( var k = 0; k < Kalender_Datumsbereicherlaubt_temp.length; k++ ) { Kalender_Datumsbereiche2 = Kalender_Datumsbereiche2 + "&Kalender_Datumsbereicherlaubt_" + k + "=" + Kalender_Datumsbereicherlaubt_temp[k]; } } var Kalender_Startdatum = ""; if( typeof Kalender_StartDatum_Datum != "undefined" ) { if( Kalender_StartDatum_Datum ) { Kalender_Startdatum = "&Kalender_Startdatum=" + Kalender_StartDatum_Datum; } } Kalender_Variablenname = "Kalender_StartDatum_Datum_" + Kalender_getReturnObjID(); if( isdefined(Kalender_Variablenname) ) { eval("var Kalender_Startdatum_temp = " + Kalender_Variablenname); Kalender_Startdatum = "&Kalender_Startdatum=" + Kalender_Startdatum_temp; } if( typeof Kalender_StartDatum_FeldID != "undefined" ) { if( document.getElementById(Kalender_StartDatum_FeldID) ) { Kalender_Startdatum = "&Kalender_Startdatum=" + document.getElementById(Kalender_StartDatum_FeldID).value; } } Kalender_Variablenname = "Kalender_StartDatum_FeldID_" + Kalender_getReturnObjID(); if( isdefined(Kalender_Variablenname) ) { eval("var Kalender_Startdatum_temp = " + Kalender_Variablenname); Kalender_Startdatum = "&Kalender_Startdatum=" + Kalender_Startdatum_temp; } var Kalender_Format = ""; Kalender_Variablenname = "Kalender_Format_" + Kalender_getReturnObjID(); if( isdefined(Kalender_Variablenname) ) { eval("var Kalender_Format_temp = " + Kalender_Variablenname); Kalender_Format = "&Kalender_Format=" + Kalender_Format_temp; } // Kalender per SAJAX laden sajax_content("Kalender",objid,"get=" + objid + "&Kalender_aktuell=" + viodate + Kalender_Datumsbereiche + Kalender_Datumsbereiche2 + Kalender_Startdatum + Kalender_Format,"de"); } } function isdefined( variable) { return (typeof(window[variable]) == "undefined")? false: true; } // einzelnen Tag aus Kalender auswaehlen und an Content-Objekt uebergeben function Kalender_TagAuswahl( obj ) { if( obj ) { var returnvalue = "TT.MM.JJJJ"; // einzutragendes Datum ermitteln (steht in title des Objektes) if( obj.title ) { returnvalue = obj.title; } // ID des Rueckgabeobjekts auslesen if( Kalender_getReturnObjID() ) { var returnobjid = Kalender_getReturnObjID(); // Typ des Rueckgabeobjekts ermitteln und entsprechend den Rueckgabewert uebergeben if( document.getElementById(returnobjid) ) { Kalender_returnvalue(document.getElementById(returnobjid),returnvalue); // Datumsformat pruefen, falls die Funktion verfuegbar ist if( typeof(window.checkValueDate) == "function" ) { checkValueDate(document.getElementById(returnobjid)); } /* // Projektspezifische Funktionen aufrufen (muss in config angegeben werden) #SET splitid += 1 #ENDSET #SPLIT split_id = "#INSERT_SP_VAR_splitid!" splittext = "" splitcontent = "0" pretext = "" posttext = "" emptytext = "" #ENDSPLIT #INSERT_ST_#{#INSERT_SP_VAR_splitid!}_ZEILE */ } } } return false; } // einzelne Kalenderwoche aus Kalender auswaehlen function Kalender_KalenderwocheAuswahl( obj ) { if( obj ) { var returnvalue = "MM"; // einzutragendes Datum ermitteln (steht in title des Objektes) if( obj.title ) { returnvalue = obj.title; } // ID des Rueckgabeobjekts auslesen if( Kalender_getReturnObjID() ) { var returnobjid = Kalender_getReturnObjID(); // Typ des Rueckgabeobjekts ermitteln und entsprechend den Rueckgabewert uebergeben if( document.getElementById(returnobjid) ) { Kalender_returnvalue(document.getElementById(returnobjid),returnvalue); // Projektspezifische Funktionen aufrufen (muss in config angegeben werden) /* #SET splitid += 1 #ENDSET #SPLIT split_id = "#INSERT_SP_VAR_splitid!" splittext = "" splitcontent = "0" pretext = "" posttext = "" emptytext = "" #ENDSPLIT #INSERT_ST_#{#INSERT_SP_VAR_splitid!}_ZEILE */ } } } return false; } // pruefen, welchen Typ ein HTML-Element hat und Rueckgabe wie in dieses Element Inhalte uebergeben werden koennen // Variablen: // - Objekt, welches geprueft werden soll function Kalender_getHTMLTagType( obj ) { var returnvalue = "innerHTML"; for ( var i = 0; i < Kalender_htmltags_tag.length; i++ ) { if( obj.tagName == Kalender_htmltags_tag[i] ) { returnvalue = Kalender_htmltags_value[i]; } } return returnvalue; } // uebergeben von Inhalten an HTML-Element function Kalender_returnvalue( obj, wert ) { if( obj && wert ) { if( Kalender_getHTMLTagType(obj) == "value" ) { obj.value = wert; } if( Kalender_getHTMLTagType(obj) == "innerHTML" ) { obj.innerHTML = wert; } } } // Funktion zum Ermitteln der Returnobjekt-ID function Kalender_getReturnObjID() { if( document.getElementById("Kalender_returnobj") ) { return document.getElementById("Kalender_returnobj").innerHTML; } return false; } function Kalender_Entertaste(e) { var charCode; if( e && e.which ){ charCode = e.which; } else if( window.event ){ e = window.event; charCode = e.keyCode; } if( charCode == 13 ) { return false; } return true; } // make the specified div a windowed control in IE6 // this masks an iframe (which is a windowed control) onto the div, // turning the div into a windowed control itself function Kalender_IE6FIX( p_div ) { var is_ie6 = document.all && (navigator.userAgent.toLowerCase().indexOf("msie 6.") != -1); if ( is_ie6 ) { var html = ""; if (p_div) p_div.innerHTML += html; // force refresh of div var olddisplay = p_div.style.display; p_div.style.display = 'none'; p_div.style.display = olddisplay; }; }