<PUBLIC:COMPONENT lightWeight = true > <PUBLIC:DEFAULTS contentEditable = false tabStop = true /> <PUBLIC:attach event="ondocumentready" onevent="initElement()" /> <PUBLIC:attach event="ondetach" onevent="cleanupElement()" /> <PUBLIC:attach event="oncontextmenu" onevent="elementOnContextMenu()" /> <PUBLIC:attach event="onpropertychange" onevent="elementOnPropertyChange()" /> <PUBLIC:property name="left" value=0 /> <PUBLIC:property name="top" value=0 /> <PUBLIC:property name="height" value=200 /> <PUBLIC:property name="width" value=250 /> <PUBLIC:property name="src" value="" /> <PUBLIC:property name="caption" value="" /> <PUBLIC:property name="resizable" value=true /> <script language="jscript"> // ---------------------------------------------------- // 2k3Widgets: 2k3Dialog // // Copyright ©2002-2004 Stedy Software and Systems // Please see http://www.stedy.com for terms of use. // ---------------------------------------------------- var isIE6 = ((window.navigator.appVersion).indexOf("MSIE 6.") != -1) ; var inDrag = false ; var inSize = false ; var orgX ; var orgY ; var orgTop ; var orgLeft ; var orgHeight ; var orgWidth ; var orgDirection ; var objWindowCaption = null ; var objCaptionImage = null ; var objCloseButton = null ; var objContentWindow = null ; var objCurrentButton = null ; internalSettingProperties = false ; // ---------------------------------------------------- // initialize/terminate functions // ---------------------------------------------------- function initElement() { with (element) { resizable = makeBooleanOfAttribute("resizable") ; attachEvent("onselectstart", elementOnSelect) attachEvent("onmousedown", elementOnMouseDown) attachEvent("onmouseup", elementOnMouseUp) attachEvent("onmousemove", elementOnMouseMove) for (var i = 0; i < children.length; i++) { switch (element.children[i].className) { case "windowCaption": objWindowCaption = children[i] ; objWindowCaption.attachEvent("onmousedown", captionOnMouseDown) element.caption = objWindowCaption.innerHTML ; break ; case "captionImage": objCaptionImage = children[i] ; break ; case "windowButtonClose": objCloseButton = children[i] ; objCloseButton.title = "Close" objCloseButton.children[0].setAttribute("src", currentStyle.closeImageUrl) objCloseButton.attachEvent("onmousedown", buttonOnMouseDown) objCloseButton.attachEvent("onmouseup", buttonOnMouseUp) break ; case "windowContent": objContentWindow = children[i] ; objContentWindow.attachEvent("onload", contentOnLoad) objContentWindow.setAttribute("src", src) break ; } } } } function cleanupElement() { with (element) { detachEvent("onselectstart", elementOnSelect) detachEvent("onmousedown", elementOnMouseDown) detachEvent("onmouseup", elementOnMouseUp) detachEvent("onmousemove", elementOnMouseMove) } with (objWindowCaption) { detachEvent("onmousedown", captionOnMouseDown) objWindowCaption = null ; } with (objCloseButton) { detachEvent("onmousedown", buttonOnMouseDown) detachEvent("onmouseup", buttonOnMouseUp) objCloseButton = null ; } with (objContentWindow) { detachEvent("onload", contentOnLoad) objContentWindow = null ; } } // ---------------------------------------------------- // element functions // ---------------------------------------------------- function elementOnMouseDown() { var ev = window.event ; if (ev.srcElement == element) { if (ev.button == 1 && orgDirection != "" && element.resizable) { inSize = true orgX = ev.clientX ; orgY = ev.clientY ; orgTop = element.offsetTop ; orgLeft = element.offsetLeft ; orgHeight = element.offsetHeight ; orgWidth = element.offsetWidth ; element.setCapture() ; with (ev) { returnValue = false ; cancelBubble = true ; } } } } function elementOnMouseUp() { if (inSize) { inSize = false ; element.releaseCapture() ; } } function elementOnMouseMove() { if (inDrag) { return ; } if (inSize) { var btnWidth = objCloseButton.offsetWidth ; with (window.event) { var cliX = clientX ; var cliY = clientY ; returnValue = false ; cancelBubble = true ; } if (orgDirection.indexOf("e") != -1) { var intX = orgWidth + cliX - orgX ; if (intX < 60) { intX = 60 ; } element.style.width = intX ; intX -= 8 ; objCloseButton.style.left = intX - btnWidth ; objContentWindow.style.width = intX ; } if (orgDirection.indexOf("s") != -1) { var intY = orgHeight + cliY - orgY ; if (intY < 60) { intY = 60 ; } element.style.height = intY ; objContentWindow.style.height = intY - objWindowCaption.offsetHeight - 10 ; } if (orgDirection.indexOf("w") != -1) { var intX = orgWidth - cliX + orgX ; var intL = orgLeft + cliX - orgX ; if (intX < 60) { intX = 60 ; intL = orgLeft + orgWidth - 60 ; } element.style.left = intL ; element.style.width = intX ; intX -= 8 ; objCloseButton.style.left = intX - btnWidth ; objContentWindow.style.width = intX ; } if (orgDirection.indexOf("n") != -1) { var intY = orgHeight - cliY + orgY ; var intT = orgTop + cliY - orgY ; if (intY < 60) { intY = 60 ; intT = orgTop + orgHeight - 60 ; } with (element.style) { top = intT ; height = intY ; } objContentWindow.style.height = intY - objWindowCaption.offsetHeight - 10 ; } } else { if (window.event.srcElement == element && element.resizable) { orgDirection = getResizeDirection() ; if (orgDirection == "") { var strCursor = "default" ; } else { var strCursor = orgDirection + "-resize" ; } element.style.cursor = strCursor ; } } return false ; } function elementOnSelect() { with (window.event) { cancelBubble = true ; returnValue = false ; } return false ; } function elementOnContextMenu() { with (window.event) { cancelBubble = true ; returnValue = false ; } return false ; } function elementOnPropertyChange() { if (internalSettingProperties) { return ; } switch (window.event.propertyName) { case "caption": objWindowCaption.innerHTML = element.caption ; break ; case "src": objContentWindow.setAttribute("src", element.src) ; break ; case "left": case "top": case "width": case "height": if (inDrag || inSize) { return ; } with (element) { style.left = left ; style.top = top ; style.width = width ; style.height = height ; } with (objWindowCaption) { var capWidth = offsetWidth ; var capHeight = offsetHeight ; var capTop = offsetTop ; } with (objCloseButton) { var btnWidth = offsetWidth ; var btnHeight = offsetHeight ; style.top = (capHeight / 2) - (btnHeight / 2) + capTop ; style.left = capWidth - btnWidth + 1 ; } with (objCaptionImage) { var imgHeight = objCaptionImage.offsetHeight ; style.top = (capHeight / 2) - (imgHeight / 2) + capTop + 1 ; } with (objContentWindow) { style.width = capWidth ; style.height = element.offsetHeight - capHeight - 10 ; } break ; } } // ---------------------------------------------------- // caption functions // ---------------------------------------------------- function captionOnMouseDown() { with (window.event) { if (button != 1) { return ; } inDrag = true ; orgX = clientX - element.style.pixelLeft ; orgY = clientY - element.style.pixelTop ; cancelBubble = true ; returnValue = false ; } element.setCapture() ; with (window.document) { attachEvent("onmouseup", captionOnMouseUp) ; attachEvent("onmousemove", captionOnMouseMove) ; } } function captionOnMouseUp() { inDrag = false ; element.releaseCapture() ; with (window.document) { detachEvent("onmouseup", captionOnMouseUp) ; detachEvent("onmousemove", captionOnMouseMove) ; } } function captionOnMouseMove() { if (inDrag) { with (window.event) { if (clientX > 0 && clientX < element.parentElement.offsetWidth) { element.style.left = clientX - orgX ; } if (clientY > 0 && clientY < element.parentElement.offsetHeight) { element.style.top = clientY - orgY ; } returnValue = false ; cancelBubble = true ; } } } // ---------------------------------------------------- // close button functions // ---------------------------------------------------- function buttonOnMouseDown() { with (window.event) { if (button != 1) { return ; } var el = srcElement ; } if (el.tagName == "IMG") { el = el.parentElement ; } showPressed(el, el.children[0]) ; el.setCapture() ; objCurrentButton = el ; } function buttonOnMouseUp() { with (window.event) { if (button != 1) { return ; } var el = srcElement ; } if (el.tagName == "IMG") { el = el.parentElement ; } showRaised(objCurrentButton, objCurrentButton.children[0]) ; objCurrentButton.releaseCapture() ; if (el == objCurrentButton) { element.style.visibility = "hidden" ; } objCurrentButton = null ; } // ---------------------------------------------------- // iframe functions // ---------------------------------------------------- function contentOnLoad() { try { if (window.event.srcElement.contentWindow.document.title != "") { element.caption = window.event.srcElement.contentWindow.document.title ; } } catch(e) { return ; } } // ---------------------------------------------------- // internal functions // ---------------------------------------------------- function showRaised(el, elImage) { with (el.style) { borderLeft = "1px solid buttonhighlight" ; borderRight = "1px solid threeddarkshadow" ; borderTop = "1px solid buttonhighlight" ; borderBottom = "1px solid threeddarkshadow" ; } with (elImage.style) { borderLeft = "" ; borderRight = "1px solid buttonshadow" ; borderTop = "" ; borderBottom = "1px solid buttonshadow" ; } } function showPressed(el, elImage) { with (el.style) { borderLeft = "1px solid threeddarkshadow" ; borderRight = "1px solid buttonhighlight" ; borderTop = "1px solid threeddarkshadow" ; borderBottom = "1px solid buttonhighlight" ; } with (elImage.style) { borderLeft = "1px solid buttonshadow" ; borderRight = "" ; borderTop = "1px solid buttonshadow" ; borderBottom = "" ; } } function getResizeDirection() { var sResult = "" ; var offSet = 8 ; with (window.event) { var xPos = offsetX ; var yPos = offsetY ; } if (yPos < offSet) { sResult += "n" ; } if (yPos > element.offsetHeight - offSet) { sResult += "s" ; } if (xPos < offSet) { sResult += "w" ; } if (xPos > element.offsetWidth - offSet) { sResult += "e" ; } return sResult ; } function makeBooleanOfAttribute(attName) { a = element.getAttribute(attName) ; if (typeof(a) == "boolean") { return a ; } else if (a == null) { a = false ; } else if (typeof(a) == "string") { a = a.toLowerCase() ; a = (a == "true" || a == "1" || a == "yes") ; } else { a = new Boolean(a) ; } return a ; } </script> </PUBLIC:COMPONENT>