/**
 * Systemnachricht
 *
 * @param string|array message Nachrichten die ausgegeben werden sollen
 * @param object question message ist eine Frage und in question stehen die Funktionen zu den Antworten
 */
function system_message(message, question)
{
    if (!$defined(message)) {
        return false;
    }

    if (!$defined(question)) {
        var question = false;
    }

    var msg = '';
    
    if ($type(message) == "array")
    {
        message.each(function(a){
            msg += a+"<br />";
        });

        msg = msg.trim();
    }
    else
    {
        msg = message;
    }

    sysmsg_open(msg, question)
}

/**
 * Systemnachrichtfenster oeffnen
 *
 * @param string msg Nachricht
 * @param object|boolean question msg ist eine Frage und in question stehen die Funktionen zu den Antworten
 */
function sysmsg_open(msg, question)
{
    if (!$defined(question)) {
        var question = false;
    }
    
    var body    = $$("body")[0];
    var win     = $("sysmsg");
    var warning = win.getElement("div[class^=warning]");
    var buttons = win.getElement("div[class^=buttons]");
    var yes     = buttons.getElement("input[name=yes]");
    var no      = buttons.getElement("input[name=no]");

    if (!win.hasClass("hidden")) {
        return false;
    }

    win.getElement("div[class=message]").set("html", msg);

    win.removeClass("hidden");

    win.setStyles({
        'left':     ((body.getSize().x - win.getSize().x) / 2) + body.getScroll().x,
        'top':      ((body.getSize().y - win.getSize().y) / 2) + body.getScroll().y
    });

    if (question)
    {
        buttons.removeClass("hidden");

        yes.addEvent("click", question.yes);
        no.addEvent("click", question.no);
    }
    else
    {
        warning.removeClass("hidden");
        
        sysmsg_close.delay(2000);
    }
}

/**
 * Systemnachrichtfenster schliessen
 *
 * @param boolean close_bigwall TRUE Wand killen oder FALSE nicht killen
 */
function sysmsg_close(close_bigwall)
{
    var win     = $("sysmsg");
    var buttons = win.getElement("div[class^=buttons]");
    var warning = win.getElement("div[class^=warning]");
    var yes     = buttons.getElement("input[name=yes]");
    var no      = buttons.getElement("input[name=no]");

    if (win.hasClass("hidden")) {
        return false;
    }

    if (!$defined(close_bigwall)) {
        var close_bigwall = true;
    }
    
    win.addClass("hidden");
    warning.addClass("hidden");
    buttons.addClass("hidden");
    yes.removeEvent("click");
    no.removeEvent("click");

    if (window.wait_for_redirect) {
        redirect(window.wait_for_redirect);
    }
    else if (window.wait_for_refresh) {
        redirect(window.location.href);
    }
    else {
        if (close_bigwall) {
            http_request_state(0);
        }
    }
}

/**
 * Weiterleitung auf eine andere Adresse
 *
 * @param string url Adresse
 */
function redirect(url)
{
    window.location.href = url;
}

/**
 * Kalender anzeigen
 *
 * @param element elem Formularelement in dem das Datum eingetragen wird
 */
function display_calendar(elem)
{
    if (!$("calendar")) {
        new CalendarJS().init(elem);
    }
}

/**
 * Schutzmechanismus fuer Requests damit nicht mehrere Aktionen hintereinander gestartet werden
 *
 * @param integer state 1 = aktiv oder 0 = inaktiv
 */
function http_request_state(state)
{
    if (state == 1  &&  window.http_request_stat == state) {
        return true;
    }

    switch(state)
    {
        case 0:
            window.http_request_wall.dispose();
        break;

        case 1:
            var elem = new Element("div", {
                'styles': {
                    'position':         "absolute",
                    'top':              0,
                    'right':            0,
                    'left':             0,
                    'bottom':           0,
                    'height':           $$("body")[0].getScrollSize().y,
                    'background-color': '#FE9003',
                    'opacity':          0.5,
                    'text-align':       "left",
                    'width':            $$("body")[0].getScrollSize().x,
                    'z-index':          9999
                }
            });

            elem.appendChild(new Element("img", {
                'src':  "/img/loading.gif",
                'styles': {
                    'margin-top':   (($$("body")[0].getSize().y - 300) / 2) + $$("body")[0].getScroll().y,
                    'margin-left':  (($$("body")[0].getSize().x - 300) / 2) + $$("body")[0].getScroll().x
                }
            }));

            document.body.appendChild(elem);

            window.http_request_wall = elem;
        break;
    }

    window.http_request_stat = state;

    return false;
}
