/**	WLW - JavaScript
 *  liest, schreibt, loescht Cookies
 *  ruft Cookie-Servlet auf
 *  
 *	erstellt: Martin 06.07.2011
 *   
*/ 

function initutrack () {
	/*
	 * ueberprueft Session-Cookie und setzt es, wenn nicht vorhanden
	 * holt sich weitere Informationen
	 */
	var SessionCookie = $.cookie('wlwutrack');
	var FinalCookie = $.cookie('wlwutrackfinal');
	if(SessionCookie == null) {  
		$.cookie('wlwutrack', 'on', {path:'/'});
		var tageseitStart = initwlwStart(); // Anzahl Zeitraum in Tagen seit erstem Besuch
		var UserID = defineU(); // eindeutige ID
		var referrerNo = SetReferrer(); // entsprechende Referrernummer
		// Cookie 4 zusammenbauen, schreiben und erweitern, begrenzen auf 500 Stellen
		if(FinalCookie == null) {
			$.cookie('wlwutrackfinal', '' + referrerNo + '-' + tageseitStart, {expires: 1827, path:'/'}); // expires in Tagen
		} else {
			// Cookie erweitern
			if(FinalCookie.length < 500) { 
				$.cookie('wlwutrackfinal', '' + FinalCookie + '#' + referrerNo + '-' + tageseitStart, {expires: 1827, path:'/'}); // expires in Tagen
			} else {
				// Anzahl Zeichen: 1 (#) + 1 (referrerNo) + 1 (-) + n (Tage seit Start)
				var anz = 3 + tageseitStart.length;
				CutFinalCookie = FinalCookie.slice(anz, FinalCookie.length); // erste Zeichen abschneiden
				$.cookie('wlwutrackfinal', '' + CutFinalCookie + '#' + referrerNo + '-' + tageseitStart, {expires: 1827, path:'/'}); // Cookie ueberschreiben und erweitern
			}
		}
		// TODO: Servlet aufrufen mit FinalCookie und ID!
		// FinalCookie = $.cookie('wlwutrackfinal'); // nur fuer die erste alert-Ausgabe
		// alert("Tage seit erstem Besuch: " + tageseitStart + "\nUserID: " + UserID + "\nReferrer: " + referrerNo + "\nfinales Cookie: " + FinalCookie + "\nCookielänge: " + FinalCookie.length);
	}  // Ende SessionCookie
}

function initwlwStart() {
	/*
	 * setzt StartCookie (User das erste Mal auf WLW-Seiten) mit einer Laufzeit von 5 Jahren
	 * wenn StartCookie vorhanden, wird die Differenz zwischen Start und erneutem Besuch
	 * errechnet und in Tagen gespeichert
	 */
	var tagegerundet;
	var StartCookie = $.cookie('wlwutrackStart');
	var Aktdate = new Date();
	var AktZeit = Aktdate.getTime(); // Millisekunden seit 1.1.1970
	if(StartCookie == null) {
		$.cookie('wlwutrackStart', '' + AktZeit + '', {expires: 1827, path:'/'}); // expires in Tagen
		tagegerundet = 0;
	} else {
		var tage = (AktZeit - StartCookie) / 1000 / 60 / 60 / 24; // Differenz zwischen Startzeit und aktuellem Datum, Umrechnung in Tage
		tagegerundet = (Math.round(tage * 1) / 1).toString(); // gerundet auf ganze Zahl
	}
	return tagegerundet;
}

function defineU() {
	/*
	 * vergibt eine eindeutige ID bestehend aus Datum und einer Zufallszahl
	 */
	var theID;
	var IDCookie = $.cookie('wlwutrackID');
	
	if(IDCookie == null) {
	    var Datum = new Date();
	    var Tag = Datum.getDate();
	    var Monat = Datum.getMonth() + 1;
	    var Jahr = Datum.getFullYear();
	    var Stunden = Datum.getHours();
	    var Minuten = Datum.getMinutes();
	    var Sekunden = Datum.getSeconds();
	    Tag = ((Tag < 10) ? "0" + Tag : Tag);
	    Monat = ((Monat < 10) ? "0" + Monat : Monat);
	    Stunden = ((Stunden < 10) ? "0" + Stunden : Stunden);
	    Minuten = ((Minuten < 10) ? "0" + Minuten : Minuten);
	    Sekunden = ((Sekunden < 10) ? "0" + Sekunden : Sekunden);
	    var theDate = Jahr + Monat + Tag + Stunden + Minuten + Sekunden;
		theID = theDate + Math.random();
		$.cookie('wlwutrackID', '' + theID + '', {expires: 1827, path:'/'}); // expires in Tagen
	} else {
		theID = IDCookie; // Cookie wird nur ausgelesen
	}
	return theID;
}

function GetReferrer () {
	var theReferrer = document.referrer;
	return theReferrer;
}

function SetReferrer() {
	/*
	 * 	Die zusaetzliche Stelle, die angefuegt wird, haengt vom Referrer und der aufgerufenen Seite ab:
	 * 	1. Google SEM
	 *  2. Google SEO
	 *  3. Aufruf der Startseite ohne Referrer
	 *  4. Sonstige ohne Referrer
	 *  5. mit Referrer gleich Bing
	 *  6. mit Referrer gleich Yahoo
	 *  7. mit Referrer gleich Google
	 *  Y. mit Referrer gleich Youtube
	 *  F. mit Referrer gleich Facebook
	 *  T. mit Referrer gleich Twitter
	 *  L. mit Referrer gleich Linkedin
	 *  X. mit Referrer gleich Xing
	 *  S. mit Referrer gleich greifswald oder soemmerda
	 *  8. mit Referrer ungleich aleem vorigen
	 */
	
	// SEO (treffer, industrie, maschinen, medizin, kunststoff)
	var seoseite;
	if(document.URL.indexOf("/treffer/")!=-1 || document.URL.indexOf("/industrie/")!=-1 || document.URL.indexOf("/maschinen/")!=-1 || document.URL.indexOf("/medizin/")!=-1 || document.URL.indexOf("/kunststoff/")!=-1) {
		seoseite = true;
	}

	var theReferrer = GetReferrer();
	var theReferrerNumber;
	if(theReferrer == "") { // Direktaufruf
		if(document.URL.indexOf("/start/")!=-1) { // Startseite
			theReferrerNumber = 3;
		} else { // alle anderen Seiten
			theReferrerNumber = 4;
		}
	} else {
		if(theReferrer.indexOf("google")!=-1) { // von Google
			if(getparameter('sem') || document.URL.indexOf('sem?')!=-1) { // SEM
				theReferrerNumber = 1;
			} else {
				if(seoseite == true) { // SEO
					theReferrerNumber = 2;
				} else {
					theReferrerNumber = 7;
				}
			}
		} else {
			switch(true) { 
				case theReferrer.indexOf("bing") > -1: theReferrerNumber = 5;
				break;
				case theReferrer.indexOf("yahoo") > -1: theReferrerNumber = 6;
				break;
				case theReferrer.indexOf("youtube") > -1: theReferrerNumber = "Y";
				break;
				case theReferrer.indexOf("facebook") > -1: theReferrerNumber = "F";
				break;
				case theReferrer.indexOf("twitter") > -1: theReferrerNumber = "T";
				break;
				case theReferrer.indexOf("linkedin") > -1: theReferrerNumber = "L";
				break;
				case theReferrer.indexOf("xing") > -1: theReferrerNumber = "X";
				break;
				case theReferrer.indexOf("greifswald") > -1: theReferrerNumber = "S";
				break;
				case theReferrer.indexOf("soemmerda") > -1: theReferrerNumber = "S";
				break;
				default: theReferrerNumber = 8; // der Rest
				break;
			} 
		}
	}
	return theReferrerNumber;
}

