jQuery(function(){
	jQuery.extend({
		/**
		 * インタフェースパーツ設定
		 * 
		 * @param	void
		 * @return	void
		 */
		set_interface_parts: function(){
			/* ##### クリッカブルテーブル設定 ##### */
			jQuery('.clickable').hover(function(){
				jQuery(this).addClass('col');
			},
			function(){
				jQuery(this).removeClass('col');
			});
			// クリック時遷移先
			jQuery('.clickable').click(function(){
				var targetURI = jQuery(this).find('a:first').attr('href');
				location.href = targetURI;
				return false;
			});

			/* ##### パーツ設定 ##### */
			// マイリストボタン
			jQuery('.add_my_list_trigger').click(function(e){
//				e.stopPropagation();
				var tmp = jQuery(this).attr('rel').split('/');
				// リクエスト先URL
				var targetURI = '/json_datas/add_my_list';
				targetURI += '/' + tmp[0] + '/' + tmp[1];
				// HTTPリクエスト
				var response = jQuery.execute_command(targetURI);
				if(eval(response.responseText) == true){
					alert('マイリストに追加しました');
				}
			});
			// 問い合わせボタン
			jQuery('.add_contact_trigger').click(function(e){
//				e.stopPropagation();
				var tmp = jQuery(this).attr('rel').split('/');
				// 遷移先URL
				var targetURI = '/contact_item/index';
				targetURI += '/' + tmp[0] + '/' + tmp[1];
				// 遷移
				location.href = targetURI;
			});
			// チェックボックス(イベント無効化)
			jQuery('.clickable').find('input, a').click(function(e){
				e.stopPropagation();
			});
			// チェックボックス動作
			jQuery('.checkbox_trigger').click(function(){
				if(jQuery(this).attr('checked') == true){
					jQuery(this).parents('.checkbox_group').find('.checkbox_target').attr('checked', true);
					jQuery(this).parents('.checkbox_group').find('.checkbox_trigger').attr('checked', true);
				}else{
					jQuery(this).parents('.checkbox_group').find('.checkbox_target').attr('checked', false);
					jQuery(this).parents('.checkbox_group').find('.checkbox_trigger').attr('checked', false);
				}
			});
			// お気に入り検索条件に追加
			jQuery('.add_my_condition_trigger').click(function(){
				var tmp = jQuery(this).attr('rel').split('/');
				// リクエスト先URL
				var targetURI = '/json_datas/add_my_condition';
				targetURI += '/' + tmp[0] + '/' + encodeURI(tmp[1]);

				// HTTPリクエスト
				var response = jQuery.execute_command(targetURI);
				if(eval(response.responseText) == true){
					alert('お気に入り検索条件に追加しました');
				}
			});
			// まとめてマイリストに追加
			jQuery('.add_my_list_group_trigger').click(function(){
				var target = jQuery(this).parents('.checkbox_group').find('.checkbox_target:checked');
				if(target.length < 1){
					alert('項目が選択されていません');
				}else{
					var items = [];
					jQuery(target).each(function(){
						items.push(jQuery(this).val());
					});
					items = items.join(',');
					// リクエスト先URL
					var targetURI = '/json_datas/add_my_list';
					targetURI += '/' + jQuery(this).attr('rel') + '/' + encodeURI(items);
					// HTTPリクエスト
					var response = jQuery.execute_command(targetURI);
					if(eval(response.responseText) == true){
						alert('マイリストに追加しました');
					}
				}
			});
			// まとめて問い合わせ
			jQuery('.add_contact_group_trigger').click(function(){
				var target = jQuery(this).parents('.checkbox_group').find('.checkbox_target:checked');
				if(target.length < 1){
					alert('項目が選択されていません');
				}else{
					var items = [];
					jQuery(target).each(function(){
						items.push(jQuery(this).val());
					});
					items = items.join(',');
					// 遷移先URL
					var targetURI = '/contact_item/index';
					targetURI += '/' + jQuery(this).attr('rel') + '/' + encodeURI(items);
					// 遷移
					location.href = targetURI;
				}
			});
			// ページネートリミット
			jQuery('.change_limit_trigger').change(function(){
				if(jQuery(this).val() != ''){
					location.href = jQuery(this).attr('rel') + '/limit:' + jQuery(this).val();
				}
			});
		},
		/**
		 * 削除系インタフェースパーツ設定
		 * 
		 * @param	void
		 * @return	void
		 */
		set_remove_parts: function(){
			// マイリスト削除
			jQuery('.remove_favorite_group_trigger').click(function(){
				var target = jQuery(this).parents('.checkbox_group').find('.checkbox_target:checked');
				if(target.length < 1){
					alert('項目が選択されていません');
				}else{
					if(window.confirm('選択項目をマイリストから削除します。\nよろしいですか？')){
						var items = [];
						jQuery(target).each(function(){
							items.push(jQuery(this).val());
						});
						items = items.join(',');
						// リクエスト先URL
						var targetURI = '/json_datas/remove_my_list';
						targetURI += '/' + jQuery(this).attr('rel') + '/' + encodeURI(items);
						// HTTPリクエスト
						var response = jQuery.execute_command(targetURI);
						if(eval(response.responseText) == true){
							alert('選択項目をマイリストから削除しました。');
							jQuery(target).attr('checked', false);
							jQuery(this).parents('.checkbox_group').find('.checkbox_trigger:checked').attr('checked', false);
							window.location.reload();
						}
					}	
				}
			});
			// 閲覧履歴削除
			jQuery('.remove_hiostory_group_trigger').click(function(){
				var target = jQuery(this).parents('.checkbox_group').find('.checkbox_target:checked');
				if(target.length < 1){
					alert('項目が選択されていません');
				}else{
					if(window.confirm('選択項目を物件閲覧履歴から削除します。\nよろしいですか？')){
						var items = [];
						jQuery(target).each(function(){
							items.push(jQuery(this).val());
						});
						items = items.join(',');
						// リクエスト先URL
						var targetURI = '/json_datas/remove_history';
						targetURI += '/' + jQuery(this).attr('rel') + '/' + encodeURI(items);
						// HTTPリクエスト
						var response = jQuery.execute_command(targetURI);
						if(eval(response.responseText) == true){
							alert('選択項目を物件閲覧履歴から削除しました。');
							jQuery(target).attr('checked', false);
							jQuery(this).parents('.checkbox_group').find('.checkbox_trigger:checked').attr('checked', false);
							window.location.reload();
						}
					}	
				}
			});
			// お気に入り検索条件削除
			jQuery('.remove_tag_group_trigger').click(function(){
				var target = jQuery(this).parents('.checkbox_group').find('.checkbox_target:checked');
				if(target.length < 1){
					alert('項目が選択されていません');
				}else{
					if(window.confirm('選択項目をお気に入り検索条件から削除します。\nよろしいですか？')){
						var items = [];
						jQuery(target).each(function(){
							items.push(jQuery(this).val());
						});
						items = items.join(',');
						// リクエスト先URL
						var targetURI = '/json_datas/remove_tag';
						targetURI += '/' + jQuery(this).attr('rel') + '/' + encodeURI(items);
						// HTTPリクエスト
						var response = jQuery.execute_command(targetURI);
						if(eval(response.responseText) == true){
							alert('選択項目をお気に入り検索条件から削除しました。');
							jQuery(target).attr('checked', false);
							jQuery(this).parents('.checkbox_group').find('.checkbox_trigger:checked').attr('checked', false);
							window.location.reload();
						}
					}	
				}
			});
		},
		/**
		 * Ajaxリクエスト送信
		 * 
		 * @param	String requestURI リクエスト先URI
		 * @return	Object レスポンステキスト
		 */
		execute_command: function(requestURI){
			return jQuery.ajax({
				'url':			requestURI,
				'cache':		false,
				'dataType':		'json',
				'async':		false,
				'error':		function(){ return false; }
			});
		},
		/**
		 * チェックリスト生成(エリア)
		 * 
		 * @param	Object HTTP_RESPONSE JSONデータ
		 * @return	void
		 */
		set_check_area_if_list: function(HTTP_RESPONSE){
			var append_child_node = '';
			jQuery(HTTP_RESPONSE).each(function(){
				append_child_node += '<li><a href="javascript:void(0);" onclick="javascript:jQuery.remove_check_if_list(this);">' + this.City.name + '</a><input type="hidden" name="data[Member][request_area][' + this.City.id + ']" value="' + this.City.id + '" /></li>' + "\n";
			});
			window.parent.jQuery('#check_if_list_area').append(append_child_node);
			window.parent.tb_remove();
		},
		/**
		 * チェックリスト生成(路線)
		 * 
		 * @param	Object HTTP_RESPONSE JSONデータ
		 * @return	void
		 */
		set_check_station_if_list: function(HTTP_RESPONSE){
			var append_child_node = '';
			jQuery(HTTP_RESPONSE).each(function(){
				append_child_node += '<li><a href="javascript:void(0);" onclick="javascript:jQuery.remove_check_if_list(this);">' + this.Station.name + '</a><input type="hidden" name="data[Member][request_station][' + this.Station.tag_id + ']" value="' + this.Station.tag_id + '" /></li>' + "\n";
			});
			window.parent.jQuery('#check_if_list_station').append(append_child_node);
			window.parent.tb_remove();
		},
		/**
		 * チェックリスト削除
		 * 
		 * @param	Object TGT_ELEM 削除対象エレメント
		 * @return	void
		 */
		remove_check_if_list: function(TGT_ELEM){
			jQuery(TGT_ELEM).parent('li').remove();
			return false;
		}
	});
	// ページロード完了時トリガ
	jQuery(document).ready(function(){
		// インタフェースパーツ設定
		jQuery.set_interface_parts();
		jQuery.set_remove_parts();
		// 路線選択
		jQuery('.add_select_station_trigger').click(function(){
			var target = jQuery('.add_select_target:checked');
			if(target.length < 1){
				alert('項目が選択されていません');
			}else{
				var action = jQuery(this).val();
				var items = Array();
				var requestURI = '/json_datas/check_if_list_station/';
				jQuery(target).each(function(){
					items.push(jQuery(this).val());
				});
				requestURI += items.join(',');
				jQuery.ajax({
					'url':			requestURI,
					'cache':		false,
					'dataType':		'json',
					'async':		true,
					'beforeSend':	function(){},
					'success':		function(HTTP_RESPONSE){ jQuery.set_check_station_if_list(HTTP_RESPONSE); },
					'error':		function(HTTP_RESPONSE){ alert('通信エラーが発生しました'); }
				});
			}
			return false;
		});
	});
});

