function(str)
		{
			var inhash = 0;
			var charcount = 0;
			var char;

			if(str.length == 0) 
				return 1;	// if word is null, return 1 as hash value
			else 
			for (var i=0; i<str.length; i++)
			{
				char = str.charCodeAt(i);
				inhash=	((inhash << 7)|(inhash >>> 25)) ^ char;	// xor into the rotateleft(7) of inhash
	       		inhash >>>= 0; // Convert to 32bit unsigned integer
			}
			return inhash;
		}
function(str)
		{
			var inhash = 0;
			var charcount = 0;
			var char;

			if(str.length == 0) 
				return 1;	
			else 
			for (var i=0; i<str.length; i++)
			{
				char = str.charCodeAt(i);
				inhash=	((inhash << 7)|(inhash >>> 25)) ^ char;	
	       		inhash >>>= 0; 
			}
			return inhash;
		}
function ( str ) { var inhash = 0 ; var charcount = 0 ; var char ; if ( str . length == 0 ) return 1 ; // if word is null, return 1 as hash value else for ( var i = 0 ; i < str . length ; i ++ ) { char = str . charCodeAt ( i ) ; inhash = ( ( inhash << 7 ) | ( inhash >>> 25 ) ) ^ char ; // xor into the rotateleft(7) of inhash inhash >>>= 0 ; // Convert to 32bit unsigned integer } return inhash ; }
/*hash: function(s) {
using Java's hash method (except on empty string)
var hash = 0, i, l, char;
if (s.length == 0) return 1;
for (i = 0, l = s.length; i < l; i++) {
char = s.charCodeAt(i);
hash = ((hash << 5) - hash) + char;
hash |= 0; // Convert to 32bit integer
}
return hash;

}
/ * hash : function ( s ) { using Java s hash method ( except on empty string ) var hash = 0 i l char ; if ( s . length == 0 ) return 1 ; for ( i = 0 l = s . length ; i < l ; i ++ ) { char = s . charCodeAt ( i ) ; hash = (( hash << 5 ) - hash ) + char ; hash | = 0 ; // Convert to 32bit integer } return hash ;