client/boomerang-rt.js
function(t_now, data) {
		var t_done = t_now;

		// xhr beacon with detailed timing information
		if (data && data.timing && data.timing.loadEventEnd) {
			t_done = data.timing.loadEventEnd;
		}
		// Boomerang loaded late and...
		else if (BOOMR.loadedLate) {
			// We have navigation timing,
			if(w.performance && w.performance.timing) {
				// and boomerang loaded after onload fired
				if(w.performance.timing.loadEventStart && w.performance.timing.loadEventStart < BOOMR.t_end) {
					t_done = w.performance.timing.loadEventStart;
				}
			}
			// We don't have navigation timing,
			else {
				// So we'll just use the time when boomerang was added to the page
				// Assuming that this means boomerang was added in onload
				t_done = BOOMR.t_lstart || BOOMR.t_start || t_now;
			}
		}

		return t_done;
	}
function(t_now, data) {
		var t_done = t_now;

		// xhr beacon with detailed timing information
		if (data && data.timing && data.timing.loadEventEnd) {
			t_done = data.timing.loadEventEnd;
		}
		// Boomerang loaded late and...
		else if (BOOMR.loadedLate) {
			// We have navigation timing,
			if(w.performance && w.performance.timing) {
				// and boomerang loaded after onload fired
				if(w.performance.timing.loadEventStart && w.performance.timing.loadEventStart < BOOMR.t_end) {
					t_done = w.performance.timing.loadEventStart;
				}
			}
			// We don't have navigation timing,
			else {
				// So we'll just use the time when boomerang was added to the page
				// Assuming that this means boomerang was added in onload
				t_done = BOOMR.t_lstart || BOOMR.t_start || t_now;
			}
		}

		return t_done;
	}
function ( t_now , data ) { var t_done = t_now ; // xhr beacon with detailed timing information if ( data && data . timing && data . timing . loadEventEnd ) { t_done = data . timing . loadEventEnd ; } // Boomerang loaded late and... else if ( BOOMR . loadedLate ) { // We have navigation timing, if ( w . performance && w . performance . timing ) { // and boomerang loaded after onload fired if ( w . performance . timing . loadEventStart && w . performance . timing . loadEventStart < BOOMR . t_end ) { t_done = w . performance . timing . loadEventStart ; } } // We don't have navigation timing, else { // So we'll just use the time when boomerang was added to the page // Assuming that this means boomerang was added in onload t_done = BOOMR . t_lstart || BOOMR . t_start || t_now ; } } return t_done ; }
Validate that the time we think is the load time is correct.  This can be wrong if boomerang was loaded
after onload, so in that case, if navigation timing is available, we use that instead.
Validate that the time we think is the load time is correct . This can be wrong if boomerang was loaded after onload so in that case if navigation timing is available we use that instead .