  hbof_suche_focus = false;
  ibnrSelect = 0;
  
  onerror = stopError;
	function stopError() {
	  return true;
	}


  function site_ueber() {
    alert("Diese Website ist kein Angebot der Deutschen Bahn. \nDie Website der DB finden Sie unter: www.bahn.de. \nDatenquelle für die Verspätungsmeldungen ist die DB.\n\nKontakt:\nRene Perse\nmail@abfahrtstafel.de");
  }
  
  function site_delcookie() {
    USER_ID = get_cookie("id"); 
    if (USER_ID!=null) {
      if (confirm("Im Cookie wird nur deine Benutzer-Identifikationsnummer \""+USER_ID+"\" gespeichert. Es werden keine personenbezogenen Informationen gespeichert.\n\nUm den Cookie jetzt zu löschen, wähle OK. Wenn du deinen Cookie doch nicht löschen möchtest, wähle Abbrechen.")) { 
        del_cookie(); 
      }
    }else{
      alert("Es existiert kein Cookie für diese Website.");
    }
  }
  
  function trim(str) {
    str = str + '';
    return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
  }
    
  function get_cookie(check_name) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f
	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );
		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found )
	{
		return null;
	}
  }
  
  function upd_autoload() {
    var v = document.getElementById("check_autoload").checked;
    if (v!=null) {
      if (v==true) { //autoload ein
        upd_cookie(5,'true');
      }else{         //autoload aus 
        upd_cookie(5,'false');
      }
    }
  }
  
  function upd_cookie(q,v) {
    var i = get_cookie('id');
    if ((q!='')&&(v!='')&&(i!=null)) {
    //alert(i);
    v = escape(trim(v));
    if (v=='true') { v = '1'; }
    else if (v=='false') { v = '0'; }
    
    var cache = new Date();
    var url = "/update_cookie.php?i="+i+"&q="+q+"&v="+v+"&cache="+cache.getTime(); 
    
    //alert(url);
    try{ req = new XMLHttpRequest(); }                
    catch (e){
      try{ req = new ActiveXObject("Msxml2.XMLHTTP"); }
      catch (e){ try{ req = new ActiveXObject("Microsoft.XMLHTTP"); } 
      catch (failed){ req = null; } 
    } 
    }
    if (req == null) alert("Error creating request object!"); 
    req.open("GET", url, true);  //Beim abschliessen des request wird diese Funktion ausgeführt                
    //req.onreadystatechange = handleRequest;
    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    req.send(null); 
    
    //History im JS aktualisieren, falls station-update.
    if (q == 2) {
    var tmp     = v;
    var tmpName = bahnhofName;
    verlauf_alt = verlauf;
    verlaufName_alt = verlaufName;
    //löschen
    verlauf     = verlauf.replace(tmp + ';','');
    verlauf     = verlauf.replace(';;',';');
    verlaufName = verlaufName.replace(tmpName + ';','');
    verlaufName = verlaufName.replace(';;',';');
    //hinzufügen
    verlauf = tmp + ';' + verlauf;
    verlauf = "" + verlauf.replace(';;',';');
    verlaufName = tmpName + ';' + verlaufName;
    verlaufName = verlaufName.replace(';;',';');
    //kürzen auf 12 einträge
    tmp = 0;
    for (var i=0;i<verlauf.length;i++) {
      //alert(tmp + "A" + verlauf.substr(i,1) + "Test" + i);
        if (verlauf.substr(i,1)==';') { ++tmp; }
        if (tmp>=12) {
            verlauf = verlauf.substring(0,i);
            tmp = -1000;
            break;
        }
    }
    tmp = 0;
    for (var i=0;i<verlaufName.length;i++) {
        if (verlaufName.substr(i,1)==';') { ++tmp; }
        if (tmp>=12) {
            verlaufName = verlaufName.substring(0,i);
            tmp = -1000;
            break;
        }
    }
    //ausgabe
    //alert(verlaufName_alt + "\n" + verlaufName);
    if (verlauf.indexOf(";")>=0) {
      tmp     = verlauf.split(';');
      tmpName = verlaufName.split(';');
      tmpOut  = '';
      try { //ff3 bugfix
      for (var i=0;i<tmp.length;i++) {
        if (tmpName[i].length>1) {
          tmpOut += '<div unselectable="on" class="option pfeil"><a href="javascript:bahnhof=\'' + tmp[i] + '\'; bahnhofName=\'' + tmpName[i] + '\'; display=\'tabelle\'; bahnInit();">' + tmpName[i] + '</a></div>';
        }
      }
      if (tmpOut.length>20) {
          document.getElementById("ibnrVerlauf").innerHTML = tmpOut;
          //formTauschen('formVerlauf');
      }
    }catch(e){ } //try  
    } //wenn ;
      //Verlauf ende
      } // q==2 setStation
    } //q number
  }
  
  function del_cookie() {
    var now = new Date ();
    // Cookies sollen nach 30 Minuten ablaufen
    var expires = new Date (now.getTime () - 1);
    document.cookie = 'id=0; path=/;expires=' + expires.toGMTString ();
  }
  
//#################################
  
  function ibnrFav_del(id) {
        document.getElementById("ibnrFav").options[id] = null;
        if (id<1) { id=0; }
        document.getElementById("ibnrFav").selectedIndex = id-1;
        upd_cookie(1,document.getElementById("ibnrFav").innerHTML);
      }
      function ibnrFav_add(ibnr,name) {
        d = false;
        //document.getElementById("debug").value += '<option value="'+ibnr+'">'+name+"</option>\n\r";
        id = document.getElementById("ibnrFav").length;
        for (i=0;i<id;i++) {
          if (document.getElementById("ibnrFav").options[i].value == ibnr) {
            d=true;
          }
        }
        if (d==false) {
          document.getElementById("ibnrFav").options[id] = new Option(name,ibnr,false,false);
          upd_cookie(1,document.getElementById("ibnrFav").innerHTML);
        }
      }
  
//####################################################################

  
  
  function handleRequest() {
          var zug_anz = 0;
          var content = ' ';
          
          //content += '<div class="hr versteckt"><!-- --></div>';
          var dreier_auf = false;
          //document.getElementById("lade_div").innerHTML = '<div class="lade_info">Lade Daten von www.bahn.de</div> <img src="ajax-loader.gif" alt="">';
          document.getElementById("lade_div").style.visibility = 'visible';  
          
        
        //alert('zug_anz');
        //document.getElementById("lade_div").innerHTML = '<div class="lade_info">Lade Daten von www.bahn.de</div> <img src="ajax-loader-still.gif" alt="">';
        //document.getElementById("iframe_url").value = 'http://reiseauskunft.bahn.de/bin/bhftafel.exe/dn?rt=1&evaId=' + bahnhof + '&boardType=' + boardType + '&time=actual&productsDefault=1111101&start=yes';
        //document.getElementById("iframe_url").value = document.getElementById("iframe").src;
        //document.title = 'Abfahrtstafel ' + bahnhofName + ' - Bahnhöfe in Deutschland';
        document.getElementById("iframe_div").style.display = 'block';
        document.getElementById("lade_div").style.visibility = 'hidden';  
        
        //alert(bahnhof);
         if (IsNumeric(bahnhof)) {
          upd_cookie(2,bahnhof); 
          //alert(bahnhofName);
          document.title = 'Abfahrtstafel ' + bahnhofName + ' - Bahnhöfe in Deutschland';
          
        } 
    } //handleRequest
 
    
  function displayRequest() { 
    //alert(bahnhof);
    //document.getElementById("lade_div").innerHTML = '<div class="lade_info">Lade Daten von www.bahn.de</div> <img src="ajax-loader.gif" alt="">';
    document.getElementById("lade_div").style.visibility = 'visible'; 
    // XML breakfast menu data
    //var mini = new _IG_MiniMessage(__MODULE_ID__);
    //mini.createTimerMessage("Bahnhof: Breyell", 5);
    //var prefs = new _IG_Prefs(__MODULE_ID__);
    
    var cache = new Date();
    var url = "/xml.php?station="+bahnhof+"&zug_num_max="+zugAnzahl+"&boardType="+boardType+"&g="+g+"&cache="+cache.getTime();
    document.getElementById("iframe").src = 'http://reiseauskunft.bahn.de/bin/bhftafel.exe/dn?rt=1&evaId=' + bahnhof + '&boardType=' + boardType + '&time=actual&productsDefault=1111101&start=yes&cache='+cache.getTime(); 
    
    /*
    try{ req = new XMLHttpRequest(); }                
    catch (e){
      try{ req = new ActiveXObject("Msxml2.XMLHTTP"); }
      catch (e){ try{ req = new ActiveXObject("Microsoft.XMLHTTP"); } 
      catch (failed){ req = null; } 
    } 
    }
    if (req == null) alert("Error creating request object!"); 
    req.open("GET", url, true);  //Beim abschliessen des request wird diese Funktion ausgeführt                
    req.onreadystatechange = handleRequest;
    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    req.send(null); 
      */  
    try { if (timer) { window.clearInterval(timer); } } catch(e) {  }
    timer = setInterval("displayRequest()",60000);   
  }
  
  
  //_IG_RegisterOnloadHandler(displayMenu);
  function bahnInit() {
    if (display=='tabelle') {
    req = null;
    //zugAnzahl = document.getElementById("zug_num_max").value;
    //Wenn bahnhof = bahnhofsname => bahnhof = station
    document.getElementById("lade_div").style.visibility = 'visible'; 
    
    if (IsNumeric(bahnhof)) {
      displayRequest();
    }else{
      ibnrsuche = bahnhof;
      getIbnr();
    }
    } //display
  }
  
//HILFSFUNKTIONEN START#################################  
function IsNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         IsNumber = false;
         document.getElementById("lade_div").style.visibility = 'hidden';
         }
      }
   return IsNumber;
}

function getIbnr() {
    if (ibnrsuche!='') { 
    var such_cache = new Date();
    ibnrsuche = escape(ibnrsuche);
    var such_url = "/ibnr.php?q="+ibnrsuche+"&cache="+such_cache.getTime(); 
    
    try{ such_req = new XMLHttpRequest(); }                
    catch (e){
      try{ such_req = new ActiveXObject("Msxml2.XMLHTTP"); }
      catch (e){ try{ such_req = new ActiveXObject("Microsoft.XMLHTTP"); } 
      catch (failed){ such_req = null; } 
    } 
    }
    if (such_req == null) alert("Error creating request object!"); 
    such_req.open("GET", such_url, true);  //Beim abschliessen des request wird diese Funktion ausgeführt                
    such_req.onreadystatechange = handleGetIbnrRequest;
    such_req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    such_req.send(null);
         
   }
     function handleGetIbnrRequest() {
          switch(such_req.readyState) { 
          case 4: if(such_req.status!=200) { 
            if (such_req.status>999) { window.setTimeout("getIbnr()",2000); } 
          }else{ 
           var such_response = such_req.responseXML;
           if (such_response!=null) {
              var such_itemList = such_response.getElementsByTagName("bahnhof");
              if (such_itemList.length>0) {
                var ibnr = such_itemList.item(0).getAttribute("ibnr");
              }else{
                var ibnr = false;
              }
              if (ibnr!=false) {
                bahnhof = ibnr;
                displayRequest();
              }else{ 
                  alert('Fehler: '+"\n"+'Der aufgerufene Bahnhof ist dem System nicht bekannt.'+"\n"+'Vermutlich befindet er sich außerhalb Deutschlands.');
                  document.getElementById("lade_div").style.visibility = 'hidden';
              }
           } //response != false  
           } break;  
        default: return false;
                 break; 
        }
    } //handleRequest
}
//HILFSFUNKTIONEN ENDE##################################
  
  
  
  
  //############################################################
  //## IBNR                                                   ##
  //############################################################
  
  
  
  
  function ibnrKeys(event) {
    
    function setCaretToEnd (el) {
      if (el.createTextRange) {
      var v = el.value;
      var r = el.createTextRange();
      r.moveStart('character', v.length);
      r.select();
      }
    }

    
    /*ibnrMin = 0;
    ibnrMax = 0;
    if ((event.keyCode==13) || (event.keyCode==40) || (event.keyCode==38)) {
    //13 enter 
    //38 hoch
    //40 runter
    //IBNR tastatur
    ibnrMax = document.getElementById("ibnrResult").length;
    if (ibnrMax==0) { ibnrMin = 0; }else{ ibnrMin = 1; }
    switch (event.keyCode) {
           case 40:
             if (ibnrSelect+1<ibnrMax) {
               ++ibnrSelect;
             } else { ibnrSelect = ibnrMax; }
             break;
           case 38:
             if (ibnrSelect-1>ibnrMin) {
               --ibnrSelect;
               //document.getElementById('bhof_suche').selectionEnd;
             } else { ibnrSelect = ibnrMin; }
             break;
    } //switch
    //document.getElementById("ibnrResult").getElementsByTagName("a")[ibnrSelect].style = "backgroundColor:#c0c0c0;";
    if (ibnrMin>0) { 
      //ibnr_wait = window.setTimeout("document.getElementById('bhof_suche').select()",10);
    }
    
    //Ausgewähltes Element formatieren
    if (ibnrSelect>0) {
      document.getElementById("ibnrResult").selectedIndex = ibnrSelect-1;
      
      if (event.keyCode==13) {
        //eval(document.getElementById("ibnrResult").getElementsByTagName("a")[ibnrSelect-1].href);
        ibnr_wait = window.setTimeout("document.getElementById('bhof_suche').blur()",100);
        //document.getElementById("debug").value = document.getElementById("ibnrResult").getElementsByTagName("a")[ibnrSelect-1].href;
      }
    }else{ document.getElementById("ibnrResult").selectedIndex = null; }
    //alert(event.keyCode);
    //IBNR tastatur ende  
    }else{*/
      ibnrSelect = 0;
      if (event.keyCode==27) {
        ibnr_wait = window.setTimeout("document.getElementById('bhof_suche').blur()",100);
      }
    //}
    //document.getElementById("debug").value = event.keyCode;
  }
  
  
  function ibnrInit() {
  
  
	if (navigator.userAgent.indexOf("Safari") > 0) {
		document.getElementById('bhof_suche').addEventListener("keydown",ibnrSuchen,false);
		document.getElementById('bhof_suche').addEventListener('keydown',ibnrKeys,false);
	} else if (navigator.product == "Gecko") {
		
		document.getElementById('bhof_suche').addEventListener("keypress",ibnrSuchen,false);
		document.getElementById('bhof_suche').addEventListener('keypress',ibnrKeys,false);;
		
	} else {
		document.getElementById('bhof_suche').attachEvent('onkeydown',ibnrSuchen);
		document.getElementById('bhof_suche').attachEvent('onkeypress',ibnrKeys);
		isIE = true;
	}
	document.getElementById('bhof_suche').setAttribute("autocomplete","off");
}
  
  function ibnrSuchen(event) {
    if ((document.getElementById("bhof_suche").value!='')&&(document.getElementById("bhof_suche").value!='Bahnhof oder Ort')) {
    try { window.clearTimeout(ibnr_wait); window.clearTimeout(ibnr_wait2); window.clearTimeout(ibnr_wait3); }
    catch(e) {
      //alert(e); 
    }
    if ((event.keyCode!=27) && (event.keyCode!=13) && (event.keyCode!=40) && (event.keyCode!=39) && (event.keyCode!=38) && (event.keyCode!=37)) {
      document.getElementById("ibnrResult").disabled = true;
      //var suche = document.getElementById("bhof_suche").value;
        ibnr_wait = window.setTimeout("ibnrRequest()",400);
        ibnr_wait2 = window.setTimeout("formTauschen('formSuchfeld')",100);
        ibnr_wait3 = window.setTimeout("ibnrCountTitel()",50);
    }
  }
  } //suchfeld leer
  
  function ibnrCountTitel() {
    if (document.getElementById("bhof_suche").value == '') {
      document.getElementById("ibnrResult").innerHTML = ''; 
      document.getElementById("ibnrCount").innerHTML = 'keine Eingabe&nbsp;';
    }else{
      document.getElementById("ibnrCount").innerHTML = 'Suchvorgang&hellip;&nbsp;';
    }
  }
  
  function ibnrRequest() {
    var suche = document.getElementById("bhof_suche").value;
    
    if (suche!='') { 
    //document.getElementById("lade_div").innerHTML = '<div class="lade_info">Lade Daten von www.bahn.de</div> <img src="ajax-loader.gif" alt="">';
    //document.getElementById("ibnrCount").innerHTML = 'Suchvorgang&hellip;&nbsp;';
    
    var such_cache = new Date();
    suche = escape(suche);
    var such_url = "/ibnr.php?q="+suche+"&cache="+such_cache.getTime(); 
    
    try{ such_req = new XMLHttpRequest(); }                
    catch (e){
      try{ such_req = new ActiveXObject("Msxml2.XMLHTTP"); }
      catch (e){ try{ such_req = new ActiveXObject("Microsoft.XMLHTTP"); } 
      catch (failed){ such_req = null; } 
    } 
    }
    if (such_req == null) alert("Error creating request object!"); 
    such_req.open("GET", such_url, true);  //Beim abschliessen des request wird diese Funktion ausgeführt                
    such_req.onreadystatechange = handleIbnrRequest;
    such_req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    such_req.send(null);
         
   }else{  //suche!=''
     document.getElementById("ibnrCount").innerHTML = 'kein Treffer&nbsp;';
     document.getElementById("ibnrResult").innerHTML = '';
     document.getElementById("btSuchAnz").disabled = true;
     document.getElementById("btSuchAdd").disabled = true;
   }    
  }
  
  
  function handleIbnrRequest() {
          var bhof_list = ' ';
          //content += '<div class="hr versteckt"><!-- --></div>';
          //document.getElementById("lade_div").innerHTML = '<div class="lade_info">Lade Daten von www.bahn.de</div> <img src="ajax-loader.gif" alt="">';
          
          switch(such_req.readyState) { 
          case 4: if(such_req.status!=200) { 
            if (such_req.status>999) { window.setTimeout("ibnrRequest",2000); } 
          }
                  else{ 
           
           var such_response = such_req.responseXML;
           document.getElementById("ibnrCount").innerHTML = 'Suchvorgang&hellip;&nbsp;';
           
           if (such_response!=null) {
           
           //alert(such_response);
           var bhof_count = '';
           var count_itemList = such_response.getElementsByTagName("ibnrsuche");
           var XMLibnrCount = count_itemList.item(0).getAttribute("anzahl");
           if (XMLibnrCount>50) { ibnrMaxHinweis = " (50 angezeigt)" }else{ ibnrMaxHinweis =""; }
           if (XMLibnrCount>0) { bhof_count += XMLibnrCount+' Treffer'+ibnrMaxHinweis+''; }
           else { bhof_count += 'kein Treffer'; }
           document.getElementById("ibnrCount").innerHTML = bhof_count + '&nbsp;';
             
           var such_itemList = such_response.getElementsByTagName("bahnhof");
           
	         document.getElementById("ibnrResult").innerHTML = '';

           if (such_itemList.length>0) {
             document.getElementById("btSuchAnz").disabled = false;
           }else{
             document.getElementById("btSuchAnz").disabled = true;
             document.getElementById("btSuchAnz").disabled = true;
           }
           last = '';
           for (var i = 0; i < such_itemList.length ; i++) {
             if (i == such_itemList.length-1) {
               last=" last";
             }    
                              //bahnhof id = i
             var XMLibnrIbnr = such_itemList.item(i).getAttribute("ibnr");
             var XMLibnrBhof   = such_itemList.item(i).firstChild.nodeValue;
             //bhof_list += "<div onClick='javascript:window.location.href=\"?station="+XMLibnrIbnr+"\"' class=\"bhof\"><a href='?station="+XMLibnrIbnr+"'>"+XMLibnrBhof+"</a></div>";                 
             bhof_list += "<div class=\"option pfeil"+last+"\" unselectable='on'><a href=\"javascript:bahnhof="+XMLibnrIbnr+"; bahnhofName='"+XMLibnrBhof+"'; display='tabelle'; bahnInit();\">"+XMLibnrBhof+"</a></div>";
             //bhof_list += "<option onDblClick='javascript:bahnhof=\""+XMLibnrIbnr+"\"; bahnInit();'>"+XMLibnrBhof+"</option>";
             XMLibnrBhof = XMLibnrBhof.replace('...','&hellip;');
             //document.getElementById("ibnrResult").options[i] = new Option(XMLibnrBhof,XMLibnrIbnr,false,false);
           }  
                document.getElementById("ibnrResult").innerHTML = bhof_list;
                
              } //response != false  
           } break;  
        default: return false;
                 break; 
        }
        //document.getElementById("lade_div").innerHTML = '<div class="lade_info">Lade Daten von www.bahn.de</div> <img src="ajax-loader-still.gif" alt="">';
        window.setTimeout('document.getElementById("ibnrResult").disabled = false;',300);
    } //handleRequest
    

