
/**
* Speichern/Auslesen der Menüstati im Cookie
*
* Cookiename: asbsmenu
* 
* - Cookiedaten werden bei jedem HTTP-REQUEST mit 
*   übergeben; z.B.: 
*   Array ( [asbsmenu] => 10010000-20030000-10010004-10010006 [PHPSESSID] => 0cca4f90043c6cc94cd947eb233eb633 )
*
* Folgende Funktionen werden benötigt: 
*
* - design_cookie_set
*   Erstellt Cookie und speichert beliebigen String in den Cookie
*
* - design_cookie_register
*   Fügt Id zum Cookie hinzu
*
* - design_cookie_unregister
*   Löscht Id aus dem Cookie
*    
* - design_cookie_clean
*   Löscht sämtliche Id aus dem Cookie
*
* - design_cookie_getregistered
*   Gibt kompletten String mit (aktivierten) Ids aus dem Cookie zurück
*
* - design_click_menu
*   onclick-Funktion für die Menulinks
*
* - design_rebuild_menu
*   Stellt den Menüstatus aus dem Cookie bereit
*
**/

var design_cookie_menu    = 'asbsmenu'; 
var design_cookie_menuact = 'asbsmenuactid'

/**
* Speichert einen String in ein Cookie 
* Achtung: Benoetigt die Konstante CXBASEURL
* (wird in der index gesetzt) 
*
* @param cookiename string Bezeichnung
* @param info string Inhalt
* @param path string Zugehöriger Pfad
* @param daysvalid integer Gültigkeit
* @return boolean true/false Geschrieben?  
**/
function design_cookie_set(cookiename, info, path, daysvalid)
{
  if (navigator.cookieEnabled == false)     return; 
  if (typeof CXBASEURL == 'undefined')      return false;  
  if (typeof cookiename == 'undefined')     return false;
  if (cookiename.length == 0) return false;
      
  if (typeof info != "string") return;
  
  if (typeof path == 'undefined')
    var path = "";

  if (path.length == 0)
    if (CXBASEURL == "/")
      path = "/";
    else  
      path = CXBASEURL + "/";
  
  if (typeof daysvalid != "integer") var daysvalid = 10; 
  
  // Das Verfallsdatum auf daysvalid Tage legen; bei jeder Aktion des Benutzers
  // Beim Anlegen des Cookies muss unbedingt ein path mit angegeben werden !!!
  var expires = "";
  var today = new Date();
  today.setDate(today.getDate() + daysvalid);
  expires = " expires=" + today.toGMTString() + ";";
  
  document.cookie = cookiename + "=" + info + "; path=" + path + "; " + expires; 
  return true;
}

/**
* Liest den Inhalt eines Cookies
*
* @param cookiename string
* @return string 
**/ 
function design_cookie_getregistered(cookiename)
{
  var res = "";
  
  if (! document.cookie) return res; 

  if (document.cookie.length > 0)
  {
    var cookies = document.cookie.split(";");
    for (var k in cookies)
    {
      var cooki = cookies[ k ];
      if (cooki.search(cookiename+'=') >= 0)
      {
        var parts = cooki.split("=");
        if (parts[1].length > 0)
        {
          res = parts[1];
        } 
      }
    }
  }

  return res;
}

/**
* Leert einen Cookie 
*
* @param cookiename string 
**/ 
function design_cookie_clean(cookiename)
{
  design_cookie_set(cookiename, ""); 
}

/**
* Registriert die aktuelle Menustruktur
*
* @param id integer MenuID
**/ 
function design_cookie_register(id)
{
  var act = design_cookie_getregistered(design_cookie_menu);
  if (act.search(id) < 0)
  {
    if (act.length > 0)
      act += "-";
  
    design_cookie_set(design_cookie_menu, act + id);
  }
}


/**
* Registriert eine MenuID im Menucookie
*
* @param id integer MenuID
**/ 
/*
/* function design_cookie_register(id)
{
  var act = design_cookie_getregistered(design_cookie_menu);
  
  if (act.search(id) < 0)
  {
    if (act.length > 0)
      act += "-";
  
    design_cookie_set(design_cookie_menu, act + id);
  }
}
*/
/**
* Löscht eine MenuID im Menucookie
*
* @param id integer MenuID
**/ 
function design_cookie_unregister(id)
{
  if (! document.cookie) return; 

  var act = design_cookie_getregistered(design_cookie_menu);
 
  if (act.search(id) >= 0)
  {
    var actnew = "";
    
    if (act.search('-'+id) >= 0)
      actnew = act.replace('-'+id, '');
    else
    if (act.search(id+'-') >= 0)
      actnew = act.replace(id+'-', '');
    else
      actnew = act.replace(id, '');

    if (actnew != act)
      design_cookie_set(design_cookie_menu, actnew);
  }    
}

/**
* Stellt die Menustruktur anhand des Cookies wieder her
*
**/ 
function design_rebuild_menu()
{
  return; 
  if (! document.cookie) return; 
 
  var act = design_cookie_getregistered(design_cookie_menu);
  
  var openentries = act.split("-"); 

  for (var k in openentries)
  {
    if (document.getElementById(openentries[k]))
    {
      var entry = document.getElementById(openentries[k]);

      if (entry.nextSibling.nextSibling != null)
      {  
        if (entry.nextSibling.nextSibling.nodeName == 'UL')
        {
          entry.nextSibling.nextSibling.style['display'] = '';     
        }
      }
    } 
  }
}

/**
* Blendet die Unterpunkte aus und ein
* und registriert/löscht MenuID aus Cookie
*
* @param obj object - HTMLObject
* @result boolean true/false - true=Verlinken, false=Verlinkung canceln
**/ 
function design_click_menu(obj, linking)
{
  if (typeof linking == 'undefined')
    var linking = true; 

  if (typeof obj == 'object')
  {
    if (obj.nextSibling != null)
    {
      if (obj.nextSibling.nextSibling != null)
      {  
        if (obj.nextSibling.nextSibling.nodeName == 'UL')
        {
          if (obj.nextSibling.nextSibling.style['display'] == '')
          {  
            obj.nextSibling.nextSibling.style['display'] = 'none';
            design_cookie_unregister(obj.id); 
            design_cookie_set(design_cookie_menuact,obj.id); 
          }
          else  
          {
            obj.nextSibling.nextSibling.style['display'] = '';
            design_cookie_register(obj.id); 
            design_cookie_set(design_cookie_menuact,obj.id); 
          }
        }
      }
    }
  }

  // true/false
  return linking;
}

