/*
  rae.js
*/

RAe={};

RAe.init=function(){

  //Suchfunktion:
  $('suchtext').observe("keypress", checkSearchText);
  
  function checkSearchText(event){
    var el=event.element();
    switch(event.keyCode){
      case 0:
        el.setStyle("color:black");
        break;    
      case 13:
        var t=el.value;
        if (t.length > 3){
          el.setStyle("color:gray");
          RAe.search(t);
        }
        break;
    }
  }
  
  // Evtl. Suchmarkierungen setzen:
  var st = $('suchtext').value;
  if (st) RAe.markSearchResults(st);

};

/* Suchfunktionen **************************************************************************************/
RAe.search=function(t){
  var url = "search.php?st="+t;
  location=url;
};

RAe.search_text=function(st){
  var url="php/search_text.php?st="+st;
  new Ajax.Request(url, {
    method:'get',
    onSuccess:function(data){
      $('suchergebnis').innerHTML=data.responseText;
    }
  });
};

/* Hilfsfunktion: Überprüfung auf leeren Text ********************************************************/
RAe.isEmpty=function(s){
  var s1=s;
  var s1=s1.replace(/\s/g,'');
  return (s1.length == 0);
};

/* Änderung des Textknotens **************************************************************************/
RAe.changeTextNode=function(n, st, muster){
  var parent=n.parentNode;
  var text=n.data;
  var res=text.split(muster);
  if (res.length == 1) return;
  parent.removeChild(n);
  for (var i=0; i < res.length; i++){
    if (res[i].length > 0) {
      if (i % 2){
        var tn=document.createElement("span");
        tn.className="st";
        var sp=document.createTextNode(res[i]);
        tn.appendChild(sp);
      }
      else {
        var tn=document.createTextNode(res[i]);
      }
      parent.appendChild(tn);
    }
  }
};

/* Markierung der Suchbegriffe auf der Seite *********************************************************/
RAe.mark = function(n, st, muster){
  if (n.nodeType == 3){
    if (RAe.isEmpty(n.data)) return;
    RAe.changeTextNode(n, st, muster);
  }
  else {
    var childs=n.childNodes;
    for (var i=0; i < childs.length; i++){
      RAe.mark(childs[i], st, muster);
    }
  }
};

RAe.markSearchResults=function(st){
  var muster=new RegExp("("+st+")", "gi");
  var co=$('content');
  RAe.mark(co,st,muster);
  var sts=document.getElementsByClassName('st');
  if (sts.length > 0) sts[0].scrollIntoView();
};


