/**
 * Pseudo Klasse, die alle Cookie Funktionen kapselt
 */
AppCookie = new Object();


/**
 * Löscht eine Cookievariable (setzt sie auf einen leeren Wert)
 * @param {String} strVarName Den Namen der zu löschenden Variable
 */
AppCookie.clear = function(strVarName) {
	document.cookie=strVarName+"=";
}

/**
 * Invalidiert eine Cookie variable, indem es ihr ablaufdatum auf sofort setzt
 * @param {Object} strVarName name der zu invalidierenden cookie variable
 */
AppCookie.invalidate = function(strVarName) {
	var now = new Date();
	document.cookie=strVarName+"=; expires="+now.toGMTString();	
}

/**
 * Gibt den Wert der geg. Variable zurück. Leerer String wenn nicht vorhanden.
 * @param {String} strVarName Der Name der Variable, deren Wert ermittelt werden soll
 * @return {String} Den Wert der geg. Variable / leerer String
 */
AppCookie.get = function(strVarName) {
	var strCookieContents = document.cookie;
	var strVarValue = "";
	var iVarValueStartPos = strCookieContents.indexOf("; " + strVarName + '=');
	var bIsFirstEntry = false;
	if (iVarValueStartPos == -1) {
		var iVarValueStartPos = strCookieContents.indexOf(strVarName + '=');
		if (iVarValueStartPos == 0) {
			bIsFirstEntry = true;
		}	
		else {
			iVarValueStartPos = -1;
		}
	}
	if (iVarValueStartPos != -1) {
		// startPos++ sonst wird das letzte zeichen des suchstring mitgenommen
		iVarValueStartPos += (strVarName.length+1);
		if (!bIsFirstEntry) {
			iVarValueStartPos += 2;
		}
		strVarValue = strCookieContents.substring(iVarValueStartPos);
		var iVarValueStopPos = strVarValue.indexOf(";");
		if (iVarValueStopPos != -1) {
			strVarValue = strVarValue.substring(0,iVarValueStopPos);
		}
	}
	return strVarValue;
}

/**
 * Setzt eine Cookievariable mit geg. Namen auf einen geg. Wert
 * @param {String} strVarName Den Namen der zu setzenden Variablen
 * @param {String} strVarValue Den Variablenwert
 * @param {Boolean} bConserve Wenn dieser Flag auf true gesetzt ist (Default: false), bleibt der Cookie über die Session hinaus enthalten
 */
AppCookie.set = function(strVarName, strVarValue, bConserve, strPath) {
	if (typeof(bConserve) != 'boolean') {
		bConserve = false;
	}
	var strCookieContents = strVarName + "=" + strVarValue; 
	if (bConserve == true) {
		var curDate = new Date();
		var expirationYear = curDate.getFullYear() + 1; //1 Jahr in der Zukunft 
		var expirationDay = curDate.getDate(); //der tag 1-31
		var expirationMonth = curDate.getMonth();
		var expirationDate = new Date(expirationYear, expirationMonth, expirationDay);
		strCookieContents += "; expires=" + expirationDate.toGMTString();
	}
	if (strPath != undefined && strPath != '' && strPath != null && strPath != '/') {
		strCookieContents += "; path=" + strPath;
	}
	document.cookie = strCookieContents;  
}

