92 if (typeof window !==
"undefined" && typeof window.navigator !==
"undefined")
96 if (typeof window !==
"undefined" && window.opera)
104 else if (typeof window !==
"undefined" && window.attachEvent)
137 var versionStart =
USER_AGENT.indexOf(
"AppleWebKit/") +
"AppleWebKit/".length,
138 versionEnd =
USER_AGENT.indexOf(
" ", versionStart),
139 versionString =
USER_AGENT.substring(versionStart, versionEnd),
140 versionDivision = versionString.indexOf(
'.'),
141 majorVersion = parseInt(versionString.substring(0, versionDivision)),
142 minorVersion = parseInt(versionString.substr(versionDivision + 1));
152 if (majorVersion < 532 || (majorVersion === 532 && minorVersion < 6))
156 if (majorVersion < 537)
163 if (majorVersion > 533)
181 version = (index === -1) ? 2.0 : parseFloat(
USER_AGENT.substring(index +
"Firefox".length + 1));
194 if (typeof document !=
"undefined")
196 var canvasElement = document.createElement(
"canvas");
198 if (canvasElement && canvasElement.getContext)
203 var context = document.createElement(
"canvas").getContext(
"2d");
205 if (context && context.setTransform && context.transform)
209 var DOMElement = document.createElement(
"div");
212 if (DOMElement.innerText != undefined)
214 else if (DOMElement.textContent != undefined)
217 var DOMInputElement = document.createElement(
"input");
218 if (
"oninput" in DOMInputElement)
220 else if (typeof DOMInputElement.setAttribute ===
"function")
222 DOMInputElement.setAttribute(
"oninput",
"return;");
223 if (typeof DOMInputElement.oninput ===
"function")
287 var lowerProperty = aProperty.toLowerCase();
294 var testElement = document.createElement(
'div');
296 switch (lowerProperty)
298 case 'transitionend':
300 'WebkitTransition' :
'webkitTransitionEnd',
301 'MozTransition' :
'transitionend',
302 'OTransition' :
'oTransitionEnd',
303 'msTransition' :
'MSTransitionEnd',
304 'transition' :
'transitionend'
310 var prefixes = [
"Webkit",
"Moz",
"O",
"ms"],
311 strippedProperty = aProperty.split(
'-').join(
' '),
312 capProperty = [strippedProperty capitalizedString].split(
' ').join(
'');
314 for (var i = 0; i < prefixes.length; i++)
317 if (prefixes[i] + aProperty in testElement.style)
319 r = prefixes[i] + aProperty;
322 else if (prefixes[i] + capProperty in testElement.style)
324 r = prefixes[i] + capProperty;
329 if (!r && lowerProperty in testElement.style)
346 if (!browserProperty)
350 'Webkit':
'-webkit-',
356 for (var prefix in prefixes)
358 if (browserProperty.substring(0, prefix.length) == prefix)
360 var browserPropertyWithoutPrefix = browserProperty.substring(prefix.length),
361 parts = browserPropertyWithoutPrefix.match(/[A-
Z][a-z]+/g);
364 if (parts && parts.length > 0)
365 browserPropertyWithoutPrefix = parts.join(
"-");
367 return prefixes[prefix] + browserPropertyWithoutPrefix.toLowerCase();
371 var parts = browserProperty.match(/[A-
Z][a-z]+/g);
373 if (parts && parts.length > 0)
374 browserProperty = parts.join(
"-");
376 return browserProperty.toLowerCase();