[embjopr-commits] EMBJOPR SVN: r692 - trunk/core/src/main/webapp/js.
embjopr-commits at lists.jboss.org
embjopr-commits at lists.jboss.org
Tue Aug 25 17:17:19 EDT 2009
Author: ips
Date: 2009-08-25 17:17:19 -0400 (Tue, 25 Aug 2009)
New Revision: 692
Modified:
trunk/core/src/main/webapp/js/embedded.js
Log:
sync up to the latest version of rhq.js (RHQ r3933)
Modified: trunk/core/src/main/webapp/js/embedded.js
===================================================================
--- trunk/core/src/main/webapp/js/embedded.js 2009-08-25 20:17:08 UTC (rev 691)
+++ trunk/core/src/main/webapp/js/embedded.js 2009-08-25 21:17:19 UTC (rev 692)
@@ -19,41 +19,44 @@
*/
//**********************************************************************************************************/
-// NOTE: This file is a copy of rhq.js, r1832. If that file is updated, this file should be updated as well!
+// NOTE: This file is a copy of rhq.js, r3933. If that file is updated, this file should be updated as well!
//**********************************************************************************************************/
/**
* The theme used for all PWC (i.e. window.js) windows.
*
- * TODO: We should define our own PWC theme that matches the L&F of the rest of the app.
+ * TODO: We should define our own PWC theme that matches the L&F of the rest of
+ * the app.
*/
var WINDOW_THEME = 'alphacube';
/**
- * A special value for an input that tells the server-side that the corresponding value should be set to null.
+ * A special value for an input that tells the server-side that the
+ * corresponding value should be set to null.
*/
var NULL_INPUT_VALUE = " ";
/**
* Set the unset status of the specified input.
*
- * @param input an input element
- * @param unset whether or not the input should be unset
+ * @param input
+ * an input element
+ * @param unset
+ * whether or not the input should be unset
*/
-function setInputUnset(input, unset)
-{
- clearInputValue(input);
- setInputDisabled(input, unset, true);
- input.unset = unset; // our own special property that tells us whether an input is unset
- if (!unset)
- {
- // Set focus on the input, but only if it is a text-entry field - it doesn't make sense for radios, checkboxes,
- // etc.
- if (input.type == 'text' || input.type == 'password' || input.type == 'textarea' || input.type == 'file')
- {
- input.focus();
- }
- }
+function setInputUnset(input, unset) {
+ clearInputValue(input);
+ setInputDisabled(input, unset, true);
+ input.unset = unset; // our own special property that tells us whether an
+ // input is unset
+ if (!unset) {
+ // Set focus on the input, but only if it is a text-entry field - it doesn't make sense for radios, checkboxes,
+ // etc.
+ if (input.type == 'text' || input.type == 'password'
+ || input.type == 'textarea' || input.type == 'file') {
+ input.focus();
+ }
+ }
}
/**
@@ -61,28 +64,28 @@
*
* @param input an input element
*/
-function writeProtectInput(input)
-{
- if (input.length != null && (input[0].type == 'radio' || input[0].type == 'select-multiple'))
- {
- // Recursively call ourself for each of the array items, which are the actual radio buttons or menu items.
- for (var i = 0; i < input.length; i++)
- {
- writeProtectInput(input[i]);
- }
- }
- else
- {
- input.readonly = true;
- // NOTE: For non-text inputs (radios, checkboxes, etc), the "readonly" attribute is ignored by browsers, so we
- // resort to the "disabled" attribute for these types of inputs. For the text inputs, it is important to
- // *not* set the "disabled" attribute, because then the browser does not allow them to receive focus, which
- // prevents tooltips from working (see http://jira.jboss.com/jira/browse/JBNADM-1608).
- if (input.type != 'text' && input.type != 'password' && input.type != 'textarea' && input.type != 'file')
- {
- setInputDisabled(input, true, true);
- }
- }
+function writeProtectInput(input) {
+ if (input.length != null
+ && (input[0].type == 'radio' || input[0].type == 'select-multiple')) {
+ // Recursively call ourself for each of the array items, which are the actual radio buttons or menu items.
+ for ( var i = 0; i < input.length; i++) {
+ writeProtectInput(input[i]);
+ }
+ } else {
+ input.readonly = true;
+ // NOTE: For non-text inputs (radios, checkboxes, etc), the "readonly"
+ // attribute is ignored by browsers, so we
+ // resort to the "disabled" attribute for these types of inputs. For the
+ // text inputs, it is important to
+ // *not* set the "disabled" attribute, because then the browser does not
+ // allow them to receive focus, which
+ // prevents tooltips from working (see
+ // http://jira.jboss.com/jira/browse/JBNADM-1608).
+ if (input.type != 'text' && input.type != 'password'
+ && input.type != 'textarea' && input.type != 'file') {
+ setInputDisabled(input, true, true);
+ }
+ }
}
/**
@@ -91,19 +94,14 @@
*
* @param input an input element
*/
-function setInputTitle(input)
-{
- if (input != null && input.type == 'text')
- {
- if (input.value != null && input.value.length > input.size)
- {
- input.title = input.value;
- }
- else
- {
- input.title = null;
- }
- }
+function setInputTitle(input) {
+ if (input != null && input.type == 'text') {
+ if (input.value != null && input.value.length > input.size) {
+ input.title = input.value;
+ } else {
+ input.title = null;
+ }
+ }
}
/**
@@ -111,39 +109,33 @@
*
* @param input an input element
*/
-function clearInputValue(input)
-{
- if (input.length != null)
- {
- if (input[0].type == 'radio')
- {
- // Recursively call ourself for each of the array items, which are the actual radio buttons.
- for (var i = 0; i < input.length; i++)
- {
- clearInputValue(input[i]);
- }
- }
- else if (input[0].type == 'select-one' || input[0].type == 'select-multiple')
- {
- // Recursively call ourself on the selected item.
- clearInputValue(input[input.selectedIndex]);
- }
- }
- else
- {
- switch (input.type)
- {
- case 'checkbox':
- case 'radio':
- input.checked = false; break;
- case 'select-one':
- case 'select-multiple':
- input.selected = false; break;
- default:
- // NOTE: We set the value to an empty string rather than null, because IE converts null to the string 'null'.
- input.value = '';
- }
- }
+function clearInputValue(input) {
+ if (input.length != null) {
+ if (input[0].type == 'radio') {
+ // Recursively call ourself for each of the array items, which are the actual radio buttons.
+ for ( var i = 0; i < input.length; i++) {
+ clearInputValue(input[i]);
+ }
+ } else if (input[0].type == 'select-one'
+ || input[0].type == 'select-multiple') {
+ // Recursively call ourself on the selected item.
+ clearInputValue(input[input.selectedIndex]);
+ }
+ } else {
+ switch (input.type) {
+ case 'checkbox':
+ case 'radio':
+ input.checked = false;
+ break;
+ case 'select-one':
+ case 'select-multiple':
+ input.selected = false;
+ break;
+ default:
+ // NOTE: We set the value to an empty string rather than null, because IE converts null to the string 'null'.
+ input.value = '';
+ }
+ }
}
/**
@@ -154,24 +146,19 @@
* @param updateStyle whether or not the input's CSS style should be updated (i.e. grayed out if being disabled or
* un-grayed-out if being enabled)
*/
-function setInputDisabled(input, disabled, updateStyle)
-{
- if (input.length != null && (input[0].type == 'radio' || input[0].type == 'select-multiple'))
- {
- // Recursively call ourself for each of the array items, which are the actual radio buttons or menu items.
- for (var i = 0; i < input.length; i++)
- {
- setInputDisabled(input[i], disabled, updateStyle);
- }
- }
- else
- {
- input.disabled = disabled;
- if (updateStyle)
- {
- updateInputStyle(input);
- }
- }
+function setInputDisabled(input, disabled, updateStyle) {
+ if (input.length != null
+ && (input[0].type == 'radio' || input[0].type == 'select-multiple')) {
+ // Recursively call ourself for each of the array items, which are the actual radio buttons or menu items.
+ for ( var i = 0; i < input.length; i++) {
+ setInputDisabled(input[i], disabled, updateStyle);
+ }
+ } else {
+ input.disabled = disabled;
+ if (updateStyle) {
+ updateInputStyle(input);
+ }
+ }
}
/**
@@ -179,128 +166,167 @@
*
* @param inputs an array of input elements
*/
-function unsetInputs(inputs)
-{
- for (var i = 0; i < inputs.length; i++)
- {
- setInputUnset(inputs[i], true);
- }
+function unsetInputs(inputs) {
+ for ( var i = 0; i < inputs.length; i++) {
+ setInputUnset(inputs[i], true);
+ }
}
-function setInputsOverride(inputs, shouldOverride)
-{
- for (var i = 0; i < inputs.length; i++)
- {
- setInputOverride(inputs[i], shouldOverride);
- }
+function setInputsUnset(inputs, unset) {
+ for ( var i = 0; i < inputs.length; i++)
+ setInputUnset(inputs[i], unset);
}
-function setInputOverride(input, shouldOverride)
-{
- input.override = shouldOverride;
- if (shouldOverride)
- {
- input.check();
- }
+function setInputsOverride(inputs, shouldOverride) {
+ for ( var i = 0; i < inputs.length; i++) {
+ setInputOverride(inputs[i], shouldOverride);
+ }
}
+function setInputOverride(input, shouldOverride) {
+ input.override = shouldOverride;
+ if (shouldOverride) {
+ input.check();
+ }
+}
+
/**
* Write-protects an array of input elements.
*
* @param inputs an array of input elements
*/
-function writeProtectInputs(inputs)
-{
- for (var i = 0; i < inputs.length; i++)
- {
- writeProtectInput(inputs[i]);
- }
+function writeProtectInputs(inputs) {
+ for ( var i = 0; i < inputs.length; i++) {
+ writeProtectInput(inputs[i]);
+ }
}
/**
* @param form a form element
*/
-function prepareInputsForSubmission(form)
-{
- var inputs = Form.getInputs(form);
- for (var i = 0; i < inputs.length; i++)
- {
- var input = inputs[i];
- if (input.disabled)
- {
- // NOTE: It is vital to enable any disabled inputs, since the browser will exclude disabled inputs from the
- // POST request.
- setInputDisabled(input, false, false);
- // Some browsers (e.g. Firefox) will automatically un-gray-out the input, when the disabled property is
- // set to false, so we need to gray it out again, so it still appears to be disabled.
- grayOutInput(input);
- if (input.unset)
- {
- // NOTE: Set the input's value to a special string that will allow the server-side to distinguish between a
- // null (i.e. unset) value and an empty string value.
- input.value = NULL_INPUT_VALUE;
- }
- }
- }
+function prepareInputsForSubmission(form) {
+ var inputs = Form.getInputs(form);
+ for ( var i = 0; i < inputs.length; i++) {
+ if (inputs[i].disabled) {
+ // NOTE: It is vital to enable any disabled inputs, since the browser will exclude disabled inputs from the
+ // POST request.
+ setInputDisabled(inputs[i], false, false);
+ // Some browsers (e.g. Firefox) will automatically un-gray-out the
+ // input, when the disabled property is
+ // set to false, so we need to gray it out again, so it still
+ // appears to be disabled.
+ grayOutInput(inputs[i]);
+ if (inputs[i].unset) {
+ // NOTE: Set the input's value to a special string that will allow the server-side to distinguish between a
+ // null (i.e. unset) value and an empty string value.
+ inputs[i].value = NULL_INPUT_VALUE;
+ }
+ }
+ }
+ // Return true in case an onclick handler called us.
+ return true;
}
/**
* @param input an input element
*/
-function updateInputStyle(input)
-{
- if (input.disabled)
- {
- grayOutInput(input);
- }
- else
- {
- input.style.background = '#FFFFFF';
- input.style.color = '#000000';
- input.style.border = '1px solid #A7A6AA';
- }
+function updateInputStyle(input) {
+ if (input.disabled) {
+ grayOutInput(input);
+ } else {
+ input.style.background = '#FFFFFF';
+ input.style.color = '#000000';
+ input.style.border = '1px solid #A7A6AA';
+ }
}
/**
* @param input an input element
*/
-function grayOutInput(input)
-{
- // Use the default Firefox colors, which are much more intuitive than the default IE colors.
- input.style.background = '#D6D5D9';
- input.style.color = '#000000';
- input.style.border = '1px solid #A7A6AA';
+function grayOutInput(input) {
+ // Use the default Firefox colors, which are much more intuitive than the default IE colors.
+ input.style.background = '#D6D5D9';
+ input.style.color = '#000000';
+ input.style.border = '1px solid #A7A6AA';
}
/**
+ * Sets the values of an array of input elements to the specified value.
+ *
+ * @param inputs an array of input elements
+ * @param value the value
+ */
+function setInputsToValue(inputs, value) {
+ //if (confirm("Are you sure you want to set all member values to '" + value + "'?"))
+ for ( var i = 0; i < inputs.length; i++)
+ setElementValue(inputs[i], value);
+}
+
+/**
+ * Updates the specified inputs and corresponding unset checkboxes to the specified master value / unset state.
+ *
+ * @param valueInputs an array of input elements for the values
+ * @param unsetInputs an array of input elements for the unset checkboxes
+ * @param masterValue a string representing the new value
+ * @param masterUnsetState a boolean representing the new unset state
+ */
+function setAllValuesForOptionalProperty(valueInputs, unsetInputs, masterValue,
+ masterUnsetState) {
+ for ( var i = 0; i < valueInputs.length; i++) {
+ setElementValue(unsetInputs[i], masterUnsetState);
+ setInputUnset(valueInputs[i], masterUnsetState);
+ if (!masterUnsetState)
+ setElementValue(valueInputs[i], masterValue);
+ }
+}
+
+/**
* @param title the title to be displayed at the top of the modal
* @param message the message to be displayed in the body the modal
*/
-function displayMessageModal(title, message)
-{
- var win = new Window({className:WINDOW_THEME, width:350, height:400, zIndex: 100, resizable:true, showEffect:Effect.BlindDown, hideEffect:Effect.SwitchOff, draggable:true, wiredDrag:true});
- win.getContent().innerHTML = "<div style='padding:10px'>" + message + "</div>";
- win.setTitle(title);
- win.showCenter(true); // true == modal
+function displayMessageModal(title, message) {
+ var win = new Window( {
+ className : WINDOW_THEME,
+ width : 350,
+ height : 400,
+ zIndex : 100,
+ resizable : true,
+ showEffect : Effect.BlindDown,
+ hideEffect : Effect.SwitchOff,
+ draggable : true,
+ wiredDrag : true
+ });
+ var escapedMessage = escape(message);
+ win.getContent().innerHTML = "<div style='padding:10px'>" + escapedMessage
+ + "</div>";
+ win.setTitle(title);
+ win.showCenter(true); // true == modal
}
/**
* This method is called in the onload of the body of
* the main template to disable all conditional buttons
*/
-function disableConditionalButtons()
-{
- var buttons = document.getElementsByTagName("input");
- var i;
- var button;
- for (i = 0; i < buttons.length; i++)
- {
- button = buttons.item(i);
- if (button.getAttribute("target") != null)
- {
- button.disabled = true;
- }
- }
+function disableConditionalButtons() {
+ var buttons = document.getElementsByTagName("input");
+ var i;
+ var button;
+ for (i = 0; i < buttons.length; i++) {
+ button = buttons.item(i);
+ var selectTarget = button.getAttribute("target");
+ if (selectTarget != null) {
+ /*
+ * assume it should be disabled at first, and then run the button through
+ * the regular update mechanism to see if it should be re-enabled; if the
+ * page is being loaded for the first time, the updateButtons method will
+ * be a no-op, otherwise it will analyze which select items were enabled
+ * before the page refresh and re-enable button as appropriate according
+ * to their min/max processing rules.
+ */
+ button.disabled = true;
+ updateButtons(selectTarget);
+ }
+ }
}
/**
@@ -308,28 +334,22 @@
* or select or deselect all of the objects with the name selectName
* @param selectName name of the dom instances that should be checked / unchecked
*/
-function selectAll(thisObj, selectName)
-{
- var selects = document.getElementsByName(selectName);
- var i;
- var select;
- for (i = 0; i < selects.length; i++)
- {
- select = selects.item(i);
- if (select.disabled)
- {
- continue;
- }
- if (thisObj.checked)
- {
- select.checked = true;
- }
- else
- {
- select.checked = false;
- }
- }
- updateButtons(selectName);
+function selectAll(thisObj, selectName) {
+ var selects = document.getElementsByName(selectName);
+ var i;
+ var select;
+ for (i = 0; i < selects.length; i++) {
+ select = selects.item(i);
+ if (select.disabled) {
+ continue;
+ }
+ if (thisObj.checked) {
+ select.checked = true;
+ } else {
+ select.checked = false;
+ }
+ }
+ updateButtons(selectName);
}
/**
@@ -340,44 +360,34 @@
* @param selectName name of the dom instances that are checked or unchecked which will determine
* whether or not the conditional buttons on the page should be enabled / disabled
*/
-// TODO: Make this robust enough to properly maintain CSS style when the button is disabled (ips, 08/31/07).
-function updateButtons(targetName)
-{
- var count = countSelected(targetName);
- var buttons = document.getElementsByTagName("input");
- var i;
- var button;
- for (i = 0; i < buttons.length; i++)
- {
- button = buttons.item(i);
- if (button.getAttribute("target") != null && button.getAttribute("target") == targetName)
- {
- var low = button.getAttribute("low");
- var high = button.getAttribute("high");
- if (high != null)
- {
- if (low <= count && count <= high)
- {
- button.disabled = false;
- }
- else
- {
- button.disabled = true;
- }
- }
- else
- {
- if (low <= count)
- {
- button.disabled = false;
- }
- else
- {
- button.disabled = true;
- }
- }
- }
- }
+// TODO: Make this robust enough to properly maintain CSS style when the button
+// is disabled (ips, 08/31/07).
+function updateButtons(targetName) {
+ var count = countSelected(targetName);
+ var buttons = document.getElementsByTagName("input");
+ var i;
+ var button;
+ for (i = 0; i < buttons.length; i++) {
+ button = buttons.item(i);
+ if (button.getAttribute("target") != null
+ && button.getAttribute("target") == targetName) {
+ var low = button.getAttribute("low");
+ var high = button.getAttribute("high");
+ if (high != null) {
+ if (low <= count && count <= high) {
+ button.disabled = false;
+ } else {
+ button.disabled = true;
+ }
+ } else {
+ if (low <= count) {
+ button.disabled = false;
+ } else {
+ button.disabled = true;
+ }
+ }
+ }
+ }
}
/**
@@ -385,51 +395,56 @@
*
* @param selectName name of the dom instances that should be counted for selections
*/
-function countSelected(selectName)
-{
- var total = 0;
- var selectElts = document.getElementsByName(selectName);
- var i;
- for (i = 0; i < selectElts.length; i++)
- {
- if (selectElts.item(i).checked)
- {
- total = total + 1;
- }
- }
- return (total);
+function countSelected(selectName) {
+ var total = 0;
+ var selectElts = document.getElementsByName(selectName);
+ var i;
+ for (i = 0; i < selectElts.length; i++) {
+ if (selectElts.item(i).checked) {
+ total = total + 1;
+ }
+ }
+ return (total);
}
-function setFoot()
-{
- var conH;
- var winH;
- var footerH = 28;
- var browserH = 88;
- if (isIE)
- {
- conH = document.body.scrollHeight;
- winH = document.body.clientHeight;
- }
- else
- {
- conH = document.height;
- winH = window.innerHeight;
- }
- var myHeight = winH - conH - footerH + browserH;
- if (myHeight > 60)
- {
- var footerSpacer = document.getElementById("footerSpacer");
- footerSpacer.setAttribute('height', myHeight);
- }
+function setFoot() {
+ var conH;
+ var winH;
+ var footerH = 28;
+ var browserH = 88;
+ if (isIE) {
+ conH = document.body.scrollHeight;
+ winH = document.body.clientHeight;
+ } else {
+ conH = document.height;
+ winH = window.innerHeight;
+ }
+ var myHeight = winH - conH - footerH + browserH;
+ if (myHeight > 60) {
+ var footerSpacer = document.getElementById("footerSpacer");
+ footerSpacer.setAttribute('height', myHeight);
+ }
}
-function openAbout(windowTitle)
-{
- var content = $('about').innerHTML;
- // NOTE: The PWC docs say the 'closable' option defaults to true, but this does not appear to be the case.
- var windowOptions = {className:WINDOW_THEME, title:windowTitle, width:296, height:164, closable:true, minimizable:false, maximizable:false, resize:false, draggable:false, effectOptions:{duration: 0.25}};
- Dialog.alert(content, windowOptions);
+function openAbout(windowTitle) {
+ var content = $('about').innerHTML;
+ // NOTE: The PWC docs say the 'closable' option defaults to true, but this
+ // does not appear to be the case.
+ var windowOptions = {
+ className : WINDOW_THEME,
+ title : windowTitle,
+ width : 296,
+ height : 164,
+ closable : true,
+ minimizable : false,
+ maximizable : false,
+ resize : false,
+ draggable : false,
+ effectOptions : {
+ duration : 0.25
+ }
+ };
+ Dialog.alert(content, windowOptions);
}
/**
@@ -438,42 +453,291 @@
*
* @param anchorId the id of an anchor element
*/
-function clickAnchor(anchorId)
-{
- var anchor = document.getElementById(anchorId);
- if (document.createEvent)
- {
- var event = document.createEvent('MouseEvents');
- event.initEvent('click', true, false);
- anchor.dispatchEvent(event);
- }
- else if (document.createEventObject)
- {
- anchor.fireEvent('onclick');
- }
+function clickAnchor(anchorId) {
+ var anchor = document.getElementById(anchorId);
+ if (document.createEvent) {
+ var event = document.createEvent('MouseEvents');
+ event.initEvent('click', true, false);
+ anchor.dispatchEvent(event);
+ } else if (document.createEventObject) {
+ anchor.fireEvent('onclick');
+ }
}
-function hidediv(elementId)
-{
- document.getElementById(elementId).style.visibility = 'hidden';
- document.getElementById(elementId).style.display = 'none';
+function hidediv(elementId) {
+ document.getElementById(elementId).style.visibility = 'hidden';
+ document.getElementById(elementId).style.display = 'none';
}
-function showdiv(elementId)
-{
- document.getElementById(elementId).style.visibility = 'visible';
- document.getElementById(elementId).style.display = 'block';
+function showdiv(elementId) {
+ document.getElementById(elementId).style.visibility = 'visible';
+ document.getElementById(elementId).style.display = 'block';
}
-function clickRadio(radioName, valueToClick)
-{
- var radioSet = document.getElementsByName(radioName);
- var i;
- for (i = 0; i < radioSet.length; i++)
- {
- if (radioSet.item(i).value == valueToClick)
- {
- radioSet.item(i).click();
- }
- }
+function clickRadio(radioName, valueToClick) {
+ var radioSet = document.getElementsByName(radioName);
+ var i;
+ for (i = 0; i < radioSet.length; i++) {
+ if (radioSet.item(i).value == valueToClick) {
+ radioSet.item(i).click();
+ }
+ }
}
+
+function ignoreEnterKey(evt) {
+ var e = (evt) ? evt : window.event;
+ var charCode = (e.charCode) ? e.charCode
+ : ((e.which) ? e.which : e.keyCode);
+ if (charCode == 13 || charCode == 3) {
+ e.returnValue = false;
+ e.cancel = true;
+ return false;
+ } else {
+ return true;
+ }
+
+}
+
+function updateDependent(e, dep, disableValue) {
+ if (isIE) {
+ e = event.srcElement;
+ }
+
+ var depElement = document.getElementById(dep);
+ if (e.value == disableValue) {
+ depElement.readonly = true;
+ depElement.disabled = true;
+ depElement.checked = false;
+
+ } else {
+ depElement.readonly = false;
+ depElement.disabled = false;
+ }
+}
+
+function clickAlreadySelectedElements() {
+ var allForms = document.forms;
+ for (i = 0; i < allForms.length; i++) {
+ var form = allForms[i];
+ for (j = 0; j < form.elements.length; j++) {
+ var element = form.elements[j];
+ if (element.type == 'radio' || element.type == 'select-multiple'
+ || element.type == 'select-one') {
+ if (element.checked) {
+ element.click();
+ }
+ }
+ }
+ }
+}
+
+function addWindowOnLoadEvent(newMethod) {
+ if (typeof window.onload != 'function') {
+ window.onload = newMethod;
+ } else {
+ var oldMethod = window.onload;
+ window.onload = function() {
+ if (oldMethod) {
+ oldMethod();
+ }
+ newMethod();
+ }
+ }
+}
+
+function addWindowOnResizeEvent(newMethod) {
+ if (typeof window.onresize != 'function') {
+ window.onresize = newMethod;
+ } else {
+ var oldMethod = window.onresize;
+ window.onresize = function() {
+ if (oldMethod) {
+ oldMethod();
+ }
+ newMethod();
+ }
+ }
+}
+
+function getElementCrossBrowser(elementId) {
+ var elementResult;
+ if (document.getElementById) {
+ elementResult = document.getElementById(elementId);
+ } else if (document.all) {
+ elementResult = document.all[elementId];
+ }
+ return elementResult;
+}
+
+function getElementLeftPos(e) {
+ var xPos = e.offsetLeft;
+ var tempEl = e.offsetParent;
+ while (tempEl != null) {
+ xPos += tempEl.offsetLeft;
+ tempEl = tempEl.offsetParent;
+ }
+ return xPos;
+}
+
+function getElementTopPos(e) {
+ var yPos = e.offsetTop;
+ var tempEl = e.offsetParent;
+ while (tempEl != null) {
+ yPos += tempEl.offsetTop;
+ tempEl = tempEl.offsetParent;
+ }
+ return yPos;
+}
+
+function keepCentered(elementId) {
+ var elementToBeCentered = getElementCrossBrowser(elementId);
+ var browserWidth = getBrowserWidth();
+ var browserHeight = getBrowserHeight();
+
+ var x = (browserWidth / 2) - (elementToBeCentered.offsetWidth / 2);
+ var y = (browserHeight / 2) - (elementToBeCentered.offsetHeight / 2);
+
+ // alert('keepCentered for ' + elementId + ' @ (' + x + ',' + y + ')');
+ elementToBeCentered.style.top = (y + 'px');
+ elementToBeCentered.style.left = (x + 'px');
+}
+
+function sizeAppropriately(elementId) {
+ var elementToBeSized = getElementCrossBrowser(elementId);
+ elementToBeSized.style.width = '600px';
+
+ var browserHeight = getBrowserHeight();
+ var height = browserHeight - 200;
+ // alert('sizeAppropriately for ' + elementId + ' @ height of ' + height);
+ elementToBeSized.style.height = (height + 'px');
+}
+
+function getBrowserWidth() {
+ var myWidth = 0;
+ if (typeof (window.innerWidth) == 'number') {
+ // Non-IE
+ myWidth = window.innerWidth;
+ } else if (document.documentElement
+ && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
+ // IE 6+ in 'standards compliant mode'
+ myWidth = document.documentElement.clientWidth;
+ } else if (document.body
+ && (document.body.clientWidth || document.body.clientHeight)) {
+ // IE 4 compatible
+ myWidth = document.body.clientWidth;
+ }
+ return myWidth;
+}
+
+function getBrowserHeight() {
+ var myHeight = 0;
+ if (typeof (window.innerWidth) == 'number') {
+ // Non-IE
+ myHeight = window.innerHeight;
+ } else if (document.documentElement
+ && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
+ // IE 6+ in 'standards compliant mode'
+ myHeight = document.documentElement.clientHeight;
+ } else if (document.body
+ && (document.body.clientWidth || document.body.clientHeight)) {
+ // IE 4 compatible
+ myHeight = document.body.clientHeight;
+ }
+ return myHeight;
+}
+
+function changeComboBox(selectElementId, value) {
+ var selectElement = getElementCrossBrowser(selectElementId);
+ var i;
+ selectElement[0].selected = true;
+ for (i = 0; i < selectElement.length; i++) {
+ if (selectElement[i].value == value) {
+ selectElement[i].selected = true;
+ }
+ }
+}
+
+function manageStartDivs(component) {
+ if (component.value == "immediate" ) {
+ hidediv('recur');
+ hidediv('end');
+ } else {
+ showdiv('recur');
+ hidediv('end');
+ }
+}
+
+function manageRecurDivs(component) {
+ if (component.value == "never" ) {
+ hidediv('end');
+ } else {
+ showdiv('end');
+ }
+}
+
+function hideInitialDivs() {
+ hidediv('recur');
+ hidediv('end');
+}
+
+/**
+ * WindowResizeTracker can be used by scripts that need to keep track
+ * of the current window/page sizes and their changes.
+ * This variable is a "singleton", don't create new instances of it using "new",
+ * but rather use directly this variable and its properties and methods.
+ */
+var WindowResizeTracker = {
+
+ /** The current window and page sizes */
+ currentSizes : {
+ pageWidth : 0,
+ pageHeight : 0,
+ windowWidth : 0,
+ windowHeight : 0
+ },
+
+ /** How the window/page size changed since last window resize event. */
+ currentDeltas : {
+ pageWidth : 0,
+ pageHeight : 0,
+ windowWidth : 0,
+ windowHeight : 0
+ },
+
+ /** The function passed to this method will be invoked on every window resize and load event. */
+ addListener : function(method) {
+ if (!WindowResizeTracker.listeners) {
+ WindowResizeTracker.listeners = [];
+ }
+
+ WindowResizeTracker.listeners.push(method);
+ },
+
+ init : function() {
+ WindowResizeTracker.currentSizes = WindowUtilities.getPageSize();
+ if (WindowResizeTracker.listeners) {
+ WindowResizeTracker.listeners.each( function(listener) {
+ listener();
+ });
+ }
+ Event.observe(window, "resize", WindowResizeTracker._fire);
+ },
+
+ _fire : function() {
+ var newSizes = WindowUtilities.getPageSize();
+ for ( var i in newSizes) {
+ WindowResizeTracker.currentDeltas[i] = newSizes[i]
+ - WindowResizeTracker.currentSizes[i];
+ }
+ WindowResizeTracker.currentSizes = newSizes;
+
+ if (WindowResizeTracker.listeners) {
+ WindowResizeTracker.listeners.each( function(listener) {
+ listener();
+ });
+ }
+ }
+};
+
+// initalize the resize tracker
+Event.observe(window, "load", WindowResizeTracker.init);
More information about the embjopr-commits
mailing list