6a2fa35157888d53bfac131c4bbca913bd64c60b
[platform/framework/web/web-ui-fw.git] / libs / js / domready.js
1 // domready.js (https://github.com/ded/domready)
2 // NB not minified, as it the minified version doesn't work
3 // License: MIT license
4 !function (context, doc) {
5   var fns = [], ol, fn, f = false,
6       testEl = doc.documentElement,
7       hack = testEl.doScroll,
8       domContentLoaded = 'DOMContentLoaded',
9       addEventListener = 'addEventListener',
10       onreadystatechange = 'onreadystatechange',
11       loaded = /^loade|c/.test(doc.readyState);
12
13   function flush(i) {
14     loaded = 1;
15     while (i = fns.shift()) { i() }
16   }
17   doc[addEventListener] && doc[addEventListener](domContentLoaded, fn = function () {
18     doc.removeEventListener(domContentLoaded, fn, f);
19     flush();
20   }, f);
21
22
23   hack && doc.attachEvent(onreadystatechange, (ol = function () {
24     if (/^c/.test(doc.readyState)) {
25       doc.detachEvent(onreadystatechange, ol);
26       flush();
27     }
28   }));
29
30   context['domReady'] = hack ?
31     function (fn) {
32       self != top ?
33         loaded ? fn() : fns.push(fn) :
34         function () {
35           try {
36             testEl.doScroll('left');
37           } catch (e) {
38             return setTimeout(function() { context['domReady'](fn) }, 50);
39           }
40           fn();
41         }()
42     } :
43     function (fn) {
44       loaded ? fn() : fns.push(fn);
45     };
46
47 }(this, document);
48