/*
    Jeka support
*/

Jeka = {
    tmsg: null,
    msg_name: "jeka-message",
    
    onLoad: function () {
        
        var el = $("top-menu2-text");
        if (el) {
            if (strip(el.innerHTML) != "")
                removeElementClass("top-menu2", "invisible");
        }

        forEach(getElementsByTagAndClassName("form"), function (form_node) {
            form_node.required = [];
            forEach(getElementsByTagAndClassName("input", null, form_node), function (node) {
                if (node.name.match(/req_/)) {
                    form_node.required.push(node);
                    addElementClass(node, "required");
                    insertSiblingNodesAfter(node, SPAN({"class":"required", "title":"Povinná položka"}, " *"));
                }
            });
            if (form_node.required.length)
                form_node.onsubmit = function () {
                    var missing = [];
                    for(var i=0; i < form_node.required.length; i++) {
                        if (strip(form_node.required[i].value) == "")
                            missing.push("Položka \""+form_node.required[i].name.replace(/^req_/, "")+"\" je povinná.");
                    }
                    if (missing.length) alert(missing.join("\n"));
                    return missing.length == 0;
                }
        });

        // set class to parent node
        forEach(getElementsByTagAndClassName("span","o"), function (node) {
            addElementClass(node.parentNode, "occupied");
        });
        forEach(getElementsByTagAndClassName("span","r"), function (node) {
            addElementClass(node.parentNode, "reservation");
        });
        /*
        forEach(["r", "a", "d", "c"], function (key) {
            forEach(getElementsByTagAndClassName("span", key), function (node) {
                addElementClass(node.parentNode, "reservation");
            });
        }); */

        forEach(getElementsByTagAndClassName("select","booking"), function (node) {
            connect(node, "onchange", Jeka, "onChangeBookingStatus");
            if (node.value == "o")
                addElementClass(node.parentNode, "occupied");
            else if (node.value == "r")
                addElementClass(node.parentNode, "reservation");
        });
    
        forEach(getElementsByTagAndClassName("area", "jeka-destinace"), function (node) {
            connect(node, "onclick", Jeka, "onClickDestinace"); 
//            if (node.onclick && node.href == "javascript:noop()")
//               connect(node, "onclick", Jeka, "onClickDestinace"); 
        });
        
        var elem = $(Jeka.msg_name);
        connect(elem, "onmouseout", Jeka, "onMouseOut");
        connect(elem, "onmouseover", Jeka, "onMouseOver");
    },
    
    onChangeBookingStatus: function (event) {
        var node = event.src();
        removeElementClass(node.parentNode, "reservation");
        removeElementClass(node.parentNode, "occupied");
        if (node.value == "o")
            addElementClass(node.parentNode, "occupied");        
        else if (node.value == "r")
            addElementClass(node.parentNode, "reservation");
    },
    
    destinace: function (links) {
        var body = [];
        forEach(links, function (link) {
            var href = link[0];
            var text = link.length > 1 ? link[1] : /[^\/]+$/.exec(link[0]);
            var title = link.length > 2 ? link[2] : '';
            body.push(LI(null, A({"href": href, "title": title}, text)));
            });
        replaceChildNodes(Jeka.msg_name, UL(null, body));
    },
    
    onClickDestinace: function (evt) {
        var elem = $(Jeka.msg_name);
        if (Jeka.tmsg) { clearTimeout(Jeka.tmsg); Jeka.tmsg = null; }
        setElementPosition(elem, new Coordinates(evt.mouse().page.x - 100,
                                                 evt.mouse().page.y - 20));
        showElement(elem);
    },
    
    onMouseOver: function (evt) {
        if (Jeka.tmsg) { clearTimeout(Jeka.tmsg); Jeka.tmsg = null; }
    },
    
    onMouseOut: function (evt) {
        if (Jeka.tmsg) { clearTimeout(Jeka.tmsg); Jeka.tmsg = null; }
        Jeka.tmsg = setTimeout('hideElement("'+Jeka.msg_name+'")', 1000);
    }

}

connect(window, "onload", Jeka, "onLoad");

