var _gaq = _gaq || [];
var _ua = 'UA-11468172-1';
var _atr = 'atr';
var _filetypes = /\.(zip|exe|pdf|doc|xls|ppt|mp(3|4)|eps|docx|rar|csv|gz|dmg|xml)$/i;
var _multiple_sites = true;
var _pass_to = /\.(chr-hansen\.)/;
var _force_pass_internal = false;
var _force_campaign_ext = false;
var _campaign_ext = [['utm_source', 'referral'], 
					['utm_medium', 'link'], 
					['utm_term', ''], 
					['utm_content', ''], 
					['utm_campaign', 'chr-hansen']];
var _real_bouncerate = true;
var _real_sensitivity = 15;
var _sample_rate_extend = 1;
var _use_browser_lang = true;
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, 'light-access'],
					[2, 'full-access']];
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; 

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 (((target) && (target.match(/_blank/))) || (_force_pass_internal)) {
							if (href.match(/\?(.+)=/)) {
								utm_link = href + global_utm_link_p;
							} else {
								utm_link = href + global_utm_link;
							}
							// blob:
							save = a[i].innerHTML;
							$(a[i]).attr("href", utm_link);
							a[i].innerHTML = save;
							
						} 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(/linkTo_UnCryptMailto/i)) {
					var mail_link = href.replace(/^javascript:linkTo_UnCryptMailto\(\'/i, '');
					var mail_link = mail_link.replace(/\'\)$/i, '');
					if (typeof(decryptString) == 'function') {
						var mail_link = decryptString(mail_link, -2);
					}
					a[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent','Email', 'Click', '" + mail_link + "'])");					
				}
			}
			
			if (onclick) {
				if ((/window\.print/i).exec(onclick) != null) {
					a[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent', 'Print', 'Click', '" + page + "'])");					
				} else if ((/TipAFriend/i).exec(onclick) != null) {
					a[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent', 'Tip a friend', 'Click', '" + page + "'])");									
				} else if ((/addthis_sendto/i).exec(onclick) != null) { 
					a[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent', 'Share', 'Click', '" + page + "'])");									
				}
			}
		}
		
		for (var i = 0; i<input.length; i++) { 
			var onclick = input[i].getAttribute('onclick');
			var name = input[i].getAttribute('name');			
			var prev_js = ((onclick != null) ? onclick + "; " : "");
			var page = location.pathname;
			
			if (name) {
				if (name.match(/tx_tcmailsubscription.*\[subscribe\]/i)) {
					input[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent', 'Newsletter', 'Subscribe', '" + page + "'])");									
				} else if (name.match(/tx_tcmailsubscription.*\[unsubscribe\]/i)) {
					input[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent', 'Newsletter', 'Unsubscribe', '" + 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(/search(\.html|\/?$)/)) {
		var input = document.getElementsByTagName("input");
		for (var i = 0; i<input.length; i++) {
			obj_class = input[i].getAttribute('class');
			if (obj_class && obj_class.match(/tx-indexedsearch-searchbox-sword/)) {
				q = input[i].getAttribute('value');
			}
		}
		_gaq.push([_atr + '._trackPageview', '/search.html?q=' + q]);
	} else {
		_gaq.push([_atr + '._trackPageview']);
	}	
}

function check_for_refresh() {
	if (document.referrer == document.location.href) {
		_gaq.push([_atr + '._trackEvent', 'Refresh', 'Action', document.location.href]);
	}
}

add_load_event(function() { 
	if (typeof(_gaq) != "undefined") {
		initiate_ga();
		extend_tracking();
		set_user_type(); 
		set_lang();
		integrate_btbucket();
		check_for_refresh()
		if (_real_bouncerate) {
			set_real_bouncerate(_real_sensitivity);
		}
		track_pageview();		
	} 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);
})();