﻿
var beenFocused = false;
document.onmousedown = markFocused;
function markFocused() {
    beenFocused = true;
}

/**
 * Track the element with focus.
 */
var focusedElement = null;
if (document.addEventListener) {
    document.addEventListener('focus', trackFocused, false);
} else if (document.attachEvent) {
    document.attachEvent('onFocus', trackFocused);
}
function trackFocused(e) {
    if (window.event) {
        focusedElement = window.event.target;
    } else {
        focusedElement = e.target;
    }
}

function setFocus() {
    var sidebarSearch;
    // search for a tabIndexed field to focus on
    for(var firstIndex=1; firstIndex < 5; firstIndex ++ ){
        var nextIndex = firstIndex;
        for (var frm = 0; frm < document.forms.length; frm++) {
            for (var fld = 0; fld < document.forms[frm].elements.length; fld++) {
                var elt = document.forms[frm].elements[fld];
                if ( elt.tabIndex != nextIndex) continue;
                if ((elt.type == "text" || elt.type == "textarea" || elt.type == "password") && !hiddenOrDisabled(elt)
                   && elt.name != "sbstr" &&  elt.name.indexOf("owner") != 0 && elt.name.indexOf("tsk1") != 0 && elt.name.indexOf("evt1") != 0) {
                    elt.focus();
                    if (elt.type == "text" && !hiddenOrDisabled(elt)) {
                        elt.select();
                    }
                    return true;
                } else {
                    nextIndex++;
                    fld = 0;
                }
            }
        }
    }

    // failed to find a tabIndexed field, try to find the field based on it's natural position.
    for (var frm = 0; frm < document.forms.length; frm++) {
        for (var fld = 0; fld < document.forms[frm].elements.length; fld++) {
            var elt = document.forms[frm].elements[fld];
            // skip buttons, radio, or check-boxes
            // to skip "select" types, remove from if statement
            if ((elt.type == "text" || elt.type == "textarea" || elt.type == "password") && !hiddenOrDisabled(elt)) {
                if (elt.name == "sbstr" && document.forms[frm].name == "sbsearch") {
                    sidebarSearch = elt;
                } else if (elt.name.indexOf("owner") != 0 && !hiddenOrDisabled(elt)) {
                    elt.focus();
                    // select text in text field or textarea
                    if (elt.type == "text" && !hiddenOrDisabled(elt)) {
                        elt.select();
                    }
                    return true;
                }
            }
        }
    }

    return true;
}
function hiddenOrDisabled (element){
    if(element==null) {return true};
    return (element.type == "hidden" || element.disabled);
}
function setFocusOnLoad() {
    if (!beenFocused) { setFocus(); }
}
