diff options
Diffstat (limited to 'js/help.js')
-rw-r--r-- | js/help.js | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/js/help.js b/js/help.js new file mode 100644 index 000000000..938a73a8b --- /dev/null +++ b/js/help.js @@ -0,0 +1,108 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the Bugzilla Bug Tracking System. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Gervase Markham <gerv@gerv.net> + * + * ***** END LICENSE BLOCK ***** */ + +var g_helpTexts = new Object(); +var g_helpIframe; +var g_helpDiv; + +/** + * Generate help controls during page construction. + * + * @return Boolean; true if controls were created and false if not. + */ +function generateHelp() +{ + // Only enable help if controls can be hidden + if (!document.body.style) + return false; + + // Create help controls (a div to hold help text and an iframe + // to mask any and all controls under the popup) + document.write('<div id="helpDiv" style="display: none;"><\/div>'); + document.write('<iframe id="helpIframe" src="about:blank"'); + document.write(' frameborder="0" scrolling="no"><\/iframe>'); + + return true; +} + +/** + * Enable help popups for all form elements after the page has finished loading. + * + * @return Boolean; true if help was enabled and false if not. + */ +function enableHelp() +{ + g_helpIframe = document.getElementById('helpIframe'); + g_helpDiv = document.getElementById('helpDiv'); + if (!g_helpIframe || !g_helpDiv) // Disabled if no controls found + return false; + + // MS decided to add fieldsets to the elements array; and + // Mozilla decided to copy this brokenness. Grr. + for (var i = 0; i < document.forms.length; i++) { + for (var j = 0; j < document.forms[i].elements.length; j++) { + if (document.forms[i].elements[j].tagName != 'FIELDSET') { + document.forms[i].elements[j].onmouseover = showHelp; + } + } + } + + document.body.onclick = hideHelp; + return true; +} + +/** + * Show the help popup for a form element. + */ +function showHelp() { + if (!g_helpIframe || !g_helpDiv || !g_helpTexts[this.name]) + return; + + // Get the position and size of the form element in the document + var elemY = bz_findPosY(this); + var elemX = bz_findPosX(this); + var elemH = this.offsetHeight; + + // Update help text displayed in the div + g_helpDiv.innerHTML = ''; // Helps IE 5 Mac + g_helpDiv.innerHTML = g_helpTexts[this.name]; + + // Position and display the help popup + g_helpIframe.style.top = g_helpDiv.style.top = elemY + elemH + 5 + "px"; + g_helpIframe.style.left = g_helpDiv.style.left = elemX + "px"; + g_helpIframe.style.display = g_helpDiv.style.display = ''; + g_helpIframe.style.width = g_helpDiv.offsetWidth + "px"; + g_helpIframe.style.height = g_helpDiv.offsetHeight + "px"; +} + +/** + * Hide the help popup. + */ +function hideHelp() { + if (!g_helpIframe || !g_helpDiv) + return; + + g_helpIframe.style.display = g_helpDiv.style.display = 'none'; +} |