Installed leaflet in extlib
[mediagoblin.git] / extlib / leaflet / src / core / Util.js
CommitLineData
c5ba5b04
JW
1/*\r
2 * L.Util is a namespace for various utility functions.\r
3 */\r
4\r
5L.Util = {\r
6 extend: function(/*Object*/ dest) /*-> Object*/ { // merge src properties into dest\r
7 var sources = Array.prototype.slice.call(arguments, 1);\r
8 for (var j = 0, len = sources.length, src; j < len; j++) {\r
9 src = sources[j] || {};\r
10 for (var i in src) {\r
11 if (src.hasOwnProperty(i)) {\r
12 dest[i] = src[i];\r
13 }\r
14 }\r
15 }\r
16 return dest;\r
17 },\r
18\r
19 bind: function(/*Function*/ fn, /*Object*/ obj) /*-> Object*/ {\r
20 return function() {\r
21 return fn.apply(obj, arguments);\r
22 };\r
23 },\r
24\r
25 stamp: (function() {\r
26 var lastId = 0, key = '_leaflet_id';\r
27 return function(/*Object*/ obj) {\r
28 obj[key] = obj[key] || ++lastId;\r
29 return obj[key];\r
30 };\r
31 })(),\r
32 \r
33 requestAnimFrame: (function() {\r
34 function timeoutDefer(callback) {\r
35 window.setTimeout(callback, 1000 / 60);\r
36 }\r
37 \r
38 var requestFn = window.requestAnimationFrame || \r
39 window.webkitRequestAnimationFrame || \r
40 window.mozRequestAnimationFrame || \r
41 window.oRequestAnimationFrame || \r
42 window.msRequestAnimationFrame || \r
43 timeoutDefer;\r
44 \r
45 return function(callback, context, immediate) {\r
46 callback = context ? L.Util.bind(callback, context) : context;\r
47 if (immediate && requestFn === timeoutDefer) {\r
48 callback();\r
49 } else {\r
50 requestFn(callback);\r
51 }\r
52 };\r
53 })(),\r
54\r
55 limitExecByInterval: function(fn, time, context) { \r
56 var lock, execOnUnlock, args;\r
57 function exec(){\r
58 lock = false;\r
59 if (execOnUnlock) {\r
60 args.callee.apply(context, args);\r
61 execOnUnlock = false;\r
62 }\r
63 }\r
64 return function() {\r
65 args = arguments;\r
66 if (!lock) { \r
67 lock = true;\r
68 setTimeout(exec, time);\r
69 fn.apply(context, args);\r
70 } else {\r
71 execOnUnlock = true;\r
72 }\r
73 };\r
74 },\r
75 \r
76 falseFn: function() { return false; },\r
77 \r
78 formatNum: function(num, digits) {\r
79 var pow = Math.pow(10, digits || 5);\r
80 return Math.round(num * pow) / pow;\r
81 },\r
82 \r
83 setOptions: function(obj, options) {\r
84 obj.options = L.Util.extend({}, obj.options, options);\r
85 },\r
86 \r
87 getParamString: function(obj) {\r
88 var params = [];\r
89 for (var i in obj) {\r
90 if (obj.hasOwnProperty(i)) {\r
91 params.push(i + '=' + obj[i]);\r
92 }\r
93 }\r
94 return '?' + params.join('&');\r
95 }\r
96};\r