YAHOO.namespace("ING");

YAHOO.ING.showOverlay = function (content, userConfig) {
    YAHOO.ING.overlay = new YAHOO.widget.Overlay("overlay", userConfig);
    YAHOO.ING.overlay.setBody(content);
    YAHOO.ING.overlay.render(document.body);
    YAHOO.util.Dom.removeClass(document.getElementById("masked"), 'not-now');
    YAHOO.util.Event.addListener("overlayClose", "click", YAHOO.ING.hideOverlay);
    YAHOO.widget.Overlay.windowResizeEvent.subscribe(YAHOO.ING.resizeHandler);
    YAHOO.widget.Overlay.windowScrollEvent.subscribe(YAHOO.ING.scrollHandler);
    YAHOO.ING.overlay.show();
}

YAHOO.ING.hideOverlay = function () {
    YAHOO.util.Dom.addClass(document.getElementById("masked"), 'not-now');
    YAHOO.ING.overlay.hide();
    if (window.Injected && Injected.fnOverlayOnHide) {
        Injected.fnOverlayOnHide();
    }
    YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(YAHOO.ING.resizeHandler);
    YAHOO.widget.Overlay.windowScrollEvent.unsubscribe(YAHOO.ING.scrollHandler);
    // Default behaviour of YUI overlay is to just hide the overlay, but if you then open 
    // a new overlay, the resize detection doesn't work. Simplest fix is to remove the element
    jQuery("#overlay").remove();
}

YAHOO.ING.resizeHandler = function () {
    YAHOO.ING.overlay.center();
    YAHOO.ING.fnFixMaskSize();
}
YAHOO.ING.scrollHandler = function () {
    YAHOO.ING.fnFixMaskSize();
}

YAHOO.ING.fnFixMaskSize = function () {
    return function ($) {
        $("#masked").height($(document).height()).width($(document).width());
    } (jQuery);
}

jQuery(document).ready(function ($) {
    $("body").append("<div id='masked' class='not-now'>&nbsp;</div>");
    $("a.overlay").click(function () {
        $.ajax({
            url: this.href,
            context: this,
            success: function (data, textStatus, XMLHttpRequest) {
                var reCode = /(?:<div class=["']overlay-content["']>\s*<script type=["']text\/plain["']>)([\s\S]*?)(?:<\/script>)/m;
                var arrCode = reCode.exec(data);
                if (arrCode != null) {
                    $.globalEval(arrCode[1]);
                } else {
                  window.location.href = this.href;
                  return;
                }
                var snippet = $(data).find("div.overlay-content");
                if (snippet.length > 0) {
                    snippet.addClass("overlay-holder").removeClass("overlay-content").prepend("<a href='#' id='overlayClose' class='close'>Sluiten</a>");
                    snippet.find("#overlayClose").add(snippet.find(".intro-overview")).wrapAll("<div class='clearfix' />");
                    if (window.Injected && Injected.fnOverlayInit) {
                        YAHOO.ING.showOverlay(snippet[0], $.extend(
                            { fixedcenter: false,
                                visible: false,
                                width: "730px"
                            }
                            , Injected.OverlayConfig || {}));
                            Injected.fnOverlayInit(snippet, this.href);
                            YAHOO.ING.overlay.center();
                            YAHOO.ING.fnFixMaskSize();
                    }                   
                } else {
                    window.location.href = this.href;
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                window.location.href = this.href;
            }
        });
        return false;
    });
});