diff --git a/ext/autocomplete/script.js b/ext/autocomplete/script.js
new file mode 100644
index 00000000..b2f26384
--- /dev/null
+++ b/ext/autocomplete/script.js
@@ -0,0 +1,58 @@
+$(function(){
+ $('[name=search]').tagit({
+ singleFieldDelimiter: ' ',
+ beforeTagAdded: function(event, ui) {
+ // give special class to negative tags
+ if(ui.tagLabel[0] === '-') {
+ ui.tag.addClass('tag-negative');
+ }else{
+ ui.tag.addClass('tag-positive');
+ }
+ },
+ autocomplete : ({
+ source: function (request, response) {
+ var isNegative = (request.term[0] === '-');
+ $.ajax({
+ url: base_href + '/api/internal/autocomplete',
+ data: {'s': (isNegative ? request.term.substring(1) : request.term)},
+ dataType : 'json',
+ type : 'GET',
+ success : function (data) {
+ response($.map(data, function (item) {
+ item = (isNegative ? '-'+item : item);
+ return {
+ label : item,
+ value : item
+ }
+ }));
+ },
+ error : function (request, status, error) {
+ alert(error);
+ }
+ });
+ },
+ minLength: 1
+ })
+ });
+
+ $('.ui-autocomplete-input').keydown(function(e) {
+ var keyCode = e.keyCode || e.which;
+
+ //Stop tags containing space.
+ if(keyCode == 32) {
+ e.preventDefault();
+
+ $('[name=search]').tagit('createTag', $(this).val());
+ $(this).autocomplete('close');
+ } else if (keyCode == 9) {
+ e.preventDefault();
+
+ var tag = $('.tagit-autocomplete[style*=\"display: block\"] > li:first').text();
+ if(tag){
+ $('[name=search]').tagit('createTag', tag);
+ $('.ui-autocomplete-input').autocomplete('close');
+ $('.ui-autocomplete-input').val(''); //If tag already exists, make sure to remove duplicate.
+ }
+ }
+ });
+});
\ No newline at end of file
diff --git a/ext/autocomplete/theme.php b/ext/autocomplete/theme.php
index 3b5a4af5..462d2bfd 100644
--- a/ext/autocomplete/theme.php
+++ b/ext/autocomplete/theme.php
@@ -7,68 +7,7 @@ class AutoCompleteTheme extends Themelet {
$page->add_html_header("");
$page->add_html_header("");
- $page->add_html_header('');
+ $page->add_html_header('');
$page->add_html_header("");
-
- $page->add_html_header("");
}
}