var GA = {};
GA.org = orgName; //'catalogchoice';
GA.widget = widgetName; //'crateandbarrel';
GA.act = {}; // Actions
GA.lab = {}; // Labels


// Actions
GA.act['start']     = 'start';
GA.act['widget']    = 'widget';
GA.act['getwidget'] = 'getwidget';
GA.act['profile']   = 'profile';
GA.act['search']    = 'search';
GA.act['browse']    = 'browse';
GA.act['details']   = 'details';
GA.act['mylist']    = 'mylist';
GA.act['finder']    = 'finder';
GA.act['ads']       = 'detailview';
GA.act['share']     = 'share';
GA.act['splash']    = 'splashscreen';
GA.act['welcome']   = 'welcomelink';
GA.act['logo']      = 'logolink';
GA.act['footer']    = 'footerlink';
GA.act['more']      = 'morelinks';


// Labels
GA.lab['load']     = 'startWidgetLoad';
GA.lab['start']     = 'endWidgetLoad';
GA.lab['referer']   = 'referer';

GA.lab['splash_show'] = 'show';
GA.lab['splash_hide'] = 'hide';

GA.lab['profile_view'] = 'view';
GA.lab['profile_close'] = 'close';

GA.lab['category']  = 'category';
GA.lab['subcat']    = 'subcat';

GA.lab['browse_prev']  = 'prev';
GA.lab['browse_next']  = 'next';

GA.lab['search']       = 'search';
GA.lab['search_view']  = 'view';
GA.lab['search_close'] = 'close';
GA.lab['search_query'] = 'query';
GA.lab['search_more']  = 'more';

GA.lab['ad_detail'] = 'detailview';
GA.lab['ad_buy']    = 'click';
GA.lab['ad_save']   = 'addtolist';
GA.lab['ad_print']  = 'print';
GA.lab['ad_zoom']   = 'zoom';

GA.lab['ad_share_open']  = 'open';
GA.lab['ad_share_close'] = 'close';

GA.lab['ad_share_email'] = 'email';
GA.lab['ad_share_fail']  = 'fail';
GA.lab['ad_share_sent']  = 'sent';

GA.lab['ad_share_facebook']  = 'facebook';
GA.lab['ad_share_myspace']   = 'myspace';
GA.lab['ad_share_delicious'] = 'delicious';
GA.lab['ad_share_twitter']   = 'twitter';

GA.lab['sharewidget_email']     = 'email';
GA.lab['sharewidget_facebook']  = 'facebook';
GA.lab['sharewidget_myspace']   = 'myspace';
GA.lab['sharewidget_delicious'] = 'delicious';
GA.lab['sharewidget_twitter']   = 'twitter';
GA.lab['sharewidget_embed']     = 'embed';

GA.lab['more_view'] = 'view';

GA.lab['mylist_view']      = 'view';
GA.lab['mylist_remove']    = 'remove';
GA.lab['mylist_removeall'] = 'removeall';

GA.lab['getwidget']  = 'get';


// Check if there are repeated/empty values on trackCode
(function(){
	var t = [];
	for (var i = 0; i < trackCode.length; i++) {
		// check if empty
		var f = (trackCode[i] + '') == '';
		
		for (var j = 0; j < t.length; j++) {
			if (f)
				break;
			
			// check if it's a repeated value
			f = trackCode[i] == t[j];
		}
		
		if (f)
			continue;
		
		// push the new value to a temporal array
		t.push(trackCode[i]);
	}
	
	// replace the old trackCode array with the temporal array
	trackCode = t;
})();


// Tracker
var pageTracker = [];
for (i in trackCode) {
	if (trackCode[i] !== '') {
		try {
			var x = _gat._getTracker(trackCode[i]); // GA project code
			x._initData();
			//x._trackPageview();
			//x._trackPageview('/' + GA.widget + '/');
			pageTracker.push(x);
		} catch (e) {}
	}
}

if (pageTracker.length <= 0) {
	var x = { _trackPageview: function(e){ } };
	pageTracker.push(x);
}


var refcount = 0;
function trackEvent(act, lab, val) {
	switch (lab) {
		case GA.lab['category']:
			lab = null;
			break;
		
		case GA.lab['subcat']:
			lab = GA.category;
			val = GA.subcat;
			break;
		
		case GA.lab['ad_detail']:
			lab = null;
			break;
		
		case GA.lab['search']:
			act = null;
			break;
		
		case GA.lab['ad_save']:
			act = null;
			break;
		
		case GA.lab['ad_buy']:
			act = null;
			break;
	}
	
	var org = slugify(GA.org);
	var widget = slugify(GA.widget);
	
	lab = slugify(lab);
	val = slugify(val);
	
	//var query = '/' + GA.org + '/' + GA.widget + '/' + act + '/' + lab + (val ? '/' + val : '');
	var query = '/' + org + '/' + widget + (act ? '/' + act : '') + (lab ? '/' + lab : '') + (val ? '/' + val : '');
	
	try {
	for (i in pageTracker) {
			//if (refcount == 0 && act != GA.widget && lab != GA.lab['start']) {
			//	if (refcount == 0)
			//		pageTracker[i]._trackPageview('/' + GA.widget + '/actref/' + referrer);
			//	refcount++;
			//}
			pageTracker[i]._trackPageview(query);
		}
	} catch (e) {
		if (typeof console !== 'undefined' && typeof console.error !== 'undefined')
			console.error(e);
	}

	// Debugging
	
	// Event Logging
	if (typeof event_debug !== 'undefined' && event_debug === true) {
		if (typeof console !== 'undefined' && typeof console.log !== 'undefined') {
			console.log('GA:' + query);
		}
		
		if (typeof event_debug_element !== 'undefined' && event_debug_element !== null) {
			var el = event_debug_element;
			el.innerHTML += 'GA: ' + query + "<br>";
			
			// scroll
			el.scrollTop = el.scrollHeight;
		}
	}
}