// -*- Mode: MooTools Javascript; tab-width: 4; -*-

var GET  = String(document.location.search).replace(/^\?/,'').parseQueryString();
var HASH = String(document.location.hash  ).replace(/^\#/,'').parseQueryString();


var Tracker = new Class({
	
	Implements: [Options, Events],
	
	options:{
		asset:'image',
		url:'/track',
		getUrl: function(url,data){
			return new URI(url).setData(data,true).setData('_',+new Date);
		},
		data:{}
	},
	
	initialize: function(options){
		this.setOptions(options);
	},
	
	appendData: function(data){
		this.setOptions({ data:data });
		return this;
	},
	
	trackEvent  : function(selector, type, fn, bind, args){
		$$(selector).addEvent(type, fn.bind(bind||this, args));
		return this;
	},
	trackEvents : function(events){
		Hash.each(events, function(fn, type){
			this.trackEvent(type, fn);
		}, this);
		return this;
	},
	
	// Send the tracking data nao
	//     optionally merge in some data with this request only
	track: function(data){
		if ($type(data) != 'object') data = { value:data };
		
		!DEBUG && new Asset[this.options.asset](this.getAssetUrl(data));
		
		return this;
	},
	getAssetUrl: function(data){
		var url = $lambda(this.options.getUrl).call(this, this.options.url, $merge(this.options.data, data));
		return url;
	}
	
});


Tracker.VS = new Class({
	
	Extends: Tracker,
	
	options:{
		asset: 'javascript',
		// url: '/fake-track/vs'
		url: 'http://crossdomain.capitalone.com/common/scripts/null.js?Log=1'
	}
	
});

Tracker.Atlas = new Class({
	
	Extends: Tracker,
	
	options:{
		asset: 'javascript',
		url: 'http://view.atdmt.com/jaction/',
		// url: '/fake-track/atlas/',
		getUrl: function(url,data) {
			return url + data.value;
		}
	}
	
});

Tracker.BridgeTrack = new Class({
	
	Implements: [Options, Events],
	
	options: {
		iPixID: '7206',
		pageID: 'VENWELC',
		szAppDomain: 'capitaloneventure.com',
		szProtocol: window.location.protocol,
		szHost: window.location.hostname.replace(/^www\./, '')
	},
	
	initialize: function(options){
		this.setOptions(options);
	},
	
	track: function(options){
		var timestamp = (new Date()).getTime(),
			iframe = document.createElement('iframe'),
			page = options.hasOwnProperty('pageID') ? options.pageID : this.options.pageID,
			vid = options.hasOwnProperty('vID') ? options.vID : null;
		
		iframe.setAttribute('frameborder', '0');
		iframe.setAttribute('height', '0');
		iframe.setAttribute('width', '0');
		
		var urlBase;
		if (this.options.szHost == this.options.szAppDomain) {
			urlBase = '//ads.bridgetrack.com/track/f/?id=';
		} else {
			urlBase = '//ads-uat.bridgetrack.com/track/f/?id=';
		}
		
		var url = [
			this.options.szProtocol,
			urlBase,
			this.options.iPixID,
			'&random=',
			timestamp,
			'&visitorID=',
			vid,
      		'&pageID=',
      		page
		].join('')
		
		if (vid){ url += '&visitorID=' + vid; }
		
		iframe.setAttribute('src', url);
				
		document.getElementsByTagName('body')[0].appendChild(iframe);
	}
});

