MenuWidget.js 2.15 KB
var MenuWidget = function() {
    var init = function(e) {
        jQuery(document).ajaxSuccess(doLinks);
        doLinks();
    }

    var doLinks = function() {
        var Links = document.getElementsByTagName('a');
        for (var i = 0, len = Links.length; i < len; i++) {
            var strRel = ' ' + Links[i].rel + ' ';
            if (strRel.indexOf(' TzMenuDone ') != -1) {
                continue;
            }

            var strClass = ' ' + Links[i].className + ' ';
            if (strClass.indexOf(' TzAddMenuItem ') != -1) {
                Links[i].onclick = function() { return false; };
                addEvent(Links[i], 'click', addLink);
            }

            if (strClass.indexOf(' TzDelMenuItem ') != -1) {
                Links[i].onclick = function() { return false; };
                addEvent(Links[i], 'click', delLink);
            }
        }
    }

    var addLink = function(e) {
        var p = e.target;
        while (p.tagName != 'body' && p.className != 'TzMenuPageList') {
            p = p.parentNode;
        }
        if (p.tagName == 'body') {
            console.error('Something missing in widget!');
            return;
        }

        var Container = document.createElement('span');
        Container.className = 'TzPageContainer';

        var Copy = p.getElementsByTagName('select')[0].cloneNode(true);
        Copy.id  = '';

        var Del = document.createElement('a');
        Del.href = '#';
        Del.appendChild(document.createTextNode('Del'));
        Del.onclick = function() { return false; };
        Del.className = 'TzDelMenuItem';
        addEvent(Del, 'click', delLink);

        Container.appendChild(Copy);
        Container.appendChild(Del);
        p.appendChild(Container);
    }

    var delLink = function(e) {
        var Container = e.target;
        while (Container.tagName != 'body' && Container.className != 'TzPageContainer') {
            Container = Container.parentNode;
        }
        if (Container.tagName == 'body') {
            console.error('Container not found');
            return;
        }

        Container.parentNode.removeChild(Container);
    }

    addEvent(window, 'load', init);
}();