/* Wenn diese Variable per GET geliefert wird, löst sie das Script aus. Ihr Inhalt dient als Name für die Arrays (version, abTest) und für die geladene HTML-Datei und als Kampagnen-Bezeichnung für die Statistik. */
var triggerVar = 'aktion'; 
/* Name des Cookies. */
var cookieName = 'ecContentteaser';
/* Name des Teasers (Cookie-Inhalt und Dateiname) */
var teaserString;
/* Prefix der Teaser-Datei */
var teaserPrefix = 'st_content-teaser';

/* Array mit den Campagnen, die eine andere Version als 1 haben. */
var versionArray = new Array(); 
/*versionArray['campaign']=1; */

/* Array mit den Campagnen, die einen A/B-Test haben. */
var abTestArray = new Array();
/*abTestArray['flipflop']=0.5; */ // Wahrscheinlichkeit, mit der A angezeigt werden soll

/* in dieses Array werden die URL-Parameter geschrieben */
var urlParameters = new Array();

function getURLparameters() {
	if (self.location.search.indexOf("=") == -1) {return;}
	
	var queryStringArray = unescape(self.location.search).substring(1).split("&");
	
	for (var i=0;i<queryStringArray.length;i++) {
		queryStringArray[i] = queryStringArray[i].split("=");
		urlParameters[queryStringArray[i][0]] = queryStringArray[i][1];
	}
}

getURLparameters();

/* ******************************************************************
 * Schritt 1: Cookie setzen, wenn jemand per triggerVar kommt. 
 * Außerdem Eintrag in die Statistik.
 * ****************************************************************** */
 
if(typeof urlParameters[triggerVar] != 'undefined')
{
	var cookieValues = new Array ();
	cookieValues['campaign'] = urlParameters[triggerVar];
	
	/* Version des Teasers / Tests: default=1, ansonsten Definition im versionArray im Kopf dieser Datei */
	if(typeof versionArray[urlParameters[triggerVar]] != 'undefined') {
		cookieValues['version'] = versionArray[urlParameters[triggerVar]];
	} else {
		cookieValues['version'] = 1;
	}
	
	/* A/B Test durchführen? default=nein (A=100%), ansonsten Definition im abTestArray im Kopf dieser Datei */
	if(typeof abTestArray[urlParameters[triggerVar]] != 'undefined') {
		/* Wahrscheinlichkeit in abTestArray[] prüfen, und entsprechend Teaser A oder B nutzen*/
		if(Math.random() <= abTestArray[urlParameters[triggerVar]]) {
			cookieValues['abVersion'] = 'a';
		} else {
			cookieValues['abVersion'] = 'b';		
		}
	} else {
		cookieValues['abVersion'] = 'a';
	}

	/* Name des Teasers (ohne Präfix) wird im Cookie gespeichert */
	teaserString = cookieValues['campaign'] + '_' + cookieValues['version'] + '_' + cookieValues['abVersion'];
	Cookie.write(cookieName, teaserString, {duration:1, path:"/"});
	var hash = Math.round(Math.random()*1000000);
	Cookie.write(cookieName+'_hash', hash, {duration:1, path:"/"});
	
	/* Anlegen des Cookies in der Statistik eintragen */
	new Request.HTML({url:'/typo3conf/ext/llhrequestlog/workaround.php?campaign='+cookieValues['campaign']+'&version='+cookieValues['version']+'&abVersion='+cookieValues['abVersion']+'&hash='+hash+'&action=cookie'}).send();
}

/* ******************************************************************
 * Schritt 2: Teaser anzeigen, wenn jemand einen Cookie hat oder per 
 * triggerVar kommt (für Cookie-Disabled-User beim Landen auf der Seite).
 * ****************************************************************** */
 
window.addEvent('domready', function() {

	var contentteaserName = Cookie.read(cookieName);
	var showSmallTeaser = '';
	
	/* gehe die möglichen Fälle durch, geordnet nach Wahrscheinlichkeit */
	if(contentteaserName == null && typeof urlParameters[triggerVar] == 'undefined') {
		// weder triggerVar, noch Cookie
		return;
	}
	else if(contentteaserName != null && typeof urlParameters[triggerVar] == 'undefined') {
		/* Cookie ohne triggerVar (kleiner Teaser) */
		contentteaserName = contentteaserName;
		showSmallTeaser = '_closed';
	}
	else if(typeof urlParameters[triggerVar] != 'undefined') {
		/* triggerVar gesetzt (großer Teaser) */
		contentteaserName = cookieValues['campaign'] + '_' + cookieValues['version'] + '_' + cookieValues['abVersion'];
	}
	else {
		/* Fallback */
		return;
	}
	
	// We can use one Request object many times.
	var req = new Request.HTML({url:'/fileadmin/templates/content-teaser/'+teaserPrefix+'_'+contentteaserName+showSmallTeaser+'.html',
		onSuccess: function(html) {

			/* Teaser auf der Seite einbinden */
			$('pagebody').adopt(html);
			$('content-teaser').inject($('pagebody'),'top');

			/* Wenn noch nicht vorhanden (weil aus Cookie gezogen statt aus 
			 * Url-Parameter): cookieValues für die Statistik ziehen */	
			if(typeof cookieValues == 'undefined')
			{
				/* Liest die Werte von hinten aus. Das ist mit pop() und join() 
				 * gelöst für den Fall, dass die Kampagne Unterstriche enthält. */
				var contentteaserNameArray = contentteaserName.split('_');
				var cookieValues = new Array ();
				cookieValues['abVersion'] = contentteaserNameArray.pop();
				cookieValues['version'] = contentteaserNameArray.pop();
				cookieValues['campaign'] = contentteaserNameArray.join('_');
			}
			
			/* Hash aus dem Cookie auslesen, wenn nicht in diesem 
			 * Script-Durchlauf ermittelt und gesetzt */
			if(typeof hash == 'undefined')
			{
				var hash = Cookie.read(cookieName+'_hash');
			}
			
			/* Klick auf den Teaser protokollieren */
			$('content-teaser').addEvent('click', function(event,offset){
				new Request.HTML({url:'/typo3conf/ext/llhrequestlog/workaround.php?campaign='+cookieValues['campaign']+'&version='+cookieValues['version']+'&abVersion='+cookieValues['abVersion']+'&hash='+hash+'&action=click'}).send();
			});
			
		},
		onFailure: function() {
			/* Fehlerhaften Cookie löschen */
			Cookie.dispose(cookieName);
			Cookie.dispose(cookieName+'_hash');
			/* Zugriff auf nicht vorhandene Datei protokollieren */
			new Request.HTML({url:'/typo3conf/ext/llhrequestlog/workaround.php?campaign='+teaserPrefix+'_'+contentteaserName+showSmallTeaser+'&action=requestError'}).send();
		}
	}).send();

});