var words;

function Words() {
}

Words.prototype.initialize = function(el) {
  var text = el.innerHTML;
  var self = this;
  
  this.words = new Array();
  
  text = this.replace(text, /\b(das|der|die|dem|den|des)\b/i, 'd');
  text = this.replace(text, /\b(ein|eine|einer|einen|einem|eines)\b/i, 'ein');
  text = this.replace(text, /\b(dies|diese|diesen|diesem|dieses)\b/i, 'dies');
  text = this.replace(text, /\b(sein|seine|seiner|seinen|seinem|seines)\b/i, 'sein');
  text = this.replace(text, /\b(dein|deine|deiner|deinen|deinem|deines)\b/i, 'dein');
  text = this.replace(text, /\b(mein|meine|meiner|meinen|meinem|meines)\b/i, 'mein');
  text = this.replace(text, /\b(ihr|ihre|ihrer|ihren|ihrem|ihres)\b/i, 'ihr');
  text = this.replace(text, /\b(euer|euren|eurer|euren|eurem|euren)\b/i, 'euer');
  
  el.innerHTML = text;
  
  for (var i = 0; i < this.words.length; i++) {
    var el = YAHOO.util.Dom.get('word-' + i);
    YAHOO.util.Event.addListener(el, 'keypress', function (e) {
        self.check(this, e)
    });
  }
};

Words.prototype.el_to_index = function (el) {
  return parseInt(el.id.split('-')[1], 10);
}

Words.prototype.check = function (el, e) {
  // if (e.keyCode != 9 && e.keyCode != 13)
  if (e.keyCode != 13)
    return;
  
  var index  = this.el_to_index(el);
  var correct = el.value == this.words[index];

  if (el.value == '') {
    el.value = this.words[index];
    el.className = 'cheat';
    return;
  }
  
  el.className = correct ? 'correct' : 'wrong';
  
  if (!correct)
    YAHOO.util.Event.preventDefault(e);
}

Words.prototype.replace= function(text, regex, type) {
  var pieces = text.split(regex);
  
  if (pieces.length == 1)
    return text;
  
  text = '';
  for (var i = 0; i < pieces.length - 1; i += 2) {
    this.words.push(pieces[i+1]);
    text += pieces[i];
    text += '<span class="word">';
    text += '<input type="text" id="word-' + (this.words.length - 1) + '"></input>';
    text += ' <em>(' + type + ')</em></span>';
  }
  text += pieces[i];
  
  return text;
}

