// Binary-Online-Schatzkaestlein: Externe JavaScripts 040608
// Unkommentierte Funktionen haben unter angegebenem URL ein erklaertes Pendant 

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

/* 'SysVars 120506 (281207)' (c) Cybaer - http://Coding.binon.net/Systemvariable */
// Neu : doc_Search unescaped und mit Leerzeichen, is_nav, is_oldop, is_kq, is_saf, is_ie, is_external, is_connected, agt_jsVersion
// Test: is_ActiveX
// ToDo: doc_URL ("nackter" URL protocoll://server/file)?
//       JS2: (Date.toISOString) (wenn nicht schon im FF3 enthalten)
//       ansonsten: Neue Konstante __ECMASCRIPT_VERSION__
// Info: Alert & Co.




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 SysVarsHead(offlineDir,defaultFile) {
 var i, r, agt, ver, sys, pathBegin, cacheBegin;
//r=""; for(i in navigator) { r+=i+"="+navigator[i]+"\n"; } alert(r);
 // 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=(Array.reduce)?1.8:(window.Iterator)?1.7:(Array.filter)?1.6:(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_kq=(navigator.vendor && navigator.vendor=="KDE")?true:false;
 is_saf=(navigator.product && navigator.product=="Gecko" && navigator.vendor && navigator.vendor.indexOf("Apple")>-1);
 /*@cc_on
 @if(@_jscript)
  is_ie=true;
 @else @*/
  is_ie=(agt_ieVersion && agt_ieVersion<4)?true:false;
 /*@end @*/
 agt_ieSP=agt.indexOf("sp"); agt_ieSP=(is_ie && agt_ieVersion && agt_ieSP>=0)?agt.substring(agt_ieSP+2,agt_ieSP+3):0;
 is_ieSafer=(is_ie && agt_ieVersion && ((agt_ieVersion==6 && agt_ieSP>=2) || agt_ieVersion>6))?true:false;
 is_external=(is_ie && window.external)?true:false;
 is_oldie=(is_ie && !is_ieDOM && !is_external);
 is_nav=(navigator.product && navigator.product=="Gecko" && !is_saf) || (agt_major<5 && !is_ie && !is_op && !is_saf && !is_kq && (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; }
 is_oldop=(is_op && !document.styleSheets);
 // 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;
 }

}



/* 'Replace HTML Tags 020703' (c) by cybaer@binon.de
   --------------------------
 Inhalt    : Ersetzt alle gefundenen HTML-(End-)Tags durch eine Zeichenfolge
 Aufruf    : replaceHtmlTags(text,tagname,subs)
 Parameter : Text (String mit Tags)
             Tagname (Name des gewuenschten Tags (z.B. "A " oder "BR" - Endtags mit
                      vorangestelltem "/"); leer, wenn alle Tags ersetzt werden sollen)
             Subs (Ersatzstring)
             All (wenn True, werden alle Tags geaendert; bei False nur der erste)
             Start (Anfangsposition der Suche - optional)
 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 : Bearbeiteter String
 Anmerkung : Start- und End-Tags werden separat behandelt
 Beispiele : -
*/

function replaceHtmlTags(text,tagname,subs,all,start) {
 var ende; tagname=tagname.toUpperCase();
 start=(start)?start:0;
 while(text.toUpperCase().indexOf("<"+tagname,start)>=0) {
  start=text.toUpperCase().indexOf("<"+tagname,start);
  if(tagname=="!--") { ende=text.indexOf("-->",start)+3 } else { ende=text.toUpperCase().indexOf(">",start)+1 }
  text=text.substring(0,start)+subs+text.substring(ende,text.length);
  if(!all) { break; }
 }
 return text;
}

// ---------------------------------------------------------------------------

/* 'Reduce HTML Spaces 240703' (c) by cybaer@binon.net
   ---------------------------
 Inhalt    : Reduziert in einem String doppelt vorkommene Leerzeichen (nach HTML-Definition)
 Aufruf    : reduceHtmlSpaces(Text)
 Parameter : Text (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: rc()
 Konstante : -
 Variable  : -
 SystemVar : -
 ExternVar : -
 Rueckgabe : Bearbeiteter String
 Anmerkung : -
 Beispiele : -
*/

function reduceHtmlSpaces(text) {
 text=rc(text,"\x0A"," ");
 text=rc(text,"\x0D"," ");
 while(text.indexOf("  ")>=0) { text=rc(text,"  "," "); }
 return text;
}

// ---------------------------------------------------------------------------

/* 'Trim Trailing Spaces 010703' (c) by cybaer@binon.net
   -----------------------------
 Inhalt    : Entfernt einem String vorstehende und folgende Leerzeichen
 Aufruf    : trim(Text)
 Parameter : Text (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 : Bearbeiteter String
 Anmerkung : -
 Beispiele : -
*/

function trim(text) {
 while(text.charAt(0)==" ") { text=text.substring(1,text.length); }
 while(text.charAt(text.length-1)==" ") { text=text.substring(0,text.length-1); }
 return text;
}



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

// 'Number-Library-Auszug 060104' (c) Cybaer - http://Coding.binon.net/NumLib

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; } }
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"; } }


// --------------------------------------------------------------------------

/* 'Ticker4All 160608' (c) Cybaer - http://Coding.binon.net/Ticker4All */
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, nodeRecognition;
 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) {
     nodeRecognition=Node.nodeName.toLowerCase();
     if(nodeRecognition=="#text") { Value=reduceHtmlSpaces(Node.nodeValue); htmlText+=Value; Node.nodeValue=""; }
     else if(nodeRecognition=="#comment" || nodeRecognition=="br" || nodeRecognition=="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);
 }
}

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; } } } }

function makeTickerWork(entry,all) { var q, w=0; if(entry) { TickerWork=new Array(); for(q=0;q<TickerText.length;q++) { if(TickerText[q].toLowerCase().indexOf(entry)>=0) { TickerWork[w]=TickerText[q]; if(all) { w++; } else { break; } } } } else { TickerWork=TickerText.join("$NewTickerLine$").split("$NewTickerLine$"); } }
function xGetTicker(entry,all) { var text="", nr; entry=(entry)?(""+entry).toLowerCase():1; nr=parseInt("0"+entry,10); if(nr>0 && nr<=TickerText.length && (""+nr).length==entry.length) {  text=TickerText[nr-1] } else { all=(all)?true:false; makeTickerWork(entry,all); text=TickerWork.join("||"); } return text; }
function xAllTicker(reverse) { if(reverse) { makeTickerWork(); return TickerWork.reverse().join("||"); } else { return TickerText.join("||"); } }
function xRandomTicker(entry) { entry=(entry)?(""+entry).toLowerCase():false; makeTickerWork(entry,true); return TickerWork[rnd(TickerWork.length)-1]; }
function xShuffleTicker(entry) { var q, r, text=''; entry=(entry)?(""+entry).toLowerCase():false; makeTickerWork(entry,true); for(q=0;q<TickerWork.length;q++) { r=rnd(TickerWork.length-q)+q-1; text+=((text)?"||":"")+TickerWork[r]; TickerWork[r]=""; TickerWork.sort(); } return text; }





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

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

/* Dokument-Typen:
   Frameset (Framesetdefinition)
   Frameset (Framesetdefinition in JavaScript)
   Content  (Inhaltsseite)
   Element  (Navigationsseite, Typ 1)
   Elementx (Navigationsseite, Typ 2)
*/

xJS=true; // Externes JavaScript geladen!
