/*
 * AT&T Web Standards Initiative <wsi at att dot com>
 * Joe D'Andrea and Raj Singh
 *
 * $Id: metrics.js,v 1.12 2006/04/13 14:52:53 jdandrea Exp $
 *
 * Metrics Library
 *
 * Requires: att.js
 */

// HBX event variables may be passed via metadata, for example:
//  <meta name="metrics-hbx-pn" content="My Very Special Page Name" />
// Content is assigned to hbx.pn, overriding the default value.

// metricsmap - Metrics Account and Content Category Map object
//
// gl   = Global Rollup Account 
// bu   = Business Unit Rollup Account/mlc-prefix 
// host = Hostname Mapped (default) Product Rollup Account/mlc-prefix
// path = Pathname Mapped (top-level) Product Rollup Account/mlc-prefix
//
if (undef(metricsmap)) {
  var metricsmap = new Object();
  
  metricsmap.gl = 'DM540418B8AR';
  metricsmap.bu = new Object({
    'cor' : Array('DM540428NORC', '/Corporate'),
    'acs' : Array('DM540428NORD', '/Consumer'),
    'abs' : Array('DM510712OPRD', '/Business')
  });
  metricsmap.host = new Object({
    'www.corp.att.com'          : Array('DM54070127SZ', 'cor'),
    'corp.att.com'              : Array('DM54070127SZ', 'cor'),
    'www.consumer.att.com' : Array('*',            'acs'),
    'www.business.att.com' : Array('DM540428A3AM', 'abs')
  });
  metricsmap.path = new Object({
    'alliance' : Array('DM540617PPVF', 'abs'),
    'attlabs'  : Array('DM5407014GCW', 'cor'),
    'aws'      : Array('DM5407017PZV', 'cor'),
    'emea'     : Array('DM540428JIEC', 'abs'),
    'emea_de'  : Array('DM540428JIEC', 'abs'),
    'emea_es'  : Array('DM540428JIEC', 'abs'),
    'emea_fr'  : Array('DM540428JIEC', 'abs'),
    'emea_it'  : Array('DM540428JIEC', 'abs'),
    'gov'      : Array('DM540428KNAS', 'abs'),
    'hr'       : Array('DM540701FBMM', 'cor'),
    'ir'       : Array('DM5407012EMD', 'cor')
  });
}

var _metrics = new Object();

// Create HitBox Event
function _hbEvent(a,b){b=_hbE[_hbEC++]=new Object();b._N = a;b._C = 0;return b;}

// Helpful prototypes
String.prototype.hbxAsMlc=function(){return this.replace(/['"|#$%^*:!\<>~;]+/g,'').replace(/&/g,' and ').replace(/\s/g,'+');};
String.prototype.hbxAsPn=function(){return this.hbxAsMlc().replace(/\//g,'-').strip(70);};

// Get HBX acct and mlc component parts
function _metricsHbxGetAcctMlc() {
  var r = new Object();
  var h  = location.hostname; var p  = location.pathname;
  var hm = metricsmap.host;   var pm = metricsmap.path;
  var bm = metricsmap.bu;     var gm = metricsmap.gl;

  var mc = p.dirname().hbxAsMlc();
  var prd = ifdef(pm[mc.dirtop()], ifdef(hm[h]));
  if (isdef(prd)) {
    var pr = prd[0]; var ac = prd[1]; var bud = ifdef(bm[ac]);
    if (isdef(bud)) { var bu = bud[0]; var mb = bud[1].hbxAsMlc(); }
  }

  r.acct = new Array(gm); r.mlc = new Array(mb+mc);
  if (bu != '*') {
    r.acct.push(bu); r.mlc.push(mb+mc);
    if (pr != '*') { r.acct.push(pr); r.mlc.push(mc); }
  }

  return r;
}

// Yummy default goodness
_metrics.gn    = 'ehg-attcorp.hitbox.com';
_metrics.vpc   = (location.protocol=='https:'?"HBX0101s":"HBX0100u");
_metrics.pndef = 'title';
_metrics.ctdef = 'full';
_metrics.lt    = "auto";
_metrics.fv    = '';
_metrics.hbx   = _metricsHbxGetAcctMlc();
_metrics.acct  = _metrics.hbx.acct.join(';');
_metrics.mlc   = _metrics.hbx.mlc.join(';');

// HitBox Event Counter and Event Array
var _hbEC = 0;
var _hbE = new Array;
var hbx;

// CentrPort Defaults
var _cp_cc          = 'ATT';
var _cp_pc          = 'ATT101';
var _cp_chc         = 'ATTCOM';
var _cp_ctrack      = '1';
var _cp_send_cookie = '0';
var _cp_svr         = 'wsl.centrport.net';
var _cp_src         = '/library/behavior/wsl.js';

// Add the event (create)
function _metricsAddEvent(event) {
  var e   = _hbEvent(event);
  e.vpc   = _metrics.vpc;
  e.gn    = _metrics.gn;
  e.acct  = _metrics.acct;
  e.pndef = _metrics.pndef;
  e.ctdef = _metrics.ctdef;
  e.lt    = _metrics.lt;
  e.mlc   = _metrics.mlc;
  getMetaContentByNamePrefix('metrics-hbx', e);
  return e;
}

function _metricsInclude() {
  document.write('<scr'+'ipt defer="defer" type="text/javascript" src="'+_cp_src+'"></scr'+'ipt>');
}

// At the very least, we've got a page view (pv)
function metricsInit(){hbx=_metricsAddEvent('pv'); _metricsInclude();}

// Kick things off
metricsInit();

