tagSelected function is buggy. If there is a tag that contains dot (ie. email address) then you can add it multiple times.
Perhaps comparison should be:
(compareable.search(searchQuery) > -1
instead of
compareable == searchQuery
in tagSelected function