// add new selectors
jQuery.extend(
    jQuery.expr[":"],
    {
        // add selector for :focus pseudo class
        focus: function(node, index, match, nodeList) {
            if (typeof document.activeElement == 'undefined') {
                return false;
            } else {
                return node == document.activeElement;
            }
        },
        // add selector for :filled form pseudo class
        filled: function(node, index, match, nodeList) {
            var nodeName = node.nodeName.toLowerCase(),
                inputType = 'text';
            if (nodeName === 'input') {
                if (node.getAttribute('type') !== null) {
                    inputType = node.getAttribute('type').toLowerCase();
                }
                if (inputType === 'text' ||
                    inputType === 'password' ||
                    inputType === 'hidden' ||
                    inputType === 'file'
                ) {
                    return node.value !== '';
                }
            } else if (nodeName == 'textarea') {
                return node.value !== '';
            }
            return false;
        }
    }
);

