// please keep these lines on when you copy the source
// made by: Nicolas - http://www.javascript-page.com

var timerID = 0;
var tStart  = null;

var set_reset = 0;

var vergleichsgeschwindigkeit = 200;

var a=0;

var result = 0;
var result_vergleich = 0;

var act = 1;
var act_vergleich = 1;

var v_timeout = 20;

var is_running = 0;

var firstsubmit = true;

var eigenerText = false;


function substr_count( haystack, needle, offset, length ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // *     example 1: substr_count('Kevin van Zonneveld', 'e');
    // *     returns 1: 3
    // *     example 2: substr_count('Kevin van Zonneveld', 'K', 1);
    // *     returns 2: 0
    // *     example 3: substr_count('Kevin van Zonneveld', 'Z', 0, 10);
    // *     returns 3: false
 
    var pos = 0, cnt = 0;
 
    haystack += '';
    needle += '';
    if(isNaN(offset)) {offset = 0;}
    if(isNaN(length)) {length = 0;}
    offset--;
 
    while( (offset = haystack.indexOf(needle, offset+1)) != -1 ){
        if(length > 0 && (offset+needle.length) > length){
            return false;
        } else{
            cnt++;
        }
    }
 
    return cnt;
}

function UpdateTimer() {
   if(timerID) {
      clearTimeout(timerID);
      clockID  = 0;
   }

   if(!tStart)
      tStart   = new Date();

   var   tDate = new Date();
   var   tDiff = tDate.getTime() - tStart.getTime();

   tDate.setTime(tDiff);

   //document.theTimer.theTime.value = "" + tDate.getMinutes() + ":" + tDate.getSeconds();
   document.theTimer.theTime.value = tDate.getMinutes()*60 + tDate.getSeconds();
   
   timerID = setTimeout("UpdateTimer()", 1000);
}

function Start() {
   tStart   = new Date();

   //document.theTimer.theTime.value = "00:00";
   document.theTimer.theTime.value = 0;

   timerID  = setTimeout("UpdateTimer()", 1000);
}

function Stop() {
   if(timerID) {
      clearTimeout(timerID);
      timerID  = 0;
   }

   tStart = null;
}

function Reset() {
   tStart = null;

   //document.theTimer.theTime.value = "00:00";
   document.theTimer.theTime.value = 0;
}

function lesetest_start()
{
  running = 1;
  if (eigenerText) {
	// Wenn eigener Text, dann diesen in den Div stellen
	document.getElementById("ta_lesetest").value = document.getElementById("text").value;
	document.getElementById("ta_lesetest_eigene").value = document.getElementById("text").value;

	// num_words, num_lines sowie num_wpl für eigenen Text berechnen und in Form stellen
	var data = document.getElementById('text').value;
	var extract = data.split(" ");
	document.form1.num_words.value = extract.length;
	
	var num_zeilen_ohne_leerzeilen = Math.round(document.form1.num_words.value/13.4);
	var anzahl_absaetze = substr_count(document.getElementById('text').value,"\r\n");
	
	var zeilen = num_zeilen_ohne_leerzeilen + Math.round(anzahl_absaetze/2);
	document.form1.num_lines.value = zeilen;
	
	var wpl = document.form1.num_words.value/zeilen;
	document.form1.num_wpl.value = wpl;


  }
  // Start-Button verstecken, Stop-Button zeigen
  document.getElementById("b_start").style.display="none";
  document.getElementById("b_stop").style.display="block";


  document.getElementById("div_deck").style.display="none";
  document.getElementById("div_test").style.display="block";
  Start();
}

function show_upload()
{
  document.getElementById("div_eigenertext").style.display="block";
  document.getElementById("div_hinweiseigenertext").style.display="none";
  eigenerText = true;
}

function radioWert(rObj) {
  for (var i=0; i<rObj.length; i++) if (rObj[i].checked) return rObj[i].value;
  return false;
}

function check_verstaendnis()
{
  // alle Fragen beantwortet? 
  if ((radioWert(document.form_verstaendnis.frage1)==false)||(radioWert(document.form_verstaendnis.frage2)==false)||(radioWert(document.form_verstaendnis.frage3)==false)||(radioWert(document.form_verstaendnis.frage4)==false)||(radioWert(document.form_verstaendnis.frage5)==false)||(radioWert(document.form_verstaendnis.frage6)==false)||(radioWert(document.form_verstaendnis.frage7)==false)||(radioWert(document.form_verstaendnis.frage8)==false)||(radioWert(document.form_verstaendnis.frage9)==false)||(radioWert(document.form_verstaendnis.frage10)==false)) {
    alert('Bitte beantworten Sie alle Fragen');

  }
  else {
    // Fragen ausblenden, Auswertung einblenden
    document.getElementById("div_schritt3").style.display="none";
    document.getElementById("div_schritt4").style.display="block";

    // Anzahl richtig beantworteter Fragen ausrechnen
    richtige_antworten = 0;
    if (radioWert(document.form_verstaendnis.frage1)==document.form_verstaendnis.frage1richtigeantwort.value) richtige_antworten++;
    if (radioWert(document.form_verstaendnis.frage2)==document.form_verstaendnis.frage2richtigeantwort.value) richtige_antworten++;
    if (radioWert(document.form_verstaendnis.frage3)==document.form_verstaendnis.frage3richtigeantwort.value) richtige_antworten++;
    if (radioWert(document.form_verstaendnis.frage4)==document.form_verstaendnis.frage4richtigeantwort.value) richtige_antworten++;
    if (radioWert(document.form_verstaendnis.frage5)==document.form_verstaendnis.frage5richtigeantwort.value) richtige_antworten++;
    if (radioWert(document.form_verstaendnis.frage6)==document.form_verstaendnis.frage6richtigeantwort.value) richtige_antworten++;
    if (radioWert(document.form_verstaendnis.frage7)==document.form_verstaendnis.frage7richtigeantwort.value) richtige_antworten++;
    if (radioWert(document.form_verstaendnis.frage8)==document.form_verstaendnis.frage8richtigeantwort.value) richtige_antworten++;
    if (radioWert(document.form_verstaendnis.frage9)==document.form_verstaendnis.frage9richtigeantwort.value) richtige_antworten++;
    if (radioWert(document.form_verstaendnis.frage10)==document.form_verstaendnis.frage10richtigeantwort.value) richtige_antworten++;

    wpm = Math.round(document.form1.num_words.value/document.theTimer.theTime.value*60);

    // Werte anzeigen
    document.getElementById("p_lesegeschwindigkeit").innerHTML=  wpm + " WpM";
    document.getElementById("p_verstaendnisgrad").innerHTML= richtige_antworten*10 + " %";
    document.getElementById("p_err").innerHTML= Math.round(richtige_antworten*wpm/10) + " WpM";


  }

}

function lesetest_stop(a_mode)
{
  if (running)
  {

    //document.getElementById("span_lesetest").className="lesetest-grau";
    Stop();
  
    document.getElementById("div_schritt1").style.display="none";
	if (document.form1.verstaendnistest.value==1) {
	    document.getElementById("div_verstaendnistest_links").style.display="block";
	    document.getElementById("div_schritt3").style.display="block";
        document.getElementById("div_test").style.display="none";
        document.getElementById("ta_lesetest_eigene").style.display="none";
	}
	else {
	    document.getElementById("div_schritt2").style.display="block";
	}

    window.setTimeout("update_wpm();", 100);

    var wpm = Math.round(document.form1.num_words.value/document.theTimer.theTime.value*60);
  
    if (document.form1.rc.value==0) {
		s.setValue(wpm);
	}
  
	// prüfen, welcher Auswertungstext angezeigt werden soll


	if (document.form1.vergleichsmodus.value==1) {
		// Auswertungstexte Vergleichsmodus

		// < 170 WPM
		var auswertung_text1 = "Sie lesen erkennbar langsamer als die meisten Leser. Das kostet nicht nur Zeit, sondern häufig auch Verständnis. Unser Training kann Ihre Leseeffizienz wahrscheinlich erheblich steigern, vorausgesetzt, Sie haben schon 10 Jahre Leseerfahrung und leiden nicht an einer deutlichen Lese-Rechtschreibschwäche.";

		// 171 - 300 WPM
		var auswertung_text2 = "Wie bei den meisten Lesern hemmen falsche Techniken Ihr Lesetempo. Mit den neuen Lesetechniken, die Sie in unserem Training lernen, steigern Sie nicht nur Ihr Lesetempo sondern auch Ihr Textverständnis deutlich.";

		// 301 - 500 WPM
		var auswertung_text3 = "Sie sind ein schneller Leser und liegen deutlich über dem Durchschnitt. Doch auch erfahrene, schnelle Leser wie Sie verdoppeln häufig Ihre Leseeffizienz in unserem Training!";

		// > 500 WPM
		var auswertung_text4 = "Glückwunsch, Ihre Lesegeschwindigkeit liegt sehr hoch! Doch Geschwindigkeit ist nicht alles: In unserem Training wird die Leseeffizienz bewertet, ein Produkt aus Geschwindigkeit und Verständnis. Die Lesetechniken, die Sie in unserem Training lernen, steigern beides!";
	}
	else
	{
		// Auswertungstexte stufenlose Regelung

		// < 250 WPM
		var auswertung_text1 = "Schade, Sie liegen unter der durchschnittlichen Anfangs-Lesegeschwindigkeit in unseren Kursen. Konnten Sie, wie von uns vorgeschlagen, zur Übung jeden Tag einen Artikel so schnell wie mit dem Rate Controller lesen (Dynamik und richtige Blicktechnik)? Wenn Ihr Gehirn nicht regelmäßig mit solchen Impulsen gefordert wird, hat es keinen Ansporn, die Konzentration ausschließlich auf das Lesen zu richten.";

		// 251 - 400 WPM
		var auswertung_text2 = "Ihre Lesegeschwindigkeit ist überdurchschnittlich. Aber kann es sein, dass Sie Ihr Tempo hemmen, weil Sie den Text vollständig mitsprechen möchten? Fokussieren Sie breit und entspannt? Üben Sie das „Chunken“ mit leicht verständlichen Texten und reduzieren Sie das „Subvokalisieren“ auf die wichtigsten, Sinn gebenden Wörter.";

		// 401 - 550 WPM
		var auswertung_text3 = "Sie schlagen die Lesegeschwindigkeit im deutschsprachigen Raum um mehr als das Doppelte. Aber vergleichen Sie den Wert mit Ihren Ergebnissen im Training und prüfen Sie, ob Sie Ihr Potenzial noch ausschöpfen! Stimmen Sie sich über Leseziele, Fragen zum Text und eine Vorausschau auf das zügige Lesen ein?";

		// > 550 WPM
		var auswertung_text4 = "Sie liegen über dem Durchschnitt unserer Kursabsolventen. Über die Automatisierung des Gelernten haben Sie sich hoffentlich auch ein gutes Verständnis erhalten! Wenn nicht: Prüfen Sie die Sicherheit und die Vollständigkeit Ihrer Fixierungen. Eine unvollständige und nachlässige Fokussierung des Textes ist keine gute Lesetechnik!";
	}



    if (document.form1.rc.value==0) {
		if (document.form1.vergleichsmodus.value==1) {
			// Auswertungstexte Vergleichsmodus

		    if (wpm < 171)
		    {
		      var auswertung_text = auswertung_text1;
		    }
		    if (wpm > 170 && wpm <301)
		    {
		      var auswertung_text = auswertung_text2;
		    }
		    if (wpm > 300 && wpm <501)
		    {
		      var auswertung_text = auswertung_text3;
		    }
		    if (wpm > 500)
		    {
		      var auswertung_text = auswertung_text4;
		    }

		    if (wpm<1500)
		    {
		      document.getElementById("p_auswertung").innerHTML= "<b>Sie lesen " + wpm + " Wörter pro Minute (WpM).</b><br>" + auswertung_text;
		    }
		    else
		    {
		      document.getElementById("p_auswertung").innerHTML= "<b>Sie lesen mehr als 1500 Wörter pro Minute (WpM).</b><br>" + auswertung_text;
		    }
		}
		else
		{
			// Auswertungstexte stufenlose Regelung
		
		    if (wpm < 251)
		    {
		      var auswertung_text = auswertung_text1;
		    }
		    if (wpm > 250 && wpm <401)
		    {
		      var auswertung_text = auswertung_text2;
		    }
		    if (wpm > 400 && wpm <551)
		    {
		      var auswertung_text = auswertung_text3;
		    }
		    if (wpm > 550)
		    {
		      var auswertung_text = auswertung_text4;
		    }

		    if (wpm<1500)
		    {
		      document.getElementById("p_auswertung").innerHTML= "<b>Sie lesen " + wpm + " Wörter pro Minute (WpM).</b><br>" + auswertung_text;
		    }
		    else
		    {
		      document.getElementById("p_auswertung").innerHTML= "<b>Sie lesen mehr als 1500 Wörter pro Minute (WpM).</b><br>" + auswertung_text;
		    }
		}

	}
    if (a_mode==1) { // Wenn Direktlink
      auswertung_text = "";
      document.getElementById("p_auswertung").innerHTML= "";
    }
  }
}


function za()
{
  if (document.getElementById("za_id").value=='be')
  {
    document.getElementById("tr_einzug").style.display="block";
  }
  else
  {
    document.getElementById("tr_einzug").style.display="none";
  }
  
  if (document.getElementById("za_id").value=='re')
  {
    document.getElementById("tr_re").style.display="block";
  }
  else
  {
    document.getElementById("tr_re").style.display="none";
  }

}

function over_b(id)
{
  document.getElementById("detail" + id).style.display="block"; 
  document.getElementById("book" + id).firstChild.data="+++ jetzt buchen +++";
}

function out_b(id)
{
  document.getElementById("detail" + id).style.display="none"; 
  document.getElementById("book" + id).firstChild.data="+++ Details +++";
}

function mouse_pos(evt)
{
    if(!evt) evt = window.event;
    var pos = new Object();
    pos.left = evt.clientX;
    pos.top = evt.clientY;
    var b = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ? 
   window.document.documentElement : window.document.body || null;
    if (b)
    {
        pos.scrollLeft= pos.left + b.scrollLeft;
        pos.scrollTop = pos.top + b.scrollTop;
    }
    else if(document.layers)
    {
        // Netscape 4.
        pos.scrollLeft = evt.pageX;
        pos.scrollTop = evt.pageY;
        pos.left = evt.pageX - window.pageXOffset;
        pos.top = evt.pageY - window.pageYOffset;
    }
    return pos;
}

function showMousePos()
{
    var p = mouse_pos();
    for(var i in p)
    {
        alert(p[i]);
    }
}

function resizeDiv(div_id, div_height, speed)
{
  var div = document.getElementById(div_id);

  if(div.offsetHeight < div_height)
  {
    var h = div.offsetHeight + 1;
    div.style.height = h+'px';
    result = window.setTimeout("resizeDivTo('" + div_id +"'," + div_height + ");", speed);
  }
}


function resizeDivTo(div_id, div_height)
{
  var div = document.getElementById(div_id);

  //if(window.set_reset ==0)
  //{
    if(act < div_height)
    {
      window.act = window.act + 1;
      var h = window.act + 1;
      div.style.height = '50px';
      div.style.top = -1350+h+'px';
 
      v_timeout = Math.round(((document.form1.num_wpl.value*60)/(s.getValue()*13))*1000);
      //pause(v_timeout);
      result = window.setTimeout("resizeDivTo('" + div_id +"'," + div_height + ");", v_timeout);
    }
}

function resizeDivTo_vergleich(div_id_vergleich, div_height_vergleich)
{
  var div_vergleich = document.getElementById(div_id_vergleich);

  //if(window.set_reset ==0)
  //{
    if(act_vergleich < div_height_vergleich)
    {
      window.act_vergleich = window.act_vergleich + 1;
      var h_vergleich = window.act_vergleich + 1;
      div_vergleich.style.height = '50px';
      div_vergleich.style.top = -1383+h_vergleich+'px';
 
      v_timeout_vergleich = Math.round(((document.form1.num_wpl.value*60)/(vergleichsgeschwindigkeit*13))*1000);
      //pause(v_timeout);
      result_vergleich = window.setTimeout("resizeDivTo_vergleich('" + div_id_vergleich +"'," + div_height_vergleich + ");", v_timeout_vergleich);
    }
}

function set_vergleichsgruppe(geschwindigkeit, beschriftung) {
  vergleichsgeschwindigkeit=geschwindigkeit;
  document.getElementById('p_vergleichsgruppe').innerHTML= beschriftung;
}

function update_wpm()
{
  document.getElementById("wpm_anzeige").innerHTML = "<p class='bodytext'>" + s.getValue() + " WpM</p>";  
  window.setTimeout("update_wpm();", 100);
}

function pause(ms)
{
var date = new Date();
var curDate = null;

do { curDate = new Date(); }
while(curDate-date < ms);
} 

function reset_vis() {
  document.getElementById("ta_lesetest_eigene").style.display="block";

  if (document.form1.rc.value==1) {
    lesetest_start();
    lesetest_stop();
  }


    
  if (document.form1.vergleichsmodus.value==1) {
    document.getElementById("ta_lesetest_vergleich").style.display="block";
  }

  window.act = 1000;
  window.act_vergleich = 1000;
  clearTimeout(result);  
  clearTimeout(result_vergleich);  
  //window.setTimeout("pause(1000);",1000);
  window.act = 0;
  window.act_vergleich = 0;
  document.getElementById('ta_lesetest_eigene').style.height='0px';

  if (document.form1.vergleichsmodus.value==1) {
    document.getElementById('ta_lesetest_vergleich').style.height='0px';
  }
  window.setTimeout("resizeDivTo('ta_lesetest_eigene',1000);", 1);

  if (document.form1.vergleichsmodus.value==1) {
	  window.setTimeout("resizeDivTo_vergleich('ta_lesetest_vergleich',1000);", 1);
  }
  //resize(300, 1000, 0, "ta_lesetest_eigene");

}

function deactivateButton() {
  //window.setTimeout("document.getElementById('href_abschliessen1').href = '#';",10);
  //window.setTimeout("document.getElementById('href_abschliessen2').href = '#';",10);

  window.setTimeout("document.getElementById('img_abschliessen1').src = 'fileadmin/images/bitte-warten.gif';",10);
  window.setTimeout("document.getElementById('img_abschliessen2').src = 'fileadmin/images/bitte-warten.gif';",10);
  if (firstsubmit)
  {
    self.document.forms.form1.submit();
    firstsubmit = false;
  }
}

function show_agb()
{
  document.getElementById('tr_agb').style.display='block'; 
  document.getElementById('tr_widerruf').style.display='none';
}


function show_widerruf()
{
  document.getElementById('tr_widerruf').style.display='block'; 
  document.getElementById('tr_agb').style.display='none';
}

function show_promcode()
{
  document.getElementById('tr_promcode').style.display='block';
}


