/* http://couldbedone.blogspot.com/2007/08/restoring-lost-focus-in-update-panel.html */
var lastFocusedControlId = "";
function focusHandler(e) {
    document.activeElement = e.originalTarget;
}
function appInit() {

    if (typeof (window.addEventListener) !== "undefined" && Sys.Browser.agent === Sys.Browser.InternetExplorer) {
        window.addEventListener("focus", focusHandler, true);
    } 
    if (Sys.WebForms != null) {
        Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(pageLoadingHandler);
        Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(pageLoadedHandler);
    }
}
function pageLoadingHandler(sender, args) {
    lastFocusedControlId = typeof (document.activeElement) === "undefined" ? "" : document.activeElement.id;
}
function focusControl(targetControl) {
    if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
        var focusTarget = targetControl;
        if (focusTarget && (typeof (focusTarget.contentEditable) !== "undefined")) {
            oldContentEditableSetting = focusTarget.contentEditable;
            focusTarget.contentEditable = false;
        }
        else {
            focusTarget = null;
        }
        /* targetControl.focus(); */
        $("#" + targetControl.id).focus();
        if (focusTarget) {
            focusTarget.contentEditable = oldContentEditableSetting;
        }
    }
    else {
        /* targetControl.focus(); */
        $("#" + targetControl.id).focus();
    }
}
function pageLoadedHandler(sender, args) {
    if (typeof (lastFocusedControlId) !== "undefined" && lastFocusedControlId != "") {
        var newFocused = $get(lastFocusedControlId);
        if (newFocused) {
            focusControl(newFocused);
        }
    }
}
Sys.Application.add_init(appInit);

