/*  */
/* /cps/rde/xchg/SID-3F57F743-76B2AFBA/glo_en/hs.xsl/ecrm.js */
/**
* @fileoverview myCookie <br />
* Diese library erledigt die gesamte Verwendung von Cookies in Websites. Bislang sind keine Browser-Probleme bekannt.
* @author Frank Nägler
* @version 0.2
*/
/**
* Dies ist der Konstruktor des Cookie-Objektes. Zur Verwendung muss dieses Objekt instanziert werden:
* var c = new myCookie("name", 100, "/", "domain.com");
* Das Argument "name" ist zwingend erforderlich, die anderen sind optional.
* @constructor
* @param name  the name of the cookie
* @param life  the lifetime in days of the cookie
* @param path  the path of the cookie
* @param doma  the domain of the cookie (BE CAREFUL USING CAUSES COOKIES NOT TO BE SET
* @since 0.1
*/
var COOKIEJS = true;
function myCookie(name, life, path, doma) {
this.name = arguments[0];
this.life = arguments[1];
this.path = arguments[2];
this.doma = (document.layers)?("."+arguments[3]):(arguments[3]);
this.valu = myCookie_value();
}
/**
* Diese Methode setzt einen neuen Wert für das Cookie oder gibt den aktuellen Wert zurück<br/>
* Aufruf dieser Methode mit einem String als Argument setzt einen neuen Wert für das Cookie.<br/>
* @param what Neuer Wert für das Cookie
* @type String
* @return String gibt den aktuellen Wert des Cookie zurück, wenn ohne Argumente aufgerufen.
* @since 0.1
*/
function myCookie_value(what) {
if (arguments[0]) {
 this.valu = arguments[0];
 this.update();
}
else {
 var start = document.cookie.indexOf(this.name+"=");
 var len = start+this.name.length+1;
 if ((!start) && (this.name != document.cookie.substring(0,this.name.length))) return null;
 if (start == -1) return null;
 var end = document.cookie.indexOf(";",len);
 if (end == -1) end = document.cookie.length;
 this.valu = unescape(document.cookie.substring(len,end));
 return (this.valu == "undefined")?("[NO COOKIE]"):(this.valu);
}
}
/**
* Diese Methode setzt das Verfallsdatum des Cookie oder gibt es zurück.<br/>
* Aufruf dieser Methode mit einem String als Argument setzt einen neuen Wert für das Verfallsdatum des Cookie.
* @param which Neues Verfallsdatum des Cookie
* @type String
* @return Verfallsdatum 
* @since 0.1
*/
function myCookie_lifetime(which) {
if (arguments[0]) {
 this.life = arguments[0];
 this.update();
}
else {
 return (this.life == "")?("[NO LIFETIME SET]"):(this.life);
}
}
/**
* Diese Methode löscht das Cookie.<br/>
* @since 0.1
*/
function myCookie_destroy() {
this.life = 0;
this.update();
}
/**
* Diese Methode ist eine interne Methode zum aktualisieren des Cookie. Sie wird von anderen Methoden verwendet.<br/>
* <b>Diese Methode darf nicht direkt aufgerufen werden </b><br/>
* @private
* @since 0.1
* WARNING z+o 15.5.2006: SETTING THE DOMAIN PARAMETER CAUSES COOKIE NOT TO BE SET, SHOULD NOT BE RELEVANT ANYHOW!
*/
function myCookie_update() {
var date = new Date();
date.setTime(date.getTime()+(this.life*24*60*60*1000));
document.cookie = this.name + "=" +escape(this.valu) +
( (this.life) ? (";expires=" + date.toGMTString()) : ("") ) +
( (this.path) ? (";path=" + this.path) : ("") ) +
( (this.doma) ? (";domain=" + this.doma) : ("") );
}
myCookie.prototype.value = myCookie_value;
myCookie.prototype.lifetime = myCookie_lifetime;
myCookie.prototype.destroy = myCookie_destroy;
myCookie.prototype.update = myCookie_update;
/** 
* Name des Cookie
* @type String
*/
myCookie.prototype.name = null;
/** 
* Verfallsdatum des Cookie
* @type String
*/
myCookie.prototype.life = 0;
/** 
* Pfad für den das Cookie gilt
* @type String
*/
myCookie.prototype.path = null;
/** 
* Domain auf die das Cookie geschrieben wird
* @type String
*/
myCookie.prototype.doma = null;
/** 
* Der Wert des Cookie
* @type String
*/
myCookie.prototype.valu = null;
/**
* @fileoverview <pre>
********************************************************
*  Laut Web-Applikation Tracking Konzept auf Basis 
*  der SinnerSchrader eCRM Pixel Technologie
*  Holger Blank vom 06.05.2002
**********************************************************
*  instructions 
**********************************************************
*  
*  to use this tracking you must instance this object.
*    var ecrm = new eCrmPixel(pixelUrl, domain, [ID]);
*    var ecrm = new eCrmPixel("http://localhost/tracking/ecrm.gif", "http://localhost/", 12345678);
*    ecrm.setPageId("fc_kunde_persdaten.html");
*    ecrm.setExtras("formular=neukunde");
*    ecrm.setPixel();
*                            
**********************************************************</pre>
*  @author   : F. Nägler
*  @version  : 0.6
*  @date     : 22.10.2004
*/
var ECRMJS = true;
var _NOREF = document.referrer;
var defaultPixelURL = "/images/tp.gif";
var defaultDomain = "http://www.yourdomain.com";
function eCrmPixel(pixelUrl, domain) {
    this.id = (arguments[2])?(arguments[2]):(this.id);
    this.setId(this.id);
    this.pixelUrl = (pixelUrl == "") ? (defaultPixelURL):(pixelUrl);
    this.domain   = (domain == "") ? (defaultDomain):(domain);
    this.refer = '';
}
function eCrmPixel_getParam(paramname) {
    var SELF_LOCATION = self.location.href;
    var paramstring = (SELF_LOCATION.indexOf("?") != -1)?(SELF_LOCATION.substr(SELF_LOCATION.indexOf('?')+1,SELF_LOCATION.length)):("");
    var re = new RegExp("^"+paramname+"=");
    var params = paramstring.split("&");
    for (var param in params) {
        if (re.test(params[param])) {
            return (params[param].split("="))[1];
         }
    }
    return "";
}
function eCrmPixel_getValuesFromCookie() {
    if (this.cookieRef != null) this.refer = this.cookieRef.value();
    if (this.cookieId != null) this.id = this.cookieId.value();
}
function eCrmPixel_setPixel() {
    var RandomNo = '' + Math.round(Math.random() * 1000000000);
    var diff = 10 - RandomNo.length;
    var fill = '';
    for (j=0; j<diff;j++) fill += '0';
    RandomNo = fill + RandomNo; // Random immer mindestens 10 Zeichen.
    var eCrmLink = (this.link != '')?(this.link):(this.getParam('eCrmLink'));
    var myeCrmExtras = (eCrmLink != '')?('&eCrmLink=' + eCrmLink):('');
    myeCrmExtras += (this.extras)?('&' + this.extras):('');
    this.ecrmPixelArray[this.ecrmPixelArray.length] = new Image();
    var DO = (this.refer.indexOf('http') == -1)?(this.domain):("");
    //alert ("LOG STRING: " + unescape(this.pixelUrl +'?dbtrck='+ this.id +';'+ this.pageId +';'+ DO + this.refer +';'+ RandomNo +myeCrmExtras));
    this.ecrmPixelArray[this.ecrmPixelArray.length-1].src = unescape(this.pixelUrl +'?dbtrck='+ this.id +';'+ this.pageId +';'+ DO + this.refer +';'+ RandomNo +myeCrmExtras); 
    this.extras = "";
    this.link = "";
}
function eCrmPixel_setPageId(what) {
    if (this.pageId != '') this.refer = this.pageId;
    else if (this.cookieRef != null) this.refer = this.cookieRef.value();
    this.refer = (this.refer)?(this.refer):('');
 
    this.pageId = what;
    if (this.cookieRef != null) this.cookieRef.value(what);
}
function eCrmPixel_setLink(what) {
    this.link = what;
}
function eCrmPixel_setExtras(what) {
    this.extras = what;
}
function eCrmPixel_setId(what) {
    this.id = what;
    if (this.cookieId != null) this.cookieId.value(what);
}
function eCrmPixel_getId() {
    return this.id;
}
function eCrmPixel_getRef() {
    return this.refer;
}
function eCrmPixel_getPageId() {
    return this.pageId;
}
function eCrmPixel_openLink(url,name,width,height) {
    var start = this.pageId.lastIndexOf('/');
    var end   = (this.pageId.indexOf('.pdf') != -1)?(this.pageId.indexOf('.pdf')):(this.pageId.indexOf('.html'));
    var p = this.pageId.substring(start+1,end)
    url = url.replace(/%PAGEID%/,p);
    my_pop_up = window.open(url,name,'width=' + width + ',height=' + height + 'scrollbars=yes,resizable=no');
}
 
/*** ZEROS FUNCTIONS ***/
function clean_pageName(input) {
 //  /&.*?; - STRIPS ALL &amp; &uuml;
 //  ;      - STRIPS ALL ";"
 //  \W     - REMOVES ALL WHITE SPACE AND NO ASCII CHARACTERS
    var output = input.replace(/&.*?;|;|\W/g,'_');
    output = encodeURI(output);    
    return output;
}
function split_string(input, delimiter ) {
 //  /&.*?; - STRIPS ALL &amp; &uuml;
   if(!delimiter ) delimiter = '.';
   var returnValue = '';
   var _tempArray = new Array();  
   if (input=="/") {
        returnValue = "htm";
    }
   else {
        _tempArray = input.split(delimiter);   
       if(_tempArray.length>1)
          returnValue = _tempArray[_tempArray.length - 1];
       else    
          returnValue = "unknown";
   }
   return returnValue;
}
function download_pixel(filename) {
 
//  CALL PIXEL TRACKING FOR DOWNLOAD ITEMS
   var type = "type=unknown";
   var pname  = "pagename=unknown";
   if (filename) {
     ecrm.setPageId(filename); 
     type = 'type=' + split_string(filename,".");
     pname  = 'pagename='+ clean_pageName(split_string(filename,"/"));
   }
   var language = (this.languageVariant) ? ('language=' + this.languageVariant) : ('language=ERROR');
   var level_1_name = (this.level_1) ? ('level_1=' + clean_pageName(this.level_1)) : ('level_1=other');   
   ecrm.setExtras(language + "&" + level_1_name + "&" + pname + "&" + type);
   ecrm.setPixel();


}
 
/***/
eCrmPixel.prototype.id = (typeof COOKIEJS != "undefined" && new myCookie("eCrmId", 0, "/", "").value() != null)?(new myCookie("eCrmId", 0, "/", "").value()):(Math.round(Math.random() * 10000000000));
eCrmPixel.prototype.pageId = '';
eCrmPixel.prototype.link = '';
eCrmPixel.prototype.extras = '';
eCrmPixel.prototype.refer = '';
eCrmPixel.prototype.pixelUrl = '';
eCrmPixel.prototype.domain = '';
eCrmPixel.prototype.ecrmPixelArray = new Array();
eCrmPixel.prototype.cookieId  = (typeof COOKIEJS != "undefined")?(new myCookie("eCrmId", 0, "/", "")):(null);
eCrmPixel.prototype.cookieRef = (typeof COOKIEJS != "undefined")?(new myCookie("eCrmReferrer", 0, "/", "")):(null);
eCrmPixel.prototype.setLink = eCrmPixel_setLink;
eCrmPixel.prototype.setPixel = eCrmPixel_setPixel;
eCrmPixel.prototype.setPageId = eCrmPixel_setPageId;
eCrmPixel.prototype.setExtras = eCrmPixel_setExtras;
eCrmPixel.prototype.setId = eCrmPixel_setId;
eCrmPixel.prototype.getId = eCrmPixel_getId;
eCrmPixel.prototype.getValuesFromCookie = eCrmPixel_getValuesFromCookie;
eCrmPixel.prototype.getPageId = eCrmPixel_getPageId;
eCrmPixel.prototype.getRef = eCrmPixel_getRef;
eCrmPixel.prototype.openLink = eCrmPixel_openLink;
eCrmPixel.prototype.getParam = eCrmPixel_getParam;
var ecrm = new eCrmPixel('', '');
ecrm.getValuesFromCookie();
var plang = '';
switch (this.languageVariant) {
    case 'DEU': plang = 'de'; break;
    case 'ENG': plang = 'en'; break;
    case 'ESN': plang = 'es'; break;
    case 'ITA': plang = 'it'; break;
}
// START ZEROS PID FOR LIVE SERVER - NOT ACTIVE BECAUSE OF FOLDER EXPORT
//var pid = '/' + this.region + '_' + plang + '/' + this.pageId + '.htm';
// END ZEROS PID FOR LIVE SERVER - NOT ACTIVE BECAUSE OF FOLDER EXPORT
 
// START ZEROS PID FOR NORMAL EXPORT
 
var pid = self.location.pathname;
 
// END ZEROS PID FOR NORMAL EXPORT
 
this.documentName = self.location.pathname;
var language = (this.languageVariant) ? ('language=' + this.languageVariant):('language=ERROR');
var level_1_name = (this.level_1)?('level_1=' + clean_pageName(this.level_1)):('level_1=other');
var pname  = (this.pageName) ? ('pagename='+ clean_pageName(this.pageName)):('pagename=unknown');
var type = (this.documentName)? ('type=' + split_string(this.documentName,".")):('type=unknown');

// BUILD PIXEL FOR TRACKING
ecrm.setPageId(pid);
ecrm.setExtras(language + "&" + level_1_name + "&" + pname + "&" + type);
ecrm.setPixel();


// last line - do not remove!