$(function(){
	favoriteModel = new FavoriteModel();
});

/**
 * マイリスト追加ボタン
 */
var FavoriteModel = function() {

	this.form;

	this.targetElement;

	this.ggcd;

	this.REGIST_OK = "1";

	this.REGIST_NG = "0";

	this.IMG_FAVORITEGOODS = "../images/favoriteGoods.gif";

	this.ERRORMSG_ID = "javaScriptErrorMessages";

	// マイリスト追加ボタン押下時に呼び出されます。
	FavoriteModel.prototype.addFavorite = function(pGgcd, pObj, pform) {

		ggcd = pGgcd;

		targetElement = pObj;

		form = pform;

		/** サーバサイドのPageコンポーネント名 */
		PAGE_COMPONENT = "front_goods_ajaxFavoriteRegistPage";

		/** サーバサイドのActionコンポーネント名 */
		ACTION_COMPONENT = "front_goods_ajaxFavoriteRegistAction";

		/** 本人認証確認メソッド */
		ACTION_METHOD_GET_PERSONATTESTATION = "addFavoriteGoods";

		/** タイムアウト（秒） */
		TIME_OUT = 5;

		/**
		 * Ajax処理URL
		 * cookieがoffの場合、URLにjsessionidを付与する必要がある。
		 * jessesionidは、html内にダミーリンクを用意することで、teedaに付与させる。
		 */
		AJAX_PROCESS_URL = $("#goAjaxProcessUrl").attr("href");

	/*
	 * リクエストパラメータ設定
	 */
		requestParam = {};

		// リクエストパラメータの作成
		requestParam.ggcd = ggcd;

		// 実行するサーバサイドコンポーネントの設定
		// サーバサイドのPageコンポーネント
		requestParam.pageComponent = PAGE_COMPONENT;

		// サーバサイドのActionコンポーネント
		requestParam.actionComponent = ACTION_COMPONENT;

		// Actionコンポーネントのメソッド名
		requestParam.actionMethod = ACTION_METHOD_GET_PERSONATTESTATION;

	/*
	 * Ajax通信設定
	 */
		var ajax = Kumu.Ajax.getS2AjaxComponent();

		// リクエストパラメータ
		ajax.params = requestParam;

	/*
	 * コールバック関数
	 */
		// 通信成功時
		ajax.doAction = result;
		// JavaScriptエラー
		ajax.onException = onFailure;

		// タイムアウト
		ajax.onTimeout = onFailure;

		// 通信失敗
		ajax.onFailure = onFailure;

		// URL
		ajax.url = AJAX_PROCESS_URL;

		// タイムアウト
		// 定数化する
		ajax.timeout = TIME_OUT;

		// レスポンスはTEXT形式で受け取る
		// ajax.responseType = Kumu.Ajax.RESPONSE_TYPE_JSON;
		ajax.responseType = Kumu.Ajax.RESPONSE_TYPE_TEXT;
		ajax.evalJSON=false

		// 実行
		Kumu.Ajax.executeAjax(ajax);

	}

	/**
	 * マイリスト登録通信のコールバックメソッド
	 */
	function result(response) {
		if(response == favoriteModel.REGIST_OK){

			// マイリスト登録完了処理。
			document.images[targetElement.id].src=favoriteModel.IMG_FAVORITEGOODS;

			// onClick属性をクリアします。
			document.images[targetElement.id].onclick = "";

		}else if(response == favoriteModel.REGIST_NG){
			// 未認証の為、未登録。 ログイン画面 -> 再度登録処理を行います。
			location.href = document.getElementById("goHiddenParam").href + "&ggcd=" + ggcd + "&md=login";

		} else {
			// Ajaxマイリスト登録エラーメッセージ表示
			document.getElementById(favoriteModel.ERRORMSG_ID).innerHTML=response;
			window.location.hash = "top";
		}
	}

	/**
	 * エラー発生時のコールバックメソッド
	 * JavaScriptエラー、通信エラー時にコールバックされる
	 */
	function onFailure() {

		// エラー画面へリダイレクト
		location.href = "../error.html";
	}
};

