forked from keobrien/GA-Aware
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjquery.gaaware.min.js
More file actions
11 lines (11 loc) · 11.4 KB
/
jquery.gaaware.min.js
File metadata and controls
11 lines (11 loc) · 11.4 KB
1
2
3
4
5
6
7
8
9
10
11
/*
Project Name: GA Aware
URL: https://github.com/keobrien/GA-Aware
Author: Kevin O'Brien
Company: Clockwork Acive Media Systems
Company Site: clockwork.net
License: MIT
Copyright (C) 2012 Clockwork Active Media Systems
Version: 1.8.6
**************************************/
(function(a){a.fn.gaaware=function(b){return new a.gaaware(this,b)};a.gaaware=function(b,c){this.s=a.extend({UA:"UA-XXXXX-X",d:window.document.domain,domains:[],include_only:null,exclude_subdomains:["preview","dev","test","stage","review","demo","train"],asset_extentions:["pdf","txt","csv","doc","docx","xls","xlsx","ppt","jpg","jpeg","png","gif","psd","ai","eps","zip","xml","json","avi","mp4","mp3","mov","mpeg","wmv","rtf","swf","flv","js","css","eot","svg","ttf","woff","otf"],track_alt_protocols:["mailto","spotify","ftp","file","tel"],vpv_prefix:"/vpv",track_external_links:!0,external_prefix:"External",asset_prefix:"Asset",hash_prefix:"Hash",external_form_prefix:"Form",track_as_events:!0,debug:!1,debug_mode:function(a){console.info(a)},track:!0,no_track_class:"ga_notrack",custom_vars:[],auto_social:!1,social_page_url:null,enable_facebook:!0,enable_twitter:!0,prefer_title:!0},c);if(!this.s.track)return;window._gaq=window._gaq||[];this.current_domain_state=null;this.track_multi=this.s.UA.constructor===Array?!0:!1;this.cross_domain_disabled=!1;this.s.UA=this.track_multi?this.s.UA:[this.s.UA];this.setup();return this};a.gaaware.prototype={setup:function(){var b=this;if(!this.s.track)return;if(this.s.include_only){var c=this.match_domain(this.s.d,this.s.include_only);if(!c[0]){this.s.track=!1;this.s.debug&&this.s.debug_mode("Current Domain not part of this.s.include_only");return}}if(this.s.exclude_subdomains){var d=this.s.d.split("."),e;for(var f=0;f<this.s.exclude_subdomains.length;f++)for(e=0;e<d.length;e++)if(d[e]==this.s.exclude_subdomains[f]){this.s.debug&&this.s.debug_mode("Tracking off: current domain contains an excluded sub domain in this.s.exclude_subdomains: "+this.s.exclude_subdomains[f]);this.s.track=!1;return}}for(var g=0;g<this.s.UA.length;g++){var h=g==0?"":"t"+(g+1)+".";window._gaq.push([h+"_setAccount",this.s.UA[g]]);if(this.s.domains.length>0){this.current_domain_state=this.match_domain(this.s.d);if(this.current_domain_state[1]){window._gaq.push([h+"_setDomainName",this.current_domain_state[1]]);this.s.debug&&this.s.debug_mode("_setDomainName set to: "+this.current_domain_state[1]);window._gaq.push([h+"_setAllowLinker",!0]);this.s.debug&&this.s.debug_mode("_setAllowLinker set to true");window._gaq.push([h+"_setAllowAnchor",!0]);this.s.debug&&this.s.debug_mode("_setAllowAnchor set to true");this.s.debug&&this.s.debug_mode("Cross domain active")}else if(this.s.debug){this.cross_domain_disabled=!0;this.s.debug_mode("Error: Cross domain defined but current domain not included, deactivating cross domain");this.s.debug_mode("current domain: "+this.s.d);this.s.debug_mode("cross domain definition: "+this.s.domains)}}for(var i=0;i<this.s.custom_vars.length;i++){this.track_custom(this.s.custom_vars[i][0],this.s.custom_vars[i][1],this.s.custom_vars[i][2],this.s.custom_vars[i][3]);this.s.debug&&this.s.debug_mode("tracking custom variable: "+this.s.custom_vars[i][0]+" "+this.s.custom_vars[i][1]+" "+this.s.custom_vars[i][2]+" "+this.s.custom_vars[i][3])}window._gaq.push([h+"_trackPageview"]);this.s.debug&&this.s.debug_mode(this.s.UA[g]+" active!")}(function(){var a=document.createElement("script");a.type="text/javascript";a.async=!0;a.src=("https:"==document.location.protocol?"https://ssl":"http://www")+".google-analytics.com/ga.js";var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b)})();if(b.s.auto_social){if(this.s.enable_facebook){window.fbAsyncInit=function(){b.setup_social_facebook(b.s.social_page_url);a(document).ready(function(){a("body").prepend('<div id="fb-root"></div>')})};(function(a,b,c){var d,e=a.getElementsByTagName(b)[0];if(a.getElementById(c))return;d=a.createElement(b);d.id=c;d.src=("https:"==document.location.protocol?"https://":"http://")+"connect.facebook.net/en_US/all.js#xfbml=1";e.parentNode.insertBefore(d,e)})(document,"script","facebook-jssdk")}if(this.s.enable_twitter){window.twttr=function(a,b,c){var d,e,f=a.getElementsByTagName(b)[0];if(a.getElementById(c))return;e=a.createElement(b);e.id=c;e.src=("https:"==document.location.protocol?"https://":"http://")+"platform.twitter.com/widgets.js";f.parentNode.insertBefore(e,f);return window.twttr||(d={_e:[],ready:function(a){d._e.push(a)}})}(document,"script","twitter-wjs");window.twttr.ready(function(a){b.setup_social_twitter(b.s.social_page_url)})}}a(document).delegate('a:not(a[href^="javascript:"], a.'+b.s.no_track_class+")","click",b,b.link_clicks);a(document).delegate("form:not(form."+b.s.no_track_class+")","submit",b,b.submit_forms)},link_clicks:function(b){var c=b.data;if(!c.s.track)return;var d=jQuery(b.currentTarget),e=d.attr("href");if(!e)return;var f=e.split("/");if(f[0]=="http:"||f[0]=="https:"||e.substr(0,2)=="//")var g=c.cross_domain_disabled?[null]:c.match_domain(f[2]);var h=e;c.s.prefer_title&&d.attr("title")&&(h=d.attr("title"));if(f[0]!="http:"&&f[0]!="https:"&&e.substr(0,2)!="//"||!!g[4]){path=e.split("?")[0].split("#")[0];path=="/amm/author/lookup_page.php"&&(path=e.split("&url=")[1].split("&")[0].split("#")[0].split("%3F")[0]);f=path.split(".");extension=f[f.length-1];for(var i=0;i<c.s.asset_extentions.length;i++)extension==c.s.asset_extentions[i]&&c.link_virtual(b,d,e,h,!1,c.s.asset_prefix);if(e[0]=="#"){e=document.location.pathname+document.location.search+e;(!d.attr("target")||d.attr("target")=="_self")&&c.link_virtual(b,d,e,h,!0,c.s.hash_prefix)}var j=e.split(":")[0];if(j)for(var i=0;i<c.s.track_alt_protocols.length;i++)j==c.s.track_alt_protocols[i]&&c.link_virtual(b,d,e,h,!0,c.s.track_alt_protocols[i])}else if(!g[0]){if(!c.s.track_external_links)return;c.link_virtual(b,d,e,h,!1,c.s.external_prefix)}else{if(g[2]==c.current_domain_state[2])return;if(d.attr("target")&&d.attr("target")!="_self"){b.preventDefault();window.open(window._gat._getTrackerByName()._getLinkerUrl(a(d).attr("href")),a(d).attr("target"))}else{b.preventDefault();window._gaq.push(["_link",d.attr("href")])}}},submit_forms:function(a){var b=a.data;if(!b.s.track)return;var c=jQuery(a.currentTarget);try{var d=c.attr("action");if(!d)return;var e=d.split("/");if(e[0]=="http:"||e[0]=="https:"||d.substr(0,2)=="//"){var f=b.cross_domain_disabled?[null]:b.match_domain(e[2]);if(f[0]){if(f[2]==b.current_domain_state[2])return;var g=c.attr("method").toLowerCase();g=="get"?_gaq.push(["_linkByPost",a.target,!0]):_gaq.push(["_linkByPost",a.target])}else{if(f[4]){b.s.debug&&b.s.debug_mode("Form skipped, absolute but links to same domain: "+c);return}b.s.track_as_events?b.track_event(b.s.external_form_prefix,b.s.external_prefix,d.toString()):b.track_virtual(b.s.external_prefix+"/"+b.s.external_form_prefix+"/"+d)}}}catch(h){if(b.s.debug){b.s.debug_mode("error converting form: "+h);b.s.debug_mode(c)}}},match_domain:function(a,b){if(!this.s.track)return;var b=b?b:this.s.domains;a=this.remove_www(a);var c=this.remove_www(this.s.d)==a?!0:!1;for(var d=0;d<b.length;d++)if(b[d].entity){var e=this.remove_www(b[d].entity);if(e==a)return[1,e,d,!1,c];var f=!1;for(var g=0;g<b[d].subs.length;g++)if(b[d].subs[g]+"."+e==a)return[2,e,d,g,c];if(f)break}else if(this.remove_www(b[d])==a)return[3,"none",d,!1,c];return[null,null,null,null,c]},remove_www:function(a){var b=a.split(".");if(b[0]=="www"){b.splice(0,1);a=b.join(".")}a=a.split("/")[0].split("?")[0].split("#")[0];return a},link_virtual:function(b,c,d,e,f,g){if(!this.s.track)return;var h=this;c=a(c);e=e?e:d;var i="";if(c.attr("target")&&c.attr("target")!="_self"){b.preventDefault();if(h.s.track_as_events)h.track_event("Link",g,e);else for(var j=0;j<h.s.UA.length;j++){var k=j==0?"":"t"+(j+1)+".";window._gaq.push([k+"_trackPageview",h.s.vpv_prefix+"/"+g+"/"+e])}!h.s.track_as_events&&h.s.debug&&h.s.debug_mode("virtual link for new window tracked to: "+h.s.vpv_prefix+"/"+g+"/"+e);window.open(d,c.attr("target"))}else{if(h.s.track_as_events)h.track_event("Link",g,e);else for(var j=0;j<h.s.UA.length;j++){var k=j==0?"":"t"+(j+1)+".";window._gaq.push([k+"_trackPageview",h.s.vpv_prefix+"/"+g+"/"+e])}!h.s.track_as_events&&h.s.debug&&h.s.debug_mode("virtual link tracked to: "+h.s.vpv_prefix+"/"+g+"/"+e);if(!f){b.preventDefault();setTimeout(function(){document.location=d},100)}}},extract_param_from_uri:function(a,b){if(!a)return;var c=decodeURI(a.split("#")[1]);b+="=";var d=c.split("&");for(var e=0,f;f=d[e];++e)if(f.indexOf(b)===0)return unescape(f.split("=")[1])},setup_social_facebook:function(a){var b=this;if(b.s.enable_facebook)try{FB.Event.subscribe("edge.create",function(c){b.track_social("facebook","like",c,a);b.s.debug&&b.s.debug_mode("Facebook Like captured")});FB.Event.subscribe("edge.remove",function(c){b.track_social("facebook","unlike",c,a);b.s.debug&&b.s.debug_mode("Facebook Unlike captured")});FB.Event.subscribe("message.send",function(c){b.track_social("facebook","send",c,a);b.s.debug&&b.s.debug_mode("Facebook Send captured")})}catch(c){b.s.debug&&b.s.debug_mode("Social Tracking enabled but Facebook has an error:"+c)}},setup_social_twitter:function(a){var b=this;if(b.s.enable_twitter)try{twttr.events.bind("tweet",function(c){if(c){var d=document.location;c.target&&c.target.nodeName=="IFRAME"&&(d=b.extract_param_from_uri(c.target.src,"url"));b.track_social("twitter","tweet",d,a);b.s.debug&&b.s.debug_mode("Twitter event captured: "+d)}});twttr.events.bind("click",function(c){if(c){b.track_social("twitter","click",document.location,a);b.s.debug&&b.s.debug_mode("Twitter click event")}});twttr.events.bind("retweet",function(c){if(c){var d=c.data.source_tweet_id;b.track_social("twitter","retweet",d,a);b.s.debug&&b.s.debug_mode("Twitter retweet event for tweet id "+d)}});twttr.events.bind("favorite",function(c){if(c){var d=c.data.tweet_id;b.track_social("twitter","favorite",d,a);b.s.debug&&b.s.debug_mode("Twitter favorite event for tweet id "+d)}});twttr.events.bind("follow",function(c){if(c){var d=c.data.user_id+" ("+c.data.screen_name+")";b.track_social("twitter","follow",d,a);b.s.debug&&b.s.debug_mode("Twitter follow event for user "+d)}})}catch(c){this.s.debug&&this.s.debug_mode("Social Tracking enabled Twitter had an error:"+c)}},track_virtual:function(a){if(!this.s.track||!a)return;for(var b=0;b<this.s.UA.length;b++){var c=b==0?"":"t"+(b+1)+".";window._gaq.push([c+"_trackPageview",this.s.vpv_prefix+"/"+a])}this.s.debug&&this.s.debug_mode("virtual page view tracked to: "+this.s.vpv_prefix+a)},track_event:function(a,b,c,d){if(!this.s.track)return;for(var e=0;e<this.s.UA.length;e++){var f=e==0?"":"t"+(e+1)+".";window._gaq.push([f+"_trackEvent",a,b,c,d])}this.s.debug&&this.s.debug_mode("event tracked as: "+a+" "+b+" "+c+" "+d)},track_custom:function(a,b,c,d){if(!this.s.track)return;for(var e=0;e<this.s.UA.length;e++){var f=e==0?"":"t"+(e+1)+".";window._gaq.push([f+"_setCustomVar",a,b,c,d])}},track_social:function(a,b,c,d){if(!this.s.track)return;for(var e=0;e<this.s.UA.length;e++){var f=e==0?"":"t"+(e+1)+".";window._gaq.push([f+"_trackSocial",a,b,c,d]);!this.s.auto_social&&self.s.debug&&self.s.debug_mode("NOTE: auto_social is off but track_social method called, make sure the api is included in the html")}},track_transaction:function(a,b){if(!this.s.track)return;for(var c=0;c<this.s.UA.length;c++){var d=c==0?"":"t"+(c+1)+".";for(var e=0;e<a.length;e++)this.add_item(a[e],d);_gaq.push([d+"_addTrans",b[0],b[1],b[2],b[3],b[4],b[5],b[6],b[7]]);_gaq.push([d+"_trackTrans"])}},add_item:function(a,b){if(!this.s.track)return;_gaq.push([b+"_addItem",a[0],a[1],a[2],a[3],a[4],a[5]])}}})(jQuery);