(function() {
	var background = null;
	var viewer = null;
	var images = [];
	var currentIndex = null;
	
	dojo.require("dojo.window");
	
	dojo.addOnLoad(function() {
		dojo.query("a.videoViewer").connect("onclick", onShowVideoLinkClick);
		
		dojo.subscribe("contentAdded", function(obj) {
			dojo.query("a.videoViewer", obj.element).connect("onclick", onShowVideoLinkClick);
		});
	});

	function onShowVideoLinkClick(event) {
		dojo.stopEvent(event);
		
		showVideo(event.currentTarget.href);
	}
	
	function showVideo(url) {
		showViewer();

		loadVideo(url);
	}
	
	function loadVideo(url) {		
		var frame = dojo.query(".frame", viewer)[0];
		frame.src = url;
	}

	function showViewer() {
		if (!background) {
			background = createBackground();
		}
			
		if (!viewer) {
			viewer = createViewer();
		}
		
		background.style.display = "block";
		reposition();
	}

	function hideViewer() {
		if (background) {
			background.style.display = "none";
		}

		if (viewer) {
			var frame = dojo.query(".frame", viewer)[0];
			frame.src = "about:blank";

			viewer.style.display = "none";
		}
	}
	
	function createViewer() {
		var viewer = dojo.create("div", { className: "image-viewer video" });

		viewer.appendChild(dojo.create("div", { className: "top-shadow"}));
		viewer.appendChild(dojo.create("div", { className: "top-right-shadow"}));
		viewer.appendChild(dojo.create("div", { className: "right-shadow"}));
		viewer.appendChild(dojo.create("div", { className: "bottom-right-shadow"}));
		viewer.appendChild(dojo.create("div", { className: "bottom-shadow"}));
		viewer.appendChild(dojo.create("div", { className: "bottom-left-shadow"}));
		viewer.appendChild(dojo.create("div", { className: "left-shadow"}));		
		viewer.appendChild(dojo.create("div", { className: "top-left-shadow"}));

		var frame = dojo.create("iframe", { className: "frame" });
		frame.frameBorder = "0";
		viewer.appendChild(frame);	

		var closeButton = dojo.create("div", { className: "close-button" });
		closeButton.appendChild(dojo.create("div"));
		
		dojo.connect(closeButton, "onclick", onCloseButtonClick);

		viewer.appendChild(closeButton);

		document.body.appendChild(viewer);

		return viewer;
	}
	
	function createBackground() {
		var background = document.createElement("div");
		background.className = "modal-bg";
		
		document.body.appendChild(background);
		
		return background;
	}
	
	function reposition() {
		viewer.style.display = "block";

		var viewport = dojo.window.getBox();
		var viewerBox = dojo._getBorderBox(viewer);
		var left = Math.floor((viewport.w - viewerBox.w) / 2);
		var top = Math.floor((viewport.h - viewerBox.h) / 2);

		viewer.style.left = left + "px";
		viewer.style.top = top + "px";
	}
	
	function onCloseButtonClick(event) {
		dojo.stopEvent(event);
		
		hideViewer();
	}
})();
