   Array.prototype.inArray = function(needle) {
     for(var i = 0; i < this.length; i++) {
       if(this[i] == needle) {
         return(i);
       }
     }
     return(-1);
   };

  /**
   * Namespace erstellen
   */
  if(!window.itchoice) {
    window.itchoice = {};
  }

  if(!window.itchoice.windowtracker) {
    window.itchoice.windowtracker = {};
  }

  /**
   * Schließe alle Fenster nur nicht sich selbst ;)
   */
  window.itchoice.windowtracker.closeAllNeighborWindows = function() {
    window.focus();
    for(var i = 0; i < window.__winInstances.length; i++) {
      if(!window.__winInstances[i].closed && window != window.__winInstances[i]) {
        window.__winInstances[i].close();
      }
    }
  };

  /**
   * Öffne ein neues Fenster
   * Danach wird es direkt Veröffentlicht
   *
   * @param url String URL mit der das Fenster geöffnet wird
   */
  window.itchoice.windowtracker.newWindow = function(url) {
    var winNew = window.open(url, '_blank');
    window.itchoice.windowtracker.__publishWindowInstances(winNew);
  };

  /**
   * Fenster veröffentlichen
   * Registriere es Zentral, und verteile die Instanz auf alle anderen
   * geöffneten Fenster.
   *
   * @param win Window Instanz eines Fensters
   */
  window.itchoice.windowtracker.__publishWindowInstances = function(win) {
    if(!win.__winInstances) {
      win.__winInstances = [win];
    }
        
    //ACHTUNG:
    //Die Länge verändert sich während dessen die schleife läuft
    //desshalb ist es nötig, diese vorher abzufragen.
    var len = window.__winInstances.length;
    for(var i = 0; i < len; i++) {
      if(!window.__winInstances[i].closed && window.__winInstances[i].__winInstances && window.__winInstances[i].__winInstances.inArray(win) == -1) {
        window.__winInstances[i].__winInstances.push(win);
        win.__winInstances.push(window.__winInstances[i]);
      }
    }
  };

  /**
   * Script Initialisierung
   */
  if(!(window.__winInstances && window.__winInstances.length > 0)) {
    window.__winInstances = [window];
  }

  if (window.opener && window.opener.itchoice && window.opener.itchoice.windowtracker) {
    window.opener.itchoice.windowtracker.__publishWindowInstances(window);
    //window.itchoice.windowtracker.closeAllNeighborWindows = function() {
    //  window.opener.itchoice.windowtracker.closeAllNeighborWindows();
    //};
  }

  /**
   * Falls das öffnende Fenster neu geladen wurde
   * muss die Liste refreseht werden. Das öffnende Fenster kennst nun nicht mehr seine
   * geöffneten Fenster.
   */
  setInterval(function() {
  	if(window.opener && window.opener.itchoice && window.opener.itchoice.windowtracker) {
          window.opener.itchoice.windowtracker.__publishWindowInstances(window);      
  	}
  	window.itchoice.windowtracker.__publishWindowInstances(window);
  }, 250);