(function($) {
	/**
	 * Requires jquery
	 */

	window.MSGVKeywordsDialog = {
		options: {
			url: "/findkeywords",
			keywordlink: "#keywordlink"
		},

		max_items: 5,

		keyworkdDialog: null,

		init: function(opts, formid) {
			if (typeof opts != 'undefined' && opts) {
				for (var key in opts) {
					MSGVFASDialog.options[key] = opts[key];
				}
			}

			MSGVFASDialog.options.formid = formid;

			$("#keyworddonelink").click(MSGVKeywordsDialog.confirm);
		},

        showDialog: function() {

			MSGVKeywordsDialog.keyworkdDialog = $('#keyword_popup');

			try {
				var offset = $(MSGVKeywordsDialog.options.keywordlink).offset();
				var styledPopup = MSGV.StyledPopup({
					popup: MSGVKeywordsDialog.keyworkdDialog,
					pos: {
						top: offset.top,
						left: offset.left
					}
				});

				styledPopup.show();
				MSGVKeywordsDialog.keyworkdDialog.data("styledPopup", styledPopup);

				MSGVKeywordsDialog.getData();

			} catch(e) {}

			$(".close-button a, .closeLink").click(function() {
				MSGVKeywordsDialog.hideKeywordDialog();
			});

		},

		hideKeywordDialog: function() {
            MSGVKeywordsDialog.keyworkdDialog.data("styledPopup").hide();
		},

		getData: function() {

			var theUrl = MSGVKeywordsDialog.options.url;

			// show loading indicator
			$("keywordlist").html("<img class='loadingimg' src='../img/msgv/widgets/loading-1-0.gif' alt='loading keywords...'/>");

			$.ajax({
				url: theUrl,
				success: function(data) {
					var jsonKeywordList = eval("(" + data + ")");

					if (!jsonKeywordList || jsonKeywordList.length == 0) {
						$(".keywordlist").html("<p>Sorry, your search returned no keywords.</p>");
						return;
					}

					var keywordList = [];
					keywordList.push("<ul>");
					for (var i = 0; i < jsonKeywordList.length; i++) {
					  var keyword = jsonKeywordList[i].keyword;
					  keywordList.push("<li><input type='checkbox' value="+keyword+">"+keyword+"</input></li>")
					}
					keywordList.push("</ul>");
					$(".keywordlist").html(keywordList.join('\n'));
				},
				error: function(xhr,err) {
					 alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);
					 alert("responseText: "+xhr.responseText);

				}
			});
		},

		confirm: function() {
			// remove all the elements already selected
			$("#form_keywords input").remove();
			$("#form_keywords ul li").remove();
			$("#form_keywords ul").remove();

			var div = document.getElementById("form_keywords");
			var ul = document.createElement("ul");
			div.appendChild(ul);

			if($(".keywordlist ul li input:checked").size() > MSGVKeywordsDialog.max_items) {
				alert('Sorry, you are allowed to select at most 5 items')
				return;
			}

			$(".keywordlist ul li input:checked").each(function(index) {
				var input = document.createElement("input");
				input.setAttribute("id","input_"+$(this).val());
				input.setAttribute("type", "hidden");
				input.setAttribute("value",$(this).val());
				input.setAttribute("name", "keyword");
				div.appendChild(input);

				var removeLink = document.createElement("a");
				removeLink.setAttribute("key","li_"+$(this).val());
				removeLink.innerHTML = "Remove";
				removeLink.setAttribute("onClick","javascript:MSGVKeywordsDialog.remove('li_"+$(this).val()+"', 'input_"+$(this).val()+"')");

				var li = document.createElement("li");
				li.setAttribute("id","li_"+$(this).val());
				li.innerHTML = $(this).val();
				li.appendChild(removeLink);

				ul.appendChild(li);

			});

			MSGVKeywordsDialog.hideKeywordDialog();
		},

		remove: function(li_id, input_id) {
			$("#"+li_id).remove();
			$("#"+input_id).remove();
		}
	};    
    $("#keywordlink").live('click', function() {
        MSGVKeywordsDialog.showDialog();
    });
})(jq14)

