/** * Socket.IO client * * @author Guillermo Rauch * @license The MIT license. * @copyright Copyright (c) 2010 LearnBoost */ (function(){ var _pageLoaded = false; io.util = { ios: false, load: function(fn){ if (document.readyState == 'complete' || _pageLoaded) return fn(); if ('attachEvent' in window){ window.attachEvent('onload', fn); } else { window.addEventListener('load', fn, false); } }, inherit: function(ctor, superCtor){ // no support for `instanceof` for now for (var i in superCtor.prototype){ ctor.prototype[i] = superCtor.prototype[i]; } }, indexOf: function(arr, item, from){ for (var l = arr.length, i = (from < 0) ? Math.max(0, l + from) : from || 0; i < l; i++){ if (arr[i] === item) return i; } return -1; }, isArray: function(obj){ return Object.prototype.toString.call(obj) === '[object Array]'; }, merge: function(target, additional){ for (var i in additional) if (additional.hasOwnProperty(i)) target[i] = additional[i]; } }; io.util.ios = /iphone|ipad/i.test(navigator.userAgent); io.util.android = /android/i.test(navigator.userAgent); io.util.opera = /opera/i.test(navigator.userAgent); io.util.load(function(){ _pageLoaded = true; }); })();