function delTag(tag){
   var tagcont = document.getElementById("TAG"+tag);

   while (tagcont.firstChild) {
      tagcont.removeChild(tagcont.firstChild);
   }

   tagcont.parentNode.removeChild(tagcont);
}

function addSuggestions(tagid,tagdesc){
   if (tagid== -1){
      setTimeout("dropSuggestions()", 200);
      return false;
   }

   var tag_val = document.createElement("input");
   //var tag_des = document.createElement("p");
   var tag_lnk = document.createElement("a");
   var tag_grl = document.createElement("div");
   var newtags = document.getElementById("newtagscont");
   var lffield = document.getElementById("kwllf");

   if (tagid == 0 && tagdesc == ""){
      tagdesc = document.getElementById("newtag").value;
      var without_blank = tagdesc.replace(/(^\s*)|(\s*$)/g,"");

      if (without_blank.length == 0){
         alert("Imposible to add a blank tag");
         return;
      }
   }

   var tagdef = ((tagid == 0)?tagdesc:tagid);

   if (isSuggestion(tagdef)) return;

   tag_val.setAttribute("type","hidden");
   tag_val.setAttribute("name",lffield.value+"_values[]");
   tag_val.setAttribute("value", ((tagid==0)?tagdef:tagid));

   tag_lnk.setAttribute("href","javascript:delTag('"+tagdef+"')");
   tag_lnk.appendChild(document.createTextNode("X"));
   //tag_lnk.appendChild(document.createTextNode(tagdesc));
   //tag_des.appendChild(document.createTextNode(tagdesc));

   tag_grl.setAttribute("id", "TAG"+tagdef);
   //tag_grl.appendChild(tag_des);
   tag_grl.appendChild(document.createTextNode(tagdesc));
   tag_grl.appendChild(tag_lnk);
   tag_grl.appendChild(tag_val);

   newtags.appendChild(tag_grl);

   dropSuggestions();
   document.getElementById("newtag").value = "";
}

function dropSuggestions(){
   var contid = document.getElementById('suggestion');

   for (var i=contid.childNodes.length -1; i>=0; i--){
       var child = contid.childNodes[i];

       child.parentNode.removeChild(child);
   }

   contid.style.visibility = 'hidden';
}

function isSuggestion(id){
   if (document.getElementById("TAG"+id))
        return true;
   else return false;
}

function drawSuggestions(resp){
   dropSuggestions();

   resp = resp.substring(2);

   var tagobj = eval('('+resp+')');

   if (tagobj.tags.length < 1) return;

   var cont = document.getElementById('suggestion');
   var list = document.createElement('ul');

   for(var i=0; i < tagobj.tags.length; i++){
      var node = document.createElement('li');
      var elem = false;

      if (isSuggestion(tagobj.tags[i].key)){
         //elem = document.createElement('p');
         //elem.appendChild(document.createTextNode(tagobj.tags[i].desc));
         elem = document.createTextNode(tagobj.tags[i].desc);
      }
      else{
         elem = document.createElement('a');
         elem.setAttribute("href","javascript:void(0)");
         elem.setAttribute("onclick","addSuggestions("+tagobj.tags[i].key+",'"+tagobj.tags[i].desc+"')");
         elem.appendChild(document.createTextNode(tagobj.tags[i].desc));
      }

      node.appendChild(elem);
      list.appendChild(node);
      cont.appendChild(list);
   }

   cont.style.visibility = 'visible';
}

function drawWaiting(){
   var sbox = document.getElementById("suggestion");
   var list = document.createElement("ul");
   var node = document.createElement("li");
   var elem = document.createElement("span");

   sbox.innerHTML = "";

   elem.appendChild(document.createTextNode("...Searching for results "));
   node.appendChild(elem);
   list.appendChild(node);
   sbox.appendChild(list);

   sbox.style.visibility = "visible";
}

function drawStoredTags(data){
   if (data.substring(0,2) == "+:")
   data = data.substring(2);

   data = data.split("|");

   var leaffield = document.getElementById("kwllf").value;
   var tagsgroup = document.getElementById(leaffield+"_group");
   var newtags   = document.getElementById("newtagscont");

   switch(data[0]){
      case "ERROR":
         alert("Some error happends during store process, request siteAdmin for this");
         break;

      case "OK":
         tagsgroup.innerHTML = data[1];

         for (var i=newtags.childNodes.length -1; i>=0; i--){
             var child = newtags.childNodes[i];
      
             child.parentNode.removeChild(child);
         }
         break;
   }
}
              
function getSuggestions(){
   var req    = new AjaxRequest();
   var newtag = document.getElementById('newtag');
   var kwlid  = document.getElementById('kwlid');
   var kwlfl  = document.getElementById('kwlfl');
   var sugbox = document.getElementById('suggestion');
   var infront= document.getElementById('infront');
   //var exclude= document.getElementById('exclude');

   if (!infront)
        infront = "0";
   else infront = infront.value;

   if (newtag.value.length < 2){
      if (sugbox.childNodes.length > 0) dropSuggestions();
      return;
   }

  var url = tagbaseurl + '&ajaxaction=get&page=ajaxresponse&rs=getkeywordtags&rsargs[]='+kwlid.value+'&rsargs[]='+newtag.value+'&rsargs[]='+kwlfl.value;

   AjaxRequest.get(
   {
      'url':url,
      'onSuccess':function(req){ drawSuggestions(req.responseText);},
      'onError':function(req){ alert('Error getting tags');},
      'onLoading': function(req){ drawWaiting();}
   }
   );
}

function storeTags(){
   var req     = new AjaxRequest();
   var newtags = document.getElementById("newtagscont");
   var klibid  = document.getElementById("kwlid").value;
   var klibfl  = document.getElementById("kwllf").value;
   var leafid  = document.getElementById("leafid").value;
   var tags_in = document.getElementsByName(klibfl+"_values[]");
   var divs    = new Array();
   var j       = 0;

   if (tags_in.length > 0){
      for(var i=0; i < tags_in.length; i++){
         divs[j] = tags_in[i].value;
         j++;
      }

      if (divs.length > 0){
         divs = divs.join("|");

         var url =  tagbaseurl+'&ajaxaction=str&rs=getstoredtags&page=ajaxresponse&rsargs[]='+klibid+'&rsargs[]='+klibfl+'&rsargs[]='+leafid+'&rsargs[]='+divs;

         AjaxRequest.get(
         {
            'url':url,
            'onSuccess':function(req){ drawStoredTags(req.responseText);},
            'onError':function(req){ alert('Error getting tags');}
         }
         );
      }
   }
   else{}
}

