the google.maps.LatLngBounds.extend takes a google.maps.LatLng object as an argument.
not:
for (var p=0; p<pointsArray.length; p++) {
points.push(new google.maps.LatLng(pointsArray[p][0], pointsArray[p][1]));
bounds.extend(pointsArray[p][0], pointsArray[p][1]);
}
instead do:
for (var p=0; p<pointsArray.length; p++) {
var pt = new google.maps.LatLng(pointsArray[p][0], pointsArray[p][1]);
points.push(pt);
bounds.extend(pt);
}