// Name: PopupControl.PopupControlBehavior.debug.js
// Assembly: AjaxControlToolkit
// Version: 4.5.7.1213
// FileVersion: 4.5.7.1213
// (c) 2010 CodePlex Foundation
///
///
///
///
///
///
///
(function() {
var scriptName = "ExtendedPopupBehavior";
function execute() {
Type.registerNamespace('Sys.Extended.UI');
Sys.Extended.UI.PopupControlBehavior = function(element) {
///
/// The PopupControlBehavior opens a popup window next to the target element
///
///
/// DOM element associated with the behavior
///
Sys.Extended.UI.PopupControlBehavior.initializeBase(this, [element]);
this._popupControlID = null;
this._commitProperty = null;
this._commitScript = null;
this._position = null;
this._offsetX = 0;
this._offsetY = 0;
this._extenderControlID = null;
this._popupElement = null;
this._popupBehavior = null;
this._popupVisible = false;
this._focusHandler = null;
this._popupKeyDownHandler = null;
this._popupClickHandler = null;
this._bodyClickHandler = null;
this._onShowJson = null;
this._onHideJson = null;
};
Sys.Extended.UI.PopupControlBehavior.prototype = {
initialize : function() {
///
/// Initialize the behavior
///
Sys.Extended.UI.PopupControlBehavior.callBaseMethod(this, 'initialize');
var e = this.get_element();
this._popupElement = $get(this._popupControlID);
this._popupBehavior = $create(Sys.Extended.UI.PopupBehavior, { 'id':this.get_id()+'PopupBehavior', 'parentElement':e }, null, null, this._popupElement);
if (this._onShowJson) {
this._popupBehavior.set_onShow(this._onShowJson);
}
if (this._onHideJson) {
this._popupBehavior.set_onHide(this._onHideJson);
}
this._focusHandler = Function.createDelegate(this, this._onFocus);
this._popupClickHandler = Function.createDelegate(this, this._onPopupClick);
this._bodyClickHandler = Function.createDelegate(this, this._onBodyClick);
this._popupKeyDownHandler = Function.createDelegate(this, this._onPopupKeyDown);
$addHandler(e, 'focus', this._focusHandler);
$addHandler(e, 'click', this._focusHandler); // So that a dismissed popup can be more easily re-popped
$addHandler(document.body, 'click', this._bodyClickHandler);
$addHandler(this._popupElement, 'click', this._popupClickHandler);
$addHandler(this._popupElement, 'keydown', this._popupKeyDownHandler);
this.registerPartialUpdateEvents();
if(Sys.Extended.UI.PopupControlBehavior.__VisiblePopup && (this.get_id() == Sys.Extended.UI.PopupControlBehavior.__VisiblePopup.get_id())) {
this._onFocus(null);
}
},
dispose : function() {
///
/// Dispose the behavior
///
var e = this.get_element();
this._onShowJson = null;
this._onHideJson = null;
if (this._popupBehavior) {
this._popupBehavior.dispose();
this._popupBehavior = null;
}
if (this._focusHandler) {
$removeHandler(e, 'focus', this._focusHandler);
$removeHandler(e, 'click', this._focusHandler);
this._focusHandler = null;
}
if (this._bodyClickHandler) {
$removeHandler(document.body, 'click', this._bodyClickHandler);
this._bodyClickHandler = null;
}
if (this._popupClickHandler) {
$removeHandler(this._popupElement, 'click', this._popupClickHandler);
this._popupClickHandler = null;
}
if (this._popupKeyDownHandler) {
$removeHandler(this._popupElement, 'keydown', this._popupKeyDownHandler);
this._popupKeyDownHandler = null;
}
Sys.Extended.UI.PopupControlBehavior.callBaseMethod(this, 'dispose');
},
showPopup : function() {
///
/// Display the popup
///
var old = Sys.Extended.UI.PopupControlBehavior.__VisiblePopup;
if (old && old._popupBehavior) {
old.hidePopup();
}
Sys.Extended.UI.PopupControlBehavior.callBaseMethod(this, 'populate');
this._popupBehavior.set_x(this._getLeftOffset());
this._popupBehavior.set_y(this._getTopOffset());
this._popupBehavior.show();
this._popupVisible = true;
Sys.Extended.UI.PopupControlBehavior.__VisiblePopup = this;
},
hidePopup : function() {
///
/// Hide the popup
///
this._popupBehavior.hide();
this._popupVisible = false;
Sys.Extended.UI.PopupControlBehavior.__VisiblePopup = null;
},
_onFocus : function(e) {
///
/// Show the popup when its control is focused
///
///
/// Event info
///
if (!this._popupVisible) {
this.showPopup();
}
if (e) {
e.stopPropagation();
}
},
_onPopupKeyDown : function(e) {
///
/// Handle key presses in the popup element
///
///
/// Event info
///
if (this._popupVisible && e.keyCode == 27 /* Escape */) {
this.get_element().focus();
}
},
_onPopupClick : function(e) {
///
/// Click handler for the popup
///
///
/// Event info
///
e.stopPropagation();
},
_onBodyClick : function() {
///
/// Handler for the HTML body tag's click event
///
if (this._popupVisible) {
this.hidePopup();
}
},
_close : function(result) {
///
/// Close the popup
///
///
/// Result obtained from committing the popup
///
var e = this.get_element();
if (null != result) {
if ('$$CANCEL$$' != result) {
if (this._commitProperty) {
e[this._commitProperty] = result;
} else if ('text' == e.type) {
e.value = result;
} else {
Sys.Debug.assert(false, String.format(Sys.Extended.UI.Resources.PopupControl_NoDefaultProperty, e.id, e.type));
}
if (this._commitScript) {
eval(this._commitScript);
}
}
this.hidePopup();
}
},
_partialUpdateEndRequest : function(sender, endRequestEventArgs) {
///
/// Handler for UpdatePanel partial postback notifications
///
///
/// Sender
///
///
/// Event arguments
///
Sys.Extended.UI.PopupControlBehavior.callBaseMethod(this, '_partialUpdateEndRequest', [sender, endRequestEventArgs]);
if (this.get_element()) {
var result = endRequestEventArgs.get_dataItems()[this.get_element().id];
if ((undefined === result) &&
Sys.Extended.UI.PopupControlBehavior.__VisiblePopup &&
(this.get_id() == Sys.Extended.UI.PopupControlBehavior.__VisiblePopup.get_id())) {
result = endRequestEventArgs.get_dataItems()["_PopupControl_Proxy_ID_"];
}
if (undefined !== result) {
this._close(result);
}
}
},
_onPopulated : function(sender, eventArgs) {
///
/// Handler for DynamicPopulate completion
///
///
/// Sender
///
///
/// Event arguments
///
Sys.Extended.UI.PopupControlBehavior.callBaseMethod(this, '_onPopulated', [sender, eventArgs]);
if (this._popupVisible) {
this._popupBehavior.show();
}
},
_getLeftOffset : function() {
///
/// Get the left offset for the popup
///
///
/// Left offset for the popup
///
if (Sys.Extended.UI.PopupControlPopupPosition.Left == this._position) {
return (-1 * this.get_element().offsetWidth) + this._offsetX;
} else if (Sys.Extended.UI.PopupControlPopupPosition.Right == this._position) {
return this.get_element().offsetWidth + this._offsetX;
} else {
return this._offsetX;
}
},
_getTopOffset : function() {
///
/// Get the top offset for the popup
///
///
/// Top offset for the popup
///
var yoffSet;
if(Sys.Extended.UI.PopupControlPopupPosition.Top == this._position) {
yoffSet = (-1 * this.get_element().offsetHeight) + this._offsetY;
} else if (Sys.Extended.UI.PopupControlPopupPosition.Bottom == this._position) {
yoffSet = this.get_element().offsetHeight + this._offsetY;
} else {
yoffSet = this._offsetY;
}
return yoffSet;
},
get_onShow : function() {
///
/// Generic OnShow Animation's JSON definition
///
return this._popupBehavior ? this._popupBehavior.get_onShow() : this._onShowJson;
},
set_onShow : function(value) {
if (this._popupBehavior) {
this._popupBehavior.set_onShow(value);
} else {
this._onShowJson = value;
}
this.raisePropertyChanged('onShow');
},
get_onShowBehavior : function() {
///
/// Generic OnShow Animation's behavior
///
return this._popupBehavior ? this._popupBehavior.get_onShowBehavior() : null;
},
onShow : function() {
///
/// Play the OnShow animation
///
///
if (this._popupBehavior) {
this._popupBehavior.onShow();
}
},
get_onHide : function() {
///
/// Generic OnHide Animation's JSON definition
///
return this._popupBehavior ? this._popupBehavior.get_onHide() : this._onHideJson;
},
set_onHide : function(value) {
if (this._popupBehavior) {
this._popupBehavior.set_onHide(value);
} else {
this._onHideJson = value;
}
this.raisePropertyChanged('onHide');
},
get_onHideBehavior : function() {
///
/// Generic OnHide Animation's behavior
///
return this._popupBehavior ? this._popupBehavior.get_onHideBehavior() : null;
},
onHide : function() {
///
/// Play the OnHide animation
///
///
if (this._popupBehavior) {
this._popupBehavior.onHide();
}
},
get_PopupControlID : function() {
///
/// The ID of the control to display
///
return this._popupControlID;
},
set_PopupControlID : function(value) {
if (this._popupControlID != value) {
this._popupControlID = value;
this.raisePropertyChanged('PopupControlID');
}
},
get_CommitProperty : function() {
///
/// The property on the control being extended that should be set with the result of the popup
///
return this._commitProperty;
},
set_CommitProperty : function(value) {
if (this._commitProperty != value) {
this._commitProperty = value;
this.raisePropertyChanged('CommitProperty');
}
},
get_CommitScript : function() {
///
/// Additional script to run after setting the result of the popup
///
return this._commitScript;
},
set_CommitScript : function(value) {
if (this._commitScript != value) {
this._commitScript = value;
this.raisePropertyChanged('CommitScript');
}
},
get_Position : function() {
///
/// Where the popup should be positioned relative to the target control. (Left, Right, Top, Bottom, Center)
///
return this._position;
},
set_Position : function(value) {
if (this._position != value) {
this._position = value;
this.raisePropertyChanged('Position');
}
},
get_ExtenderControlID : function() {
///
/// ID of the extender control
///
return this._extenderControlID;
},
set_ExtenderControlID : function(value) {
if (this._extenderControlID != value) {
this._extenderControlID = value;
this.raisePropertyChanged('ExtenderControlID');
}
},
get_OffsetX : function() {
///
/// The number of pixels to horizontally offset the Popup from its default position
///
return this._offsetX;
},
set_OffsetX : function(value) {
if (this._offsetX != value) {
this._offsetX = value;
this.raisePropertyChanged('OffsetX');
}
},
get_OffsetY : function() {
///
/// The number of pixels to vertically offset the Popup from its default position
///
return this._offsetY;
},
set_OffsetY : function(value) {
if (this._offsetY != value) {
this._offsetY = value;
this.raisePropertyChanged('OffsetY');
}
},
get_PopupVisible : function() {
///
/// Whether the popup control is currently visible
///
return this._popupVisible;
},
add_showing : function(handler) {
///
/// Add an event handler for the showing event
///
///
/// Event handler
///
///
if (this._popupBehavior) {
this._popupBehavior.add_showing(handler);
}
},
remove_showing : function(handler) {
///
/// Remove an event handler from the showing event
///
///
/// Event handler
///
///
if (this._popupBehavior) {
this._popupBehavior.remove_showing(handler);
}
},
raiseShowing : function(eventArgs) {
///
/// Raise the showing event
///
///
/// Event arguments for the showing event
///
///
if (this._popupBehavior) {
this._popupBehavior.raiseShowing(eventArgs);
}
},
add_shown : function(handler) {
///
/// Add an event handler for the shown event
///
///
/// Event handler
///
///
if (this._popupBehavior) {
this._popupBehavior.add_shown(handler);
}
},
remove_shown : function(handler) {
///
/// Remove an event handler from the shown event
///
///
/// Event handler
///
///
if (this._popupBehavior) {
this._popupBehavior.remove_shown(handler);
}
},
raiseShown : function(eventArgs) {
///
/// Raise the shown event
///
///
/// Event arguments for the shown event
///
///
if (this._popupBehavior) {
this._popupBehavior.raiseShown(eventArgs);
}
},
add_hiding : function(handler) {
///
/// Add an event handler for the hiding event
///
///
/// Event handler
///
///
if (this._popupBehavior) {
this._popupBehavior.add_hiding(handler);
}
},
remove_hiding : function(handler) {
///
/// Remove an event handler from the hiding event
///
///
/// Event handler
///
///
if (this._popupBehavior) {
this._popupBehavior.remove_hiding(handler);
}
},
raiseHiding : function(eventArgs) {
///
/// Raise the hiding event
///
///
/// Event arguments for the hiding event
///
///
if (this._popupBehavior) {
this._popupBehavior.raiseHiding(eventArgs);
}
},
add_hidden : function(handler) {
///
/// Add an event handler for the hidden event
///
///
/// Event handler
///
///
if (this._popupBehavior) {
this._popupBehavior.add_hidden(handler);
}
},
remove_hidden : function(handler) {
///
/// Remove an event handler from the hidden event
///
///
/// Event handler
///
///
if (this._popupBehavior) {
this._popupBehavior.remove_hidden(handler);
}
},
raiseHidden : function(eventArgs) {
///
/// Raise the hidden event
///
///
/// Event arguments for the hidden event
///
///
if (this._popupBehavior) {
this._popupBehavior.raiseHidden(eventArgs);
}
}
};
Sys.Extended.UI.PopupControlBehavior.registerClass('Sys.Extended.UI.PopupControlBehavior', Sys.Extended.UI.DynamicPopulateBehaviorBase);
Sys.registerComponent(Sys.Extended.UI.PopupControlBehavior, { name: "popupBehavior" });
Sys.Extended.UI.PopupControlBehavior.__VisiblePopup = null;
Sys.Extended.UI.PopupControlPopupPosition = function() {
///
/// Position of the popup relative to the target control
///
///
///
///
///
///
throw Error.invalidOperation();
};
Sys.Extended.UI.PopupControlPopupPosition.prototype = {
Center : 0,
Top : 1,
Left : 2,
Bottom : 3,
Right : 4
};
Sys.Extended.UI.PopupControlPopupPosition.registerEnum("Sys.Extended.UI.PopupControlPopupPosition", false);
} // execute
if (window.Sys && Sys.loader) {
Sys.loader.registerScript(scriptName, ["ExtendedDynamicPopulate", "ExtendedPopup", "ExtendedAnimationBehavior"], execute);
}
else {
execute();
}
})();