var rss_popup;
var elementsStyle = new Array();

(function() {
    
    // global vars
    var popup_center, popup_fx, overlay, to_path, this_func;
    var state = 0;
    
    window.addEvent("domready", function()
    {
        $(document.body).adopt(
            $$([popup_center = new Element("div", {id: "popup_center"})]).setStyle('display', '').setStyle('display', 'none')
        );
        
        overlay = $('lbOverlay');
        overlay.addEvent("click", close);
        popup_fx = {
          overlay: new Fx.Tween(overlay, {property: "opacity", duration: 150}).set(0)
        };
    });
    
    popup_creator = {
        open: function(id_name, path, element, func)
        {
            // check for errors
            var focus = $(id_name);
            if (!focus) return;
            
            // setup the basic fade and positioning
            position();
            setup(true);
            popup_fx.overlay.start(0.4);
            state = 1;
            to_path = path;
            this_func = func;
            
            // get the size of the new box
            focus.setStyle('display', 'block');
            var size = focus.getSize();
            focus.setStyle('display', 'none');
            
            // move the popup box to the center of the page
            var top = window.getScrollTop() + (window.getHeight() / 2) - (size.y / 2);
            popup_center.setStyles({top: top, width: size.x, height: size.y, marginLeft: -(size.x / 2), display: ''});
            popup_center.innerHTML = this[func](element, focus.innerHTML);
            popup_center.className = 'popup_' + func;
            
            // replace the buttons on the popup
            $$('#popup_center .popup_cancel').addEvent('click', close);
            $$('#popup_center form').addEvent('submit', function() {return submit(path, func);});
        },
        
        rss_link: function(element, data) {return data;}
    };
  
    function position() 
    {
        overlay.setStyles({top: window.getScrollTop(), height: window.getHeight()});
    }
  
    function setup(open)
    {
        /*["object", window.ie ? "select" : "embed"].forEach(function(tag) {
            Array.forEach(document.getElementsByTagName(tag), function(el) {
                if (open) elementsStyle[el] = el.style.display;
                el.style.display = open ? 'none' : elementsStyle[el];
            });
        });*/
    
        overlay.style.display = open ? "" : "none";
    
        var fn = open ? "addEvent" : "removeEvent";
        window[fn]("scroll", position)[fn]("resize", position);
        document[fn]("keydown", keyDown);
    }
  
    function keyDown(event)
    {
        switch(event.code)
        {
            case 27:	// esc
                close();
                break;
            case 13:	// enter
                submit(to_path, this_func);
        }
        
        // prevent default keyboard action
        return false;
    }
  
    function close()
    {
        if (state)
        {
            state = 0;
            
            for (var f in popup_fx) popup_fx[f].cancel();
            popup_center.setStyle('display', 'none');
            popup_fx.overlay.chain(setup).start(0);
        }
    
        return false;
    }
    
    function submit(path, func)
    {
        var request = new Request.HTML({url: path, 
            onSuccess: function(html) {
                close();
            },
            onFailure: function() {
               close();
            }
        });
        request.send();
        return false;
    }

})();

window.addEvent("domready", function() {
  $$('#rss_link').addEvent('click', function() {popup_creator.open('rss_popup', this.href, this, 'rss_link'); return false;});
});