__fieldValue__ = function(element, successful) {
    var name = element.name,
        type = element.type,
        tag = element.tagName.toLowerCase(),
        index,
        array,
        options,
        option,
        one,
        i, imax,
        value;

    if (typeof successful == 'undefined')  {
        successful = true;
    }

    if (successful && (!name || element.disabled || type == 'reset' || type == 'button' ||
             (type == 'checkbox' || type == 'radio') &&  !element.checked ||
             (type == 'submit' || type == 'image') &&
             element.form && element.form.clk != element || tag === 'select' &&
             element.selectedIndex === -1)) {
            return null;
    }

    if (tag === 'select') {
        index = element.selectedIndex;
        if (index < 0) {
            return null;
        }
        array = [];
        options = element.options;
        one = (type == 'select-one');
        imax = (one ? index+1 : options.length);
        i = (one ? index : 0);
        for( i; i < imax; i++) {
            option = options[i];
            if (option.selected) {
                value = option.value;
                if (one) {
                    return value;
                }
                array.push(value);
            }
        }
        return array;
    }
    return element.value;
}
Returns the value of the field element.

The successful argument controls whether or not the field element must be 'successful'
(per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
The default value of the successful argument is true.  If the given element is not
successful and the successful arg is not false then the returned value will be null.

Note: If the successful flag is true (default) but the element is not successful, the return will be null
Note: The value returned for a successful select-multiple element will always be an array.
Note: If the element has no value the return value will be undefined.

@name fieldValue
@param Element el The DOM element for which the value will be returned
@param Boolean successful true if value returned must be for a successful controls (default is true)
@type String or Array<String> or null or undefined