/*
  Version 1.0 Beta - Matthew J Shelley
  
  Basic hit tracking for browsers only.
  
*/
var d 		 = document;
var w	     = window;
var cysl     = {};
cysl.HTTP    = {};
cysl.ajx     = false;

if (w.XMLHttpRequest) { cysl.ajx = true; } else {
  if (w.ActiveXObject) {
    if (n && n.appName && n.appVersion) {
      if (n.appName.indexOf("Microsoft") != -1) {
        if (n.appVersion.indexOf("MSIE 5") != -1 || n.appVersion.indexOf("MSIE 6") != -1) {cysl.ajx = true;} 
      }
    } else {cysl.ajx = false;}
  } else {cysl.ajx = false;}
}
//HTTP Library
if (cysl.ajx) {
  cysl.HTTP._factory = null;
  cysl.HTTP._factories = [
    function() {return new XMLHttpRequest(); }, 
    function() {return new ActiveXObject("MSXML2.XMLHTTP"); }, 
    function() {return new ActiveXObject("Microsoft.XMLHTTP"); }, 
    function() {return new ActiveXObject("MSXML2.XMLHTTP.3.0"); },
    function() {return new ActiveXObject("MSXML2.XMLHTTP.6.0"); }, 
  ];
  cysl.HTTP.newRequest = function() {
    if (cysl.HTTP._factory != null) return cysl.HTTP._factory();
      for(var i = 0; i < cysl.HTTP._factories.length; i++) { 
        try {
          var factory = cysl.HTTP._factories[i]; 
          var request = factory(); 
          if (request != null) { cysl.HTTP._factory = factory; return request; }
        } catch(e) { continue; }
      }
    cysl.HTTP._factory = function() { throw new Error("AJAX") }
    cysl.HTTP._factory();
  };
  cysl.HTTP.post = function(url, values, options) {
    var request = cysl.HTTP.newRequest();  
    var timer;
    var stme = new Date().getTime();
    if (options.timeout) {
      if (options.to_abort) {
        timer = setTimeout(function(){request.abort();if (options.final) eval(options.final);},options.timeout);
      } else {
        timer = setTimeout(
         function(){
           request.abort();
           if (options.final) eval(options.final);
         }, options.timeout);
      } 
    }    
    request.onreadystatechange = function() {
      if (request.readyState == 4) { 
        if (request.status == 200) {
          if (timer) clearTimeout(timer);
          
          //Debug line here! will kill this after it works
          //alert(request.responseText);
          
        } else {
          //Server reported HTTP failure code
          if (request.responseText != "") { //Not a timeout
            if (timer) clearTimeout(timer);
          }
        }
        if (options.final) {
          eval(options.final);
          options.final = "";
        }    
      }     
    };
    request.open("POST", url);
    request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    request.send(values);
  };
  //Prepare
  var options = {};
  var values = "";
  values += "r=" + encodeURIComponent(d.referrer) + "&";
  values += "l=" + encodeURIComponent(w.location.href) + "&"; 
  //Send
  cysl.HTTP.post('/lynctrak.php', values, options);
}
