// Copyright (C) 2010-2011 
// Italia Convention - Portale del Congressuale
// Italia Convention è il  portale del congressuale che parla ai manager d'azienda di eventi, tecniche, sedi e servizi. Gli autori sono professionisti del congressuale: catering, comunicazione, organizzazione, service tecnico, produzione audiovisivi,incentive, allestimenti, formazione, tecniche, trend, idee, regole fondamentali, trappole, glossario, presentazioni." 
// turismo congressuale, meeting, hotel, sala, congressi, convegni, riunioni, evento, location, business travel, incentive, formazione, centri congressi , convention, dimora storica, villa, castello, palazzo, villaggio turistico, borgo, masseria, spazio espositivo, scenografia, laser show, partecipante, organizzatore, PCO, event planner, speaker, speech, teatro d'impresa, animazione, tour operator, destination management company, DMC, gala dinner, buffet, video, brand image//
// 
// ***** clicktracker_inarray  *****

function clicktracker_inarray (arr, val)
{
  for (var i in arr) if (arr[i] == val) return true;
  return false;
}

// ***** clicktracker_innertxt *****

function clicktracker_innertxt(str)
{
  str = str.replace(/<[^>]*>/g, ' ');
  str = str.replace(  /&amp;/g, '&');
  str = str.replace( /&nbsp;/g, ' ');
  str = str.replace(   /^\s+/g,  '');
  str = str.replace(   /\s+$/g,  '');
  return str;
}


// ***** URL *******************************************************************

var clicktracker_re_scheme = "^\\w+://";
var clicktracker_re_folder = "((?:-|\\w|\\.)*)";
var clicktracker_re_domain = clicktracker_re_scheme+       clicktracker_re_folder;
var clicktracker_re_urlall = clicktracker_re_domain+"(?:/"+clicktracker_re_folder+')*';

// ***** clicktracker_domain *****

function clicktracker_domain(url)
{
  var reg   = new RegExp(clicktracker_re_domain);
  var match = reg.exec(url);
  if (!match) return "";
  match = match[match.length-1];
  return match;
}

// ***** clicktracker_extension *****

function clicktracker_extension(url)
{
  var reg   = new RegExp(clicktracker_re_urlall);
  var match = reg.exec(url);
  if (!match) return "";
  match = match[match.length-1].split(".");
  return (match.length >= 2) ? match[match.length-1] : "";
}


// ***** Track *****************************************************************

// ***** clicktracker_aux *****

function clicktracker_aux(url, title)
{
  var img = new Image();
  img.src = clicktracker_url+"?url="+url+"&title="+title+"&rand="+Math.random();
}

// ***** clicktracker *****

function clicktracker(e)
{
  var ie  = navigator.appName == "Microsoft Internet Explorer";
  var src = ie ? window.event.srcElement : e.target;
  var tag =  (src.tagName.toLowerCase() != "a") ? src.parentNode : src;

  if (!tag || tag.tagName.toLowerCase() != "a") return;

  domain    = clicktracker_domain   (tag.href);
  extension = clicktracker_extension(tag.href);

  if ( clicktracker_inarray(clicktracker_domains, domain) &&
      !clicktracker_inarray(clicktracker_extensions, extension)) return;

  var url   = tag.href;
  var title = '';

  if (!title) if (tag.tagName.toLowerCase() ==   "a") title = clicktracker_innertxt(tag.innerHTML);
  if (!title) if (tag.tagName.toLowerCase() ==   "a") title = clicktracker_innertxt(tag.title);
  if (!title) if (src.tagName.toLowerCase() == "img") title = clicktracker_innertxt(src.alt);
  if (!title) if (src.tagName.toLowerCase() == "img") title = clicktracker_innertxt("Image");
  url   = escape(url  .substr(0, 150));
  title = escape(title.substr(0, 150));

  if (url && title) setTimeout("clicktracker_aux('"+url+"', '"+title+"')", 10);
  return;
}


// ***** Attach Events *********************************************************

if (navigator.appName == "Microsoft Internet Explorer")
     document.attachEvent   ('onclick', clicktracker);
else document.addEventListener('click', clicktracker, false);
