Array#implode is really just Array#join. Replace and remove.
Either I don't understand what this method does, or it is very confused.
First, ucfirst is a method, not a parameter. Second, there is no need to ucfirst, then lowercase again. Intention seems to point to removing the toLowerCase().
Remove temp variable name and return struct directly.

-Remove ternary statements checking != false and replace with simpler construct
-Remove ternary statements checking != "" as "".trim() returns ""
Make static and fix scope.
Convert to use JS native methods for some functions. Remove now unused Array#in_array.
We have the variable, we might as well use it.
Extract the first iteration from the loop to simplify the loop.
We should only play with our own toys.
Wrap in a closure. We'll play in our own sandbox.
Split off ignore periods into reusable method.
Fix is_camel_case regexes.
Add a few more suffixes to the common suffix list.

Source and definitions: http://www.lehigh.edu/lewis/suffix.htm
Fix up the code a bit.

-Prefer === over ==
-Put in ()s around return boolean test to match rest of code
-Don't lose your trailing ;s
Return the static NameParse if new NameParse() is called, for compatibility.
We already handle this, and it will produce and error if left.
Add tests to check for correctness of parser.

-Test suite is QUnit http://qunitjs.com/
-Tests copied from fork of this project at https://github.com/chris-rock/node-humanname/blob/012dd6b0cfbb21468121d38b4911767697927c0d/test/test.js
-All tests pass. Yay!
Move browser shims into a separate file so they can be included as needed.
Fixed README example.
Merge pull request #6 from cbojar/master

Quite a few changes