google.load("visualization", "1", {packages:["corechart"]}); (function(){ var thejquery = jQuery; var isError = false; var fourStats = function(pid, apikey, location, current_datetime) { var pid = pid, apikey = apikey, weatherLocation = location, browserWidth = 0, browserHeight = 0, tzOffset = Date.parse(current_datetime)-Date.parse(new Date()); function checkError(results) { if(isError) { return true; } if(typeof(results['error']) != 'undefined' && results['error'] != '') { isError = true; thejquery('#content4stats').html('

' + (results['error']) + '

Please check your project settings.

'); return true; } return false; } addCommas = function(str) { str += ''; x = str.split('.'); x1 = x[0]; x2 = x.length > 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + ',' + '$2'); } return x1 + x2; }; getBrowserIconClass = function(str) { if(typeof(str) == 'undefined' || (typeof(str) != 'object' && typeof(str) != 'string')) { return ''; } return 'browser-logo browser-' + str.toLowerCase().replace(/\s[0-9\.]+$/, '').replace(/\s/g, "-"); } getOsIconClass = function(str) { if(typeof(str) == 'undefined' || (typeof(str) != 'object' && typeof(str) != 'string')) { return ''; } if(str.search(/^windows/i) != -1) { var os_str = "windows"; } else if(str.search(/^macintosh/i) != -1 || str.search(/^mac os/i) != -1) { var os_str = "macintosh"; } else if(str.search(/^ios/i) != -1) { var os_str = "ios"; } else if(str.search(/^linux/i) != -1) { var os_str = "linux"; } else if(str.search(/^android/i) != -1) { var os_str = "android"; } else { var os_str = ""; } return 'os-logo os-' + os_str.toLowerCase().replace(/\s[0-9\.]+$/, '').replace(/\s/g, "-"); } parseUri = function(str) { var parser = document.createElement('a'); parser.href = 'http://' + str; return parser; } showFSDayPerfGraph = function() { var date = new Date(); date.setTime(Date.parse(new Date())+tzOffset); var day = date.getDate(); var month = date.getMonth()+1; var year = date.getFullYear(); thejquery.getJSON('https://www.4stats.de/api/numbers?pid=' + pid + '&apikey=' + apikey + '&mon=' + month + '-' + year + '&day=' + day + '&jsoncallback=?', function(data) { if(checkError(data.results)) { return; } chart_data = new Array(['Hour', 'Page Impressions', 'Visits']); for(i=0; i< data.results['items'].length; i++) { stat = data.results['items'][i]; chart_data.push([i, parseInt(stat.h), parseInt(stat.v)]); } var gdata = google.visualization.arrayToDataTable(chart_data); var options = { title: 'Day Performance', hAxis: {title: 'Hour', titleTextStyle: {color: 'red'}, textStyle: { color: '#3399CC', fontSize: 10 }}, legend: 'none', pointSize: 4, lineWidth: 3, gridlineColor: '#ececec', colors:['#eeeeee', '#4caeff'], reverseCategories: true, backgroundColor: 'transparent', vAxis: { baselineColor: 'transparent', textPosition: 'in', textStyle: { color: '#8F8F8F', fontSize: 10 } }, chartArea: { width: "100%", height: "100%" } }; var chart = new google.visualization.AreaChart(document.getElementById('chart_visitor_div')); chart.draw(gdata, options); }); } showFSWPDashboard = function() { showFSDayPerfGraph(); thejquery.getJSON('https://www.4stats.de/api/dashboard?pid=' + pid + '&apikey=' + apikey + '&jsoncallback=?', function(data) { if(checkError(data.results)) { return; } items_data = {"Visitors":data.results['visits_today'], "Page Impressions":data.results['hits_today'], "Ø Pages/Visit":data.results['hits_per_visit_today'], "Ø Time on Site (Min.)":data.results['avg_time_today']}; thejquery.each(items_data, function(name, val) { var stats_row = '
' + val + '' + name + '
'; thejquery("#fs_dashboard_stats").append(stats_row); }); }); }; showFSDashboard = function() { thejquery.getJSON('https://www.4stats.de/api/dashboard?pid=' + pid + '&apikey=' + apikey + '&jsoncallback=?', function(data) { if(checkError(data.results)) { return; } var header = ["Visitors","Returning Visitors","New Visitors","Page Impressions","Ø Pages/Visit","Ø Time on Site (Min.)"]; var items_template = {"Today":"today", "Yesterday":"yesterday", "This month":"thismonth", "Last month":"lastmonth", "This year":"thisyear", "Total":"total"}; var items_data = {}; thejquery.each(items_template, function(key, val) { items_data[key] = [data.results['visits_' + val], data.results['ret_visits_' + val], data.results['visits_' + val]-data.results['ret_visits_' + val], data.results['hits_' + val], data.results['hits_per_visit_' + val], data.results['avg_time_' + val]]; }); thejquery("#fs_overview_stats thead tr").append(''); thejquery.each(header, function(key, val) { thejquery("#fs_overview_stats thead tr").append('' + val + ''); }); thejquery.each(items_data, function(name, items) { var stats_row = '' + name + ''; thejquery.each(items, function(key, val) { if(!isNaN(val)) { val = addCommas(val); } stats_row += '' + val + ''; }); stats_row += ''; thejquery("#fs_overview_stats tbody").append(stats_row); }); if(data.results['visits_yth'] < data.results['visits_today']) { var tclass = "good"; } else if(data.results['visits_yth'] > data.results['visits_today']) { var tclass = "bad"; } else { var tclass = "noc"; } thejquery("#fs_overview_stats tbody tr").first().children('td').eq(1).prepend('' + data.results['visits_yth_percent'] + '%'); if(data.results['hits_yth'] < data.results['hits_today']) { var tclass = "good"; } else if(data.results['hits_yth'] > data.results['hits_today']) { var tclass = "bad"; } else { var tclass = "noc"; } thejquery("#fs_overview_stats tbody tr").first().children('td').eq(4).prepend('' + data.results['hits_yth_percent'] + '%'); thejquery("#fs_overview_stats thead tr").first().children('th').first().html('' + data.results['user_online'] + ' Online'); }); }; showFSGraphs = function() { showFSDayPerfGraph(); var date = new Date(); date.setTime(Date.parse(new Date())+tzOffset); date.setMonth( date.getMonth() - 1 ); var fromday = date.getDate(); var frommonth = date.getMonth()+1; var fromyear = date.getFullYear(); var date = new Date(); date.setTime(Date.parse(new Date())+tzOffset); var today = date.getDate(); var tomonth = date.getMonth()+1; var toyear = date.getFullYear(); thejquery.getJSON('https://www.4stats.de/api/numbers?pid=' + pid + '&apikey=' + apikey + '&from=' + fromyear + '-' + frommonth + '-' + fromday + '&to=' + toyear + '-' + tomonth + '-' + today + '&jsoncallback=?', function(data) { if(checkError(data.results)) { return; } chart_data = new Array(['Hour', 'Page Impressions', 'Visits']); for(i=0; i< data.results['items'].length; i++) { stat = data.results['items'][i]; chart_data.push([stat.name, parseInt(stat.h), parseInt(stat.v)]); } var gdata = google.visualization.arrayToDataTable(chart_data); var options = { title: 'Last 31 days Performance', hAxis: {title: 'Hour', titleTextStyle: {color: 'red'}, textStyle: { color: '#3399CC', fontSize: 10 }}, legend: 'none', pointSize: 4, lineWidth: 3, gridlineColor: '#ececec', colors:['#eeeeee', '#4caeff'], reverseCategories: true, backgroundColor: 'transparent', vAxis: { baselineColor: 'transparent', textPosition: 'in', textStyle: { color: '#8F8F8F', fontSize: 10 } }, chartArea: { width: "100%", height: "100%" } }; var chart = new google.visualization.AreaChart(document.getElementById('chart_visitor_div_last31')); chart.draw(gdata, options); }); var date = new Date(); date.setTime(Date.parse(new Date())+tzOffset); var year = date.getFullYear(); thejquery.getJSON('https://www.4stats.de/api/numbers?pid=' + pid + '&apikey=' + apikey + '&year=' + year + '&jsoncallback=?', function(data) { if(checkError(data.results)) { return; } chart_data = new Array(['Hour', 'Page Impressions', 'Visits']); for(i=0; i< data.results['items'].length; i++) { stat = data.results['items'][i]; chart_data.push([stat.name, parseInt(stat.h), parseInt(stat.v)]); } var gdata = google.visualization.arrayToDataTable(chart_data); var options = { title: 'Year Performance', hAxis: {title: 'Hour', titleTextStyle: {color: 'red'}, textStyle: { color: '#3399CC', fontSize: 10 }}, legend: 'none', pointSize: 4, lineWidth: 3, gridlineColor: '#ececec', colors:['#eeeeee', '#4caeff'], reverseCategories: true, backgroundColor: 'transparent', vAxis: { baselineColor: 'transparent', textPosition: 'in', textStyle: { color: '#8F8F8F', fontSize: 10 } }, chartArea: { width: "100%", height: "100%" } }; var chart = new google.visualization.AreaChart(document.getElementById('chart_visitor_div_year')); chart.draw(gdata, options); }); }; showFSBoxStats = function(name, title, numtitle) { thejquery.getJSON('https://www.4stats.de/api/' + name + '?pid=' + pid + '&apikey=' + apikey + '&jsoncallback=?', function(data) { if(checkError(data.results)) { return; } html = '
'; for(i=0; i < data.results['items'].length; i++) { stat = data.results['items'][i]; html += ''; if(i >= 9) { break; } } html += '
' + numtitle + '' + title + '
' + stat.count + '' + stat.name + '
'; thejquery("#fs-box-row").append(html).fadeIn(300); }); }; showFSVisitorLog = function() { thejquery.getJSON('https://www.4stats.de/api/visitor_log?pid=' + pid + '&apikey=' + apikey + '&jsoncallback=?', function(data) { if(checkError(data.results)) { return; } for(i=0; i < data.results['items'].length; i++) { stat = data.results['items'][i]; var html = ''; html += '' + stat.time + '
' + stat.hits + ' Page' + ((stat.hits>1)?'s':'') + ''; html += '' + stat.ip + '(' + stat.host + ')
'; html += ' ' + stat.os + ' ' + stat.browser + '
'; html += 'Screen: ' + stat.screen + ' - GEO: ' + stat.geo + ''; html += ''; if(stat.referrer != '') { var ref = parseUri(stat.referrer); html += '' + ref.hostname + ''; } html += '
' + stat.entry + '
'; if(stat.kw != '') { html += 'Keyword: ' + stat.kw + ''; } html += ''; thejquery("#fs-visitor-log tbody").append(html).fadeIn(300); if(i >= 25) { break; } } }); }; return { statsPage: function () { showFSGraphs(); showFSDashboard(); showFSBoxStats('sites', 'Site', 'Views'); window.setTimeout("showFSBoxStats('keywords', 'Keywords', 'Visits')", 500); window.setTimeout("showFSBoxStats('referrer', 'Referrer', 'Visits')", 1000); window.setTimeout("showFSBoxStats('browser', 'Browser', 'Visits')", 1500); window.setTimeout("showFSBoxStats('os', 'OS', 'Visits')", 2000); window.setTimeout("showFSBoxStats('screen', 'Screen', 'Visits')", 2500); showFSVisitorLog(); }, dashBoard: function () { showFSWPDashboard(); }, }; } window.fourStats = fourStats; })();