(function() {

	var _prefix = 'TBUS';
	var _days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
	
	function getGlobalVars()
	{
		var now = new Date();
		
		var day = _days[now.getDay()];
		
		var day_type = (day == 'sunday' || day == 'saturday')? 'weekend' : 'weekday';
		var day_part = tacoBell.dayParts.getPartForHour();
		
		return {
			server: 'tacobell.com',
			prop8: day,
			eVar8: day,
			prop9: day_type,
			eVar9: day_type,
			prop10: day_part,
			eVar10: day_part
		};
	}
	
	function trackPage(page_name, channel, params, prefix, tracker)
	{
		tracker = tracker || s;
		
		var key;
		
		tracker.pageName = (prefix || _prefix) + (page_name == '' ? '' : '>' + page_name);
		tracker.channel = channel;
		tracker.server = 'tacobell.com';
		
		var cp_str = window.location.search.match(/cp=(.[^&]+)/);
		if (cp_str)
			tracker.campaign = cp_str[1];
		
		for (key in (params || {}))
			tracker[key] = params[key];
		
		var global_vars = getGlobalVars();
		for (key in global_vars)
			tracker[key] = global_vars[key];
		
		tracker.t();
	}
	
	function trackClick(page_name, channel, params, prefix, tracker)
	{
		tracker = tracker || s;
		
		var key;
		
		tracker.linkName = tracker.prop1 = (prefix || _prefix) + (page_name == '' ? '' : '>' + page_name);
		tracker.channel = channel;
		tracker.server = 'tacobell.com';
		
		for (key in (params || {}))
			tracker[key] = params[key];
		
		var global_vars = getGlobalVars();
		for (key in global_vars)
			tracker[key] = global_vars[key];
		
		tracker.tl('null', 'o', tracker.linkName);
	}
	
	function newTracker()
	{
		var n = {};
		
		for (var key in s)
			n[key] = s[key];
		
		return n;
	}
	
	window.Tracker = {
		prefix: _prefix,
		trackPage: trackPage,
		trackClick: trackClick,
		newTracker: newTracker
	};
})();