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;
};
}