String Hash function
//this uses a 32bit hash with a 1/100000 collison prob for a 300 string cache
//this can has hash a 5k string 15000 per sec
//so lets say about 500 messages per msec
String.prototype.hashCode = function() {
var hash = 0, i, chr, len;
if (this.length == 0) return hash;
for (i = 0, len = this.length; i < len; i++) {
chr = this.charCodeAt(i);
hash = ((hash << 5) - hash) + chr;
hash = hash && hash; // hash |= 0; Convert to 32bit integer
}
return hash;
};