
  // ------------------------------------
  // hängt in den Objektbaum ein neues 
  // Objekt ein -> Klasse muss allerdings 
  // in PHP mit Default-Konstruktor beim 
  // Import existieren!!
  // ------------------------------------
  function insertPHPObject(obj, parameterName, className)
  {
    obj[parameterName] = new Object();
    obj[parameterName]["_class"] = className;
  }
  

  // ------------------------------------
  // PHP-Objekt serialisieren 
  // > Funktion wie in export.util.inc
  // ------------------------------------
  function importPHPObject(obj, alertIt, strEncode)
  {
    if (!alertIt) alertIt = false;
    if (!strEncode) strEncode = "true";  
    
    if (strEncode == "true")
    {
      obj = obj.replace(/\\\`/g, "`");
      obj = obj.replace(/\\\´/g, "´");
      obj = obj.replace(/\`/g, "'");
      obj = obj.replace(/\´/g, '"');
      
//      obj = obj.replace(/\\\'/g, "'");              
//      obj = obj.replace(/\\\"/g, '"');
//      obj = obj.replace(/\\\\/g, "\\");
    }
    
    var status = new Array();
    var value = new Array("", "");
    var state = 0;
    var myChar = obj.substr(0, 1);
    var offset = 0;
    var vindex = 0;
    var res = "";
    var _obj;
    
    while (offset < obj.length)
    {
      // nächsten Value lesen
      while (state != 0 || myChar != ",")
      {
        if (myChar == "\"" && obj.substr(offset-1, 1) != "backslash") state = 1-state;
        if (state == 0 && myChar == "=") vindex = 1;
        else value[vindex] += myChar;
        offset += 1;    
        if (offset ==obj.length) break; 
        else myChar = obj.substr(offset, 1);
      }
      
      
      if (value[0] == "?") 
      {
        status[0] = "_obj";
        value[0] = "";
      }
   
      if (status[status.length-1].substr(-1, 1) == "[") klammer = "]";
      else klammer = "";
      lValue = status[status.length-1] + value[0] + klammer; 
      
      if (value[0]=="END") status.pop(); // Unterobjekt Ende
      else if (value[1].substr(0, 1) == "\"") // Wert einsetzen    
      {
        res += lValue + " = " + value[1] + ";\n"; 
      } 
      else if (value[1].substr(0, 1) == ":") // neues Subobjekt erzeugen
      {
        res += lValue + " = new Object();\n";
        if (value[1] == ":array")
        {
          res += lValue + "._class = \"array\";\n";
          status.push(lValue + "[");
        }
        else
        {
          res += lValue + "._class = \"" + value[1].substr(1) + "\";\n";
          status.push(lValue + ".");
        }
      }
     
      
      // für näcshten Value vorbereiten
      offset += 1;
      value = new Array("", "");  
      myChar = obj.substr(offset, 1);
      vindex = 0;  
    }
    
    if (alertIt) 
    {
      f = window.open("", "AAL-Debuggin", "width=300,height=400,menubar=no,location=no,toolbar=no");
      f.focus();      
      f.document.write(res.replace(/\n/g, "\n<br>"));  
    }
    
    eval(res);
    return _obj;
  }
  
  function debugPHPObject(obj)
  {
    importPHPObject(obj, true);     
  }
  
  // ------------------------------------
  // PHP-Objekt in JS holen 
  // > Funktion wie in export.util.inc
  // ------------------------------------
  function exportPHPObject(value, name, strEncode)
  {
    if (!name) name = "?";
    if (!strEncode) strEncode = "true";
    
    var isArray = (value._class == "array");
    
    var retr = name  + "=:" + value._class + ",";

    for (var key in value)
    {
      if (key != "_class")
      {
        if (value[key] instanceof Object)
        {
          retr += exportPHPObject(value[key], key, "false");   
        }
        else
        {
          if (isNaN(key) && isArray)
            retr += "\"" + key + "\"=\"" + value[key] + "\",";  
          else
            retr += key + "=\"" + value[key] + "\",";  
        }  
      }
     }
    
    retr += "END,";
    
    // Hochkomma beseitigen (nur bei nicht rekursiven Aufrufen)
    if (strEncode == "true")
    {
      retr = retr.replace(/\`/g, "\\`");
      retr = retr.replace(/\´/g, "\\´");
      retr = retr.replace(/\'/g, "`");
      retr = retr.replace(/\"/g, "´");

//      retr = retr.replace(/\\/g, "\\\\");
//      retr = retr.replace(/\"/g, '\\"');
//      retr = retr.replace(/\'/g, "\\'");
    }    
    return retr; 
  }
  



  // ---------------------------------------
  // enclodet und decodet URL-String in Javascript korrekter
  // als mit escape
  // ---------------------------------------
  function extEscape(value)
  {
    value = escape(value);
    while (value.indexOf(",") != -1) value = value.replace(",", "%2C");
    while (value.indexOf("/") != -1) value = value.replace("/", "%2F");
    while (value.indexOf("?") != -1) value = value.replace("?", "%3F");
    while (value.indexOf(":") != -1) value = value.replace(":", "%3A");
    while (value.indexOf("@") != -1) value = value.replace("@", "%40");
    while (value.indexOf("&") != -1) value = value.replace("&", "%26");
    while (value.indexOf("=") != -1) value = value.replace("=", "%3D");
    while (value.indexOf("$") != -1) value = value.replace("$", "%2B");
    return value;
  }
  
  function extUnescape(value)
  {
    while (value.indexOf("%2C") != -1) value = value.replace("%2C", ",");
    while (value.indexOf("%2F") != -1) value = value.replace("%2F", "/");
    while (value.indexOf("%3F") != -1) value = value.replace("%3F", "?");
    while (value.indexOf("%3A") != -1) value = value.replace("%3A", ":");
    while (value.indexOf("%40") != -1) value = value.replace("%40", "@");
    while (value.indexOf("%26") != -1) value = value.replace("%26", "&");
    while (value.indexOf("%3D") != -1) value = value.replace("%3D", "=");
    while (value.indexOf("%2B") != -1) value = value.replace("%2B", "$");
    value = unescape(value);
    return value;
  }

  
  
  // --------------------------------------------
  // Datums- Zeitfunktionen auf Datum
  // im Format YYYYMMDD und HHMM
  // --------------------------------------------
    function MyDateTimeClass() {}
    var MyDateTime = new MyDateTimeClass();
  
    // STATIC PUBLIC FUNCTIONS
  
    MyDateTime.makeDate = function(myYear, myMonth, myDay) 
    {
      myYear = "" + myYear;
      myMonth = "" + myMonth;
      myDay = "" + myDay;
      if (myYear.length == 2) myYear = "20" + myYear; 
      if (myMonth.length == 1) myMonth = "0" + myMonth;
      if (myDay.length == 1) myDay = "0" + myDay;
      return myYear + myMonth + myDay;
    }

    MyDateTime.makeTime = function(myHour, myMinute)
    {
      myHour = "" + myHour;
      myMinute = "" + myMinute;
      if (myHour.length == 1) myHour = "0" + myHour;
      if (myMinute.length == 1) myMinute = "0" + myMinute;
      return myHour + myMinute;
    }
    
    MyDateTime.dateToString = function(myDate)
    {
      return myDate.substr(6, 2) + "." + myDate.substr(4, 2) + "." + myDate.substr(0, 4);  
    }
    
    MyDateTime.timeToString = function(myTime)
    {
      return myTime.substr(0, 2) + ":" + myTime.substr(2, 2);  
    }
    
    MyDateTime.getCurrentDate = function()
    {
      var dat = new Date();
      var day = "" + dat.getDate();
      if (day.length == 1) day = "0" + day;
      var mon = "" + (dat.getMonth() + 1);
      if (mon.length == 1) mon = "0" + mon;
      var yea = "" + dat.getFullYear()
      var d = yea + mon + day;
      return d      
    }
    
    MyDateTime.getCurrentTime = function()
    {
      var dat = new Date();
      var t = "" + dat.getHours() + dat.getMinutes();
      return t;
    }
    
    MyDateTime.getYear = function(myDate)
    {
      var t = "" + myDate;
      return t.substr(0, 4);
    }

    MyDateTime.getYear2 = function(myDate)
    {
      var t = "" + myDate;
      return t.substr(2, 2);
    }
    
    MyDateTime.getMonth = function(myDate)
    {
      var t = "" + myDate;
      return t.substr(4, 2);
    }
    
    MyDateTime.getDay = function(myDate)
    {
      var t = "" + myDate;
      return t.substr(6, 2);
    }
    
    MyDateTime.getHour = function(myTime)
    {
      var t = "" + myTime;
      return t.substr(0, 2);
    }
    
    MyDateTime.getMinute = function(myTime)
    {
      var t = "" + myTime;
      return t.substr(2, 2);
    }
    
    
  