$(document).ready( function() {
	var tags = new Object();
	
	function trim(str, chars) {
		return ltrim(rtrim(str, chars), chars);
	}
	 
	function ltrim(str, chars) {
		chars = chars || "\\s";
		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
	}
	 
	function rtrim(str, chars) {
		chars = chars || "\\s";
		return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
	}
	
	function replaceBad(str) {
		return str.replace(/[^0-9A-Za-z]/g,'');
	}
	
	function setup() {
		$("#publication-tags").find('.tag').remove()
		var tagList = []
		$.each(tags, function(val) {
			$("#publication-tags").append("<div class='tag'>" + val + " <a href='#' class='tag-delete' tag='" + val + "'>x</a></div>");
			tagList.push(val)
    	});

		$(".tag-delete").click(function() {
			delete tags[$(this).attr('tag')]
			setup();
			return false;
		})
		
		// send updated data to api
		var publication_key = $("#publication_key").attr("value")
		$.post("/publications/"+publication_key+"/set_tags/",{'tags':tagList})
	}
		
	$("#publication-tags").each(function() {
		$(this).find('.tag').each(function() {
			tags[($(this).text())] = 1
		})
		
		setup();
	})

	var submit_new_tag = function(){
		
		var input = $("#publication-tags-new")
		if (input.attr("value") != "") {
			var tag = replaceBad(trim(input.attr("value")))
			input.attr("value", "")
			tags[tag] = 1
			setup();	
			input.focus()
		}		
		
	}
	
	$("#publication-tags-new").bind('keypress', function(e) {
		if(e.keyCode==13) submit_new_tag()
	});	
	
	$("#publication-tags-submit").click(submit_new_tag)
});