__m1 = ["m","a","i","l","t","o",":"];
__m2 = ["@","a","c","c","o","m","p","l","i","c","e",".","c","o","m"];

function launchMail(elt, prefix)
{
  elt.href = __m1.join('') + prefix + __m2.join('');
}

function getUrlParam(paramName)
{
  var regex = new RegExp( "[\\?&]" + paramName + "=([^&#]*)" );
  var results = regex.exec(window.location.search);
  if (results == null)
    return "";
  else
    return unescape(results[1]);
}

function hasUrlParam(paramName)
{
  var regex = new RegExp( "[\\?&]" + paramName + "=([^&#]*)" );
  var results = regex.exec(window.location.search);
  return (results != null);
}

function hasFormElt(formRef, eltName)
{
  return (formRef.elements[eltName] != null);
}

function urlParamsToForm(formRef)
{
  for (var i=1; i<arguments.length; i++)
  {
    var paramName = arguments[i];
    if (hasUrlParam(paramName) && hasFormElt(formRef, paramName))
    {
      var paramValue = getUrlParam(paramName);
      formRef.elements[paramName].value = paramValue;
    }
  }
}

function urlMappedParamsToForm(formRef)
{
  for (var i=1; i<arguments.length; i++)
  {
    var paramName = arguments[i];
    i++;
    var formParamName = arguments[i];
    if (hasUrlParam(paramName) && hasFormElt(formRef, formParamName))
    {
      var paramValue = getUrlParam(paramName);
      formRef.elements[formParamName].value = paramValue;
    }
  }
}

function extractDomain(s)
{
  var i;
  var a;
  
  if (!s) return ""; // nothing to do
  
  i = s.indexOf('//');
  if (i > -1) { s = s.substr(i+2); } // remove protocol

  s = s.split(/[^\w\.]/)[0]; // remove anything after domain;
  
  if (!s.match(/[a-z]/i)) { return s; } // maybe an ip address

  a = s.split('.');
  
  if (a.length < 2) { return s; } // not really a domain name

  s = a[a.length-2] + '.' + a[a.length-1]; // domain is last two parts...
  if(a.length > 2 && (a[a.length-1].length == 2)) // ...except if the last part is ccTLD
  {
    s = a[a.length-3] + '.' + s;
  }
  
  return s.toLowerCase();
}

function createCookie(name, value, days, domain)
{
  if (days)
  {
    var date = new Date();
    date.setTime(date.getTime() + (days*24*60*60*1000));
    var expires = "; expires=" + date.toGMTString();
  }
  else 
  {
    var expires = "";
  }
  var dom = domain ? "; domain=" + domain : "";
  document.cookie = name + "=" + value + expires + "; path=/" + dom;
}

function readCookie(name)
{
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for (var i=0; i < ca.length; i++)
  {
    var c = ca[i];
    while (c.charAt(0) == ' ') c = c.substring(1, c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
  }
  return null;
}

function eraseCookie(name, domain)
{
  createCookie(name, "", -1, domain);
}

function setCreditCookie()
{
  var expirationDays = 90;
  var myDomain = extractDomain(self.location.hostname);
  if (!myDomain) return; // weird, I don't know who I am
  var refDomain = extractDomain(document.referrer);
  if (refDomain && (refDomain != myDomain))
  {
    if (!readCookie("firstReferrer")) createCookie("firstReferrer", refDomain, expirationDays, myDomain);
    createCookie("lastReferrer", refDomain, expirationDays, myDomain);
   }
  if (hasUrlParam("aac"))
  {
    createCookie("aac", getUrlParam("aac"), expirationDays, myDomain);
  }
}

setCreditCookie();