// Copyright (c) 2000-2003 Quadralay Corporation. All rights reserved. // function WWHPopup_Object(ParamThisPopupRef, ParamWindowRef, ParamPopupTranslateFunc, ParamPopupFormatFunc, ParamDivID, ParamTextID, ParamTimeout, ParamOffsetX, ParamOffsetY, ParamWidth) { this.mThisPopupRef = ParamThisPopupRef; this.mWindowRef = ParamWindowRef; this.mDivID = ParamDivID; this.mTextID = ParamTextID; this.mTimeout = (ParamTimeout > 0) ? ParamTimeout : 0; this.mOffsetX = ParamOffsetX; this.mOffsetY = ParamOffsetY; this.mWidth = ParamWidth; // Updated when popup triggered // this.mbVisible = false; this.mPositionX = 0; this.mPositionY = 0; this.mText = ""; this.mSetTimeoutID = null; this.fTranslate = ParamPopupTranslateFunc; this.fFormat = ParamPopupFormatFunc; this.fEventString = WWHPopup_EventString; this.fDivTagText = WWHPopup_DivTagText; this.fShow = WWHPopup_Show; this.fLoad = WWHPopup_Load; this.fPositionAt = WWHPopup_PositionAt; this.fPosition = WWHPopup_Position; this.fReveal = WWHPopup_Reveal; this.fHide = WWHPopup_Hide; } function WWHPopup_EventString() { var EventString = "null"; var Browser = WWHFrame.WWHBrowser.mBrowser; // Set event string based on browser type // if ((Browser == 1) || // Shorthand for Netscape (Browser == 2) || // Shorthand for IE (Browser == 4) || // Shorthand for Netscape 6.0 (Mozilla) (Browser == 5)) // Shorthand for Safari { EventString = "event"; } else { EventString = "null"; } return EventString; } function WWHPopup_DivTagText() { var DivTagText = ""; var Browser = WWHFrame.WWHBrowser.mBrowser; var VisibleAttribute = "visibility: hidden"; // Update VisibleAttribute based on browser // if ((Browser == 2) || // Shorthand for Internet Explorer (Browser == 3) || // Shorthand for iCab (Browser == 4) || // Shorthand for Netscape 6.0 (Mozilla) (Browser == 5)) // Shorthand for Safari { VisibleAttribute += " ; display: none"; } // Open DIV tag // DivTagText += "
\n"; // Expand out popup in browsers that support innerHTML accessor // if ((Browser == 2) || // Shortcut for IE (Browser == 3) || // Shortcut for iCab (Browser == 4) || // Shorthand for Netscape 6.0 (Mozilla) (Browser == 5)) // Shorthand for Safari { DivTagText += this.fFormat(this.mWidth, this.mTextID, "Popup"); } // Close out DIV tag // DivTagText += "
\n"; return DivTagText; } function WWHPopup_Show(ParamText, ParamEvent) { var Browser = WWHFrame.WWHBrowser.mBrowser; var bLoad = false; var PopupDocument = eval(this.mWindowRef + ".document"); var TranslatedText; // Hide popup // this.fHide(); // Position at 0,0 // this.fPositionAt(0, 0); // Reset the timeout operation to display the popup // if (this.mSetTimeoutID != null) { clearTimeout(this.mSetTimeoutID); this.mSetTimeoutID = null; } // Check to see if there is anything to display // if ((ParamText != null) && (ParamEvent != null)) { if (Browser == 1) // Shorthand for Netscape 4.x { this.mPositionX = ParamEvent.layerX; this.mPositionY = ParamEvent.layerY; this.mText = ParamText; bLoad = true; } else if (Browser == 2) // Shorthand for IE { if ((typeof(PopupDocument.documentElement) != "undefined") && (typeof(PopupDocument.documentElement.clientWidth) != "undefined") && (typeof(PopupDocument.documentElement.clientHeight) != "undefined") && ((PopupDocument.documentElement.scrollLeft != 0) || (PopupDocument.documentElement.scrollTop != 0))) { this.mPositionX = PopupDocument.documentElement.scrollLeft + ParamEvent.x; this.mPositionY = PopupDocument.documentElement.scrollTop + ParamEvent.y; } else { this.mPositionX = PopupDocument.body.scrollLeft + ParamEvent.x; this.mPositionY = PopupDocument.body.scrollTop + ParamEvent.y; } // Workaround for IE 4.0 on Windows // if (WWHFrame.WWHBrowser.mbWindowsIE40) { this.mPositionX = ParamEvent.x; this.mPositionY = ParamEvent.y; } this.mText = ParamText; if (WWHFrame.WWHBrowser.mPlatform == 2) // Shorthand for Macintosh { // Setting the position here before it is displayed // corrects a bug under IE 5 on the Macintosh // PopupDocument.all[this.mDivID].style.pixelLeft = 0; PopupDocument.all[this.mDivID].style.pixelTop = 0; TranslatedText = this.fTranslate(this.mText); PopupDocument.all[this.mTextID].innerHTML = TranslatedText; this.fPosition(); } bLoad = true; } else if ((Browser == 4) || // Shorthand for Netscape 6.0 (Mozilla) (Browser == 5)) // Shorthand for Safari { this.mPositionX = ParamEvent.layerX; this.mPositionY = ParamEvent.layerY; this.mText = ParamText; bLoad = true; } // Load popup // if (bLoad == true) { this.fLoad(); } } } function WWHPopup_Load() { var PopupDocument = eval(this.mWindowRef + ".document"); var Browser = WWHFrame.WWHBrowser.mBrowser; var FormattedText; var TranslatedText; if (WWHFrame.WWHHandler.fIsReady()) { if (Browser == 1) // Shorthand for Netscape 4.x { // Format popup contents for browser // FormattedText = this.fFormat(this.mWidth, this.mTextID, this.fTranslate(this.mText)); // Set popup contents // PopupDocument.layers[this.mDivID].document.open(); PopupDocument.layers[this.mDivID].document.write(FormattedText); PopupDocument.layers[this.mDivID].document.close(); } else if ((Browser == 2) || // Shorthand for IE (Browser == 3)) // Shorthand for iCab { // Format popup contents for browser // Set popup contents // TranslatedText = this.fTranslate(this.mText); PopupDocument.all[this.mTextID].innerHTML = TranslatedText; // Block display mode // PopupDocument.all[this.mDivID].style.display = "block"; } else if ((Browser == 4) || // Shorthand for Netscape 6.0 (Mozilla) (Browser == 5)) // Shorthand for Safari { // Format popup contents for browser // Set popup contents // TranslatedText = this.fTranslate(this.mText); PopupDocument.getElementById(this.mTextID).innerHTML = TranslatedText; // Block display mode // PopupDocument.getElementById(this.mDivID).style.display = "block"; } // Reveal // this.mSetTimeoutID = setTimeout(this.mThisPopupRef + ".fReveal()", this.mTimeout); } } function WWHPopup_PositionAt(ParamX, ParamY) { var PopupDocument = eval(this.mWindowRef + ".document"); var Browser = WWHFrame.WWHBrowser.mBrowser; if (Browser == 1) // Shorthand for Netscape 4.x { // Set popup position // PopupDocument.layers[this.mDivID].left = ParamX; PopupDocument.layers[this.mDivID].top = ParamY; } else if (Browser == 2) // Shorthand for IE { // Set popup position // PopupDocument.all[this.mDivID].style.pixelLeft = ParamX; PopupDocument.all[this.mDivID].style.pixelTop = ParamY; } else if ((Browser == 4) || // Shorthand for Netscape 6.0 (Mozilla) (Browser == 5)) // Shorthand for Safari { // Set popup position // PopupDocument.getElementById(this.mDivID).style.left = ParamX + "px"; PopupDocument.getElementById(this.mDivID).style.top = ParamY + "px"; } } function WWHPopup_Position() { var PopupWindow = eval(this.mWindowRef); var PopupDocument = eval(this.mWindowRef + ".document"); var Browser = WWHFrame.WWHBrowser.mBrowser; var Margin = 8; var NewPositionX; var NewPositionY; var VisibleOffsetX; var VisibleOffsetY; var ScrollTop; var PopupWidth; var PopupHeight; var DeltaY; // Calculate new position for popup // NewPositionX = this.mPositionX + this.mOffsetX; NewPositionY = this.mPositionY + this.mOffsetY; if (Browser == 1) // Shorthand for Netscape 4.x { // Attempt to determine DIV tag dimensions // PopupWidth = this.mWidth; if (PopupDocument.layers[this.mDivID].clip.width > PopupWidth) { PopupWidth = PopupDocument.layers[this.mDivID].clip.width; } PopupHeight = 60; // Guess a value if (PopupDocument.layers[this.mDivID].clip.height > PopupHeight) { PopupHeight = PopupDocument.layers[this.mDivID].clip.height; } // Calculate maximum values for X and Y such that the // popup will remain visible // VisibleOffsetX = PopupWindow.innerWidth - this.mOffsetX - PopupWidth - Margin; if (VisibleOffsetX < 0) { VisibleOffsetX = 0; } VisibleOffsetY = PopupWindow.innerHeight - this.mOffsetY - PopupHeight - Margin; if (VisibleOffsetY < 0) { VisibleOffsetY = 0; } // Confirm popup will be visible and adjust if necessary // if (NewPositionX > (PopupWindow.pageXOffset + VisibleOffsetX)) { NewPositionX = PopupWindow.pageXOffset + VisibleOffsetX; } ScrollTop = PopupWindow.pageYOffset; if (NewPositionY > (PopupWindow.pageYOffset + VisibleOffsetY)) { NewPositionY = PopupWindow.pageYOffset + VisibleOffsetY; } // Relocate popup if it will overlay the current mouse position // if ((this.mPositionY >= NewPositionY) && (this.mPositionY <= (NewPositionY + PopupHeight))) { DeltaY = (NewPositionY + PopupHeight) - this.mPositionY; if (NewPositionY - (DeltaY + Margin) > ScrollTop) { NewPositionY -= DeltaY + Margin; } } // Set popup position // this.fPositionAt(NewPositionX, NewPositionY); } else if (Browser == 2) // Shorthand for IE { // Attempt to determine DIV tag dimensions // PopupWidth = this.mWidth; if (PopupDocument.all[this.mDivID].offsetWidth > PopupWidth) { PopupWidth = PopupDocument.all[this.mDivID].offsetWidth; } PopupHeight = 60; // Guess a value if (PopupDocument.all[this.mDivID].offsetHeight > PopupHeight) { PopupHeight = PopupDocument.all[this.mDivID].offsetHeight; } // Calculate maximum values for X and Y such that the // popup will remain visible // if ((typeof(PopupDocument.documentElement) != "undefined") && (typeof(PopupDocument.documentElement.clientWidth) != "undefined") && (typeof(PopupDocument.documentElement.clientHeight) != "undefined") && ((PopupDocument.documentElement.clientWidth != 0) || (PopupDocument.documentElement.clientHeight != 0))) { VisibleOffsetX = PopupDocument.documentElement.clientWidth - this.mOffsetX - PopupWidth - Margin; VisibleOffsetY = PopupDocument.documentElement.clientHeight - this.mOffsetY - PopupHeight - Margin; } else { VisibleOffsetX = PopupDocument.body.clientWidth - this.mOffsetX - PopupWidth - Margin; VisibleOffsetY = PopupDocument.body.clientHeight - this.mOffsetY - PopupHeight - Margin; } if (VisibleOffsetX < 0) { VisibleOffsetX = 0; } if (VisibleOffsetY < 0) { VisibleOffsetY = 0; } // Confirm popup will be visible and adjust if necessary // if ((typeof(PopupDocument.documentElement) != "undefined") && (typeof(PopupDocument.documentElement.clientWidth) != "undefined") && (typeof(PopupDocument.documentElement.clientHeight) != "undefined") && ((PopupDocument.documentElement.scrollLeft != 0) || (PopupDocument.documentElement.scrollTop != 0))) { if (NewPositionX > (PopupDocument.documentElement.scrollLeft + VisibleOffsetX)) { NewPositionX = PopupDocument.documentElement.scrollLeft + VisibleOffsetX; } ScrollTop = PopupDocument.documentElement.scrollTop; if (NewPositionY > (PopupDocument.documentElement.scrollTop + VisibleOffsetY)) { NewPositionY = PopupDocument.documentElement.scrollTop + VisibleOffsetY; } } else { if (NewPositionX > (PopupDocument.body.scrollLeft + VisibleOffsetX)) { NewPositionX = PopupDocument.body.scrollLeft + VisibleOffsetX; } ScrollTop = PopupDocument.body.scrollTop; if (NewPositionY > (PopupDocument.body.scrollTop + VisibleOffsetY)) { NewPositionY = PopupDocument.body.scrollTop + VisibleOffsetY; } } // Relocate popup if it will overlay the current mouse position // if ((this.mPositionY >= NewPositionY) && (this.mPositionY <= (NewPositionY + PopupHeight))) { DeltaY = (NewPositionY + PopupHeight) - this.mPositionY; if (NewPositionY - (DeltaY + Margin) > ScrollTop) { NewPositionY -= DeltaY + Margin; } } // Set popup position // this.fPositionAt(NewPositionX, NewPositionY); } else if ((Browser == 4) || // Shorthand for Netscape 6.0 (Mozilla) (Browser == 5)) // Shorthand for Safari { // Attempt to determine DIV tag dimensions // PopupWidth = this.mWidth; if (PopupDocument.getElementById(this.mDivID).offsetWidth > PopupWidth) { PopupWidth = PopupDocument.getElementById(this.mDivID).offsetWidth; } PopupHeight = 60; // Guess a value if (PopupDocument.getElementById(this.mDivID).offsetHeight > PopupHeight) { PopupHeight = PopupDocument.getElementById(this.mDivID).offsetHeight; } // Calculate maximum values for X and Y such that the // popup will remain visible // Throw in a bit extra for vertical scroll bars when determinine the horizontal position // VisibleOffsetX = PopupWindow.innerWidth - this.mOffsetX - PopupWidth - 16 - Margin; if (VisibleOffsetX < 0) { VisibleOffsetX = 0; } VisibleOffsetY = PopupWindow.innerHeight - this.mOffsetY - PopupHeight - Margin; if (VisibleOffsetY < 0) { VisibleOffsetY = 0; } // Confirm popup will be visible and adjust if necessary // if (NewPositionX > (PopupWindow.scrollX + VisibleOffsetX)) { NewPositionX = PopupWindow.scrollX + VisibleOffsetX; } ScrollTop = PopupWindow.scrollY; if (NewPositionY > (PopupWindow.scrollY + VisibleOffsetY)) { NewPositionY = PopupWindow.scrollY + VisibleOffsetY; } // Relocate popup if it will overlay the current mouse position // if ((this.mPositionY >= NewPositionY) && (this.mPositionY <= (NewPositionY + PopupHeight))) { DeltaY = (NewPositionY + PopupHeight) - this.mPositionY; if (NewPositionY - (DeltaY + Margin) > ScrollTop) { NewPositionY -= DeltaY + Margin; } } // Set popup position // this.fPositionAt(NewPositionX, NewPositionY); } } function WWHPopup_Reveal() { var PopupDocument = eval(this.mWindowRef + ".document"); var Browser = WWHFrame.WWHBrowser.mBrowser; if ((WWHFrame.WWHHandler.fIsReady()) && (this.mSetTimeoutID != null)) { if (Browser == 1) // Shorthand for Netscape 4.x { // Position the popup // this.fPosition(); // Show the popup // PopupDocument.layers[this.mDivID].zIndex = 1; PopupDocument.layers[this.mDivID].visibility = "visible"; this.mbVisible = true; } else if ((Browser == 2) || // Shorthand for IE (Browser == 3)) // Shorthand for iCab { // Position the popup // this.fPosition(); // Show the popup // PopupDocument.all[this.mDivID].style.zIndex = 1; PopupDocument.all[this.mDivID].style.visibility = "visible"; this.mbVisible = true; } else if ((Browser == 4) || // Shorthand for Netscape 6.0 (Mozilla) (Browser == 5)) // Shorthand for Safari { // Initial popup positioning before object size can be determined // this.fPosition(); // Show the popup // PopupDocument.getElementById(this.mDivID).style.zIndex = 1; PopupDocument.getElementById(this.mDivID).style.visibility = "visible"; this.mbVisible = true; // Position the popup // Offset calculations may be off so we might need to reposition the popup // this.fPosition(); } } // Clear the setTimeout ID tracking field // to indicate that we're done. // this.mSetTimeoutID = null; } function WWHPopup_Hide() { var Browser = WWHFrame.WWHBrowser.mBrowser; var PopupDocument; // Cancel the setTimeout value that would have // displayed the popup // if (this.mSetTimeoutID != null) { clearTimeout(this.mSetTimeoutID); this.mSetTimeoutID = null; } // Shutdown the popup // if (this.mbVisible == true) { PopupDocument = eval(this.mWindowRef + ".document"); if (Browser == 1) // Shorthand for Netscape 4.x { PopupDocument.layers[this.mDivID].zIndex = -1; PopupDocument.layers[this.mDivID].visibility = "hidden"; } else if ((Browser == 2) || // Shorthand for IE (Browser == 3)) // Shorthand for iCab { PopupDocument.all[this.mDivID].style.zIndex = -1; PopupDocument.all[this.mDivID].style.visibility = "hidden"; PopupDocument.all[this.mDivID].style.display = "none"; } else if ((Browser == 4) || // Shorthand for Netscape 6.0 (Mozilla) (Browser == 5)) // Shorthand for Safari { PopupDocument.getElementById(this.mDivID).style.zIndex = -1; PopupDocument.getElementById(this.mDivID).style.visibility = "hidden"; PopupDocument.getElementById(this.mDivID).style.display = "none"; } } this.mbVisible = false; }