// Omniture Vendor Specific File
// Desc: Used to store a single vendors information.
// Vendor: Zvents
/////////////////////////////////////////////////////////////////////////////


// Vendor Specific Variables
mistats.msr           = mistats.bizunit + '|' + mistats.pubname + '|' + 'TP-ZVE';
mistats.channel       = 'Vendor: Zvents';
mistats.contentsource = mistats.sitename + ' : ' + 'Zvents';
mistats.pagelevel     = 'Vendor';
mistats.channel       = 'Vendor: Zvents';

// Taxonomic Variables
mistats.altcategories = '';

// Vendor Specific Code

mistats.ZVentsTracking = function ()
{
   var taxonomy;
   var pageName;
   var keywords;
   var geography;
   var searchParms;
   var category;
   var baseTaxonomy;
   var taxMatrix;

   taxonomy = '';
   pageName = '';
   keywords = '';
   geography = '';

   baseTaxonomy = ['Entertainment'];
   taxMatrix =
   {
      'restaurant':
      {
         '.*': ['Dining', 'Restaurants']
      },

      'movie':
      {
         '.*': ['Movies']
      },

      'venue':
      {
         'restaurant': ['Dining', 'Restaurants'],
         'cafe':       ['Dining', 'Restaurants'],
         'bar':        ['Dining', 'BarsClubsOthers'],
         'nightclub':  ['Nightlife'],
         'comedy':     ['Dining', 'BarsClubsOthers'],
         'club':       ['Dining', 'BarsClubsOthers']
      },

      'performer':
      {
         'musician':      ['Music'],
         'band':          ['Music'],
         'author':        ['Books'],
         'personalities': ['People'],
         'artist':        ['Arts', 'Visual']
      }
   };

   function trim(s)
   {
      while (s.charAt(0).match(/\s/))
         s = s.substring(1);
      while (s.charAt(s.length - 1).match(/\s/))
         s = s.substr(0, s.length - 1);
      return s;
   };

   function testString(v)
   {
      var t;

      try
      {
         eval('t = ' + v + ';');
         if (typeof t === 'string')
            return trim(t);
      } catch(e)
      {
      };
      return '';
   }

   function capitalize(s)
   {
      s = s.toLowerCase().replace(/-/g, ' ');

      for (i = 0; s.charAt(i); i++)
         if (!i || s.charAt(i - 1).match(/&|\/| /))
            s = s.substr(0, i) + s.charAt(i).toUpperCase() + s.substring(i + 1);

      return s;
   };

   function getPageName()
   {
      return capitalize(testString('z_page_type'));
   };

   function getCategory()
   {
      var c;
      var t;

      c = testString('s_zv.prop15').split(',')[0];

      if (!c.length && document.title)
      {
         t = document.title.split(' - ');
         if (t.length > 2)
            c = trim(t[1].replace(/\s/g, ' '));
      }

      if (!(pageName.match(new RegExp(c, 'i')) || c.match(/search /i)))
         return capitalize(c.toLowerCase().replace(/&amp;/g, '&'));

      return '';
   };

   function getSrchParms()
   {
      var i;
      var p;
      var s;
      var t;

      p = ['z_swhat', 'z_swhere'];
      s = [];

      for (i in p)
         s[s.length] = testString(p[i]).toLowerCase().replace(/,/g, ' ');

      s = trim(s.join(' ')).replace(/\s+/g, ' ');
      return (s.match(/\w+/)) ? s : '';
   };

   function getGeography()
   {
      var c;
      var s;

      c = '';

      c = testString('z_city');
      if (!c.length)
         c = testString('z_seo_location');

      s = c.search(/-[a-z]{2}$/);
      if (s !== -1)
         c = c.substr(0, s);

      return capitalize(c);
   };

   function taxonomize(pTax)
   {
      while (pTax.length < 5)
         pTax.push('');
      return pTax.join('|');
   };

   function createTaxonomy()
   {
      var p;
      var t;
      var n;

      n = baseTaxonomy;
      for (p in taxMatrix)
         if (pageName.match(new RegExp(p, 'i')))
            for (t in taxMatrix[p])
               if (category.match(new RegExp(t, 'i')))
                  return n.concat(taxMatrix[p][t]);

      return n;
   };

   pageName = getPageName();
   category = getCategory();
   searchParms = getSrchParms();
   taxonomy = taxonomize(createTaxonomy());
   geography = getGeography();

   if (searchParms.length)
      keywords = 'zsch: ' + searchParms;
   else if (category.length)
      keywords = (['zcat', pageName, category]).join(': ');

   if (geography.length)
      geography = 'zcity: ' + geography;

   this.taxonomy = taxonomy;
   this.pageName = pageName;
   this.keywords = keywords;
   this.geography = geography;
};

mistats.zvents = new mistats.ZVentsTracking();

// Populate mistats properties
mistats.pagename = 'Vendor: Zvents: ' + mistats.zvents.pageName;
mistats.taxonomy = mistats.zvents.taxonomy;
mistats.geography = mistats.zvents.geography;
mistats.keywords = mistats.zvents.keywords;

if (typeof console !== 'undefined')
{
   console.log('mistats.pagename: ' + mistats.pagename);
   console.log('mistats.geography: ' + mistats.geography);
   console.log('mistats.keywords: ' + mistats.keywords);
   console.log('mistats.taxonomy: ' + mistats.taxonomy);
}


