function MatrixTrackLoader(action, posId, srcURL, trgURL, content, callBack){
   // store the call-back
   this.callBack = callBack;

   // initialize internal state.
   this.loaded = false;
   this.processed = false;
   this.context = "V-MOBI-WIFI";
   this.url = "http://adimg.virgilio.it/tracks/bi/images/bi_clk.gif?RND="+Math.floor(1000000*Math.random())+"&CONTEXT="+this.context+"&ACTION="+action+"&POSID="+posId+"&srcURL="+srcURL+"&trgURL="+trgURL;

   if(content != null && content!='undefined' && content!='') this.url += "&CONTENT="+content;
	
   this.track(this.url);
}

MatrixTrackLoader.prototype.track = function(url){
   // create new Image object and add to array
   var oImage = new Image;	  

   // set up event handlers for the Image object
   oImage.onload = MatrixTrackLoader.prototype.onload;
   oImage.onerror = MatrixTrackLoader.prototype.onerror;
   oImage.onabort = MatrixTrackLoader.prototype.onabort;	  

   // assign pointer back to this.
   oImage.matrixTracker = this;

   // assign the .src property of the Image object
   oImage.src = url;
}

MatrixTrackLoader.prototype.onComplete = function(){
   this.processed = true;
   if(this.callBack != null && this.callBack!='undefined')this.callBack(this);
}

MatrixTrackLoader.prototype.onload = function(){
	this.matrixTracker.loaded = true;
    this.matrixTracker.onComplete();
}

MatrixTrackLoader.prototype.onerror = function(){
   this.bError = true;
   this.matrixTracker.onComplete();
}

MatrixTrackLoader.prototype.onabort = function(){
   this.bAbort = true;
   this.matrixTracker.onComplete();
}

function matrixTracked(matrixTrackLoader){
	//alert("url=" +matrixTrackLoader.url);
}
