// Quicksearch
$.fn.quicksearch = function() {

  // VARS definieren
  var elem = $(this);
  //var elemInput = elem.find('input#SchnellsucheFeld');
  var elemInput = $('input#SchnellsucheFeld');
  var elemSubmit = $('.SchnellsucheSubmit');
  var elemInputDefaultVal = $(elemInput).attr('value');
  //var elemFancy = elem.find('div#qsLayerFancy');
  var elemFancy = $('div#qsLayerFancy');
  //var elemLayer = elem.find('div#qsLayer');
  var elemLayer = $('div#qsLayer');
  //var elemContent = elem.find('#qsLayer_suggest');
  var elemContent = $('#qsLayer_suggest');
  var searchLang = $('input#SchnellsucheLang').attr('value');
  var searchUrl = $('input#SchnellsucheSearchUrl').attr('value');
  var emtyResultText = $('input#SchnellsucheEmtyResultText').attr('value');
  var suggestUrl = 'http://www.schulergroup.com/_ext/lib/quicksearch/guesser.php?sLang='+searchLang+'&sFormat=json';
  
 
  if(jsPrefix != null) {
    elemInput.attr('value', 'Search is disabled in preview');
    $('#FormSchnellsuche').submit(function(){return false;});
    return;
  }

 
  // Tagcloud reinladen
  $('#qsLayer_tagcloud').tagcloud(searchLang, searchUrl);

  // Eingabefeld mit Label der aktuellen Sprache versehen
  //elemInput.val(labelText[language]);

  elemSubmit.click(function() {
    if($("#SchnellsucheFeld").attr('value').length > 3 && $("#SchnellsucheFeld").attr('value') != elemInputDefaultVal) {
      location.href= searchUrl+'?wm=sub&q='+$("#SchnellsucheFeld").attr('value');
    }
  });
  
  
  // Event definieren
  // Wenn das Eingabefeld Focus bekommt
  elemInput.live('focus',function () {
      // Label löschen, falls es eins gibt
    if ($(this).attr('value') === elemInputDefaultVal) {
      $(this).attr('value', '');
    }

    // Layer einblenden
    elemFancy.show();
    elemLayer.show();

  });

  // Event definieren
  // Wenn jemand etwas in das Suchfeld eingibt
  elemInput.keyup(function() {
    if ($(this).attr('value').length > 3) {
      // get by ajax the suggestions
      var query = $(this).attr('value');

      // Nur wenn es einen PHP Callback gibt und dieser definiert wurde
      if (typeof(suggestUrl) != "undefined") {
        var output = '';
        $.ajax({
          url: suggestUrl + '&q=' + query,
          context: elemContent,
          dataType: "json",
          error: function(data){
            //alert('error' + data.responseText);
            $('#qsLayer_suggest li').hide();
            $("#suggestNoResult").show();
            //elemContent.html('<li>'+emtyResultText+'</li>');
          },
          success: function (data, txtStatus, xhr) {
            if(data == null || data.length == 0) {
              $('#qsLayer_suggest li').hide();
              $("#suggestNoResult").show();
            }
            else
            {
              // Alle Daten durchgehen und Liste bauen
              $.each(data, function(i,val){
                var ltrick = 'href="'+val.url+'"';
                output = output + '<li><a '+ltrick+'>'+val.title+'</a></li>'
              })

              // Liste um Span Tag, der die Treffer kennzeichnet erweitern!
              elemContent.html(output.replace(
                  (
                    new RegExp(
                      '(href="[^"]*">)([^<]*)(' + query + ')([^<]*<)',
                      "gim"
                    )
                  ),'$1$2<span>$3</span>$4'
                )
              );
              $("#suggestShowAll").show();
            }

          }
        });
      }
    }

    if($(this).attr('value').length < 4) {
      $('#qsLayer_suggest li').hide();
      $("#suggestNotEnough").show();
    }
  });

 
  // Wenn man das Eingabefeld den Focus verliert,
  // Layer wieder ausblenden
  elemInput.live('blur', function(){
    window.setTimeout(function () {
      if ($(this).attr('value') === "") {
        $(this).attr('value', elemInputDefaultVal);
      }
      // Layer ausblenden
      elemFancy.hide();
      elemLayer.hide();
    },1000);
  })
}

$.fn.tagcloud = function(searchLang, searchUrl) {
  var output = '';
  $.ajax({
    url: 'http://www.schulergroup.com/_ext/lib/quicksearch/tagCloud.php?sLang='+searchLang+'&sFormat=json',
    context: this,
    dataType: "json",
    success: function (data, txtStatus, xhr) {
      $.each(data,function(i, val){
        var ltrick = 'href="'+searchUrl+val.url+'"';
        if(val.int > 300) {
          var fsize = 300;
        } else {
          var fsize = val.int;
        }
        output = output+'<li><a '+ltrick+' style="font-size:'+fsize+'%">'+val.title+'</a></li>'
      })
      $(this).html(output);
    }
  });
}

