
var RulesOverlay = (function() {
	// Private properties
	var _opts, _ready = false;

	// Private methods
	function _extend(o, e) {
		var r = {};
		for (var k in (o || {})) r[k] = o[k];
		for (var k in (e || {})) r[k] = e[k];
		return r;
	}

	function _makeOverlay() {
		var overlay = document.createElement("div");
		overlay.id = _opts.overlayID;
		overlay.style.cssText = "display:none;";
		document.body.appendChild(overlay);
		_makeRules();
	}

	function _makeRules() {
		var rulesBox = document.createElement("div");
		rulesBox.id = _opts.rulesBoxID;
		rulesBox.style.cssText = "display:none;";
		rulesBox.className = _opts.rulesBoxClass;
		rulesBox.innerHTML = _opts.rulesBoxCloseHtml;
		rulesBox.innerHTML += document.getElementById(_opts.rulesContentContainerID).innerHTML;
		document.body.appendChild(rulesBox);
		_ready = true;
	}

	function _setLinks() {
		var x, disclaimerLinks;
		disclaimerLinks = document.getElementById(_opts.disclaimerID).getElementsByTagName('a');
		for (x = 0; x < disclaimerLinks.length; x++) {
			if (disclaimerLinks[x].hash == _opts.disclaimerTriggerTarget) {
				disclaimerLinks[x].onclick = function() { _showRules(); return false; };
			}
		}
	}

	function _showRules() {
		ShowDiv("rulesBox,overlay", "");
	}

	return {
		// Public properties
		defaults: {
			enableLinkTriggers: true,
			enableFragmentTrigger: true,
			rulesContentContainerID: "rules",
			disclaimerID: "disclaimer",
			disclaimerTriggerTarget: "#restrictions",
			overlayID: "overlay",
			rulesBoxID: "rulesBox",
			rulesBoxClass: "popup",
			rulesBoxCloseHtml: "<small><a onclick=\"ShowDiv('','rulesBox,overlay');RulesOverlay.removeHash();return false;\" href=\"#\">Close</a></small>",
			triggerFragmentID: "restrictions_overlay"

		},

		// Public methods
		initialize: function(options) {
			if (!document.getElementById || !document.getElementsByTagName) { return; }
			_opts = _extend(RulesOverlay.defaults, options);
			setTimeout(_makeOverlay, 0);
			if (_opts.enableLinkTriggers) _setLinks();

			if ('' !== window.location.hash && '#' !== window.location.hash && _opts.enableFragmentTrigger) {
				if (window.location.hash.slice(1) == _opts.triggerFragmentID && document.getElementById(_opts.rulesContentContainerID)) {
					RulesOverlay.display();
				}
			}
		},

		removeHash: function() {
			if (window.location.hash.slice(1) == _opts.triggerFragmentID) window.location.hash = '#off';
		},

		display: function() {
			if (!_ready) setTimeout(RulesOverlay.display, 10);
			else _showRules();
		}


	};
})();

