
  function addParameterToURL(URL,Name,Value)
  {
    /* Diese Funktion prüft vorab, ob der angegebene Parameter (egal mit welchem Wert) im URL vorkommt.
       Wenn nein: Parameter wird am Ende hinzugefügt
       Wenn ja:   "alter" Parameter wird entfernt und dann am Ende neu hinzugefügt
    */
    URL=removeParameterFromURL(URL,Name); // Entfernt Parameter, so vorhanden

    // Anker entfernen, so vorhanden
    pos=URL.search(/#/);
    if (pos== -1) Anker="";
    else
    {
      Anker=URL.substr(pos); // Speichert Anker inkl. dem "#"
      URL=URL.substr(0,pos);
    }

    // Parameter einfügen -> Gibt es bereits einen oder mehrere Params?
    pos=URL.search(/\?/);
    if (pos== -1) URL+="?"+Name+"="+Value; // Nein, gibt noch keine(n)
    else          URL+="&"+Name+"="+Value; // Ja, gibt schon einen/welche

    // Anker wiederherstellen, so er denn vorhanden war
    if (Anker!="") URL+=Anker;

    return URL;

    //Anker=cutAnker(URL); // Entfernt Anker (und speichert ihn), so vorhanden
    //URL=restoreAnker(URL,Anker); // Fügt Anker wieder hinzu, sofern er vorher entfernt wurde
  } // function addParameterToURL(URL,Name,Value)

  function removeParameterFromURL(URL,Name) // URL kann Anker dranhaben - damit wird die Funktion fertig! ;)
  {
    /* Schaut ob der angegebene Parameter im URL existiert und entfernt ihn, sofern das der Fall ist
       Mehrere Fälle:
       - ist einziger Parameter: Entfernt ihn inkl. "?" nach ".php"
       - ist nicht einziger:
         - ist erster: Entfernt ihn inkl. dem "&" danach
         - ist nicht erster: Entfernt ihn inkl. dem "&" davor
    */

    // (1) Gibts den Parameter überhaupt?
    pos=URL.search(eval("/\\?"+Name+"=/")); // Gibts Parameter am Anfang? (nach "?")
    if (pos== -1)
    {
      pos=URL.search(eval("/\\&"+Name+"=/")); // Gibts Parameter woanders? (nach "&")
      if (pos== -1) return URL; // Paraneter gibts nciht, ich muss also auch nichts entfernen! -> return URL;
      else          amAnfang=false;
    } else amAnfang=true;

    // (2) Ist es der einzige? Wieviele gibts insgesamt?
    nParams=0;
    for (i=0; i<URL.length; i++) if (URL.charAt(i)=="&" || URL.charAt(i)=="?") nParams++;

    //alert("amAnfang="+amAnfang+", nParams="+nParams);

    // (3) Entsprechend verhalten
    if (nParams==1)
    {
     //alert("Ist der einzige Param");
     // Wird entfernt, inkl. dem "?" vorne
     // Ggf. wird aber ein posEnd gesetzt, das nicht Stringende ist - wenn z. B. ein Anker definiert ist
     // posEnd ist auf jeden Fall des letzte Zeichen, das entfernt werden soll
      for (posEnd=pos+1; posEnd<URL.length; posEnd++) if (URL.charAt(posEnd)=="#") { posEnd--; break; }
      if (posEnd==URL.length) return URL.substr(0,pos); // kein Anker -> nur vorderen Teil zurückgeben
      return URL.substr(0,pos)+URL.substr(posEnd+1);
    } else
    if (nParams>1)
    {
      if (amAnfang)
      {
        //alert("Ist der erste von mehreren Params");
        // Wird entfernt, inkl. dem "&" danach -- das "?" davor bleibt!
        // posEnd ist das letzte Zeichen, das entfernt werden soll (also das "&" des Folge-Params)
        for (posEnd=pos+1; posEnd<URL.length; posEnd++) if (URL.charAt(posEnd)=="&") break;
        return URL.substr(0,pos+1)+URL.substr(posEnd+1);
      } else
      {
        //alert("Ist NICHT der erste von mehreren Params");
        // entfernt alles von [pos] bis exkl. zum nächsten & oder # oder String-Ende
        // posEnd ist das letzte Zeichen, das entfernt werden soll (nicht das danach!)
        for (posEnd=pos+1; posEnd<URL.length; posEnd++) if (URL.charAt(posEnd)=="&" || URL.charAt(posEnd)=="#") { posEnd--; break; }
        if (posEnd>=URL.length) return URL.substr(0,pos); // braucht nur vorderen Teil des URLs (weil entfernter Param ganz am Ende stand)
        return URL.substr(0,pos)+URL.substr(posEnd+1);
      }
    }
  } // function removeParameterFromURL(URL,Name)     ACHTUNG: Der Zeilenumbruch nach dieser Zeile ist wichtig! (File wird über PHP includet => Folgezeile sonst im Kommentar drin...!)
  
