/****************************************************************************
 *
 *                                 S8P
 *
 ***************************************************************************/

      function s8p_implode(diffi, scheme, a_code, a_correct, a_user)
      {
        return diffi + '***' + scheme + '***' + a_code + '***' + a_correct + '***' + a_user;
      }

      function s8p(s8p_string)
      {
        var s8p_split = s8p_string.split('***');

        this.difficulty = 0;
        this.scheme = 0;
        this.answer_code = 0;
        this.answer_correct = 0;
        this.answer_user = 0;

        if(s8p_split.length == 5)
        {
          this.difficulty = s8p_split[0];
          this.scheme = s8p_split[1];
          this.answer_code = s8p_split[2];
          this.answer_correct = s8p_split[3];
          this.answer_user = s8p_split[4];
        }
        else
        {
          this.difficulty = '0';
          this.scheme = 'zero';
          this.answer_code = '0';
          this.answer_correct = '0';
          this.answer_user = '0';
        }

        //this.s8p_string = s8p_implode(this.difficulty, this.scheme, this.answer_code, this.answer_correct, this.answer_user);
      }

      s8p.prototype.message = function()
      {
        alert(this.difficulty + '/' + this.scheme + '/' + this.answer_code + '/' + this.answer_correct + '/' + this.answer_user);
      }

      s8p.prototype.to_string = function()
      {
        return this.difficulty + '***' + this.scheme + '***' + this.answer_code + '***' + this.answer_correct + '***' + this.answer_user;
      }

/*******************************************************************************
 *
 *                                 Memory
 *
 ******************************************************************************/

      /**
       memory()    Modulfunktion für die Bearbeitung von Memoryaufgaben
       ex_id       Aufgaben-ID
       token       Zughörigkeitsmarke für Vergleich
       id          Id eines Kaertchens innerhalb seines Memoryfelds (fortlaufende Nummer oder so)
       img         Name des Bildes, wenn das Kaertchen aufgedeckt ist
       default_img Name des Bildes für die Rueckseite des Kaertchens
      */
      function memory(ex_id, token, id, img, default_img)
      {
        // globale Variablen importieren
        memory_id_first = eval('memory_' + ex_id + '_id_first');
        memory_id_second = eval('memory_' + ex_id + '_id_second');
        memory_token_first = eval('memory_' + ex_id + '_token_first');
        memory_token_second = eval('memory_' + ex_id + '_token_second');

        // nicht bereits zwei offen
        if(memory_id_first && memory_id_second)
          return;

        // noch nicht bereits als erstes der zweites ausliegen
        if((memory_id_first == id) || (memory_id_second == id))
          return;

        // noch nicht bereits als Pärchen vorhanden
        var mys8p = new s8p(document.getElementById(ex_id).value);
        if((mys8p.answer_user.match(eval("/^"  + token + "$/")))    // allein
        || (mys8p.answer_user.match(eval("/^"  + token + "@/")))    // am Anfang
        || (mys8p.answer_user.match(eval("/@" + token + "@/")))    // in der Mitte
        || (mys8p.answer_user.match(eval("/@" + token + "$/"))))   // am Ende
          return;

        if(!memory_id_first)// erstes
        {
          // aufdecken
          document.getElementById('memory_' + ex_id + '_' + id).src = './gfx/ex/' + img;
          // erstes merken
          memory_id_first = id;
          memory_token_first = token;
          // globale Variablen exportieren
          eval('memory_' + ex_id + '_id_first = memory_id_first');
          eval('memory_' + ex_id + '_token_first = memory_token_first');
        }
        else
        {
          // zweites aufdecken
          document.getElementById('memory_' + ex_id + '_' + id).src = './gfx/ex/' + img;
          // zweites merken
          memory_id_second = id;
          memory_token_second = token;
          // globale Variablen exportieren
          eval('memory_' + ex_id + '_id_second = memory_id_second');
          eval('memory_' + ex_id + '_token_second = memory_token_second');

          // erstes und zeites vergleichen
          if(memory_token_first == memory_token_second) // match
          {
            // den Fund notieren
            if(mys8p.answer_user != '0')
              mys8p.answer_user = mys8p.answer_user + '@' + token;
            else
              mys8p.answer_user = token;

            document.getElementById(ex_id).value = mys8p.to_string();
            // beide wieder vergessen
            window.setTimeout('memory_finish(' + ex_id + ', \'' + default_img + '\', 0)', 1000);
          }
          else
          {
            // beide wieder zudecken und vergessen
            window.setTimeout('memory_finish(' + ex_id + ', \'' + default_img + '\', 1)', 1000);
          }
        }

        // DEBUG
        //alert('ex_id: ' + ex_id + ' / token: ' + token + ' / id:' + id  + ' \n img: ' + img + '\n def_img: ' + default_img + ' \n' + document.getElementById(ex_id).value);
        //alert(mys8p.difficulty + '\n' + mys8p.scheme + '\n' + mys8p.answer_code + '\n' + mys8p.answer_correct + '\n' + mys8p.answer_user + '\n' + mys8p.to_string());
      }

      /**
       Hilfsfunktion zum Zudecken und Vergessen von aufgedeckten Kaertchen
      */
      function memory_finish(ex_id, default_img, reset_img)
      {
        // globale Variablen importieren
        memory_id_first = eval('memory_' + ex_id + '_id_first');
        memory_id_second = eval('memory_' + ex_id + '_id_second');

        // Zudecken
        if(reset_img)
        {
          if(memory_id_first)
            document.getElementById('memory_' + ex_id + '_' + memory_id_first).src = './gfx/ex/' + default_img;
          if(memory_id_second)
            document.getElementById('memory_' + ex_id + '_' + memory_id_second).src = './gfx/ex/' + default_img;
        }

        // Vergessen (global)
        eval('memory_' + ex_id + '_id_first = null');
        eval('memory_' + ex_id + '_token_first = null');
        eval('memory_' + ex_id + '_id_second = null');
        eval('memory_' + ex_id + '_token_second = null');
      }
/*******************************************************************************
 *
 *                                 Memento
 *
 ******************************************************************************/
function memento_info(ex_id, time)
{
  hide('memento_start_' + ex_id);
  seek('memento_info_' + ex_id, null);
  memento_countdown(ex_id , time);
  window.setTimeout('memento_test(' + ex_id + ')', time * 1000);
}

function memento_test(ex_id, mem_count)
{
  hide('memento_info_' + ex_id);
  seek('memento_test_' + ex_id, null);

  // Übergabe an Multiplechoice_Text
  document.getElementById('hidden_s8p_' + ex_id).value = '';
}

function memento_countdown(ex_id, time)
{
   c = document.getElementById('memento_countdown_' + ex_id);

   if(time < 10)
      c.className = 'countdown_red';
    else
      if(time < 60)
        c.className = 'countdown_yellow';
      else
        c.className = 'countdown_green';

   min = (m = Math.floor(time / 60)) < 10 ? '0' + m : '' + m;
   sec = (s = (time % 60)) < 10 ? '0' + s : '' + s;
   c.value = min + ' : ' + sec;

   if(time > 0)
     window.setTimeout('memento_countdown(' + ex_id + ', ' + (time - 1)  + ')', 1000);
}
/*******************************************************************************
 *
 *                                 Summa Summarum
 *
 ******************************************************************************/
function summa_summarum2(ex_id, field)
{
  //alert('ex_id:' + ex_id + '\ns8p' + document.getElementById(ex_id).value + '\nfield: ' + field);
  if(document.getElementById(ex_id))
  {
    // s8p-String aendern
    s8p_obj = new s8p(document.getElementById(ex_id).value);
    user_split = s8p_obj.answer_user.split('.');
    user_split[field - 1] = (user_split[field - 1] + 1) % 3;
    s8p_obj.answer_user = user_split[0] + '.' + user_split[1] + '.' + user_split[2] + '.' + user_split[3];
    document.getElementById(ex_id).value = s8p_obj.to_string();

    // Bild austauschen
    document.getElementById('summa_summarum_' + ex_id + '_' + field).className = 'summa_summarum_input_' + user_split[field - 1];
    //alert('ex_id:' + ex_id + '\ns8p' + document.getElementById(ex_id).value + '\nfield: ' + field + '\nclass: ' + 'summa_summarum_input_' + user_split[field - 1]);
  }
}
function summa_summarum(ex_id, field)
{
  //alert('ex_id:' + ex_id + '\ns8p' + document.getElementById(ex_id).value + '\nfield: ' + field);
  if(document.getElementById(ex_id))
  {
    // s8p-String aendern
    s8p_obj = new s8p(document.getElementById(ex_id).value);
    user_split = s8p_obj.answer_user.split('.');
    if(parseInt(user_split[field - 1]))
      user_split[field - 1] = 0;
    else
      user_split[field - 1] = 1;
    s8p_obj.answer_user = user_split[0] + '.' + user_split[1] + '.' + user_split[2] + '.' + user_split[3];
    document.getElementById(ex_id).value = s8p_obj.to_string();

    // Bild austauschen
    document.getElementById('summa_summarum_' + ex_id + '_' + field).className = 'summa_summarum_input_' + user_split[field - 1];
    //alert('ex_id:' + ex_id + '\ns8p' + document.getElementById(ex_id).value + '\nfield: ' + field + '\nclass: ' + 'summa_summarum_input_' + user_split[field - 1]);
  }
}
/*******************************************************************************
 *
 *                        I N F O F E N S T E R
 *
 ******************************************************************************/

var vmg_Info;  // globale Variable für das Infofenster

function Info(file, width, height, scrolling)
{
  if(vmg_Info && !vmg_Info.closed) // not null, 0, "" oder undefined
    updateInfo(file, width, height, scrolling);
  else
    openInfo(file, width, height, scrolling);
  vmg_Info.window.focus();
}

function updateInfo(file, width, height, scrolling)
{
  vmg_Info.location.href = file;
}

function openInfo(file, width, height, scrolling)
{
  winprops = 'height=' + height + ',width=' + width + ', top=80, left=80, scroll=auto, scrollbars=' + scrolling + ', ping=pong';
  vmg_Info = window.open(file, 'ETT_Info', winprops);
}

function closeInfo()
{
  if(vmg_Info && !vmg_Info.closed) // not null, 0, "" oder undefined
  {
    vmg_Info.close();
    vmg_Info = null;
  }
}

/*******************************************************************************
 *        F O R M U L A R   S U B M I T / R E S E T / H Y P E R L I N K
 *
 ******************************************************************************/
vmg_submit_ok = 1;

// action des angegebenen Formulars wird _ERWEITERT_!!!
// Achtung bei JS kein Überladen möglich, jedenfalls verhält es sich ganz komisch, eher wie überschreiben, die letzte Funktion gilt
function submit_form(form_action, form_name)
{
 if(vmg_submit_ok)
  if(form_name && (form_name != ''))
  {
    window.clearInterval(final_countdown);
    //alert('submit form by name (' + form_name + ')');
    if(document.getElementsByName(form_name)[0].action.indexOf('?') == -1)
      document.getElementsByName(form_name)[0].action = document.getElementsByName(form_name)[0].action + '?' + form_action;
    else
      document.getElementsByName(form_name)[0].action = document.getElementsByName(form_name)[0].action + '&' + form_action;

    document.getElementsByName(form_name)[0].submit();
  }
  else
  {
    window.clearInterval(final_countdown);
    
    // wenn kein Formularname angegeben wurde,
    // wird einfach das erste Formular genommen, dass zur Verfügung steht
    //alert('submit first form to be found in dom');
    if(document.getElementsByTagName('form')[0].action.indexOf('?') == -1)
    {
      document.getElementsByTagName('form')[0].action = document.getElementsByTagName('form')[0].action + '?' + form_action;      
    }
    else
    { 
      var s = document.getElementsByTagName('form')[0].action;
      // Bei Anchor-Tags einfach hintendran
      if(form_action.indexOf('#') == 0)
      {
        s = s + form_action;
      }
      else
      {
        s = s + '&' + form_action;
      }      
      document.getElementsByTagName('form')[0].action = s;      
    }

    
    document.getElementsByTagName('form')[0].submit();
  }
  vmg_submit_ok = 1;
}

function reset_form(form_name)
{
  if(form_name && (form_name != ''))
  {
    // reset-Methode des angegebenen Formulars wird aufgerufen
    //alert('reset form by name (' + form_name + ')');
    document.getElementsByName(form_name)[0].reset();
  }
  else
  {
    // wenn kein Formularname angegeben wurde,
    // wird einfach das erste Formular genommen, dass zur Verfügung steht
    //alert('reset first form to be found in dom');
    document.getElementsByTagName('form')[0].reset();
  }
}

function confirmation_duplexer(confirmer, base_nav, yes_nav, no_nav)
{ //alert('Text: '+confirmer+' \nBasisadr.: '+base_nav+' \nJA-Adr.: '+ yes_nav+' \nNEIN-Adr.: '+ no_nav)
  if(confirm(confirmer))
  {
    if(yes_nav != '')
      window.location.href = base_nav + '?' + yes_nav;
  }
  else
  {
    if(no_nav != '')
      window.location.href = base_nav + '?' + no_nav;
  }
}

/*******************************************************************************
 *                   M I N I - T R A I N I N G S P L A N
 *
 ******************************************************************************/

function create_check_cascade(id)
{
  i = 0;
  while(element = document.getElementsByTagName('input')[i])
  {
    cats_n_types = document.getElementsByTagName('input')[i].id.split('.');
    if(cats_n_types[0] == id)
      document.getElementsByTagName('input')[i].checked = document.getElementById(id).checked;
    i++;
  }
}

function create_check_control(id)
{
  i = 0;
  all_unchecked = true;
  while(element = document.getElementsByTagName('input')[i])
  {
    cats_n_types = document.getElementsByTagName('input')[i].id.split('.');
    if((cats_n_types[0]== id) && (cats_n_types[1] != undefined) && (document.getElementsByTagName('input')[i].checked == true))
    {
      all_unchecked = false;
      break;
    }
    i++;
  }
  if(all_unchecked)
    document.getElementById(id).checked = false;
  else
    document.getElementById(id).checked = true;
  //alert(i);
}

/*******************************************************************************
 *
 *                                  O R D E R
 *
 ******************************************************************************/
function order_type_of_licence()
{     
  // window.alert(document.getElementById('gesamt').innerHTML);
  // alert(document.getElementById('type_of_licence').value);
  if(document.getElementById('type_of_licence').value == 1)
  {
    // Keine Zusatzfelder
    hide('institution');
    hide('schoolcode');    
    hide('licencecount');
    hide('schoolphone');
    document.getElementById('gesamt').innerHTML = "39,90";
  }  
  else if(document.getElementById('type_of_licence').value == 2)  
  {
    // Sammelbestellung
    // Schulcode als Berechtigung
    seek('schoolcode', null);
    hide('institution');
    hide('licencecount');
    hide('schoolphone');
    document.getElementById('gesamt').innerHTML = "49,90";
  }
  else if(document.getElementById('type_of_licence').value == 3)
  {
    // 1 Jahr
    // Keine Zusatzfelder
    hide('institution');
    hide('schoolcode');    
    hide('licencecount');
    hide('schoolphone');
    document.getElementById('gesamt').innerHTML = "39,90";
  }  
  else if(document.getElementById('type_of_licence').value == 6)
  {
    // 2 Jahre
    // Keine Zusatzfelder
    hide('institution');
    hide('schoolcode');    
    hide('licencecount');
    hide('schoolphone');
    document.getElementById('gesamt').innerHTML = "49,90";
  }  
  else if(document.getElementById('type_of_licence').value == 102)  
  {   
    
    // Mehrfachlizenz
    // Schulname und Lizenzanzahl
    seek('schoolcode', null);
    seek('licencecount', null);
    seek('schoolphone',null);
    hide('institution');
    
    // Wieviele Lizenzen sind gewünscht ?
    var anzahl = parseInt( document.getElementById('licence_count').value );                
    if(isNaN(anzahl)) anzahl = 10;
    // Minimum ist 10!
    if(anzahl <= 10) anzahl = 10;    
    
    // Neue Zahl zurückschreiben
    document.getElementById('licence_count').value = anzahl;
        
    // 40% rabatt auf die 39,90 Euro    
    var gesamt = anzahl * 39.90 * 0.6;
    gesamt = gesamt.toFixed(2);  // immer 2 Stellen nach dem Dezimalpunkt
    var ausgabe = gesamt +  " "; // mit String arbeiten
    ausgabe = ausgabe.replace(".",","); // Dezimalpunkt durch Komma ersetzen
    // Gesamtwert anzeigen
    document.getElementById('gesamt').innerHTML = ausgabe;
  }
  else if(document.getElementById('type_of_licence').value == 100)  
  {
    // Schullizenz 100er
    // Schulname
    seek('institution', null);
    hide('schoolcode');
    hide('licencecount');
    hide('schoolphone');
    document.getElementById('gesamt').innerHTML = "408,-";
  }
  else
  {
    hide('institution');
    hide('schoolcode');    
    hide('licencecount');
    hide('schoolphone');
    document.getElementById('gesamt').innerHTML = "?";
  }
  
    
}

function order_type_of_payment()
{
  
  if(document.getElementById('type_of_payment').value == 'Rechnung')
  {
    hide('debit_account');        
  }  
  else 
  { 
    seek('debit_account', null);    
  }
    
}


/*******************************************************************************
 *
 *                          A L L G E M E I N
 *
 ******************************************************************************/
function hide_and_seek(id, style)
{
  if(document.getElementById(id).className == 'hidden')
    document.getElementById(id).className = style;
  else
    document.getElementById(id).className = 'hidden';
}

function seek(id, style)
{
  if(style)
    document.getElementById(id).className = style;
  else
    document.getElementById(id).className = 'visible';
}

function hide(id)
{
  document.getElementById(id).className = 'hidden';
}


/*******************************************************************************
 *
 *                        H O V E R B U T T O N S
 *
 ******************************************************************************/
 function hover(id)
 {

   if(document.getElementById(id) && document.getElementById(id).src)
   {
     if((lif = document.getElementById(id).src.lastIndexOf('0')) != -1)
     {
       document.getElementById(id).src = document.getElementById(id).src.substring(0, lif) + '1' + document.getElementById(id).src.substr(lif + 1, document.getElementById(id).src.length);
     }
     else
       if((lif = document.getElementById(id).src.lastIndexOf('1')) != -1)
       {
         document.getElementById(id).src = document.getElementById(id).src.substring(0, lif) + '0' + document.getElementById(id).src.substr(lif + 1, document.getElementById(id).src.length);
       }
   }
 }

/*******************************************************************************
 *
 *                        Z E I T M E S S U N G
 *
 ******************************************************************************/
var start;
var stop;
var count_init;
var count;
var final_countdown;

var formaction;

function init_countdown(cd, active, fa)
{
  start = new Date();
  start = Date.parse(start.toGMTString());
  count_init = count = cd;
  formaction = fa;
  display_countdown(count, active);
  if(active)
    final_countdown = window.setInterval('countdown()', 1000);
}

function countdown()
{
  count--;
  display_countdown(count, 1);
  if(count <= 0)
  {
    window.clearInterval(final_countdown);
    submit_countdown();
    submit_form(formaction);
  }
}

function submit_countdown()
{
  stop = new Date();
  stop = Date.parse(stop.toGMTString());
  raw = rogue_at_work()
  if(c_corruption = document.getElementById('countdown_corruption'))
    c_corruption.value = raw;
  if(c_count = document.getElementById('countdown_count'))
    c_count.value = count;
}

function display_countdown(cd, active)
{
  if(c = document.getElementById('countdown'))
  {
    if(!active)
      c.className = 'countdown_grey';
    else
      if(cd < 10)
        c.className = 'countdown_red';
      else
        if(cd < 60)
          c.className = 'countdown_yellow';
        else
          c.className = 'countdown_green';
    min = (m = Math.floor(cd / 60)) < 10 ? '0' + m : '' + m;
    sec = (s = (cd % 60)) < 10 ? '0' + s : '' + s;
    c.value = min + ' : ' + sec;
  }
}

// -------------------END
// -----------------------------[------------STOP------------]
function rogue_at_work()
{
  // 5 Sek. Toleranz in Millisekunden
  t = 5000;
  // Zeitdifferenz anhand Initialsierung und akuellem Stand des Countdowns in Millisekunden
  d = 1000 * (count_init - count);
  if( ((start + d) < (stop + t)) && ((start + d) > (stop - t)) )
    return 0;
  else
    return 1;
}

/****************************************************************************
 *
 *                                 USER - ADMIN
 *
 ***************************************************************************/
 
function manset_login_check(field_id)
{
  if(login = document.getElementById(field_id))
    if(login.value.length > 0 && login.value.length < 5)
    {
      vmg_submit_ok = 0;
      alert('Der Benutzername "' + login.value + '" ist zu kurz.\nBitte wählen Sie einen Benutzernamen, der aus mindestens 5 Zeichen besteht.');
      login.focus();
    }
}



function PrintAndClose(url) {  
    windowname = 'printing';
    style = 'pri';
    var standard = "top=20,left=200,scrollbars=yes,resizable=no,status=no,toolbar=no,menubar=no,location=no";
    if (style=="pro" || style=="int" || style=="sef") var size = ",width=700,height=500";
    else if (style=="poi") var size = ",width=500,height=480";
    else if (style=="pri") var size = ",width=740,height=600";
    else if (style=="cms") var size = ",width=500,height=400";
    newwin = window.open(url,windowname,standard+""+size);
    newwin.focus(self);
    
    //newwin.print();
    //newwin.close(); 
    
 }
 