Fixed chat service line endings
Merge remote-tracking branch 'upstream/master' into who-gravatar-template
Add better dateline breaks when scrolling

* A date will always be listed at the top of the scrollback even if the messages
  are on the same day.
* When scrolling back further, that top date break will be removed if the two
  messages it falls between are not actually on different dates.
Fix to date lines showing up while chat is open

Date lines are only added for chat messages, so if you have a chat message at 11
PM and then a chat message at 1 AM, it would add a message to mark the date
change. However, if you have some other message, say someone joining the channel
at 12:30 AM, not only will a date line not be added, but when the chat message
at 1 AM comes in, it thinks the last message was at 12:30 AM and not 11 PM.
Fix to removing non-date headers with timestamps

Most everything that gets posted to chat has a timestamp data attribute. We'll
need to add a class to uniquely identify a list-header as being a date header.
Additionally, the header's timestamp attribute does not actually hold the date
that it represents. Instead we just parse the contents as a date object.
Clean up some user transitions in message history

* Messages after a date header should always show the user name and avatar
* When chat scrollback is prepended, if two messages from the same user are
  joined at the border, remove the details from the latter so it flows better.
Swap out double quotes for single
Merge pull request #551 from nschonni/who-gravatar-template

Who gravatar template with collapsable content
Merge pull request #545 from dpatti/dateline

Improvements to date headers in chat
Add click-to-message for users in chat and on list
Merge pull request #546 from dpatti/click-name

Add click-to-message for users in chat and on list
added favicon, 32, and 64 icons to page head
Fix to user names after non-messages

Before, a change was made that made timestamps show up correctly when non-chat
messages were entered before the chat was. As an unintended side-effect, the
user names were not being displayed after a non-chat message if that user spoke
before it, which made for some odd dialog.

To be more structured, all message appending was separated to a single function
regardless of message. There it is checked to see whether a new date header is
necessary or not. Now we have accurate date headers and user names appearing
when they should be.

Note that while no prepending code was touched, as it is not affected, it might
be something to refactor later.
fixing formatting of script bundles and removing multiple shortcut declarations for icons
fix for missing users in user list. if someone starts typing they will be added if they're missing
swapped the order of if statements to ensure that even if YOU are missing from the user list you will be added when you start typing
Fix a scrolling bug reproducible in Chrome stable

When a scrollable element is hidden and re-shown, as tabs are in the case of
JabbR, it appears that the internal position is maintained, but upon attempting
to scroll, the scroll bar will jump to the top. In JabbR, scrollToBottom is
always called when tabs are changed; however, when the scrollTop is set to its
current value, nothing changes internally. This means that if the user was at
the bottom of the scroll when switching tabs, upon switching back and scrolling
down, the chat will jump to the top.

Additionally, the scrollTop value was set to the scrollHeight of the element,
which is not the proper scrollTop, since you must subtract the height of the
actual element itself. This is normally not a problem, since the browser will
create an upper bound, but in this fix, subtracting 1 will still make it bounded
by the correct value and thus not actually change the scroll value which is
necessary to workaround the bug.
Merge pull request #552 from dpatti/name-fix

Fix to user names after non-messages
Merge pull request #555 from dpatti/scroll-fix

Fix a scrolling bug reproducible in Chrome stable
Improve the automatic scrolling for rich content

Three notable instances were corrected here:

* When someone enters an image link, once that image loads the window may scroll
  up past the bottom edge of the screen.
* When you join a room with images, as they load they will push the scroll up.
* When you paste content, it is later replaced with the full version from the
  server, which causes chat to be scrolled up.

The latter of the three was the most simple case, and it involved simply placing
the ui.replaceMessage() function into the scrollIfNecessary wrapper.

In the case of the images, there was already a system in place to force scroll
after 850ms in the case of a new message; however, this was not working since it
required you to already be at the end of the chat scroll. A new method was added
that can be called to attach load event handlers to elements within those
messages which will correct the scroll position only if the user himself has not
touched it in the meantime.

Deciding which elements to attach the load event handler to is done in the
utility function expandableContent(), which uses a hard-coded list of selectors
to search for within the messages provided. Most rich content in JabbR has
hard-coded dimensions, but the one exception that I found in my testing was
images for obvious reasons. If there are more, they can be easily added to the
array. At the very least, the functionality will not regress as it was never
working in the first place.