function InsightClientActionTracker(SiteID, debug)//if no "SiteID" is given tax0_SiteID=1 (Oxygen.com)
{
	this.directTrackUrl = "http://insightfirst.oxygen.com/data?";
	this.attributeArray = new Array();
	this.imageReferences = new Array();
	this.setAttribute("tax0_SiteID", ((SiteID) ? SiteID : 1));
	this.setAttribute("if_form", true);
	this.debug = (debug) ? debug : false;
}

InsightClientActionTracker.prototype.setAttribute = function(name, value)
{
	for(var i = 0; i < this.attributeArray.length; i++)
	{//if attribute already set overwrite with new value
		if(name in this.attributeArray[i])
		{
			this.attributeArray[i][name] = value;
			return;
		}
	}
	var attributeObject = new Object();
	attributeObject[name] = value;
	this.attributeArray.push(attributeObject);
}

InsightClientActionTracker.prototype.sendRequest = function()
{
	var request = new InsightRequest(this.directTrackUrl, this.attributeArray, this);
	var requestAttributes = arguments;//
	return request.send(requestAttributes);
}

function InsightRequest(directTrackUrl, defaultAttributeArray, insightClientTracker)
{
	this.directTrackUrl = directTrackUrl;
	this.attributeArray  = defaultAttributeArray.concat(); //clones array...
	this.insightClientTracker = insightClientTracker;
	this.img = new Image();
}

InsightRequest.prototype.setAttribute = function(name, value)
{
	for(var i = 0; i < this.attributeArray.length; i++)
	{//if attribute already set overwrite with new value
		if(name in this.attributeArray[i])
		{
			this.attributeArray[i][name] = value;
			return;
		}
	}
	var attributeObject = new Object();
	attributeObject[name] = value;
	this.attributeArray.push(attributeObject);
}

InsightRequest.prototype.send = function(requestAttributes)
{
	if(typeof requestAttributes[0] == "string") this.setAttribute(requestAttributes[0], requestAttributes[1]);//called using (name, value)
	if(typeof requestAttributes[0] == "object") for(var name in requestAttributes[0]) this.setAttribute(name, requestAttributes[0][name]);//called using ({foo:'bar', foo2:'bar2', foo3:1})
	this.setAttribute("timeId", new Date().getTime());//keep browser from caching;
	var tempArray = new Array(); 
	for(var i = 0; i < this.attributeArray.length; i++)
	{
		for(attribute in this.attributeArray[i])
		{
			tempArray.push(attribute + "=" + this.attributeArray[i][attribute]);
		}
	}
	var requestString = this.directTrackUrl + tempArray.join("&");
	if(this.insightClientTracker.debug) alert(requestString)//don't send request;
	else this.img.src = requestString;//send request
	this.insightClientTracker.imageReferences.push(this.img);//save reference to img
	return requestString;
}