//書き込みが正常に終わったあとに呼び出される
function bbs_callback(data)
{
	$('#bbs_writting_now').hide();

	//再読み込み
	bbs_reload(data['event_key']);

	//書き込みフォームは閉じる
	$('#writewindow').hide('slow');
	//formに残ったままになっている書き込んだ内容は消す.
	document.writeform.reset();
}

//書き込みがエラーで終わったときに呼び出される.
function bbs_error_callback(data)
{
	$('#bbs_writting_now').hide();

	$('#error_alert').show();

	if (data['error']['bad_login'])
	{
		$('#error_bad_login').show();
	}
	if (data['error']['bad_event_key'])
	{
		$('#error_bad_event_key').show();
	}
	if (data['error']['bad_message'])
	{
		$('#error_bad_message').show();
	}
	if (data['error']['bad_image'])
	{
		$('#bad_image').show();
	}
	if (data['error']['db_erorr'])
	{
		$('#error_db_error').show();
	}
}

//bbsに書き書き込む直前に呼ばれる
function bbs_write(thisObject)
{
	$('#bbs_writting_now').show();
	return true;
}

//画像を拡大して表示する機構の初期化
function bbs_Init()
{
	var requesturl = GetBasePath() + 'ajax_bbs.php?event_key=' + g_BBSOut['event_key'];

	//>>1 等の書き込みにマウスカーソルを合わせたときにポップアップするようにします.
	MakeResLink(requesturl);
}

//削除を実行する.
function bbs_delete(bbs_key)
{
	//確認ダイアログ
	if (!deleteOKDialog())
	{
		return ;
	}
	var requesturl = GetBasePath() + "ajax_bbs.php";

	//削除クエリーを投げる
	jQuery.post(
		requesturl,
		{
			  bbs_key:		bbs_key
			 ,del:			1
		},
		function(jsonData, status, response) 
		{
			if (status != 'success')
			{
				alert('処理の途中でエラーが発生しました\r\n' + jsonData);
				return ;
			}
			if (jsonData['State'] != 'Success')
			{
				alert("削除処理に失敗しました:\r\n");
				return ;
			}
			//再読み込み
			bbs_reload( g_BBSOut['event_key'] , g_BBSOut['page'] , g_BBSOut['pagecount']);
		},
		'json'
	);
	return ;
}

//掲示板部分を再ロードしなおす
function bbs_reload(event_key , page , pagecount)
{
	$('#bbs_loading_now').show();

	var option = null;
	if (page == undefined)
	{
		option = {
					 event_key:	event_key
					,fragment:	1
				};
	}
	else
	{
		option = {
					 event_key:	event_key
					,fragment:	1
					,page:		page
					,pagecount:	pagecount
				};
	}
	var requesturl = GetBasePath() + "ajax_bbs.php";

	//削除を開始する.
	$('#bbs_message_list').super_load(
		requesturl,
		option,
		function(responseText, status, response) 
		{
			$('#bbs_loading_now').hide();
			
			//ページ数を変更する.
			g_BBSOut['page'] = page;
			g_BBSOut['pagecount'] = pagecount;

			bbs_Init();
		}
	);
}


//返信
function bbs_replay(bbs_number)
{
	$('#writewindow').super_show('slow');
	$('#bbs_message').val('>>' + bbs_number + "\r\n").focus();
}


//レスの読み込み数
var g_ResReadingCount = 0;
//レスの読み込みの最大数
var g_ResReadingMax = 6;

//レスをポップアップする
function ResPopup(resNumber,parentObject , baseurl)
{
	var url  = baseurl + '&bbs_number=' + resNumber + "&direct=1";

	//レスの読み込み数を増やす
	g_ResReadingCount ++;
	if (g_ResReadingCount > g_ResReadingMax)
	{
		return ;
	}

    var element = $(document.createElement('div'));
	element.addClass('respopup' + ((g_ResReadingCount-1) % 2));				//交互に色をつける.
	element.css({position: 'absolute',zIndex: 100,left: '-1000px'});		//非表示にすると height などが 0 になるため
	
	$('body').append(element);

	element.super_load(
		url,
		{
		},
		function(responseText, status, response) 
		{
			//適切な場所に移動する
			var x = parentObject[0].offsetLeft;
			var y = parentObject[0].offsetTop - element[0].offsetHeight;
			element.css({left: x + 'px',top: y + 'px'});

			//レスの中にレスが含まれていると追加してポップアップする.
			var num = responseText.match(/(?:&gt;&gt;|>>)(\d+-\d+|\d+-|\d+)/);
			if (num != null)
			{
				var newResNumber = RegExp.$1;
				if (newResNumber == resNumber)
				{
					return ;	//自分自身に対するポップアップは出さない!
				}
				ResPopup(newResNumber  ,element , baseurl);
			}
		}
	);
}

//ポップアップを開始する
function ResPopupStart(resNumber , x, y , baseurl)
{
	//基点となる場所を決める
    var element = $(document.createElement('div'));
	element.addClass('respopup0');
	element.css('position' , 'absolute');   
	element.css('left' , x + 'px');   
	element.css('top'  , y + 'px');   

	g_ResReadingCount = 0;

	$('body').append(element);

    ResPopup(resNumber , element , baseurl);
}

//ホップアップを解除する
function ResPopupEnd()
{
	$(".respopup0").remove();
	$(".respopup1").remove();
}

//イメージをクリックされたとき
function CreateBBSImageBox( thisObject , bbs_key)
{
	BikkuriBako(
			thisObject , 
			'dialog_image.php?bbs_key=' + bbs_key , 
		{
		}
	);
}


//レスへのリンクを作成する
function MakeResLink(baseurl)
{
	//>>1 等をリンクにする.
	$('.bbs_message_part').each(
		function () 
		{
		this.innerHTML = this.innerHTML.replace(/(?:&gt;&gt;|>>)(\d+-\d+|\d+-|\d+)/gi , "<a href='javascript:void(0)' class='reslink'>&gt;&gt;$1</a>");
		}
	);

	$('.reslink').each(
		function () 
		{
			var aObject = $(this);

			var num = aObject.html().match(/(?:&gt;&gt;|>>)(\d+-\d+|\d+-|\d+)/);
			if (num == null)
			{
				alert("プログラム内部エラー 書き込みのポップアップに失敗しました");
				return ;
			}
			var resNumber = RegExp.$1;

			aObject.mouseover(
				function(event)
				{
					var startXY = GetAbsoluteXY(event.target);
					ResPopupStart(resNumber , startXY['x'] + event.target.offsetWidth, startXY['y'] + event.target.offsetHeight, baseurl);
				}
			);
			aObject.mouseout(
				function(event)
				{
					ResPopupEnd();
				}
			);
		}
	);

}

