/**
 * mlbk_lessons.js
 *
 * A collection of Javascript commands of the mlbk lessons.
 * Based on jQuery.
 *
 * @author    Stefan Matth�us
 * @copyright kommzept
 * @version   1.0
 */



var backgroundColorCanvas = 'rgb(244,244,244)';
var borderColorCanvas = 'rgb(0,0,0)';
fullVariableAr =  'V184breakV15breakV37breakV185breakV490breakV502breakV503breakV549breakV491';
jQuery(document).ready( function() {
   var lektionURL=shopUrl + 'lektionen.html';
   

/*
*****************************************************

   �bung H�ufigkeitstabelle erg�nzen 1
   
*****************************************************
*/
   jQuery('#haeufigkeitstabelle_ergaenzen_1').ready(function(){
      if(jQuery('#haeufigkeitstabelle_ergaenzen_1').html() == null)
         return false;
      dataAr = new Array();
      var variablenStr = makeVariablenAr(dataAr);
      getDataVariablen('haeufigkeitstabelle_variablen', variablenStr);
      jQuery('#neueWerte').live('click',function(event){
         var variable = jQuery('#select_haeufigkeitsdiagramm1 ').val();
         for(i=1;i<10;i++){
            jid = '#int_1_'+i;
            jQuery(jid).attr('value', '');
         }
         getData('getTable', 'haeufigkeitstabelle1', '#haeufigkeitstabelle_ergaenzen_1', variable);
         event.preventDefault();
      // Zur�cksetzen der Werte
      });
   // Berechnung (f�r alle Felder)
   jQuery('#haeufigkeitstabelle_ergaenzen_1_rechnung input.submit').live('click', function(){
      for(i=0; i<9;i++) {
         var id = i;
         var jid = '#'+id;
         var value1_n = '#int_1_' + id;
         var value2_n = '#int_2_' + id;
         var value1 = jQuery(value1_n).attr('value');
         var value2 = jQuery(value2_n).attr('value');
         var value =  parseInt(value1)+parseInt(value2);
         var tablefield = 'td.tablefield_3_' + id ;
         var id2 = parseInt(id)-1;
         var jid2 = '#' + id2;
      /* Berechne das richtige Ergebnis*/
         if (id>0){
            lastvalue=parseInt(jQuery(jid2).attr('value')) + parseInt(jQuery(tablefield).text());
         }
         else{
            lastvalue=0 + parseInt(jQuery(tablefield).text());
         }
         tableclass1= (lastvalue==value) ? 'green' : 'red';
         tableclass2= (lastvalue==value) ? 'red' : 'green';
         value = (isNaN(value)) ? '' : value;
         if(jQuery(value1_n).attr('value') != '' && jQuery(value2_n).attr('value') != ''){
            jQuery(jid).attr('value', value);
            jQuery(jid).removeClass(tableclass2);
            jQuery(jid).addClass(tableclass1);
         }
      }

   });
   // Daten Variablen bezogen holen
   jQuery('#select_haeufigkeitsdiagramm1').change(function(){
      var variable = jQuery(this).val();
      if (variable==0){
         jQuery('#neueWerte').hide();
         jQuery('#haeufigkeitstabelle_ergaenzen_1').html('');
      }
      else{
         jQuery('#neueWerte').show();
      }

      getData('getTable', 'haeufigkeitstabelle1', '#haeufigkeitstabelle_ergaenzen_1', variable);

      for(i=1;i<10;i++){
         jQuery('#int_2_0').attr('value', '');
         jid = '#int_1_'+i;
         jid2 = '#int_2_'+i;
         jQuery(jid).attr('value', '');
         jQuery(jid2).attr('value', '');
      }
   });
   return 0;
});

/*
*****************************************************
   �bung H�ufigkeitstabelle erg�nzen 2
*****************************************************
*/
   jQuery('#haeufigkeitstabelle_ergaenzen_2').ready(function(){
      if(jQuery('#haeufigkeitstabelle_ergaenzen_2').html() == null)
         return false;
      var variablenStr = '';
      getDataVariablen('haeufigkeitstabelle_variablen', variablenStr);


      // Neue Werte
      jQuery('#neueWerte').live("click",function(event){
         var variable = jQuery('#select_haeufigkeitstabelle2').val();
         getDataAndN('getTable', 'haeufigkeitstabelle2', '#haeufigkeitstabelle_ergaenzen_2', variable);
         event.preventDefault();

         for(i=1;i<10;i++){
            jid = '#int_1_'+i;
            jQuery(jid).attr('value', '');
        }

      });
      // Hole die Tabelle mit n Wert
      // Daten Variablenbezogen holen
      jQuery('#select_haeufigkeitstabelle2').change(function(){
         var variable = jQuery(this).attr('value');
         if (variable == 0){
            jQuery('#neueWerte').hide();
            jQuery('#haeufigkeitstabelle_ergaenzen_2').html('');
         }
         else{
            jQuery('#neueWerte').show();
            getDataAndN('getTable','haeufigkeitstabelle2','#haeufigkeitstabelle_ergaenzen_2',variable);
               for(i=1;i<20;i++){
                  jid = '#int_1_'+i;
                  jQuery(jid).attr('value', '');
               }
         }
      });
      // Rechnung
      jQuery('#haeufigkeitstabelle_ergaenzen_2_rechnung input.submit').live("click", function(event){
         var summe = 0;
         var n = parseInt(jQuery('#n').html());
         for(i=0; i<20;i++) {
            var id = i;
            var jid = '#'+id;
            var value1_n = '#int_1_' + id;
            var value2_n = '#int_2_' + id;
            var value1 = jQuery(value1_n).attr('value');
            var value2 = jQuery(value2_n).attr('value');
            var value =  parseInt(value1) / n;
            var tablefield = 'td.tablefield_3_' + id ;
            var id2 = parseInt(id)-1;
            var jid2 = '#' + id2;
            if (id>0){
               lastvalue= parseInt(jQuery(tablefield).text()) / n;
            }
            else{
               lastvalue= parseInt(jQuery(tablefield).text()) / n;
            }
            /* Berechne die Summe*/
            wert = parseInt(jQuery('jid').attr('value'));
            tableclass1= (lastvalue==value) ? 'green' : 'red';
            tableclass2= (lastvalue==value) ? 'red' : 'green';
            value = (isNaN(value)) ? '' : value;
            if(jQuery(value1_n).attr('value') != '' && jQuery(value2_n).attr('value') != ''){
               jQuery(jid).attr('value', value);
               jQuery(jid).removeClass(tableclass2);
               jQuery(jid).addClass(tableclass1);
            }
            var summe = (!isNaN(value)) ? summe = summe+value : summe;
         }
         summe= round(summe);
         // Zuteilung der Farbe gr�n wenn richtig rot wenn falsch ""
         if(summe == 1){
            jQuery('#summe').attr('value', summe);
            jQuery('#summe').removeClass('red');
            jQuery('#summe').addClass('green');
         }
         else{
            jQuery('#summe').attr('value', summe);
            jQuery('#summe').removeClass('green');
            jQuery('#summe').addClass('red');
         }
      event.preventDefault();
      });

   return 0;
   });

/*
*****************************************************
�bung Kreisdiagramm
*****************************************************
*/


   jQuery('#kreisdiagramm').ready(function(){
      if(jQuery('#kreisdiagramm').html() == null)
         return false;
      var variablenStr = '';
      // Hole die Variablen
      getDataVariablen('haeufigkeitstabelle_variablen', variablenStr);
      var colorAr = getColorAr();
      var newround = false;
      jQuery('#submit_kreisdiagramm').hide();
      // Hole neue Werte Setze die Tabelle zur�ck
      jQuery('#select_kreisdiagramm').change(function(){
         var variable = jQuery(this).val();
         if(variable == '0'){
            jQuery('#submit_kreisdiagramm').hide();
            jQuery('#kreisdiagramm_table').html('');
         }
         else {
            jQuery('#submit_kreisdiagramm').show();
         }
         getData('getTable', 'kreisdiagramm', '#kreisdiagramm_table', variable);
         clearCanvas('',250, 250);
         newround = true;
      });

      var count = 1;
      var position = 0;
      // Erstelle das Kreisdiagramm (immer nur ein "St�ck")
      jQuery('#submit_kreisdiagramm').live("click", function(){

         if(newround == true){
            count = 1;
            newround = false;
            position = 0;
            var message = unescape('Kreisdiagramm vervollst%E4ndigen');
            jQuery('#submit_kreisdiagramm').val(message);
         }
         else{
            var message = unescape('Kreisdiagramm vervollst%E4ndigen');
            jQuery('#submit_kreisdiagramm').val(message);
         }
         var dataSum = 200;
         var centerx = 150;
         var centery = 105;
         var radius = 100;
         var jid= '#kreisdiagramm_table #' + count;
         var val = jQuery(jid).text();
         var prozentjid = '#kreisdiagramm_table td.prozent_' + count;
         var prozent = (100 / 200) * val;
         jQuery(prozentjid).text(prozent + '%');
         jQuery(prozentjid).show();
         var smallest = (360 / dataSum);
         var piece = val * smallest;
         var newposition = position + piece;
         if(count == 1){
            jQuery('td').each(function(){
               jQuery(this).css('background-color', 'transparent');
            });
         }
         if(val == ''){
            myAlert('Das Kreisdiagramm ist nun vollst%E4ndig');
            count = 1;
            jQuery('#submit_kreisdiagramm').val('Kreisdiagramm neu erstellen');
         }
         else{
            var ctx = document.getElementById('canvas').getContext("2d");
            ctx.fillStyle = "#FFFFFF";
            ctx.beginPath();
            ctx.moveTo(centerx, centery);
            ctx.arc(centerx, centery, radius, toRad(0), toRad(360), false);
            ctx.closePath();
            ctx.fill();
            var r = Math.ceil(Math.random()*255);
            var g = Math.ceil(Math.random()*255);
            var b = Math.ceil(Math.random()*255);
            var position2 = 0;
            if(count != 1){
               for(i=0; i<count; i++){
                  var jid2 = '#kreisdiagramm_table #' + i;
                  var val2 = jQuery(jid2).text();
                  var piece2 = val2 * smallest;
                  var newposition2 = position2 + piece2;
                  color = 'rgb('+ colorAr[i][0] +','+ colorAr[i][1] + ','+ colorAr[i][2] +')',
                  ctx.fillStyle = color;
                  ctx.beginPath();
                  ctx.moveTo(centerx, centery);
                  ctx.arc(centerx, centery, radius, toRad(position2), toRad(newposition2), false);
                  ctx.closePath();
                  ctx.fill();
                  position2 = newposition2;
               }
            }
            color = 'rgb('+ colorAr[count][0] +','+ colorAr[count][1] + ','+ colorAr[count][2] +')',
            ctx.fillStyle = color;
            jQuery(jid).css('background-color' , color);
            jQuery(prozentjid).css('background-color' , color);
            ctx.beginPath();
            ctx.moveTo(centerx, centery);
            ctx.arc(centerx, centery, radius, toRad(position), toRad(newposition), false);
            ctx.closePath();
            ctx.fill();
            
            count++;

            position = newposition;

         }
      });
   return 0;
   });


/*
*****************************************************
�bung Standardabweichung
*****************************************************
*/
   variable = '';
   jQuery('#standardabweichung_uebung').ready(function(){
      if(jQuery('#standardabweichung_uebung').html() == null){
         return false;
      }
      var variablenStr = ''; 
      getDataVariablen('haeufigkeitstabelle_variablen', variablenStr);
      // Hole Werte Variablenbezogen
      jQuery('#select_standardabweichung').change(function(){
         var variable = jQuery(this).val();
         getDataStandardabweichung('getTable', 'standardabweichung', '#standardabweichung_table', variable);
         clearCanvas();
         $.plot($('#standardabweichung_flot'), [
            {
               data:  '',
               points: { show: true },
               lines: { show : true }
            }
         ]);

      });
   // Hole neue Werte f�r die Tabelle , Setze canvas zurueck
   jQuery('#neueWerte').live("click",function(event){
      var variable = jQuery('#select_standardabweichung').val();
      getDataStandardabweichung('getTable', 'standardabweichung', '#standardabweichung_table', variable);
      clearCanvas();
      if(jQuery('#overlay_canvas').html() != null){
         jQuery('#overlay_canvas').html('');
      }
      event.preventDefault();
   });
      // Markiere die selektierten Tabellenfelder und hole die Value
      jQuery('#standardabweichung_table td.select').live("click" ,function(){
         jQuery('#standardabweichung_table  td.select').each(function(){
            jQuery(this).removeClass('selected');
         });
         jQuery(this).addClass('selected');
         var id = jQuery(this).text();
         var jid = '.x_' + id;
         var wert = jQuery(jid).text();
         var id = jQuery(this).text();
         var jid = '#dataForFlot' + id;
         evalStr = jQuery(jid).html();
         dataAr = eval(evalStr);

         $.plot($('#standardabweichung_flot'), [
            {
               data:  dataAr,
               points: { show: true },
               lines: { show : true }
            }
         ]);
      });
      return 0;
   });

/*
*****************************************************
�bung Dispersionsma�e Zusammmenfassung
*****************************************************
*/
jQuery('#dispersionsmasse_zusammenfassung').ready(function(){
      if(jQuery('#dispersionsmasse_zusammenfassung').html() == null)
         return false;
   var variablenStr = '';
   getDataVariablen('haeufigkeitstabelle_variablen', variablenStr);
   //var variable = '';
// Hole Daten
   //getDataForDispersionsmasseZusammenfassung(variable);
   jQuery('#select_dispersionsmasse_zusammenfassung').change(function(){
      var variable = jQuery(this).val();
      getDataForDispersionsmasseZusammenfassung(variable);
   });
   jQuery('#select_dispersionsmasse_zusammenfassung').change(function(){
      var variable = jQuery('#uebung .werte_aendern #select_dispersionsmasse_zusammenfassung').val();
      getDataForDispersionsmasseZusammenfassung(variable);


   });
   // Setze selektiertes Feld
   jQuery('#dispersionsmasse_zusammenfassung .select').live('click', function(){
      var id = jQuery(this).attr('id');
      var vid = '#v' + id ;
      jQuery(vid).children('div').addClass('shown');
      jQuery(this).addClass('selected');
   });

   return 0;
});


/*
*****************************************************
�bung Polygonzug
*****************************************************
*/
jQuery('#polygonzug').ready(function(){
   if(jQuery('#polygonzug').html() == null)
      return false;
   var variablenStr = fullVariableAr;
   // Hole Variablen und Tabellendaten
   getDataVariablen('haeufigkeitstabelle_variablen', variablenStr);
   //getData('getTable', 'balkendiagramm', '#polygonzug_table');
   jQuery('#submit_polygonzug').hide();
   jQuery('#neueWerte').hide();
   // hole Werte Variablenbezogen

   jQuery('#select_polygonzug').change(function(){
      var variable = jQuery(this).val();
      if(variable == '0'){
         jQuery('#submit_polygonzug').hide();
         jQuery('#polygonzug_flot').html('');
      }
      else {
         jQuery('#submit_polygonzug').show();
      }
      jQuery('#neueWerte').hide();
      getData('getTable', 'balkendiagramm', '#polygonzug_table', variable);
   });
   // Hole neue Werte berechne Tabelle und Grafik neu
   jQuery('#neueWerte').live('click', function(event){
      var variable = (jQuery('#select_polygonzug').val() != 0) ? jQuery('#select_polygonzug').val():'V184';
      getData('getTable', 'balkendiagramm', '#polygonzug_table', variable);
      getDataForFlotPolygonzug('polygonzug_flot', '#polygonzug_flot', '0');
      clearCanvas();
      event.preventDefault();
   });

   // erstelle Grafik
   jQuery('#submit_polygonzug').live('click', function(){
      var dataForFlot = jQuery('#dataForFlot').html();
      jQuery('#neueWerte').show();
      flotData = eval(dataForFlot);
      $.plot($('#polygonzug_flot'), [
         {
             data:  flotData,
             points: { show: true },
             lines: {show:true}
         }
      ]);
   });
   return 0;
});


/*
*****************************************************
�bung Histogramm
*****************************************************
*/
jQuery('#histogramm').ready(function(){
   if(jQuery('#histogramm').html() == null)
      return false;
   var variablenStr = fullVariableAr;
   // Hole Tabellen und Variablendaten
   getDataVariablen('haeufigkeitstabelle_variablen',  variablenStr );
   jQuery('#submit_histogramm').hide();
   jQuery('#neueWerte').hide();

   // Hole neue Werte , setze Flotgrafik zurueck
   jQuery('#neueWerte').live('click', function(event){
      clearCanvas();
      variable = (jQuery('#select_histogramm').val() != 0) ? jQuery('#select_histogramm').val(): 'V184';
      getData('getTable', 'histogramm_flot', '#histogramm_table', variable);
      flotData = eval(jQuery('#dataForFlot').text());
      event.preventDefault();
   });

   // Hole Tabellendaten Variablenbezogen und setze canvas zurueck
   jQuery('#select_histogramm').change( function(){
      var variable = jQuery(this).val();
      var search = 'option[value=' + variable + ']';
      var skalenniveau = jQuery(search).attr('class');
      notAllowedAr = new Array('ordinal', 'nominal');
      var allowed = checkSkalenniveau( skalenniveau , notAllowedAr);
      if(allowed == false ){
         variable = 0;
      }
      if(variable == '0'){
         jQuery('#table_histogramm').html('');
         jQuery('#submit_histogramm').hide();
         jQuery('#histogramm_neueWerte').hide();
         jQuery('#canvas_histogramm').html('');
      }
      else{
         jQuery('#submit_histogramm').show();
      }
      jQuery('#neueWerte').hide();

      getData('getTable', 'histogramm_flot', '#histogramm_table', variable);
      clearCanvas();
   });
   // erstelle die Grafik
   jQuery('#submit_histogramm').live('click', function(){
      var flotData = jQuery('#dataForFlot').text();
      flotData = eval(flotData);
      jQuery('#neueWerte').show();
      var canvasElement = '#canvas';
      var canvas = document.getElementById('canvas');
      
      ctx = canvas.getContext("2d");
      drawBars(flotData,canvasElement,'histogramm', ctx);
   });
   return 0;
});


/*
*****************************************************
�bung Balkendiagramm
*****************************************************
*/



   jQuery('#balkendiagramm').ready(function(){
      if(jQuery('#balkendiagramm').html() == null)
         return false;
      var variablenStr = '';
// Hole Variablendaten
      getDataVariablen('haeufigkeitstabelle_variablen',  variablenStr );
      jQuery('#submit_balkendiagramm').hide();
      jQuery('#neueWerte').hide();
      jQuery('#select_balkendiagramm').change(function(){
         var variable = jQuery(this).val();
         jQuery('#neueWerte').hide();
         if(variable == '0' ){
            jQuery('#balkendiagramm_table').html('');
            jQuery('#submit_balkendiagramm').hide();
         }
         else {
            jQuery('#submit_balkendiagramm').show();
         }
         getData('getTable', 'balkendiagramm', '#balkendiagramm_table', variable);
         clearCanvas();

      });


      jQuery('#submit_balkendiagramm').live("click",function(){
         var variable = jQuery('#select_balkendiagramm').val();
         clearCanvas();
         getDataForFlotBalkendiagramm('balkendiagramm_flot', '#canvas', variable);
         jQuery('#neueWerte').show();
      });
      // Hole neue Werte
      jQuery('#neueWerte').live('click', function(event){
         var variable = jQuery('#select_balkendiagramm').val();
         if(variable != 0){
            getData('getTable', 'balkendiagramm', '#balkendiagramm_table', variable);
            clearCanvas();
           // getDataForFlotBalkendiagramm('balkendiagramm_flot', '#canvas', variable);
         }
         event.preventDefault();
      });
   return 0;
   });





/*
*****************************************************
�bung Punktdiagramm
*****************************************************
*/




  jQuery('#punktdiagramm').ready(function(){
      if(jQuery('#punktdiagramm').html() == null)
         return false;
         
      var variablenStr = '';
      getDataVariablen('haeufigkeitstabelle_variablen' , variablenStr);

    //  jQuery('#charting_punktdiagramm').hide();
      jQuery('#submit_punktediagramm').hide();

      jQuery('#select_punktdiagramm').change(function(){
         var variable = jQuery(this).val();
         var search = 'option[value=' + variable + ']';
         var skalenniveau = jQuery(search).attr('class');
         notAllowedAr = new Array('nominal');
         var allowed = checkSkalenniveau( skalenniveau , notAllowedAr);
         if(allowed == false ){
            variable = 0;
         }
         if(variable == 0){
            jQuery('#submit_punktediagramm').hide();
            jQuery('#overlay_canvas').hide();
         }
         else {
            jQuery('#charting_punktdiagramm').show();
            jQuery('#submit_punktediagramm').show();
         }
         var replaceTarget = '#charting_punktdiagramm';
         jQuery.plot(jQuery(replaceTarget), [
            {
               data:  '',
               points: { show: true }
            }
         ]);

      });
      
      jQuery('#submit_punktediagramm').live("click", function(){
         var variable = jQuery('#select_punktdiagramm').val();
         var replaceTarget = '#charting_punktdiagramm';
         var table = 'punktdiagramm_flot';
         jQuery.get(lektionURL, { action : 'getFlot', uebung : table , variable : variable },
            function(data){
               returnAr = eval(data);
               var teststring = '';
               for (i=0;i<returnAr.length;i++){
                  teststring = teststring + returnAr[i][0]+', '+returnAr[i][1]+"\n";
               }
               $.plot($(replaceTarget), [
                  {
                     data:  returnAr,
                     points: { show: true }
                  }
               ]);
         });
      });
   return 0;
});

/*
*****************************************************
�bung Haeufigkeitsdiagramm
*****************************************************
*/
   jQuery('#haeufigkeitsdiagramm').ready(function(){
      if(jQuery('#haeufigkeitsdiagramm').html() == null)
         return false;
      var variablenStr = '';
      getDataVariablen('haeufigkeitstabelle_variablen', variablenStr);
      //getData('getTable', 'balkendiagramm', '#haeufigkeitsdiagramm_table');
      jQuery('#select_haeufigkeitsdiagramm').change(function(){
         var variable = jQuery(this).val();
         var search = 'option[value=' + variable + ']';
         var skalenniveau = jQuery(search).attr('class');
         notAllowedAr = new Array();
         var allowed = checkSkalenniveau( skalenniveau , notAllowedAr);
         if(allowed == false ){
            variable = 0;
         }
         if(variable == '0'){
            jQuery('#haeufigkeitsdiagramm_table').html('');
            jQuery('#haeufigkeitsdiagramm_charting').html('');
         }
         clearCanvas('canvas');
         if(jQuery('#overlay_canvas').html() != null){
            clearCanvas('overlay_canvas');
            jQuery('#canvas').css('z-index','2000');
            jQuery('#canvas').css('position','absolute');
         }
         jQuery('#select_haeufigkeitsdiagramm_diagrammart').val('');
         getData('getTable', 'balkendiagramm', '#haeufigkeitsdiagramm_table', variable);
      });

      jQuery('#select_haeufigkeitsdiagramm_diagrammart').change(function(){
         var i = 0;
         if(jQuery(this).val()==0){
            jQuery('#haeufigkeitsdiagramm_table').html('');
            jQuery('#haeufigkeitsdiagramm_charting').html('');
         }
         jQuery('#haeufigkeitsdiagramm_table .vorkommen').each(function(){
            i++;
            var jid = '#haeufigkeitsdiagramm_table .prozent_' + i;
            jQuery(jid).css({'background-color' : 'transparent'});
            jQuery(jid).hide();
         });
         var chart_type = jQuery(this).val();
         var variable = jQuery('#select_haeufigkeitsdiagramm').val();
         var variablenOption = 'option[value=' + variable + ']'; 
         var variableClass = jQuery(variablenOption).attr('class');
         clearCanvas('canvas');
         if(jQuery('#overlay_canvas').html() != null){
            clearCanvas('overlay_canvas');
            jQuery('#canvas').css('z-index','2000');
            jQuery('#canvas').css('position','absolute');
         }
         //clearCanvas('overlay_canvas');
         var canvasElement = '#canvas';
         var canvas = document.getElementById('canvas');
         ctx = canvas.getContext("2d");
         // BalkenDiagramm
         if(chart_type == 'bar'){
            // �berpruefung auf das richtige Skalenniveau
            var search = 'option[value=' + variable + ']';
            var skalenniveau = jQuery(search).attr('class');
            notAllowedAr = new Array('nominal');
            var allowed = checkSkalenniveau( skalenniveau , notAllowedAr);
            if(allowed == false ){
               variable = 0;
            }
            if(variable == '0'){
               jQuery('#haeufigkeitsdiagramm_table').html('');
               jQuery('#haeufigkeitsdiagramm_charting').html('');
            }
            clearCanvas('canvas');
            /////
            var i = 1;
            var returnStr = 'new Array(';
            jQuery('#haeufigkeitsdiagramm_table td.vorkommen').each(function(){
               var jid= '#haeufigkeitsdiagramm_table #' + i;
               var val = jQuery(jid).text();
               if (i==1){
                  returnStr = returnStr + '[' + i + ' , ' + val + ']'
               }
               else{
                  returnStr = returnStr + ',[' + i + ' , ' + val + ']'
               }
               i++;
             });
             returnStr = returnStr + ');' ;
             flotdata = eval(returnStr);
             drawBars(flotdata, '#canvas','bars', ctx);
         }
         //  Kreisdiagramm
         else if(chart_type == 'pie'){
            colorAr =  getColorAr();
            position = 0;
            var count = 1;
            var dataSum = 200;
            var centerx = 130;
            var centery = 100;
            var radius = 100;
            var jid= '#haeufigkeitsdiagramm_table #' + count;
            var val = jQuery(jid).text();
            var prozentjid = '#haeufigkeitsdiagramm_table td.prozent_' + count;
            var prozent = (100 / 200) * val;
            jQuery(prozentjid).text(prozent + '%');

            var smallest = (360 / dataSum);
            var piece = val * smallest;
            var newposition = position + piece;
      /*      if(count == 1){
                jQuery('td').each(function(){
                jQuery(this).css('background-color', 'transparent');
             });
            }*/
            var ctx = jQuery('#canvas')[0].getContext("2d");

            // Hintergrund
            ctx.fillStyle = "#dddddd";
            ctx.beginPath();
            ctx.moveTo(centerx, centery);
            ctx.arc(centerx, centery, radius + 1, toRad(0), toRad(360), false);
            ctx.closePath();
            ctx.fill();

            ctx.fillStyle = "#FFFFFF";
            ctx.beginPath();
            ctx.moveTo(centerx, centery);
            ctx.arc(centerx, centery, radius, toRad(0), toRad(360), false);
            ctx.closePath();
            ctx.fill();
            var position = 0;
            var i = 0;
            jQuery('#haeufigkeitsdiagramm_table .vorkommen').each(function(){
               i++;

               var jid = '#haeufigkeitsdiagramm_table #' + i;
               var val = jQuery(jid).text();
               var piece = val * smallest;
               var newposition = position + piece;
               var prozentjid = '#haeufigkeitsdiagramm_table td.prozent_' + i;
               jQuery(prozentjid).show();
               var prozent = (100 / 200) * val;
               color = 'rgb('+ colorAr[i][0] +','+ colorAr[i][1] + ','+ colorAr[i][2] +')';
               jQuery(prozentjid).text(prozent + '%');
               jQuery(prozentjid).css('background-color' , color);
               jQuery(prozentjid).css('color' , colorAr[i][3]);
               ctx.fillStyle = color;
               ctx.beginPath();
               ctx.moveTo(centerx, centery);
               ctx.arc(centerx, centery, radius, toRad(position), toRad(newposition), false);
               ctx.closePath();
               ctx.fill();
               position = newposition;
           });

         }
         else if(chart_type == 'histogramm'){
            // �berpruefung auf das richtige Skalenniveau
            var search = 'option[value=' + variable + ']';
            var skalenniveau = jQuery(search).attr('class');
            notAllowedAr = new Array('nominal');
            var allowed = checkSkalenniveau( skalenniveau , notAllowedAr);
            if(allowed == false ){
               variable = 0;
            }
            if(variable == '0'){
               jQuery('#haeufigkeitsdiagramm_table').html('');
               jQuery('#haeufigkeitsdiagramm_charting').html('');
               clearCanvas('canvas');
               return false;
            }
            // Erstellen des Histogramms
            var dataForFlot = jQuery('#dataForFlot').html();
            var flotData = eval(dataForFlot);
            drawBars(flotData,'#canvas','histogramm', ctx);
         }
         else if(chart_type == 'polygonzug'){
            var dataForFlot = jQuery('#dataForFlot').html();
            var flotData = eval(dataForFlot);
            $.plot($('#haeufigkeitsdiagramm_charting'), [
               {
                  data:  flotData,
                  points: { show: true },
                  lines: {show: true}
            }]);
         }
      });
   return 0;
  });
/*
*****************************************************
�bung Anwendung
*****************************************************
*/


   jQuery('#anwendung').ready(function(){
      if(jQuery('#anwendung').html() == null)
         return false;

      jQuery('#anwendung_table1').html(getDataForAnwendung('V15','#anwendung_table1'));
      jQuery('#anwendung_table2').html(getDataForAnwendung('V184','#anwendung_table2'));

      jQuery('#select_anwendung1').change(function(){
         clearCanvas('canvas1');
         if(jQuery('#overlay_canvas').html() != null){
            clearCanvas('overlay_canvas');
            jQuery('#canvas').css('z-index','2000');
            jQuery('#canvas').css('position','absolute');
         }
         jQuery('#anwendung_table1 .percent').remove();
         var jid = '';
         var val = '';
         var id = '';
         array1 = new Array();
         array2 = new Array();
         var flotData = '';
         if(jQuery(this).val() == 0){
            clearCanvas('canvas1');   
         }
         else if(jQuery(this).val() == 3){
            var dataForFlot = jQuery('#dataForFlot1').html();
            var flotData = eval(dataForFlot);
            var ctx = document.getElementById('canvas1').getContext("2d");
            drawBars(flotData, '#canvas1','bars', ctx);
         }
         else if(jQuery(this).val() == 4){
             getKreisdiagrammAnwendung(1, 1);
         }
         else{
            myAlert('Diese Diagrammart ist f%FCr diesen Datensatz ung%FCltig');
         }
      });

      jQuery('#select_anwendung2').change(function(){
         jQuery('#anwendung_table2 .percent').remove();
         clearCanvas('canvas');
         if(jQuery('#overlay_canvas').html() != null){
            clearCanvas('overlay_canvas');
            jQuery('#canvas').css('z-index','2000');
            jQuery('#canvas').css('position','absolute');
         }
         var jid = '';
         var val = '';
         var id = '';
         array1 = new Array();
         array2 = new Array();
         var flotData = '';
         
         if(jQuery(this).val() == 1){
            var dataForFlot = jQuery('#dataForFlot2').html();
            var flotData = eval(dataForFlot);
            ctx = document.getElementById('canvas').getContext("2d");
            drawBars(flotData, '#canvas','histogramm', ctx);
         }
         else if(jQuery(this).val() == 2) {
            var dataForFlot = jQuery('#dataForFlot2').html();
            var flotData = eval(dataForFlot);
            $.plot($('#anwendung_charting2'), [
            {
               data:  flotData,
               points: { show: true },
               lines: {show:true}
            }
            ]);

         }
         else if(jQuery(this).val() == 3){
            var dataForFlot = jQuery('#dataForFlot2').html();
            var flotData = eval(dataForFlot);
            var ctx = document.getElementById('canvas').getContext("2d");
            drawBars(flotData, '#canvas','bars', ctx);

         }
         else if(jQuery(this).val() == 4){
             getKreisdiagrammAnwendung(2, 1);
         }
         else
            myAlert();
        });
   return 0;
   });

/*
******************************************************************
   �bung Standardisierung
******************************************************************
*/
   jQuery('#standardisierung').ready(function(){
      if(jQuery('#standardisierung').html() == null)
         return false;
      var variablenStr = '';
      getDataVariablen('haeufigkeitstabelle_variablen', variablenStr);
      var ok = 0;
      jQuery('#show_graphic').click(function(){
         myAlert('click');
      });

      jQuery('#select_standardisierung').change(function(){
         jQuery('#standardisierung_charting1').html('<canvas id="canvas_standardisierung1" width="300" height="200"></canvas>');
         jQuery('#standardisierung_charting2').html('<canvas id="canvas_standardisierung1" width="300" height="200"></canvas>');
         var variable = jQuery(this).val();
         jQuery.get(lektionURL, {action : 'getDataForFlot', uebung : 'standardisierung', variable : variable },
         function(data){
            if(data != ''){
               jsAr = data.split('#');

               jQuery('#dataForFlot1').html(jsAr[0]);
               jQuery('#dataForFlot2').html(jsAr[1]);
               //drawBars(eval(jsAr[0]), '#dataForFlot1_test');
               $.plot($('#standardisierung_charting'), [
               {
                  data : eval(jsAr[0]),
                  bars: {show : true}
               }
         ]);
            }
            else{
               myAlert('Fehler in der DB Verbindung');
            }
         });
      });

      jQuery('#zentriert').bind('click',function(){
         ok = 1;
         jQuery('#standardisierung_charting1').hide();
         var variablenid = jQuery('#select_standardisierung').val();
         var dataArSrc = jQuery('#dataForFlot1').html();
         dataAr = eval(dataArSrc);

         if(dataAr != undefined){
            var mittelwert = getMittelwertClass(dataAr);
            var standardabweichung = getStandardabweichungClass(dataAr);
            jQuery('#mittelwert').html(mittelwert);
            jQuery('#standardabweichung').html(standardabweichung);
            dataAr = getZentrierung(dataAr, mittelwert);
            //drawBars(dataAr, '#dataForFlot1_test');
            var evalStr = 'new Array(';
            for(i=0;i<dataAr.length;i++){
               if(i==0){
                  evalStr = evalStr + '[' + dataAr[i][0] + ',' + dataAr[i][1] + ']';
               }
               else {
                  evalStr = evalStr +  ',[' + dataAr[i][0] + ',' + dataAr[i][1] + ']';
               }
            }
            evalStr = evalStr + ');';
            jQuery('#dataForFlot3').html(evalStr);
               $.plot($('#standardisierung_charting1'), [
                  {
                  data:  dataAr,
                  bars: { show: true }
                  }
               ]);
               jQuery('#standardisierung_charting1').fadeIn('5000');
            }
      });


      jQuery('#normiert').bind('click',function(){
         if (ok == 1){
            var dataArSrc = jQuery('#dataForFlot3').html();
            var string = '';
            dataAr = eval(dataArSrc);
            var mittelwert = jQuery('#mittelwert').html();
            var standardabweichung = jQuery('#standardabweichung').html();
            dataAr = getNormierung(dataAr, mittelwert, standardabweichung);
            for(i=0;i<dataAr.length;i++){
               dataAr[i][0] = dataAr[i][0] + 5;
               string = string + i + ': ' + dataAr[i][0] + "\n";

         }
            $.plot($('#standardisierung_charting2'), [
            {
               data : dataAr,
              bars: {show : true}
            }
            ]);
            }
            else{
               myAlert('Zentrieren Sie die Daten erst');
         }
      });
   return 0;
});

/*
******************************************************************
   �bung Prozentwerte
******************************************************************
*/

   jQuery('#prozentwerte').ready(function(){
      if(jQuery('#prozentwerte').html() == null)
         return false;
      var variable = '';
      var display = 0;
      var div = '#prozentwerte_table'
      var selection = 0;
      getDataForProzentwerte(div, variable, selection);
      jQuery('#anmerkung').live('click', function(event){
         if(display == 1){
            jQuery('#anmerkung_grafik').fadeOut('slow');
            display = 0;
         }
         else{
            jQuery('#anmerkung_grafik').fadeIn('slow');
            display = 1;
         }
         event.preventDefault();
      });
      jQuery('#anmerkung_grafik').click(function(){
         jQuery(this).fadeOut('slow');
         display = 0;
      });

      jQuery('#ee_table td.pr').live('click',function(){
         var selection = jQuery(this).text();
         var dataArSrc = jQuery('#dataForFlot1').html();

         dataAr = eval(dataArSrc);
         drawBarsProzentwerte(dataAr, '#prozentwerte_canvas1', selection);

         color2 = jQuery('#uebung td').css('background-color');
         jQuery('#ee_table td.pr').css({'background-color' : color2});

         color = getColorFromColorArray(4);
         jQuery(this).css({'background-color' : color});
      });
      jQuery('#alter_table td.pr').live('click',function(){
         var selection = jQuery(this).text();
         var dataArSrc = jQuery('#dataForFlot2').html();
         dataAr = eval(dataArSrc);
         drawBarsProzentwerte(dataAr, '#prozentwerte_canvas2', selection);

         color2 = jQuery('#uebung td').css('background-color');
         jQuery('#alter_table td.pr').css({'background-color' : color2});
         color = getColorFromColorArray(4);
         jQuery(this).css({'background-color' : color});
      });
   return 0;
   });

      jQuery('#draggable').draggable();

      jQuery('#droppable').droppable({
         accept: '#draggable',
         activeClass: 'bla',
         hoverClass: 'ui-state-active'
      });
      jQuery('#droppable').bind('drop', function(){
         jQuery(this).css({'background-color' : 'yellow'});
         jQuery('#draggable').draggable('destroy');
         var content =jQuery('#draggable').text();
         jQuery(this).find('p').text(content);
         jQuery('#draggable').fadeOut('slow');
      });
/*
******************************************************************
   �bung Tetrachorischer Korrelationseffizient
******************************************************************
*/

jQuery('#tetrachorisch').ready(function(){
   if(jQuery('#tetrachorisch').html() == null)
      return false;


   jQuery('span').live('click', function(){
      var id = jQuery(this).attr('id');
      var varAr = id.split('_');
      var val = jQuery('#' + varAr[0]).text();
      if(varAr[1] == 'minus'){
         if (val==0){
            myAlert('Dieser Wert darf nicht kleiner als 0 werden')
         }
         else{
            val = parseInt(val)-1;
         }
      }
      if(varAr[1] == 'plus'){
         val = parseInt(val) + 1;
      }

      // L�sche die Ergebnisse
      jQuery('.ui-droppable').html('');
      jQuery('#ergebnis').html('');

      jQuery('#' + varAr[0]).html(val);

      getErgebnisseTetrachorisch();
   });

   var i = 0;
   var variablen = '';
   var x = false;
   var y = false;
   varAr = getVariable_xy();
   for(i=0;i<varAr.length;i++){
      variablen = variablen + '<option value="'+ i +'">' + varAr[i] + '</option>';
   }

   jQuery('#select_tetrachorisch_x').html(variablen);
   jQuery('#select_tetrachorisch_y').html(variablen);

   jQuery('#select_tetrachorisch_x').change(function(){
      var variable = jQuery(this).val();
      x = (variable != '0') ? true:false;
      jQuery('#select_tetrachorisch_y').val(0);
      y = false;
      jQuery('#tetrachorisch_table').html('');
      if(x == true && y == true){
         jQuery.get(lektionURL, {action : 'getTable', uebung : 'tetrachorisch', variable : variable},
            function(data){
               if(data != ''){
                  jQuery('#tetrachorisch_table').html(data);
                  getErgebnisseTetrachorisch();
            }
            });
      }
   });
   jQuery('#select_tetrachorisch_y').change(function(){
      var variable = jQuery(this).val();
      y = (variable != '0') ? true:false;
      jQuery('#tetrachorisch_table').html('');
      if(x == true && y == true){
         jQuery.get(lektionURL, {action : 'getTable', uebung : 'tetrachorisch', variable : variable},
            function(data){
               if(data != ''){

                  jQuery('#tetrachorisch_table').html(data);
                  getErgebnisseTetrachorisch();
                  jQuery('.draggable').draggable({
                     helper: 'clone'
                  });
                  jQuery('#tetrachorisch_droppable').droppable({
                     accept: "#ergebnis_b_c",
                     activeClass: 'droppable-active',
                     hoverClass: 'droppable-hover'
                  });
                  jQuery('#tetrachorisch_droppable2').droppable({
                     accept: "#ergebnis_a_d",
                     activeClass: 'droppable-active',
                     hoverClass: 'droppable-hover'
                  });
                  jQuery('#tetrachorisch_droppable2').bind('drop', function(){
                     var val = jQuery('#ergebnis_a_d').html();
                     if(jQuery('#tetrachorisch_droppable').html() != ''){
                        var ergebnis_a_d = val;
                        var ergebnis_b_c = jQuery('#tetrachorisch_droppable').html();
                        getErgebnis(ergebnis_b_c, ergebnis_a_d);
                     }
                     //jQuery('#ergebnis_a_d').remove();
                     jQuery(this).html(val);
                  });
                  jQuery('#tetrachorisch_droppable').bind('drop', function(){
                     var val = jQuery('#ergebnis_b_c').html();
                     if(jQuery('#tetrachorisch_droppable2').html() != ''){
                        var ergebnis_b_c = val;
                        var ergebnis_a_d = jQuery(jQuery('#tetrachorisch_droppable2').html());
                        getErgebnis(ergebnis_b_c, ergebnis_a_d);
                     }
                     /*jQuery('#ergebnis_b_c').remove();*/
                     jQuery(this).html(val);
                  });

                  jQuery('.draggable').bind('dragstart', function(){
                     jQuery('.ui-droppable').css('border', '1px solid black');
                  }
                  );

                  jQuery('.plus').html('<img src="'+shopUrl+'/images/plus.png">');
                  jQuery('.minus').html('<img src="'+shopUrl+'/images/minus.png">');
                  jQuery('.minus, .plus').show();
                  jQuery('.minus img, .plus img').css('padding','5px');

                  // Farben zuweisen
                  color1 = getColorFromColorArray(1);
                  color2 = getColorFromColorArray(4);
                  jQuery('#ergebnis').css('background-color',color1);
                  jQuery('.draggable').css('background-color',color2);
                  jQuery('.ui-droppable').css('background-color',color2);
                  jQuery('#ergebnis').css('background-color',color2);

                  jQuery('.ui-droppable').show();
                  jQuery('#ergebnis').show();
               }
            });
      }
   });
   return 0;
});

/*
******************************************************************
   �bung Kontingenzkoeffizient C
******************************************************************
*/
jQuery('#kontingenzkoeffizient_c').ready(function(){
   if(jQuery('#kontingenzkoeffizient_c').html() == null)
      return false;

   var variable = '';
   jQuery.get(lektionURL, {action : 'getTable', uebung : 'kontingenzkoeffizientc', variable : variable},
      function(data){
         if(data != ''){
            dataAr = data.split('#');
            jQuery('#kontingenzkoeffizient_c_table1').html(dataAr[0]);
            jQuery('#kontingenzkoeffizient_c_table2').html(dataAr[1]);
            fillSums();
            fillFb();
            makeDraggable();
            makeDroppable();
            color = getColorFromColorArray(4);
            jQuery('.draggable_y, .draggable_x, .draggable_total_sum, .ui-droppable').css({'background-color' : color});
            jQuery('.plus').html('<img src="'+shopUrl+'/images/plus.png">');
            jQuery('.minus').html('<img src="'+shopUrl+'/images/minus.png">');
            jQuery('.minus, .plus').show();
            jQuery('.minus img, .plus img').css('padding','5px');

            // Rechnung 1
         }
         else{
            myAlert('Fehler bei der Datenbeschaffung!');
         }
      });
   jQuery('#getAllValues').click(function(){
      getAllValues();
   });
   jQuery('span.plus').live('click', function(e){
      if(jQuery('#message_sent').html() != '1'){
         jQuery('#uebung').append('<div id="message_sent">1</div>');
         myAlert('Hinweis: ab jetzt rechnen Sie nicht mehr mit Fragebogendaten, sondern mit frei erfundenen Werten..');
      }
      var val = $(this).next('div').html();
      val++;
      var x2 = jQuery('#sum_fb_fe_3').html();
      freeRechnung2();
      getC(x2);
      jQuery(this).next().html(val);
      fillSums();
      getAllValues();
   });
   jQuery('.minus').live('click', function(){
      if(jQuery('#message_sent').html() != '1'){
         jQuery('#uebung').append('<div id="message_sent">1</div>');
         myAlert('Hinweis: ab jetzt rechnen Sie nicht mehr mit Fragebogendaten, sondern mit frei erfundenen Werten..');
      }
      var val = $(this).prev('div').html();
      if( val > 1)
      val--;
      var x2 = jQuery('#sum_fb_fe_3').html();
      freeRechnung2();
      getC(x2);
      jQuery(this).prev().html(val);
      fillSums();
      getAllValues();
   });
   return 0;
});


/*
******************************************************************
   �bung punktbiserialer Koeffizient
******************************************************************
*/
jQuery('#punktbiserialer_koeffizient').ready(function(){
   if(jQuery('#punktbiserialer_koeffizient').html() == null)
      return false;
   
   variablenStr = '';
   
   getDataVariablen('punktbiserial', variablenStr);
   var variable = 'FPI1Leb';
     
   jQuery('#select_biserialer_koeffizient').change(function(){
      
      var variable = jQuery(this).val();
      if(variable == 0){
         jQuery('#punktbiserialer_koeffizient_table').html('');
      }
      else{
      jQuery.get(lektionURL, {action : 'getTable', uebung : 'punktbiserial', variable : variable},
         function(data){
            if(data != ''){
               jQuery('#punktbiserialer_koeffizient_table').html(data);
               displayPlusMinus();
               makeDraggableBiserial();
               makeDroppableBiserial('punktbiserial');
               color = getColorFromColorArray(4);
               jQuery('.draggable, .ui-droppable').css({'background-color' : color});
               jQuery('.plus_value').html('<img src="'+shopUrl+'/images/plus.png">');
               jQuery('.minus_value').html('<img src="'+shopUrl+'/images/minus.png">');
               jQuery('.minus_value, .plus_value').show();
               jQuery('.minus_value img, .plus_value img').css('padding-left','5px');
               jQuery('.minus_value img, .plus_value img').css('padding-right','5px');
               jQuery('.minus_value img, .plus_value img').css('margin-bottom','-2px');
            
               jQuery('.plus').html('<img src="'+shopUrl+'/images/plus.png">');
               jQuery('.minus').html('<img src="'+shopUrl+'/images/minus.png">');
               jQuery('.minus img, .plus img').css('padding','5px');
            
            }
         });
      }
   });
   jQuery('.plus').live('click', function(){
      var id = jQuery(this).next().attr('id');
      var val = parseInt(jQuery(this).next().html());
      var val2 = 0;
      var valid = '';

      if(id == 'n1'){
         valid = '#n0';
      }
      else if(id == 'n0'){
         valid = '#n1';
      }
      val2 = parseInt(jQuery(valid).html());
      if(val < 20){
         val++;
         val2--;
      }
      jQuery(valid).html(val2);
      jQuery(this).next().html(val);
      switchSides(id, 'plus');
      getBerechnungenBiserial(val);
   });

   jQuery('.minus').live('click', function(){
      var id = jQuery(this).prev().attr('id');
      var val = parseInt(jQuery(this).prev().html());
      var val2 = 0;
      var valid = '';

      if(id == 'n1'){
         valid = '#n0';
      }
      else if(id == 'n0'){
         valid = '#n1';
      }
      val2 = parseInt(jQuery(valid).html());
      if(val > 0){
         val--;
         val2++;
      }
      jQuery(valid).html(val2);
      jQuery(this).prev().html(val);
      switchSides(id, 'minus');
      getBerechnungenBiserial(val);
   });
   jQuery('span.plus_value').live('click', function(){
      if(jQuery('#message_sent').html() != '1'){
         jQuery('#uebung').append('<div id="message_sent">1</div>');
         myAlert('Hinweis: ab jetzt rechnen Sie nicht mehr mit Fragebogendaten, sondern mit frei erfundenen Werten..');
      }
      var val = parseInt(jQuery(this).next().html());
      if(val <= 19){
         val++;
      }
      getBerechnungenBiserial(val);
      jQuery(this).next().html(val);
   });
   jQuery('span.minus_value').live('click', function(){
      if(jQuery('#message_sent').html() != '1'){
         jQuery('#uebung').append('<div id="message_sent">1</div>');
         myAlert('Hinweis: ab jetzt rechnen Sie nicht mehr mit Fragebogendaten, sondern mit frei erfundenen Werten..');
      }
      var val = parseInt(jQuery(this).prev().html());
      if(val > 1){
         val--;
      }
      getBerechnungenBiserial(val);
      jQuery(this).prev().html(val);

   });
   return 0;
});
function makeDraggableBiserial(){
   jQuery('.draggable').draggable({
      helper: 'clone',
      opacity: 0.7
   });
}
function makeDroppableBiserial(type){
   jQuery('#droppable_biserial_x0').droppable({
      accept: '#x0',
      activeClass: 'droppable-active',
      hoverClass: 'droppable-hover'
   });
   jQuery('#droppable_biserial_x0').bind('drop', function(){
      var val = jQuery('#x0').html();
      jQuery(this).html(val);
      getRbiserial(type);
   });
   jQuery('#droppable_biserial_x1').droppable({
      accept: '#x1',
      activeClass: 'droppable-active',
      hoverClass: 'droppable-hover'
   });
   jQuery('#droppable_biserial_x1').bind('drop', function(){
      var val = jQuery('#x1').html();
      jQuery(this).html(val);
      getRbiserial(type);
   });
   jQuery('#droppable_biserial_s').droppable({
      accept: '#s',
      activeClass: 'droppable-active',
      hoverClass: 'droppable-hover'
   });
   jQuery('#droppable_biserial_s').bind('drop', function(){
      var val = jQuery('#s').html();
      jQuery(this).html(val);
      getRbiserial(type);
   });
   jQuery('#droppable_biserial_n0').droppable({
      accept: '#n0',
      activeClass: 'droppable-active',
      hoverClass: 'droppable-hover'
   });
   jQuery('#droppable_biserial_n0').bind('drop', function(){
      var val = jQuery('#n0').html();
      jQuery(this).html(val);
      getRbiserial(type);
   });
   jQuery('#droppable_biserial_n1').droppable({
      accept: '#n1',
      activeClass: 'droppable-active',
      hoverClass: 'droppable-hover'
   });
   jQuery('#droppable_biserial_n1').bind('drop', function(){
      var val = jQuery('#n1').html();
      jQuery(this).html(val);
      getRbiserial(type);
   });
   jQuery('#droppable_biserial_n').droppable({
      activeClass: 'droppable-active',
      hoverClass: 'droppable-hover',
      accept: '#n'
   });
   jQuery('#droppable_biserial_n').bind('drop', function(){
      var val = parseInt(jQuery('#n').html());
      jQuery(this).html(Math.pow(val, 2));
      getRbiserial(type);
   });
}
function getTheta(){
   var theta = 0.5;
   return theta;
}
function getRbiserial(type){
   var x0 = parseFloat(jQuery('#droppable_biserial_x0').html());
   var x1 = parseFloat(jQuery('#droppable_biserial_x1').html());
   var s = parseFloat(jQuery('#droppable_biserial_s').html());
   var n0 = parseFloat(jQuery('#droppable_biserial_n0').html());
   var n1 = parseFloat(jQuery('#droppable_biserial_n1').html());
   var n = parseFloat(jQuery('#droppable_biserial_n').html());
   var v = getTheta();
   if(!isNaN(x0) && !isNaN(x1) && !isNaN(s) && !isNaN(n0) && !isNaN(n1) && !isNaN(n)){
      // x0 - x1 / s * sqrt n0 * n1 / n
      var first_part = (x0 - x1) / s;
      if(type == 'punktbiserial'){
         var second_part = Math.sqrt((n0 * n1) / n);
      }
      else if(type == 'biserial') {
         var second_part = (n0 * n1) / (n * v);
      }
      var ergebnis = first_part * second_part;
      jQuery('#ergebnis_1').html(round(first_part));
      jQuery('#ergebnis_2').html(round(second_part));
      jQuery('#ergebnis').html(round(ergebnis));
   }
}
function getBerechnungenBiserial(val){
   var val1 = jQuery('#n0').html();
   var val2 = jQuery('#n1').html();
   var mittelwert_left = getMittelwertbiserial('left', val1);
   var mittelwert_right = getMittelwertbiserial('right', val2);
   var standardabweichung = getStandardabweichungBiserial();
   jQuery('#s').html(round(standardabweichung));
   jQuery('#x0').html(round(mittelwert_left));
   jQuery('#x1').html(round(mittelwert_right));
}
function getStandardabweichungBiserial(){
   var sum_left = 0;
   var sum_right = 0;
   var sum = 0;
   var varianz = 0;
   standardabweichung = 0;
   var n = parseInt(jQuery('#n').html());
   valueAr = new Array();
   var count = 0;
   jQuery('.left').each(function(){
      sum_left += parseInt(jQuery(this).next().children('span.val').html());
      valueAr[count] = parseInt(jQuery(this).next().children('span.val').html());
      count++;
   });
   jQuery('.right').each(function(){
      sum_right += parseInt(jQuery(this).next().children('span.val').html());
      valueAr[count] = parseInt(jQuery(this).next().children('span.val').html());
      count++;
   });
   sum = sum_left + sum_right;
   mittelwert = sum / n;
   for(i = 0;i < valueAr.length; i++){
      varianz += Math.pow(valueAr[i] - mittelwert, 2);
   }
   varianz = varianz / n;
   standardabweichung = Math.sqrt(varianz);
   return standardabweichung;
}

function getMittelwertbiserial(position, val){
   var jid = '.' + position;
   var sum = 0;
   var mittelwert = 0;
   jQuery(jid).each(function(){
      sum += parseInt(jQuery(this).next().children('span.val').html());
      
   });
   mittelwert = sum / val;
   var returnValue = (isNaN(mittelwert)) ? 0 : mittelwert;
   return returnValue;
}
function switchSides(position, action){
   var html1 = '';
   var html2 = '';
   if((position == 'n0' && action == 'plus') || (position == 'n1' && action == 'minus')){
      html1 = jQuery('.right:last').html();
      html2 = jQuery('.right:last').next().html();
      jQuery('.right:last').html('');
      jQuery('.right:last').next().html('');
      jQuery('.right:last').addClass('right_empty');
      jQuery('.right:last').removeClass('right');
      jQuery('.left_empty:first').next().html(html2);
      jQuery('.left_empty:first').html(html1);
      jQuery('.left_empty:first').addClass('left');
      jQuery('.left_empty:first').next('td').addClass('left_values');
      jQuery('.left_empty:first').removeClass('left_empty');
      jQuery('.left:last').children('div').html('0');
   }
   if((position == 'n0' && action == 'minus') || (position == 'n1' && action == 'plus')){
      html1 = jQuery('.left:last').html();
      html2 = jQuery('.left:last').next().html();
      jQuery('.left:last').html('');
      jQuery('.left:last').next().html('');
      jQuery('.left:last').addClass('left_empty');
      jQuery('.left:last').removeClass('left');
      jQuery('.right_empty:first').next().html(html2);
      jQuery('.right_empty:first').html(html1);
      jQuery('.right_empty:first').addClass('right');
      jQuery('.right_empty:first').next('td').addClass('right_values');
      jQuery('.right_empty:first').removeClass('right_empty');
      jQuery('.right:last').children('div').html('1');
   }
}
/*
******************************************************************
   �bung biserialer Koeffizient
******************************************************************
*/
jQuery('#biserialer_koeffizient').ready(function(){
   if(jQuery('#biserialer_koeffizient').html() == null)
      return false;
   
   var variablenStr = '';
   getDataVariablen('biserialer_koeffizient', variablenStr);
   jQuery('#select_biserialer_koeffizient').change(function(){
      var variable = jQuery(this).val();


      if(variable == 0){
         jQuery('#table_biserialier_koeffizient').html('');
      }
      else{      
        jQuery.get(lektionURL, {action : 'getTable', uebung : 'biserial', variable : variable},
           function(data){
              if(data != ''){
                 jQuery('#biserialer_koeffizient_table').html(data);
                 displayPlusMinus();
                 makeDraggableBiserial();
                 makeDroppableBiserial('biserial');
                 color = getColorFromColorArray(4);
                 jQuery('.draggable, .ui-droppable').css({'background-color' : color});
                 jQuery('.plus_value').html('<img src="'+shopUrl+'/images/plus.png">');
                 jQuery('.minus_value').html('<img src="'+shopUrl+'/images/minus.png">');
                 jQuery('.minus_value, .plus_value').show();
                 jQuery('.minus_value img, .plus_value img').css('padding-left','5px');
                 jQuery('.minus_value img, .plus_value img').css('padding-right','5px');
                 jQuery('.minus_value img, .plus_value img').css('margin-bottom','-2px');
              
                 jQuery('.plus').html('<img src="'+shopUrl+'/images/plus.png">');
                 jQuery('.minus').html('<img src="'+shopUrl+'/images/minus.png">');
                 jQuery('.minus img, .plus img').css('padding','5px');
     
              }
           });
        }
   });
   jQuery('span.plus').live('click', function(){
      var id = jQuery(this).next().attr('id');
      var val = parseInt(jQuery(this).next().html());
      var val2 = 0;
      var valid = '';

      if(id == 'n1'){
         valid = '#n0';
      }
      else if(id == 'n0'){
         valid = '#n1';
      }
      val2 = parseInt(jQuery(valid).html());
      if(val < 20){
         val++;
         val2--;
      }
      jQuery(valid).html(val2);
      jQuery(this).next().html(val);
      switchSides(id, 'plus');
      getBerechnungenBiserial(val);
   });

   jQuery('span.minus').live('click', function(){
      var id = jQuery(this).prev().attr('id');
      var val = parseInt(jQuery(this).prev().html());
      var val2 = 0;
      var valid = '';

      if(id == 'n1'){
         valid = '#n0';
      }
      else if(id == 'n0'){
         valid = '#n1';
      }
      val2 = parseInt(jQuery(valid).html());
      if(val > 0){
         val--;
         val2++;
      }
      jQuery(valid).html(val2);
      jQuery(this).prev().html(val);
      switchSides(id, 'minus');
      getBerechnungenBiserial(val);
   });
   jQuery('span.plus_value').live('click', function(){
      if(jQuery('#message_sent').html() != '1'){
         jQuery('#uebung').append('<div id="message_sent">1</div>');
         myAlert('Hinweis: ab jetzt rechnen Sie nicht mehr mit Fragebogendaten, sondern mit frei erfundenen Werten..');
      }
      var val = parseInt(jQuery(this).next().html());
      if(val < 20){
         val++;
      }
      getBerechnungenBiserial(val);
      jQuery(this).next().html(val);
   });
   jQuery('span.minus_value').live('click', function(){
      if(jQuery('#message_sent').html() != '1'){
         jQuery('#uebung').append('<div id="message_sent">1</div>');
         myAlert('Hinweis: ab jetzt rechnen Sie nicht mehr mit Fragebogendaten, sondern mit frei erfundenen Werten..');
      }
      var val = parseInt(jQuery(this).prev().html());
      if(val > 0){
         val--;
      }
      getBerechnungenBiserial(val);
      jQuery(this).prev().html(val);

   });
   return 0;
});


/*
******************************************************************
   �bung Spearman's Rangfolge Rho
******************************************************************
*/
jQuery('#spearmans_rangfolge').ready(function(){
   if(jQuery('#spearmans_rangfolge').html() == null)
      return false;
   getDataSpearman();
   jQuery('#neue_werte').click(function(){
      if(jQuery('#userValues').val() == '1'){
         getDataSpearman();
         jQuery('#userValues').val('');
         jQuery(this).val('Eigene Werte');
         jQuery('#ergebnis_spearman').html('');
         jQuery('#droppable_sum_d').html('');
         jQuery('#message_sent').remove();
      }
      else{
         freeTableSpearman();
         jQuery(this).val('Zufallswerte');
         if(jQuery('#message_sent').html() != '1'){
            jQuery('#uebung').append('<div id="message_sent">1</div>');
            myAlert('Hinweis: ab jetzt rechnen Sie nicht mehr mit Fragebogendaten, sondern mit frei erfundenen Werten..');
         }
      }
   });
   
   jQuery('input.diff').live('change', function(){
      var val = parseInt(jQuery(this).val());
      var idAr = jQuery(this).attr('id').split('_');
      checkDiff(val, idAr);
   });
   jQuery('input.input_xi').live('change', function(event){
      id = jQuery(this).attr('id');
      checkUserValues('xi', id);
      jQuery('.diff').val('');
      jQuery('.d').text('');
      jQuery('#sum_d').text('');
      jQuery('.d').removeClass('red');
      jQuery('.d').removeClass('green');
      jQuery('#sum_d').removeClass('green');
      jQuery('#sum_d').removeClass('red');
   });
   jQuery('input.input_yi').live('change', function(event){
      id = jQuery(this).attr('id');
      checkUserValues('yi', id);
      jQuery('.diff').val('');
      jQuery('.d').removeClass('red');
      jQuery('.d').removeClass('green');
      jQuery('.d').text('');
      jQuery('#sum_d').removeClass('green');
      jQuery('#sum_d').removeClass('red');
   });
   return 0;
});
function checkDiff(val ,idAr){
   var debug = '';
   var dId = '#d_' + idAr[1];
   var jidXi = '#xi_' + idAr[1];
   var jidYi = '#yi_' + idAr[1];
   var valXi = 0;
   var valYi = 0;
   if(jQuery('#userValues').val() == '1'){
      valXi = parseInt(jQuery(jidXi).val());
      valYi = parseInt(jQuery(jidYi).val());
   }
   else{
      valXi = parseInt(jQuery(jidXi).html());
      valYi = parseInt(jQuery(jidYi).html());
   }
   var rightVal = valXi - valYi;
   var isValid = false;
   if(val == rightVal){
      isValid = true;
   }
   if(!isNaN(val) && isValid == true){
      val = Math.pow(val, 2);
      jQuery(dId).removeClass('red');
      jQuery(dId).addClass('green');
   }
   else {
      val = '';
      jQuery(dId).removeClass('green');
      jQuery(dId).addClass('red');
   }
   jQuery(dId).html(val);
   checkD();
}
function getDataSpearman(){
   jQuery.get(lektionURL, {action : 'getTable', uebung : 'spearman', variable : variable},
      function(data){
         if(data != ''){

            jQuery('#spearmans_rangfolge_table').html(data);
            jQuery('#sum_d').draggable({
               helper: 'clone'
            });
            jQuery('#droppable_sum_d').droppable({
               accept: '#sum_d'
            });
            jQuery('#droppable_sum_d').bind('drop', function(){
               var val = jQuery('#sum_d').html();
               jQuery(this).html(val);
               getErgebnisSpearman();
            });
         }
   });
}
function checkUserValues(type, id){
   var jid = '#' + id;
   fieldId = '';
   var val = jQuery(jid).val();
   var bOk = true;
   if(val != '' ){
      if(val <= 10 && val >= 1 ){
         if(type == 'xi'){
            jQuery('.input_xi').each(function(){
               if(jQuery(this).val() == val && jQuery(this).attr('id') != id){
                  jQuery(jid).val('');
                  myAlert('Diese Zahl ist schon vorhanden!');
               }
            });
         }
         else if(type == 'yi'){
            jQuery('.input_yi').each(function(){
               if(jQuery(this).val() == val && jQuery(this).attr('id') != id){
                  jQuery(jid).val('');
                  myAlert('Diese Zahl ist schon vorhanden!');
               }

            });
         }
      }
      else {
         jQuery(jid).val('');
         myAlert('Es sind nur Zahlen von 1 - 10 erlaubt!');
      }
   }

}
function freeTableSpearman(){
   var xId = '';
   var yId = '';
   var input_yi = '';
   var input_xi = '';
   if(jQuery('#userValues').val() == '1'){
      jQuery('.input_yi').val('');
      jQuery('.input_xi').val('');
   }
   else {
      for( i = 0; i < 10; i++ ){
         xId = '#xi_' + i;
         yId = '#yi_' + i;
         input_yi = '<input type="text" id="yi_' + i + '" value="" class="input_yi" />';
         input_xi = '<input type="text" id="xi_' + i + '" value="" class="input_xi" />';
         jQuery(xId).html(input_xi);
         jQuery(yId).html(input_yi);
         jQuery(xId).attr('id', '');
         jQuery(yId).attr('id', '');
      }
      }
   jQuery('.diff').val('');
   jQuery('.d').html('');
   jQuery('#userValues').val('1');
   jQuery('#ergebnis_spearman').val('');
   jQuery('#ergebnis_spearman').html('');
   jQuery('#droppable_sum_d').html('');
   jQuery('#sum_d').html('');
   jQuery('.d').removeClass('red');
   jQuery('.d').removeClass('green');
   jQuery('.d').text('');
   jQuery('#sum_d').text('');
   jQuery('#sum_d').removeClass('green');
   jQuery('#sum_d').removeClass('red');
}
function checkD(){
   var bOk = true;
   var sum = 0;
   var counter = 0;
   jQuery('.d').each(function(){
      counter++;
      if(isNaN(parseInt(jQuery(this).html()))){
         bOk = false;
      }
      else {
         sum += parseInt(jQuery(this).html());
      }
   });
   if(bOk == true){
      jQuery('#sum_d').html(sum);
      jQuery('#sum_d').removeClass('red');
      jQuery('#sum_d').addClass('green');
   }
   else if(bOk == false && counter == 10){
      jQuery('#sum_d').removeClass('green');
      jQuery('#sum_d').addClass('red');
   }
}
function getErgebnisSpearman(){
   var val = parseInt(jQuery('#droppable_sum_d').html());
   var n = parseInt(jQuery('#n_table').html());
   var n2 = (Math.pow(n, 2) - 1);
   jQuery('#n').html(n);
   jQuery('#n2').html(n2);
   var ergebnis = 1- (( 6 * val) / (n * n2));
   jQuery('#ergebnis_spearman').html(round(ergebnis));
}
/*
******************************************************************
******************************************************************
******************************************************************

   Allgemeine Funktionen, die von mehreren �bungen verwendet werden.
******************************************************************
******************************************************************
******************************************************************

*/


function freeRechnung2(){
   jQuery('#droppable_rechnung2_1').html('');
   jQuery('#droppable_rechnung2_2').html('');
}
function makeDroppable(){
   var val = 0;
   var id = 0;
   // Summe Zeilen
   jQuery('#droppable_rechnung1_1').droppable({
      accept: '.draggable_y',
      activeClass: 'droppable-active',
      hoverClass: 'droppable-hover'
   });
   jQuery('#droppable_rechnung1_1').bind('drop', function(event, ui){
      val = jQuery('div.dragging').text();
      id = jQuery('div.dragging').attr('id');
      jQuery(this).attr('name', id);
      jQuery(this).html(val);
      //jQuery('#droppable_rechnung1_2').html('');
      if(jQuery('#droppable_rechnung1_2').attr('name') != undefined && jQuery('#droppable_rechnung1_2').attr('name') != '' ){
         getFe(val, val_position = 1);
      }
   });
   // Summe Spalten
   jQuery('#droppable_rechnung1_2').droppable({
      accept: '.draggable_x',
      activeClass: 'droppable-active',
      hoverClass: 'droppable-hover'
   });
   jQuery('#droppable_rechnung1_2').bind('drop', function(event, ui){
      val = jQuery('div.dragging').text();
      id = jQuery('div.dragging').attr('id');
      jQuery(this).attr('name', id);
      jQuery(this).html(val);
      if(jQuery('#droppable_rechnung1_1').attr('name') != undefined && jQuery('#droppable_rechnung1_1').attr('name') != '' ){
         getFe(val, val_position = 2);
      }
   });

   jQuery('#droppable_rechnung2_1').droppable({
      accept: '#sum_fb_fe_3',
      activeClass: 'droppable-active',
      hoverClass: 'droppable-hover'
   });
   jQuery('#droppable_rechnung2_1').bind('drop', function(event, ui){
      var val = 0;
      val = jQuery('div.dragging').html();
      jQuery(this).html(val);
      if(jQuery('#droppable_rechnung2_2').html() != 0 && jQuery('#droppable_rechnung2_3').html() != 0){
         getC(val);
         displayPlusMinus();
      }
   });
   jQuery('#droppable_rechnung2_2').droppable({
      accept: '#sum_fb_fe_3',
      activeClass: 'droppable-active',
      hoverClass: 'droppable-hover'
   });
   jQuery('#droppable_rechnung2_2').bind('drop', function(event, ui){
      var val = 0;
      val = jQuery('div.dragging').html();
      jQuery(this).html(val);
      if(jQuery('#droppable_rechnung2_1').html() != 0 && jQuery('#droppable_rechnung2_3').html() != 0){
         getC(val);
         displayPlusMinus();
      }
   });
   jQuery('#droppable_rechnung2_3').droppable({
      accept: '#n',
      activeClass: 'droppable-active',
      hoverClass: 'droppable-hover'
   });
   jQuery('#droppable_rechnung2_3').bind('drop', function(event, ui){
      var val = 0;
      val = jQuery('div.dragging').html();
      jQuery(this).html(val);
      if(jQuery('#droppable_rechnung2_1').html() != 0 && jQuery('#droppable_rechnung2_2').html() != 0){
         getC(val);
         displayPlusMinus();
      }
   });

}
function displayPlusMinus(){
   jQuery('.plus').fadeIn('slow');
   jQuery('.minus').fadeIn('slow');
}
function getC(val){
   var n = parseInt(jQuery('#n').html());
   val = parseFloat(val);
   ergebnis = round(Math.sqrt(val / (val + parseInt(n))));
   jQuery('#ergebnis_c').html(ergebnis);
}
function getAllValues(){
   var n = jQuery('#n').html();
   var i = 1;
   var j = 1;
   for(i = 1; i <= 2; i++){
      for(j = 1; j <= 4 ; j++){
         valZeilenId = '#sum_y' + i;
         valSpaltenId = '#sum_x' + j;
         valSpalten = jQuery(valSpaltenId).html();
         valZeilen = jQuery(valZeilenId).html();
         x = 'x' + j;
         y = 'y' + i;
         getFeBerechnung(valZeilen, valSpalten, x, y, n);
      }
   }
}
function getFeBerechnung(valZeilen, valSpalten, x, y, n){
   jid = y + '_' + x;
   jid_fb = '#fb_' + jid;
   jid_fe = '#fe_' + jid;
   jid_fb_fe1 = '#fb_fe_1_' + jid;
   jid_fb_fe2 = '#fb_fe_2_' + jid;
   jid_fb_fe3 = '#fb_fe_3_' + jid;
   fb = jQuery(jid_fb).html();
   // Fe ausrechnen
   //if(jQuery(jid_fe).html() == ''){
      ergebnis_fe = (valSpalten * valZeilen) / n;
      ergebnis_fb_fe1 = fb - ergebnis_fe
      ergebnis_fb_fe2 = Math.pow(ergebnis_fb_fe1, 2);
      ergebnis_fb_fe3 = ergebnis_fb_fe2 / ergebnis_fe;
   // fe schreiben
      jQuery(jid_fe).html(round(ergebnis_fe));
      jQuery(jid_fb_fe1).html(round(ergebnis_fb_fe1));
      jQuery(jid_fb_fe2).html(round(ergebnis_fb_fe2));
      jQuery(jid_fb_fe3).html(round(ergebnis_fb_fe3));
   //}
   // �berpr�fung ob die Summe schon eingef�gt werden kann
   var success = true;
   var sum = 0;

   for(b = 1; b <= 2 ; b++){
      for(c = 1; c <= 4; c++){
         jid = '#fb_fe_3_y' + b + '_x' + c;
         if(jQuery(jid).html() == ''){
            success = false
         }
         if(success == true){
            sum += parseFloat(jQuery(jid).html());
         }
      }
   }
   if(success == true){
      jQuery('#sum_fb_fe_3').html(round(sum));
   }

}
function getFe(val, val_position){
   var jid = '';
   var jid_fe = '';
   var x = 0;
   var y = 0;
   var valSpalten = 0;
   var valZeilen = 0;
   var ergebnis = 0;

   var n = jQuery('#n').html();
   xAr = jQuery('#droppable_rechnung1_2').attr('name').split('_');
   yAr = jQuery('#droppable_rechnung1_1').attr('name').split('_');
   y = yAr[1];
   x = xAr[1];
   if(val_position == 1){
      valZeilen = parseInt(val);
      valSpalten = parseFloat(jQuery('#droppable_rechnung1_2').text());
   }
   else if(val_position == 2){
      valSpalten = parseInt(val);
      valZeilen = parseFloat(jQuery('#droppable_rechnung1_1').text());
   }
   getFeBerechnung(valZeilen, valSpalten, x, y, n);
   jQuery('#droppable_rechnung1_1').attr('name', '');
   jQuery('#droppable_rechnung1_2').attr('name', '');
}


function makeDraggable(){
   // Draggable f�r die x Summen
   jQuery('div.draggable_x').draggable({
      helper: 'clone',
      opacity: 0.7,
      addClasses: true
   });
   jQuery('#n').draggable({
      helper: 'clone',
      opacity: 0.7,
      addClasses: true
   });
   $('#n').bind('drag', function(event, ui) {
      jQuery(this).addClass('dragging');
   });
   $('#n').bind('dragstop', function(event, ui) {
      jQuery(this).removeClass('dragging');
   });
   
   
   
   
   $('.draggable_x').bind('drag', function(event, ui) {
      jQuery(this).addClass('dragging');
   });
   $('.draggable_x').bind('dragstart', function(event, ui){
      if(jQuery('#droppable_rechnung1_1').html() != '' && jQuery('#droppable_rechnung1_2').html() != ''){
         jQuery('#droppable_rechnung1_1').html('');
         jQuery('#droppable_rechnung1_2').html('');
      }

   });
   $('.draggable_x').bind('dragstop', function(event, ui) {
      jQuery(this).removeClass('dragging');
   });
   // Draggable fuer die y Summen
   jQuery('div.draggable_y').draggable({
      helper: 'clone',
      opacity: 0.7,
      addClasses: true
   });
   $('.draggable_y').bind('drag', function(event, ui) {
      jQuery(this).addClass('dragging');
   });
   $('.draggable_y').bind('dragstart', function(event, ui){
      if(jQuery('#droppable_rechnung1_1').html() != '' && jQuery('#droppable_rechnung1_2').html() != ''){
         jQuery('#droppable_rechnung1_1').html('');
         jQuery('#droppable_rechnung1_2').html('');
      }
   });
   $('.draggable_y').bind('dragstop', function(event, ui) {
      jQuery(this).removeClass('dragging');
   });

   $('.draggable_total_sum').draggable({
      helper: 'clone',
      opacity: 0.7,
      addClasses: true
   });
   $('.draggable_total_sum').bind('drag', function(event, ui) {
      jQuery(this).addClass('dragging');
   });
   $('.draggable_total_sum').bind('dragstop', function(event, ui) {
      jQuery(this).removeClass('dragging');
   });
}
function fillFb(){
   var i = 0;
   var j = 0;
   var jid = '';
   var val = 0;
   var targetId = '';
   for(i = 1; i <= 2; i++){
      for(j = 1; j <= 4; j++){
         jid = '#y' + i + '_x' + j;
         val = jQuery(jid).text();
         targetId = '#fb_y' + i + '_x' + j;
         jQuery(targetId).text(val);
      }
   }
}
function fillSums(){
   var i = 0;
   var j = 0;
   var jid = '';
   var sum = 0;
   var n = 0;
   for(i = 1; i <= 2 ; i++){
      sum = 0;
      for(j = 1; j <= 4 ; j++){
         jid = '#y' + i + '_x' + j;
         sum += parseInt(jQuery(jid).text());
      }
      sumId = '#sum_y' + i;
      jQuery(sumId).text(sum);
      n += sum;
   }
   jQuery('#n').text(n);
   for(i = 1; i <= 4; i++){
      sum = 0;
      for(j = 1; j <= 2; j++){
         jid = '#y' + j + '_x' + i;
         sum += parseInt(jQuery(jid).text());
      }
      sumId = '#sum_x' + i;
      jQuery(sumId).text(sum);
   }
}


/*
******************************************************************
Rundet eine Zahl auf zwei Stellen nach dem Komma
******************************************************************
*/

function round(zahl){
   zahl = zahl *100;
   zahl = Math.round(zahl);
   zahl = zahl/100;
 return zahl;
}


/*
******************************************************************
Holt die Daten f�r eine �bung und ersetzt
******************************************************************
*/
function getData(action, table, div, variable) {
   
   if(variable == '0'){
      return false;
   }
   jQuery.get(lektionURL, { action : action, uebung : table, variable : variable },
      function(data){
         if(data != 0){
            jQuery(div).html(data);
            jQuery('td.prozent').hide();
         }
         else{
         }
 });
   return 0;
}

/*
******************************************************************
Holt die Daten fuer eine �bung + die Anzahl
******************************************************************
*/
function getDataAndN(action, table, div, variable){

   jQuery.get(lektionURL, { action : action, uebung : table, variable : variable },
      function(data){
         if(data != 0){
            jQuery(div).html(data);
            n = jQuery('#n').attr('value');
            for(i=0; i<9; i++){
               jid = div +'_rechnung #int_2_'+ i;
               jQuery(jid).attr('value', n);
            }
         }
         else{
         }
         var returnStr = '';
         for (i=0 ; i<=7; i++){
           var jid= '#balkendiagramm #' + (i+1);
           var val = jQuery(jid).text();
           if(val == ''){
              i=8;
              returnStr =returnStr + '[,]';
           }
           else{
              returnStr = returnStr + '[' + i + ' , ' + val + ']';
              returnStr = returnStr + ',';
           }
        }
 });


}

/*
******************************************************************
Holt die Daten f�r die �bung Dispersionsmasse
******************************************************************
*/
function getDataForDispersionsmasseZusammenfassung(variable){
   jQuery.get(lektionURL, { action : 'getTable', uebung : 'dispersionsmasse_zusammenfassung', variable : variable},
      function(data){
         if(data != 0){
            jQuery('#dispersionsmasse_zusammenfassung_table').html(data);
         }
         else{
         }
 });
}

/*
******************************************************************
Holt die Variablen f�r verschiedene �bungen und ersetzt die select box
******************************************************************
*/

function getDataVariablen(uebung, variablenStr){
   var url = document.URL;
   urlAr = url.split('/');
   var uebungsName = urlAr[(urlAr.length-1)];
   jQuery.get(lektionURL, { uebung : uebungsName ,action : 'loadOptions', variable : '' ,variablenStr : variablenStr},
      function(data){
         if(data != 0){
            jQuery('#uebung .werte_aendern  select').html(data);
         }
         else{
         }
 });
}

/*
******************************************************************
Holt allgemein die Daten f�r ein Flot
******************************************************************
*/

function getDataForFlot(table, replaceTarget, variable){
   jQuery.get(lektionURL, { action : 'getFlot', uebung : table , variable : variable },
   function(data){
      returnAr = eval(data);
      return returnAr;
   });

}


/*
******************************************************************
Holt die Daten f�r das Flot von Polygonzug
******************************************************************
*/
function getDataForFlotPolygonzug(table, replaceTarget , variable){
   if(table == ''){
      var dataAr = new Array([0,0]);
      $.plot($(replaceTarget), [
         {
            data:  '',
            points: { show: true }
         },
   ]);

     }
     else{
      jQuery.get(lektionURL, { action : 'getFlot', uebung : table , variable : variable },
      function(data){
         returnAr = eval(data);
                $.plot($(replaceTarget), [
                  {
                   data:  returnAr,
                   points: { show: true },
                   lines: { show: true },
 //                    data: returnAr, label: "sin(x)",  data: returnAr, label: "cos(x)"  ,
 
 
                   legend: {
                      show: true
 //                      labelFormatter: null or (fn: string, series object -> string)
 //                      labelBoxBorderColor: color
 //                      noColumns: number
 //                      position: "ne" or "nw" or "se" or "sw"
 //                      margin: number of pixels or [x margin, y margin]
 //                      backgroundColor: null or color
 //                      backgroundOpacity: number between 0 and 1
 //                      container: null or jQuery object/DOM element/jQuery expression
                  }
 
 //                  selection: { mode: "xy" },
 //                   grid: { hoverable: true, clickable: true },
 //                   yaxis: { min: -1.2, max: 1.2 }
                 }
              ]);
         return returnAr;
      });
    }
  }

/*
******************************************************************
Holt die Flot Daten f�r das Balkendiagramm
******************************************************************
*/
function getDataForFlotBalkendiagramm(table, replaceTarget , variable){
   if(table == ''){
   $.plot($(replaceTarget), [
      {
         data:  '',
         bars: { show: true }
      },
   ]);

     }
   else{
     jQuery.get(lektionURL, { action : 'getFlot', uebung : table , variable : variable},
     function(data){
        var returnAr;
        var counter = 1;
        returnStr = 'new Array(';
        jQuery('.vorkommen').each(function(){
           var val = jQuery(this).text();
           if(counter == 1){
              returnStr = returnStr +  '['+ 1 + ',' + val + ']';
           }
           else {
              returnStr = returnStr + ',['+ 1 + ',' + val + ']';
           }
           counter++;
         });
         returnStr = returnStr + ');';
         returnAr = eval(returnStr);
         var canvasElementAr = replaceTarget.split('#');
         var canvas = document.getElementById(canvasElementAr[1]);
         ctx = canvas.getContext("2d");
         drawBars(returnAr, replaceTarget,'bars', ctx);
        /*       $.plot($(replaceTarget), [
                 {
                  data:  returnAr,
                  bars: { show: true}
                },
             ]);
             */
        return returnAr;
    });
    }

  }

/*
******************************************************************
wandelt wert in radius um getColorAr()
******************************************************************
*/

function toRad(integer){
   return (Math.PI/180)*integer;
}

/*
******************************************************************
Holt die Daten f�r die �bung Standardabweichung und ersetzt das Div
******************************************************************
*/

function getDataStandardabweichung(action, table, div, variable){
   jQuery.get(lektionURL, { action : action, uebung : table , variable : variable },
      function(data){
         if(data != 0){
            jQuery(div).html(data);
         }
         else{
         }
});


}
/*
******************************************************************
Array mit verschiedenen Farben f�r die �bung Kreisdiragramm
******************************************************************
*/

function getColorAr(){
   colorAr = new Array();
   var i=0;
   colorAr[i++] = new Array(209,229,239, 'black');
   colorAr[i++] = new Array(181,209,223, 'black');
   colorAr[i++] = new Array(155,190,207, 'black');
   colorAr[i++] = new Array(131,171,191, 'black');
   colorAr[i++] = new Array(109,153,175, 'black');
   colorAr[i++] = new Array(89,136,159, 'black');
   colorAr[i++] = new Array(71,119,143, 'black');
   colorAr[i++] = new Array(55,103,127, 'black');
   colorAr[i++] = new Array(41,81,111, 'black');
   colorAr[i++] = new Array(29,73,95, 'black');
   colorAr[i++] = new Array(20,59,79, 'black');
   colorAr[i++] = new Array(12,46,63, 'black');
   colorAr[i++] = new Array(6,33,47, 'black');
   colorAr[i++] = new Array(2,21,31, 'black');
/*   colorAr[i++] = new Array(, 'black');
   colorAr[i++] = new Array(181, 209, 223, 'black');
   colorAr[i++] = new Array(153, 200, 223, 'black');
   colorAr[i++] = new Array(107, 163, 191, 'black');
   colorAr[i++] = new Array(69, 129, 159, 'black');
   colorAr[i++] = new Array(39, 98, 127,'white');
   colorAr[i++] = new Array(18, 69, 95, 'white');
   colorAr[i++] = new Array(4, 43, 63, 'white');
   colorAr[i++] = new Array(0, 0, 0 , 'white');*/
   var r = 0;
   var g = 0;
   var b = 0;
   for(i=14;i<25;i++){
      r = Math.floor(Math.random()*255);
      g = Math.floor(Math.random()*255);
      b = Math.floor(Math.random()*255);
      colorAr[i] = new Array(r,g,b);
   }
return colorAr;
}

function getColorFromColorArray(index){
   if (index==undefined)
      index = 0;
   colorAr = getColorAr();
   color = 'rgb('+colorAr[index][0]+','+colorAr[index][1]+','+colorAr[index][2]+')';
   return color;
}


/*
******************************************************************
Diagrammarten
******************************************************************
*/

function getDiagrammarten(){
optionsAr = new Array;
   optionsAr[0] = new Array('0', unescape('Bitte waehlen Sie eine Diagrammart aus'));
   optionsAr[1] = new Array('histogramm','Histogramm' );
   optionsAr[2] = new Array('polygonzug', 'Polygonzug');
   optionsAr[3] = new Array('bar', 'Balkendiagramm');
   optionsAr[4] = new Array('pie', 'Kreisdiagramm');
   var optionStr = '';
   for(i = 0; i<optionsAr.length;i++){
      optionStr = optionStr +  '<option value="' + optionsAr[i][0] + '">' + optionsAr[i][1] + '</option>';
   }

   jQuery('#select_haeufigkeitsdiagramm_diagrammart').html(optionStr);
}



/*
******************************************************************
   Tabellendaten f�r die �bung Anwendung
******************************************************************
*/
function getDataForProzentwerte(div, variable) {
   jQuery.get(lektionURL, { action : 'getTable', uebung : 'prozentwerte', variable : variable },
      function(data){
         if(data != 0){
            jQuery(div).html(data);
            dataAr1Src = jQuery('#dataForFlot1').html();
            dataAr2Src = jQuery('#dataForFlot2').html();
            dataAr1 = eval(dataAr1Src);
            dataAr2 = eval(dataAr2Src);
            drawBarsProzentwerte(dataAr1, '#prozentwerte_canvas1', position = '');
            drawBarsProzentwerte(dataAr2, '#prozentwerte_canvas2', position = '');
         }
         else{
         }
   });
}

function getDataForAnwendung(variable, div){
   jQuery.get(lektionURL, { action : 'getTable', uebung : 'anwendung', variable : variable },
      function(data){
         if(data != 0){
            jQuery(div).html(data);
         }
         else{
         }
   });
}


/*
******************************************************************
   Erstellt das Kreisdiagramm f�r die �bung Kreisdiagramm
******************************************************************
*/
function getKreisdiagrammAnwendung(table, count){
   colorAr =  getColorAr();
   position = 0;
   var dataSum = 2000;
   var centerx = 150;
   var centery = 105;
   var radius = 100;
   var jid= '#'+table + '_wert_' + count;
   var val = jQuery(jid).text();
   var smallest = (360 / dataSum);
   var piece = val * smallest;
   var newposition = position + piece;
   var canvasid = (table == 2 ) ? '#canvas':'#canvas' + table;
   var ctx = jQuery(canvasid)[0].getContext("2d");
   ctx.fillStyle = "#FFFFFF";
   ctx.beginPath();
   ctx.moveTo(centerx, centery);
   ctx.arc(centerx, centery, radius, toRad(0), toRad(360), false);
   ctx.closePath();
   ctx.fill();
   var position = 0;
   var i = -1;
   var eachid = 'td.' + table + '_id';
   jQuery(eachid).each(function(){
      i++;
      var jid = '#' + table + '_wert_' + i;
      var val = jQuery(jid).text();
      var piece = val * smallest;
      var newposition = position + piece;
      color = 'rgb('+ colorAr[i][0] +','+ colorAr[i][1] + ','+ colorAr[i][2] +')';
      percent = round((val / dataSum * 100))
      newid = table + '_wert_' + i + '_percent';
      jQuery(jid).after('<td class="percent" id="'+newid+'">'+percent+' %</td>');
      jQuery('#'+newid).css('background-color',color);

      ctx.fillStyle = color;
      ctx.beginPath();
      ctx.moveTo(centerx, centery);
      ctx.arc(centerx, centery, radius, toRad(position), toRad(newposition), false);
      ctx.closePath();
      ctx.fill();
      position = newposition;
    });
}


function getVariable_xy(){
   varAr = new Array();
      varAr[0] = 'Variablenauswahl';
      varAr[1] = unescape('k%F6rperlich weniger geschafft');
      varAr[2] = 'seelisch weniger geschafft';
      varAr[3] = unescape('seelisch nicht so sorgf%E4ltig');
      varAr[4] = unescape('k%F6rperlich nur best. Dinge');
      return varAr;
   }

function myAlert(info, type){
   type = (type) ? type : 'Info';
   var html = '<div id="dialog" style="display:none;">' + unescape(info) + '</div>';
   jQuery('#uebung').append(html);
   jQuery('#dialog').dialog({
      autoOpen : true,
      draggable: true, 
      buttons: {
      Ok: function() {
            jQuery(this).dialog('close');
            jQuery('#dialog').remove();
         }
      }
   });
   jQuery('#dialog').dialog('open');
   return true;
}

function clearCanvas(name,width,height){
   if(name == undefined || name == ''){
      name = 'canvas';
   }
   var canvas = document.getElementById(name);
   var elementWidth =jQuery('#' + name).attr('width');
   var elementHeight = jQuery('#' + name).attr('height');
   var ctx = canvas.getContext("2d");

   ctx.fillStyle = backgroundColorCanvas;
   ctx.fillRect(0,0,elementWidth,elementHeight);

}

function drawBarsProzentwerte(dataAr, canvasElement, selection){
   if(dataAr == ''){
         myAlert('Fehler bei der Datenbeschaffung!');
         return false;
   }
   for(i=0;i<dataAr.length;i++){
      dataAr[i][0] = 1;
   }
   if(jQuery(canvasElement).html() == null){
      myAlert('Kein Canvas Element vorhanden!');
      return false;
   }// end if
   var marginLeft = 30;
   var marginBottom = 30;
   var marginRight = 20;
   var marginTop = 10;
      // H�he, Breite des Elements (width,height wird ben�tigt)
   var width = jQuery(canvasElement).css('width');
   var height = jQuery(canvasElement).css('height');
      // Umwandlung der css Angaben
   width = width.split('px');
   height = height.split('px');
      // Setzen der Attribute width , height f�r das Element
   jQuery(canvasElement).attr('height', height[0]);
   jQuery(canvasElement).attr('width', width[0]);
      // Abziehen der paddings
   var canvasHeight = jQuery(canvasElement).attr('height')-marginBottom;
   var canvasWidth = jQuery(canvasElement).attr('width')-marginLeft -marginRight;
      // Initialisieren und definieren der Variablen
   var i = 0;
   var xMaxVal = 0;
   var yMaxVal = 0;
   var ySum = 0;
   var xSum = 0;
      //var debug = dataAr+"\n";
      // Finden des gr��ten und kleinsten Wertes und der x,y Summen des Arrays
   for(i=0;i<dataAr.length;i++){
      xMaxVal = Math.max(xMaxVal, dataAr[i][0]);
      //debug = debug + '  '+xMaxVal+ '  '+ dataAr[i][0]+"\n";
      yMaxVal = Math.max(yMaxVal, dataAr[i][1]);
      xSum = xSum + dataAr[i][0];
      //debug = debug + '  '+xSum+ '  '+ dataAr[i][1] + "\n\n";
      ySum = ySum + dataAr[i][1];
   }// end for

      // Umrechnungswert f�r die Breiten der Elemente
   var xFak = (canvasWidth-marginRight-marginLeft) / xSum;
   var yFak = canvasHeight / yMaxVal;
      // Initialisieren des Canvas Elements
   id = canvasElement.split('#');
   var canvas = document.getElementById(id[1]);
   var ctx = canvas.getContext('2d');
      // Initialisieren und definieren der Variablen
   var r = 0;
   var g = 0;
   var b = 0;
   var rgb = '';
   var x = 0;
   var y = 0;
   var color = 0;
      // Setzen des Anfangsabstandes
   var last = marginLeft;
      // Grauen Hintergrund einf�gen
   ctx.fillStyle = backgroundColorCanvas;
   ctx.fillRect(0,0,canvasWidth+marginLeft+marginRight,canvasHeight+marginBottom);
      // Erstellen der Rechtecke

   colorAr = getColorAr();
   for(i=0;i<dataAr.length;i++){
      // Setzen des x,y Wertes des Rechteckes
      x = Math.abs(dataAr[i][0]) *xFak;
      y = Math.abs(dataAr[i][1]) * yFak;
      // Zufalls RGB Daten f�r die Farben
      // Farbwert
      if(dataAr[i][1] <= parseFloat(selection) + 0.009){
         color = "rgb("+colorAr[8][0]+','+colorAr[8][1]+','+colorAr[8][2]+")";
      }
      else{
         color = "rgb("+colorAr[3][0]+','+colorAr[3][1]+','+colorAr[3][2]+")";
      }
         // Erstes Rechteck f�r die schwarze Umrandung
      //ctx.fillStyle = "rgb(0,0,0)";
      //ctx.fillRect(last, canvasHeight + marginTop, x, -y );
         // Zweites Rechteck mit zuf�lliger Farbe
      //color = 'rgb(' + colorAr[i+2][0] + ',' + colorAr[i+2][1] + ',' + colorAr[i+2][2] + ')';
      ctx.fillStyle = color;
      ctx.fillRect(last+1, canvasHeight + marginTop, x, -y );
      ctx.fillStyle = "rgb(255,255,255)";
         // Setzen des Anfangswertes f�r das n�chste Rechteck
      last = last + 1 + x;
   }// end for
      // Aufruf der Beschriftungsfunktion
      beschriftung(xFak,yFak, canvasHeight,canvasWidth, ctx, xSum, yMaxVal, marginLeft, marginBottom, marginTop);
      return 0;
   }
   

   function drawBars(dataAr, canvasElement,type, ctx){
      if (type=='bars'){
         for(i=0;i<dataAr.length;i++){
            dataAr[i][0] = 1;
         }
      }


      // Ist das dataAr vorhanden?
      if(dataAr == ''){
         myAlert('Fehler bei der Datenbeschaffung!');
         return false;
      }
      // Ist das Canvas Element vorhanden?
      if(jQuery(canvasElement).html() == null){
         myAlert('Kein Canvas Element vorhanden!');
         return false;
      }// end if
      // paddings
      var marginLeft = 30;
      var marginBottom = 30;
      var marginRight = 20;
      var marginTop = 10;
      // H�he, Breite des Elements (width,height wird ben�tigt)
      var width = jQuery(canvasElement).css('width');
      var height = jQuery(canvasElement).css('height');
      // Umwandlung der css Angaben
      width = width.split('px');
      height = height.split('px');
      // Setzen der Attribute width , height f�r das Element
      jQuery(canvasElement).attr('height', height[0]);
      jQuery(canvasElement).attr('width', width[0]);
      // Abziehen der paddings
      var canvasHeight = jQuery(canvasElement).attr('height')-marginBottom;
      var canvasWidth = jQuery(canvasElement).attr('width')-marginLeft;
      // Initialisieren und definieren der Variablen
      var i = 0;
      var xMaxVal = 0;
      var yMaxVal = 0;
      var ySum = 0;
      var xSum = 0;
      //var debug = dataAr+"\n";
      // Finden des gr��ten und kleinsten Wertes und der x,y Summen des Arrays
      for(i=0;i<dataAr.length;i++){
         xMaxVal = Math.max(xMaxVal, dataAr[i][0]);
         //debug = debug + '  '+xMaxVal+ '  '+ dataAr[i][0]+"\n";
         yMaxVal = Math.max(yMaxVal, dataAr[i][1]);
         xSum = xSum + dataAr[i][0];
         //debug = debug + '  '+xSum+ '  '+ dataAr[i][1] + "\n\n";
         ySum = ySum + dataAr[i][1];
      }// end for

      // Umrechnungswert f�r die Breiten der Elemente
      var xFak = (canvasWidth-marginRight) / xSum;
      var yFak = canvasHeight / yMaxVal;
      // Initialisieren des Canvas Elements
      //id = canvasElement.split('#');
      //var c = document.getElementById(id[1]);
      //if ($.browser.msie) // excanvas hack
      //   c = window.G_vmlCanvasManager.initElement(c);
      //
      //var ctx = c.getContext('2d');
      // Initialisieren und definieren der Variablen
      var r = 0;
      var g = 0;
      var b = 0;
      var rgb = '';
      var x = 0;
      var y = 0;
      var color = 0;
      colorAr = getColorAr();

      // Setzen des Anfangsabstandes
      var last = marginLeft;
      var greyValue = 0;
      ctx.fillStyle = borderColorCanvas;
      ctx.fillRect(0,0,canvasWidth+marginLeft,canvasHeight+marginBottom);

      // Grauen Hintergrund einf�gen
      ctx.fillStyle = backgroundColorCanvas;
      ctx.fillRect(1,1,canvasWidth + marginLeft -2 ,canvasHeight+marginBottom -2);
      // Erstellen der Rechtecke
      for(i=0;i<dataAr.length;i++){
      // Setzen des x,y Wertes des Rechteckes
         x = Math.abs(dataAr[i][0]) * xFak;
         y = Math.abs(dataAr[i][1]) * yFak;
      // Zufalls RGB Daten f�r die Farben
      // Farbwert
         // Erstes Rechteck f�r die schwarze Umrandung
         ctx.fillStyle = "rgb(0,0,0)";
         ctx.fillRect(last, canvasHeight + marginTop, x, -y );
         // Zweites Rechteck mit zuf�lliger Farbe

         colorItem = (dataAr.length<=8) ? i : 3;
         color = 'rgb(' + colorAr[colorItem][0] + ',' + colorAr[colorItem][1] + ',' + colorAr[colorItem][2] + ')';
         ctx.fillStyle = color;
         ctx.fillRect(last+1, canvasHeight + marginTop, x-2, -y+1 );
         ctx.fillStyle = "rgb(255,255,255)";
         // Setzen des Anfangswertes f�r das n�chste Rechteck
         last = last + 1 + x;
      }// end for
      // Aufruf der Beschriftungsfunktion
      beschriftung(xFak,yFak, canvasHeight,canvasWidth, ctx, xSum, yMaxVal, marginLeft, marginBottom, marginTop);
      return 0;
   }// end function

   /**
    * name beschriftung
    * @param xFak {int}
    * @param yFak {int}
    * @param canvasHeight {int}
    * @param canvasWidth {int}
    * @param ctx {object} Canvas Object
    * @param xSum {int}
    * @param yMaxVal {int}
    * @param marginLeft {int}
    * @param marginBottom {int}
    *
    * Beschriftung der x- und y-Achse
    */

function beschriftung(xFak,yFak, canvasHeight, canvasWidth, ctx, xSum , yMaxVal, marginLeft, marginBottom, marginTop){
   var i = 0;
   // Setzen des Anfangswertes f�r die y-Achsenbeschriftung
   last = canvasHeight + 2 + marginTop;
   //alert(canvasHeight);
   // Schreiben der y-Achsenbeschriftung

   // Setzen des Anfangswertes f�r die y-Achsenbeschriftung
   last = canvasHeight+ 10;
   // Schreiben der x-Achsenbeschriftung
   var maxUnitCount = 10;
   var abstand = 5;
   var compare = yMaxVal;
   var durchlauf = 1;
   var debug = '';
   var x = 0;

   while (compare / abstand > maxUnitCount  && x<100){
      //debug = debug + x;
      switch (parseInt(durchlauf)){
         case 1:
            abstand =1;
            break;
         case 2:
            abstand =5;
            break;
         case 3:
            abstand = 10;
            break;
         case 4:
            abstand = 50;
            break;
         case 5:
            abstand = 100;
            break;
         case 6:
            abstand = 500;
            break;
         case 7:
            abstand = 1000;
            break;

      }
      durchlauf++;
      x++;
   }
   for(i=0;i < yMaxVal ; i = i + 1){
      ctx.fillStyle = "rgb(0,0,0)";
       if (!(i%abstand)){
            ctx.fillText(i, marginLeft-25, last, 20);
            ctx.fillText('-', marginLeft-4, last, 20);
       }
      last = last - yFak;
   }// end for
   // Zeichnen von zwei schwarzen Linien
   ctx.fillStyle = "rgb(0,0,0)";
   ctx.beginPath();
   ctx.moveTo(marginLeft,canvasHeight+10);
   ctx.lineWidth = "1";
   ctx.lineTo(canvasWidth+marginLeft,canvasHeight+10);
   ctx.stroke();
   ctx.closePath();
   ctx.fillStyle = "rgb(0,0,0)";
   ctx.beginPath();
   ctx.moveTo(marginLeft,10);
   ctx.lineWidth = "1";
   ctx.lineTo(marginLeft,canvasHeight+10);
   ctx.stroke();
   ctx.closePath();
}// end function

function getZentrierung(dataAr, mittelwert) {
   var i = 0;
   for(i=0;i<dataAr.length;i++){
      dataAr[i][0] = dataAr[i][0] - mittelwert;
   }
   return dataAr;
}
function getNormierung(dataAr, mittelwert, standardabweichung) {
   var i=0;
   for(i=0;i<dataAr.length;i++){
      dataAr[i][0] = round((dataAr[i][0] - mittelwert) / standardabweichung);
   }
   return dataAr;
// mittelwert abziehen / standardabweichung
}
function getStandardabweichung(dataAr){
   var varianz = getVarianz(dataAr);
   var standardabweichung = Math.sqrt(varianz);
   return standardabweichung;
}
function getStandardabweichungClass(dataAr){
   var varianz = getVarianzClass(dataAr);
   var standardabweichung = Math.sqrt(varianz);
   return standardabweichung;
}
function getVarianz(dataAr){
   var i=0;
   var sum = 0;
   var varianz = 0;
   var mittelwert = getMittelwert(dataAr);
   for(i=0;i<dataAr.length;i++){
      sum = sum +  Math.pow((dataAr[i][1] -  mittelwert), 2);
   }
   var varianz = sum / dataAr.length;
   return varianz;
}
function getMittelwertClass(dataAr) {
   var sum = 0;
   var mittelwert = 0;
   var anzahl = 0;
   var total = 0;
   for(i=0;i<dataAr.length;i++){
      anzahl =  dataAr[i][0] * dataAr[i][1];
      sum = sum + anzahl;
      total = total + dataAr[i][1];
   }
   mittelwert = sum / total;
   //alert('total: ' + total);
   //alert(mittelwert);
   return mittelwert;
}
function getVarianzClass(dataAr){
   var i=0;
   var sum = 0;
   var anzahl = 0;
   var varianz = 0;
   var mittelwert = getMittelwertClass(dataAr);
   for(i=0;i<dataAr.length;i++){
      anzahl =  anzahl + dataAr[i][0] * dataAr[i][1];
      sum = sum +  Math.pow((dataAr[i][0] * dataAr[i][1] -  mittelwert * dataAr[i][1]), 2);
   }
   //alert('mittelwert:' + mittelwert);
   //alert('anzahl:' + anzahl);
   //alert('sum:' + sum);
   var varianz = sum / anzahl;
   return varianz;
}
function getMittelwert(dataAr){
   var sum = 0;
   var mittelwert = 0;
   for(i=0;i<dataAr.length;i++){
      sum = sum + dataAr[i][0];
   }
   mittelwert = sum / dataAr.length;
   return mittelwert;
}


function getErgebnis(ergebnis_b_c, ergebnis_a_d){
   var ergebnis = Math.cos(180 / (1 + Math.sqrt(parseInt(ergebnis_b_c) / parseInt(ergebnis_a_d))));
   ergebnis = round(ergebnis);
   jQuery('#ergebnis').text(ergebnis);
}
function getErgebnisseTetrachorisch(){
   var a = jQuery('#a').html();
   var b = jQuery('#b').html();
   var c = jQuery('#c').html();
   var d = jQuery('#d').html();
   var ergebnis_a_b = parseInt(a) + parseInt(b);
   var ergebnis_a_c = parseInt(a) + parseInt(c);
   var ergebnis_b_d = parseInt(b) + parseInt(d);
   var ergebnis_c_d = parseInt(c) + parseInt(d);
   var ergebnis_b_c = parseInt(b) + parseInt(c);
   var ergebnis_a_d = parseInt(a) + parseInt(d);
   jQuery('#ergebnis_a_b').html(ergebnis_a_b);
   jQuery('#ergebnis_a_c').html(ergebnis_a_c);
   jQuery('#ergebnis_b_d').html(ergebnis_b_d);
   jQuery('#ergebnis_c_d').html(ergebnis_c_d);
   jQuery('#ergebnis_b_c').html(ergebnis_b_c);
   jQuery('#ergebnis_a_d').html(ergebnis_a_d);
}
/*
   var search = 'option[value=' + variable + ']';
   var skalenniveau = jQuery(search).attr('class');
   notAllowedAr = new Array('ordinal');
   var allowed = checkSkalenniveau( skalenniveau , notAllowedAr);
   if(allowed == false ){
      variable = 0;
   }
*/
function checkSkalenniveau(skalenniveau, notAllowedAr){
   var i = 0;
   var allowed = true;
   for(i = 0; i < notAllowedAr.length ; i++){
      if(skalenniveau == notAllowedAr[i]){
         allowed = false;
      }
   }
   if(allowed == false)
      myAlert('Das Skalenniveau ' + skalenniveau + ' ist nicht erlaubt fuer diesen Datensatz');
   return allowed;
}
function makeVariablenAr(dataAr){
   var returnStr = '';
   var i = '';
   if(dataAr == undefined){
      //returnStr =  'V184breakV15breakV37breakV185breakV490breakV502breakV503breakV549breakV491';
      returnStr =  '';
   }
   else{
      for(i = 0; i< dataAr.length; i++){
         if(i == 0)
            returnStr = dataAr[i]
         else
            returnStr += 'break' + dataAr[i];
      }
   }
   return returnStr;
}
});



