a javascript perlin noise generator