﻿var setAddRemindEvent;

$(document).ready(function(){

setAddRemindEvent = function() {

	//イベントハンドラ
	$(".add_remind").click(function(){
		addRemind(this);
	});

	//イベントハンドラ
	$(".add_remind_l").click(function(){
		addRemind(this);
	});

}

var isMSIE = /*@cc_on!@*/false;


//リマインドを追加する
function addRemind(clickModule) {

	var authed; //ログイン済か否か
	var eventCd;
	var rlsCd;
	var lotRlsCd;
	var fukidasi;
	var url; // 非同期通信するURL
	var urlLogin; // 非同期通信するURL（ログイン）
	var urlRegister; // 非同期通信するURL（新規登録）
	var contextPath; // コンテキストパス
	var remoteToken; // CSRF対策

	authed = $("input[name='authed']").val();
	eventCd = ($(clickModule).next()).val();
	rlsCd = ($(clickModule).next().next()).val();
	lotRlsCd = ($(clickModule).next().next().next()).val();
	url = $("input[name='url_remind']").val();
	urlLogin = $("input[name='url_login_id']").val();
	urlRegister = $("input[name='url_register_id']").val();
	contextPath = $("input[name='path_context']").val();
	remoteToken = $("input[name='remote_token']").val();

	if (isMSIE) {
		$(clickModule).parents().css("z-index",9999);//IE6のバグの為、親要素にも、z-indexを指定する必要がある。
	}

	// 未ログイン
	if("true" != authed) {

	  // 既に吹き出しがあるかチェックする
		if(!$(clickModule).is(":has(.fukidasi_login)")) {
			//既にある吹き出しを消す
			$(".fukidasi_login").remove();

			$(clickModule).append("<div class=\"fukidasi_login\"><div class=\"login_border\"><a href=\"" + urlLogin + "\">ログインする</a><br/><a href=\"" + urlRegister + "\">新規登録する</a><br/><div class=\"login_close\" ><a style=\"cursor:pointer\"><img width=\"61\" height=\"17\" alt=\"閉じる\" src=\"" + imagePath + "close.gif\"/></a></div><span style=\"font-size:10px;width:100%\">※ログイン後に登録をおこなってください</span><br/></div><div class=\"fukidasi_sankaku\"></div></div>");

			fukidasi =  $(clickModule).children(".fukidasi_login");
			setOffset(fukidasi, clickModule);

		}

	}
	// ログイン済
	else {

		// 既に吹き出しがあるかチェックする
		if(!$(clickModule).is(":has(.fukidasi)")) {
			$(clickModule).append("<div class=\"fukidasi\"><p>通信中…</p><div class=\"fukidasi_sankaku\"></div></div>");
			fukidasi =  $(clickModule).children(".fukidasi");
			setOffset(fukidasi, clickModule);

			// クリックされたら閉じる
			fukidasi.click(function(){
				closeFukidasi(fukidasi);
				return false;
			});

			$.ajax({
		  	type: "POST",
				cache: true,
		   	url: url,
  			dataType: "text",
		   	data: {event_cd:eventCd,rls_cd:rlsCd,lot_rls_cd:lotRlsCd, remote_token:remoteToken},
		   	error: function(XMLHttpRequest, textStatus, errorThrown){

					// 一旦非表示にする
					fukidasi.css("visibility","hidden");
				 	fukidasi.children("p").text("通信エラーにより登録に失敗しました");
					fukidasi.children("p").append("<div class=\"login_close\" ><a style=\"cursor:pointer\"><img width=\"61\" height=\"17\" alt=\"閉じる\" src=\"" + imagePath + "close.gif\"/></a></div>");
					setOffset(fukidasi, clickModule);
				},
				success: function(msg){
					var data;
					var statusCode;
					var errMessage;

					try {
						data = JSON.parse(remove_newline(msg)); //改行を消した後、JSONにパースする。
					} catch(e) {
						fukidasi.css("width","140px");
						fukidasi.children("p").text("");
						fukidasi.children("p").append("登録に失敗しました。<br/>");
						fukidasi.children("p").append("<div class=\"login_close\" ><a style=\"cursor:pointer\"><img width=\"61\" height=\"17\" alt=\"閉じる\" src=\"" + imagePath + "close.gif\"/></a></div>");
					};

					if (data != null && data.status_code != null ) { statusCode = data.status_code };
					if (data != null && data.err_message != null ) { errMessage = data.err_message };


					// 一旦非表示にする
					fukidasi.css("visibility","hidden");

					// 1:正常登録完了
					if (statusCode == 1) {

						fukidasi.children("p").text("登録完了しました");

						if ($(clickModule).hasClass("ok_change_img")) {
							if ($(clickModule).hasClass("add_remind")) {
								$(clickModule).children("img").attr("src", imagePath + "button/remind_sales_off.gif");
							} else {
								$(clickModule).children("img").attr("src", imagePath + "remind_sales_off.gif");
							}
						}

						// 1秒後に閉じる
						$(document).oneTime("1s",function(){
							closeFukidasi(fukidasi);
						});
					}

					// 2:既に登録されています
					else if (statusCode == 2) {
						fukidasi.css("width","140px");
						fukidasi.children("p").text("既に登録されています");

						if ($(clickModule).hasClass("ok_change_img")) {
							if ($(clickModule).hasClass("add_remind")) {
								$(clickModule).children("img").attr("src", imagePath + "button/remind_sales_off.gif");
							} else {
								$(clickModule).children("img").attr("src", imagePath + "remind_sales_off.gif");
							}
						}

						// 1秒後に閉じる
						$(document).oneTime("1s",function(){
							closeFukidasi(fukidasi);
						});
					}

					// 4:エラー
					else if (statusCode == 4){
						fukidasi.css("width","140px");
						fukidasi.children("p").text("");
						fukidasi.children("p").append("登録に失敗しました。<br/>エラーコード:" + errMessage + "<br/>");
						fukidasi.children("p").append("<div class=\"login_close\" ><a style=\"cursor:pointer\"><img width=\"61\" height=\"17\" alt=\"閉じる\" src=\"" + imagePath + "close.gif\"/></a></div>");
					}
					setOffset(fukidasi, clickModule);
		   	}
			});

			//ログイン用の吹き出し以外は全体で閉じるようにする。
			if (fukidasi != null && fukidasi.size() > 0) {
				// クリックされたら閉じる
				fukidasi.click(function(){
					closeFukidasi(fukidasi);
					return false;
				});
			}
		}
	}

	if(fukidasi != null && fukidasi.size() > 0) {
		// 閉じるがクリックされたら閉じる
		fukidasi.find(".login_close").click(function(){
			closeFukidasi(fukidasi);
			fukidasi = null;
			return false;
		});
	}



	if(fukidasi != null) {
		fukidasi.css("z-index",10000);
	}
}

function closeFukidasi(target) {
	if (isMSIE) {
		$(target).parents().css("z-index",0);//IE6のバグの為、親要素にも、z-indexを指定する必要がある。
	}
	$(target).remove();
	return false;
}

//オフセット値を再設定する
function setOffset(fukidasi, clickModule) {
	// 文字により高さが変るのでオフセット位置を再設定する
	fukidasi.css("top",(-1 * fukidasi.height()) + "px");

	if ($(clickModule).hasClass("add_remind")) {
		// 幅が変るのでleftを再設定する
		fukidasi.css("left", (-1 * (fukidasi.width() + 5 - $(clickModule).width())) + "px"
				);
	} else {
		// 幅が変るのでleftを再設定する
		fukidasi.css("left",(-1 * (fukidasi.width() -30 - $(clickModule).width())) + "px");
	}

	// 表示する
	fukidasi.css("visibility","visible");
}

setAddRemindEvent();

});
