// wrap in a function to be executed imediately pass in $ namespace (function($) { // private functions var functions = { popup : function (page, name, width, height, scrollbars, resizable, left, top) { var win = null; var p = page || ''; var n = name || ''; var w = width || 600; var h = height || 500; var s = scrollbars || 'yes'; var r = resizable || 'yes'; var l = !left || isNaN(left) ? ((screen.width) ? (screen.width - w) / 2 : 0) : left; var t = !top || isNaN(top) ? ((screen.height) ? (screen.height - h) / 2 : 0) : top; var settings = 'height=' + h + ',width=' + w + ',top=' + t + ',left=' + l + ',scrollbars=' + s + ',resizable=' + r + ',status=yes'; win = window.open(p, n, settings); } }; // private methods var methods = { popup : function(options) { options = $.extend({ relTypes: { external: 'external', popup: 'popup' }, delimiter: '|', externalClass: 'external', popupClass: 'popup' }, options || {}); return this.each(function(i) { var a = $(this); var rel = a.attr('rel'); var settings = {}; if (rel) { var rs = rel.split(options.delimiter); if (rs[0] == options.relTypes['external']) { a.attr({ target: '_blank', title: 'Load in new window: ' + a.attr('href') }).addClass(options.externalClass); } else if (rs[0] == options.relTypes['popup']) { settings.w = rs[1]; settings.h = rs[2]; settings.s = rs[3]; settings.r = rs[4]; settings.l = rs[5]; settings.t = rs[6]; a.attr({ title: 'Link loads in Popup Window' }).addClass(options.popupClass); a.bind('click', function() { functions.popup(a.attr('href'), 'popup_' + i, settings.w, settings.h, settings.s, settings.r, settings.l, settings.t); return false; }); } } }); } }; // add new private functions $.each(functions, function(i) { $[i] = this; }); // add new private methods $.each(methods, function(i) { $.fn[i] = this; }); // when the dom is ready execute on all a tags $(function() { $('a').popup(); }); // pass jquery object in when executing })(jQuery);