/*******************************************************************************************
 * disclosure
 * Written by Craig Francis
 * Allow an anchor link to toggle the state of a widget
 *******************************************************************************************/

	var disclosure = new function () {

		//--------------------------------------------------
		// Do not allow older browsers to run this script

			if (!document.getElementById || !document.getElementsByTagName) {
				return;
			}

		//--------------------------------------------------
		// Initialisation function used for setup

			this.init = function () {

				//--------------------------------------------------
				// Find the links

					var links = document.getElementsByTagName('a');

					for (var k = (links.length - 1); k >= 0; k--) {
						if (cssjs('check', links[k], 'jsDisclosure')) {

							disclosure.setup(links[k]);

						}
					}

			}

		//--------------------------------------------------
		// Setup

			this.setup = function (link) {

				//--------------------------------------------------
				// Debug

					console.log('disclosure.js: setup');

				//--------------------------------------------------
				// Target

					var regExp = new RegExp('#([A-Za-z0-9]+)');

					var result = regExp.exec(link.href);
					if (!result || result.length != 2) {
						console.log('disclosure.js: error = not an anchor');
						return;
					}

					var target = document.getElementById(result[1]);
					if (!target) {
						console.log('disclosure.js: error = target not found (' + result[1] + ')');
						return;
					}

				//--------------------------------------------------
				// Setup the link

					link.jsDisclosureTarget = target;

					link.onclick = function() {

							if (cssjs('check', this.jsDisclosureTarget, 'jsDisclosureClosed')) {
								cssjs('remove', this.jsDisclosureTarget, 'jsDisclosureClosed');
							} else {
								cssjs('add', this.jsDisclosureTarget, 'jsDisclosureClosed');
							}

							return false;

						};

			}

		//--------------------------------------------------
		// Set JS specific styles ready for page load.

			addCssRule('.jsDisclosureClosed { position: absolute; left: -5000px; width: 500px; }');

		//--------------------------------------------------
		// When the page has loaded, run the init function

			addLoadEvent (function() {
				disclosure.init();
			});

	}

