// Create a namespace for our utilities
var UTIL = UTIL || {};
UTIL.popup = UTIL.popup || {};

/**
 * Open popup window
 *
 * Opens a popup window using as little as a URL. An optional params object can
 * be passed.
 *
 * @param {String} href
 * @param {Object} params
 * @return {WindowObjectReference}
 */
UTIL.popup.open = function (href, params)
{
	// Defaults (don't leave it to the browser)
	var defaultParams = {
		"width":	   "800",	// Window width
		"height":	   "600",	// Window height
		"top":		   "0",		// Y offset (in pixels) from top of screen
		"left":		   "0",		// X offset (in pixels) from left side of screen
		"directories": "no",	// Show directories/Links bar?
		"location":	   "no",	// Show location/address bar?
		"resizeable":  "yes",	// Make the window resizable?
		"menubar":	   "no",	// Show the menu bar?
		"toolbar":	   "no",	// Show the tool (Back button etc.) bar?
		"scrollbars":  "yes",	// Show scrollbars?
		"status":	   "no"		// Show the status bar?
	};

	var windowName = params["windowName"] || "new_window";

	var i, useParams = "";

	// Override defaults with custom values while we construct the params string
	for (i in defaultParams)
	{
		useParams += (useParams === "") ? "" : ",";
		useParams += i + "=";
		useParams += params[i] || defaultParams[i];
	}

	return window.open(href, windowName, useParams);
};

$(function(){ // Run this code when the document's done loading	   

	// Apply this code to each link with class="popup"
	$("a.popup").each(function (i){

		// Add an onClick behavior to this link
		$(this).click(function(event) {

			// Prevent the browser's default onClick handler
			event.preventDefault();

			// Grab parameters using jQuery's data() method
			var params = $(this).data("popup") || {};			 

			// Use the target attribute as the window name
			if ($(this).attr("target"))
			{
				params.windowName = $(this).attr("target");
			}

			// Pop up the window
			var windowObject = UTIL.popup.open(this.href, params);

			// Save the window object for other code to use
			$(this).data("windowObject", windowObject);
		});
	});
});