$(document).ready(function() {
  // Bilder mit Lupen versehen
  $("div.wrapper-image img").wrap('<div class="wrapper-loupe"></div>');
  $("div.wrapper-loupe").append('<div class="wrapper-loupe-image"></div>');
  
  // Arrays
  var paragraphsArray = $("div.panel-article p:not(p.intro)");
  var thumbnailsArray = $("div.wrapper-image");
  var comboArray = new Array();
  var assignedThumbs = Array();
   
  // Floating hinter Absätzen stoppen
  $("div.panel-article p").after('<div class="clear"></div>');
  
  // Funktionen
  
  // Funktion zum Sortieren der Daten
  var sortByThumbs = function(a, b) {
    var x = $(a.thumbs).size();
    var y = $(b.thumbs).size();
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
  }  
  
  // Funktion um zu prüfen ob ein Element in einem Array ist
  Array.prototype.inArray = function(elem) {
    var i;
    for (i = 0; i < this.length; i++) {
      if (this[i] == elem) {return true;}
    }
    return false;
  };


  // Thumbnails aufnehmen
  var k = 0;
  $(paragraphsArray).each(function(i) {
    var paragraph = $(this);
    var paragraphHeight = paragraph.height();
    
    // Array zum speichern 
    comboArray[k] = new Object();
    comboArray[k]["index"] = i;
    comboArray[k]["thumbs"] = new Array();
    
    // Jedes Thumb das "klein" genug ist in Array speichern
    var l = 0;
    $(thumbnailsArray).each(function(j) {   
      if(($(this).height() - 30) <= paragraphHeight) {        
        comboArray[k]["thumbs"][l] = j;
        l++;
      }
    });        
    k++;
  });
  
  // Daten sortieren
  comboArray.sort(sortByThumbs);
  
  // 
  for(i = 0; i < comboArray.length; i++) {
    // Entsprechender Paragraph und Passende Thumbs
    var paragraph = paragraphsArray[comboArray[i]["index"]];
    var thumbsArray = comboArray[i]["thumbs"];
    
    // Thumbs durchlaufen
    for(j = 0; j < thumbsArray.length; j++) {
    
      // Wenn ein Thumb noch nicht benutzt wurde, an Paragraph fügen
      if(!assignedThumbs.inArray(thumbsArray[j])) {
      
        var thumb = $(thumbnailsArray[thumbsArray[j]]);
        
        // Thumb in VergebenArray speichern
        assignedThumbs.push(thumbsArray[j]);
        
        // Thumb an Paragraph fügen
        $(paragraph).before(thumb);
        thumb.show();
        
        // Schleife unterbrechen
        break;
      }
    }
  }

  // Thumbnails anordnen
  $("div.wrapper-image").each(function(i) {
    if(i%2 == 0) {
      $(this).addClass("wrapper-image-right");
    } else {
      $(this).addClass("wrapper-image-left");
    }
    
    // Überschriften ggf. ins Floating mit einbeziehen
    $(this).prev("h2, h3, h4").insertAfter($(this));
  });
  
  // Testkasten
  $("table.testkasten tr:nth-child(odd)").addClass("odd");

  // Icons
  $("table.yes-no tr td").each(function(i) {
    if($(this).text() == "+") {
      $(this).text(''); 
      $(this).append('<img src="../../media/icon-yes.png" alt="icon-yes" width="16" height="16"/>');
    } else if($(this).text() == "-") {
      $(this).text(''); 
      $(this).append('<img src="../../media/icon-no.png" alt="icon-yes" width="16" height="16"/>');
    }
  });
  
  $("table.plus-minus tr td").each(function(i) {
    if($(this).text() == "+") {
      $(this).text(''); 
      $(this).append('<img src="../../media/icon-plus.png" alt="icon-plus" width="16" height="16"/>');
    } else if($(this).text() == "-") {
      $(this).text(''); 
      $(this).append('<img src="../../media/icon-minus.png" alt="icon-minus" width="16" height="16"/>');
    }
  });
  
});