/**
 * @namespace Allows access to webRTC and other features for browsers that are
 * not conforming to the latest standard (yet). Supported Browsers are: 
 * Chrome, Opera and Firefox (soon).
 */
var compatibility = (function() {
	var lastTime = 0,
	
		URL = window.URL || window.webkitURL,
	
		requestAnimationFrame = function(callback, element) {
			var requestAnimationFrame =
				window.requestAnimationFrame		|| 
				window.webkitRequestAnimationFrame	|| 
				window.mozRequestAnimationFrame		|| 
				window.oRequestAnimationFrame		||
				function(callback, element) {
		            var currTime = new Date().getTime();
		            var timeToCall = Math.max(0, 16 - (currTime - lastTime));
		            var id = window.setTimeout(function() {
		            	callback(currTime + timeToCall);
		            }, timeToCall);
		            lastTime = currTime + timeToCall;
		            return id;
		        };
	
			return requestAnimationFrame.call(window, callback, element);
		},
		
		getUserMedia = function(options, success, error) {
			var getUserMedia =
				window.navigator.getUserMedia ||
				window.navigator.mozGetUserMedia ||
				window.navigator.webkitGetUserMedia ||
				function(options, success, error) {
					error();
				};
			
			return getUserMedia.call(window.navigator, options, success, error);
		};

	return {
		URL: URL,
		requestAnimationFrame: requestAnimationFrame,
		getUserMedia: getUserMedia
	};
})();