code: function calcBrowser(customUa) {
  			var sUserAgent = (customUa || ua).toLowerCase(); // use custom user-agent if given
  
  			var rwebkit = /(webkit)[ \/]([\w.]+)/;
  			var ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/;
  			var rmsie = /(msie) ([\w.]+)/;
  			var rmsie11 = /(trident)\/[\w.]+;.*rv:([\w.]+)/;
  			var redge = /(edge)[ \/]([\w.]+)/;
  			var rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/;
  
  			// WinPhone IE11 and MS Edge userAgents contain "WebKit" and "Mozilla" and therefore must be checked first
  			var browserMatch = redge.exec(sUserAgent) ||
  				rmsie11.exec(sUserAgent) ||
  				rwebkit.exec(sUserAgent) ||
  				ropera.exec(sUserAgent) ||
  				rmsie.exec(sUserAgent) ||
  				sUserAgent.indexOf("compatible") < 0 && rmozilla.exec(sUserAgent) || [];
  
  			var oRes = {
  				browser: browserMatch[1] || "",
  				version: browserMatch[2] || "0"
  			};
  			oRes[oRes.browser] = true;
  			return oRes;
  		}
docs: /*!
  Taken from jQuery JavaScript Library v1.7.1
  http://jquery.com/
  
  Copyright 2011, John Resig
  Dual licensed under the MIT or GPL Version 2 licenses.
  http://jquery.org/license
  
  Includes Sizzle.js
  http://sizzlejs.com/
  Copyright 2011, The Dojo Foundation
  Released under the MIT, BSD, and GPL Licenses.
  
  Date: Mon Nov 21 21:11:03 2011 -0500