
// PageBlending (c) by cybaer@binon.net: Scripts

// ============================ Basis-Bibliothek ============================

/* 'SysVars-Auszug 010104' (c) Cybaer - http://Coding.binon.net/Systemvariable */
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 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, agt, ver, sys
 agt=navigator.userAgent.toLowerCase();
 ver=navigator.appVersion.toLowerCase();
 agt_version=parseFloat(ver);
 agt_ieVersion=0;
 if(ver.indexOf("msie")>=0) { agt_ieVersion=parseFloat(ver.substring(ver.indexOf("msie")+4,ver.length)); }
 is_external=(window.external)?true:false;
 is_ie=(agt.indexOf('msie')>=0 && (((is_external || agt.indexOf(' aol ')>=0) && document.all) || agt_ieVersion<4))?true:false;
 agt_speed=0;
 is_online=(window.location.protocol!="file:");
 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_Path=doc_URI.substring(doc_URI.indexOf(doc_Server)+doc_Server.length+1,doc_URI.lastIndexOf("/"));
 doc_Path=(doc_Path=="/")?"":doc_Path;
 doc_Path+="/";
 doc_PathDeep=(doc_Path=="/")?0:cc(doc_Path,"/");
 doc_rootPath=""; for(i=1;i<=doc_PathDeep;i++) { doc_rootPath+="../"; }
 // Spezielle Dokumenten-Steuerung
 do_blending=true;
// do_blending=((!is_ie || (is_ie && agt_ieVersion>=6)) && lineType("DSL"));
}

// ---------------------------- Zahlen-Bibliothek ---------------------------

// 'Number-Library-Auszug 060104' (c) Cybaer - http://Coding.binon.net/NumLib
function rand(min,max) { var range=max-min+1; if(range>0) { if(Math.random) { return Math.ceil(range*Math.random())+min-1; } else { return max; } } else { return "undefined"; } }

// =========================== System-Bibliothek ============================

/* 'Page BlendOver 130104' (c) by cybaer@binon.net
   -----------------------
 Inhalt    : Erzeugt einen Ueberblend-Effekt beim Verlassen der HTML-Seite (dynamische MS-Filter)
 Aufruf    : BlendOver(duration,effect)
 Parameter : Duration (Dauer der Ueberblendung in Millisekunden)
             Effect (Art der Ueberblendung als Zahl (-1 bis 23), als String mit stilisiertem Symbol
                     oder als String mit Komma-getrennten Effekten fuer begrenzte Zufallsauswahl)
 Sprache   : JavaScript 1.1 (ungesichert)
 Quelle    : http://Coding.binon.net/PageBlending (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: rc(), rand()
 Konstante : -
 Variable  : -
 SystemVar : is_ie, agt_ieVersion
 ExternVar : -
 Rueckgabe : -
 Anmerkung : Die Ueberblendung funktioniert erst ab IE 5.5, und erst ab dem IE 6.0 korrekt (auf aelteren
             IE-Versionen als der 6.0, wird die Ueberblenddauer auf einen ganzen Wert gerundet)!
             Die Routine muss innerhalb des HEAD-Bereichs aufgerufen werden!
 Beispiele : BlendOver(2500,"O->") erzeugt einen Kreis-Effekt (2,5s / IE 5.5: 3s) von innen nach aussen
             BlendOver(2500," ,::") erzeugt zufaellig fliessende oder punktweise Ueberlagerung
             BlendOver(2500,23) erzeugt einen Zufalls-Effekt aus allen moeglichen Effekten
             BlendOver(2500,"*,O<-,O->") erzeugt zu 1/3 einen beliebigen Effekt und zu 2/3 Kreis-Effekte
             BlendOver(2500,"[]->,O->,<-|->,-<") erzeugt zufaellig einen der sich "oeffnenden" Effekte
*/

function BlendOver(duration,effect) {

 // Ueberhaupt ein Blendeneffekt?
 if(duration>0) {

  // Ist Parameter eine Zeichenkette?
  if(effect.length) {

   // Stilisierte Effektsymbole durch Effektnummern ersetzen
   // Ueberlagerungs-Effekte:
   effect=rc(effect," ",-1);      // fliessend
   effect=rc(effect,"::",12);     // punktweise
   // Box-Effekte:
   effect=rc(effect,"[]<-",0);    // nach innen (schliessend)
   effect=rc(effect,"[]->",1);    // nach aussen (oeffnend)
   // Kreis-Effekte:
   effect=rc(effect,"O<-",2);     // nach innen (schliessend)
   effect=rc(effect,"O->",3);     // nach aussen (oeffnend)
   // Streifen-Effekte:
   effect=rc(effect,"||->",8);    // nach rechts
   effect=rc(effect,"=_",9);      // nach unten
   // Schachbrett-Effekte:
   effect=rc(effect,"#->",10);    // nach rechts
   effect=rc(effect,"#_",11);     // nach unten
   // Schieber-Effekte (vertikal):
   effect=rc(effect,"->|<-",13);  // nach innen (schliessend)
   effect=rc(effect,"<-|->",14);  // nach aussen (oeffnend)
   effect=rc(effect,"|->",6);     // nach rechts
   effect=rc(effect,"|<-",7);     // nach links
   // Schieber-Effekte (diagonal):
   effect=rc(effect,"\-_",17);    // nach links-unten
   effect=rc(effect,"/_-",18);    // nach links-oben
   effect=rc(effect,"/-_",19);    // nach rechts-unten
   effect=rc(effect,"\_-",20);    // nach rechts-oben
   // Schieber-Effekte (horizontal):
   effect=rc(effect,"_-",4);      // nach oben
   effect=rc(effect,"-_",5);      // nach unten
   effect=rc(effect,">-",15);     // nach innen (schliessend)
   effect=rc(effect,"-<",16);     // nach aussen (oeffnend)
   // Jalousie-Effekte:
   effect=rc(effect,"==",21);     // horizontal
   effect=rc(effect,"||||",22);   // vertikal
   // Zufalls-Effekte:
   effect=rc(effect,"*",23);      // aus allen Effekten
   if(effect.indexOf(",")+1) {    // aus Effekt-Liste
    var effects=effect.split(",");
    effect=effects[rand(0,effects.length-1)];
   }
  }

  // Bei Zufalls-Auswahl eigene Effekt-Auswahl
  if(effect==23) { effect=rand(-1,22); }

  // Beim alten IE<6 nur ganze Zahlen (Dauer auf- oder abrunden)
  duration=(is_ie && agt_ieVersion<6)?Math.round(duration/1000):duration/1000;

  if(effect==-1) {
   document.writeln('<meta http-equiv="Page-Exit" content="BlendTrans(Duration='+duration+')">');
  } else {
   document.writeln('<meta http-equiv="Page-Exit" content="RevealTrans(Duration='+duration+',Transition='+effect+')">');
  }

 }
}

// ========================== Programm-Bibliothek ===========================


// =============================== MagicHTML ================================

function magicGO() {

 // Auslesen der Verbindungsgeschwindigkeit, falls bereits ermittelt
 agt_speed=parseInt(top.window.name);
 agt_speed=(agt_speed)?agt_speed:0;

 // Seiten-Uebergangs-Effekt installieren
 // " ","[]<-","[]->","O<-","O->","_-","-_","|->","|<-","||->","=_","#->","#_"
 // "::","->|<-","<-|->",">-","-<","\-_","/_-","/-_","\_-","==","||||","*"
 if(do_blending) {
  BlendOver(2400," ");
 }

}

function magicB4() {
}

function magicL8() {

 document.writeln('<p align="center">Die Verbindungsgeschwindigkeit'+((lineType()>0)?" entspricht "+((lineType()>=5)?"einer Standleitung":(lineType()==4)?"einem DSL-Modem":(lineType()==3)?"einem Kabelmodem":(lineType()==2)?"einem ISDN-Modem":(lineType()==1)?"einem Analog-Modem":""):"")+((!agt_speed)?" wurde noch nicht ermittelt":(agt_speed<0)?" war nicht ermittelbar":" (ca. "+agt_speed+" KBit/s)")+'!<\/p>');

 if(!is_ie || (is_ie && agt_ieVersion<4)) {
  document.writeln('<p align="center"><b><big>Die &Uuml;berblendungen funktionieren wohl nur auf '+((is_ie && agt_ieVersion<4)?"einem neueren":"dem")+' Internet Explorer!<\/big><\/b><\/p>');
 }

}

function magicOK() {

 // Verbindungsgeschwindigkeit ermitteln
 if(!agt_speed) { SysVarSpeed(); }

}

function magicXL() {
}

function magicKO() {

 // Ermittelte Verbindungsgeschwindigkeit sichern
 if(agt_speed) { top.window.name=agt_speed; }

}

// =============================== Direkt-Code ===============================

// PARAMETER UNBEDINGT DEN EIGENEN BEDINGUNGEN ANPASSEN!
SysVarsHead("blending","index.htm");

xJS=true; // Externes JavaScript geladen!
