﻿//This script keeps your focus in the control you were in after the ajax postback
//
//Created by: Yuriy Solodkyy
//On: 8/1/2007
//Url: http://couldbedone.blogspot.com/2007/08/restoring-lost-focus-in-update-panel.html

var lastFocusedControlId = "";
var isTeamDetails = false;

function focusHandler(e) {
    //focus = true messes up the dhtmlxComboBox in Team Details
    if (isTeamDetails == false) {
        if (e.originalTarget) {
            if (typeof (e.originalTarget.focus) == "function") {
                e.originalTarget.focus();
            }
            else {
                e.originalTarget.focus = true;
            }
        }
    }
    else {
        e.originalTarget.focus = true;
    }
}

function appInit() {
    if (typeof(window.addEventListener) !== "undefined") {
        window.addEventListener("focus", focusHandler, true);
    }
    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 ? 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;
        }
        try
        {
            targetControl.focus();
            if (focusTarget) {
                focusTarget.contentEditable = oldContentEditableSetting;
            }
        }
        catch(err)
        {
        }
    }
    else {
        targetControl.focus();
    }
}

function pageLoadedHandler(sender, args) {
    if (typeof(lastFocusedControlId) !== "undefined" && lastFocusedControlId != "") {
        var newFocused = $get(lastFocusedControlId);
        if (newFocused) {
            focusControl(newFocused);
        }
    }
}

Sys.Application.add_init(appInit);
