docs: function(url, redirectUri, options) {
  
  		var documentElement = document.documentElement;
  
  		// Multi Screen Popup Positioning (http://stackoverflow.com/a/16861050)
  		// Credit: http://www.xtf.dk/2011/08/center-new-popup-window-even-on.html
  		// Fixes dual-screen position                         Most browsers      Firefox
  
  		if (options.height && options.top === undefined) {
  			var dualScreenTop = window.screenTop !== undefined ? window.screenTop : screen.top;
  			var height = screen.height || window.innerHeight || documentElement.clientHeight;
  			options.top = parseInt((height - options.height) / 2, 10) + dualScreenTop;
  		}
  
  		if (options.width && options.left === undefined) {
  			var dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : screen.left;
  			var width = screen.width || window.innerWidth || documentElement.clientWidth;
  			options.left = parseInt((width - options.width) / 2, 10) + dualScreenLeft;
  		}
  
  		// Convert options into an array
  		var optionsArray = [];
  		Object.keys(options).forEach(function(name) {
  			var value = options[name];
  			optionsArray.push(name + (value !== null ? '=' + value : ''));
  		});
  
  		// Call the open() function with the initial path
  		//
  		// OAuth redirect, fixes URI fragments from being lost in Safari
  		// (URI Fragments within 302 Location URI are lost over HTTPS)
  		// Loading the redirect.html before triggering the OAuth Flow seems to fix it.
  		//
  		// Firefox  decodes URL fragments when calling location.hash.
  		//  - This is bad if the value contains break points which are escaped
  		//  - Hence the url must be encoded twice as it contains breakpoints.
  		if (navigator.userAgent.indexOf('Safari') !== -1 && navigator.userAgent.indexOf('Chrome') === -1) {
  			url = redirectUri + '#oauth_redirect=' + encodeURIComponent(encodeURIComponent(url));
  		}
  
  		var popup = window.open(
  			url,
  			'_blank',
  			optionsArray.join(',')
  		);
  
  		if (popup && popup.focus) {
  			popup.focus();
  		}
  
  		return popup;
  	}