And you are right, it is an Immediately-Invoked Function Expression (IIFE)
You can rewrite
!+-+-+!+-+-+!+-+-+!+-+-+!+-+-+!+-+-+!+-+-+!+-+-+! function(d, w){ ... }(document, window);
to
!function() { ... }()
and it still works. This is because ! is a unary operator (just like +, -, and ~ -- see https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Expressions_and_Operators). After an unary operator an expression is expected (and evaluated!). The expression can be a function call.
However
!function() { ... }()
is just another expression, so you can put another unary operator in front of it:
+!function() { ... }()
You can continue this pattern as you wish.
Note: Invoking an anonymous function this way, ignores the return value of the function. So only use this, if you are not interested in the return value.
Edit: Added an excellent reference to http://benalman.com/news/2010/11/immediately-invoked-function-expression/ which Daff mentioned in his answer.
!operator tricky .. !+,-, and!are all unary operators doing the same thing as the lone!in the linked duplicate.+,-, or!is needed for the function to be parsed as a function expression (rather than a function declaration).