// note: content_type and sport_id MUST be set in Javascript prior to running updateDefaultTags

   var tags = new Array();
   var defaultTags = new Array();
   var blankRE = /^(\s+)$/;
   var cAuto = null;
 
   function addTag(tagName) {
     if (blankRE.test(tagName) || tagName == "" ) {
       alert("Error: you provided a blank tag");
       return;    
     }

     if (defaultTags.indexOf(tagName) >= 0) {
       document.getElementById('tag').value = "";
       return;
     }

     if (tags.indexOf(tagName) < 0 ) {
       tagBox = document.getElementById('tag_box');
       tagBox.innerHTML += createTagElement(tagName);
       tags.push(tagName);
     } else {
       alert("Error: this tag has already been added.");
     }

     document.getElementById('tag').value = "";
     preparePost();
   }
 
   function addTagElement(tagElement) {
     addTag(tagElement.innerHTML);
   }

   function createTagElement(tagName) {
     tagNameClean = escape(tagName);
     return "<div><a href='javascript:;' onClick='removeTag(\""+tagNameClean+"\"); return false;'><img style='margin-left:4px;margin-right:4px;margin-top:1px;margin-bottom:1px;' src='images/dialogs-icon-delete.png'/></a> "+tagName+"</div>";
   }

   function removeTag(tagName) {
     tagName = unescape(tagName);
     if (tags.indexOf(tagName) >= 0) {
       tags.splice(tags.indexOf(tagName),1);
       tagBox = document.getElementById('tag_box');
       tagBox.innerHTML = "";
       for (i=0;i<tags.length;i++) {
        tagBox.innerHTML += createTagElement(tags[i]);
       }
       preparePost();
     }
   }

   function js_array_to_php_array(a)
   {
      var a_php = "";
      for (var key=0; key<a.length; key++)
      {
        a_php = a_php + "s:" +
                String(key).length + ":\"" + String(key) + "\";s:" +
                String(a[key]).length + ":\"" + String(a[key]) + "\";";
      }
      if (key > 0)
          a_php = "a:" + key + ":{" + a_php + "}";
      return a_php;
   }

   function preparePost() {
     // we should really be using JSON; alas, our version of PHP doesn't support it natively
     //document.getElementById('tag_submit').value = tags.toJSON();
     document.getElementById('tag_submit').value = js_array_to_php_array(tags);
   }

   function updateDefaultTags() {
     new Ajax.Updater('default_tag_box','ajax/tag_default_tags.php?content_type='+tag_category_content_type+'&sport_id='+tag_category_sport_id+"&default_tags="+tag_category_default_tags, {method: 'get', evalScripts: true});
   }

   function clearDefaultTags() {
     defaultTags = new Array();
     tag_category_default_tags = "";
   }

   function addDefaultTag(tagName) {
     defaultTags.push(tagName);
   }

   function reloadAutocomplete() {
     if(cAuto!=null) { // destroy existing autocompleter
       cAuto.getUpdatedChoices =function(){};
       cAuto.getAllChoices =function(){};
       cAuto=null;
     }

     cAuto = new Ajax.Autocompleter("tag","tag_hint","ajax/tag_autocomplete.php", {frequency: 0.3 });
   }