CINXE.COM
QuickBooks Time :: Test Drive
<!doctype html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <base href="https://app.tsheets.com/testdrive"> <title>QuickBooks Time :: Test Drive</title> <meta name="description" content=""> <meta name="keywords" content=""> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="referrer" content="no-referrer"> <meta name="ius-theme" content="intuit-ecosystem"> <link rel="shortcut icon" type="image/ico" href="/images/branded_images/favicon-32x32.png"> <link rel="stylesheet" type="text/css" href="/css.php"> <script type="text/javascript" src="/js.php" language="javascript"></script> <style> body { background-color: #FFFFFF; } a:link, a:visited, a:active { color: #c33c27; } </style> <script src="https://www.google.com/recaptcha/api.js" async defer></script> <script type="text/javascript"> var xajaxRequestUri="https://app.tsheets.com/ajax?direct"; var xajaxWaitCursor=true; var xajaxDefinedGet=0; var xajaxDefinedPost=1; var xajaxLoaded=false; if ("") { sessionStorage.setItem("page_origin", ""); } else { sessionStorage.removeItem("page_origin"); } function xajax_window_save_position(){return xajax.call("window_save_position", arguments, 1);} function xajax_suggest(){return xajax.call("suggest", arguments, 1);} function xajax_window_open(){return xajax.call("window_open", arguments, 1);} function xajax_window_submit(winc, args, fn, options) { return xajax.window_submit(winc, args, fn, options); } function xajax_json_post(winc, fn, data, settings) { return xajax.json_post(winc, fn, data, settings); } function xajax_no_auth_json_post(winc, fn, data, settings) { return xajax.json_post(winc, '--noauth--'+fn, data, settings); } </script> <meta name="ius-theme" content="intuit-ecosystem"> <style> html, body { background-color: #193048; height:100%; } #demo-test-drive-root { text-align: center; margin: 100px; } #demo-test-drive-centered-wrapper { flex-basis: 40%; } #demo-test-drive-main-content { background: white; padding: 10px; clear: both; } #demo-test-drive-logo { float: left; height: 50px; padding-bottom: 10px; } #demo-test-drive-title-container { margin: 20px; } .g-recaptcha { margin: 20px; } .center { display: flex; justify-content: center; } </style> <link rel="stylesheet" type="text/css" href="/css/ts_message_box.css"><!-- Decibel session capturing --> <link rel="dns-prefetch" href="//cdn.decibelinsight.net"> <link rel="dns-prefetch" href="//collection.decibelinsight.net"> <script type="text/javascript"> // <![CDATA[ (function(d,e,c,i,b,el,it) { d._da_=d._da_||[];_da_.oldErr=d.onerror;_da_.err=[]; d.onerror=function(){_da_.err.push(arguments);_da_.oldErr&&_da_.oldErr.apply(d,Array.prototype.slice.call(arguments));}; d.DecibelInsight=b;d[b]=d[b]||function(){(d[b].q=d[b].q||[]).push(arguments);}; el=e.createElement(c),it=e.getElementsByTagName(c)[0];el.async=1;el.src=i;it.parentNode.insertBefore(el,it); })(window,document,'script','https://cdn.decibelinsight.net/i/13878/264967/di.js','decibelInsight'); // ]]> </script> <meta http-equiv="X-Translated-By" content="Google"> <meta http-equiv="X-Translated-To" content="en"> <script type="text/javascript" src="https://www.gstatic.com/_/translate_http/_/js/k=translate_http.tr.en_GB.tKc6KWkFf-8.O/am=gAE/d=1/rs=AN8SPfrf36LIV3DkhtRBGWFnLWWzaykPyw/m=corsproxy" data-sourceurl="https://app.tsheets.com/testdrive"></script> <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" rel="stylesheet"> <script type="text/javascript" src="https://www.gstatic.com/_/translate_http/_/js/k=translate_http.tr.en_GB.tKc6KWkFf-8.O/am=gAE/d=1/exm=corsproxy/ed=1/rs=AN8SPfrf36LIV3DkhtRBGWFnLWWzaykPyw/m=phishing_protection" data-phishing-protection-enabled="false" data-forms-warning-enabled="true" data-source-url="https://app.tsheets.com/testdrive"></script> <meta name="robots" content="none"> </head> <body> <script type="text/javascript" src="https://www.gstatic.com/_/translate_http/_/js/k=translate_http.tr.en_GB.tKc6KWkFf-8.O/am=gAE/d=1/exm=corsproxy,phishing_protection/ed=1/rs=AN8SPfrf36LIV3DkhtRBGWFnLWWzaykPyw/m=navigationui" data-environment="prod" data-proxy-url="https://app-tsheets-com.translate.goog" data-proxy-full-url="https://app-tsheets-com.translate.goog/testdrive?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=auto" data-source-url="https://app.tsheets.com/testdrive" data-source-language="auto" data-target-language="en" data-display-language="auto" data-detected-source-language="en" data-is-source-untranslated="false" data-source-untranslated-url="https://translate.google.com/website?sl=auto&tl=en&hl=auto&u=https://app.tsheets.com/testdrive&anno=2" data-client="tr"></script><!-- Entire Site is in this div --> <div style="vertical-align: top; clear: both; text-align: left;"><span id="window_container"></span> <script type="text/javascript"> if(typeof(easyxdm_ready)=='undefined'){easyxdm_ready=false;xajax_socket=false;ts.ajax={_ajax_pools:[],_xdm_handles:{},_use_server_timer:null,_server_switch_attempts:0,_switching_pools:false,_server:{pool:0,index:-1},shuffle_ajax_server_lists:function(){jconsole('DEBUG => ajax.shuffle_ajax_server_lists() Shuffling ajax server pools',2);for(var i=0;i<this._ajax_pools.length;i++){this._ajax_pools[i].shuffle()} },disconnect:function(){var F='ajax.disconnect()';jconsole('DEBUG => '+F+' Disconnecting all ajax / easyxdm sockets',2);try{if(easyxdm_ready){ts.trigger('network_down')} easyxdm_ready=false;xajax_socket=false;xajax.xqueue_fail_all('EasyXDM restarting');for(var hostname in this._xdm_handles){if(typeof this._xdm_handles[hostname].easyXDM_socket=='object'){this._xdm_handles[hostname].isConnected=false;this._xdm_handles[hostname].easyXDM_socket.destroy();delete this._xdm_handles[hostname].easyXDM_socket} } $('iframe').filter(function(){return this.id.match(/^easyXDM_default/)}).remove()} catch(e){jconsole('DEBUG => '+F+' Exception while cleaning up old easyxdm socket: '+e.message,3)} },reset_pools:function(){jconsole('DEBUG => ajax.reset_pools() Deleting all ajax server pools',2);this._ajax_pools=[];this._server_switch_attempts=0;this._server.pool=0;this._server.index=-1},add_pool:function(pool_servers){jconsole('DEBUG => ajax.add_pool() Adding new server pool with '+pool_servers.length+' servers in it',2);this._ajax_pools.push(pool_servers);this.shuffle_ajax_server_lists()},get_active_server_pool:function(){return this._server.pool},get_active_server_index:function(){return this._server.index},get_active_server_hostname:function(){if(this._server.index==-1){jconsole("DEBUG => ajax: get_active_server_hostname() called before we have an active server selected",4);return ''} return this._ajax_pools[this._server.pool][this._server.index]},get_server_pool_and_index:function(hostname){if(typeof(hostname)!='string'||hostname.length==0){jconsole("ERROR => ts.ajax.get_server_pool_and_index() called with an invalid 'hostname' parameter",1);return false} var pool=0;var index=-1;while(pool<this._ajax_pools.length&&index==-1){index=this._ajax_pools[pool].indexOf(hostname);if(index==-1){pool++} } if(index==-1){jconsole("ERROR => ts.ajax.get_server_pool_and_index() couldn't find "+hostname+" in the list of valid servers",1);return false} return{'pool':pool,'index':index}},_use_next_server:function(){var new_index=0;var pool=0;var hostname='';if(this._server_switch_attempts>=2){return this._use_server_from_next_pool()} this._server_switch_attempts++;jconsole("DEBUG => ajax._use_next_server() this is server switch attempt "+this._server_switch_attempts+' since we were last connected to a working server in this pool',5);pool=this.get_active_server_pool();new_index=this._server.index+1;if(new_index>this._ajax_pools[pool].length-1){new_index=0} this._server={pool:pool,index:new_index};hostname=this.get_active_server_hostname();jconsole("DEBUG => ajax._use_next_server() new pool/index: "+pool+'/'+new_index+' = '+hostname,5);return true},_use_server_from_next_pool:function(){jconsole("DEBUG => ajax._use_server_from_next_pool() called",5);var pool=this.get_active_server_pool()+1;if(pool>=this._ajax_pools.length){jconsole("DEBUG => ajax._use_server_from_next_pool() tried to switch to pool "+pool+", but had to loop back to pool 0",5);pool=0} if(this._server.pool!=pool){this._switching_pools=true} this.shuffle_ajax_server_lists();this._server_switch_attempts=1;this._server={'pool':pool,'index':0};return true},use_server:function(hostname){var F='ajax.use_server()';this._switching_pools=false;if(typeof(hostname)!='string'||hostname.length==0){jconsole('ERROR => '+F+' called with an invalid "hostname" parameter',1);return} try{clearTimeout(this._use_server_timer)}catch(e){};if(hostname=="next_pool"||hostname=="nextpool"||hostname=="next pool"){this._use_server_from_next_pool();jconsole('DEBUG => '+F+' Switching to "next_pool", connecting to: '+this.get_active_server_hostname(),3)} else if(hostname=="next"){this._use_next_server();jconsole('DEBUG => '+F+' Switching to "next", connecting to: '+this.get_active_server_hostname(),3)} else{var server=this.get_server_pool_and_index(hostname);if(server===false){jconsole('CRIT => '+F+' Was asked to switch to invalid server: '+hostname,3);if(!easyxdm_ready){return this.use_server('next')} return} if(this._server.pool!=server.pool){this._switching_pools=true} this._server=server;jconsole('DEBUG => '+F+' Switching to user specified ajax server: '+this.get_active_server_hostname(),3)} this.disconnect();ts.on('xajax_response_received','ts.ajax.use_server',1,function(){ts.ajax._server_switch_attempts=0});this._use_server_timer=setTimeout(function(){jconsole('DEBUG => '+F+' Switching to "next" server because our last connection attempt failed after 15 seconds',3);ts.ajax.use_server('next')},15000);if(this._switching_pools){jconsole('DEBUG => '+F+' Waiting 4 seconds before switching pools',3);setTimeout(function(){ts.ajax._initialize_easyxdm()},4000)} else{this._initialize_easyxdm()} return},_initialize_easyxdm:function(){var hostname=this.get_active_server_hostname();if(!hostname.length){jconsole("ERROR => _initialize_easyxdm() No active server, impossible to initialize easyxdm",1);return false} if(this._xdm_handles.hasOwnProperty(hostname)&&this._xdm_handles[hostname].isConnected){jconsole("DEBUG => ajax._initialize_easyxdm() Already have an iframe for "+hostname+", using it",3);if(!easyxdm_ready){jconsole("DEBUG => ajax._initialize_easyxdm() EasyXDM now ready. Server: "+hostname,3);xajax_socket=this._xdm_handles[hostname].easyXDM_socket;easyxdm_ready=true;ts.trigger('easyxdm_ready')} return true} jconsole("DEBUG => ajax._initialize_easyxdm() No iframe yet for "+hostname+", setting it up now",3);this._xdm_handles[hostname]={};this._xdm_handles[hostname].isConnected=false;this._xdm_handles[hostname].easyXDM_socket=new easyXDM.Socket({tsheets_hostname:hostname,isHost:true,remote:"https://"+hostname+"/ajax",remoteHelper:"https://"+hostname+"/ajaxh",swf:"https://"+hostname+"/easyxdm-v2.4.20.7.swf",onMessage:this._easyxdm_message_handler,onReady:function(){var hostname=this.tsheets_hostname;if(!ts.ajax._xdm_handles[hostname].easyXDM_socket){jconsole('DEBUG => EasyXDM socket ready before object initialized - skipping server: '+hostname,1);return} jconsole('NOTICE => EasyXDM now ready. Connected to: '+hostname,1);ts.ajax._xdm_handles[hostname].isConnected=true;xajax_socket=ts.ajax._xdm_handles[hostname].easyXDM_socket;if(!easyxdm_ready){easyxdm_ready=true;ts.trigger('easyxdm_ready')} } });return true},_easyxdm_message_handler:function(message,origin){var cmd='';var request_id='';var error_msg='';if(message.substr(0,5)=='cmd::'){message=message.substr(5);cmd=message.substr(0,message.indexOf('::'));message=message.substr(message.indexOf('::')+2);if(cmd=='process_xajax'){request_id=message.substr(0,message.indexOf('::'));message=message.substr(message.indexOf('::')+2);if(xajax.xqueue_remove(request_id)){ts.trigger('xajax_response_received',{"request_id":request_id});xajax.processResponse(message)} } else if(cmd=='resolve_auth'){request_id=message.substr(0,message.indexOf('::'));message=message.substr(message.indexOf('::')+2);xajax.xqueue_resolve_auth(request_id,JSON.parse(message))} else if(cmd=='xqueue_failed'){request_id=message.substr(0,message.indexOf('::'));error_msg=message.substr(message.indexOf('::')+2);xajax.xqueue_failed(request_id,error_msg)} else if(cmd=='event'){ts.trigger(message)} else if(cmd=='jconsole'){jconsole(message,2)} } else{jconsole("CRIT => [ajax] Malformed message received from EasyXDM socket. Remote host: "+this.hostname+", message: "+message,1)} return true} };ts.on('easyxdm_ready','xajax_setup',function(){if(xajax.xqueue_length()==0){xajax_window_submit('network_test','noop','network_test')} var e;try{clearTimeout(ts.ajax._use_server_timer)}catch(e){};xajax.xqueue_run_failed()})}ts.ajax.add_pool(['app.tsheets.com']);ts.ajax.use_server('next'); </script> <script id="polyfills" type="text/javascript" src="/include/js/babel-polyfill-6.26.0.min.js"></script> <div id="demo-test-drive-root" class="center"> <div id="demo-test-drive-centered-wrapper"> <div id="demo-test-drive-logo-content"><img id="demo-test-drive-logo" alt="QuickBooks Time" src="/images/svg/ts-svg-sprite/assets/core-images/qb_time_logo_reverse.svg"> </div> <div id="demo-test-drive-main-content"> <div id="demo-test-drive-title-container"> Security Verification </div> <div id="demo-test-drive-form-container"> <form id="demo-test-drive-form" method="POST"> <div class="g-recaptcha center" data-sitekey="6LeyFv8UAAAAAOtLlLry-jZvKCqAZawa7dnOJ0-_" data-callback="recaptchaSuccess" data-error-callback="recaptchaError"></div><input type="hidden" name="test_drive" value="go"> <span id="testdrive_security_check_continue_spinner" style="display:none;"> <img src="/images/loader.gif" width="16" height="16" border="0"></span> <button id="demo-test-drive-submit-button" class="flat primary action" type="submit" disabled> Continue </button> </form> </div> </div> </div> </div> </div> <script data-tsheets-js> </script> <script data-tsheets-js> recaptchaSuccess = function() { $("#demo-test-drive-submit-button").prop('disabled', false); } recaptchaError = function() { alert("Something went wrong. Please try again."); } $('#demo-test-drive-submit-button').on('click', function(e) { e.preventDefault(); $("#testdrive_security_check_continue_spinner").show(); $(this).prop('disabled', true); $("#demo-test-drive-form").submit(); }); </script> <script type="text/javascript"> try { _gaq.push(['_setAccount', 'UA-282450-9']); _gaq.push(['_setDomainName', '.tsheets.com']); _gaq.push(['_trackPageview']); } catch(err) {} </script> <script>function gtElInit() {var lib = new google.translate.TranslateService();lib.translatePage('en', 'en', function () {});}</script> <script src="https://translate.google.com/translate_a/element.js?cb=gtElInit&hl=auto&client=wt" type="text/javascript"></script> </body> </html>