﻿/*

Recoloca o foco no controle após o PostBack do Ajax

Referência: http://couldbedone.blogspot.com/2007/08/restoring-lost-focus-in-update-panel.html

*/
var lastFocusedControlId = "";

function focusHandler(e) {
    try {
        document.activeElement = e.originalTarget;
    }
    catch (e) {

    }
}

function appInit() {
    try {
        if (typeof (window.addEventListener) !== "undefined") {
            window.addEventListener("focus", focusHandler, true);
        }

        Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(pageLoadingHandler);
        Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(pageLoadedHandler);
    }
    catch (e) {

    }
}

function pageLoadingHandler(sender, args) {
    try {
        lastFocusedControlId = typeof (document.activeElement) === "undefined" ? "" : document.activeElement.id;
    }
    catch (e) {

    }
}

function focusControl(targetControl) {
    try {
        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;
            }

            try {

                targetControl.focus();

                if (focusTarget) {
                    focusTarget.contentEditable = oldContentEditableSetting;
                }
            }
            catch (e) {

            }
        }
        else {
            targetControl.focus();
        }
    }
    catch (e) {

    }
}

function pageLoadedHandler(sender, args) {
    try {
        if (typeof (lastFocusedControlId) !== "undefined" && lastFocusedControlId != "") {
            var newFocused = $get(lastFocusedControlId);
            if (newFocused) {
                focusControl(newFocused);
            }
        }
    }
    catch (e) {

    }
}

try {
    Sys.Application.add_init(appInit);
}
catch (e) {

}
