/**
 * session.js
 * 
 * Session-Objekt, in dem die Wichtigsten Parameter verwaltet werden können
 *
 * ToDo: - Funktionen zum Setzen/evtl. Ändern von Werten
 *			- Testen der Funktion
 *			- Workaround zum \u00dcberpr\u00fcfen der Anmeldung sowie erhalt der Userdaten
 *			- \u00dcbername der Session-Parameter (dauer, werte etc.) in Config-File??
 *
 * @author andi r.
 * @version 20050506
 *
 */
var basePath = document.location.protocol + '//' + document.location.host;
var browser = new BrowserSniffer();
var sessionConfig = 
{
	debug : [true],
	project : ['entwicklung.solseitEditor'],
	jsPath : [basePath + '/_js/'],
   cssPath : [basePath + '/_css/'],
   imgPath : [basePath + '/_images/'],
   xmlPath : [basePath + '/_xml/'],
   xslPath : [basePath + '/_xsl/'],
   browserType : [browser.getType()],
   browserVersion : [browser.getVersion()],
   language : [browser.getLanguage()],
   xmlVersion : [browser.getXMLParserVersion()]
}


function solseitSession()
{
   // Cookie-Klasse initialisieren
   this.sessionCookie = new CJL_CookieUtil("solseitSession", 60);
   // Basis-Pfad setzen
   
   this.values = new Array();

   this.newSessionCookie = false;
   // variable wird auf true gesetzt, wenn ein neues Cookie geschrieben wird
   // per url-Variable kann die js-Session zur\u00fcckgesetzt werden
   if(url.reloadSession != 'undefined' && url.reloadSession == 'true')
   {
      this.sessionCookie.expire();
      this.newSessionCookie = true;
   }
   // kein session-Cookie? - dann erzeugen
   if(!this.sessionCookie.cookieExists())
   {
   	for(val in sessionConfig)
   	{
   		this.setSessionValue(val, sessionConfig[val]);
   	}
   }
}

solseitSession.prototype.setSessionValue = function(name, value)
{
	if(!value.length)
	{
		value = null;
		if(!this.values.contains(name))
			this.values.remove(name);
	}
	else
	{
		this.values.push(name);
	}
	this.sessionCookie.setSubValue(name, value);

	eval('this.'+name+'="'+value+'"');
}

solseitSession.prototype.logout = function()
{
	this.sessionCookie.expire();
	return true;
}


/**
 * erzeugt im Body des Dokuments einen Debug-Div
 *
 * @extends solseitSession
 * @author andi r.
 * @version 20040506
 *
 */

solseitSession.prototype.debugWin = function()
{
   if(this.debug)
   {
      var dDiv = document.createElement('div');
      if(this.newSessionCookie)
      {
         var mDiv = document.createElement('div');
         mDiv.style.color = "red";
         mDiv.style.width = "180px";
         var mDivTxt = document.createTextNode('a new session cookie was set!');
         mDiv.appendChild(mDivTxt);
         dDiv.appendChild(mDiv);
      }
      var br = document.createElement('br');
      dDiv.style.border = "1px dashed #000";
      dDiv.style.width = "220px";
      dDiv.style.height = "50px";
      dDiv.style.padding = "2px 4px";
      dDiv.style.overflow = "auto";
      for(val in sessionConfig)
      {
      	var line = eval("createDebugWinLine('" + val + "', this." + val + ")");
      	dDiv.appendChild(line);
      }
   }
   return dDiv;
}

function createDebugWinLine(pName, pVal)
{
   var dSpan = document.createElement('span');
   var br = document.createElement('br');
   var dDivTxt = document.createTextNode(pName + ": " + pVal);
   dSpan.appendChild(dDivTxt);
   dSpan.appendChild(br);
   return dSpan;
}
session = new solseitSession();
