
// 7 2004

	//die var searchstring ist in script erklaert
	searchString = location.search;
	var params = getParams();

//anm: man koennte eind. id fuer user in cookie setzen.
//fix values
//Counter-Werte, die ueber Parameter transportiert werden, muessen in javascript und aspx identisch sein
var cntFilter01 = new Array("adv", "advs", "way", "diff", "kw","tst");
var cntPath = directory  + "CT/cnt/cnt01.aspx";
var ispostback = false; //wird von asp ggf. gesetzt

//nur fuer tests auf true setzen und zwar konkret, auf true setzen, testen und wieder auf false setzen.
//sonst wird es vergessen auf false zu setzen!
var doDebug = false;


// fuer jede Site mit eigener Zaehlung ein Satz an Methoden

//---------- public methoden  wc01  ----------------

//allgemeine zaelfkt.
function doCountC01(params, page, shopId, prodId, setReferrer, flag, extendedData, testSession)
{

	var cntfn = "CntWc01";
	var mainName = "jsPCnt";

	doCountC01Uni(cntfn, mainName, params, page, shopId, prodId, setReferrer, flag, extendedData, testSession);
}

//speziell nicht fuer seiten-zaehlung, sondern fuer spezial-ausloesungen, z.b. links, button-clicks
function doCountC01S(params, page, shopId, prodId, setReferrer, flag, extendedData, specialName, specialVal, shortInfo, longWait)
{
	var cntfn = "CntWc01";
	var mainName = "jsSCnt";
	return doCountC01S_A(cntfn, params, mainName, page, shopId, prodId, setReferrer, flag, extendedData, specialName, specialVal, shortInfo, longWait);
}

//body close zaehlen , nur kurzinfomationen
function doCountBodyClose01Short(params, page, shId)
{
	var cntfn = "CntWc01";
	var mainName = "pgClose";
	return doCountC01S_A(cntfn, params, mainName, page, shId, "non", false, null, false, null, null, true, false);
}
function doCountBodyClose01(params, page, shopId, prodId, setReferrer, flag, extendedData)
{
	var cntfn = "CntWc01";
	var mainName = "pgClose";
	return doCountC01S_A(cntfn, params, mainName, page, shopId, prodId, setReferrer, flag, extendedData, null, null, false, false);
}

//---------- public methoden  VertragsArbeit Va01  ----------------

//allgemeine zaelfkt.
function doCountC01_Va01(params, page, shopId, prodId, setReferrer, flag, extendedData, testSession)
{

	var cntfn = "CntVa01";
	var mainName = "jsPCnt";

	doCountC01Uni(cntfn, mainName, params, page, shopId, prodId, setReferrer, flag, extendedData, testSession);
}

//speziell nicht fuer seiten-zaehlung, sondern fuer spezial-ausloesungen, z.b. links, button-clicks
function doCountC01S_Va01(params, page, shopId, prodId, setReferrer, flag, extendedData, specialName, specialVal, shortInfo, longWait)
{
	var cntfn = "CntVa01";
	var mainName = "jsSCnt";
	return doCountC01S_A(cntfn, params, mainName, page, shopId, prodId, setReferrer, flag, extendedData, specialName, specialVal, shortInfo, longWait);
}

//body close zaehlen , nur kurzinfomationen
function doCountBodyClose01Short_Va01(params, page, shId)
{
	var cntfn = "CntVa01";
	var mainName = "pgClose";
	return doCountC01S_A(cntfn, params, mainName, page, shId, "non", false, null, false, null, null, true, false);
}
function doCountBodyClose01_Va01(params, page, shopId, prodId, setReferrer, flag, extendedData)
{
	var cntfn = "CntVa01";
	var mainName = "pgClose";
	return doCountC01S_A(cntfn, params, mainName, page, shopId, prodId, setReferrer, flag, extendedData, null, null, false, false);
}

//----------------- von hier an private --------------------------------------------------------------------

function doCountC01Uni(cntfn, mainName, params, page, shopId, prodId, setReferrer, flag, extendedData, testSession)
{
	if(testSession && !ispostback)
		doCountC01X_Sess(cntfn, params, mainName, page, shopId, prodId, setReferrer, flag, extendedData)
	else
		doCountC01X(cntfn, params, mainName, page, shopId, prodId, setReferrer, flag, extendedData)
}



//checken ob nicht parameter doppelt benutzt werden

function checkParams(path)
{	
	var w = /\?/;
	
	var pos = path.search(w);
	if(pos == -1)
		return false;

	var searchStr = path.substring(pos);

	var a = getParamsKeys(searchStr);
	var b = new Array();
	var i;
	var k = 0;
	for(i = 0; i < a.length; i++)
	{
		var j;
		for(j = 0; j < b.length; j++)
		{
			if(b[j] == a[i].toLowerCase())
				return false;
		}
		b[k++] = a[i].toLowerCase();
	}

	return true;
}


//added einen param aus uebegebenen params in zu erstellendes query
function loc_addParam(paramName, query)
{
	var v     = params[paramName];
	if(v != null && v.length != 0)
	{
		if(query.length != 0)
			query += "&";
		else
			query += "?";
		query += paramName + "=" + escape(v);
	}
		
	return query;
}

//added alle parameter aus params, die relevanz haben in query
function loc_addParams(params, query)
{
	if(params != null)
	{
		var i = 0;
		for(i = 0; i < cntFilter01.length; i++)
		{
			query = loc_addParam(cntFilter01[i], query);
		}					
	}
	return query;
}

//herstellen des query fuer uebergabe an asp
function loc_makeCntData(cntfn, params, mainName, page, shopId, prodId, setReferrer, flag, sessTst, extendedData, specialName, specialVal, shortInfo)
{

	var query = "?cntfn=" + escape(cntfn);

	if(!shortInfo)
	{
		query = loc_addParams(params, query);
	}
	else
	{
		//tst wird immer gesetzt, wenn vorhanden, insb. noCount
		if(params != null)
		{
			query = loc_addParam("tst", query);
		}
	}

	//tst multiple params	
	//query += "&sH=xxsh"
	
		
	if(mainName != "non")
	{
		if(query.length == 0)
			query += "?mn=" + escape(mainName);
		else
			query += "&mn=" + escape(mainName);
	}
			
	if(shopId != "non")
	{
		if(query.length == 0)
			query += "?sh=" + escape(shopId);
		else
			query += "&sh=" + escape(shopId);
	}

	if(page != "non")
	{
		if(query.length == 0)
			query += "?pg=" + escape(page);
		else
			query += "&pg=" + escape(page);
	}
		
	if(setReferrer)
	{
		if(document.referrer != null && document.referrer.length != 0)
		{
			if(query.length == 0)
				query += "?ref=" + escape(document.referrer);
			else
				query += "&ref=" + escape(document.referrer);
		}
		else
		{
			if(query.length == 0)
				query += "?ref=non";
			else
				query += "&ref=non";
				
		}
	}

	if(prodId != "non")	
	{
		if(query.length == 0)
			query += "?prod=" + escape(prodId);
		else
			query += "&prod=" + escape(prodId);
		
	}

	if(!shortInfo)
	{
		if(!checkSessionCookie())
		{
			if(query.length == 0)
				query += "?noSessionCookie=true";
			else
				query += "&noSessionCookie=true";
		}
		
		if(isComeBack01(shopId))
		{
			if(query.length == 0)
				query += "?cb=yes";
			else
				query += "&cb=yes";
		}
	}

	if(flag != null && flag.length != 0)
	{
		if(query.length == 0)
			query += "?flag=" + escape(flag);
		else
			query += "&flag=" + escape(flag);
	}

	if(sessTst != null && sessTst.length != 0)
	{
		if(query.length == 0)
			query += "?sessTst=" + escape(sessTst);
		else
			query += "&sessTst=" + escape(sessTst);
	}

	if(extendedData)
	{
		var screenHeight = window.screen.height;
		var screenWidth  = window.screen.width;
		
		if(query.length == 0)
			query += "?scw=" + escape(screenWidth);
		else
			query += "&scw=" + escape(screenWidth);
		
		if(query.length == 0)
			query += "?sch=" + escape(screenHeight);
		else
			query += "&sch=" + escape(screenHeight);

	}	
	
	if(specialName != null && specialVal != null && specialName.length != 0 && specialVal.length != 0)
	{
		if(query.length == 0)
			query += "?spn=" + escape(specialName);
		else
			query += "&spn=" + escape(specialName);

		if(query.length == 0)
			query += "?spv=" + escape(specialVal);
		else
			query += "&spv=" + escape(specialVal);
	}
	

	if(shortInfo)
	{
		if(query.length == 0)
			query += "?shi=true";
		else
			query += "&shi=true";
	}


	//time fro js, damit jede bildaddr immmer neu. erforderlich bei bakbutton, sonst wird aus cache geladen	
	
	var tmA = new Date();
	if(query.length == 0)
		query += "?jtime=" + escape(tmA.getTime());
	else
		query += "&jtime=" + escape(tmA.getTime());
	
	
	return cntPath + query;
}

//gehoert zur allg. zaehl-funktion, nur dass hier filename als parameter. erzeugt das img
function doCountC01X(cntfn, params, mainName, page, shopId, prodId, setReferrer, flag, extendedData)
{
	var shopId01         = shopId;
	var prodId01         = prodId;
	var setReferrer01    = setReferrer;
	var extendedData01   = extendedData;
	var shortInfo01 = false;
	var pbk         = "false";
	
	if(ispostback)
	{
		prodId01         = "non";
		setReferrer01    = false;
		extendedData01   = false;
		shortInfo01      = true;
		pbk              = "true";
	}

	var path = loc_makeCntData(cntfn, params, mainName, page, shopId01, prodId01, setReferrer01, flag, null, extendedData01, "pbk", pbk, shortInfo01);

	if(doDebug && !checkParams(path))
		alert("Same parameters multiple in scriptCnt01.js 01");
	
	document.write("<img src=" + path  + ">");
}

//wie allg. zaehlfktn, aber mit session-pruefung. Die allg. zaehlfkt ruft diese methode ggf auf, param-gesteuert
//dabei wird hier in asp (bild) ein wert unter session abgelegt. dann wird, wenn dieses 1. bild geladen ist,
//ein zweites aufgerufen, das prueft, ob die session funktioniert.
function doCountC01X_Sess(cntfn, params, mainName, page, shopId, prodId, setReferrer, flag, extendedData)
{
	var sessTst = "set";
	var path = loc_makeCntData(cntfn, params, mainName, page, shopId, prodId, setReferrer, flag, sessTst, extendedData, "pbk", "false", false);

	var tstVar = null;

	if(params != null)
	{
		var v     = params["tst"];
		if(v != null && v.length != 0)
		{
			tstVar = params["tst"];
		}
		else
			tstVar = "nnnull";
		
	}
	else
		tstVar = "nnnull";

	if(doDebug && !checkParams(path))
		alert("Same parameters multiple in scriptCnt01.js 02");

	document.write("<img src=" + path  +  " onload='return doCountC01X_SessGet(\"" + cntfn + "\",\"" + tstVar + "\",\"" + page + "\" ,\"" + shopId + "\")'" +   ">");
	
}

var loc_cntimgYYY01;
//wird wenn bild1 geladen ist nach onload aufgerufen. prueft, ob wert unter session vorhanden.
function doCountC01X_SessGet(cntfn, tstVar, page, shId)
{
	var sessTst = "get";
	var mainName = "sessTst";
	var path = loc_makeCntData(cntfn, null, mainName, page, shId, "non", false, null, sessTst, false, null, null, true);
	
	if(tstVar != null && tstVar != "nnnull")
	{
		path += "&tst=" + escape(tstVar);		
	}

	if(doDebug && !checkParams(path))
		alert("Same parameters multiple in scriptCnt01.js 01");

						
	loc_cntimgYYY01 = new Image();
	loc_cntimgYYY01.src = path;
	
	var tm = new Date();
	tm.setTime(tm.getTime() + 100); //1/10 s spaeter;
	
	var wait = true;
	while(wait)
	{
		var tm01 = new Date();
		if(tm01.getTime() > tm.getTime())
			wait = false;
	}


	return true;
}

var loc_cntimgXXX01;
//special count fuer alles andere als seiten
function doCountC01S_A(cntfn, params, mainName, page, shopId, prodId, setReferrer, flag, extendedData, specialName, specialVal, shortInfo, longWait)
{
	var path = loc_makeCntData(cntfn, params, mainName, page, shopId, prodId, setReferrer, flag, null, extendedData, specialName, specialVal, shortInfo);

	if(doDebug && !checkParams(path))
		alert("Same parameters multiple in scriptCnt01.js 01");
	
	loc_cntimgXXX01 = new Image();

	loc_cntimgXXX01.src = path;

	var waitTime = 300;
	
	if(longWait)
		waitTime = 1200;
		

	var tm = new Date();
	tm.setTime(tm.getTime() + waitTime); //1 s spaeter oder 1/10 sec spaeter
	
	var wait = true;
	while(wait)
	{
		var tm01 = new Date();
		if(tm01.getTime() > tm.getTime())
			wait = false;
	}
	
	return true;
}


function setComeBackCookieX(key, shopId)
{
	var query = "";
	query = loc_addParams(params, query);
	
	if(query.length == 0)
		query = "?non=non"	
	
	
	var val = query + "&sh=" + escape(shopId)


      var jetzt = new Date();
      var date01 = new Date(jetzt.getTime() + 5000*60*60*24*365);
      document.cookie = key + "=" + escape(val) + "; expires=" + date01.toGMTString() + "; path=/";
 }

function setComeBackCookie01(shopId)

{
	setComeBackCookieX("wasHere01", shopId);
}

function setComeBackCookieTemp01(val)
{
      document.cookie = "wasHere01Temp=" + escape(val) + "; path=/";
}


function readCookie(key) 
{ 
   if(document.cookie) 
   { 
   
      var Name = ""; 
      var Wert = ""; 
      var Cookiestring = document.cookie; 
      
      for(;;) 
      { 
      
         var Wertstart = Cookiestring.indexOf("=") + 1; 
         var Wertende = Cookiestring.indexOf("; "); 
         if(!Wertstart) 
         { 
            return null;
         } 
         
         if(Wertende == -1) Wertende = Cookiestring.length; 
         Name = Cookiestring.substring(0,Wertstart-1); 
         Wert = Cookiestring.substring(Wertstart,Wertende); 
         if(Name == key)
         { 
            return Wert;
         } 
         Cookiestring = Cookiestring.substring(Wertende+2,Cookiestring.length); 
         
       } 
    } 
    else 
    { 
       return null;
    } 
} 

function isComeBackX(key, keyTemp, shopId)
{

	var res01 = readCookie(keyTemp);
	
	var res02 = readCookie(key);
	var res   = null;
	
	if(res01 == null) //wir haben check noch nicht ausgefuehrt / oder coockies sind disabled
	{
		if(res02 == null) //user war noch nicht hier oder cookies disabled
		{
			//cookie setzen, fuer naechsten besuch
			setComeBackCookie01(shopId);
			
			//und setzen, dass wir hier waren, und kein voriger Besuch
			setComeBackCookieTemp01("no");
		}
		else
		{
			//user war schon hier
			//setzen, dass wir schon hier waren
			setComeBackCookieTemp01("yes");
			res = res02;
		}
		
	}
	else
	{
		if(res01 == "no")
			res = null;
		else
			res = res02;
	}

	if(res == null)
		return 0;
	else
		return 1;
}

function isComeBack01(shopId)
{
	return isComeBackX("wasHere01", "wasHere01Temp", shopId);
}

function clearCookie(key)
{
	var dt01 = new Date();
	dt01.setTime(dt01.getTime() - 1);
	var val = readCookie(key);
	if(val != null)
	{
      document.cookie = key + "=" + escape(val) + "; expires=" + dt01.toGMTString() + "; path=/";
	}
}

function clearComeBackCookie01()

{
	clearCookie("wasHere01");
}

function clearComeBackCookieTemp01()
{
	clearCookie("wasHere01Temp");
}

//ueberpruefen, ob (zumindest Sitzungs-)Cookies gehen
function checkSessionCookie()
{
      document.cookie = "tstCookie=" + escape("egal") + "; path=/";

	  //und zuruecklesen
	  var res = readCookie("tstCookie");

	  return res != null;	  
}

///////////////////////////// Special////////////////////
			
function doCntSelection(cntPageName, shopId)
{
	doCountC01S_Va01(params, cntPageName, shopId, "", false, null, false, null, null, true, false);
}
