
function setCaretPosition(elemId, caretPos) {
  var elem = document.getElementById(elemId);

  if(elem != null) {
    if(elem.createTextRange) {
      var range = elem.createTextRange();
      range.move('character', caretPos);
      range.select();
    }
    else {
      if(elem.selectionStart) {
        elem.focus();
        elem.setSelectionRange(caretPos, caretPos);
      }
      else { elem.focus(); }
    }
  }
}

function isCurrentEmpty(text) {
  var i=text.length;
  
  if (i == 0) { return true; }
  
  while (i !=- 1) {
    var c = text.substring(i-1,i);
    if (c == " ") { 
      i--; 
      continue; 
    }
    else if (c == ",") { 
      return true; 
    }
    return false;
  }
  return true;
}

function autocom(tagsText) {
  var text = tagsText.value;
    
  if (isCurrentEmpty(text)) {
    clearSuggestBox();
    return;
  }
  
  var arr = text.split(",");  
  if (arr.length == 0) { return; }
  
  var word = arr[arr.length-1];
  if (word.length <= 3) { return; }
    
  $.ajax({
			type: "POST",
			url: "tagread.php",
			data: 'word=' + word,
			success: autocomResult
	});
}

function clearSuggestBox() {
  var suggest = document.getElementById('suggest');
  while (suggest.options.length > 0) {
    suggest.options[0] = null;
  }
}

function autocomResult(data) {    
  var result = document.getElementById('res');
  var tags = data.split("|");
  var suggest = document.getElementById('suggest');
    
  clearSuggestBox();  
  for (var i=0;i<tags.length;i++) {
    suggest.options[suggest.length] = new Option(tags[i], tags[i]); 
  }  
}

function setLastWord(sel) {
  if (sel.selectedIndex == -1) { return; }
  var word = sel.value;  
  
  var text = document.getElementById('tags').value;
  var lastComma = text.lastIndexOf(',');
  text = text.substring(0, lastComma);
  
  if (lastComma != -1) {
    text += ", ";
  }
  text += word + ", ";
  
  clearSuggestBox();
  document.getElementById('tags').value = text;
  document.getElementById('tags').focus();
  setCaretPosition('tags', text.length);
  //setCaretToEnd('tags');
}
