var _gaq = _gaq || [];
var _ua = 'UA-3458401-1';
var _atr = 'atr';
var _filetypes = /\.(zip|exe|pdf|doc|xls|ppt|mp(3|4)|eps|docx|rar|csv|gz|dmg|xml|jpg)$/i;
var _multiple_sites = true;
var _pass_to = /\.(cfl\.)/;
var _force_pass_internal = false; // hard-code change urls when passing
var _force_campaign_ext = false; // add campaign-tracking to external links
var _campaign_ext = [['utm_source', 'referral'], 
					['utm_medium', 'link'], 
					['utm_term', ''], 
					['utm_content', ''], 
					['utm_campaign', 'cfl']];
var _real_bouncerate = true;
var _real_sensitivity = 15;
var _sample_rate_extend = 1;
var _use_browser_lang = true;
var _track_lang = false;
var _lang_matrix =  [[/(fr)/, /(\.fr)$/i, 'french'], 
					[/(da)/, /(\.dk)$/i, 'danish'],
					[/(en)/, /(\.co\.uk|\.com)$/i, 'english'], 
					[/(br)/, /(com\.br)$/i, 'portuguese'], 
					[/(de)/, /(\.de)$/i, 'german'],
					[/(it)/, /(\.it)$/i, 'italien'],  
					[/(ru)/, /(\.ru)$/i, 'russian'], 
					[/(pl)/, /(\.pl)$/i, 'polish'], 
					[/(es)/, /(\.es)$/i, 'spanish']];
var _user_types = 	[[0, 'guest'],
					[1, 'member']];
var _cookie_campaign = 6; // months
var _cookie_session = 30; // mins
var _cookies_visitor = 2; // years

var global_user_type = '';
var global_lang = '';
var global_utm_link = '';
var global_utm_link_p = '';
var global_btbuckets = '';
var browser_lang = (navigator.language) ? navigator.language : navigator.userLanguage; 

	var site_url = document.domain;
	var site_url = site_url.split(".");
	var last = site_url.length - 1;
var site_tld = site_url[last];

function initiate_ga() {
	_gaq.push(function() {
		var pageTracker = _gaq._createAsyncTracker(_ua, _atr);
		if (_multiple_sites) {
			pageTracker._setAllowHash(false);
			pageTracker._setAllowLinker(true);
			pageTracker._setDomainName('none');
		}
		if ((_cookie_campaign) && (_cookie_campaign != '')) {
			pageTracker._setCampaignCookieTimeout(_cookie_campaign*1000*60*60*24*31);
		}
		if ((_cookie_session) && (_cookie_session != '')) {
			pageTracker._setSessionCookieTimeout(_cookie_session*1000*60);
		}
		if ((_cookies_visitor) && (_cookies_visitor != '')) {
			pageTracker._setVisitorCookieTimeout(_cookies_visitor*1000*60*60*24*31*12);
		}
		global_user_type = pageTracker._getVisitorCustomVar(1);
		global_lang = pageTracker._getVisitorCustomVar(2);
		global_btbuckets = pageTracker._getVisitorCustomVar(4);
		global_utm_link = pageTracker._getLinkerUrl('');
		global_utm_link_p = pageTracker._getLinkerUrl('?z=YY').replace('?z=YY','');
	});
}

function integrate_btbucket() {
	if (typeof($BTB) !== 'undefined') {
		var btbucketsGA = $BTB.getAllUserBuckets().join("-");
		if ((!global_btbuckets) || (global_btbuckets != btbucketsGA)) {
			_gaq.push(
				[_atr + '._setCustomVar', 4, 'BTBuckets', btbucketsGA, 1],
				[_atr + '._setVar', btbucketsGA]
			);
		}
	}
}

function set_real_bouncerate(sens) {
	sens_mil = sens * 1000; 
	setTimeout("_gaq.push(['" + _atr +"._trackEvent', 'Freeze bounce', 'Over " + sens + " seconds']);", sens_mil);
}

function set_user_type(type) {
	if ((type) && (type != '')) {
		if (!isNaN(type)) {
			if (type <= (_user_types.length-1)) {
				for (var i = 0; i<_user_types.length; i++) { 
					if (_user_types[i][0] == type) {
						var user_type = _user_types[i][1];
					}
				}
			}
		} else {
			user_type = type;
		}
	} else {
		if ((!global_user_type) || global_user_type == '') {
			user_type = _user_types[0][1];
		} else {
			user_type = '';
		}
	}
		
	if (user_type != '') {
		if ((global_user_type) && (global_user_type != user_type)) {
			set_conversion(global_user_type, user_type);
		}
		
		_gaq.push(
			[_atr + '._setCustomVar', 1, 'user-type', user_type, 1]
		);
	}
}

function set_conversion(from, to) {
	_gaq.push([_atr + '._setCustomVar', 3, 'converted', from + '_to_' + to, 1]);
}

function set_lang(lang) {
	if (lang) {
		//var lang = (lang == null ? "english" : lang);
		_gaq.push([_atr + '._setCustomVar', 2, 'language', lang, 1]);
	} else {
		if ((!global_lang) || (global_lang == '')) {
			domain = document.domain;
			for (var i = 0; i<_lang_matrix.length; i++) { 
				tld = _lang_matrix[i][1];
				lang = _lang_matrix[i][0]
				if (domain.match(tld)) {
					tld_lang = _lang_matrix[i][2];
				}
				
				if (browser_lang.match(lang)) {
					user_lang = _lang_matrix[i][2];
				}
			}

			if (((user_lang) && (tld_lang)) && user_lang != tld_lang) {
				if (_use_browser_lang) {
					guess_lang = user_lang;
				} else {
					guess_lang = tld_lang;
				}
			} else {
				guess_lang = tld_lang;
			}		
			_gaq.push([_atr + '._setCustomVar', 2, 'language', guess_lang, 1]);
		}
	}
}

function extend_tracking() {
	if (Math.random() <= _sample_rate_extend) {
		var a = document.getElementsByTagName("a");
		var input = document.getElementsByTagName("input");
		var option = document.getElementsByTagName("option");
		
		for (var i = 0; i<a.length; i++) {
			var href = a[i].getAttribute("href");
			var onclick = a[i].getAttribute("onclick");
			var target = a[i].getAttribute("target");
			var prev_js = ((onclick != null) ? onclick + "; " : "");
			var page = location.pathname;
			
			if (href) {
				if ((href.match(/^https?\:/i)) && (!href.match(document.domain))) {
					if (!href.match(_pass_to)) {
						var ext_link = href.replace(/^https?\:\/\//i, '');
						a[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent', 'External links', 'Click', '" + ext_link + "'])");
						if (_force_campaign_ext) {
							if (href.match(/\?(.+)=/)) {
								sep = '&';
							} else {
								sep = '?';
							}
							camp_link = href + sep;
							parm = false;
							for (var j = 0; j<_campaign_ext.length; j++) {
								if (_campaign_ext[j][1] != '') {
									if (parm) {
										add = '&'
									} else { add = ''; }
									camp_link = camp_link + add + _campaign_ext[j][0] + "=" + _campaign_ext[j][1];
									parm = true;
								}
							}
							a[i].setAttribute("href", camp_link);
						}
					} else {
						if (a[i].href.indexOf("." + site_tld) == -1) {
							
							if (((target) && (target.match(/_blank/))) || (_force_pass_internal)) {
								if (href.match(/\?(.+)=/)) {
									utm_link = href + global_utm_link_p;
								} else {
									utm_link = href + global_utm_link;
								}
								a[i].setAttribute("href", utm_link);
							} else {
								a[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._link', '" + href + "']); return false;");							
							}
						}
					}
				} else if (href.match(/^mailto\:/i)) {
					var mail_link = href.replace(/^mailto\:/i, '');
					a[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent','Email', 'Click', '" + mail_link + "'])");					
				} else if (href.match(_filetypes)) { 
					var extension = (/[.]/.exec(href)) ? /[^.]+$/.exec(href) : undefined;
					a[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent', 'Download', '" + extension + "', '" + href + "'])");				
				} else if (href.match(/window\.print\(\)/i)) {
					a[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent', 'Print', 'Click', '" + page + "'])");				
				}
			}
		}
	}
}

function add_load_event(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
    	window.onload = func;
	} else {
    	window.onload = function() {
      		if (oldonload) {
        		oldonload();
      		}
      		func();
    	}
  	}
}

function track_pageview() {
	url = location.href;
	if (url.match(/soeg(\.html|\/?$)/)) {
		var input = document.getElementsByTagName("input");
		for (var i = 0; i<input.length; i++) {
			if ((input[i].getAttribute('id') == 'QueryBox_1')
				&& (input[i].getAttribute('maxlength') != null)) {
				string = input[i].value;
			}
		}
		_gaq.push([_atr + '._trackPageview', '/soeg?q=' + string]);
	} else {
		_gaq.push([_atr + '._trackPageview']);
	}	
}

function check_for_refresh() {
	if (document.referrer == document.location.href) {
		_gaq.push([_atr + '._trackEvent', 'Refresh', 'Action', document.location.href]);
	}
}

function ini() {
	initiate_ga();
	extend_tracking();
	set_user_type(); 
	if (_track_lang) {
		set_lang();
	}
	integrate_btbucket();
	check_for_refresh()
	if (_real_bouncerate) {
		set_real_bouncerate(_real_sensitivity);
	}
	track_pageview();
}

add_load_event(function() { 
	if (typeof(_gaq) != "undefined") {
		ini();		
	} else {
		//console.info("_gaq was not defined")
	}
});

(function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
