function trim (s) { return s.replace(/^\s+/, "").replace(/\s+$/, ""); } function strip (s) { return trim(s).replace(/\W+/, ""); } function sanitize (s) { return s.replace(/&/g, "&").replace(//g, ">").replace(/\"/g, """); } function scrollToBottom (el) { try { $(el).scrollTop( $(el)[0].scrollHeight ) } catch (err) { } } var Trig = { distanceBetween2Points: function ( point1, point2 ) { var dx = point2.x - point1.x; var dy = point2.y - point1.y; return Math.sqrt( Math.pow( dx, 2 ) + Math.pow( dy, 2 ) ); }, angleBetween2Points: function ( point1, point2 ) { var dx = point2.x - point1.x; var dy = point2.y - point1.y; return Math.atan2( dx, dy ); }, magnitude: function (point) { return Math.sqrt( Math.pow( point.x, 2 ) + Math.pow( point.y, 2 ) ); } } function fib (f) { for (var i = 1, n = 1; n < 200; i++, n += i) f(n); } function rand(x) { return Math.random() * x; } function randInt(x) { return Math.floor(Math.random() * x); } function clamp(x,a,b) { return Math.min(Math.max(x,a),b); }