function alignVar_create(knoten) {
	var kw = knoten.clientWidth;
	var kh = knoten.clientHeight;
	this.w = kw;
	this.h = kh;
	this.x1 = 0;
	this.y1 = 0;
	this.x2 = kw;
	this.y2 = kh;
	if(knoten.tagName&&(knoten.tagName.toUpperCase()=="FIELDSET")) {
		if(isNS6||isFF) {
			this.w  -= 22;
		  this.x2 -= 22;
		  this.h  -= 21;
		  this.y2 -= 21;
		}
		else {
		  this.y1 += 15;
		  this.h  -= 21;
		  this.y2 -= 21;
		};
	};
};

function realignTOPBOTTOM(EBalignNodes,EBl,alignVar) {
	for(var i = 0;i<EBl;i++) {
	var knotenneu = EBalignNodes[i][1];
	if(EBalignNodes[i][0]=="ALIGN_top") {
		if(
			 (knotenneu.offsetLeft!=alignVar.x1)||
		 (knotenneu.offsetTop!=alignVar.y1)||
		 (knotenneu.offsetWidth!=alignVar.w)
		 ) {
		knotenneu.style.cssText = knotenneu.style.cssText+"position:absolute; left:"+alignVar.x1+"; top:"+alignVar.y1+"; width:"+alignVar.w+";";
	  };
	  alignVar.h  -= knotenneu.offsetHeight;
	  alignVar.y1 += knotenneu.offsetHeight;
	}
	else if(EBalignNodes[i][0]=="ALIGN_bottom") {
	  if(
	     (knotenneu.offsetLeft!=alignVar.x1)||
		 (knotenneu.offsetTop!=(alignVar.y2-knotenneu.offsetHeight))||
		 (knotenneu.offsetWidth!=alignVar.w)
		 ) {
		knotenneu.style.cssText = knotenneu.style.cssText+"position:absolute; left:"+alignVar.x1+"; top:"+(alignVar.y2-knotenneu.offsetHeight)+"; width:"+alignVar.w+";";
	  };
	  alignVar.h  -= knotenneu.offsetHeight;
	  alignVar.y2 -= knotenneu.offsetHeight;
	};
	if(alignVar.h<0) {
	  alignVar.h = 0;
	};
	if(alignVar.w<0) {
	  alignVar.w = 0;
	};
  };
};
function realignLEFTRIGHT(EBalignNodes,EBl,alignVar) {
  // ... und dann left und right
  for(var i = 0;i<EBl;i++) {
    var  knotenneu = EBalignNodes[i][1];
	if(EBalignNodes[i][0]=="ALIGN_left") {
	  if((knotenneu.offsetLeft!=alignVar.x1)||
		(knotenneu.offsetTop!=alignVar.y1)||
		(knotenneu.offsetHeight!=alignVar.h)) {
		knotenneu.style.cssText = knotenneu.style.cssText+"position:absolute; left:"+alignVar.x1+"; top:"+alignVar.y1+"; height:"+alignVar.h+";";
	  };
	  alignVar.w  -= knotenneu.offsetWidth;
	  alignVar.x1 += knotenneu.offsetWidth;
	}
	else if(EBalignNodes[i][0]=="ALIGN_right") {
	  if((knotenneu.offsetLeft!=(alignVar.x2-knotenneu.offsetWidth))||
		 (knotenneu.offsetTop!=alignVar.y1)||
		 (knotenneu.offsetHeight!=alignVar.h)) {
		knotenneu.style.cssText = knotenneu.style.cssText+"position:absolute; left:"+(alignVar.x2-knotenneu.offsetWidth)+"; top:"+alignVar.y1+"; height:"+alignVar.h+";";
	  };
	  alignVar.w  -= knotenneu.offsetWidth;
	  alignVar.x2 -= knotenneu.offsetWidth;
	};
	if(alignVar.h<0) {
	  alignVar.h = 0;
	};
	if(alignVar.w<0) {
	  alignVar.w = 0;
	};
  };
}
function realignCLIENTPARENT(EBalignNodes,EBl,alignVar) {
  // ... zuletzt dann "client" und die unterelemente bearbeiten
  for(var i = 0;i<EBl;i++) {
    var knotenneu = EBalignNodes[i][1];
	   if(EBalignNodes[i][0]=="ALIGN_parent") {
	     if((knotenneu.offsetLeft!=0)||
		      (knotenneu.offsetTop!=0)||
		      (knotenneu.offsetHeight!=knotenneu.offsetParent.clientHeight)||
		      (knotenneu.offsetWidth!=knotenneu.offsetParent.clientWidth)) {
		     knotenneu.style.cssText = knotenneu.style.cssText+"position:absolute; left:0; top:0; height:"+knotenneu.offsetParent.clientHeight+"; width:"+knotenneu.offsetParent.clientWidth+";";
	     }
	   }
	   else if(EBalignNodes[i][0]=="ALIGN_client") {
	     if((knotenneu.offsetLeft!=alignVar.x1)||
		      (knotenneu.offsetTop!=alignVar.y1)||
		      (knotenneu.offsetHeight!=alignVar.h)||
		      (knotenneu.offsetWidth!=alignVar.w)) {
			   if(knotenneu.tagName&&(knotenneu.tagName.toUpperCase()=="FIELDSET")) {
					 alignVar.h -= 21;
			     alignVar.w -= 34;
			   };
		     knotenneu.style.cssText = knotenneu.style.cssText+"position:absolute; left:"+alignVar.x1+"; top:"+alignVar.y1+"; height:"+alignVar.h+"; width:"+alignVar.w+";";
	     }
	     alignVar.w = 0;
	     alignVar.h = 0;
	   };
  };
}
function reANCHOR(EBalignNodes,EBl,alignVar) {
  // ... Anchor Werte right und bottm berechnen
  for(var i = 0;i<EBl;i++) {
    var knotenneu = EBalignNodes[i][1];
    if(EBalignNodes[i][0]=="ANCHORS") {
      var EBanchors = knotenneu.getAttribute("EBanchors");
      var css="";
      
      if(EBanchors.indexOf("R")>-1) {
        var right =(knotenneu.style.right)?parseInt(knotenneu.style.right.replace("px", "")):0;
        if(EBanchors.indexOf("L")>-1) {
          // hori stretch
          var w=knotenneu.offsetParent.clientWidth-(knotenneu.offsetLeft+right);
          if(w<0) {
            w=0;
          };
          css += "width:"+w+";right:"+right+"px;";
        } else {
          // hori right
          var l=knotenneu.offsetParent.clientWidth-(knotenneu.offsetWidth+right);
          if(l<0) {
            l=0;
          };
          css += "left:"+l+";right:"+right+"px;";
        };
      } else if(EBanchors.indexOf("L")<0) {
        // hori center
        var l=(knotenneu.offsetParent.clientWidth-knotenneu.offsetWidth) / 2;
        if(l<0) {
          l=0;
        };
        css += "left:"+l+";";
      };
      if(EBanchors.indexOf("B")>-1) {
        var bottom=(knotenneu.style.bottom)?parseInt(knotenneu.style.bottom.replace("px","")):0;
        if(EBanchors.indexOf("T")>-1) {
          // verti stretch
          var h=knotenneu.offsetParent.clientHeight-(knotenneu.offsetTop+bottom);
          if(h<0) {
            h=0;
          };
          css += "height:"+h+";bottom:"+bottom+";";
        } else {
          // verti bottom
          var t=knotenneu.offsetParent.clientHeight-(knotenneu.offsetHeight+bottom);
          if(t<0) {
            t=0;
          };
          css += "top:"+t+";bottom:"+bottom+";";
        };
      } else if(EBanchors.indexOf("T")<0) {
        // verti center
        var t=(knotenneu.offsetParent.clientHeight-knotenneu.offsetHeight) / 2;
        if(t<0) {
          t=0;
        };
        css += "top:"+t+";";
      };
      if(css!="") {
        knotenneu.style.cssText=knotenneu.style.cssText+"position:absolute;"+css;
      };
    };
  };
}
function realignNode(knoten) {
  var alignVar = new alignVar_create(knoten);
  var l = knoten.childNodes.length;
  var doTOPBOTTOM=false;
	 var doLEFTRIGHT=false;
	 var doCLIENTPARENT=false;
  var doANCHORS=false;
  if(l>0) {
    var EBalignNodes = new Array();
	   for (var i = 0; i < l; i++) {
	     knotenneu = knoten.childNodes[i];
	     if((knotenneu.nodeType==1)&&(knotenneu.style.visibility!="hidden")) {
	       var EBalign = knotenneu.getAttribute("EBalign");
        var EBanchors = knotenneu.getAttribute("EBanchors");
		     if((!doTOPBOTTOM)&&((EBalign=="ALIGN_top")||(EBalign=="ALIGN_bottom"))) {
		       doTOPBOTTOM=true;
		     };
		     if((!doLEFTRIGHT)&&((EBalign=="ALIGN_left")||(EBalign=="ALIGN_right"))) {
		       doLEFTRIGHT=true;
		     };
        if((!doCLIENTPARENT)&&((EBalign=="ALIGN_parent")||(EBalign=="ALIGN_client")||(knotenneu.getAttribute("class")=="BROWSER")||(knotenneu.getAttribute("class")=="SPLITPANE"))) {
		       doCLIENTPARENT=true;
		     };
        if((EBanchors)&&(EBanchors!="")) {
          doANCHORS=true;
          EBalign="ANCHORS";
        };
	       EBalignNodes.push(new Array(EBalign,knotenneu));
	     };
	   };
		 var EBl = EBalignNodes.length;
	   if(EBl>0) { // Knoten zum ausrichten vorhanden
		   if(doTOPBOTTOM) {
		     realignTOPBOTTOM(EBalignNodes,EBl,alignVar);
		   };
		   if(doLEFTRIGHT) {
		     realignLEFTRIGHT(EBalignNodes,EBl,alignVar);
		   };
		   if(doCLIENTPARENT) {
		     realignCLIENTPARENT(EBalignNodes,EBl,alignVar);
		   };
      if(doANCHORS) {
        reANCHOR(EBalignNodes,EBl,alignVar);
      };
			 for(var i = 0;i<EBl;i++) {
			   var  knotenneu = EBalignNodes[i][1];
				 if(knotenneu.hasChildNodes()&&(knotenneu.getAttribute("EBnopane")!="1")&&(knotenneu.tagName.toUpperCase()!="STYLE")) {
				   realignNode(knotenneu);
				 };
			 };
	   };
  }
};

