var startTime = new Date();
var archive_analytics = {
values: {},
// 2nd param: [optional] callback to invoke once ping to analytics server is done
// 3rd param: [optional] logical truthy -- set to true/1 to add some archive.org site-specific values
send_ping: function(values, onload_callback, augment_for_ao_site) {
var img_src = "//analytics.archive.org/0.gif";
var format_ping = function(values) {
var ret = [];
var count = 2;
var version = 2;
for (var data in values) {
ret.push(encodeURIComponent(data) + "=" + encodeURIComponent(values[data]));
count = count + 1;
}
ret.push('version=' + version);
ret.push('count=' + count);
return ret.join("&");
};
if (augment_for_ao_site && !values['service'])
values['service'] = 'ao_2';
var string = format_ping(values);
var loadtime_img = new Image(100,25);
if (onload_callback && typeof(onload_callback)=='function')
loadtime_img.onload = onload_callback;
loadtime_img.src = img_src + "?" + string;
},
send_scroll_fetch_event: function(page) {
var endTime = new Date();
archive_analytics.send_ping({
'service':'ao_2',
'kind':'event',
'ec':'page_action',
'ea':'scroll_fetch',
'el':location.pathname,
'ev':page,//int
'loadtime':(endTime.getTime() - startTime.getTime()),
'cache_bust':Math.random()
});
},
send_scroll_fetch_base_event: function() {
var endTime = new Date();
archive_analytics.send_ping({
'service':'ao_2',
'kind':'event',
'ec':'page_action',
'ea':'scroll_fetch_base',
'el':location.pathname,
'loadtime':(endTime.getTime() - startTime.getTime()),
'cache_bust':Math.random()
});
},
_onload_func: function() {//logically private
var get_locale = function() {
if (navigator) {
if (navigator.language)
return navigator.language;
else if (navigator.browserLanguage)
return navigator.browserLanguage;
else if (navigator.systemLanguage)
return navigator.systemLanguage;
else if (navigator.userLanguage)
return navigator.userLanguage;
}
return '';
};
var endTime = new Date();
// Set field values
archive_analytics.values['kind' ] = 'pageview';
archive_analytics.values['loadtime' ] = endTime.getTime() - startTime.getTime();
archive_analytics.values['timediff' ] = (new Date().getTimezoneOffset()/60)*(-1); // *timezone* diff from UTC
archive_analytics.values['locale' ] = get_locale();
archive_analytics.values['referrer' ] = (document.referrer == '' ? '-' : document.referrer);
archive_analytics.send_ping(archive_analytics.values);
}
};
archive_analytics.get_data_packets = function () {
return [archive_analytics.values];
};
$(window).load(archive_analytics._onload_func);