<script>
            $(document).ready(function() {
            	// カテゴリーを展開するメソッド
            	// カテゴリーを表示する場合のみ実行
            	var categoryTextValues = $("*[type=text][name=category]").val();
            	// 書き込み時
            	if (categoryTextValues != undefined) {
            		// カテゴリーをRuby情報からJSに変換
            		var categoryValues = categoryTextValues;
            		var categoryList = [];
            		for(var i = 0; i < $(categoryValues).length; i++) {
            			categoryList.push({
            				"term" : $(categoryValues).eq(i).attr("term"),
            				"label" : $(categoryValues).eq(i).attr("label")
            			});
            		}
            		
            		addTagSelectBoxFromCategory(categoryList);
            		return;
            	}
            	
            	// カテゴリーを確認する際のみ実行
            	var categoryHiddenValues = $("*[type=hidden][name=category]").val();
            	// 書き込み時
            	if (categoryHiddenValues != undefined) {
            		// カテゴリーをRuby情報からJSに変換
            		var categoryValues = categoryHiddenValues;
            		var categoryList = [];
            		var addHtml = [];
            		for(var i = 0; i < $(categoryValues).length; i++) {
            			categoryList.push({
            				"term" : $(categoryValues).eq(i).attr("term"),
            				"label" : $(categoryValues).eq(i).attr("label")
            			});
            			addHtml.push($(categoryValues).eq(i).attr("label") + '&nbsp;(' + $(categoryValues).eq(i).attr("term") + ')');
            		}
            		
            		$("#entry_category").html(addHtml.join("<br>\n"));
            		return;
            	}
            });
            
            function getDefaultTags() {
            	var tagList = [];
            	// 各tag要素を取得して配列に格納
            	tagList.push({
            		"term" : "",
            		"label" : "タグを選択してください"
            	});
            	<% TAGS.each do |tag| %>
            	tagList.push({
              		"term" : '<%= tag[:term] %>',
            		"label" : '<%= tag[:label] %>'
            	});
            	<% end %>
            
            	return tagList;
            }
            
            function addTagSelectBox() {
            	var tagList = getDefaultTags();
            	var addHtml = [];
            	
            	addHtml.push('<select name="tag">');
            	for(var i = 0; i < tagList.length; i++) {
            		addHtml.push('<option value="' + tagList[i]["term"] + '">' + tagList[i]["label"] + '</option>');
            	}
            	addHtml.push('</select>');
            	
            	$("#entry_category").append(addHtml.join('') + "<br>");
            }
            
            function getTags() {
            	var tagList = [];
            	var tagListHtml = $("*[name=tag]");
            	var tagTemp = {};
            	for(var i = 0; i < tagListHtml.length; i++) {
            		// 各tag要素を取得して配列に格納
            		if(tagListHtml.eq(i).val() != "") {
            			tagTemp = {
            				"term" : tagListHtml.eq(i).val(),
            				"label" : tagListHtml.eq(i).find(":selected").text()
            			};
            			tagList.push(tagTemp);
            		}
            	}
            	
            	return tagList;
            }
            
            function unionCategory() {
            	var tagList = getTags();
            	var stringBuffer = [];
            	for(var i = 0; i < tagList.length; i++) {
            		stringBuffer.push('<category term="' + tagList[i]["term"] + '" label="' + tagList[i]["label"] + '"/>');
            	}
            	$("*[type=text][name=category]").val(stringBuffer.join('\n'));
            }
            
            function addTagSelectBoxFromCategory(categoryList) {
            	$("#entry_category").html("");
            	for(var j = 0; j < categoryList.length; j++) {
            		// 選択対象を取得
            		var selectedTagTerm = categoryList[j]["term"];
            		var selectedTagLabel = categoryList[j]["label"];
            		var selectedTagSetFlag = false;
            		
            		var tagList = getDefaultTags();
            		var addHtml = [];
            		addHtml.push('<select name="tag">');
            		for(var i = 0; i < tagList.length; i++) {
            			if (tagList[i]["term"] == selectedTagTerm && tagList[i]["label"] == selectedTagLabel) {
            				addHtml.push('<option value="' + tagList[i]["term"] + '" selected="selected">' + tagList[i]["label"] + '</option>');
            				selectedTagSetFlag = true;
            			} else {
            				addHtml.push('<option value="' + tagList[i]["term"] + '">' + tagList[i]["label"] + '</option>');
            			}
            		}
            	
            		if (!selectedTagSetFlag) {
            			addHtml.push('<option value="' + selectedTagTerm + '" selected="selected">' + selectedTagLabel + '</option>');
            		}
            		addHtml.push('</select>');
            		$("#entry_category").append(addHtml.join('') + "<br>");
            	}
            }
        </script>