$(document).ready(function()
{
	// 에러 출력 영역
	var errorEl = $("#errorDiv");

	// 탭 만들기
	$("#tabs").tabs();

	// 포스팅하기 탭 선택시
	$("#tabs").live("tabsselect", function() {
		if($("#mindMap").css("display") != "none") {
			$("#mindMap").slideUp("fast");
			$("#me2Fam").empty();
		}
	});

	// 관계 확인
	$("#drawMapBtn").live("click", getMap);

	// 관계 확인 아이디 필드 엔터키 이벤트 발생
	$("#me2MapId").keypress(function(event) {
		if(event.keyCode == 13)
		{
			$("#drawMapBtn").trigger("click");
		}
	});

	// 폼 검증기
	$("#postMapBtn").formValidator({
		scope		: "#mapForm",
		errorDiv	: "#errorDiv"
	});

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

	// 컨텐츠 확인
	$("#me2Content").keypress(function(event) {
		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().effect("highlight");
				event.preventDefault();
			}

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

	});

	// 인증정보 유효기간
	$("#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("/me2fam/delCookies.do?me2Delete=true", function(data) {
						if(data.deleted) {
							$("#me2Id").val("");
							$("#me2ApiKey").val("");
						}
					});
				}, function() { /* nothing */ });
		}
	});

	// 포스팅 내역 보기
	$("#historyMapBtn").live("click", getHistory);

	// 포스팅 내역 API KEY필드 엔터키 이벤트 발생
	$("#historyMe2ApiKey").keypress(function(event) {
		if(event.keyCode == 13)
		{
			$("#historyMapBtn").trigger("click");
		}
	});

});

// 사용자 인증 확인
function isAvailable() {
	if($("#me2Id").val() != "" && $("#me2ApiKey").val() != "") {
		$.getJSON("/me2fam/available.do",
				$("#mapForm").serializeArray(),
				function(data) {
					if(data.available) {
						checkAuth(true);
					} else {
						checkAuth(false);
					}
				});
	}
}

// 사용자 인증 확인 메세지
function checkAuth(isLogin) {
	var errorEl = $("#errorDiv");

	if(isLogin) {
		errorEl.text("").fadeOut("fast");
	} else {
		errorEl.hide().text("사용자 인증에 오류가 발생하였습니다.").fadeIn().effect("highlight");
	}
}

// 플래시 객체 가져오기
function getSwf(xmlArgs) {
	return $('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"' +
	  '		codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,18,0"' +
	  '		width="750" height="500"' +
	  '		id="me2fam" align="middle">' +
	  '	<param name="allowFullScreen" value="true" />' +
	  '	<param name="movie" value="http://me2-fam.appspot.com/me2fam/me2fam.swf?xml=' + xmlArgs + '" />' +
	  '	<param name="bgcolor" value="#FFFFFF" />' +
	  '	<embed src="http://me2-fam.appspot.com/me2fam/me2fam.swf?xml=' + xmlArgs + '"' +
	  '		   allowFullScreen="true" bgcolor="#FFFFFF"' +
	  '		   width="750" height="500"' +
	  '		   name="me2fam" align="middle"' +
	  '		   type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />' +
	  '</object>');
}

// 마인드맵 처리
function getMap() {
	var errorEl = $("#errorDiv");
	var me2MapIdEl = $("#me2MapId");
	var me2Id = me2MapIdEl.val(); 

	if(me2MapIdEl.val() == "" || me2MapIdEl.val().length == 0) {
		errorEl.hide().text("아이디를 입력하십시오.").fadeIn().effect("highlight");

	} else {
		if($("#mindMap").css("display") != "none") {
			$("#mindMap").slideUp("fast");
			$("#me2Fam").empty();
		}

		errorEl.hide().text("친구관계를 생성하고 있습니다.").fadeIn().effect("highlight");

		$.getJSON("/me2fam/generator.do?me2Id=" + me2MapIdEl.val(), function(result) {
			if(result.generatored) {
				errorEl.slideUp("fast");

				getSwf("/me2fam/view.do?me2Id=" + me2Id).appendTo($("#me2Fam").empty());

				$("#mindMap").slideDown("slow");

			} else {
				errorEl.text("오류가 발생하였습니다.").fadeIn().effect("highlight");
			}
		});

	}
}

// 관계 내역
function getHistory() {
	var me2Id = $("#historyMe2Id");
	var me2ApiKey = $("#historyMe2ApiKey");
	var me2Account = { "me2Id": me2Id.val(), "me2ApiKey" : me2ApiKey.val() };
	var xmlList = $("#xmlList");

	if(me2Id.val() != "" && me2ApiKey.val() != "") {
		$.getJSON("/me2fam/available.do", me2Account,
				function(data) {
					if(data.available) {
						checkAuth(true);

						$.getJSON("/me2fam/archives.do", me2Account,
								function (data) {
									if(data != null && $.isArray(data.xml)) {
										xmlList.fadeOut("fast").empty();

										/*
										$("<a onclick=\"getHistoryMap('" + me2Id.val() + "');\" class=\"ui-state-default ui-corner-all\">현재 친한 친구관계</a>")
												.appendTo(xmlList);
										*/

										$.each(data.xml, function(i, file) {
											$("<a onclick=\"getHistoryMap('" + file.fileName + "');\" class=\"ui-state-default ui-corner-all\">" + file.date + "</a>")
													.appendTo(xmlList);
										});
										
										xmlList.fadeIn("slow");
									}
								});

					} else {
						checkAuth(false);
					}
				});
	} else {
		checkAuth(false);
	}
}

function getHistoryMap(fileName) {
	if($("#mindMap").css("display") != "none") {
		$("#mindMap").slideUp("fast");
		$("#me2Fam").empty();
	}

	getSwf("/me2fam/xml.do?file=" + fileName).appendTo($("#me2Fam").empty());

	$("#mindMap").slideDown("slow");
}

