/** * Socket.IO client * * @author Guillermo Rauch * @license The MIT license. * @copyright Copyright (c) 2010 LearnBoost */ (function(){ var io = this.io, pageLoaded = false; io.util = { ios: false, load: function(fn){ if (/loaded|complete/.test(document.readyState) || 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.load(function(){ pageLoaded = true; }); })();