this.fluidbook = fluidbook;\r
this.id = this.fluidbook.datas.id;\r
this.vid = guid();\r
+ if (this.fluidbook.datas.googleAnalytics !== '') {\r
+ this.ga = 'gtag';\r
+ this.gaCodes = this.fluidbook.datas.googleAnalytics.split(',');\r
+ $.each(this.gaCodes, function (k, code) {\r
+ gtag('config', code, {'send_page_view': false});\r
+ });\r
+ } else {\r
+ if ('ga' in window) {\r
+ this.ga = 'ga';\r
+ } else {\r
+ this.ga = false;\r
+ }\r
+ }\r
this.init();\r
}\r
\r
return true;\r
});\r
},\r
- trackPageChange: function () {\r
+\r
+ track: function (type, page, extra) {\r
if (!this.fluidbook.support.hasNetwork()) {\r
return;\r
}\r
- try {\r
- if (_gaq == undefined) {\r
- return;\r
+\r
+ if (this.fluidbook.datas.stats) {\r
+ this.trackFluidbook(type, page, extra);\r
+ }\r
+ this.trackGoogleAnalytics(type, page, extra);\r
+ },\r
+\r
+ trackGoogleAnalytics: function (type, page, extra) {\r
+ if (this.ga === false) {\r
+ return;\r
+ }\r
+\r
+ var url = location.pathname + location.search + location.hash\r
+\r
+ switch (type) {\r
+ case 0: // Change page\r
+ this._ga('pageview', url);\r
+ break;\r
+ case 10: // Open Book\r
+ this._ga('pageview');\r
+ break;\r
+ case 14: // Open chapters menu\r
+ this._ga('event', 'menu', 'click', 'chapters');\r
+ break;\r
+ case 6: // Click a link in a page\r
+ this._ga('event', 'link', 'click', extra);\r
+ break;\r
+ case 1: // Search\r
+ var l = document.createElement('a');\r
+ l.href = window.location.toString();\r
+ if (l.search == '') {\r
+ l.search = '?';\r
+ } else {\r
+ l.search += '&';\r
+ }\r
+ l.search = 'q=' + extra;\r
+ this._ga('pageview', l.pathname + l.search + l.hash);\r
+ break;\r
+ case 3: // Print\r
+ this._ga('event', 'menu', 'click', 'print');\r
+ break;\r
+ case 5: // Share\r
+ case 12: // Facebook\r
+ case 13: // Twitter\r
+ this._ga('event', 'share', 'send', type);\r
+ break;\r
+ case 7: // PDF\r
+ case 8: // Partial PDF\r
+ this._ga('event', 'menu', 'click', 'download');\r
+ break;\r
+ case 4: // Bookmarks\r
+ this._ga('event', 'bookmark', 'page', 'page ' + page);\r
+ break;\r
+ case 9: // Extras\r
+ this._ga('event', 'extra', 'click', extra);\r
+ break;\r
+ case 2:// Zoom\r
+ this._ga('event', 'zoom', 'page', page);\r
+ break;\r
+ case 11:// Video\r
+ this._ga('event', 'video', 'view', extra);\r
+ break;\r
+ }\r
+ },\r
+\r
+ _ga: function (a0, a1, a2, a3, a4) {\r
+ var args = Array.prototype.slice.call(arguments);\r
+ if (this.ga == 'gtag') {\r
+ var f, o, c, a;\r
+ o = {};\r
+ if (a0 === 'pageview') {\r
+ f = 'config';\r
+ c = true;\r
+ o = {};\r
+ if (a1 !== undefined) {\r
+ o.page_path = a1;\r
+ }\r
+ } else if (a0 === 'event') {\r
+ f = 'event';\r
+ c = false;\r
+ a = a2;\r
+ o.event_category = a1;\r
+ o.event_label = a3;\r
}\r
- var page = location.pathname + location.search + location.hash;\r
- if (_gatrackers != undefined) {\r
- $.each(_gatrackers, function (k, v) {\r
- _gaq.push([v + '._trackPageview', page]);\r
+\r
+ if (c) {\r
+ $.each(this.gaCodes, function (k, code) {\r
+ gtag(f, code, o);\r
});\r
} else {\r
- _gaq.push(['_trackPageview', page]);\r
+ gtag(f, a, o);\r
}\r
- } catch (err) {\r
-\r
+ } else if (this.ga == 'ga') {\r
+ args.unshift('send');\r
+ window['ga'].apply(null, args);\r
}\r
},\r
- track: function (type, page, extra) {\r
- if (!this.fluidbook.support.hasNetwork()) {\r
- return;\r
- }\r
\r
+ trackFluidbook: function (type, page, extra) {\r
if (page == undefined) {\r
page = 0;\r
}\r
}\r
});\r
}\r
+ ,\r
};\r
\r