// UIEvents
Object.toQueryString = function(obj){
  var str = [];
  
  for (var property in obj) {
    if (!obj.hasOwnProperty(property)) { continue; }
    str.push([property, obj[property]].join('='))
  }
  
  return str.join('&');
};

var UIEvents = {

	urlBase: 'http://crossdomain.capitalone.com/common/scripts/null.js',

	data: {
		Log: 1,
		pgnm: 'VENWELC',
		eventtype: 'DSPL',
		eventname: null,
		event: null,
		appname: 'EXTVENTURE'
	},

	register: function(elements, event){
		$$(elements).each(function(element){
			element.addEvent(event, this.fire.pass([element], this));
		}, this);
		return this;
	},
	
	unregister: function(elements, event){
		elements.each(function(element){
			element.removeEvents(event);
		});
	},

	getQueryString: function(element){
		var data = $merge({}, this.data, {
				eventname: element.get('name'),
				event: element.get('data-event'),
				cachebust: new Date().getTime()
			}),
			neweventtype = element.get('data-eventtype');

		if (neweventtype) { data.eventtype = neweventtype; }
		
		return this.urlBase + '?' + Object.toQueryString(data);
	},

	fire: function(element){
		this.pingUrl(this.getQueryString(element));
		return this;
	},

	pingUrl: function(query){
		var script = document.createElement('script');
		script.src = query;
		script.type = 'text/javascript';
		(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script);
		return this;
	}

};

