
// Psychiatrie: Externe JavaScripts 010104
// Unkommentierte Funktionen haben unter angegebenem URL ein erklaertes Pendant 

// =========================== Basis-Bibliotheken  ===========================

/* 'SysVars 010104' (c) Cybaer - http://coding.binon.net/jscript/sysvars.htm */
function alertSysVars() {
 var SysVar="Browser: "+navigator.userAgent;
 SysVar+="\nDatei: "+window.location.href+"\n";
 SysVar+="\nBrowsereigenschaften (\""+navigator.appVersion+"\"):";
 SysVar+="\n"+((agt_os)?agt_os+"-":"")+"Browser"+((agt_lang)?" ("+agt_lang+")":"");
 SysVar+=" mit "+((is_ie)?"ca. ":"")+agt_width+"*"+agt_height+" (maximal "+agt_maxWidth+"*"+agt_maxHeight+") Punkten";
 SysVar+="\nund einem Nutzbereich von "+agt_docWidth+"*"+agt_docHeight+" Punkten (auf einem";
 SysVar+="\nBildschirm mit "+agt_screenWidth+"*"+agt_screenHeight+" Punkten und "+agt_colors+" Farben).";
 SysVar+="\nDer JavaScript-"+agt_jsVersion+"-kompatible Browser ist "+((navigator.online)?"":"vermutlich ")+((is_connected)?"on":"off")+"line";
 SysVar+="\n"+((agt_speed)?"("+((agt_speed>0)?"mit "+agt_speed+" kbps="+Math.round(agt_speed/8*100)/100+" KByte/s,":"die Verbindungsgeschwindigkeit war nicht zu ermitteln)"):"(die Verbindungsgeschwindigkeit wurde nicht ermittelt)")+((lineType()>0)?" was "+((lineType()>=5)?"einer Standleitung":(lineType()==4)?"einem DSL-Modem":(lineType()==3)?"einem Kabelmodem":(lineType()==2)?"einem ISDN-Modem":(lineType()==1)?"einem Analog-Modem":"")+" entspricht)":"")+".";
 SysVar+="\n";
 SysVar+="\nBrowser-Erkennung:";
 SysVar+="\nInternet Explorer? "+((is_ie)?"Ja":"Nein")+((agt_ieVersion)?" ("+((!is_ie)?"angeblich ":"")+"Version "+agt_ieVersion+")":"");
 SysVar+="\nNavigator\/Mozilla? "+((is_nav)?"Ja":"Nein")+((is_nav || navigator.userAgent.toLowerCase().substring(0,7)=="mozilla")?" ("+((!is_nav)?"angeblich ":"")+"Version "+agt_version+")":"");
 SysVar+="\nOpera? "+((is_op)?"Ja":"Nein")+((is_op)?" (Version "+agt_opVersion+")":"");
 SysVar+="\nSafari? "+((is_saf)?"Ja":"Nein")+((agt_safVersion)?" ("+((!is_saf)?"angeblich ":"")+"Version "+agt_safVersion+")":"");
 SysVar+="\nKonqueror? "+((is_kq)?"Ja":"Nein")+((agt_kqVersion)?" ("+((!is_kq)?"angeblich ":"")+"Version "+agt_kqVersion+")":"");
 SysVar+="\n";
 SysVar+="\nDocument Object Model:";
 SysVar+="\nW3C (strikt: getElementById)? "+((is_w3cDOM)?"Ja":"Nein");
 SysVar+="\nW3C (erweitert: innerHTML)? "+((is_w3cxDOM)?"Ja":"Nein");
 SysVar+="\nMicrosoft (document.all)? "+((is_ieDOM)?"Ja":"Nein");
 SysVar+="\nNetscape (document.layer)?"+((is_nnDOM)?"Ja":"Nein");
 SysVar+="\n";
 SysVar+="\nDokumenteneigenschaften:";
 SysVar+="\nDas Dokument ist "+((!is_frame)?"k":"")+"ein Frame"+((is_frame)?" (von insgesamt "+parent.frames.length+")":" (Frameset "+((do_frameset)?"ggf.":"nicht")+" nachladen)")+" mit "+doc_width+"*"+doc_height+" Punkten.";
 SysVar+=(is_online)?"\nServer: "+doc_Server+" (Levels: "+doc_Subdomain+"|"+doc_Domain+"|"+doc_TLDomain+")":"\nServer: offline ("+doc_localPath+")";
 SysVar+=(is_online && doc_User)?"\nAufrufender User \""+doc_User+"\", "+((doc_Password)?"mit dem Passwort \""+doc_Password+"\".":"ohne Passwort."):"";
 SysVar+="\nPfad: "+doc_Path+"  Name: "+doc_FileName+"  Extension: "+doc_FileExt;
 SysVar+="\nHauptverzeichnis: "+doc_MainDir+"  Dateiverzeichnis: "+doc_FileDir+"  (insgesamt "+doc_PathDeep+" Ebene"+((doc_PathDeep!=1)?"n":"")+")";
 SysVar+="\nAufruf durch Link von Eigen/Fremdserver: "+((is_icall)?"Ja":"Nein")+"/"+((is_xcall)?"Ja":"Nein")+",";
 SysVar+=((document.location.search)?"\nmit Parameter \""+unescape(rc(doc_Search,"+"," "))+"\"":" ohne Parameter")+".";
 if(is_online) { if(!doc_xServer) { if(is_refblocked) {
    SysVar+="\nDer Seitenaufrufer wurde verborgen: \""+document.referrer+"\"";
   } else {
    SysVar+="\nDer Seitenaufrufer entspricht nicht der Norm: \""+document.referrer+"\"";
   } } else {
   SysVar+="\nSeitenaufrufer: "+doc_xServer+" ("+document.referrer+")";
  } }
 alert(SysVar);
}

function ceh() { return true; }
function deFocus(element,flag) { if((do_deFocus || flag) && element.blur) { element.blur(); } }
function rc(text,chars,subs,insensitive) { if(chars) { var i, work, result="", start=0; subs=(subs)?subs:""; if(insensitive) { work=text.toLowerCase(); chars=chars.toLowerCase(); } else { work=text; } i=work.indexOf(chars,start); while(i>=0) { result+=text.substring(start,i)+subs; start=i+chars.length; i=work.indexOf(chars,start); if(!i) { break; } } result+=text.substring(start,text.length); return result; } else { return text; } }
function cc(text,chars) { if(chars) { var ccnext=text.indexOf(chars); var ccfound=0; while(parseInt(ccnext)>=0) { ccfound++; ccnext+=chars.length; ccnext=text.indexOf(chars,ccnext); if(!ccnext) { break; } } return ccfound; } else { return 0; } }
function lineType(hardware,real) { if(agt_speed<=0) { return 0; } if(!hardware) { if(agt_speed<50) { return 1; } else if(agt_speed<120) { return 2; } else if(agt_speed<300) { return 3; } else if(agt_speed<600) { return 4; } else if(agt_speed>=600) { return 5; } } else { hardware=hardware.toLowerCase(); if(hardware=="modem") { return (real)?(agt_speed>0 && agt_speed<50):(agt_speed>0); } else if(hardware=="isdn") { return (real)?(agt_speed>=50 && agt_speed<120):(agt_speed>=50); } else if(hardware=="cable") { return (real)?(agt_speed>=120 && agt_speed<300):(agt_speed>=120); } else if(hardware=="dsl") { return (real)?(agt_speed>=300 && agt_speed<600):(agt_speed>=300); } else if(hardware=="high") { return (agt_speed>=600); } else { return 0; } } }
function winResize() {
 // Alte Groessen sichern, dann System-Variablen aktualisieren
 var doc_widthOld=doc_width, doc_heightOld=doc_height; SysVarsBody()
 // Bei Verwendung von MagicHTML ggf. eigene Routinen aufrufen
 // ( http://coding.binon.net/html/magichtm.htm )
 magicXL();
 // Bei Aenderung der Browsergroesse: Reload (wenn gewuenscht)
 if(do_resize && (doc_width!=doc_widthOld || doc_height!=doc_heightOld)) { location.reload(); }
}

function SysVarsBody() {
 if(top.window.innerWidth) {
  agt_docWidth=top.window.innerWidth;
  agt_docHeight=top.window.innerHeight;
 } else if(top.document.body && top.document.body.clientWidth) {
  agt_docWidth=top.document.body.clientWidth;
  agt_docHeight=top.document.body.clientHeight;
 }
 if(window.innerWidth) {
  doc_width=window.innerWidth;
  doc_height=window.innerHeight;
 } else if(document.body && document.body.clientWidth) {
  doc_width=document.body.clientWidth;
  doc_height=document.body.clientHeight;
 }
 if(window.outerWidth) {
  agt_width=window.outerWidth;
  agt_height=window.outerHeight;
 } else if(top.document.body && top.document.body.clientWidth) {
  // Leider keine exakten Werte beim IE!
  agt_width=Math.min(screen.width,top.document.body.clientWidth+12);
  agt_height=Math.min(screen.height,top.document.body.clientHeight+120);
 }
 window.onresize=winResize;
}

function SysVarSpeedDone() {
 var speedTime=new Date();
 var speedSeconds=(speedTime.getTime()-SysVarSpeedStart)/1000;
 var speedImgSize=51200;
 agt_speed=Math.round((speedImgSize*8/1024)/speedSeconds);
} function SysVarSpeed() {
 agt_speed=-1;
 var speedImg=new Image();
 var speedTime=new Date();
 SysVarSpeedStart=speedTime.getTime();
 speedImg.onload=SysVarSpeedDone;
 speedImg.src=doc_rootPath+"sysvars.gif?"+SysVarSpeedStart;
}

function SysVarsHead(offlineDir,defaultFile) {
 var i, r, agt, ver, sys, pathBegin, cacheBegin
 // Aktuelle Uhrzeit & Datum
 doc_time=new Date();
 // Verwendete Browser-Software & vorhandenes Document Object Model (DOM)
 agt=navigator.userAgent.toLowerCase();
 ver=navigator.appVersion.toLowerCase();
 sys=(navigator.platform)?navigator.platform.toLowerCase():agt;
 agt_version=parseFloat(ver);
 agt_jsVersion=(document.getElementById)?1.5:(doc_time.getFullYear)?1.3:(window.screen)?1.2:(document.images)?1.1:1.0;
 agt_ieVersion=0; agt_opVersion=0; agt_kqVersion=0; agt_safVersion=0
 if(ver.indexOf("msie")>=0) { agt_ieVersion=parseFloat(ver.substring(ver.indexOf("msie")+4,ver.length)); }
 if(ver.indexOf("safari/")>=0) { r=""+parseFloat(ver.substring(ver.indexOf("safari/")+7,ver.length)); i=""+parseInt(r,10)/100; r=(r.indexOf(".")>=0)?r.substring(r.indexOf(".")+1,r.length):""; agt_safVersion=parseFloat(i+((i.indexOf(".")==-1 && r)?".":"")+r); }
 if(ver.indexOf("konqueror/")>=0) { agt_kqVersion=parseFloat(ver.substring(ver.indexOf("konqueror/")+10,ver.length)); }
 if(agt.indexOf("opera")>=0) { agt_opVersion=parseFloat(agt.substring(agt.indexOf("opera")+6,agt.length)); }
 agt_major=parseInt(agt_version);
 is_op=(window.opera || agt.indexOf('opera')>=0)?true:false;
 is_w3cxDOM=(document.getElementsByTagName && document.getElementsByTagName("title").length && document.getElementsByTagName("title")[0] && (document.getElementsByTagName("title")[0].innerHTML || document.getElementsByTagName("title")[0].innerHTML==""))?true:false;
 is_w3cDOM=(document.getElementById && (!is_op || is_w3cxDOM))?true:false;
 is_ieDOM=(document.all && (!is_op || is_w3cxDOM))?true:false;
 is_nnDOM=(document.layers)?true:false;
 is_external=(window.external)?true:false;
 is_kq=(agt.indexOf('konqueror')>=0)?true:false;
 is_saf=(agt.indexOf('safari')>=0)?true:false;
 is_ie=(agt.indexOf('msie')>=0 && (((is_external || agt.indexOf(' aol ')>=0) && document.all) || agt_ieVersion<4))?true:false;
 is_oldie=(is_ie && !is_ieDOM && !is_external);
 is_nav=(!is_ie && !is_op && !is_saf && (agt.indexOf('mozilla')>=0) && (agt.indexOf('spoofer')==-1) && (agt.indexOf('compatible')==-1) && (agt.indexOf('opera')==-1) && (agt.indexOf('webtv')==-1));
 is_nav2=(is_nav && (agt_major==2));
 is_nav3=(is_nav && (agt_major==3));
 is_nav4=(is_nav && (agt_major==4) && is_nnDOM);
 is_oldnav=(is_nav && !is_w3cDOM);
 if(is_nav4) { is_nav=(is_nnDOM)?true:false; }
 // Browser-Daten
 agt_os=((sys.indexOf('mac')>=0)?"Macintosh":(sys.indexOf('unix')>=0 || sys.indexOf('linux')>=0 || sys.indexOf('x11')>=0 || sys.indexOf('x 11')>=0)?"Linux/Unix":(sys.indexOf('os/2')>=0)?"OS/2":(sys.indexOf('win')>=0)?"Windows":"");
 agt_lang=(navigator.language)?navigator.language:(navigator.userLanguage)?navigator.userLanguage:"";
 agt_speed=0; agt_colors=0; agt_maxWidth=0; agt_maxHeight=0; agt_screenWidth=0; agt_screenHeight=0; agt_docWidth=0; agt_docHeight=0; agt_width=0; agt_height=0; is_agtSize=false;
 if(window.screen) {
  agt_colors=(window.screen.colorDepth)?Math.pow(2,window.screen.colorDepth):(window.screen.pixelDepth)?Math.pow(2,window.screen.pixelDepth):0;
  agt_maxWidth=window.screen.availWidth;
  agt_maxHeight=window.screen.availHeight;
  agt_screenWidth=window.screen.width;
  agt_screenHeight=window.screen.height;
 }
 // Spezielle Browser-Eigenschaften
 is_noscript=(!is_nav2);
 is_complete=(!is_oldnav);
 // Spezielle Dokumenten-Eigenschaften
 is_online=(window.location.protocol!="file:");
 is_connected=(navigator.online)?navigator.online:is_online;
 if(!defaultFile) { defaultFile="index.htm"; }
 doc_URI=rc(window.location.href,"\\","/");
 doc_URI=(doc_URI.indexOf("?")>=0)?doc_URI.substring(0,doc_URI.indexOf("?")):doc_URI;
 doc_URI=(doc_URI.indexOf("#")>=0)?doc_URI.substring(0,doc_URI.indexOf("#")):doc_URI;
 doc_URI=(doc_URI.charAt(doc_URI.length-1)=="/")?(doc_URI+defaultFile):doc_URI;
 doc_User=""; doc_Password="";
 if(is_online) {
  doc_localPath="";
  doc_Server=doc_URI.substring(doc_URI.indexOf("://")+3,doc_URI.indexOf("/",doc_URI.indexOf("://")+4));
  i=doc_Server.indexOf("@");
  if(i>=0) {
   doc_User=doc_Server.substring(0,i); doc_Server=doc_Server.substring(i+1,doc_Server.length);
   i=doc_User.indexOf(":"); if(i>=0) { doc_Password=doc_User.substring(i+1,doc_User.length); doc_User=doc_User.substring(0,i) }
  }
  doc_Server=(doc_Server.indexOf(":")>=0)?doc_Server.substring(0,doc_Server.indexOf(":")):doc_Server;
  doc_TLDomain=doc_Server.substring(doc_Server.lastIndexOf(".")+1,doc_Server.length);
  doc_Domain=doc_Server.substring(0,doc_Server.lastIndexOf("."));
  doc_Subdomain=(doc_Domain.indexOf("."))?doc_Domain.substring(0,doc_Domain.lastIndexOf(".")):"";
  doc_Domain=(doc_Domain.indexOf("."))?doc_Domain.substring(doc_Domain.lastIndexOf(".")+1,doc_Domain.length):doc_Domain;
 } else {
  if(!offlineDir) { offlineDir=doc_URI.substring(7,doc_URI.lastIndexOf("/")-1); }
  pathBegin=(doc_URI.indexOf("://")>=0)?7:5;
  doc_localPath=doc_URI.substring(pathBegin,doc_URI.indexOf(offlineDir)+offlineDir.length+1);
  doc_URI=doc_URI.substring(doc_URI.indexOf(offlineDir)+offlineDir.length,doc_URI.length);
  doc_Server=""; doc_TLDomain=""; doc_Domain=""; doc_Subdomain="";
 }
 i=doc_URI.indexOf(":",doc_URI.indexOf("://")+3); // Port-Adresse ausfiltern
 doc_URI=(i>=0)?doc_URI.substring(0,i)+doc_URI.substring(doc_URI.indexOf("/",i),doc_URI.length):doc_URI;
 doc_File=doc_URI.substring(doc_URI.lastIndexOf("/")+1,doc_URI.length);
 doc_FileExt=(doc_File.indexOf(".")>=0)?doc_File.substring(doc_File.lastIndexOf(".")+1,doc_File.length):"";
 doc_FileName=(doc_FileExt)?doc_File.substring(0,doc_File.lastIndexOf(doc_FileExt)-1):doc_File;
 doc_Path=doc_URI.substring(doc_URI.indexOf(doc_Server)+doc_Server.length+1,doc_URI.lastIndexOf("/"));
 doc_Path=(doc_Path=="/")?"":doc_Path;
 doc_MainDir=(doc_Path.indexOf("/")>=0)?doc_Path.substring(0,doc_Path.indexOf("/")):doc_Path;
 doc_FileDir=(doc_Path.indexOf("/")>=0)?doc_Path.substring(doc_Path.lastIndexOf("/")+1,doc_Path.length):doc_Path;
 doc_Path+="/";
 doc_PathDeep=(doc_Path=="/")?0:cc(doc_Path,"/");
 doc_rootPath=""; for(i=1;i<=doc_PathDeep;i++) { doc_rootPath+="../"; }
 doc_fullFile=doc_Path+doc_File;
 doc_Search=(document.location.search)?document.location.search.substring(1,document.location.search.length):"";
 doc_cachedURL="";
 if(doc_Search.indexOf("q=cache:")+1) {
  cacheBegin=doc_Search.indexOf(":",doc_Search.indexOf("q=cache:")+8)+1, cacheEnd=(doc_Search.indexOf("+",cacheBegin)+1)?doc_Search.indexOf("+",cacheBegin):doc_Search.length;
  doc_cachedURL=doc_Search.substring(cacheBegin,cacheEnd);
  if(parseInt(doc_cachedURL.indexOf("://"))<0) { doc_cachedURL="http://"+doc_cachedURL; }
 }
 is_frame=(top.location.href!=self.location.href);
 if(is_online) {
  doc_Referrer=rc(document.referrer,"\\","/");
  doc_xURI=doc_Referrer;
  doc_xServer=doc_xURI.substring(doc_xURI.indexOf("://")+3,doc_xURI.indexOf("/",doc_xURI.indexOf("://")+3))
  doc_xServer=(doc_xServer.indexOf(":")>=0)?doc_xServer.substring(0,doc_xServer.indexOf(":")):doc_xServer;
  doc_xTLDomain=doc_xServer.substring(doc_xServer.lastIndexOf(".")+1,doc_xServer.length)
  doc_xDomain=doc_xServer.substring(0,doc_xServer.lastIndexOf("."))
  doc_xSubdomain=(doc_xDomain.indexOf("."))?doc_xDomain.substring(0,doc_xDomain.lastIndexOf(".")):"";
  doc_xDomain=(doc_xDomain.indexOf("."))?doc_xDomain.substring(doc_xDomain.lastIndexOf(".")+1,doc_xDomain.length):doc_xDomain;
  doc_xURI=doc_xURI.substring(doc_xURI.lastIndexOf("/")+1,doc_xURI.length);
  // Geblockter Referrer-URL
  is_refblocked=(is_frame)?(doc_Server!=doc_xServer && document.referrer==parent.document.referrer):false;
  // Ungueltiger Referrer-URL
  if(is_refblocked || (doc_Referrer.substring(0,7)!="http://" && doc_Referrer.substring(0,8)!="https://" && doc_Referrer.substring(0,6)!="ftp://" && doc_Referrer.substring(0,7)!="news://")) {
   doc_Referrer=""; doc_xURI=""; doc_xServer=""; doc_xTLDomain=""; doc_xDomain=""; doc_xSubdomain="";
  }
 } else {
  is_refblocked=false; doc_Referrer=""; doc_xURI=""; doc_xServer=""; doc_xTLDomain=""; doc_xDomain=""; doc_xSubdomain="";
 }
 doc_temp=""; doc_width=0; doc_height=0;
 is_cached=(doc_cachedURL);
 is_xcall=(doc_xServer!="" && doc_Server!=doc_xServer);
 is_icall=(doc_Server==doc_xServer);
 // Spezielle Dokumenten-Steuerung
 do_ceh=is_online;
 do_resize=false;
 do_deFocus=true;
 do_frameset=is_xcall;
 do_deframe=true;
 do_uncache=false;
 do_blending=false;
 do_opt=false;
 // Script-Fehler abfangen?
 if(do_ceh) { window.onerror=ceh; }
}

// --------------------------------------------------------------------------

/* 'EscapeAll 111003' (c) by cybaer@binon.net
   -----------------
 Inhalt    : Wandelt alle Zeichen ausser Buchstaben & Ziffern in Hex-Werte
 Aufruf    : escapeAll(string)
 Parameter : string (zu codierender string)
 Sprache   : JavaScript 1.0
 Quelle    : http://coding.binon.net/ (cybaer@binon.net)
             Die kostenlose Nutzung der Quelltexte in eigenen Projekten ist
             bei nicht-kommerziellen Projekten (und deren unentgeltlicher
             Herstellung) bei Nennung der Quelle ausdruecklich gestattet.
 InlineFunc: -
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : Codierte Zeichenkette
 Anmerkung : -
 Beispiel  : escapeAll("Kleiner_Test.") ergibt "Kleiner%5FTest%2E"
*/

function escapeAll(string) {
 var i, c, r, temp="";
 string=escape(string);
 c="*"; r="%2A"; i=string.indexOf(c); while(i>=0) { temp+=string.substring(0,i)+r; string=string.substring(i+1,string.length); i=string.indexOf(c); } string=temp+string.substring(0,string.length); temp="";
 c="+"; r="%2B"; i=string.indexOf(c); while(i>=0) { temp+=string.substring(0,i)+r; string=string.substring(i+1,string.length); i=string.indexOf(c); } string=temp+string.substring(0,string.length); temp="";
 c="-"; r="%2D"; i=string.indexOf(c); while(i>=0) { temp+=string.substring(0,i)+r; string=string.substring(i+1,string.length); i=string.indexOf(c); } string=temp+string.substring(0,string.length); temp="";
 c="."; r="%2E"; i=string.indexOf(c); while(i>=0) { temp+=string.substring(0,i)+r; string=string.substring(i+1,string.length); i=string.indexOf(c); } string=temp+string.substring(0,string.length); temp="";
 c="/"; r="%2F"; i=string.indexOf(c); while(i>=0) { temp+=string.substring(0,i)+r; string=string.substring(i+1,string.length); i=string.indexOf(c); } string=temp+string.substring(0,string.length); temp="";
 c="@"; r="%40"; i=string.indexOf(c); while(i>=0) { temp+=string.substring(0,i)+r; string=string.substring(i+1,string.length); i=string.indexOf(c); } string=temp+string.substring(0,string.length); temp="";
 c="_"; r="%5F"; i=string.indexOf(c); while(i>=0) { temp+=string.substring(0,i)+r; string=string.substring(i+1,string.length); i=string.indexOf(c); } string=temp+string.substring(0,string.length); temp="";
 return string;
}

// ---------------------------- Zahlen-Bibliothek ---------------------------

// 'Number-Library-Auszug 131203' (c) Cybaer - http://coding.binon.net/jscript/numlib.htm

function getFrac(num) { num=""+num; return parseFloat("0."+num.substring(num.length-((num.indexOf(".")>=0)?num.length-num.indexOf(".")-1:0),num.length)); }
function dezInt(num,size,prefix) { prefix=(prefix)?prefix:"0"; var minus=(num<0)?"-":"", result=(prefix=="0")?minus:""; num=Math.abs(parseInt(num,10)); size-=(""+num).length; for(var i=1;i<=size;i++) { result+=""+prefix; } result+=((prefix!="0")?minus:"")+num; return result; }
function dezFrac(num,size,postfix) { postfix=(postfix)?postfix:"0"; var i, result=getFrac(Math.abs(num)); result=(result)?""+result:""; if(result) { result=result.substring(2,result.length); } size-=result.length; for(i=1;i<=size;i++) { result+=postfix; } return result; }
function dez(num,presize,postsize,prefix,postfix,fracSign) { fracSign=(fracSign)?fracSign:"."; var result=dezInt(num,presize,prefix)+fracSign+dezFrac(num,postsize,postfix); result=(result.substring(result.length-1,result.length)==fracSign)?result.substring(0,result.length-1):result; return result; }
function rnd(max) { if(Math.random) { return Math.ceil(Math.max(1,max)*Math.random()); } else { return max; } }

// ----------------------------- GfA-Bibliothek -----------------------------

// 'Lib-GfA2JS-Auszug 191203' (c) Cybaer - http://coding.binon.net/jscript/jsgfalib.htm
gfaInteger=4294967295; gfaIntegerSigned=2147483647;
function wrongJS(gfa,version) { alert("Dieser Browser ist leider zu alt!\n"+gfa+" braucht mindestens JavaScript "+version+"."); }
function parseGfA(data,isInt) { var result; data=""+data; if(data=="true") { result=-1; } else if(data!="false") { result=0; data=data.toLowerCase(); if(data.substring(0,1)=="&") { if(data.substring(0,2)=="&h") { result=parseInt(data.substring(2,data.length),16); result=(result<0)?0:result; } else if(data.substring(0,2)=="&x") { result=parseInt(data.substring(2,data.length),2); result=(result<0)?0:result; } else if(data.substring(0,2)=="&o") { result=parseInt(data.substring(2,data.length),8); result=(result<0)?0:result; } else { result=parseInt(data.substring(1,data.length),16); result=(result<0)?0:result; } } else if(data.substring(0,1)=="$") { result=parseInt(data.substring(1,data.length),16); result=(result<0)?0:result; } else if(data.substring(0,1)=="%") { result=parseInt(data.substring(1,data.length),2); result=(result<0)?0:result; } else { if(data.indexOf("e+")>1) { data=""+Math.pow(10,parseInt(data.substring(data.indexOf("e+")+2,data.length)))*parseFloat(data); } else if(data.indexOf("e-")>1) { data=""+Math.pow(10,parseInt(data.substring(data.indexOf("e-")+1,data.length)))*parseFloat(data); } data=(data.substring(0,1)=="-")?data:"0"+data; result=(isInt)?parseInt(data.substring(0,data.length),10):parseFloat(data.substring(0,data.length)); } } return (result>=0 || result<0)?result:0; }
function INSTR(text,string,pos) { if(string) { pos=(!pos)?1:parseGfA(pos); return text.indexOf(string,Math.max(0,pos-1))+1; } else { return 0; } }
function LEFT$(text,num) { num=(num)?parseGfA(num):1; return text.substring(0,num); }
function LEN(text) { return text.length; }
function MID$(text,pos,num) { pos=parseGfA(pos)-1; if(typeof(num)=="undefined") { num=text.length-pos; } else { num=parseGfA(num); } return text.substring(pos,pos+num); } // JS 1.1
function RIGHT$(text,num) { num=(num)?parseGfA(num):1; return text.substring(text.length-num,text.length); }
function STRING$(size,data,isNumber) { size=parseGfA(size); var string="",result=""; if(isNumber) { if(String.fromCharCode) { string=String.fromCharCode(parseGfA(data)); } else { wrongJS("STRING$(size,num)",1.2); } } else { string=data; } for(var i=1;i<=size;i++) { result+=string; } return result; } // JS 1.2
function PRED(data,isString) { if(!isString) { return parseGfA(data,true)-1; } else if(String.fromCharCode) { return String.fromCharCode(data.charCodeAt(0)-1); } else { wrongJS("PRED(string$)",1.2); return ""; } }
function SUCC(data,isString) { if(!isString) { return parseGfA(data,true)+1; } else if(String.fromCharCode) { return String.fromCharCode(data.charCodeAt(0)+1); } else { wrongJS("SUCC(string$)",1.2); return ""; } }
function ADD(num1,num2) { return parseGfA(num1,true)+parseGfA(num2,true); }
function SUB(num1,num2) { return parseGfA(num1,true)-parseGfA(num2,true); }
function ABS(num) { return Math.abs(parseGfA(num)); }
function MAX(data) { var i=MAX.arguments.length, result; result=parseGfA(data); while(i>1) { i--; result=Math.max(result,parseGfA(MAX.arguments[i])); } return result; } // Momentan keine Zeichenketten.

// Fields-Library-Auszug (c) Cybaer - http://coding.binon.net/gfabas/fields.htm
function getfield$(field$,nr,div$) { var entry$,v,w,nrOld; if(!div$) {  div$="|"; } field$=field$+div$; nrOld=nr; w=0; while(true) { v=SUCC(w); w=INSTR(field$,div$,v); if(w==0) { entry$=MID$(field$,v,MAX(SUB(LEN(field$),PRED(v)),0)); } else { nr--; if(nr<=0) { entry$=MID$(field$,v,MAX(SUB(w,v),0)); } } if(w==0) { break; } if(nr<=0) { break; } } return entry$; }
function cfield(field$,div$) { var count,w,l; if(!div$) { div$="|"; } l=LEN(field$); count=ABS(l>0); while(true) { w=INSTR(field$,div$,SUCC(w)); if(w==0) { break; } count++; if(w==l) { break; } } return count; }
function infield(field$,string$,nr,div$,part) { var q,adr,lfield$,rfield$,lfield=0,result; if(!div$) { div$="|"; } if(nr<=1) { adr=1; lfield$=""; rfield$=field$; } else { adr=adrfield(field$,nr,div$); lfield$=LEFT$(field$,PRED(adr)); rfield$=MID$(field$,adr); } if(lfield$!="") { lfield=PRED(cfield(lfield$,div$)); } if(part) { q=INSTR(rfield$,string$); } else { q=INSTR(div$+rfield$+div$,div$+string$+div$); } if(q==0) { result=0; } else { result=nrfield(rfield$,q,div$)+lfield; } return result; }
function setfield$(field$,nr,string$,div$) { var count,adr,len,lfield$,rfield$; if(!div$) { div$="|"; } count=cfield(field$,div$); if(nr<=count) { adr=adrfield(field$,nr,div$); lfield$=LEFT$(field$,PRED(adr)); rfield$=MID$(field$,ADD(adr,LEN(getfield$(field$,nr,div$)))); field$=lfield$+string$+rfield$; } else { field$=addfield$(field$,nr,string$,div$); } return field$; }
function addfield$(field$,nr,string$,div$) { var count,adr,lfield$,rfield$; if(!div$) { div$="|"; } count=cfield(field$,div$); if(nr<=count) { if(nr>0) { adr=adrfield(field$,nr,div$); lfield$=LEFT$(field$,PRED(adr)); rfield$=div$+MID$(field$,adr); } else { lfield$=""; rfield$=""; } } else { if(count>0) { lfield$=field$+STRING$(SUB(nr,count),div$); rfield$=""; } else { lfield$=STRING$(PRED(nr),div$); rfield$=""; } } field$=lfield$+string$+rfield$; return field$; }
function adrfield(field$,nr,div$) { var v,w,nrOld; if(!div$) { div$="|"; } field$=field$+div$; nrOld=nr; w=0; while(true) { v=SUCC(w); w=INSTR(field$,div$,v); if(w==0) { v=0; } else { nr--; } if(w==0) { break; } if(nr<=0) { break; } } return v; }
function nrfield(field$,adr,div$) { var nr; if(!div$) { div$="|"; } nr=cfield(LEFT$(field$,adr),div$); if(MID$(field$,adr,1)==div$) { nr--; } return nr; }
function iblock$(field$,nr,ldiv$,rdiv$,border) { var left,right,entry$; left=cfield(field$,ldiv$); right=cfield(field$,rdiv$); if(left>0 && right>0) { entry$=getfield$(getfield$(field$,SUCC(nr),ldiv$),1,rdiv$); if(border && entry$!="") { entry$=ldiv$+getfield$(getfield$(field$,SUCC(nr),ldiv$),1,rdiv$)+rdiv$; } } return entry$; }

// ========================== System-Bibliotheken ===========================

/* 'ImgSwitch+ 100903' (c) by cybaer@binon.net
   -------------------
 Inhalt    : Laedt fuer beliebig viele IMGs 1-2 Grafiken und/oder ersetzt Statuszeile des Browsers
 Aufruf    : S(Name1,Source1,Name2,Source2,Text,TopDown,All)
 Parameter : Name1 (Name des/der ersten zu ersetzenden IMG-Tags)
             Source1 (Dateiname der ersten Ersatzgrafik)
             Name2 (Name des/der zweiten zu ersetzenden IMG-Tags)
             Source2 (Dateiname der zweiten Ersatzgrafik)
             Text (gewuenschter Text der Statuszeile; " " wenn Statuszeile geloescht werden soll)
             TopDown (Reihenfolge der Ersetzungen: True  -> von oben nach unten
                                                   False -> von unten nach oben)
             All (Anzahl der Ersetzungen: True  -> alle zutreffenden Grafiken werden ersetzt
                                          False -> nur die erste zutreffende Grafik wird ersetzt)
 Sprache   : JavaScript 1.0 (partiell) & JavaScript 1.1 (gesichert)
 Quelle    : http://coding.binon.net/ (cybaer@binon.net)
             Die kostenlose Nutzung der Quelltexte in eigenen Projekten ist
             bei nicht-kommerziellen Projekten (und deren unentgeltlicher
             Herstellung) bei Nennung der Quelle ausdruecklich gestattet.
 InlineFunc: -
 Konstante : -
 Variable  : oldSource1/oldSource2 (Jeweils letzte ersetzte Grafik)
 SystemVar : -
 ExternVar : -
 Rueckgabe : True
 Anmerkung : oldSource1 & oldSource2 beinhalten die jeweils zuletzt ersetzte Grafik. Diese Variablen
             werden anstelle der Parameter Source1 & Source2 verwendet, falls diese leer sind.
 Beispiele :
  S("Img","i2.gif","","","",0,0) ersetzt die Grafik mit Namen "Img" durch "i2.gif"
   Gibt es mehrere Grafiken mit Namen "Img", so obliegt es dem Browser, welche er ersetzt (schnelle Variante)
  S("Img*","i2.gif","","","",0,0) ersetzt die erste Grafik (unten beginnend), deren Namen mit "Img" anfaengt
  S("Img*","i2.gif","","","",0,-1) ersetzt alle Grafiken (unten beginnend), deren Namen mit "Img" anfaengt
  S("Img","i2.gif","","","",0,-1) ersetzt alle Grafiken (unten beginnend) mit Namen "Img"
  S("Img","i2.gif","","","",-1,-1) ersetzt alle Grafiken (oben beginnend) mit Namen "Img"
  S("Img","i2.gif","Txt","t2.gif","",0,0) ersetzt "Img" durch "i2.gif" und "Txt" durch "t2.gif"
  S("Img","","Txt","","",0,0) ersetzt "Img" und "Txt" durch die Grafiken vor der letzten Auswechslung
  S("","","","","Hinweis",0,0) gibt in der Statuszeile den Text "Hinweis" aus
  S("","","",""," ",0,0) loescht den Text in der Statuszeile
*/

function S(Name1,Source1,Name2,Source2,Text,TopDown,All) {
 var i, SNameBeginn;
 if(Text!="") { window.status=Text; }
 if(document.images) { if(document.images[0]) {
   if(Name1!="" && Source1=="" && oldSource1!="") { Source1=oldSource1; }
   if(Name1!="" && Source1!="") {
    SNameBeginn=Name1.substring(0,Name1.indexOf("*"));
    if(SNameBeginn=="" && All==false) {
     oldSource1=document.images[Name1].src;
     document.images[Name1].src=Source1;
    } else {
     if(TopDown) {
      for(i=0;i<document.images.length;i++) {
       if(document.images[i].name==Name1 || (SNameBeginn!="" && document.images[i].name.substring(0,SNameBeginn.length)==SNameBeginn)) {
        oldSource1=document.images[i].src;
        document.images[i].src=Source1;
        if(All==false) { break; }
       }
      }
     } else {
      for(i=document.images.length-1;i>=0;i--) {
       if(document.images[i].name==Name1 || (SNameBeginn!="" && document.images[i].name.substring(0,SNameBeginn.length)==SNameBeginn)) {
        oldSource1=document.images[i].src;
        document.images[i].src=Source1;
        if(All==false) { break; }
       }
      }
     }
    }
   }
   if(Name2!="" && Source2=="" && oldSource2!="") { Source2=oldSource2; }
   if(Name2!="" && Source2!="") {
    SNameBeginn=Name2.substring(0,Name2.indexOf("*"));
    if(SNameBeginn=="" && All==false) {
     oldSource2=document.images[Name2].src;
     document.images[Name2].src=Source2;
    } else {
     if(TopDown) {
      for(i=0;i<document.images.length;i++) {
       if(document.images[i].name==Name2 || (SNameBeginn!="" && document.images[i].name.substring(0,SNameBeginn.length)==SNameBeginn)) {
        oldSource2=document.images[i].src;
        document.images[i].src=Source2;
        if(All==false) { break; }
       }
      }
     } else {
      for(i=document.images.length-1;i>=0;i--) {
       if(document.images[i].name==Name2) {
        if(document.images[i].name==Name2 || (SNameBeginn!="" && document.images[i].name.substring(0,SNameBeginn.length)==SNameBeginn)) {
         oldSource2=document.images[i].src;
         document.images[i].src=Source2;
         if(All==false) { break; }
        }
       }
      }
     }
    }
   }
  }
 }
 return true;
}

// --------------------------------------------------------------------------

/* 'Page BlendOver 120703' (c) Cybaer - http://coding.binon.net/jscript/blending.htm */
function BlendOver(duration,effect) {
 if(duration>0) {
  if(effect.length) {
   effect=rc(effect," ",-1);
   effect=rc(effect,"::",12);
   effect=rc(effect,"[]<-",0);
   effect=rc(effect,"[]->",1);
   effect=rc(effect,"O<-",2);
   effect=rc(effect,"O->",3);
   effect=rc(effect,"||->",8);
   effect=rc(effect,"=_",9);
   effect=rc(effect,"#->",10);
   effect=rc(effect,"#_",11);
   effect=rc(effect,"->|<-",13);
   effect=rc(effect,"<-|->",14);
   effect=rc(effect,"|->",6);
   effect=rc(effect,"|<-",7);
   effect=rc(effect,"\-_",17);
   effect=rc(effect,"/_-",18);
   effect=rc(effect,"/-_",19);
   effect=rc(effect,"\_-",20);
   effect=rc(effect,"_-",4);
   effect=rc(effect,"-_",5);
   effect=rc(effect,">-",15);
   effect=rc(effect,"-<",16);
   effect=rc(effect,"==",21);
   effect=rc(effect,"||||",22);
   effect=rc(effect,"*",23);
   if(effect.indexOf(",")+1) { var effects=effect.split(","); effect=effects[rnd(effects.length)-1]; }
  }
  if(effect==23) { effect=rnd(24)-2; }
  if(effect==-1) {
   document.writeln('<meta http-equiv="Page-Exit" content="BlendTrans(Duration='+(duration/1000)+')">');
  } else {
   document.writeln('<meta http-equiv="Page-Exit" content="RevealTrans(Duration='+(duration/1000)+',Transition='+effect+')">');
  }
 }
}

// --------------------------------------------------------------------------

/* 'Ticker4All 041103' (c) Cybaer - http://coding.binon.net/dhtml/ticker.htm */
function Ticker(Name,Text,LCursor,RCursor,Size,Filler,FillerCheck,Chardelay,Linedelay,WhiteSpace,Status,ImgMask,Capitals,Width,Height) {
 var infiniteLineend=" +++ ", finiteLineend=" ...", finiteLinestart="... ", tickerSpace=" ", htmlText="", formText, i;
 tickerName=Name; tickerLCursor=LCursor; tickerRCursor=RCursor; tickerSize=Size; tickerChardelay=Chardelay; tickerLinedelay=Linedelay;
 tickerElement=""; tickerWspace=(String.fromCharCode)?String.fromCharCode(160):"";

 is_w3cTicker=(document.getElementById && document.getElementById(tickerName) && !window.opera)?true:false;
 is_w3cxTicker=(document.getElementById && document.getElementById(tickerName) && (document.getElementById(tickerName).innerHTML || document.getElementById(tickerName).innerHTML==""))?true:false;
 is_formTicker=(document.forms[tickerName] && document.forms[tickerName].elements[0] && (document.forms[tickerName].elements[0].type=="text"));
 formText=(is_formTicker)?document.forms[tickerName].elements[0].value:"";
 is_domTicker=(is_w3cxTicker || is_w3cTicker);
 is_formTicker=(!is_domTicker && is_formTicker && (Text || formText))?true:false;
 is_statusTicker=(!is_domTicker && !is_formTicker && Status && Text)?true:false;
 is_imageTicker=(document.images && ImgMask && ImgMask.indexOf(".")+1 && Size>0 && " ".charCodeAt && (Text || is_domTicker))?true:false;
 is_infiniteTicker=((is_formTicker || is_statusTicker) && !is_imageTicker && Size>0)

 if(is_w3cTicker || is_w3cxTicker) { tickerElement=eval(document.getElementById(tickerName)); }
 else if(is_formTicker) { tickerElement=eval(document.forms[tickerName].elements[0]); }

 if(tickerElement) {
  if(is_w3cxTicker) {
   htmlText=tickerElement.innerHTML; tickerElement.innerHTML="";
   htmlText=replaceHtmlTags(htmlText,"!--","|",true);
   htmlText=replaceHtmlTags(htmlText,"BR","|",true);
   htmlText=replaceHtmlTags(htmlText,"HR","|",true);
  }
  else if(is_w3cTicker) {
   if(tickerElement.hasChildNodes()) { var Node=tickerElement.firstChild;
    while(Node!=null) {
     if(Node.nodeName=="#text") { Value=reduceHtmlSpaces(Node.nodeValue); htmlText+=Value; Node.nodeValue=""; }
     else if(Node.nodeName=="#comment" || Node.nodeName=="BR" || Node.nodeName=="HR") { htmlText+="|"; }
    Node=Node.nextSibling;
    }
    for(i=(tickerElement.firstChild.nodeType==3)?1:0;i<tickerElement.childNodes.length;i++) { tickerElement.removeChild(tickerElement.childNodes[i]); }
   }
   if(!tickerElement.hasChildNodes()) { tickerElement.appendChild(document.createTextNode("")); }
  }
  else if(is_formTicker) { htmlText=formText; tickerElement.value=""; }
  if(!Text) { Text=(formText)?formText:htmlText; }
 }

 Text=trim(reduceHtmlSpaces(replaceHtmlTags(Text,"","",true))); tickerLines=new Array(); i=1;
 while(Text.indexOf("| ")>=0) { Text=rc(Text,"| ","|"); }
 while(Text.indexOf(" |")>=0) { Text=rc(Text," |","|"); }
 while(Text.indexOf("||")>=0) { Text=rc(Text,"||","|"); }
 if(Text.charAt(0)=="|") { Text=Text.substr(1,Text.length-1); }
 if(Text.charAt(Text.length-1)=="|") { Text=Text.substr(0,Text.length-1); }
 while(Text.indexOf("|")>=0) { tickerLines[i]=Text.substring(0,Text.indexOf("|")); Text=Text.substring(tickerLines[i].length+1,Text.length); i++; } if(Text) { tickerLines[i]=Text; Text=""; }

 if(!tickerLines.length) { return false; }
 else {
  if(Size>0) {  // Konstanter Zeichenbereich (Endlosticker)
   if(is_infiniteTicker) {
    var tickerTrailingSpaces=infiniteLineend; var tickerEndSpaces=""; }
   else {
    var tickerTrailingSpaces=""; for(i=Size;i>1;i--) { tickerTrailingSpaces+=tickerSpace; }
    tickerTrailingSpaces+=tickerSpace; var tickerEndSpaces=tickerTrailingSpaces;
   }
   tickerLines[0]=tickerTrailingSpaces; i=1;
   while(i<tickerLines.length-1) {
    tickerLines[0]+=tickerLines[i]+tickerSpace;
    if(Filler && FillerCheck.indexOf(tickerLines[i].charAt(tickerLines[i].length-1))>=0) { tickerLines[0]+=tickerTrailingSpaces; }
    i++;
   }
   tickerLines[0]+=tickerLines[i]+tickerEndSpaces;
   Size=Math.min(Size,tickerLines[0].length); tickerSize=Size;
   if(is_infiniteTicker) { tickerLines[0]+=tickerLines[0].substr(0,tickerSize); }
   if(is_infiniteTicker) { tickerLines[0]=reduceHtmlSpaces(tickerLines[0]); }
   if(WhiteSpace && String.fromCharCode) { tickerLines[0]=rc(tickerLines[0]," ",String.fromCharCode(160)); }
  }
  else {
   if(Filler && tickerLines.length>2) {
    for(i=1;i<tickerLines.length-1;i++) { if(tickerLines[i] && FillerCheck.indexOf(tickerLines[i].charAt(tickerLines[i].length-1))<0) { tickerLines[i]+=finiteLineend; tickerLines[i+1]=finiteLinestart+tickerLines[i+1]; } }
    if(WhiteSpace && String.fromCharCode) { for(i=1;i<tickerLines.length;i++) { tickerLines[i]=rc(tickerLines[i]," ",String.fromCharCode(160)); } }
   }
  }

  if(is_imageTicker) {
   if(Capitals) { for(i=0;i<tickerLines.length;i++) { tickerLines[i]=tickerLines[i].toUpperCase(); } }
   cacheTicker(ImgMask,Capitals);
   Width=(Width)?'width="'+Width+'" ':''; Height=(Height)?'height="'+Height+'" ':'';
   tickerSpace=tickerImg+32+tickerExt; nr=-1; document.write('<span id="'+Name+'Img">');
   for(i=0;i<LCursor.length;i++) { nr++; document.write('<img src="'+tickerSpace+'" name="'+Name+'Img'+nr+'" '+Width+Height+' alt="" border="0">'); }
   for(i=0;i<Size;i++) { nr++; document.write('<img src="'+tickerSpace+'" name="'+Name+'Img'+nr+'" '+Width+Height+' alt="" border="0">'); }
   for(i=0;i<RCursor.length;i++) { nr++; document.write('<img src="'+tickerSpace+'" name="'+Name+'Img'+nr+'" '+Width+Height+' alt="" border="0">'); }
   document.write('<\/span>');
  }

  return doTicker((Size>0)?0:1,0,1);
 }
}

do_optShow=false; function crunchPeanut(peanutJar) { return rc(escapeAll(peanutJar),"%","_"); } function decrunchPeanut(peanutJar) { return unescape(rc(peanutJar,"_","%")); } function replaceDivs(data) { return rc(rc(rc(data,"{","["),"}","]"),"|","/"); } function clusterPeanut(data) { return "{"+data+"}"; } function scriptOpt(show) { var i, q, id=""; optID="WebOptimizer0103"; optNrDig=4; optActual=new Date(); optImg=new Image(); optImgFile=((is_cached)?"/":doc_rootPath)+"img/optimize.gif"; var peanutJar=decrunchPeanut(top.window.name); if(peanutJar.indexOf(optID)==-1) { optHead="WOHead||-"; optHead=setfield$(optHead,4,dezInt(agt_screenWidth,4)+"x"+dezInt(agt_screenHeight,4)); q=dez(agt_jsVersion,1,1); id+=q; optHead=setfield$(optHead,5,q); q="WoW"+((window.outerWidth)?1:0)+"WeX"+Math.abs(is_external)+"NLa"+((navigator.language)?1:0)+"NuL"+((navigator.userLanguage)?1:0)+"NOn"+((navigator.online)?1:0)+"NNe"+((navigator.netscape)?1:0)+"NOp"+((navigator.opera)?1:0)+"DAl"+Math.abs(is_ieDOM)+"DLa"+Math.abs(is_nnDOM)+"DW3"+(Math.abs(is_w3cDOM)+Math.abs(is_w3cDOM))+")"; id+=q; optHead=setfield$(optHead,6,q); q=((is_ie)?"IE "+dez(agt_ieVersion,1,2):(is_nav)?"Nav "+dez(agt_version,1,2):(is_op)?"OP "+dez(agt_opVersion,1,2):(is_kq)?"KQ "+dez(agt_kqVersion,1,2):(is_saf)?"Saf "+dez(agt_safVersion,1,2):"? ")+" "+((agt_os)?agt_os:"?")+" ("+((agt_lang)?agt_lang:"?")+")"; id+=q; optHead=setfield$(optHead,7,q); q=navigator.appName+", "+navigator.appVersion+", "+((navigator.platform)?navigator.platform:"?"); id+=q; optHead=setfield$(optHead,8,replaceDivs(q)); q=navigator.userAgent; id+=q; optHead=setfield$(optHead,9,replaceDivs(q)); optHead=setfield$(optHead,10,"-"); optHead=setfield$(optHead,11,doc_Server); optHead=setfield$(optHead,12,top.window.doc_Referrer); q=id; if(String.fromCharCode) { id=0; for(i=0;i<q.length;i++) { id+=q.charCodeAt(i); } id=Math.floor(doc_time.getTime()/7200000)*720*10000*1000+id+(agt_screenWidth*agt_screenHeight)+(agt_maxWidth*agt_maxHeight); } else { id=Math.floor(doc_time.getTime()/36000000)*360*10000*1000; } optHead=setfield$(optHead,2,dezInt(id,16)); q=doc_time.getYear(); q+=(q<999)?1900:0; q+="/"+dezInt((doc_time.getMonth()+1),2)+"/"+dezInt(doc_time.getDate(),2)+" "+dezInt(doc_time.getHours(),2)+":"+dezInt(doc_time.getMinutes(),2)+"'"+dezInt(doc_time.getSeconds(),2)+"''"+dezInt(doc_time.getMilliseconds(),3)+" ("+doc_time.getTime()+")"; optHead=setfield$(optHead,13,q); optHead=setfield$(optHead,14,"-"); optHead=setfield$(optHead,15,(agt_speed<0)?-dezInt(agt_speed,5):dezInt(agt_speed,6)); optBody="WOBody|0000|00000"; optVal=clusterPeanut(optID)+clusterPeanut(optHead)+clusterPeanut(optBody); } else { optVal=peanutJar; WOStartCluster=infield(optVal,optID,1,"}",true); optHead=iblock$(optVal,WOStartCluster+1,"{","}"); agt_speed=parseInt(getfield$(optHead,15),10); optBody=iblock$(optVal,WOStartCluster+2,"{","}"); } if(optHead.substring(0,6)=="WOHead") { optTime=optActual.getTime(); optNr=parseInt(getfield$(optBody,2),10)+1; optBody=setfield$(optBody,2,dezInt(optNr,optNrDig)); optBody=setfield$(optBody,4,doc_Server+((doc_fullFile.charAt(0)=="/")?"":"/")+doc_fullFile); if(doc_MainDir=="Augen-Blicke") { optBody=setfield$(optBody,5,top.document.title); optBody=setfield$(optBody,6,((top.document.doc_Referrer)?top.document.doc_Referrer:doc_Referrer)); } else { optBody=setfield$(optBody,5,document.title); optBody=setfield$(optBody,6,doc_Referrer); } optBody=setfield$(optBody,6,doc_Referrer); q=top.window.doc_User+((top.window.doc_Password)?":":"")+top.window.doc_Password; optBody=setfield$(optBody,7,replaceDivs(q)); q=optActual.getYear(); q+=(q<999)?1900:0; q+="/"+dezInt((optActual.getMonth()+1),2)+"/"+dezInt(optActual.getDate(),2)+" "+dezInt(optActual.getHours(),2)+":"+dezInt(optActual.getMinutes(),2)+"'"+dezInt(optActual.getSeconds(),2)+"''"+dezInt(optActual.getMilliseconds(),3)+" ("+optTime+")"; optBody=setfield$(optBody,8,q); optBody=setfield$(optBody,9,"-"); optBody=setfield$(optBody,10,dezInt(doc_width,4)+"x"+dezInt(doc_height,4)); optBody=setfield$(optBody,11,dezInt(agt_docWidth,4)+"x"+dezInt(agt_docHeight,4)); optBody=setfield$(optBody,12,dezInt(agt_width,4)+"x"+dezInt(agt_height,4)); optVal=clusterPeanut(optID)+clusterPeanut(optHead)+clusterPeanut(optBody); optEVal=crunchPeanut(optVal); top.window.name=optEVal; optImg.src=optImgFile+"?"+optEVal; if(show) { alert("Head: "+optHead+"\nBody: "+optBody); } } } function scriptOptX() { optActual=new Date(); optHead=setfield$(optHead,15,(agt_speed<0)?-dezInt(agt_speed,5):dezInt(agt_speed,6)); optTime=dezInt((optActual.getTime()-doc_time.getTime())/1000,5); optBody=setfield$(optBody,3,optTime); optVal=clusterPeanut(optID)+clusterPeanut(optHead)+clusterPeanut(optBody); optEVal=crunchPeanut(optVal); top.window.name=optEVal; } function doOpt() {}

function doTicker(line,pos,dir) {
 var text, last, delay;

 if(line==0) {
  text=((is_imageTicker)?"":tickerWspace)+tickerLCursor+tickerLines[line].substring(pos,pos+tickerSize)+tickerRCursor+((is_imageTicker)?"":tickerWspace);
  last=tickerLines[line].length-tickerSize; }
 else { text=((is_imageTicker)?"":tickerWspace)+tickerLCursor+tickerLines[line].substring(0,pos)+tickerRCursor+((is_imageTicker)?"":tickerWspace); last=tickerLines[line].length; }

 if(is_imageTicker) { for(i=0;i<text.length;i++) { document.images[tickerName+"Img"+i].src=tickerCache[text.charCodeAt(i)].src; } }
 else if(is_w3cxTicker) { tickerElement.innerHTML=text; }
 else if(is_w3cTicker) { tickerElement.childNodes[0].nodeValue=text; }
 else if(is_formTicker) { tickerElement.value=text; }
 else if(is_statusTicker) { window.status=text; }

 pos+=dir; delay=(tickerChardelay<0 && dir<0)?0:Math.abs(tickerChardelay);

 if(pos>last) {
  delay=Math.abs(tickerLinedelay);
  if(tickerSize<0) {
   pos--; dir=-dir;
  } else {
   pos=0;
   delay=(is_infiniteTicker)?Math.abs(tickerChardelay):Math.abs(tickerLinedelay)
   if(line>0) { line=(line<tickerLines.length-1)?line+1:1 }
  }
 } else if(pos<0) {
  pos=0; dir=-dir; delay=Math.max(0,tickerLinedelay);
  line=(line<tickerLines.length-1)?line+1:1
 }

 setTimeout('doTicker('+line+','+pos+','+dir+')',delay);
 return true;
}

function cacheTicker(ImgMask,Capitals) {
 if(document.images) { var i;
  tickerImg=ImgMask.substring(0,ImgMask.lastIndexOf("."));
  tickerExt=ImgMask.substring(ImgMask.lastIndexOf("."),ImgMask.length);
  tickerCache=new Array();
  for(i=0;i<256;i++) {
   if((i>=32 && i<=96) || (!Capitals && i>=97 && i<=122) || (i>=123 && i<=127) || (i>=160 && i<=223) || (!Capitals && i>=224 && i<=246) || i==247 || i==248 || (!Capitals && i>=249 && i<=253) || i==254 || i==255) {
    tickerCache[i]=new Image();
    tickerCache[i].src=tickerImg+i+tickerExt;
   }
  }
 }
}

// ========================= Programm-Bibliotheken ==========================

/* 'PZN-StartUp 150703' (c) by cybaer@binon.net
   -------------------
 Inhalt    : Nach dem Laden auszufuehrende Routinen
 Aufruf    : SU(Modus)
 Parameter : Modus (Kennung der Routinenauswahl: Protokoll = Psychiatrie-Protokoll
 Sprache   : JavaScript 1.1 (ungesichert) & JavaScript 1.5 (gesichert)
 InlineFunc: -
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : -
 Anmerkung : -
 Beispiele : -
*/

function SU(Modus) {

 // Psychiatrie-Protokoll
 if(Modus=="Protokoll") {
  navName="p-menu"; Show="show.htm"; Dateiname="psych";
  Kapitel=document.URL.substring(document.URL.indexOf(Dateiname,20)+Dateiname.length,document.URL.indexOf(Dateiname,20)+Dateiname.length+3);

  if(!is_frame && do_frameset) {
   // Ggf. Frameset nachladen
   top.location.replace(Show+"?"+Dateiname+Kapitel+".htm"+document.location.hash);
  } else {

   // Lade passenden Navigationsframe nach
   if(parent.frames["P-Menu"]) {
    if (navName=="p-menu") {
     var navNummer=parseInt(Kapitel.substring(0,2));
     if (navNummer<10) {
      navNummer="0"+navNummer;
     }
     var navDatei=navName+navNummer+".htm";
    } else {
     var navDatei=navName+".htm";
    }
    if (navDatei!=parent.frames["P-Menu"].location.href.substr(parent.frames["P-Menu"].location.href.lastIndexOf("/")+1,12)) {
     parent.frames["P-Menu"].location.replace(navDatei);
    }
   }

   // Reiter kennzeichnen
   setReiter("#999999");

   // Frame fokussieren
   self.focus();
  }
 } else if(Modus=="Liste") {
  navName="p-all1"; Show="show.htm"; Dateiname=location.href.substring(location.href.lastIndexOf("/")+1,location.href.lastIndexOf(".")); Kapitel="all";

  if(top.frames.length==0) {
   // Ggf. Frameset nachladen
   top.location.replace(Show+"?"+Dateiname+".htm"+document.location.hash);
  } else {

   // Lade passenden Navigationsframe nach
   if(parent.frames["P-Menu"]) {
    if (navName=="p-menu") {
     var navNummer=parseInt(Kapitel.substring(0,2));
     if (navNummer<10) {
      navNummer="0"+navNummer;
     }
     var navDatei=navName+navNummer+".htm";
    } else {
     var navDatei=navName+".htm";
    }
    if (navDatei!=parent.frames["P-Menu"].location.href.substr(parent.frames["P-Menu"].location.href.lastIndexOf("/")+1,12)) {
     parent.frames["P-Menu"].location.replace(navDatei);
    }
   }

   // Frame fokussieren
   self.focus();
  }
 }

 // Frameset oder alleinstehende Datei
 if(Modus=="Frameset" || Modus=="Single") {
  if(top!=self) {
   // Ggf. uebergeordnetes Frameset entfernen
   top.location=self.location;
  }
 }
}

// --------------------------------------------------------------------------

function setReiter(status) {
 if(parent.frames["P-Menu"]) {

  if(status.length && status.charAt(0)=="#") {
   color=status
  } else {
   if(status) {
    color="#999999"
   } else {
    color="#FFFFFF"
   }
  }

  if(is_w3cDOM) {
   Layer = "R" + Kapitel;
   if(parent.frames["P-Menu"].document.getElementById(Layer)) {
    parent.frames["P-Menu"].document.getElementById(Layer).style.backgroundColor=color;
   } else if(is_ieDOM) {
    Layer = "R" + Kapitel;
    if(parent.frames["P-Menu"].document.all[Layer]) {
     parent.frames["P-Menu"].document.all[Layer].style.backgroundColor=color;
    }
   } else if(is_nnDOM) {
    Layer = "L" + Kapitel;
    if(parent.frames["P-Menu"].document.layers[Layer]) {
     parent.frames["P-Menu"].document.layers[Layer].bgColor=color;
    }
   }
  }
 }
 if(do_opt) { if(doc_width) { scriptOptX(); } else { doOpt(); } }
}

// --------------------------------------------------------------------------

/* 'La-Ola-Effekt ????04' (c) by cybaer@binon.net
   ----------------------
 Inhalt    : Wechselt der Reihe nach eine/mehrere Grafik/en aus - einmalig bis endlos
 Aufruf    : waveInit(repeat,time,restore,'IMG-Daten 1'[,'IMG-Daten 2',...,'IMG-Daten n]) (Daten initialisieren)
             waveNow([when]) (Starte Auswechselung)
             waveStop() (Beende Auswechselung)
             waving() (Auswechsel-Routine)
 Parameter : when (Optional: Zeit in Millisekunden bis zum Start)
             repeat (Anzahl der Wiederholungen, -1 wenn endlos)
             time (Wartezeit in Millisekunden fuer naechste Grafik)
             restore (wenn false, bleibt neuer Zustand bestehen,
                      wenn true wird alter Zustand wiederhergestellt)
             'IMG-Daten' sind 3er-Gruppen bestehend aus dem Namen des IMGs (NAME-Attribut),
             dem Ersatz-Bild und dem Original-Bild, jeweils getrennt durch |.
 Sprache   : JavaScript 1.1 (gesichert)
 InlineFunc: -
 Konstante : 
 Variable  : wave (Aufrufvariable der TimeOut-Funktion)
 SystemVar : -
 ExternVar : -
 Rueckgabe : -
 Anmerkung : In Entwicklung
 Beispiele : -
*/

function waving() {
 var i;
 // Wenn ein vorheriger Eintrag existiert,
 if(wavePos!=waveOldPos && waveRestore) {
  // alle alten (3er-)Eintraege abklappern
  for(i=0;i<waveImg[waveOldPos].length;i+=3) {
   // und Grafik(en) zuruecksetzen
   document.images[waveImg[waveOldPos][i]].src=waveImg[waveOldPos][i+2];
  }
 }
 // Alle neuen (3er-)Eintraege abklappern
 for(i=0;i<waveImg[wavePos].length;i+=3) {
  // Wenn die Grafik1 nicht geladen ist ...
  if(document.images[waveImg[wavePos][i]].src.indexOf(waveImg[wavePos][i+1])<0) {
   // ... Grafik1 laden ...
   document.images[waveImg[wavePos][i]].src=waveImg[wavePos][i+1];
  } else {
   // ... sonst Grafik2 laden.
   document.images[waveImg[wavePos][i]].src=waveImg[wavePos][i+2];
  }
 }
 // Letzte Position sichern
 waveOldPos=wavePos;
 // Wenn zukuenftige Position noch gueltig
 if(waveImg.length>wavePos+1) {
  // Position erhoehen ...
  wavePos++;
  // ... und neuen Countdown starten
  wave=window.setTimeout("waving()",waveTime);
 // Wenn zukuenftige Position nicht mehr gueltig
 } else {
  // Position zuruecksetzen
  wavePos=0;
  // Wenn noch Durchlaeufe zu erledigen sind
  if(waveRepeat) {
   // Durchgangszaehler ggf. herunterzaehlen
   waveRepeat-=(waveRepeat>0)?1:0;
   // Neuen Countdown starten
   wave=window.setTimeout("waving()",waveTime);
  // Wenn keine Durchlaeufe mehr zu erledigen sind
  } else {
   // Stop-Countdown starten.
   wave=window.setTimeout("waveStop()",waveTime);
  }
 }
}

function waveNow(when) {
 if(document.images) {
  waveRepeat=waveRepeatOrg;
  if(!when) { when=waveTime; }
  wave=window.setTimeout("waving()",when);
 }
}

function waveInit(repeat,time,restore) {
 // IMG-Switch moeglich und genug Parameter?
 if(document.images && waveInit.arguments.length>3) {
  // Anzahl der Wiederholungen
  waveRepeat=repeat;
  waveRepeatOrg=repeat;
  // Wartezeit
  waveTime=time;
  // Grafiken sofort wiederherstellen?
  waveRestore=restore;
  // Startposition
  wavePos=0;
  // Letzte Position
  waveOldPos=0;
  // Daten-Feld erstellen
  waveImg=new Array();
  for(i=3;i<waveInit.arguments.length;i++) { waveImg[i-3]=waveInit.arguments[i].split("|") }
  // Und los geht's
  waveNow()
 }
}
function waveStop() {
 var i;
 if(wave) {
  window.clearTimeout(wave);
  // Grafik(en) an aktueller Position zuruecksetzen
  if(waveRestore) {
   for(i=0;i<waveImg[waveOldPos].length;i+=3) { document.images[waveImg[waveOldPos][i]].src=waveImg[waveOldPos][i+2]; }
  } else {
   for(waveOldPos=0;waveOldPos<waveImg.length;waveOldPos++) {
    for(i=0;i<waveImg[waveOldPos].length;i+=3) { document.images[waveImg[waveOldPos][i]].src=waveImg[waveOldPos][i+2]; }
   }
   wavePos=0;
   waveOldPos=0;
  }
 }
}

// --------------------------------------------------------------------------

/* 'PZN-BackButton 290503' by cybaer@binon.net
   -----------------------
 Inhalt    : Schreibt einen "Back-Button" (Stil "Psychiatrie")
 Aufruf    : PZNback()
 Parameter : whitebg (True = Hintergrund weiß, False = Hintergrund schwarz)
 InlineFunc: S()
 Konstante : PZNbackDir (enthaelt das Verzeichnis der Grafiken)
             PZNbackName (enthaelt den Dateinamen der Grafiken ohne Ziffer und Extension)
             PZNbackheight (enthaelt Hoehe der Grafiken)
             PZNbackExt (enthaelt die Dateiextension der Grafiken)
 Variable  : PZNrootDir (relative Lage des PZN-Wurzelverzeichnisses zur aufrufenden HTML-Datei)
 Rueckgabe : -
 Anmerkung : -
 Beispiele : -
*/

function PZNback(whitebg) {
 PZNrootDir=""; for(i=1;i<document.location.href.substring(document.location.href.indexOf("pzn/")+4,document.location.href.length).split("/").length;i++) { PZNrootDir+="../"; }
 PZNbackDir="img/";
 PZNbackName=(whitebg)?"backw":"back";
 PZNbackheight=(whitebg)?"63":"68";
 PZNbackExt=".gif";
 PZNback1=PZNrootDir+PZNbackDir+PZNbackName+"01"+PZNbackExt;
 PZNback2=PZNrootDir+PZNbackDir+PZNbackName+"00"+PZNbackExt;
 agt=navigator.userAgent.toLowerCase(); var is_nav=((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1) && (agt.indexOf('compatible')==-1) && (agt.indexOf('opera')==-1) && (agt.indexOf('webtv')==-1));
 if(history.length>Math.abs(is_nav)) {
  // Wenn History vorhanden (Navigator schon bei "0"), dann Button
  document.write('<a href="javascript:history.back();" target="_parent" onMouseOver="return S(\'back\',PZNback2,\'\',\'\',\'\',false,false);" onMouseOut="return S(\'back\',PZNback1,\'\',\'\',\'\',false,false);" hideFocus><img class="Naviback" src="'+PZNback1+'" name="back" width="39" height="'+PZNbackheight+'" alt="Zurueck" title="Zur&uuml;ck zur vorherigen Seite" hspace="0" vspace="0" align="right" border="0"><\/a>');
  if(document.images) {
   PZNbackCache=new Image();
   PZNbackCache.src=PZNback2;
  }
 } else {
  // Sonst Dummy-Grafik
  document.write('<img src="'+PZNrootDir+PZNbackDir+'leer.gif" width="39" height="'+PZNbackheight+'" alt="" title="" hspace="0" vspace="0" align="right" border="0">');
 }
}

// --------------------------------------------------------------------------

/* 'PZN-StartButton 300503' by cybaer@binon.net
   -----------------------
 Inhalt    : Schreibt einen "Start-Button" (Stil "Psychiatrie")
 Aufruf    : PZNstart()
 Parameter : whitebg (True = Hintergrund weiß, False = Hintergrund schwarz)
 InlineFunc: S()
 Konstante : PZNstartDir (enthaelt das Verzeichnis der Grafiken)
             PZNstartName (enthaelt den Dateinamen der Grafiken ohne Ziffer und Extension)
             PZNstartheight (enthaelt Hoehe der Grafiken)
             PZNstartExt (enthaelt die Dateiextension der Grafiken)
 Variable  : PZNrootDir (relative Lage des PZN-Wurzelverzeichnisses zur aufrufenden HTML-Datei)
 Rueckgabe : -
 Anmerkung : -
 Beispiele : -
*/

function PZNstart(whitebg) {
 PZNrootDir=""; for(i=1;i<document.location.href.substring(document.location.href.indexOf("pzn/")+4,document.location.href.length).split("/").length;i++) { PZNrootDir+="../"; }
 PZNstartDir="img/";
 PZNstartName=(whitebg)?"startw":"start";
 PZNstartheight=(whitebg)?"63":"68";
 PZNstartExt=".gif";
 PZNstart1=PZNrootDir+PZNstartDir+PZNstartName+"01"+PZNstartExt;
 PZNstart2=PZNrootDir+PZNstartDir+PZNstartName+"00"+PZNstartExt;
 document.write('<a href="'+PZNrootDir+'index.htm" target="_parent" onMouseOver="return S(\'start\',PZNstart2,\'\',\'\',\'\',false,false);" onMouseOut="return S(\'start\',PZNstart1,\'\',\'\',\'\',false,false);" hideFocus><img class="Naviback" src="'+PZNstart1+'" name="start" width="39" height="'+PZNstartheight+'" alt="Zurueck" title="Zum Psychiatrie-Eingang" hspace="0" vspace="0" align="left" border="0"><\/a>');
 if(document.images) {
  PZNstartCache=new Image();
  PZNstartCache.src=PZNstart2;
 }
}

// =============================== MagicHTML ================================

function magicGO() {
}

function magicB4() {
}

function magicL8() {
}

function magicOK() {
}

function magicXL() {
}

function magicKO() {
}

// =============================== Direkt-Code ===============================

// PARAMETER UNBEDINGT DEN EIGENEN BEDINGUNGEN ANPASSEN!
SysVarsHead("psychiatrie","index.htm"); if(do_opt) { window.onload=doOpt; window.onunload=scriptOptX; }

if(do_blending) { BlendOver(1500," ,::"); }

xJS=true; // Externes JavaScript geladen!

