function findPos(obj) { /* Finds the on-screen position of a DOM object. See http://www.quirksmode.org/js/findpos.html */

	var curleft = curtop = 0;

	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop

		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

var quickHelpController = {
	quickHelpAreas: { /* ID attributes of HTML elements containing quick help */
		'divAdvancedSearch': true,
		'divIndexSearch' : true,
		'divSearchBuilder': true
	},

	init: function() {
		if(document.getElementById) {
			var quickHelpArea;

			for(i in quickHelpController.quickHelpAreas) {
				if(quickHelpArea = document.getElementById(i)) {
					break;
				}
			}

			if(quickHelpArea) {
				var divs = quickHelpArea.getElementsByTagName('div');

				var quickHelpContent;

				for(var i = 0; i < divs.length; i++) {
					if(divs[i].className == 'quickHelpContent') {
						var quickHelpContent = divs[i];

						quickHelpContent.className = quickHelpContent.className + ' interactive';

						break;
					}
				}

				/* Insert a test here, or maybe lower, to only hi-jack each help link's onclick if the position of something within quickHelpContent is negative (i.e. if CSS is on). Also check that this idea for testing whether CSS is on actually works. */

				var links = quickHelpArea.getElementsByTagName('a');


				for(var i = 0; i < links.length; i++) {

					var thisLink = links[i];

					if(thisLink.className == 'quickHelp') {

						var thisLinkPos = findPos(thisLink);

						var thisContent = document.getElementById(thisLink.href.slice(thisLink.href.search('#quickHelp_') + 1));

						var thisContentPos = findPos(thisContent);

						thisLink.searchHelp = {
							top: thisLinkPos[1],
							left: thisLinkPos[0],
							right: thisLinkPos[0] + thisLink.offsetWidth,
							content: thisContent,
							contentTop: thisContentPos[1],
							contentLeft: thisContentPos[0],
							showing: false
						};
						thisLink.onclick = quickHelpController.toggleHelp;
					}
				}
			}
		}
	},
	toggleHelp: function() {
		var stuff = this.searchHelp;

		if (!stuff.showing) {
			stuff.content.style.top = ((stuff.top - stuff.contentTop) - 9999) + 'px';
			stuff.content.style.left = ((stuff.right - stuff.contentLeft) - 9999) + 1 + 'px';
			stuff.showing = true;
			this.getElementsByTagName('img')[0].src = this.getElementsByTagName('img')[0].src.replace('icon_help.', 'icon_help_close.');
			this.blur();
		}
		else {
			stuff.content.style.top = '-9999px';
			stuff.content.style.left = '-9999px';
			stuff.showing = false;
			this.getElementsByTagName('img')[0].src = this.getElementsByTagName('img')[0].src.replace('icon_help_close.', 'icon_help.');
			this.blur();
		}

		return false;
	}
};

window.onload = function(){
    quickHelpController.init();
};
