<!--

	function SetAllCheckboxesToStatus(aCheckboxIds, bStatus) {
		for(iCounter = 0; iCounter < aCheckboxIds.length; iCounter++) {
			oElement			 = window.document.getElementById(aCheckboxIds[iCounter]);

			if(typeof(bStatus) != 'undefined') {
				oElement.checked	 = bStatus;
			} else {
				oElement.checked	 = !oElement.checked;
			}
		}
	}

	function SetAllRadiobuttonsToStatus(aRadiobuttonIds, bStatus) {
		for(iCounter = 0; iCounter < aRadiobuttonIds.length; iCounter++) {
			oElement			 = window.document.getElementById(aRadiobuttonIds[iCounter]);

			if(bStatus) {
				oElement.checked	 = bStatus;
			} else {
				oElement.checked	 = !oElement.checked;
			}
		}
	}

function JumpAfterTo(oElement, sId, iNumberOfCharacters) {
    /* Nach Eingabe von iNumberOfCharacters springt der Cursor zum Element sId; Vor Allem für PLZ-Felder/Orts-Felder gedacht
       Aufruf der Funktion durch:
           <... onKeyUp="JumpAfterTo(5, 'City');" ...>
    */
    if(iNumberOfCharacters == undefined || oElement.value.length >= iNumberOfCharacters) {
        window.document.getElementById(sId).focus();
    }
}

function SetSelectionsToNull(aSelectionIds) {
    for(iCounter = 0; iCounter < aSelectionIds.length; iCounter++) {
        window.document.getElementById(aSelectionIds[iCounter]).selectedIndex = 0;
    }
}

function SetSelectionsToNow(sDaySelectionId, sMonthSelectionId, sYearSelectionId, sHourSelectionId, sMinuteSelectionId) {
    oDate = new Date();
    window.document.getElementById(sDaySelectionId).selectedIndex    = oDate.getDate();
    window.document.getElementById(sMonthSelectionId).selectedIndex  = oDate.getMonth() + 1;
    window.document.getElementById(sMinuteSelectionId).selectedIndex = Math.round(oDate.getMinutes() / 15) % 4 + 1;
    window.document.getElementById(sHourSelectionId).selectedIndex   = oDate.getHours() + 1;

    for(iCounter = 0; iCounter < window.document.getElementById(sYearSelectionId).length; iCounter++) {
        if(window.document.getElementById(sYearSelectionId).options[iCounter].text == oDate.getFullYear()) {
            window.document.getElementById(sYearSelectionId).selectedIndex = iCounter;
            break;
        }
    }
}

function CountCharacters(sElementToCountId, sOutputElementId, iAllowedNumberOfCharacters) {
    oElementToCount = window.document.getElementById(sElementToCountId);
    oOutputElement  = window.document.getElementById(sOutputElementId);

    if(oElementToCount.type == 'text') {
        iAllowedNumberOfCharacters = iAllowedNumberOfCharacters || oElementToCount.maxLength;
    }

    oOutputElement.innerHTML = '(' + (iAllowedNumberOfCharacters - oElementToCount.value.length) + ')';
}

function LimitTextareaValue(oTextarea, iAllowedNumberOfCharacters) {
    if(oTextarea.value.length >= iAllowedNumberOfCharacters) {
        oTextarea.value = oTextarea.value.substr(0, iAllowedNumberOfCharacters);
    }
}

function ChangeDayValue(sDayElementId, sMonthElementId, sYearElementId) {
    oDayElement   = window.document.getElementById(sDayElementId);
    oMonthElement = window.document.getElementById(sMonthElementId);
    oYearElement  = window.document.getElementById(sYearElementId);
    iDay          = Number(oDayElement.value);
    iMonth        = Number(oMonthElement.value);
    iYear         = Number(oYearElement.value);
    aMonthDays    = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    aMonthNames   = new Array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember');

    if((iYear % 4 == 0 || iYear % 400 == 0) && iYear % 100 != 0) {
        aMonthDays[1] = 29;
    }

    if(oDayElement.length > aMonthDays[iMonth - 1] + 1) {
        if(Number(oDayElement.value) > aMonthDays[iMonth - 1]) {
            alert('Der ' + oDayElement.value + '. existiert im Monat ' + aMonthNames[iMonth - 1] + ' nicht.\nDer Tag wird auf den ' + aMonthDays[iMonth - 1] + '. zurückgesetzt.\nBitte korrigiere gegebenenfalls die Tagesauswahl.');
            oDayElement.selectedIndex = aMonthDays[iMonth - 1];
        }

        oDayElement.length = aMonthDays[iMonth - 1] + 1; // Die Auswahlboxen haben als ersten Wert ein leeres Feld, daher muss zur Tagesanzahl noch 1 addiert werden.
        oDayElement.focus();
    } else if(oDayElement.length < aMonthDays[iMonth - 1] + 1) {
        for(iCounter = oDayElement.length; iCounter <= aMonthDays[iMonth - 1]; iCounter++) {
            oNewOption = new Option(iCounter);
			oDayElement.options[oDayElement.length] = oNewOption;
        }
    }
}

function CheckAllCheckboxes(oTriggerCheckbox, aCheckboxes, sType) {
    /* Funktion setzt alle übergebenen Checkboxen bzw. alle Checkboxen des Formulars auf AN/AUS.
       sType bestimmt, ob per Id- oder Name-Attribut gearbeitet werden soll.
           aCheckboxes = new Array('', '', '');
           <input type="checkbox" ... onBlur="ChangeAllCheckboxes(aCheckboxes, sType);" ...>
    */
    if(typeof(sType) != 'undefined' && typeof(aCheckboxes) != 'undefined') {
        for(iCounter1 = 0; iCounter1 < aCheckboxes.length; iCounter1++) {
            switch(sType) {
                case 'Id':
                    window.document.getElementById(aCheckboxes[iCounter1]).checked = oTriggerElement.checked;
                    break;
                case 'Name':
                default:
                    window.document.oTriggerElement.form.elements[aCheckboxes[iCounter1]].checked = oTriggerElement.checked;
                    break;
            }
        }
    } else {
        for(iCounter1 = 0; iCounter1 < oTriggerCheckbox.form.elements.length; iCounter1++) {
            if(oTriggerCheckbox.form.elements[iCounter1].type == 'checkbox') {
                oTriggerCheckbox.form.elements[iCounter1].checked = oTriggerCheckbox.checked;
            }
        }
    }
}



function ChangeAllCheckboxes(oTriggerCheckbox, aCheckboxes, sType) {
    /* Funktion setzt alle übergebenen Checkboxen bzw. alle Checkboxen des Formulars auf den entgegengesetzten Zustand.
       sType bestimmt, ob per Id- oder Name-Attribut gearbeitet werden soll.
           aCheckboxes = new Array('', '', '');
           <input type="checkbox" ... onBlur="ChangeAllCheckboxes(aCheckboxes, sType);" ...>
    */
    if(typeof(sType) != 'undefined' && typeof(aCheckboxes) != 'undefined') {
        for(iCounter1 = 0; iCounter1 < aCheckboxes.length; iCounter1++) {
            switch(sType) {
                case 'Id':
                    window.document.getElementById(aCheckboxes[iCounter1]).checked = oTriggerElement.checked;
                    break;
                case 'Name':
                default:
                    window.document.oTriggerElement.form.elements[aCheckboxes[iCounter1]].checked = oTriggerElement.checked;
                    break;
            }
        }
    } else {
        for(iCounter1 = 0; iCounter1 < oTriggerCheckbox.form.elements.length; iCounter1++) {
            if(oTriggerCheckbox.form.elements[iCounter1].type == 'checkbox') {
                oTriggerCheckbox.form.elements[iCounter1].checked = !oTriggerCheckbox.form.elements[iCounter1].checked;
            }
        }
    }
}



function SetMasterCheckbox(oElement, sMasterCheckbox) {
    /* Funktion setzt die MasterCheckbox auf true, wenn alle anderen Checkboxen auch true sind, ansonsten auf false

       <input ... type="checkbox" name="Name der normalen Checkbox" onClick="SetMasterCheckbox(this, 'Id der MasterCheckbox');" ...>
    */

    var bAllCheckboxesChecked = true;
    var oElements             = oElement.form.elements;
    var oMasterCheckbox       = window.document.getElementById(sMasterCheckbox);

    for(iCounter1 = 0; iCounter1 < oElements.length; iCounter1++) {
        if(oElements[iCounter1].type == 'checkbox' && oElements[iCounter1].name != sMasterCheckbox && oElements[iCounter1].checked == false) {
            bAllCheckboxesChecked = false;
        }
    }

    oMasterCheckbox.checked = (bAllCheckboxesChecked == true) ? true : false;
}



function CheckEmailAddress(oElement) {
    /* Funktion prüft übergebenes Textfeld auf syntaktische Richtigkeit der E-Mail-Adresse
           <input type="text ... onBlur="CheckEmailAddress(this);" ...>
    */
    if(oElement.value != '' && oElement.value.search(sGeneralEmailSyntax) == -1) {
        alert();
        oElement.focus();
    }
}



/*
    Information:
    Wenn beiden Funktionen zusammen verwendet werden, sollte ValueCheckLength VOR ValueCheckCharacter verwendet werden.
*/
function ValueCheckCharacter(sId, sType) {
    /* Als Type kann L für Letter oder D für Digit übergeben werden.
       Der jeweilige Typ darf in der User-Eingabe NICHT vorkommen.

       Aufruf der Funktion durch:
           <... onKeyUp="ValueCheckCharacter(this.id, 'l');" ...>
    */

    switch(sType.toLowerCase()) {
        case 'd':
            sCharacterType = 'Ziffern';
            sRegExp        = /\D/gi;
            break;
        case 'l':
        default:
            sCharacterType = 'Buchstaben';
            sRegExp        = /\d/gi;
            break;
    }

    oElement                 = window.document.getElementById(sId);
    iPosOfWrongCharacter     = oElement.value.search(sRegExp);

    if(iPosOfWrongCharacter != -1) {
        sMessage = (sPersonalPronoun == 'Sie') ? 'Bitte geben Sie hier nur ' + sCharacterType + ' ein.' : 'Bitte gib hier nur ' + sCharacterType + ' ein.';
        alert(sMessage);
        oElement.value       = oElement.value.substr(0, iPosOfWrongCharacter);
    }
}



/*
    Information:
    Wenn beiden Funktionen zusammen verwendet werden, sollte ValueCheckLength VOR ValueCheckCharacter verwendet werden.
*/
function ValueCheckLength(sId, iAllowedLength) {
    /* Es wird die erlaubte Länge des Feldinhalts übergeben.

       Aufruf der Funktion durch:
           <... onKeyUp="ValueCheckLength(this.id, 20);" ...>
    */

    oElement           = window.document.getElementById(sId);
    if(oElement.value.length > iAllowedLength) {
        alert('Es können nicht mehr als ' + iAllowedLength + ' Zeichen eingegeben werden.');
        oElement.value = oElement.value.substr(0, iAllowedLength);
    }
}



function ConvertValueToNumber(oElement) {
    /* Konvertiert den Inhalt des Feldes in eine Zahl, sofern der Inhalt
       nicht NULL oder ein Leerstring ist und ausschließlich Ziffern enthält.

       Aufruf der Funktion durch:
           <... onBlur="ConvertValueToNumber(this.id);" ...>
    */

    if(!isNaN(oElement.value) && oElement.value != null && oElement.value != '') oElement.value = Number(oElement.value);
}
-->
