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


shopUrl = 'http://www.mlbk.de/web/2009/';
var backgroundColorCanvas = 'rgb(244,244,244)';
var borderColorCanvas = 'rgb(0,0,0)';
fullVariableAr =  'V184breakV15breakV37breakV185breakV490breakV502breakV503breakV549breakV491';
jQuery(document).ready( function() {
   var lektionURL=shopUrl + 'lektionen.html';
   jQuery('p. old').hide();
   jQuery('#uebung').show();

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

   �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;
      }
      jQuery('.beschriftungFlot').hide();
      var variablenStr = '';
      getDataVariablen('haeufigkeitstabelle_variablen', variablenStr);
      // Hole Werte Variablenbezogen
      jQuery('#select_standardabweichung').change(function(){
         jQuery('.beschriftungFlot').hide();
         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('.beschriftungFlot').show();

         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;
      // Hole Tabellen und Variablendaten
      var variablenStr = '';
      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('#canvas').remove();
            jQuery('#overlay_canvas').remove();
            jQuery('div .tickLabels').remove();
            jQuery('#submit_punktediagramm').hide();
         }
         else {
            jQuery('#submit_punktediagramm').show();
            jQuery('#dialog').remove();
            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(){
         jQuery('.ui-dialog').remove();
         clearCanvas('canvas');
         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){
            clearCanvas('canvas');
            return false;

         }
         jQuery('#select_haeufigkeitsdiagramm_diagrammart').val('');
         getData('getTable', 'balkendiagramm', '#haeufigkeitsdiagramm_table', variable);
      });

      jQuery('#select_haeufigkeitsdiagramm_diagrammart').change(function(){
         jQuery('.ui-dialog').remove();
         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');
         //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'){
               clearCanvas('canvas');
               return false;
            }

            /////
            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
            //getData('getTable', 'histogramm_flot', '#haeufigkeitsdiagramm_table', variable);
            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'){
               clearCanvas('canvas');
               return false;
            }
            // Erstellen des Histogramms
            var dataForFlot = jQuery('#dataForFlotHistogramm').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&uuml;r diesen Datensatz ung&ouml;ltig');
         }
      });

      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
            clearCanvas('canvas2');   
      });
      return 0;
   });

   /*
******************************************************************
   �bung Standardisierung
******************************************************************
*/
   jQuery('#standardisierung').ready(function(){
      if(jQuery('#standardisierung').html() == null)
         return false;
      var variablenStr = '';
      getDataVariablen('standardisierung', 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){
         var anmerkungContent = jQuery('#anmerkung_content').html();
         
         myAlert(escape(anmerkungContent));
      
         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();
         var otherVariable = jQuery('#select_tetrachorisch_y').val();
         x = (variable != '0') ? true:false;
         jQuery('#select_tetrachorisch_y').val(0);
         y = false;
         jQuery('#tetrachorisch_table').html('');
         if((x == true && y == true)){
            if( variable == otherVariable ){
               myAlert('Bitte w&auml;hlen Sie unterschiedliche Variablen.');
               return false;
            }
            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();
         var otherVariable = jQuery('#select_tetrachorisch_x').val();
         y = (variable != '0') ? true:false;
         jQuery('#tetrachorisch_table').html('');
         if(x == true && y == true){
            if( variable == otherVariable ){
               myAlert('Bitte w&auml;hlen Sie unterschiedliche Variablen.');
               return false;
            }
            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(' div .plus > img').live('click', function(){
         unsetDroppablesBiserial();
         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(' div .minus').live('click', function(){
         unsetDroppablesBiserial();
         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(){
         unsetDroppablesBiserial()
         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(){
         unsetDroppablesBiserial();
         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 unsetDroppablesBiserial() {
      jQuery('#droppable_biserial_x0').html('');
      jQuery('#droppable_biserial_x1').html('');
      jQuery('#droppable_biserial_s').html('');
      jQuery('#droppable_biserial_n0').html('');
      jQuery('#droppable_biserial_n1').html('');
      jQuery('#droppable_biserial_n').html('');

   }
   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('div .plus').live('click', function(){
         unsetDroppablesBiserial();
         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('div .minus').live('click', function(){
         unsetDroppablesBiserial();
         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(){
         unsetDroppablesBiserial();
         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(){
         unsetDroppablesBiserial();
         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('&seite=');
      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';
      }
      jQuery( 'div .tickLabels').remove();
      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('Diese Diagrammart ist f&uuml;r dieses Item nicht m&ouml;glich.');
      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;
   }
});


