Hi Randall,
I had the same problem and went through some hoops and experimentation to get it to work.
My results were thus:
In the page where I am using the control, i added the following:
<atlas:ScriptManager ID="atlasScript" runat="server" >
<Scripts>
<atlas:ScriptReference Path="AtlasOverride.js" />
</Scripts>
</atlas:ScriptManager>
And the AtlasOverride.js file looks like this:
Sys.UI.PopupBehavior = function() {
Sys.UI.PopupBehavior.initializeBase(this);
var _x = 0;
var _y = 0;
var _positioningMode = Sys.UI.PositioningMode.Absolute;
var _parentElement;
var _moveHandler;
this.get_parentElement = function() {
return _parentElement;
}
this.set_parentElement = function(element) {
_parentElement = element;
this.raisePropertyChanged('parentElement');
}
this.get_positioningMode = function() {
return _positioningMode;
}
this.set_positioningMode = function(mode) {
_positioningMode = mode;
this.raisePropertyChanged('positioningMode');
}
this.get_x = function() {
return _x;
}
this.set_x = function(x) {
_x = x;
if (this.control && this.control.get_visible()) {
this.show();
}
this.raisePropertyChanged('x');
}
this.get_y = function() {
return _y;
}
this.set_y = function(y) {
_y = y;
if (this.control && this.control.get_visible()) {
this.show();
}
this.raisePropertyChanged('y');
}
this.hide = function() {
this.control.set_visible(false);
var elt = this.control.element;
if (elt.originalWidth) {
elt.style.width = elt.originalWidth + "px";
elt.originalWidth = null;
}
if (window.navigator && window.navigator.appName == "Microsoft Internet Explorer" && !window.opera) {
var childFrame = elt._hideWindowedElementsIFrame;
if (childFrame) {
childFrame.style.display = "none";
}
}
}
this.show = function() {
this.control.set_visible(true);
var elt = this.control.element;
var offsetParent = elt.offsetParent;
if (!offsetParent) offsetParent = document.documentElement;
var offsetParentLocation = Sys.UI.Control.getLocation(offsetParent);
var parent = _parentElement ? _parentElement : offsetParent;
var parentBounds = Sys.UI.Control.getBounds(parent);
var diff = {x: parentBounds.x - offsetParentLocation.x, y:parentBounds.y - offsetParentLocation.y};
var width = elt.offsetWidth - (elt.clientLeft ? elt.clientLeft * 2 : 0);
var height = elt.offsetHeight - (elt.clientTop ? elt.clientTop * 2 : 0);
var position;
switch (_positioningMode) {
case Sys.UI.PositioningMode.Center:
position = {
x: Math.round(parentBounds.width / 2 - width / 2),
y: Math.round(parentBounds.height / 2 - height / 2)
};
break;
case Sys.UI.PositioningMode.BottomLeft:
position = {
x: 0,
y: parentBounds.height
};
break;
case Sys.UI.PositioningMode.BottomRight:
position = {
x: parentBounds.width - width,
y: parentBounds.height
};
break;
case Sys.UI.PositioningMode.TopLeft:
position = {
x: 0,
y: -elt.offsetHeight
};
break;
case Sys.UI.PositioningMode.TopRight:
position = {
x: parentBounds.width - width,
y: -elt.offsetHeight
};
break;
default:
position = {x: 0, y: 0};
}
position.x += _x + diff.x;
position.y += _y + diff.y;
Sys.UI.Control.setLocation(elt, position);
elt.style.width = width + "px";
var newPosition = Sys.UI.Control.getBounds(elt);
var documentWidth = self.innerWidth ? self.innerWidth : document.documentElement.clientWidth;
if (!documentWidth) {
documentWidth = document.body.clientWidth;
}
if (newPosition.x + newPosition.width > documentWidth - 5) {
position.x -= newPosition.x + newPosition.width - documentWidth + 5;
}
if (newPosition.x < 0) {
position.x -= newPosition.x;
}
if (newPosition.y < 0) {
position.y -= newPosition.y;
}
Sys.UI.Control.setLocation(elt, position);
if ((Sys.Runtime.get_hostType() == Sys.HostType.InternetExplorer) && !window.opera) {
var childFrame = elt._hideWindowedElementsIFrame;
if (!childFrame) {
childFrame = document.createElement("iframe");
childFrame.src = document.createTextNode('');
childFrame.style.position = "absolute";
childFrame.style.display = "none";
childFrame.scrolling = "no";
childFrame.frameBorder = "0";
childFrame.style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";
elt.parentNode.insertBefore(childFrame, elt);
elt._hideWindowedElementsIFrame = childFrame;
_moveHandler = Function.createDelegate(this, moveHandler);
elt.attachEvent('onmove', _moveHandler);
}
childFrame.style.top = elt.style.top;
childFrame.style.left = elt.style.left;
childFrame.style.width = elt.offsetWidth + "px";
childFrame.style.height = elt.offsetHeight + "px";
childFrame.style.display = elt.style.display;
if (elt.currentStyle && elt.currentStyle.zIndex) {
childFrame.style.zIndex = elt.currentStyle.zIndex;
}
else if (elt.style.zIndex) {
childFrame.style.zIndex = elt.style.zIndex;
}
}
}
this.getDescriptor = function() {
var td = Sys.UI.PopupBehavior.callBaseMethod(this, 'getDescriptor');
td.addProperty('parentElement', Object, false, Sys.Attributes.Element, true);
td.addProperty('positioningMode', Sys.UI.PositioningMode);
td.addProperty('x', Number);
td.addProperty('y', Number);
td.addMethod('show');
td.addMethod('hide');
return td;
}
Sys.UI.PopupBehavior.registerBaseMethod(this, 'getDescriptor');
this.initialize = function() {
Sys.UI.PopupBehavior.callBaseMethod(this, 'initialize');
this.hide();
this.control.element.style.position = "absolute";
}
Sys.UI.PopupBehavior.registerBaseMethod(this, 'initialize');
this.dispose = function() {
if (_moveHandler && this.control && this.control.element) {
this.hide();
this.control.element.detachEvent('onmove', _moveHandler);
_moveHandler = null;
}
_parentElement = null;
Sys.UI.PopupBehavior.callBaseMethod(this, 'dispose');
}
Sys.UI.PopupBehavior.registerBaseMethod(this, 'dispose');
function moveHandler() {
var elt = this.control.element;
if (elt._hideWindowedElementsIFrame) {
elt.parentNode.insertBefore(elt._hideWindowedElementsIFrame, elt);
elt._hideWindowedElementsIFrame.style.top = elt.style.top;
elt._hideWindowedElementsIFrame.style.left = elt.style.left;
}
}
}
Sys.UI.PopupBehavior.registerClass('Sys.UI.PopupBehavior', Sys.UI.Behavior);
The only line in this whole file that is changed is 133, which is indeed the about:blank problem that gives the mixed content warning.
Let me know if this works for you.
-Jack