// 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").innerHTML = nl2br_12(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&auml;ufig auch Verst&auml;ndnis. Unser Training kann Ihre Leseeffizienz wahrscheinlich erheblich steigern, vorausgesetzt, Sie haben schon 10 Jahre Leseerfahrung und leiden nicht an einer deutlichen Lese-Rechtschreibschw&auml;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&auml;ndnis deutlich.";

		// 301 - 500 WPM
		var auswertung_text3 = "Sie sind ein schneller Leser und liegen deutlich &uuml;ber dem Durchschnitt. Doch auch erfahrene, schnelle Leser wie Sie verdoppeln h&auml;ufig Ihre Leseeffizienz in unserem Training!";

		// > 500 WPM
		var auswertung_text4 = "Gl&uuml;ckwunsch, Ihre Lesegeschwindigkeit liegt sehr hoch! Doch Geschwindigkeit ist nicht alles: In unserem Training wird die Leseeffizienz bewertet, ein Produkt aus Geschwindigkeit und Verst&auml;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&auml;�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 &uuml;berdurchschnittlich. Aber kann es sein, dass Sie Ihr Tempo hemmen, weil Sie den Text vollst&auml;ndig mitsprechen m&ouml;chten? Fokussieren Sie breit und entspannt? �ben Sie das �Chunken� mit leicht verst&auml;ndlichen Texten und reduzieren Sie das �Subvokalisieren� auf die wichtigsten, Sinn gebenden W&ouml;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&uuml;fen Sie, ob Sie Ihr Potenzial noch aussch&ouml;pfen! Stimmen Sie sich &uuml;ber Leseziele, Fragen zum Text und eine Vorausschau auf das z&uuml;gige Lesen ein?";

		// > 550 WPM
		var auswertung_text4 = "Sie liegen &uuml;ber dem Durchschnitt unserer Kursabsolventen. &Uuml;ber die Automatisierung des Gelernten haben Sie sich hoffentlich auch ein gutes Verst&auml;ndnis erhalten! Wenn nicht: Pr&uuml;fen Sie die Sicherheit und die Vollst&auml;ndigkeit Ihrer Fixierungen. Eine unvollst&auml;ndige und nachl&auml;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&ouml;rter pro Minute (WpM).</b><br>" + auswertung_text;
		    }
		    else
		    {
		      document.getElementById("p_auswertung").innerHTML= "<b>Sie lesen mehr als 1500 W&ouml;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&ouml;rter pro Minute (WpM).</b><br>" + auswertung_text;
		    }
		    else
		    {
		      document.getElementById("p_auswertung").innerHTML= "<b>Sie lesen mehr als 1500 W&ouml;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;
      var hTot = document.getElementById('ta_lesetest').offsetHeight+68;
      div.style.height = '50px';
      div.style.top = -hTot+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 hTot = document.getElementById('ta_lesetest').offsetHeight+68;
      var h_vergleich = window.act_vergleich + 1;
      div_vergleich.style.height = '50px';
      div_vergleich.style.top = -hTot+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';

    var hTot = document.getElementById('ta_lesetest').offsetHeight+68;

    if (document.form1.vergleichsmodus.value==1) {
        document.getElementById('ta_lesetest_vergleich').style.height='0px';
    }

    window.setTimeout("resizeDivTo('ta_lesetest_eigene',"+hTot+");", 1);

    if (document.form1.vergleichsmodus.value==1) {
        window.setTimeout("resizeDivTo_vergleich('ta_lesetest_vergleich',"+hTot+");", 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';
}

function nl2br_12(str) {
	if(typeof(str)=="string") return str.replace(/(\r\n)|(\n\r)|\r|\n/g,"<br />");
	else return str;
}

