var rohre=new Object();
var a_rohre=new Array();
window.rohre=rohre;
window.a_rohre=a_rohre;

function RP_texte(objekt)
/* verschluesselt die Textinhalte eines Objekts
 */
{
  var attribut,text="";
  for (attribut in objekt)
  {
    text+="&"+attribut+"="+escape(objekt[attribut]);
  }
  return text;
}


function RP_fuegeAn(botschaft)
/* fuegt eine Botschaft in die Sendeschleife zur Uebertragung ein
 *   text: Botschaft
 */
{
  var vorletzter=this.letzter;
  this.letzter=new Object();
  this.letzter.text=this.texte(this.status);
  if (typeof(botschaft)=="object")
    this.letzter.text+=this.texte(botschaft);
  else
    this.letzter.text+=botschaft;
  this.letzter.naechster=false;
  if (vorletzter)
    vorletzter.naechster=this.letzter;
  else
    this.erster=this.letzter;
  this.sendeLos();
}


function RP_trenneAb()
/* verwirft die erste vorgemerkte Botschaft aus der Sendeschleife
 */
{
  var aktueller=this.erster;
  if (!aktueller)
    return;
  this.erster=aktueller.naechster;
  if (!this.erster)
    this.letzter=false;
  delete aktueller;
}


function RP_sendeLos()
/* sendet die erste Botschaft in der Sendeschleife
 */
{
  var text;
  if (this.wartender)
    return;
  this.wartender=this.erster;
  if (!this.wartender)
    return;
  text=this.netzpfad+"?n="+this.nr+this.wartender.text;
  try { this.rohr.contentDocument.location.replace(text); } catch (e) {}
}


function RP_postAb()
/* Fortsetzung der Uebertragung
 */
{
  this.trenneAb();
  this.wartender=false;
  this.sendeLos();
}


function RohrStatus(name,nr)
{
  this.__name=name;
  this.__nr=nr;
}


function RohrPost(netzpfad,name,links,oben,breite,hoehe)
/* Erzeugt den iframe und allen Kram, um dynamisch Daten zu uebertragen
 *   netzpfad: Adresse des Server-Scripts
 *   name: Name der Rohrpost
 *   links,oben,breite,hoehe: Geometrie des iframes
 */
{
  this.netzpfad=netzpfad;
  this.erster=false;
  this.letzter=false;
  this.wartender=false;
  this.rohr=document.createElement("iframe");
  this.rohr.style.position="absolute";
  this.rohr.style.background="red";
  this.rohr.style.left=links;
  this.rohr.style.top=oben;
  this.rohr.style.width=breite;
  this.rohr.style.height=hoehe;
  this.postAb=RP_postAb;
  this.sendeLos=RP_sendeLos;
  this.trenneAb=RP_trenneAb;
  this.fuegeAn=RP_fuegeAn;
  this.texte=RP_texte;
  this.name=name;
  rohre[this.name]=this;
  this.nr=a_rohre.length;
  a_rohre[this.nr]=this;
  this.status=new RohrStatus(this.name,this.nr);
  document.body.appendChild(this.rohr);
}

