// ***** Configuratie *****

// Uitgaande links naar deze domeinen negeren: ("domein1.nl www.domein2.nl")
// var ignore_urls      = "rovecom.nl"; 
if (typeof ignore_urls == "undefined") { var ignore_urls = ""; }
  
var prefix_clickouts = "/clickouts/";
var prefix_mailto    = "/mailto/";
  
// ***** Configuratie *****

function addEvent(element, type, handler)
{
  if (element.addEventListener)
  {
    element.addEventListener(type, handler, false);
  } else {
    if (!handler.$$guid) handler.$$guid = addEvent.guid++;
    if (!element.events) element.events = {};
    var handlers = element.events[type];
    if (!handlers)
    {
      handlers = element.events[type] = {};
      if (element["on" + type])
      {
        handlers[0] = element["on" + type];
      }
    }
    handlers[handler.$$guid] = handler;
    element["on" + type] = handleEvent;
  }
}
addEvent.guid = 1;

function handleEvent(event)
{
  var returnValue = true;
  event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
  var handlers = this.events[event.type];
  for (var i in handlers)
  {
    this.$$handleEvent = handlers[i];
    if (this.$$handleEvent(event) === false)
    {
      returnValue = false;
    }
  }
  return returnValue;
}

function fixEvent(event)
{
  event.preventDefault = fixEvent.preventDefault;
  event.stopPropagation = fixEvent.stopPropagation;
  return event;
}

fixEvent.preventDefault = function()
{
  this.returnValue = false;
}

fixEvent.stopPropagation = function()
{
  this.cancelBubble = true;
}

ignore_urls = document.domain + " " + ignore_urls;
ignore_urls = ignore_urls.replace(/^\s+/,'').replace(/\s+$/,''); 
ignore_urls = ignore_urls.split(" ");

function checkLinkToOwnDomains(txt)
{
  for (var i = 0; i <= ignore_urls.length; i++)
  {
    if (txt.indexOf(ignore_urls[i]) > -1) { return false; }
  }
  return true;
}

elm = document.getElementsByTagName("a");
for (var i = 0; i < elm.length; i++)
{
  var path = elm[i].href + "";
  
  // Call-to-action naar specifieke te meten onderdelen op de site
  // Opbouw id op a tag : id="gacta_form_contact-formulier-knop"
  if (elm[i].id && (elm[i].id.indexOf("gacta_") > -1))
  {
    var gacta_arr = elm[i].id.split('_');    
    addEvent(elm[i], "click", function() { pageTracker._trackPageview('/' + gacta_arr[1] + '/' + gacta_arr[2]); } );
  } 
  
  // Downloads
  if (path.match(/\.(doc|eps|jpg|png|svg|xls|ppt|pdf|xls|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)/) != null)
  {
    if ((path.indexOf("http://" + location.host) > -1) || (checkLinkToOwnDomains(path) == false))
    {
      // controle op inc_downloads_FileDownload
      if (path.indexOf('inc_downloads_FileDownload.asp') > -1) {
        // match bestandsnaam
        var regex_ga_download = new RegExp("[\\?&]file=/upl([^&#]*)");
        var ga_download_filename = regex_ga_download.exec(path);
        
        // indien geen matches niet verder gaan, anders clickpad maken
        if (ga_download_filename != null) {
          ga_download_filename = ga_download_filename[1];
          addEvent(elm[i], "click", function() { pageTracker._trackPageview(ga_download_filename) } );
        }
      }
    }
  }
  
  // Mailto's
  if (path.indexOf("mailto:") > -1)
  {
    addEvent(elm[i], "click", function() { pageTracker._trackPageview(prefix_mailto + (this.href).substr(7)) } );
  }
  
  // Uitgaande links
  if ((checkLinkToOwnDomains(path)) && (path.indexOf("mailto:") == -1) && (path.indexOf("javascript:") == -1))
  { 
    addEvent(elm[i], "click", function() { pageTracker._trackPageview(prefix_clickouts + (this.href).substr(7)) } );
  }
}


/* 
eerst niet van toepassing, misschien later om te kijken of formulieren verstuurd wordt. 
hiermee zou je kunnen vergelijken of geposte formulieren altijd worden verzonden uitgaande van een contaxctformulier
wijkt dit erg af dan betekent dit mogelijk teveel verplichte velden i.c.m. verzonden tracker
elm = document.getElementsByTagName("form");
for (var i = 0; i < elm.length; i++)
{
  addEvent(elm[i], "submit", function() { pageTracker._trackPageview('form-submit'); } );
}
*/
