').insertBefore('a.add');
+ });
+ break;
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
default:
}
$('div.performing_op').delay(2000).fadeOut(function(){resetLoader()});
diff --git a/public/javascripts/plugins/tag-it.js b/public/javascripts/plugins/tag-it.js
new file mode 100755
index 0000000000..bf17879f39
--- /dev/null
+++ b/public/javascripts/plugins/tag-it.js
@@ -0,0 +1,110 @@
+(function($) {
+
+ $.fn.tagit = function(options) {
+
+ var defaults = {
+ availableTags: [],
+ values: [],
+ getValues: []
+ }
+
+ var el = this;
+
+ const BACKSPACE = 8;
+ const ENTER = 13;
+ const SPACE = 32;
+ const COMMA = 44;
+
+ // add the tagit CSS class.
+ el.addClass("tagit");
+
+ // create the input field.
+ var html_input_field = "\n";
+ el.html (html_input_field);
+
+ tag_input = el.children(".tagit-new").children(".tagit-input");
+
+ for (var i = 0; i < options.values.length; i++) {
+ create_choice(jQuery.trim(options.values[i]));
+ }
+
+ $(this).click(function(e){
+ if (e.target.tagName == 'A') {
+ // Removes a tag when the little 'x' is clicked.
+ // Event is binded to the UL, otherwise a new tag (LI > A) wouldn't have this event attached to it.
+ $(e.target).parent().remove();
+ }
+ else {
+ // Sets the focus() to the input field, if the user clicks anywhere inside the UL.
+ // This is needed because the input field needs to be of a small size.
+ tag_input.focus();
+ }
+ });
+
+ tag_input.keypress(function(event){
+ if (event.which == BACKSPACE) {
+ if (tag_input.val() == "") {
+ // When backspace is pressed, the last tag is deleted.
+ $(el).children(".tagit-choice:last").remove();
+ }
+ }
+ // Comma/Space/Enter are all valid delimiters for new tags.
+ else if (event.which == COMMA || event.which == SPACE || event.which == ENTER) {
+ event.preventDefault();
+
+ var typed = tag_input.val();
+ typed = typed.replace(/,+$/,"");
+ typed = typed.trim();
+
+ if (typed != "") {
+ if (is_new (typed)) {
+ create_choice (typed);
+ }
+ // Cleaning the input.
+ tag_input.val("");
+ }
+ }
+ });
+
+ // tag_input.autocomplete({
+ // source: options.availableTags,
+ // select: function(event,ui){
+ // if (is_new (ui.item.value)) {
+ // create_choice (ui.item.value);
+ // }
+ // // Cleaning the input.
+ // tag_input.val("");
+ //
+ // // Preventing the tag input to be update with the chosen value.
+ // return false;
+ // }
+ // });
+
+ function is_new (value){
+ var is_new = true;
+ this.tag_input.parents("ul").children(".tagit-choice").each(function(i){
+ n = $(this).children("input").val();
+ if (value == n) {
+ is_new = false;
+ }
+ })
+ return is_new;
+ }
+ function create_choice (value){
+ var el = "";
+ el = "
\n";
+ el += value + "\n";
+ el += "x\n";
+ el += "\n";
+ el += "