// @@require jms/lib/station.js
// @@require jms/lib/tree.js
// @@require jms/lib/tree2.js
// @@require cssms/lib/slick.css

Slick = {
    get: function (o_n) {
        if (o_n.nodeType) {
            return {node: Tree.ancestor(o_n, 'div.slickhouse')};
        }
        else {
            return o_n;
        }
    }
    ,tab: function (slick, index, transition) {
        var tab_node, i, node, eax, esi, links_node, space_node;

        slick = Slick.get(slick); // shape it up
        space_node = Tree.get(slick.node, 'div.slickspace'    );
        links_node = Tree.get(slick.node, 'div.slicklinks'    );
        tab_node   = Tree.get(space_node, 'div.slick' + index );

        Tree2.giveClass(links_node, Tree.gets(links_node, 'a', index)[index - 1], 'active');

        switch (transition) {
            case 'slide':
                eax = tab_node;
                while (eax.previousSibling) {
                    if (eax.nodeType == 1 && eax.getAttribute('renderbender')) {
                        RenderBender.node(eax);
                    }
                    eax = eax.previousSibling;
                }
                Station.push(
                     space_node.firstChild
                    ,'left'
                    ,{
                         from : parseInt(Station.read(space_node.firstChild, 'left') || 0)
                        ,to   : -(tab_node.offsetWidth * (index - 1))
                        ,time : (transition == 'slide' ? 350 : 0)
                        ,f    : Interpolators.pulse
                    }
                    ,function() {
                        space_node.firstChild.style.left = '-' + ((index - 1) * 100) + '%';
                    }
                );
                break;
            default:
                space_node.firstChild.style.left = '-' + ((index - 1) * 100) + '%';
        }
        return false;
    }
}
// Foo
