var gSearch = new Array();

var gSearchTimeout = null;

var gSubjectValue = "";

$(document).ready(function() {
  $("input#subject").keyup(function() {
   onSubjectValueChange();
  }).keyup();
});

function onSubjectValueChange() {
  var subjectValue = $("input#subject").val();

  if (gSubjectValue != subjectValue) {
    gSubjectValue = subjectValue;

    $("#wrongSubject").remove();
    $("fieldset.submit-buttons > input[type='submit']").removeAttr("disabled");

    $("#autosuggestContainer").remove();

    var wordList = gSubjectValue.split(/[\t\s]+/);

    if (typeof(gModerator) == "undefined" && wordList.length <= 3 && gSubjectValue.match(/pomocy|nie\s*dzia[l\u0142]a|problem|wa[z\u017c]ne|pilne/ig)) {
      if (gSearchTimeout) {
        clearTimeout(gSearchTimeout);
      }

      $("input#subject").parent().parent().before('<div id="wrongSubject"><p class="error">Nieprawidłowy temat wiadomości! Proszę zastanowić się nad lepszym doborem tematu wiadomości...</p><p>Typowe nieprawidłowe tematy:</p><ul><li>Ważne!</li><li>Nie działa...</li><li>Pomocy!</li><li>Mam problem, pilne!!!</li></ul><p>Tematy z tymi słowami będą uznawane za nieprawidłowe.</p></div>');
      $("fieldset.submit-buttons > input[type='submit']").attr("disabled", "disabled");
    }
    else {
      if (gSubjectValue.length > 3) {
        if (gSearchTimeout) {
          clearTimeout(gSearchTimeout);
        }
        
        gSearchTimeout = setTimeout(function(){executeSearch(gSubjectValue);}, 1000);
      }
    }
  }
}

function executeSearch(aSubjectValue) {
  gSearchTimeout = null;

  aSubjectValue = aSubjectValue.replace(/[^\w\u0105\u0107\u0119\u0142\u0144\u015b\u00f3\u017a\u017c\. ]/ig, " ");

  aSubjectValue = aSubjectValue + " ";

  aSubjectValue = aSubjectValue.replace(/[\s]a[\s]|[\s]i[\s]|[\s]o[\s]|[\s]w[\s]|[\s]z[\s]|[\s]aby[\s]|[\s]albo[\s]|[\s]ale[\s]|[\s]a\u017c[\s]|[\s]by[\s]|[\s]by\u0107[\s]|[\s]co[\s]|[\s]czy[\s]|[\s]dla[\s]|[\s]da[\s]|[\s]dany[\s]|[\s]danego[\s]|[\s]danym[\s]|[\s]dana[\s]|[\s]danej[\s]/ig, " ");
  aSubjectValue = aSubjectValue.replace(/[\s]dan\u00b1[\s]|[\s]do[\s]|[\s]gdy[\s]|[\s]gdzie[\s]|[\s]ich[\s]|[\s]im[\s]|[\s]i\u017c[\s]|[\s]je[\s]|[\s]jego[\s]|[\s]jest[\s]|[\s]jeste\u00b6[\s]|[\s]je\u00b6li[\s]|[\s]je\u017celi[\s]|[\s]ka\u017cdy[\s]|[\s]kiedy[\s]|[\s]kt\u00f3ry[\s]|[\s]kt\u00f3ra[\s]|[\s]kt\u00f3re[\s]|[\s]mo\u017cesz[\s]|[\s]mo\u017ce[\s]/ig, " ");
  aSubjectValue = aSubjectValue.replace(/[\s]m\u00f3j[\s]|[\s]moja[\s]|[\s]moje[\s]|[\s]na[\s]|[\s]nasz[\s]|[\s]natenczas[\s]|[\s]nich[\s]|[\s]nimi[\s]|[\s]od[\s]|[\s]on[\s]|[\s]go[\s]|[\s]mu[\s]|[\s]jemu[\s]|[\s]nim[\s]|[\s]ona[\s]|[\s]jej[\s]|[\s]ni\u00b1[\s]|[\s]po[\s]|[\s]podczas[\s]/ig, " ");
  aSubjectValue = aSubjectValue.replace(/[\s]ponad[\s]|[\s]poniewa\u017c[\s]|[\s]powy\u017cej[\s]|[\s]przed[\s]|[\s]przy[\s]|[\s]siebie[\s]|[\s]si\u0119[\s]|[\s]sobie[\s]|[\s]sw\u00f3j[\s]|[\s]swoja[\s]|[\s]swoj\u00b1[\s]|[\s]swojej[\s]|[\s]swoimi[\s]|[\s]ta[\s]|[\s]t\u00b1[\s]|[\s]tej[\s]|[\s]tak[\s]|[\s]ten[\s]|[\s]ta[\s]|[\s]tego[\s]/ig, " ");
  aSubjectValue = aSubjectValue.replace(/[\s]tej[\s]|[\s]t\u0119dy[\s]|[\s]t\u00b1[\s]|[\s]tym[\s]|[\s]tych[\s]|[\s]tymi[\s]|[\s]to[\s]|[\s]tw\u00f3j[\s]|[\s]twoja[\s]|[\s]twoj\u00b1[\s]|[\s]twojej[\s]|[\s]twoimi[\s]|[\s]ty[\s]|[\s]tylko[\s]|[\s]wasz[\s]|[\s]we[\s]|[\s]wiele[\s]|[\s]wtenczas[\s]|[\s]za[\s]|[\s]ze[\s]|[\s]zza[\s]|[\s]\u017ce[\s]/ig, " ");

  aSubjectValue = aSubjectValue.replace(/\.+/g, ".");
  aSubjectValue = aSubjectValue.replace(/\s+/g, " ");
  aSubjectValue = aSubjectValue.replace(/^\s+|\s+$/g, "");

  gSearch[0].execute(aSubjectValue);
  gSearch[1].execute(aSubjectValue);
}

function initializeGoogleSearch() {
  gSearch[0] = new google.search.WebSearch();
  gSearch[0].setSiteRestriction("mozillapl.org/forum/");
  gSearch[0].setResultSetSize(google.search.Search.SMALL_RESULTSET);
  gSearch[0].setNoHtmlGeneration();
  gSearch[0].setSearchCompleteCallback(null, onSearchComplete, [0]);

  gSearch[1] = new google.search.WebSearch();
  gSearch[1].setSiteRestriction("mozillapl.org/wiki/");
  gSearch[1].setResultSetSize(google.search.Search.SMALL_RESULTSET);
  gSearch[1].setNoHtmlGeneration();
  gSearch[1].setSearchCompleteCallback(null, onSearchComplete, [1]);
}

function onSearchComplete(aSearcher) {
  if (gSearch[aSearcher].results.length) {
    if (!$("#autosuggestContainer").length) {
      $("input#subject").parent().parent().after('<dl style="clear:left;display:none;" id="autosuggestContainer"><dt><strong>Sugerowane tematy i&nbsp;artykuły:</strong></dt><dd><ol id="autosuggestResultsContainer"></ol></dd></dl>');
    }
  
    $.each(gSearch[aSearcher].results, function(aKey, aValue) {
      $("#autosuggestResultsContainer").append("<li><div class=\"suggestionTitle\"><a href=\"" + aValue.unescapedUrl + "\">" + aValue.titleNoFormatting + "</a></div><div class=\"suggestionContent\">" + aValue.content + "</div></li>");
    });
  
    $("#autosuggestContainer").show();
  }
}

