﻿var lastFocusedControlId = "";

function focusHandler(e) {
	// browser check as only required in IE8 and below
	var browserVersion = -1;
	if (navigator.appVersion.indexOf("MSIE") === -1) {
		return;
	}
	browserVersion = parseFloat(navigator.appVersion.split("MSIE")[1]);
	if (browserVersion > 8) {
		return;
	}
		
	document.activeElement = e.originalTarget;
}

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.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();
		}
		catch (e) {
		    
		}
		if (focusTarget) {
			focusTarget.contentEditable = oldContentEditableSetting;
		}
	}
	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);
