(function($) {
    $.fn.rt_overlay = function(options) {

        var defaults = {
            target: "",
            target_call: "",
            coordinates_xoffset: 10,
            auto_open: false,
            data: ""
        };

        var options = $.extend(defaults, options);
        var coordinates = $("#" + options.target_call).offset({ scroll: false });

        function setJsQueryString(str) {
            query_string_pos_begin = str.indexOf('?');
            url = str.substring(0, query_string_pos_begin);
            query_string = str.substring(query_string_pos_begin + 1);
            query_string = query_string.replace(/\&+$/, ''); // remove any trailing ampersands

            if ( (query_string.indexOf('js=1') == -1) && (query_string.length > 0) ) {
                if (query_string.indexOf('js=0') != -1) {
                    query_string = query_string.replace('js=0', 'js=1');
                } else {
                    query_string = query_string.concat('&js=1');
                }
            } else if (query_string.length == 0) {
                query_string = 'js=1';
            }
            
            if (BROWSER_IE) {
                query_string += '&alrightha=' + new Date().getTime();
            }

            new_str = url.concat('?', query_string);

            return new_str;
        }

        function overlay(el) {
            url = setJsQueryString(el.href);

            // Check to see if the target div exists to inject the overlay. If it
            // does not exist, then prepend it in the body tag.
            if ($("#" + options.target).length == 0) {
                $("body").prepend('<div id="' + options.target + '" class="widget_container"></div>');
            }

            $("#" + options.target)
                .css({ position: "absolute", top: coordinates.top + 2, left: coordinates.left - options.coordinates_xoffset, display: "block", "z-index": "99999" })
                .html('<div class="content overlay loading_overlay"><div class="content_header_wrapper"><div class="content_header"><div class="content_inner"><div class="fr"><a class="close" href="javascript:hideWidgets()"><div title="Close" class="iconset iconset_rt_sm close_sm hide"><span>Close</span></div></a></div></div></div><div class="content_body clearfix"><div class="loading"></div></div></div>');

            if (options.data) {
                $("#" + options.target).load(url, options.data);
            } else {
                $("#" + options.target).load(url);
            }

            if (BROWSER_IE6) {
                $('select').hide();
            }
        }

        return this.each(function() {
            if (options.auto_open) {
                overlay(this);
                return false;
            } else {
                $("#" + this.id).click(function() {
                    overlay(this);
                    return false;
                });
            }
        });
    };
})(jQuery);