/**
 * @require   MochiKit.js
 */

var btn = function() {
    forEach(getElementsByTagAndClassName(null, 'btn'), function(img) {
        if (!img.src) return;

        var src      = img.src;
        var over_src = img.src.replace(/^(.+)(\..+)$/, function() {
            return arguments[1] + '_on' + arguments[2];
        });
        IMG({ src: src });
        IMG({ src: over_src });

        connect(img, 'onmouseover', function(e) {
            img.src = over_src;
        });
        connect(img, 'onmouseout', function(e) {
            img.src = src;
        });
    });
};

var navigation = function(e) {
    var self = this;
    forEach(getElementsByTagAndClassName('li', 'treenode'), function(li) {
        var img      = li.getElementsByTagName('img')[0];
        var src      = img.src;
        var over_src = img.src.replace(/^(.+)(\..+)$/, function() {
            return arguments[1] + '_on' + arguments[2];
        });
		IMG({ src: over_src }); // preload

        var ul = li.getElementsByTagName('ul')[0];
        show();
        connect(li, 'onmouseout', hide);
        connect(ul, 'onmouseout', hide);

        var double_blind = false;
        function show() {
            connect(img, 'onmouseover', function(e) {
                ul.className = 'hover';
                img.src = over_src;
                ul.style.height = 'auto';
                disconnectAll(img, 'onmouseover');
                if (!double_blind) {
                    double_blind = true;
                    showElement(ul);
					//blindDown(ul, { duration: 0.2 });
                }
            });
        }

        function hide(e) {
            if (!isChildNode(e.relatedTarget(), li) || e.relatedTarget() == li) {
                show();
                img.src = src;
                double_blind = false;
                blindUp(ul, { duration: 0.2 });
            }
        }
    });
};

connect(window, 'onload', function() {
    btn();
    navigation();
});
