/*
 * Google wrapper for event tracking
 * Chris Peery
 * version 1 2009-08-17
 * http://creativecommons.org/licenses/by-sa/2.5/
 */
var EventTracker = Class.create();

EventTracker.prototype = {
  initialize : function() {
    if ( typeof(pageTracker) == 'undefined' ) return;

    this.events = {
      linkClick: this.linkClick.bind(this)
    };

    var linkEvents = $$(".linkTrack");
    linkEvents.invoke('observe', 'click', this.events.linkClick);
  },
  linkClick: function(event) {
    var element = Event.element(event);
    if ( !element.readAttribute('rel') ) element = element.up(0);

    var data = this.parseRelAttribute(element);
    if ( typeof(data.category) != 'undefined' && typeof(data.action) != 'undefined' )
    {
      var label = ( typeof(data.label != 'undefined' ) ) ? data.label : '';
      var value = ( typeof(data.value != 'undefined') ) ? data.value : 0;
      //var value = ( typeof(data.value != 'undefined' && isInteger(data.value)) ) ? parseInt(data.value) : 0;
      pageTracker._trackEvent(data.category, data.action, label, value);
      //alert('Cat: ' + data.category + ' Action: ' + data.action + ' Label: ' + data.label + ' Value: ' + data.value);
    }
  },
  parseRelAttribute: function(element) {
    var data = {};

    if ( element.readAttribute('rel') == null )
      return data;

    var dataArray = element.readAttribute('rel').split(':');
    if ( dataArray.length >= 1 ) data.category = dataArray[0];
    if ( dataArray.length >= 2 ) data.action = dataArray[1];
    if ( dataArray.length >= 3 ) data.label = dataArray[2];
    if ( dataArray.length >= 4 ) data.value = dataArray[3];

    return data;
  },
  isInteger: function(sText) {
    var ValidChars = "0123456789";
    var IsNumber=true;
    var Char;

    for (i = 0; i < sText.length && IsNumber == true; i++) {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1) {
           IsNumber = false;
      }
    }
    return IsNumber;
  }
}

Event.observe(window, 'load', function(){ var eventTracker = new EventTracker(); }, false);

