var stdDefaultButton = null;
var stdDefaultButtonText = null;

function stdSubmitDefault() {
    if (stdDefaultButton) {
        stdDefaultButton.click();
        stdDefaultButton = null;
        return true;
    }
    
    return false
}

function getFieldFromEvent(theEvent) {
    var eventSource = null;
    
    if (theEvent.target) {
        eventSource = theEvent.target;
    }
    else if (theEvent.srcElement) {
        eventSource = theEvent.srcElement;
    }
    
    var theField = null;
    
    if (eventSource && eventSource.name && eventSource.type) {
        theField = eventSource;
    }

    return theField;
}

function isCommit(theEvent, theField) {
    if (theEvent.keyCode != 13 && theEvent.keyCode != 3) {
        return false;
    }
    
    if (theField && theField.type == "textarea") {
        return false;
    }
    
    return true;
}

function setupDefaultLink(theEvent, theDefaultLink) {
    var theField = getFieldFromEvent(theEvent);

    if (!isCommit(theEvent, theField)) {
        if (theDefaultLink) {
            if (stdDefaultButton) {
                stdDefaultButton.value = stdDefaultButtonText;
            }
            
            stdDefaultButton = document.mainform.elements[theDefaultLink];
            stdDefaultButtonText = stdDefaultButton.value;
            stdDefaultButton.value = "* " + stdDefaultButton.value + " *";
        }
        
        return true;
    }

    return false;
}

function stdKeyFilter(theEvent) {
    var theField = getFieldFromEvent(theEvent);
    
    if (theField) {
        document.mainform.elements["focus"].value=theField.name;
    }

    if (!isCommit(theEvent, theField)) {
        return true;
    }

    if (theField) {
//        theField.select();
    }

    if (stdSubmitDefault()) {
        if (theField) {
            theField.blur();
        }
    }
    
    return false;
}

function stdSetup(theFieldName, theDefaultLink) {
    if (theDefaultLink) {
        stdDefaultButton = document.mainform.elements[theDefaultLink];
        stdDefaultButtonText = stdDefaultButton.value;
        stdDefaultButton.value = "* " + stdDefaultButton.value + " *";
    }
    
    if (theFieldName) {
        var theField = document.mainform.elements[theFieldName];

        if (theField) {
            theField.focus();
            setCaretToEnd(theField);
        }
    }
}

function setCaretToEnd(theField) {
    if (theField.setSelectionRange) {
        theField.setSelectionRange(theField.value.length, theField.value.length);
    }
    else if (theField.createTextRange) {
        var range = theField.createTextRange();
        range.moveStart('character', theField.value.length);
        range.select();
    }
}