form           = {}
form.callbacks = []

form.init      = function(context) {
    while (form.callbacks.length > 0) {
        form.callbacks[0]();
        form.callbacks.shift();
    }

    // Callback Array zurücksetzen
    form.callbacks = []
}

form.extend = {}

/* Pflichtfeld rot markieren */
form.extend.mandatory = {}
form.extend.mandatory.blur = function() {
    if ($(this).val().length == 0) {
        $(this).animate({
            backgroundColor: "#FFB9B9"
        }, 1000);
    } else {
        $(this).css('backgroundColor', '');
    }
}

/* Overlabel Funktion */
form.extend.overlabel = {}
form.extend.overlabel.init = function(input) {
    var label = $("label." + $(input).attr("id"));
    var input = $(input);

    label.bind("click", function() {
        form.extend.overlabel.click(label, input);
    });

    input.bind("blur",  form.extend.overlabel.blur).blur();
    input.bind("focus", form.extend.overlabel.focus);
}
form.extend.overlabel.blur = function() {
    var input = $(this);
    var label = $("label." + input.attr("id"));

    if ($(this).val().length == 0) {
        label.show();
        input.addClass('form-overlabel-active');

        label.css('padding-left',     input.css('padding-left'));
        label.css('padding-right',    input.css('padding-right'));
        label.css('padding-top',      input.css('padding-top'));
        label.css('padding-bottom',   input.css('padding-bottom'));

        label.css('margin-left',      input.css('margin-left'));
        label.css('margin-right',     input.css('margin-right'));
        label.css('margin-top',       input.css('margin-top'));
        label.css('margin-bottom',    input.css('margin-bottom'));

    } else {
        label.hide();
        input.removeClass('form-overlabel-active');
    }
}
form.extend.overlabel.focus = function() {
    var input = $(this);
    var label = $("label." + input.attr("id"));

    if (!input.attr('readonly') && !input.attr('disabled')) {
        label.hide();
        input.removeClass('form-overlabel-active');
    }
}
form.extend.overlabel.click = function(label, input) {
    var label = $(label);
    var input = $(input);

    if (!input.attr('readonly') && !input.attr('disabled')) {
        label.hide();
        input.focus();
        input.removeClass('form-overlabel-active');
    }
}
$(document).ready(form.init);