Page Speed Optimization Libraries  1.7.30.2
net/instaweb/rewriter/google_analytics_snippet.h
00001 
00017 
00018 
00019 namespace net_instaweb {
00020 
00021 const char kGaSnippetGetTracker[] = "_modpagespeed_getRewriteTracker(";
00022 
00023 const char kGaSnippetPrefix[] =
00024     "var _gaq = _gaq || [];\n"
00025     "(function(){\n"
00026     "  function functionName(fn) {\n"
00027     "    var name = /\\W*function\\s+([\\w\\$]+)\\(/.exec(fn);\n"
00028     "    if (!name)\n"
00029     "      return 'No name';\n"
00030     "    return name[1];\n"
00031     "  }\n"
00032     "  var nameSpace = '_gat';\n"
00033     "  var existingGat = window[nameSpace];\n"
00034     "  if (existingGat && typeof existingGat['_getTracker'] == 'function') {\n"
00035     "    return;\n"
00036     "  }\n"
00037     "\n"
00038     "  var gaqAccounts = [];\n"
00039     "  function setAccount(acct, prefix) {\n"
00040     "    if (gaqAccounts[prefix] != acct) {\n"
00041     "      gaqAccounts[prefix] = acct;\n"
00042     "      _gaq.push([prefix + '_setAccount', acct]);\n"
00043     "    }\n"
00044     "  }\n"
00045     "\n"
00046     "  window['_modpagespeed_getRewriteTracker'] = function(tracker_acct,\n"
00047     "                                                       tracker_name) {\n"
00048     "    var prefix = tracker_name ? tracker_name + '.' : '';\n"
00049     "\n"
00050     "    function deferTrackerFunc(fn) {\n"
00051     "      return function() {\n"
00052     "        setAccount(tracker_acct, prefix);\n"
00053     "        var pushArgs = [fn];\n"
00054     "        [].push.apply(pushArgs, arguments);\n"
00055     "        _gaq.push(pushArgs);\n"
00056     "      };\n"
00057     "    }\n"
00058     "    var pageTrackerMethodNames = [\n";
00059 
00060 const char kGaSnippetSuffix[] =
00061     "    ];\n"
00062     "    var pageTracker = {\n"
00063     "      _initData: function() {},\n"
00064     "    };\n"
00065     "    for (var i=pageTrackerMethodNames.length; i--;) {\n"
00066     "      var n = pageTrackerMethodNames[i];\n"
00067     "      pageTracker[n] = deferTrackerFunc(prefix + n);\n"
00068     "    }\n"
00069     "    return pageTracker;\n"
00070     "  };\n"
00071     "\n"
00072     "  var ga = document.createElement('script');\n"
00073     "  ga.type = 'text/javascript'; ga.async = true;\n"
00074     "  ga.src = ('https:' == document.location.protocol ? 'https:///ssl' :\n"
00075     "            'http:///www') + '.google-analytics.com/ga.js';\n"
00076     "  var s = document.getElementsByTagName('script')[0];\n"
00077     "  s.parentNode.insertBefore(ga, s);\n"
00078     "})();\n";
00079 }  
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines