var logTracker  = '0';
var serverHost  = window.location.host;
var httpReferer = document.referrer; 
var curefCookie = getCookie('curef');
var cqrefCookie = getCookie('cqref');

serverHost.toLowerCase();

function TrackMe()
{
   // global vars 
   logTracker  = '0';
   serverHost  = window.location.host;
   httpReferer = document.referrer; 
   curefCookie = getCookie('curef');
   cqrefCookie = getCookie('cqref');
   
   if(cqrefCookie != '')
   {
      if(! httpReferer)
      {
         cqrefCookie = '';
      }
      else
      {
         if(! httpReferer.match("quotezone.co.uk"))
            cqrefCookie = '';
      }
   }
   
   if(! curefCookie)
   {
      curefCookie = encode64(makeSeed());
   
      // curDate + 10 years
      curDate = new Date();
      curDate.setTime((curDate.getTime()+(10*365*86400000)));
   
      // set cookie user reference - expire date is high
      setCookie("curef",curefCookie,curDate,"",".quotezone.co.uk");
   
       logTracker = '1';
   }
   
   if(! cqrefCookie)
   {
      cqrefCookie = encode64(makeSeed());
   
      // curDate + 30 mins
      curDate = new Date();
      curDate.setTime((curDate.getTime()+1800000));
   
      // set cookie quote reference - expire at the same moment with session
      // on the main site we dont have session so we have to force that cookie to expire on 30 minutes
      setCookie("cqref",cqrefCookie,curDate,"",".quotezone.co.uk"); 
   
      logTracker = '1';
   }
   
   today     = new Date();
   img       = new Image(); 
   img.src   = "/TrackReferrer.php?q="+UrlEncode(window.location)+"&r="+UrlEncode(document.referrer)+'&l='+logTracker+'&p='+today.getTime(); 

   img2 = new Image();
   img2.src = "http://tracker.quotezone.co.uk/tracker/TrackVisitor.php?s=2&r="+UrlEncode(document.referrer)+"&u="+UrlEncode(document.location)+"&n=";
	
   return;
}

function UrlEncode(string)
{
   var encodedString = escape(string);
   encodedString = encodedString.replace(/\*/g, "%2A");
   encodedString = encodedString.replace(/\@/g, "%40A");
   encodedString = encodedString.replace(/\+/g, "%2B");
   encodedString = encodedString.replace(/\//g, "%2F");    
   
   return encodedString;
}

function UrlDecode(string)
{
   var decodedString = unescape(string);
   decodedString = decodedString.replace(/%2A/g, "*");
   decodedString = decodedString.replace(/%40A/g, "@");
   decodedString = decodedString.replace(/%2B/g, "+");
   decodedString = decodedString.replace(/%2F/g, "/");    
   
   return decodedString;
}

function setCookie(name, value, expires, path, domain, secure)
{
    document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function getCookie(name)
{
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1)
    {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else
    {
        begin += 2;
    }

    var end = document.cookie.indexOf(";", begin);
    if(end == -1)
        end = dc.length;

    return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain)
{
    if (getCookie(name))
    {
        document.cookie = name + "=" +
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}

function makeSeed()
{
   date = new Date();
   seed = date.getTime()+''+(date.getTime() + Math.floor(Math.random()*1000000000));

   return seed;
}

// This code was written by Tyler Akins and has been placed in the
// public domain.  It would be nice if you left this header intact.
// Base64 code from Tyler Akins -- http://rumkin.com

function encode64(input) 
{
   var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);
   
   return output;
}

function decode64(input) 
{
   var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
}

function TrackKeyword(keyword)
{
   var img = new Image();
   keyword = escape(keyword);
   
   img.src = 'http://car-insurance.quotezone.co.uk/LogKwDBTracking.php?kw=' + keyword;
}

// call tracking function
TrackMe();

// development new tracker system
//var imgTr = new Image();
//imgTr.src = 'http://www.acrux.biz:84/~vali/work/overture/trunk/TrackVisitor.php?h=2&r='+UrlEncode(document.referrer)+'&q='+UrlEncode(document.location);


//======================= OUT Tracker ====================//

function TrackNewClickOut(e)
{
   var target = GetTarget(e);
   var url    = target.getAttribute('href');
  
   var fromPath = document.location;
  
   //if the clicked link is not a valid url we do not track it
   var targetString = target.toString();	
   if(targetString.match("://") == null)
      return;

   var currentHost = document.location.host.toString();
   var targetHost  = target.host.toString();

   if(currentHost == targetHost)
      return;

   TrackOut(UrlEncode(fromPath),UrlEncode(url));	
}
		
function AddListener(element, type, expression)
{
   if(window.addEventListener) 
   {
      element.addEventListener(type, expression, false);
      return true;
   }
	
   if(window.attachEvent)
   {
      element.attachEvent('on' + type, expression);
      return true;
   }
	 
   return false;
}	

// initiate tracker for the out links
function TrackerInit()
{
   var links = document.getElementsByTagName('a');
   var i = 0;					
 
   for(i=0; i<links.length; i++)
       AddListener(links[i], 'mouseup', TrackNewClickOut); 
 
}

//return the links target
function GetTarget(e)
{
   var result = e.target || e.srcElement;
   return ResolveTextNode(result);
}

//DOM 
function ResolveTextNode(node) 
{               
   if (node && 3 == node.nodeType)
      return node.parentNode;

   return node;
}


function TrackOut(fromPath,outUrlLink)
{
   img = new Image();   
   img.src = "http://tracker.quotezone.co.uk/tracker/TrackVisitor.php?s=2&r="+fromPath+"&u="+outUrlLink+"&o=1";
}

window.onload = TrackerInit;


//======================= OUT Tracker ====================//

