function init_shareLayer(){
    var sharetrigger = [];
    if ($("pagetools-zone")) {
        sharetrigger = sharetrigger.concat($("pagetools-zone").select("a.share-trigger"))
    }
    
    if ($("pagetools-footer-zone")) {
        sharetrigger = sharetrigger.concat($("pagetools-footer-zone").select("a.share-trigger"))
    }
    
    sharetrigger.each(
        function(trigger) {
            trigger = $(trigger);
            if (LINK_REL_REGEX.test(trigger.rel)) { // layer link
                var id = trigger.rel.replace(LINK_REL_REGEX, "$1");
                var node = $("simple-layer-" + id);
                new ShareLayer(node, trigger);
            }
        }.bind(this)
    );
}

/* START: simple layer                                              */

var SimpleLayer = Class.create();

SimpleLayer.prototype = Object.extend(new Layer, {

    initialize: function(node, trigger) {
        this.initSuper(node, trigger);

        this.initCloseButton();
    },

    initCloseButton: function(){
        var closeButton = Helper.getCloseButton(this.node);

        if (!closeButton) alert("Implementation Error: no close button found");

        closeButton.observe("click",
            function() {
                this.close();
            }.bindAsEventListener(this)
        );
    },
    
    hide: function() {
        this.node.removeClassName("active-layer");
        this.trigger.up().removeClassName("active");
    },

    show: function() {
        this.node.addClassName("active-layer");
        this.trigger.up().addClassName("active");
    }
    
});

/* END: simple layer                                                */

/* START: share layer                                              */

var ShareLayer = Class.create(SimpleLayer, {

    initialize: function(node, trigger) {
        this.initSuper(node, trigger);
        this.initCloseButton();
    },

    getPosition: function(){
        if($(this.trigger).up('div#footer-zone')){

            var dim = this.node.getDimensions();
            
            var pos = $(this.trigger).cumulativeOffset();
            return {
                left: (pos[0] - dim.width - 5) + 'px',
                top: (pos[1] - dim.height + $(this.trigger).getHeight()) + 'px'
            }
        } else {
            var pos = $('pagetools-zone').cumulativeOffset();
            return {
                left: (pos[0] - 1) + 'px', // subtract white border width
                top: (pos[1] + $('pagetools-zone').getHeight() + 7) + 'px'
            }
        }
    },
    
    beforeOpen: function(){
        var pos = this.getPosition();
        this.node.setStyle(pos);
        return true;
    }    
});

/* END: share layer                                                */

