Type.registerNamespace("Sys.Extended.UI.HtmlEditor.Popups");
Sys.Extended.UI.HtmlEditor.Popups.AttachedPopup = function(element) {
Sys.Extended.UI.HtmlEditor.Popups.AttachedPopup.initializeBase(this, [element]);
this._relatedElement = null;
}
Sys.Extended.UI.HtmlEditor.Popups.AttachedPopup.prototype = {
get_relatedElement: function() {
return this._relatedElement;
},
set_relatedElement: function(value) {
this._relatedElement = value;
},
open: function(callback) {
if(this._relatedElement != null) {
var popup = this;
if(!this.checkCorrectLoaded(function() { popup.open(callback); }))
return;
var location = $common.getLocation(this._relatedElement),
x = location.x,
y = location.y + this._relatedElement.offsetHeight;
var element = this.get_element().parentNode;
while(element && element.tagName && element.tagName.toUpperCase() != "BODY") {
var position = Sys.Extended.UI.HtmlEditor.getStyle(element, "position");
if(position == "absolute" || position == "fixed") {
var top = parseInt(Sys.Extended.UI.HtmlEditor.getStyle(element, "top")),
left = parseInt(Sys.Extended.UI.HtmlEditor.getStyle(element, "left"));
if(!isNaN(top) && !isNaN(left)) {
x -= left;
y -= top;
}
break;
} else if(position == "relative") {
var relativeLocation = $common.getLocation(element);
x -= relativeLocation.x;
y -= relativeLocation.y;
}
element = element.parentNode;
}
var viewportElement = Sys.Extended.UI.HtmlEditor.getClientViewportElement(this._iframe),
theVisibleWidth = viewportElement.clientWidth + viewportElement.scrollLeft,
theVisibleHeight = viewportElement.clientHeight + viewportElement.scrollTop;
if(y < viewportElement.scrollTop)
y = viewportElement.scrollTop;
if(x < viewportElement.scrollLeft)
x = viewportElement.scrollLeft;
if(y + this._iframe.offsetHeight > theVisibleHeight)
y -= y + this._iframe.offsetHeight - theVisibleHeight;
if(x + this._iframe.offsetWidth > theVisibleWidth)
x -= x + this._iframe.offsetWidth - theVisibleWidth;
Sys.Extended.UI.HtmlEditor.Popups.AttachedPopup.callBaseMethod(this, "open", [callback, y, x]);
}
},
close: function(callback) {
Sys.Extended.UI.HtmlEditor.Popups.AttachedPopup.callBaseMethod(this, "close", [callback]);
},
initialize: function() {
Sys.Extended.UI.HtmlEditor.Popups.AttachedPopup.callBaseMethod(this, "initialize");
},
dispose: function() {
Sys.Extended.UI.HtmlEditor.Popups.AttachedPopup.callBaseMethod(this, "dispose");
}
}
Sys.Extended.UI.HtmlEditor.Popups.AttachedPopup.registerClass("Sys.Extended.UI.HtmlEditor.Popups.AttachedPopup", Sys.Extended.UI.HtmlEditor.Popups.Popup);