function trackVideo (objectArea,objectFunction,objectTitle){
	et_ref = window.document.referrer;
	et_url = window.location.href; // Ziel bei einem Deeplink;
	et_pagename = objectTitle; // Name der 'Seite' in PI-Auswertung
	if ((objectArea != null)&& (objectArea != "")){
		et_areas = objectArea + ',' + objectFunction; // Erzeugt zwei Einträge im Bereichstracking
	}else{
		et_areas = objectFunction; // Erzeugt nur Funktionseintrag im Bereichstracking
	}
	et="jYVN3K";
	et_eC(et);
}

function trackAjaxRef (objectArea,objectFunction,objectTitle,objectUrl,objectReferrer){
	et_ref = objectReferrer; // Referrer, der übergeben werden soll
	et_url = objectUrl; // Ziel bei einem Deeplink;
	et_pagename = objectTitle; // Name der 'Seite' in PI-Auswertung
	if ((objectArea != null)&& (objectArea != "")){
		et_areas = objectArea + ',' + objectFunction; // Erzeugt zwei Einträge im Bereichstracking
	}else{
		et_areas = objectFunction; // Erzeugt nur Funktionseintrag im Bereichstracking
	}
	et="jYVN3K";
	et_eC(et);
}

function trackAjax (objectArea,objectFunction,objectTitle,objectUrl){
	et_ref = window.document.referrer;
	et_url = objectUrl; // Ziel bei einem Deeplink;
	et_pagename = objectTitle; // Name der 'Seite' in PI-Auswertung
	if ((objectArea != null)&& (objectArea != "")){
		et_areas = objectArea + ',' + objectFunction; // Erzeugt zwei Einträge im Bereichstracking
	}else{
		et_areas = objectFunction; // Erzeugt nur Funktionseintrag im Bereichstracking
	}
	et="jYVN3K";
	et_eC(et);
}

function trackAbsolute(objectReference,objectTitle){
	et_pagename=objectTitle; // Name der Seite
	et_areas = "bmw.de" + objectReference;
	et_url = objectReference;
	et="jYVN3K";
	et_eC(et);
}



/**
* trackAbsoluteIndividual is used for eTrackers individual area tracking
* 
* overrides the et_areas String with attributeMisc2, wich could be defined in our page

* @param String objectReference
* @param String objectTitle (use this param for specifying the click / page / or whatever tracking event)
* @param String OPTIONAL: area string
* @param secureId:  overwrite bmw-tracking-id
* @return void
*/
function trackAbsoluteIndividual(pObjectRef,pTitle,pArea,secureId) {
	et_pagename=pTitle; // page title
	try {
		if (attributeMisc2!=null && attributeMisc2.length>0) {
			et_areas=attributeMisc2;
		}
		else {
			et_areas=pObjectRef;
		}
	}
	catch (pExc) {
		et_areas=pObjectRef;
	}	
	try {
		if (pArea.length>0) {
			et_areas=pArea;
		}
	}
	catch (pExc) {
		// do nothing
	}
	et_url = pObjectRef;
	et=secureId;
	et_eC(et);
}


function trackAbsolute2(pObjectRef,pTitle,pArea) {
	secureId="jYVN3K";
	trackAbsoluteIndividual(pObjectRef,pTitle,pArea,secureId)
}

// If Doubletracking to WebTrends is needed, this method is reqired ...
function trackAbsoluteWT(objectReference,objectTitle){
  if (typeof highbandUser == "undefined") {
    highbandUser = false;
  }
  if(objectReference.substr(0,4) == "http") {
    objectReference = objectReference.replace(/\/\//,"");
    objectReference = objectReference.substring(objectReference.indexOf("/"));
  }
  if(objectReference.indexOf('?') != -1){
    var splitted = objectReference.split('?');
    var path = splitted[0];
    if (splitted[1].substr(splitted[1].length - 1)!="&") {
      splitted[1] += "&";
    }
    splitted[1] += "highbandUser=" + highbandUser;
    queryString = "?" + splitted[1];
    dcsMultiTrack('DCS.dcsuri',path,'WT.ti','-', 'DCS.dcsqry', queryString);
  }
  else {
    queryString = "?" + "highbandUser=" + highbandUser;
    dcsMultiTrack('DCS.dcsuri', objectReference, 'WT.ti', '-', 'DCS.dcsqry', queryString);
  }
}


// function kept to keep old flash content able to track
// ! Specials are kept ! So this is called for teasers as well as for virtual pages.
//
function trackHighend(trackingType, source, target){
  if(confTrackingEnabled){
    trackEvent(trackingType, source, target);
  }
}

function trackEvent(pagetype, sourceurl, targeturl, sourceinfos){
  if (confTrackingEnabled) {
    var substract = self.location.host;

    var targetparam = "target";
    if(pagetype == "download") {
      targetparam = "file";
    }

    if(sourceurl.substr(0, 1) != "/" ) {
      sourceurl = getFullPath(self.location.href, sourceurl);
      sourceurl = sourceurl.substring(sourceurl.indexOf(substract) + substract.length, sourceurl.length);
    }

    if(pagetype != "external" && pagetype != "bandwidth" && pagetype != "click_event" && targeturl.substr(0, 1) != "/") {
      targeturl = getFullPath(self.location.href, targeturl);
      targeturl = targeturl.substring(targeturl.indexOf(substract) + substract.length, targeturl.length);
    }

    if (pagetype != "bandwidth" && pagetype != "click_event") {
      targeturl = escape(buildValidServerRelativeUrl(targeturl));
    }


		// do doubletrack to webtrends if page requires, page must initialize WT.
 		try {
			if ((doDoubleTrackWebtrends != null)&&(doDoubleTrackWebtrends != undefined)){
		    var trackingUrl = buildValidServerRelativeUrl(trackingPages[pagetype][0]) + '?' + targetparam + '=' + targeturl + '&source=' + escape(buildValidServerRelativeUrl(sourceurl));
		    trackAbsoluteWT(trackingUrl, '-');
			}
		} catch (e) {
		}

		// de uses real url
		sourceurl = window.location.href;
		// de replaces / in target and source with _
		sourceurl = sourceurl.replace(/\//g, "_");
		targeturl = targeturl.replace(/\//g, "_");

	 	// cut off unwanted extensions in URL
	 	if (sourceurl.indexOf('?external_language') != -1){
	 		sourceurl = sourceurl.substring(0,sourceurl.indexOf('?external_language'));
	 	}
	 	if (sourceurl.indexOf('?gclid') != -1){
	 		sourceurl = sourceurl.substring(0,sourceurl.indexOf('?gclid'));
	 	}
	 	if (sourceurl.indexOf('?page=') != -1){
	 		sourceurl = sourceurl.substring(0,sourceurl.indexOf('?page='));
	 	}

	  // page types: bandwith, click_event, download, external, quicklinks,
		// teaser_large, teaser_main, teaser_small_standard, teaser_small_text
		et_pagename = pagetype + " " + targeturl;
		et_areas = "Funktionen/"+pagetype+"/target="+targeturl + " /from " + sourceurl + (typeof sourceinfos != 'undefined' && sourceinfos != "" ? " " + sourceinfos : "");
		et_url = sourceurl;
		et="jYVN3K";
		et_eC(et);
  }

  else {
    return true;
  }
}
function trackPage(url,pagename) {
  var tmp_url = url;
  var work_url;
  if (confTrackingEnabled) {
		// do doubletrack to webtrends if page requires, page must initialize WT.
		try {
			if ((doDoubleTrackWebtrends != null)&&(doDoubleTrackWebtrends != undefined)){
				trackAbsoluteWT(url,'-');
			}
		} catch (e) {
		}
		// set url, get pagename and area are  taken from page tracking method itself
		if (url.indexOf('http://www.bmw.de') != -1) {
			// check if second bmw.de is in there
			work_url = url.substr(17);
			if (work_url.indexOf('bmw.de') > -1){
				// reduce to start with second bmw.de
				url = work_url.substr(work_url.indexOf('bmw.de'));
				tmp_url = work_url.substr(0,work_url.indexOf('bmw.de'));
			}	else {
			// no second bmw.de, so test on 'Funktionen'
			if (work_url.indexOf('Funktionen') > -1){
			// reduce to start with 'Funktionen'
				url = work_url.substr(work_url.indexOf('Funktionen'));
				tmp_url = work_url.substr(0,work_url.indexOf('Funktionen'));
			}
		}
	}

	et_areas= url;
	if (!pagename) { et_pagename = et_getPagename() } else { et_pagename = pagename;
	}
	et_url = tmp_url;
	et="jYVN3K";
	et_eC(et);
 }
}







//ueberschreiben der globalen tracking Methoden um Titel nicht zu verlieren
/**
 * @param {String} fileName
 * @param {Number} videoStatus
 */
function videoTeaserTracking(fileName, videoStatus){
  var trackingUrl = self.location.href.substring(0, self.location.href.lastIndexOf("/"));
  var pageName = self.location.href.substring(self.location.href.lastIndexOf("/") + 1, self.location.href.lastIndexOf("."));
  var flvName = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.lastIndexOf("."));
  if (confTrackingEnabled) {
	trackAjax ("bmw.de" + trackingUrl, "Funktionen/Video/"  + flvName + "_" + videoStatus, pageName, self.location.href);
  }
}

/**
 * @param {String} trackingPage
 * @param {String} trackingPageTitel
 * @param {String} targetPageUrl
 */
function trackTeaserClick(trackingPage, trackingPageTitel, targetPageUrl){
  if (confTrackingEnabled) {
    trackEvent(trackingPageTitel, trackingPage, targetPageUrl);
  }
  return true;
}
/**
 * @param {String} trackingPage
 * @param {String} trackingPageTitel
 * @param {String} targetFileUrl
 */
function trackDownloadClick(trackingPage, trackingPageTitel, targetFileUrl){
  if (confTrackingEnabled) {
    trackEvent(trackingPageTitel, trackingPage, targetFileUrl);
  }
  return true;
}

//outdated!
function trackRelative(objectReference,objectTitle,keepLastReferrer){
  et_areas=et_getAreas();
  et_areas = et_areas + "/" + objectReference;
  et_pagename = objectTitle;
	et="jYVN3K";
	et_eC(et);
}

/* bmw.de doesn't use this cookie tracking, so we overwrite the function */
/*function trackingCookie(type, obj) {
  if(confTrackingEnabled) {
    var target = obj.href;
    if(target.substr(0,7) == "http://") {
      target = target.substring(7);
      target = target.substring(target.indexOf("/"));
    }
    var source = window.location.pathname;
    var tf = ";tf_above";

    if(type.substr(0,3) == "ta_") {
      if($(obj).offset().top > $(window).height() ) {
        tf = ";tf_below";
      }
      type += tf;
    }
    var cookieContent = "?navi_target=" + encodeURIComponent(target) + "&navi_source=" + encodeURIComponent(source) + "&navi_type=" + encodeURIComponent(type);
    setCookie("WT_NAVI", cookieContent, "", "/");
  }
}*/

/* overwrite old trackingCookie function and call standard function 
 * ta_[abc]: object type e.g. small_standard, external
 * tc_[abc]: specifies more the object type e.g. image, flash
 * to_[012]: oid of the object
 * tb_[1]:   number of the link of the object
 */
function trackingCookie(type, obj) {
  if(confTrackingEnabled) {
		// at the moment we don't want to track navigation clicks
		if(type.indexOf('top_') == 0 || type == 'second_navi' || type == 'bottom_navi' || type == 'side_navi') {
			return;
		}
		
		var pagetype = "";
    var sourceurl = window.location.pathname;
		var sourceinfos = "";
    var targeturl = obj.href;
		var trackingRegex = "";
		
		// prepare object type
		if(type.indexOf('ta_') != -1) {
			trackingRegex = /ta_([^;]{0,})/;
			trackingRegex.exec(type);
			if(RegExp.$1 != "") {
				pagetype = RegExp.$1;
			} else {
				// without type we don't track
				return;
			}
			if(type.indexOf('tc_') != -1) {
				trackingRegex = /tc_([^;]{0,})/;
				trackingRegex.exec(type);
				if(RegExp.$1 != "") {
					pagetype += ("_" + RegExp.$1);
				}
			}
		} else {
			pagetype = type;
		}
		
		// prepare oid of the object
		if(type.indexOf('to_') != -1) {
			trackingRegex = /to_([^;]{0,})/;
			trackingRegex.exec(type);
			if(RegExp.$1 != "") {
				sourceinfos += ("oid:" + RegExp.$1);
			}
		}
		
		// prepare link number of the object
		if(type.indexOf('tb_') != -1) {
			trackingRegex = /tb_([^;]{0,})/;
			trackingRegex.exec(type);
			if(RegExp.$1 != "") {
				sourceinfos += (sourceinfos != "" ? " " : "");
				sourceinfos += ("link:" + RegExp.$1);
			}
		}
		
		trackEvent(pagetype, sourceurl, targeturl, sourceinfos);
  }
}

function trackingCookieClear(){
  setCookie("WT_NAVI", "", "", "/");
}
