/*  Externes Skript
    NAME:       IDcookie.js
    AUFRUF:     IDcookie(Name, Tage);
	=================================
	
Zweck: 
##  Zählung der Besuchshäufigkeiten
##  inklusive ID (= Zeitstempel des ersten Besuchs)
##  wählbare Verfallszeit in Tagen
##  wählbarer Cookiename
	
Der Cookie mit Namen "Name", der eine Gültigkeit von "Tage" Tagen
besitzt, hat als Wert einen formatierten String, der Form
	     ID:Anzahl
Der Doppelpunkt dient als Trennzeichen bei der Benutzung der split-Methode.
	
ID = Zeitstempel des ersten Besuchs in der Form  JJJJMMTThhmmss 
	     (Jahr,Monat,Tag,Stunde,Minute,Sekunde mit führenden Nullen)
Anzahl = inkrementierte Besuchshäufigkeit 
		 
Als Cookie-Name sollte in der Regel die Experimentkennung gewählt werden.
Die Verfallszeit in Tagen ist an die experimentellen Anforderungen anzupassen.	
*/
	
	
function SetzeCookie(name, wert, tage)
{ var verfall = new Date();
  verfall.setTime(verfall.getTime() + (1000*60*60*24*tage));   // Soundsoviele Tage später
  document.cookie = name + "=" + escape(wert) + "; expires=" + verfall.toGMTString();
} 


function getCookie(name)
{ var dcookie = document.cookie;
  var cname = name + "=";
  var clen = dcookie.length;
  var cbegin = 0;
  while(cbegin < clen)
  { var vbegin = cbegin + cname.length;
    if(dcookie.substring(cbegin, vbegin) == cname)
	{ var vend = dcookie.indexOf(";", vbegin);
	  if(vend == -1) vend = clen;
	  return unescape(dcookie.substring(vbegin, vend));
	}
	cbegin = dcookie.indexOf(" ", cbegin) + 1;
	if(cbegin == 0) break;
  }
  return null;
}


function FormatiereID(plus)
{ if(parseInt(plus) < 10) IndividID += "0";
  IndividID += "" + plus;
  return IndividID;
}


function ErsterCookie(Name, Tage)  // Offenbar erste Teilnahme; ersten Cookie setzen
{                // Erst mal sicherstellen, dass Cookies akzeptiert werden
  document.cookie = "Testcookie=xyz";                  // Cookie schreiben
  var Testkeks = document.cookie;                      // Cookie lesen
  if(Testkeks && Testkeks.indexOf("Testcookie") > -1)  // Ist Testcookie da??
  {     // Individuelle ID festlegen (= Zeitstempel der ersten Teilnahme)
    var Datum = new Date();
	IndividID  = Datum.getYear();
	FormatiereID(parseInt(Datum.getMonth() + 1));
    FormatiereID(parseInt(Datum.getDate()));
	FormatiereID(parseInt(Datum.getHours()));
	FormatiereID(parseInt(Datum.getMinutes()));
	FormatiereID(parseInt(Datum.getSeconds()));
        // Erste Teilnahme formatieren; Trenzeichen Doppelpunkt
	Wert = IndividID + ":1";     
    SetzeCookie(Name, Wert, Tage);   // Schreibe den ersten Cookie
  } 
}

/*  #####   K E R N F U N K T I O N    die von aussen aufgerufen wird
    Individuelle Teilnahmehäufigkeit mit Cookies managen    #####  */
function IDcookie(Name, Tage)
{ AlteWerte = getCookie(Name);      // alte Werte auslesen
  if(AlteWerte != null)             // Falls schon ein Cookie vorhanden ist
  { Wert = new Array();
    Wert = AlteWerte.split(":");             // Zerlege Cookie
	Wert[1] = eval(parseInt(Wert[1]) + 1);   // inkrementiere Zähler
	neu = Wert[0] + ":" + Wert[1];           // Neuer Wert 
	SetzeCookie(Name, neu, Tage);
  } 
  else ErsterCookie(Name, Tage);
}

