
// MagicHTML (c) by cybaer@binon.net - erweiterbares HTML-Grundgeruest: Scripts 

/* 'SysVars 010104' (c) Cybaer - http://Coding.binon.net/Systemvariable */
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,always) { if((do_deFocus || always) && 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=true;
 do_deFocus=true;
 do_frameset=is_xcall;
 do_deframe=true;
 do_uncache=false;
 do_blending=false;
 // Script-Fehler abfangen?
 if(do_ceh) { window.onerror=ceh; }
}

// ---------------------------------------------------------------------------

/* Hier ist Platz fuer Bibliotheksfunktionen */

// ===========================================================================

function magicGO() {

 // Auslesen der Verbindungsgeschwindigkeit, falls bereits ermittelt
 agt_speed=parseInt(top.window.name);
 agt_speed=(agt_speed)?agt_speed:0;

 alert(doc_Server+doc_Path+doc_File+'\nwurde gestartet.');

}

function magicB4() {

 // Letzte System-Variablen feststellen
 SysVarsBody();

 document.writeln(doc_Server+"/"+doc_Path+doc_File+' wird begonnen.');

}

function magicL8() {

 document.writeln('<p><a href="javascript:alertSysVars();" onMouseUp="b(this);">System-Info anzeigen<\/a>.<\/p>');

 document.writeln(doc_Server+"/"+doc_Path+doc_File+' wurde geschrieben.');

}

function magicOK() {

 alert(doc_Server+doc_Path+doc_File+'\nwurde komplett geladen.');

 // Verbindungsgeschwindigkeit ermitteln
 if(!agt_speed) { SysVarSpeed(); }

}

function magicXL() {

 alert(doc_Server+doc_Path+doc_File+'\nwurde in der Größe verändert'+((do_resize)?'\n und wird deswegen':',\n wird aber nicht')+' neu geladen.');

}

function magicKO() {

 // Ermittelte Verbindungsgeschwindigkeit sichern
 if(agt_speed) { top.window.name=agt_speed; }

 alert(doc_Server+doc_Path+doc_File+'\nwird verlassen.');

}

// =============================== Direkt-Code ===============================

// PARAMETER UNBEDINGT DEN EIGENEN BEDINGUNGEN ANPASSEN!
SysVarsHead("magichtm","index.htm");

xJS=true; // Externes JavaScript geladen!


