// Fertige <script elemente
var  TRACKING_SNIPPETS = new Array;
// Urls zu den Trackingcodes
var  TRACKING_URLS = new Array;

function fetchTrackData(do_not_load) {
	var ajaxArgs = new Object();
	ajaxArgs.do_not_load = do_not_load;
	
	ajax_submit(trackDataUrl, on_track_data_fetched, ajaxArgs);
}

function on_track_data_fetched(responseText, responseXML) {
	try {
		eval("var response="+responseText+";");
		if(typeof(response) == 'object' && response['view']['wm'] != '')  {
			//Wir setzen die erhaltenen Webmasterdaten.
			var wm = response['view']['data']['wm'];
			var pr = (response['view']['data']['pr'] != 'null') ? response['view']['data']['pr'] : '';
			var prd = (response['view']['data']['prd'] != 'null') ? response['view']['data']['prd'] : '';
			var ts = (response['view']['data']['ts'] != 'null') ? response['view']['data']['ts'] : '';
			var tsd = (response['view']['data']['tsd'] != 'null') ? response['view']['data']['tsd'] : '';
			var domainID = response['view']['data']['domainID'];
			var designID = response['view']['data']['designID'];
			var referer = response['view']['data']['referer'];
			
			define_trackingUrls(response['view']['codes']);
			prepare_tracking(wm, pr, ts, prd, tsd, domainID, designID, referer);
			
			if(typeof(response['sentdata']['do_not_load']) == 'undefined' || response['sentdata']['do_not_load'] != 1) {
				load_tracking_codes();
			}
		}
	} catch (exception) {
		//alert(exception.toString());
	}
}

function prepare_tracking (wm, pr, ts, prd, tsd, domainID, designID, referer) {
	//Wir holen main und page
	var urlParser = new URLParser();
	
	urlParser.parse(window.location.href);
	var queryElements = urlParser.getQueryParams();
		  				
	var main = "homepage";
	var page = "main";
	
	if(typeof(queryElements) != 'undefined' && typeof(queryElements['main']) != 'undefined' && typeof(queryElements['page']) != 'undefined') {
		main = queryElements['main'];
		page = queryElements['page'];	  				
	} else if(urlParser.url.match(/\/\/[^\/]+\/([^\/]+\/[^\/]+)/)) {
		seoLink = urlParser.url.match(/\/\/[^\/]+\/([^\/]+\/[^\/]+)/);
		main = seoLink[1].match(/^[^\/]+/);
		page = seoLink[1].match(/[^\/]+$/);
	}
		  					  				
	//Die SessionID
	var sessid = readCookie('PHPSESSID');
	
	for (var i in TRACKING_URLS) {
		if((typeof(TRACKING_URLS[i]['main']) == 'undefined' || TRACKING_URLS[i]['main'] == main || TRACKING_URLS[i]['main'] == '*') &&
		   (typeof(TRACKING_URLS[i]['page']) == 'undefined' || TRACKING_URLS[i]['page'] == page || TRACKING_URLS[i]['page'] == '*')) {
			var error = false;
			if(typeof(TRACKING_URLS[i]['params'] != 'undefined')) {
				for (var idx in TRACKING_URLS[i]['params']) {
					if(TRACKING_URLS[i]['params'][idx] != queryElements[idx]) {
						error = true;
					}
				}
			}
			
			if(error) {
				continue;
			}
			if(typeof(TRACKING_URLS[i]['type']) != 'undefined' && TRACKING_URLS[i]['type'] == 'img') {
				var element = document.createElement("img");
				element.width='1px';
				element.height='1px';
			} else {
				var element = document.createElement("script");
				element.type = 'text/javascript';
			}
			
			//Wegen abwaertskompatibilitaet, src gabs frueher nicht
			if(typeof(TRACKING_URLS[i]['src']) != 'undefined') {
				var src = TRACKING_URLS[i]['src'];
			} else {
				var src = TRACKING_URLS[i];
			}
			element.src = eval(src);
			TRACKING_SNIPPETS.push(element);
		}
	}
} 

function load_tracking_codes() {
	var heads = document.getElementsByTagName("head");
	var bodys = document.getElementsByTagName("body");
	for (i in TRACKING_SNIPPETS) {
		if(typeof(TRACKING_SNIPPETS[i].tagName) == 'IMG') {
			bodys[0].appendChild(TRACKING_SNIPPETS[i]);
		} else {
			heads[0].appendChild(TRACKING_SNIPPETS[i]);
		}
	}
}

function define_trackingUrls(urls) {
	TRACKING_URLS = urls;
}

if(typeof(readCookie) == 'undefined') {
	function readCookie(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	}
}