$(document).ready(function() {
	// 폼 검증기
	$("#submitBtn").formValidator({
		scope		: "#urlForm",
		errorDiv	: "#errorDiv"
	});

	// 글 작성 여부 확인
	$("#me2Id").focusout(isAvailable);
	$("#me2ApiKey").focusout(isAvailable);

	// 글 아이콘 설정
	$("#me2ContentIcon").live("click", requiredLogon);

	// 컨텐츠
	$("#me2Content").keypress(function(event) {
		var errorEl = $("#errorDiv");

		if(event.keyCode == 13) {
			event.preventDefault();

		} else if($("#me2Content").val().length > 150) {
			if(event.keyCode != 8 && event.keyCode != 224 && event.keyCode != 17) {
				errorEl.hide().text("150자를 초과 하셨습니다.").fadeIn();
				event.preventDefault();
			}
			
		} else {
			if(errorEl.css("display") != "none") {
				errorEl.fadeOut();
			}

			setTagUrl();
		}

	}).focusout(setTagUrl);

	// 태그
	$("#me2Tag").keypress(function(event) {
		var errorEl = $("#errorDiv");

		if(event.keyCode == 13) {
			event.preventDefault();

		} else {
			if(errorEl.css("display") != "none") {
				errorEl.fadeOut();
			}

			setTagUrl();
		}

	}).focusout(setTagUrl);

	// 인증정보 유효기간
	$("#me2Expiry > input").click(function() {
		var targetEl = $(this)[0];

		$("#me2Expiry > input").attr("checked", "");
		$("#" + targetEl.id).attr("checked", "checked");

		if(targetEl.id == "me2NullExpiry") {
			jqDialog.confirm("지금 삭제 하시겠습니까?",
				function() {
					$.getJSON("/me2url/delCookies.do?me2Delete=true", function(data) {
						if(data.deleted) {
							$("#me2Id").val("");
							$("#me2ApiKey").val("");
							$("#me2ContentIcon").attr("src", "/me2url/contentIcon.png");
							$("#me2ContentIcon").die("click").live("click", requiredLogon);
						}
					});
				}, function() { /* nothing */ });
		}
	});

});


// 글 작성 가능 여부 확인
function isAvailable() {
	if($("#me2Id").val() != "" && $("#me2ApiKey").val() != "") {
		$.getJSON("/me2url/available.do",
				$("#urlForm").serializeArray(),
				function(data) {
					var apikeyEl = $("#me2ApiKey");
					var defaultIcon = $("#me2DefaultIcon").val();
					var contentIconEl = $("#me2ContentIcon");

					if(data.available) {
						if(apikeyEl.hasClass("redBg")) {
							apikeyEl.removeClass("redBg");
						}

						$.getJSON("/me2url/icons.do",
							$("#urlForm").serializeArray(),
							function(data) {
								$.each(data.icons, function(i, item) {
									if(defaultIcon == item.index) {
										$("#me2ContentIcon").attr("src", item.url);
									}
								});
						});
						
						contentIconEl.die("click").live("click", getPostIcons);

					} else {
						if(!apikeyEl.hasClass("redBg")) {
							apikeyEl.addClass("redBg");
						}

						contentIconEl.live("click", requiredLogon);
					}
				});
	}
}

function requiredLogon(event) {
	jqDialog.notify("글 아이콘 설정기능은 로그인 정보가 확인 되어야 가능합니다.", 4);
}

function getPostIcons(event) {
	$.getJSON("/me2url/icons.do",
			$("#urlForm").serializeArray(),
			function(data) {
				var width = 0;
				var postIconsEl = $("#me2PostIcons");

				postIconsEl.hide().empty();

				$.each(data.icons, function(i, item) {
					$("<img/>").attr("src", item.url).click(function(e) {
						$("#me2DefaultIcon").val(item.index);
						$("#me2ContentIcon").attr("src", item.url);
						$("#me2Content")[0].focus();
						postIconsEl.fadeOut().empty();
					}).appendTo(postIconsEl);

					width += (44 + 8 + 2);
				});

				postIconsEl.width(width).css("top", event.pageX).css("left", event.pageY).fadeIn();
			});
}


// 태그 스트링 생성기
function setTagUrl() {
	$("#url").val("http://idccc.com/p/" + $("#me2Content").val() + getTagString($("#me2Tag")));
}

function getTagString(tagEl) {
	if(tagEl.val() == "") {
		return "";
	}

	var tag = tagEl.val().split(" ");

	for(var i = 0; i < tag.length; i++) {
		if(tag[i] != " ") {
			tag[i] = " @\"" + tag[i] + "\"";
		}
	}

	var tags = tag.join("");
	return tags.replace("@\"\"", "").replace("  "," ");
}