function doTrace( partsid ){
  if(partsTracker){
    partsTracker._trackPageview(partsid);
  }
}
if(!PartsAnalytics){
  var PartsAnalytics = {};
}

function getPageId(){
    var path = location.pathname;
    if(!path){
    }else{
      var r = /\/(\w+)?\/?(\w+)?/gi.exec(path);
      if(!r || typeof r[1] == 'undefined' ){
        rulename = "/";
      }else if(typeof r[2] == 'undefined'){
        rulename = "/" + r[1] ;
        rulename = rulename.toLowerCase();
      }
      else{
        rulename = "/" + r[1] + "/" + r[2] ;
        rulename = rulename.toLowerCase();
      }
      return rulename;
    }
}
function doTraceDirect( partsid ){
  if(partsTracker){
    partsTracker._trackPageview(getPageId() +'-'+ partsid);
  }
}


/*-- Utils --------------------------------------------*/
PartsAnalytics.copyProperties = function(dest, src) {
  for (var property in src) {
    dest[property] = src[property];
  }
  return dest;
};
PartsAnalytics.Analyzer = function() {
  this.initialize.apply(this, arguments);
};
PartsAnalytics.Analyzer.prototype ={
  initialize: function(){
    if (arguments[0]) this.setOptions(arguments[0]);
    if(this.page_id=='') this.setPageId();
    this.setParts();
  },
  page_id: '',
  page_type: '',
  
  setParts : function (){
      analyzer = this;
      $("[partsid]").each(function(i){
        part = $(this);
        partsid = part.attr('partsid');
        partsid = analyzer.makePartsid( partsid );
        analyzer.setTracecode(part,partsid);
      });
  },
  setPartsByPartsid : function (setid){
      analyzer = this;
      $("[partsid]").each(function(i){
        part = $(this);
        partsid = part.attr('partsid');
        if(partsid==setid){
          partsid = analyzer.makePartsid( partsid );
          analyzer.setTracecode(part,partsid);
        }
      });
  },

  setTracecode: function ( part,partsid ){
    analyzer = this;
    children = $("a",part);
    doTrace( partsid + '-view');
    children.each(
      function(i){
        $(this).click( function (){ doTrace( partsid +'-click-'+ i ); } );
        //var evHandler = $(this).get()[0].onclick;
        //if( evHandler!="undefined" )
        //{
        // $(this).click( function (){ doTrace( partsid +'-'+ i ); evHandler() ;} );
        //analyzer._addEvent( $(this),'click', function (){ doTrace( partsid +'-'+ i );} );
      }
    );
  },
  makePartsid : function (pid) {
    partsid = (this.page_id == '')?this.getPageId(): this.page_id + '-';
    partsid += (this.page_type == '')?'': this.page_type + '-';
    partsid += pid;
    return partsid;
  },
  // Utils
  setOptions: function(options) {
    PartsAnalytics.copyProperties(this, options);
  },
  setPageId: function(){
    var path = location.pathname;
    if(!path){
      this.page_id = '';
    }else{
      var r = /\/(\w+)?\/?(\w+)?/gi.exec(path);
      if(!r || typeof r[1] == 'undefined' ){
        rulename = "/";
      }else if(typeof r[2] == 'undefined'){
        rulename = "/" + r[1] ;
        rulename = rulename.toLowerCase();
      }
      else{
        rulename = "/" + r[1] + "/" + r[2] ;
        rulename = rulename.toLowerCase();
      }
      this.page_id = rulename;
    }
  },
  _getElement: function(element) {
    return (typeof element == 'string') ? document.getElementById(element) : element;
  },
  _addEvent: (window.addEventListener ?
    function(element, type, func) {
      element.addEventListener(type, func, false);
    } :
    function(element, type, func) {
      element.attachEvent('on' + type, func);
  })
}
var PartsStart = function(){MyPartsAnalytics = new PartsAnalytics.Analyzer({page_id:''});};
window.addEventListener ? window.addEventListener('load', PartsStart, false) :window.attachEvent('onload', PartsStart);
