/* vim: set expandtab sw=4 ts=4 sts=4: */
/*
 * Copyright (c) 2008 FIZON GmbH
 * All rights reserved.
 *
 * $Id: pcookie.js 1739 2008-08-04 07:50:26Z as $
 */

/**
 * Autor   : Aron Schlesinger <as@paefchen.net>
 * Lizenz  : BSDL
 * Version : $Paefchen$
 */

/**
 * PCookie()
 *
 * Vereinfacht das zugreifen und setzen 
 * auf die Cookies der Session.
 *
 * Es gibt 2 Moeglichkeiten auf die Cookies
 * zu zugreifen. Entweder inizialisiert man sich
 * das PCookie-Objekt selber und nutzt dann die
 * get() und set() Methoden oder man greift einfach
 * auf die Statischen Methoden PCookie.Get() und
 * PCookie.Set() zu.
 */
PCookie = function()
{

	/**
	 * parseCookieStr()
	 *
	 * parsed den document.cookie string
	 * und erstellt daraus ein Objekt wo die
	 * Methoden-Namen der Cookie-Namen entspricht.
	 *
	 * @return	boolean	gibt immer true zurück.
	 */
	this.parseCookieStr = function()
	{
		if (document.cookie.length < 1)
			return true;

		var cArr = document.cookie.split('; ');

		for (var i = 0; i < cArr.length; i++) {
			var eq = cArr[i].indexOf('=');
			this[cArr[i].substring(0, eq)]
				= unescape(cArr[i].substring(eq + 1));
		}

		return true;
	}


	/**
	 * get()
	 *
	 * gibt den Wert eines Cookies wieder.
	 *
	 * @param	string	Name des Cookies.
	 *
	 * @return	string	Wert des Cookues. Sollte das
	 *                  Cookie nicht existieren wird 
	 *                  ``false'' zurück gegeben.
	 */
	this.get = function(name)
	{
		this.parseCookieStr();

		if (typeof this[name] == 'undefined')
			return false;

		return this[name];
	}


	/**
	 * set()
	 *
	 * setz bzw. ueberschreibt ein vorhandenes Cookie.
	 *
	 * @param	string	Name des Cookies.
	 * @param	string	Wert des Cookies.
	 * @param	integer	optional	Sekunden ab jetzt wann das Cookie ablauft.
	 * @param	string	optional	URL-Pfad des Cookies.
	 * @param	string	optional	Domain des Cookies.
	 * @param	boolean	optional	ob das Cookie securitie sein soll.
	 *
	 * @return	boolean	true
	 */
	this.set = function(name, value, expires, path, domain, secure)
	{
		document.cookie = name + "=" + escape(value) +
			(expires	? "; expires=" + expires: "") +
			(path		? "; path=" + path		: "") +
			(domain 	? "; domain=" + domain	: "") +
			(secure 	? "; secure" 			: "");
		
		this.parseCookieStr();
		return true;
	}
}


/**
 * PCookie.Get()
 *
 * siehe get-Methode.
 */
PCookie.Get = function(a) { return new PCookie().get(a) };


/**
 * PCookie.Get()
 *
 * siehe set-Methode.
 */
PCookie.Set = function(a1, a2, a3, a4, a5, a6) {
	return new PCookie().set(a1, a2, a3, a4, a5, a6) };
