
function dcsVar(){
	var dCurrent=new Date();
	WT.tz=dCurrent.getTimezoneOffset()/60*-1;
	if (WT.tz==0){
		WT.tz="0";
	}
	WT.bh=dCurrent.getHours();
	WT.ul=navigator.appName=="Netscape"?navigator.language:navigator.userLanguage;
	if (typeof(screen)=="object"){
		WT.cd=screen.colorDepth;
		WT.sr=screen.width+"x"+screen.height;
	}
	if (typeof(navigator.javaEnabled())=="boolean"){
		WT.jo=navigator.javaEnabled()?"Yes":"No";
	}
	if (document.title){
		WT.ti=document.title;
	}
	WT.js="Yes";
	if (typeof(gVersion)!="undefined"){
		WT.jv=gVersion;
	}
	WT.sp="@@SPLITVALUE@@";
	DCS.dcsdat=dCurrent.getTime();
	DCS.dcssip=window.location.hostname;
	DCS.dcsuri=window.location.pathname;
	if (window.location.search){
		DCS.dcsqry=window.location.search;
	}
	if ((window.document.referrer!="")&&(window.document.referrer!="-")){
		if (!(navigator.appName=="Microsoft Internet Explorer"&&parseInt(navigator.appVersion)<4)){
			DCS.dcsref=window.document.referrer;
		}
	}
}

function A(N,V){
	return "&"+N+"="+dcsEscape(V);
}

function dcsEscape(S){
	if (typeof(RE)!="undefined"){
		var retStr = new String(S);
		for (R in RE){
			retStr = retStr.replace(RE[R],R);
		}
		return retStr;
	}
	else{
		return escape(S);
	}
}

function dcsCreateImage(dcsSrc){
	if (document.images){
		gImages[gIndex]=new Image;
		gImages[gIndex].src=dcsSrc;
		gIndex++;
	}
	else{
		document.write('<IMG BORDER="0" NAME="DCSIMG" WIDTH="1" HEIGHT="1" SRC="'+dcsSrc+'">');
	}
}

function dcsMeta(){
	var myDocumentElements;
	if (document.all){
		myDocumentElements=document.all.tags("meta");
	}
	else if (document.documentElement){
		myDocumentElements=document.getElementsByTagName("meta");
	}
	if (typeof(myDocumentElements)!="undefined"){
		for (var i=1;i<=myDocumentElements.length;i++){
			myMeta=myDocumentElements.item(i-1);
			if (myMeta.name){
				if (myMeta.name.indexOf('WT.')==0){
					WT[myMeta.name.substring(3)]=myMeta.content;
				}
				else if (myMeta.name.indexOf('DCSext.')==0){
					DCSext[myMeta.name.substring(7)]=myMeta.content;
				}
				else if (myMeta.name.indexOf('DCS.')==0){
					DCS[myMeta.name.substring(4)]=myMeta.content;
				}
			}
		}
	}
}

function dcsTag(){
	var P="http"+(window.location.protocol.indexOf('https:')==0?'s':'')+"://"+gDomain+(gDcsId==""?'':'/'+gDcsId)+"/dcs.gif?";
	for (N in DCS){
		if (DCS[N]) {
			P+=A(N,DCS[N]);
		}
	}
	for (N in WT){
		if (WT[N]) {
			P+=A("WT."+N,WT[N]);
		}
	}
	for (N in DCSext){
		if (DCSext[N]) {
			P+=A(N,DCSext[N]);
		}
	}
	if (P.length>2048&&navigator.userAgent.indexOf('MSIE')>=0){
		P=P.substring(0,2040)+"&WT.tu=1";
	}
	dcsCreateImage(P);
}

function dcsMultiTrack(){ 
for (var i=0;i<arguments.length;i++){ 
if (arguments[i].indexOf('WT.')==0){ 
WT[arguments[i].substring(3)]=arguments[i+1]; 
i++; 
} 
if (arguments[i].indexOf('DCS.')==0){ 
DCS[arguments[i].substring(4)]=arguments[i+1]; 
i++; 
} 
if (arguments[i].indexOf('DCSext.')==0){ 
DCSext[arguments[i].substring(7)]=arguments[i+1]; 
i++; 
} 
} 
var dCurrent=new Date(); 
DCS.dcsdat=dCurrent.getTime(); 
dcsTag(); 
} 


function dcsPrintVariables() {//diese Akamai-Fkt. dient zur Ausgabe der globalen Variablen

        var tagVariables="\nDomain = "+gDomain;
        tagVariables+="\nDCSId = "+gDcsId;

        for (N in DCS) {
                tagVariables+="\nDCS."+N+" = "+DCS[N];
        }
        for (N in WT) {
                tagVariables+="\nWT."+N+" = "+WT[N];
        }
        for (N in DCSext) {
                tagVariables+="\nDCSext."+N+" = "+DCSext[N];
        }
      //window.alert(tagVariables);
}




////// Autor: Iraida - Anfang
function trackOnClickOrOnLoad(url) {

    var dot=url.lastIndexOf("."); 
    var ext=url.substring(dot+1);
    
    //externe URL muessen bei onClick getrackt werden
    //und gleichzeitg wird NoPI-Type (hier "external Link") ermittelt und muss in DCS.dcsuri übertragen werden
    if ( url.indexOf("http") == 0 ) return("/nopi/external.html"); 
    
    //trackExtensions - diese Dateien muessen bei onClick getrackt werden
    //und gleichzeitg wird NoPI-Type (hier "Download-Dateien") ermittelt und muss in DCS.dcsuri übertragen werden
    var trackExtensions = /pdf|doc|exe|txt|zip|tgz|xls|gif|jpg|jpe|tiff|tif|png|xml|avi|mpg|mov/i; 
    var myErg = trackExtensions.test(ext);
    
    if(myErg) {

        //folgend ist die Erweiterung für die RSS-Download Links:
        if (url.indexOf("/news/alert/") > 0) {
           
              if (url.indexOf("/ms/") >= 0) return("/nopi/rss/ms.html"); 
              else if (url.indexOf('/gs/') >= 0 ) return("/nopi/rss/gs.html"); 
                   else if (url.indexOf('/ys/') >= 0) return("/nopi/rss/ys.html"); 
                        else return("/nopi/rss/sports.html");               
        } 
        
        else { return("/nopi/download.html"); }
    }
    
    //die Fkt. muss spaeter erweitert werden, um "Click_Event" zu tracken, wenn sie tatsächlich kommen,
    //im Moment habe ich keine Param.-Anforderungen bzw. Merkmale
    
    else return(myErg); //oder return false, d.h. der Link muss nicht onClick getrackt werden    
}

function getLiTy(search) {         
        
        if ( ! search ) var search = document.location.search;
        var dot = search.indexOf("lity="); 
        if ( dot < 0 ) return null; //wenn "lity" in der URL nicht vorkommt
        search = search.substring(dot+5); //wenn "lity" vorkommt, schneide ab der Stelle nach dem "=" bis Ende alles ab
        dot = search.indexOf("&"); //wenn im String-Rest weitere CGI enthalten sind, schneide sie auch ab
        if ( dot >= 0 ) search = search.substring(0, dot ); 
   	return search;  
}

function cleanPfad(pfad) {   

        var dot = pfad.indexOf("?"); 
        if (dot >= 0) pfad = pfad.substring(0,dot);
        return pfad;  
}

function cleanQuery(query) { //aus dcsqry refy entfernen  
        
        var dot1 = query.indexOf("refy="); 
        var dot2 = query.indexOf("lity="); 

        if (dot1 >= 0) { //nur wenn refy enthalten ist, wird query "bereinigt"
        part1=query.substring(0,dot1) //keep all bevor refy

           if (dot2 >= 0) { 
              part2=query.substring(dot2,query.length) //if lity exists, keep it (till the end of string)
           } else { 
              part2='' 
           }            
        query = part1 + part2 ;
        }
        return query;  
}

function cleanRef(ref) { //aus dcsref refy entfernen  
        
        var dot = ref.indexOf("?refy=") ;
        if (dot >= 0) ref=ref.substring(0,dot) ;
        return ref;  
}

// bestimmt refy und liefert diesen zurueck; wenn kein refy angegeben war, wird document.referrer geliefert:
function getRefy() {

    var search = document.location.search;
    if ( ! search ) return document.referrer; ////return cleanPfad(document.referrer); - TO CHECK !!!
    var dot = search.indexOf("refy=")
    
    // wenn dot < 0 ist, ist kein refy in den CGI args enthalten: doucment.referrer returnieren !
    if ( dot < 0 ) return cleanPfad(document.referrer);
    search = search.substring(dot+5) ;
   
    dot = search.indexOf("&") ; // pruefen, ob ein & rechts vom refy=... steht
    // falls ja: alles recht vom & (inklusive & ) entfernen, damit nur der refy parameter uebrig bleibt
    if ( dot >= 0 ) search = search.substring(0, dot ) ;

    // fuer die (unwahrscheinlichen) faelle, bei denen das obige statement einen nullstring geliefert hat, diesen abfangen
    if ( search ) return search;

    // sehr unwahrscheinlich: search ist null. was tun ? besser, den document.referrer zurueckliefern als garnichts... 
    return cleanPfad(document.referrer);
}

function getQuery(search) { 
     
        var dot = search.indexOf("?"); 
        if ( dot < 0 ) return null; //wenn "?" in der URL nicht vorkommt
        search = search.substring(dot,search.length); //wenn "?" vorkommt, schneide ab der Stelle nach dem "?" bis Ende
   	//und wenn im Rest-String ein weiteres "?" enthalten ist => weg damit!
        var dot2 = search.indexOf("?",2); 
        if (dot2 >= 0 )search = search.substring(0,dot2);
        return search;  
}

function getHref() {
    return document.location.pathname;
}

function checkTrack(myURL) {

//hier wird geprueft, ob es "onClick-" oder "onLoad"-Tacking ist:

	if ( trackOnClickOrOnLoad(myURL) ) { 
		//alert ('die URL muss bei OnClick getrackt werden'); 
		//SCHEMA A - hier wird keine contentTrack-Fkt. aufgerufen, WebBug wird hier erzeugt
		CreatePixOnClick(myURL);				
	}		
	
	//wenn trackOnClickOrOnLoad(myURL) "False" liefert, 
        //bedeutet es, dass: alert('die URL muss erst bei onLoad getrackt werden'); 
	//SCHEMA B - hier: kein WebBug darf erzeugt werden
	//der Else-Zweig ist nicht notwendig, da hier Am-Ziel getrackt wird 	
}

function CreatePixOnClick(myURL) {

	if (DCS.dcsqry) delete DCS.dcsqry;	  //als DCS.dcsqry darf nicht die Query vom Referer übernommen werden
	if (DCSext.linkTyp) delete DCSext.linkTyp;//als DCSext.linkTyp darf nicht der LinkType vom Referer übernommen werden
	
	var fromURL	= window.location.pathname;   //zwar überflussig..
	var toURL	= myURL; //Ziel-URL, was alle CGI-VAr enthalten muss, sie dürfen nicht abgeschnitten werden
	var type	= getLiTy(toURL);			//LinkTyp-CGI-Variable, mögliche Werte: String oder NULL
	var url		= trackOnClickOrOnLoad(myURL);		//Z.B: Wert="/nopi/download.html"
	var ref		= window.location.hostname + fromURL;	//der DCS.dcsref muss noch die Domain liefern
	var search	= getQuery(myURL);			//sonst fehlt die DCS.dcsqry

	if(type) {
		dcsMultiTrack('DCS.dcsuri',url,'DCS.dcsref',ref,'DCS.dcsqry',search,'DCSext.fromURL',fromURL,'DCSext.toURL',toURL,'DCSext.linkTyp',type);
		dcsPrintVariables();
	} else {
		dcsMultiTrack('DCS.dcsuri',url,'DCS.dcsref',ref,'DCSext.fromURL',fromURL,'DCSext.toURL',toURL);
		dcsPrintVariables();
	}
}

function contentTrack() {
    var type = getLiTy();
    var ref  = getRefy();ref=cleanRef(ref);
    var url  = getHref();
    if(DCS.dcsqry) DCS.dcsqry=cleanQuery(DCS.dcsqry);

   if ( type ) 
      if ( ref )
         dcsMultiTrack('DCS.dcsuri',url,'DCSext.linkTyp',type,'DCS.dcsref',ref,'DCSext.fromURL',ref,'DCSext.toURL',url);
      else
         dcsMultiTrack('DCS.dcsuri',url,'DCSext.linkTyp',type,'DCSext.toURL',url);
   else
      if ( ref )
         dcsMultiTrack('DCS.dcsuri',url,'DCS.dcsref',ref,'DCSext.fromURL',ref,'DCSext.toURL',url);
      else
         dcsMultiTrack('DCS.dcsuri',url,'DCSext.toURL',url);
}


//Eine Sonder-Funktion für Tracking von onClick-URLs, die aber doch als PI gezählt werden sollen   
function trackClickPI(myURL) {
 
	delete DCS.dcsqry;					//als DCS.dcsqry darf nicht die Query vom Referer übernommen werden
	delete DCSext.linkTyp;					//als DCSext.linkTyp darf nicht der LinkType vom Referer übernommen werden
	
	var fromURL	= window.location.pathname;		//zwar überflussig, da es DCS.dcsuri-Wert ist, der von Initializierung-Fkt. vorbelegt wurde, aber Übersicht halber...
    	var toURL	= myURL;				//Ziel-URL, was alle CGI-VAr enthalten muss, sie dürfen nicht abgeschnitten werden
    	var type	= getLiTy(myURL);			//LinkTyp-CGI-Variable, mögliche Werte: String oder NULL
    	var url		= myURL;				//der Wert wird hier erzwungen
    	var ref		= window.location.hostname + fromURL;	//der DCS.dcsref muss noch die Domain liefern
    	var search	= getQuery(myURL);			//sonst fehlt die DCS.dcsqry
    	
    	if(type) {
    		dcsMultiTrack('DCS.dcsuri',url,'DCS.dcsref',ref,'DCS.dcsqry',search,'DCSext.fromURL',fromURL,'DCSext.toURL',toURL,'DCSext.linkTyp',type);
    		//dcsPrintVariables();
    	} else {
    		dcsMultiTrack('DCS.dcsuri',url,'DCS.dcsref',ref,'DCSext.fromURL',fromURL,'DCSext.toURL',toURL);
    		//dcsPrintVariables();
	}
}

function trackFlash(url) { 

     dcsMultiTrack('DCS.dcsuri',url,'DCS.dcsref','/withoutuserpath/flash.html');   			

}

////// Autor: Iraida - Ende