﻿$(document).ready(function(){

var isMSIE = /*@cc_on!@*/false;
var mouseX = 0;
var isRight = false;

//イベントハンドラ
$(".add_favorite").click(function(){
	addFavorite(this);
});

//イベントハンドラ
$(".add_favorite_l").click(function(){
	addFavorite(this);
	isRight = $(window).width() / 2 < mouseX;
});

//イベントハンドラ
$(".add_favorite").mousedown(function(e){
	mouseX = e.pageX;
	isRight = $(window).width() / 2 < mouseX;
});

//イベントハンドラ
$(".add_favorite_l").mousedown(function(e){
	mouseX = e.pageX;
	isRight = $(window).width() / 2 < mouseX;
});

//お気に入りを追加する
function addFavorite(clickModule) {

	var authed; //ログイン済か否か
	var favoriteId; //お気に入りID
	var fukidasi;
	var url; // 非同期通信するURL（お気に入り登録）
	var urlLogin; // 非同期通信するURL（ログイン）
	var urlRegister; // 非同期通信するURL（新規登録）
	var contextPath; // コンテキストパス
	var remoteToken; // CSRF対策

	authed = $("input[name='authed']").val();
	favoriteId = ($(clickModule).next()).val();
	url = $("input[name='url_favorite']").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 + "\">" + $("#JS00009").html() + "</a><br/><a href=\"" + urlRegister + "\">" + $("#JS00010").html() + "</a><br/><div class=\"login_close\" ><a style=\"cursor:pointer\"><img width=\"61\" height=\"17\" alt=\"" + $("#JS00011").html() + "\" src=\"" + imagePath + "close.gif\"/></a></div><span style=\"font-size:10px;width:100%\">" + $("#JS00008").html() + "</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>" + $("#JS00001").html() + "</p><div class=\"fukidasi_sankaku\"></div></div>");
			fukidasi =  $(clickModule).children(".fukidasi");
			setOffset(fukidasi, clickModule);

			$.ajax({
		  	type: "POST",
				cache: true,
		   	url: url,
  			dataType: "text",
		   	data: {favorite_id:favoriteId, remote_token:remoteToken},
		   	error: function(XMLHttpRequest, textStatus, errorThrown){
					// 一旦非表示にする
					fukidasi.css("visibility","hidden");
				 	fukidasi.children("p").html($("#JS00002").html());
					fukidasi.children("p").append("<div class=\"login_close\" ><a style=\"cursor:pointer\"><img width=\"61\" height=\"17\" alt=\"" + $("#JS00011").html() + "\" src=\"" + imagePath + "close.gif\"/></a></div>");
					setOffset(fukidasi, clickModule);
				},
				success: function(msg){

					var data;
					var statusCode = 0;
					var errMessage = 0;

					try {
						data = JSON.parse(remove_newline(msg)); //改行を消した後、JSONにパースする。
					} catch(e) {
						fukidasi.css("width","140px");
						fukidasi.children("p").text("");
						fukidasi.children("p").append($("#JS00003").html() + "<br/>");
						fukidasi.children("p").append("<div class=\"login_close\" ><a style=\"cursor:pointer\"><img width=\"61\" height=\"17\" alt=\"" + $("#JS00011").html() + "\" src=\"" + imagePath + "close.gif\"/></a></div>");
					};

					if (data != null && data.status_code != null ) { statusCode = data.status_code };
					if (data != null && data.err_messagear != null ) { errMessage = data.err_message };

					// 一旦非表示にする
					fukidasi.css("visibility","hidden");

					// 1:正常登録完了
					if (statusCode == 1) {
						fukidasi.children("p").text($("#JS00004").html());

						if ($(clickModule).hasClass("ok_change_img")) {
							if ($(clickModule).hasClass("add_favorite")) {
								$(clickModule).children("img").attr("src",imagePath + "favarite_off.gif");
							} else {
								$(clickModule).children("img").attr("src",imagePath + "artist_button_off.gif");
							}
						}

						// 1秒後に閉じる
						$(document).oneTime("1s",function(){
							closeFukidasi(fukidasi);
						});
					}

					// 2:既に登録されています
					else if (statusCode == 2) {
						fukidasi.css("width","140px");
						fukidasi.children("p").text($("#JS00005").html());

						if ($(clickModule).hasClass("ok_change_img")) {
							if ($(clickModule).hasClass("add_favorite")) {
								$(clickModule).children("img").attr("src",imagePath + "favarite_off.gif");
							} else {
								$(clickModule).children("img").attr("src",imagePath + "artist_button_off.gif");
							}
						}

						// 1秒後に閉じる
						$(document).oneTime("1s",function(){
							closeFukidasi(fukidasi);
						});

					}

					// 3:登録件数オーバ
					else if (statusCode == 3) {
						fukidasi.css("width","140px");
						fukidasi.children("p").html($("#JS00006").html());
						fukidasi.children("p").append("<div class=\"login_close\" ><a style=\"cursor:pointer\"><img width=\"61\" height=\"17\" alt=\"" + $("#JS00011").html() + "\" src=\"" + imagePath + "close.gif\"/></a></div>");
						// 3秒後に閉じる
						$(document).oneTime("3s",function(){
							closeFukidasi(fukidasi);
						});
					}
					// 4:エラー
					else if (statusCode == 4) {
						fukidasi.css("width","140px");
						fukidasi.children("p").text("");
						fukidasi.children("p").append($("#JS00007").html() + errMessage + "<br/>");
						fukidasi.children("p").append("<div class=\"login_close\" ><a style=\"cursor:pointer\"><img width=\"61\" height=\"17\" alt=\"" + $("#JS00011").html() + "\" 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) {
	var offsetX;

	// 文字により高さが変るのでオフセット位置を再設定する
	fukidasi.css("top",(-1 * fukidasi.height()) + "px");

	// 幅が変るのでleftを再設定する
	if ($(clickModule).hasClass("add_favorite")) {
		offsetX = 5;
	} else {
		offsetX = -30;
	}

	//クリック位置がwindow中央よりも右側の時
	if (isRight) {
		fukidasi.css("left",(-1 * (fukidasi.width() + offsetX - $(clickModule).width())) + "px");
		if (fukidasi.children(".fukidasi_sankaku_left").size() > 0) {
			fukidasi.children(".fukidasi_sankaku_left").addClass("fukidasi_sankaku").removeClass("fukidasi_sankaku_left");
		}
	}
	//クリック位置がwindow中央よりも左側の時
	else {
		fukidasi.css("left", (-1 * + offsetX) + "px");
		if (fukidasi.children(".fukidasi_sankaku").size() > 0) {
			fukidasi.children(".fukidasi_sankaku").addClass("fukidasi_sankaku_left").removeClass("fukidasi_sankaku");
		}
	}

	// 表示する
	fukidasi.css("visibility","visible");
}

$(function(){

    $("#checkAll").click(function(){
        $(":checkbox").attr('checked', true);
        return false;
    });

    $("#uncheckAll").click(function(){
    	$(":checkbox").attr('checked', false);
        return false;
    });
    $("#checkAll2").click(function(){
        $(":checkbox").attr('checked', true);
        return false;
    });

    $("#uncheckAll2").click(function(){
    	$(":checkbox").attr('checked', false);
        return false;
    });
});

});
