var tagCharset = new RegExp("^[\a-zA-Z0-9ŠŽšœžŸ¡¢¤¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþ&!\/\'_ ,\.-]*$");
var potentielTag = '';
var tagStartPos;

function tagComplete(event, field) {
	var tagField = field.value;
	if (tagField == '')
		return;
	var keyCode = event.keyCode;
	switch(keyCode) {
		case 13:
		case 3:
		case 40:
		case 38:
	    case 8:
	    case 33:
	    case 34:
	    case 35:
	    case 36:
	    case 37:
	    case 45:
	    case 46:
	    	return;
	    case 39:
	    case 9: //tab
			confirmTag(field);
			break;
		default:
			var lastChar = tagField.slice(-1);
			if (lastChar == ';') {
				confirmTag(field);
			}
			tagStartPos = tagField.lastIndexOf(";")+1;
			var lastTagStart = tagField.substring(tagStartPos);
			getTagsStartingWith(lastTagStart, field);
	}

}

function getTagsStartingWith(startText, field) {
	$.ajax({
	  type: "POST",
	  url: "utils/getTagsStartingWith.php",
	  data: "tagStart=" + escape(startText),
	  success: function(msg){
	  	if(msg =="") {
		  	potentielTag = '';
	  		return;	
	  	}
	  	potentielTag = msg;
	  	tagCompletePotential(field, startText.length);	  	
	  }
	});	
}

function tagCompletePotential(field, lengthStartTxt) {
	field.value = field.value.substring(0, tagStartPos) + potentielTag;
	field.setSelectionRange(tagStartPos+lengthStartTxt, tagStartPos+potentielTag.length);
}

function confirmTag(field) {
	if (potentielTag != '') {
		field.value = field.value.slice(0,tagStartPos) + potentielTag + ";";
		potentielTag = '';
	}
}


