<!--
// WEBABACUS CLIENT INFO VERSION 2.01, (c)2005 WebAbacus Ltd ALL RIGHTS RESERVED. 
// Version to be used as a JS include
// See accompanying clientinfo-include-notes.txt for change history, or contact supportuk@webabacus.com

// User variables: Change these values to set global settings
//var server = "http://www.dabs.com/abacus";
var server = "http://www.dabs.com/AbacusTest";
//var server_bak = "http://www.dabs.com/AbacusTest";
var server_bak = "";

//var secureserver = "https://www.dabs.com/abacus";
var secureserver = "https://www.dabs.com/AbacusTest";
//var secureserver_bak = "https://www.dabs.com/AbacusTest";
var secureserver_bak = "";

// This needs to be made dynamic for different sites in the future
var site = "Galahad_Dabs.com";
var cookieLife = 730;
var cookieDomain = ".dabs.com";
var perfinfo = 0;
var sourceparamname = "";
var debug=false;


// set timer
var fromt = new Date();
var elapsedt = fromt.getTime();
var pet = "";
var SRT = "0";
var OET = "0";
var UET = "0";

var civersion="2.01";
var js = "-";
var sc = 0;
var sw = 0;
var sh = 0;
var ww = 0;
var wh = 0;
var je = "-";
var lg = "-";
var dn = "-";
var bt="";
var st="-";
var tz=0;
var vl="-";
var t=0;
var sr="-";
var res="-";
var ref="-";
var res2;
var pt="-";
var fs=0;
var is=0;
var id="-";
var idparm="";
var nu="-";
var wr="-";
var base="";
var base_bak="";
var backupRequest=null;
var reqsrc="";
var now="";
var tt=0;
keys = new Array();
values = new Array();
var source = "";
var src = "-";
var clifems = cookieLife * 86400000;
cexp = new Date(fromt.getTime() + clifems);
var srctime=0;
var customfields="";
var optout="";
var trioid="-";

var key1 = '';
var key2 = '';
var charArray = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');

var rn="";
for (i = 0; i < 10; i++){
		rn += charArray[Math.floor(Math.random() * charArray.length)];
	}

function logclientdata(n,res2) {
thispet = n;

// Calculate time differentials
if (thispet=="01") {
  now = new Date();
  tt = now.getTime();
  SRT = (tt - elapsedt);
  trioid = rn;
  }
else if (thispet=="02") {
  now = new Date();
  tt = now.getTime();
  OET = (tt - elapsedt);
  trioid = rn;
  }
else if (thispet=="03") {
  now = new Date();
  tt = now.getTime();
  UET = (tt - elapsedt);
  trioid = rn;
  }
else  {
  SRT = 0;
  OET = 0;
  UET = 0;
  trioid = rn;
  thispet = "-";
  }

if (navigator.appName == 'Netscape') bt = "NS";
else {
if (navigator.appName == 'Microsoft Internet Explorer') bt = "IE";
else bt="OT";
}

je = navigator.javaEnabled() ? "Y" : "N";
dn = document.domain;
lg = bt=="NS" ? navigator.language : navigator.browserLanguage;
sc = Math.pow(2, screen.colorDepth);
sp = screen.pixelDepth;
sw = screen.width;
sh = screen.height;
now = new Date();

st = escape(site);
if (st==null || st=="") st = "-";
tz = now.getTimezoneOffset();
vl = history.length;
t = now.getTime();
sr = sw + "x" + sh;

res = escape(document.URL);
ref = escape(document.referrer);
if (ref==null || ref=="") ref = "-";
pt = escape(document.title);
if (pt==null || pt=="") pt = "-";

if((navigator.appName == 'Netscape')&&(parseInt(navigator.appVersion)<5)){
	fs = "-";
  is = "-";
  wr = "-";
  customfields = "-";
}
else {
	if (thispet != "01"){
  	// Capture size of document and related graphics
  	is = 0;
  	try {
  		fs = document.fileSize * 1;  
  		var iMap = new Object();
    	for (i = 0; i < document.images.length; i++) {
      	  if (!iMap[document.images[i].src]) {
        	    is += parseInt(document.images[i].fileSize);
          	  iMap[document.images[i].src] = true;
        	}
    	}
  	} catch (e) {fs = 0; is = 0;}
  
  	if (bt == 'IE') {
    	 if (document.documentElement && document.documentElement.clientWidth) {
      	  ww = document.documentElement.clientWidth;
        	wh = document.documentElement.clientHeight;
     	}
     	else if (document.body){
      	  ww = document.body.clientWidth;
        	wh = document.body.clientHeight;
     	}
  	}
  	else {
    	try {
      	ww = window.outerWidth; wh = window.outerHeight;
    	} catch (e) {ww = 0; wh = 0;}
  	}
  	var wr = ww + "x" + wh;
  
 	 // Capture the values of the custom fields
  	if (typeof(wacustomvarnames) != "undefined") {
    	customfields = "";
    	for (i = 0; i < wacustomvarnames.length; i++) {
    	  customfields = customfields + wacustomvarnames[i] + "~" + wacustomvarvalues[i];
      	if (i != wacustomvarnames.length-1) customfields = customfields + "~";
    	}
  	} else
    	customfields = "-"; 
	}
	else {
  	fs = "-";
  	is = "-";
  	wr = "-";
  	customfields = "-";
	}
}
parseQS();


function gen_id(int2) {
	var key1="";
	var key2="";
	for (i = 0; i < int2; i++){
		key1 += charArray[Math.floor(Math.random() * charArray.length)];
	}
	for (i = 0; i < key1.length; i++){
    	key2 += key1.charCodeAt(i).toString(16);
	}
	var id = key1 + key2 + "-1";
	return(id);
}

// Check for and issue cookie - will use the value of a "webabacus_id" parameter by preference
optout = getCookie("nocookie");

if (optout != "1") {
  idparm = getQSParam("webabacus_id");
  if (idparm == null || idparm == "") {
    id = getCookie("webabacus_id");
  } else {
    id = idparm;
  }
  if (id == null || id == "-1") {
    //id = now.getTime()+"-1";
    id = gen_id(5);
    nu="1" // New user (they've not been issued a cookie before)
  } else {
    nu="0"
  }
  document.cookie = "webabacus_id="+escape(id)+"; expires=" + cexp.toUTCString() + "; path=/" + (cookieDomain == "" ? "" : "; domain=" + cookieDomain);
  // START v1.89 - SDB 04/01/2005: Check that cookie has been set. If not set the webabacus id value to null.
   if(!document.cookie){
  	var id = "-";
  	var nu = "-";
  }
  // END v1.89 
 	
} else {
  id = "nocookie";
  nu = "-1";
}
// Get query string info & parse out required parameters
source=getQSParam(sourceparamname);
// If a particular parameter is non-null, set that value in the "click source" cookie
if (source != null) {
  src = escape(source);
  srctime=fromt.getTime();
  if (optout != "1") {
    document.cookie = "wa_last_source="+escape(source)+"; expires=" + cexp.toUTCString() + "; path=/" + (cookieDomain == "" ? "" : "; domain=" + cookieDomain);
    document.cookie = "wa_last_source_date="+srctime+"; expires=" + cexp.toUTCString() + "; path=/" + (cookieDomain == "" ? "" : "; domain=" + cookieDomain);
  }
} else {
  if (optout != "1") {
    src = getCookie("wa_last_source");
    srctime = getCookie("wa_last_source_date");
  }
  if (src == null) src = "-";
  if (srctime == null) srctime = 0;
}
  
// decide which tag request (secure vs non-secure) to use
if (res.substring(0,5) == "https"){
  base = secureserver + "/clientinfo_bk.gif?" + civersion + "&" + t + "&";
  if(secureserver_bak.length > 1)
    base_bak = secureserver_bak + "/clientinfo_bk.gif?" + civersion + "&" + t + "&";
  else
  	base_bak = "";	
}
else{
  base = server + "/clientinfo_bk.gif?" + civersion + "&" + t + "&";
  if(server_bak.length > 1)
    base_bak = server_bak + "/clientinfo_bk.gif?" + civersion + "&" + t + "&";
  else
  	base_bak = "";
}

// START v2.00 - SDB: 04/03/2005 Checks if a custom call has been made (res2)  
if(res2){
	var res = escape('http://') + dn + '/' + escape(res2.replace('http://',''));
	var ref = escape(document.URL);
}
// END v2.00

reqsrc = st + "&" + tz + "&" +id + "&" +nu + "&" + sc + "&" +sr + "&" + wr + "&" + js + "&" + je + "&" + lg + "&" + dn + "&" + res + "&" + ref + "&" + pt + "&" + fs + "&" + is + "&" + trioid + "&" + thispet + "&" + SRT + "&" + OET + "&" + UET + "&" + src + "&" + srctime + "&" + customfields;
var maxlen = 2000;  // max request size
var reqlen = reqsrc.length;
if (reqlen>maxlen) reqsrc = reqsrc.substring(0,maxlen);
  
var request = new Image();
request.src = base + reqsrc + "&-";

// START v2.01 SDB: 04/03/2005 - Checks to see if a backup tag server has been entered. If so sends tag request to backup
if(base_bak.length > 1){
		backupRequest = base_bak + reqsrc + "&-";
		var request_bak = new Image();
		request_bak.src = backupRequest;
}

if(debug){
	alert("Site name (st): " + st +"\nTime zone offset (tz): "+tz+"\nWebabacus ID (id): "+id+"\nNew user flag (nu): "+nu+"\nVisitor Screen Colour Depth (sc): "+sc+"\nVisitor Screen resolution (sr): "+sr+"\nVisitor Window resolution (wr): "+wr+"\nJavascript version (js): "+js+"\nJava Enablement (je): "+je+"\nBrowser Language (lg): "+lg+"\nServer name (dn): "+dn+"\nResource (res): "+res+"\nReferrer (ref): "+ref+"\nPage Title (pt): "+pt+"\nfs: "+fs+"\nis: "+is+"\ntrioid: "+trioid+"\nthispet: "+thispet+"\nSRT: "+SRT+"\nOET: "+OET+"\nUET: "+UET+"\nsrc: "+src+"\nsrctime: "+srctime+"\ncustomfields: "+customfields + "\n\nMain Tag: "+ base + reqsrc + "&-"+"\n\nBack-up Tag: "+ backupRequest);
}
// END v2.01

var request2 = new Image();
request2.src= "/images/spacer.gif?" + gen_id(25);

// end main function  
}

function getCookie (name) {
var dc = document.cookie;
var cname = name + "=";
var clen = dc.length;
var cbegin = 0;
while (cbegin < clen) { 
var vbegin = cbegin + cname.length;
  if (dc.substring(cbegin, vbegin) == cname) { 
    var vend = dc.indexOf (";", vbegin);
    if (vend == -1) vend = clen;
    return unescape(dc.substring(vbegin, vend));
    }
  cbegin = dc.indexOf(" ", cbegin) + 1;
  if (cbegin== 0) break;
  }
return null;
}

function getQSParam(key)
{
	var value = null;
	for (var i=0;i<keys.length;i++)
	{
		if (keys[i]==key)
		{
			value = values[i];
			break;
		}
	}
	return value;
}

function parseQS()
{
	var query = "";
	try {
	  query = window.location.search.substring(1);
	} catch (e) {}
	var query1 = query.toLowerCase();
	var pairs = query1.split("&");
	
	for (var i=0;i<pairs.length;i++)
	{
		var pos = pairs[i].indexOf('=');
		if (pos >= 0)
		{
			keys[keys.length] = pairs[i].substring(0,pos);
			values[values.length] = pairs[i].substring(pos+1);		
		}
	}

}

function tagFields(fn) {
  var fidx;
  if (fn != "") {
    for (fidx = 0; fidx < document.forms.length; fidx++) {
    if (document.forms[fidx].name == fn) break;
  }
  if (fidx == document.forms.length) fidx = 0;
  } else fidx = 0;
  var frm = document.forms[fidx];
  fn = frm.name;
  var fsrc = "&" + (escape(fn) == "" ? "-" : escape(fn));
  var elidx, vName, vVal;
  for (elidx = 0; elidx < frm.elements.length; elidx++) {
    vName = escape(frm.elements[elidx].name);
    if(vName == "" || vName == null) vName = "-";
    vVal = escape(frm.elements[elidx].value);
    if(vVal == "" || vVal == null) vVal = "-";
    fsrc = fsrc + "~" + vName + "~" + vVal;
  }
  if (fsrc == "&") fsrc = "&-";
  var fReq = new Image();
  fReq.src = base + reqsrc + fsrc;
}

// This code executes when the script is first parsed
if (perfinfo == 1) {
  logclientdata("01");
} else {
  logclientdata("");
}
//-->

