Generate a "strong" password from a passphrase and URL

Given a passphrase and URL, generate a password that contains lowercase letters, uppercase letters, numbers and symbols. This password generation is deterministic and created completely client-side, so no information is transmitted outside of the browser. If you have multiple accounts on the same site, then you can optionally provide a username.