class PopupPanel:

    # PopupImpl.onShow
    def onShowImpl(self, popup):
        JS("""
        var frame = $doc['createElement']('iframe');
        frame['scrolling'] = 'no';
        frame['frameBorder'] = 0;
        frame['style']['position'] = 'absolute';
        frame['src'] = "javascript:''";

        @{{popup}}['__frame'] = frame;
        frame['__popup'] = @{{popup}};
        frame['style']['setExpression']('left', "this['__popup']['offsetLeft']");
        frame['style']['setExpression']('top', "this['__popup']['offsetTop']");
        frame['style']['setExpression']('width', "this['__popup']['offsetWidth']");
        frame['style']['setExpression']('height', "this['__popup']['offsetHeight']");
        @{{popup}}['parentElement']['insertBefore'](frame, @{{popup}});
        """)

    # PopupImpl.onHide
    def onHideImpl(self, popup):
        JS("""
        var frame = @{{popup}}['__frame'];
        frame['parentElement']['removeChild'](frame);
        @{{popup}}['__frame'] = null;
        frame['__popup'] = null;
        """)


