/**
 * Cs_FavUtil
 *
 * @created    2010/04/12
 * @author		yoshimura
 * @version	1.0
 * @modified	2010/11/11	niitsuma	購入別一覧と物件別一覧の連動処理
 *										1,どちらかの一覧でお気に入り登録をしたら、もう片方の一覧でその物件と関連する物件を登録済みする。
 *										2,購入別一覧でお気に入り登録をした物件の他のプランに関しては文言が違うポップアップを出す。
 *
 */
var Cs_FavUtil =
{
	/**
	 * お気に入り登録する。
	 *
	 * @param string  bkknCd	お気に入り登録する物件コード
	 * @param string  routeId	ROUTEID
	 * @param string  fairCd	Fairコード
	 * @param string  orgId		「追加しました」メッセージ表示基点要素のID
	 * @param string  btnId		お気に入りボタン要素のID
	 * @param int     top 		「追加しました」メッセージ表示起点要素からのオフセット(top)
	 * @param int     left 		「追加しました」メッセージ表示起点要素からのオフセット(left)
	 * @param int     btnSize	お気に入りボタンサイズ種別(1:物件詳細下部 2:スライドショー 3:物件一覧、物件詳細上部、最近見た中古車）
	 */

	add : function(bkknCd, routeId, fairCd, orgId, btnId, top, left, btnSize)
	{
		var RET_STS_OK			= 0;	//処理結果ステータス：正常
		var RET_STS_ERR_PRM		= 1;	//処理結果ステータス：パラメータチェックエラー
		var RET_STS_ERR_BKN		= 2;	//処理結果ステータス：指定物件未存在
		var RET_STS_ERR_MAX		= 3;	//処理結果ステータス：登録最大数オーバー
		var RET_STS_ERR			= 4;	//処理結果ステータス：その他エラー

		var retData		= null;
		var favnum 		= 0;
		var btnClassName;

		// お気に入り登録
		retData = this.reqAdd(bkknCd, routeId, fairCd, false);

		//---------------------------------
		//処理結果毎の処理
		//---------------------------------
		switch(retData.status){
			//正常時
			case RET_STS_OK:
				break;

			//登録最大数オーバー
			case RET_STS_ERR_MAX:
				if(confirm("「お気に入り」の登録最大数(30台)を超えました。\n\n登録日時の古いものを削除し、ご指定の中古車をお気に入りに登録します。\nよろしいですか？")){
					// 自動押し出しで登録
					retData = this.reqAdd(bkknCd, routeId, fairCd, true);
					if(retData.status != RET_STS_OK) {
						alert("お気に入り登録できませんでした。");
						return;
					}
				}else{
					return;
				}
				break;

			//指定物件未存在
			case RET_STS_ERR_BKN:
					alert("選択した中古車は都合により削除しました。\n申し訳ございませんが、他の中古車をお選びください。");
					return;
				break;

			//その他エラー
			default:
					alert("お気に入り登録できませんでした。");
					return;
				break;
		}

		switch(btnSize){
			case 1:
				btnClassName = "b addFavoriteNAlready ol";
				break;
			case 2:
				btnClassName = "b addFavoriteWAlready ol mHA";
				break;
			case 3:
				btnClassName = "b addFavoriteAlready ol";
				break;
			case "non": // ボタンなし。
				return "non";
			default:
				btnClassName = "b addFavoriteAlready ol";
				break;
		}

		var lastLetter = btnId.slice(-1);	//通常の一覧ボタンかプラン一覧のボタンかを判定
		var isDetail = btnId.indexOf(",");	//物件詳細かどうか(物件詳細の場合-1以外の数字が返る)
		var href = "/usedcar/mylist.php?STID=CS216001&STBID=1" + (routeId ? ("&ROUTEID=" + routeId) : "");

		// お気に入りボタン差し替え
		// 物件詳細
		if(isDetail != -1){		
		Cs_FavUtil.swapBtn('#' + btnId, href, btnClassName, btnSize);
		// 物件一覧（通常）
		}else if(lastLetter != 0 && lastLetter != 1 && lastLetter != 2){
			Cs_FavUtil.swapBtn('#' + btnId, href, btnClassName, btnSize);
			Cs_FavUtil.swapBtn('#' + btnId + "0", href, btnClassName, btnSize);
			Cs_FavUtil.swapBtn('#' + btnId + "1", href, btnClassName, btnSize);
			Cs_FavUtil.swapBtn('#' + btnId + "2", href, btnClassName, btnSize);
		//物件一覧（プラン）
		}else{
			Cs_FavUtil.swapBtn('#' + bkknCd + '_btn', href, btnClassName, btnSize);
			Cs_FavUtil.swapBtn('#' + bkknCd + '_btn0', href, btnClassName, btnSize);
			Cs_FavUtil.swapBtn('#' + bkknCd + '_btn1', href, btnClassName, btnSize);
			Cs_FavUtil.swapBtn('#' + bkknCd + '_btn2', href, btnClassName, btnSize);
		}

		// 追加しましたメッセージ表示
		var offset= $('#'+orgId).offset();
		var clone = $("#addFavoriteMsgBox").clone();
		clone.attr("id", "addFavoriteMsgBox-" + orgId);
		clone.appendTo(document.body);
		clone.css('z-Index', '9999');
		clone.css('top', offset.top + top);
		clone.css('left', offset.left + left);
		clone.fadeIn(200);
		clone.fadeTo(1000, 1.00);
		clone.fadeOut(1000, function(){clone.remove();});

		// 別プランでお気に入り追加しましたメッセージ表示
		if(lastLetter == 0 || lastLetter == 1 || lastLetter == 2){
			for(i = 0; i < 3; i++){
				if(lastLetter == i){
					continue;
				}

				if($('#' + bkknCd + '_btn' + i).size() == 0){
					continue;
				}

				var offset= $('#' + bkknCd + '_cas' + i).offset();
				var clone = $("#withFavoriteMsgBox").clone();
				clone.attr("id", "withFavoriteMsgBox-" + bkknCd + '_cas' + i);
				clone.appendTo(document.body);
				clone.css('top', offset.top + top);
				clone.css('left', offset.left + left);
				clone.fadeIn(200);
				clone.fadeTo(1000, 1.00);
				clone.fadeOut(1000, function(){clone.remove();});
			}
		}

		// グロナビ更新
		var strFavnum = retData.favnum > 0 ? retData.favnum : "未登録";
		if(retData.favnum <= 0){
			$("#favnum").text("");
			$("#favnum-unit").text(strFavnum);

		}else{
			$("#favnum").text(strFavnum);
			$("#favnum-unit").text("台");
		}
		$("#favnum-link").attr("title", "お気に入り：" + $("#favnum").text() + $("#favnum-unit").text());

		if($("#favnum2")) {
			if(retData.favnum <= 0){
				$("#favnum2").text("");
				$("#favnum-unit2").text(strFavnum);
	
			}else{
				$("#favnum2").text(strFavnum);
				$("#favnum-unit2").text("台");
			}
			$("#favnum-link2").attr("title", "お気に入り：" + $("#favnum2").text() + $("#favnum-unit2").text());
		}
	},

	/**
	 * お気に入り登録のサーバ側処理をリクエストする。
	 *
	 * @param string  bkknCd	「追加しました」メッセージ表示基点要素のID
	 * @param string  routeId	ROUTEID
	 * @param string  fairCd	Fairコード
	 * @param boolean adbkkn	自動押し出し有無（自動押し出しする場合はtrue)
	 *
	 * @return retData			ajaxリクエストが正常終了した場合は処理結果(json形式）
	 *							リクエスト失敗時はstatus=4を返却
	 */
	reqAdd : function(bkknCd, routeId, fairCd, adbkkn)
	{
		var retData;

		var url = "/usedcar/addFavorite.php?BKKN=" + bkknCd +
				(adbkkn == true	? "&ADBKKN=1" 				: "") +
				(routeId		? "&ROUTEID="	+ routeId	: "") +
				(fairCd			? "&FAIR="		+ fairCd 	: "");

		//サーバ側処理リクエスト
		$.ajax({
			url			: url,
			dataType	: 'json',
			async		: false,
			cache		: false,
			complete	: function(){
			},
			success		: function(data){
				retData = data;
			},
			error		: function() {
				retData = {"status":4, "favnum":0};
			}
	 	});
	 	return retData;
	},

	getBukkenCdList : function(routeId, fair, addbkkn)
	{
		return this.reqGetBukkenCdList(routeId, fair, addbkkn);
	},

	/**
	 * お気に入り登録済み物件コード取得のサーバー側処理をリクエストする。
	 *
	 * @param string  routeId	ROUTEID
	 *
	 * @return retData			ajaxリクエストが正常終了した場合は処理結果(json形式）
	 *							リクエスト失敗時はstatus=4を返却
	 */
	reqGetBukkenCdList : function(routeId, fair, addbkkn)
	{
		var retData;

		var url = "/usedcar/getFavoriteBukkenCdList.php?" +
				(routeId ?"&ROUTEID="+routeId:"") + 
				(fair    ?"&FAIR="   +fair   :"") + 
				(addbkkn ?"&ADDBKKN="+addbkkn:"");

//		url = url.replace("?&", "?");

		//サーバ側処理リクエスト
		$.ajax({
			url			: url,
			dataType	: 'json',
			async		: false,
			cache		: false,
			complete	: function(){
			},
			success		: function(data){
				retData = data;
			},
			error		: function() {
				retData = {"status":4, "num":0, "list":[]};
			}
	 	});

	 	return retData;
	},

	/**
	 * お気に入りボタン差し替え(追加済)
	 *
	 * @param string  id			ID名
	 * @param string  href			リンク先URL
	 * @param string  btnClassName	ボタンクラス名
	 * @param string  btnSize		ボタンサイズ
	 */
	swapBtn : function(id, href, btnClassName, btnSize){
		$(id)
			.attr("title", "お気に入り追加済")
			.attr("class", btnClassName)
			.attr("href", href);
		if(btnSize == 2){
			$(id).attr("target", "_parent");
		}
		$(id)
			.text("お気に入り追加済")
			.show();
	}
}

