/*
 * AGORIA: しおり関連スクリプト
 *
 * Copyright (C) 2007 Business Breakthrough,Inc.
 * Create: 2007/02/21
 *
 */

// 変数設定
var dlgLeft;
var dlgTop;
var statusLeft;
var statusTop;

var hrefbk = new Array();
var bodycolorbk;
var spancolorbk1;
var spancolorbk2;
var spancolorbk3;
var spancolorbk4;
var tdcolorbk;
var href;
var hideObjects = new Array() ;

// マウスボタンが押されたときにその位置を取得する
function agoria_getOnMousedownXY(e){
	var left,top ;
	if(navigator.appName.charAt(0) == "M") {
		// IE
		left = e.x + document.body.scrollLeft ;
		top  = e.y + document.body.scrollTop ;
	} else {
		left = e.pageX ;
		top  = e.pageY ;
	}
	dlgLeft = left - 300 ;
	dlgTop = top + 10 ;
	statusLeft = left - 50 ;
	statusTop = top + 10 ;

	var height = 0;
	if ((document.body.clientHeight - document.body.scrollTop) < document.body.clientHeight) {
		//下へスクロールされている状態
		height = document.body.clientHeight + document.body.scrollTop;
		if (height - top <= 160) {
			//上に表示する為、topを変更する
			dlgTop = top - 200;
		}
	} else {
		//スクロールされていない
		if (document.body.clientHeight - top <= 160) {
			//上に表示する為、topを変更する
			dlgTop = top - 200;
		}
	}
}

// ダイアログ表示時に背景を無効化する
function agoria_disableAll() {
	// すべての入力とボタンを無効にする
	for (var i = 0; i < document.forms.length; i++) {
		var form = document.forms[i];
		for (var j = 0; j < form.elements.length; j++) {
			var ele = form.elements[j];
			ele.disabled = true;
		}
	}

	// すべてのリンクを無効にする
	var aTags = document.getElementsByTagName('A');
	for (var i = 0; i < aTags.length; i++){
		// 無効時に背景と同化するリンクの文字色対応
		if (aTags[i].className == "tabNo") {
			aTags[i].className = "disable";
		}
 		hrefbk[i] = aTags[i].href ;  
		aTags[i].removeAttribute('href');
	}

	// すべてのイメージを無効にする
	var imgs = document.getElementsByTagName('img');
	for (var i = 0; i < imgs.length; i++){
		if (imgs[i].className == "pict"){
			imgs[i].className = "pictDisable";
		}
		if (imgs[i].className == "icon"){
			imgs[i].className = "iconDisable";
		}
		if (imgs[i].className == "icon icon_1"){
			imgs[i].className = "icon1Disable";
		}
		if (imgs[i].className == "icon icon_2"){
			imgs[i].className = "icon2Disable";
		}
		if (imgs[i].className == "icon icon_3"){
			imgs[i].className = "icon3Disable";
		}
	}

	
	// youtube表示などの埋め込みコントロールを無効化する
	hideObjects = new Array() ;
	var objects = document.getElementsByTagName('embed') ;
	for (i = 0 ; i < objects.length ; i++) {
		if (objects[i].style.visibility != "hidden") {
			objects[i].style.visibility = "hidden" ;
			hideObjects.push(objects[i]) ;
		}
	}

}

// ダイアログを閉じたときに無効化したものを戻す
function agoria_disableOff() {
	// すべての入力とボタンを有効にする
	for (var i = 0; i < document.forms.length; i++) {
		var form = document.forms[i];
		for (var j = 0; j < form.elements.length; j++) {
			var ele = form.elements[j];
			ele.disabled = false;
		}
	}

	// すべてのリンクを有効にする
	var aTags = document.getElementsByTagName('A');
	for (var i = 0; i < aTags.length; i++){
		aTags[i].href = hrefbk[i];
		hrefbk[i] = '';                    
		// 文字色をデフォルト設定に戻す
		if (aTags[i].className == "disable") {
			aTags[i].className = "tabNo";
		}
        }

	// すべてのイメージを有効にする
	var imgs = document.getElementsByTagName('img');
	for (var i = 0; i < imgs.length; i++){
		if (imgs[i].className == "pictDisable") {
			imgs[i].className = "pict";
		}
		if (imgs[i].className == "iconDisable") {
			imgs[i].className = "icon";
		}
		if (imgs[i].className == "icon1Disable"){
			imgs[i].className = "icon icon_1";
		}
		if (imgs[i].className == "icon2Disable"){
			imgs[i].className = "icon icon_2";
		}
		if (imgs[i].className == "icon3Disable"){
			imgs[i].className = "icon icon_3";
		}
	}

	// 無効化したオブジェクトを元に戻す
	for (i = 0 ; i < hideObjects.length ; i++) {
		hideObjects[i].style.visibility = "visible" ;
	}
}

// ダイアログクローズ処理
function agoria_closeYoineDlg() {
	var dig = document.getElementById("yoineDlg");
	dig.style.display = "none";

	// ドキュメントの入力・ボタン・リンクを戻す
	agoria_disableOff();

	// 文字色を戻す
	document.body.style.color = bodycolorbk;

	var spans = document.getElementsByTagName('span');
	for (var i = 0; i < spans.length; i++) {
		if (spans[i].className == "b_b c_00") {
			spans[i].style.color = spancolorbk1;
		}
		if (spans[i].className == "c_01") {
			spans[i].style.color = spancolorbk2;
		}
		if (spans[i].className == "c_02 s_ss") {
			spans[i].style.color = spancolorbk3;
		}
		if (spans[i].className == "c_03 s_ss") {
			spans[i].style.color = spancolorbk4;
		}
	}

	var tds = document.getElementsByTagName('td');
	for (var i = 0; i < tds.length; i++) {
		if (tds[i].className == "bg_05 c_04") {
			tds[i].style.color = tdcolorbk;
		}
	}
}

// ダイアログ表示処理
function agoria_showYoineDlg(param,type,id1,id2,id3,title,yoinecnt,publicFlag) {

	var dig = document.getElementById("yoineDlg");
	if (dig.style.display == "none") {
		dig.style.display = "block";
 	}

	// ドキュメントの入力・ボタン・リンクを無効にする
	agoria_disableAll();

	// 文字色を変更する
	bodycolorbk = document.body.style.color;
	document.body.style.color = "#B3B8BB";

	var spans = document.getElementsByTagName('span');
	for (var i = 0; i < spans.length; i++) {
		if (spans[i].className == "b_b c_00") {
			spancolorbk1 = spans[i].style.color;
			spans[i].style.color = "#B3B8BB";
		}
		if (spans[i].className == "c_01") {
			spancolorbk2 = spans[i].style.color;
			spans[i].style.color = "#B3B8BB";
		}
		if (spans[i].className == "c_02 s_ss") {
			spancolorbk3 = spans[i].style.color;
			spans[i].style.color = "#B3B8BB";
		}
		if (spans[i].className == "c_03 s_ss") {
			spancolorbk4 = spans[i].style.color;
			spans[i].style.color = "#B3B8BB";
		}
	}

	var tds = document.getElementsByTagName('td');
	for (var i = 0; i < tds.length; i++) {
		if (tds[i].className == "bg_05 c_04") {
			tdcolorbk = tds[i].style.color;
			tds[i].style.color = "#B3B8BB";
		}
	}

	// Lyase.Viewでダイアログを生成する
	dig.innerHTML = Lyase.View.render({file : "js/agoria/yoineDlg.jhtml"}, {
			param : param,
			type : type,
			id1 : id1,
			id2 : id2,
			id3 : id3,
			title : title,
			left : dlgLeft,
			top : dlgTop,
			yoinecnt : yoinecnt,
			flag :publicFlag,
			overwrite : "true"
	});
}

// ダイアログ表示処理(良いね一覧編集ボタン)
function agoria_showYoineDlg_edit(uri,type,id1,id2,id3,title,yoinecnt,score,memo,tags,publicFlag) {

	var dig = document.getElementById("yoineDlg");
	if (dig.style.display == "none") {
		dig.style.display = "block";
 	}

	// ドキュメントの入力・ボタン・リンクを無効にする
	agoria_disableAll();

	// 文字色を変更する
	bodycolorbk = document.body.style.color;
	document.body.style.color = "#B3B8BB";

	var spans = document.getElementsByTagName('span');
	for (var i = 0; i < spans.length; i++) {
		if (spans[i].className == "b_b c_00") {
			spancolorbk1 = spans[i].style.color;
			spans[i].style.color = "#B3B8BB";
		}
		if (spans[i].className == "c_01") {
			spancolorbk2 = spans[i].style.color;
			spans[i].style.color = "#B3B8BB";
		}
		if (spans[i].className == "c_02 s_ss") {
			spancolorbk3 = spans[i].style.color;
			spans[i].style.color = "#B3B8BB";
		}
		if (spans[i].className == "c_03 s_ss") {
			spancolorbk4 = spans[i].style.color;
			spans[i].style.color = "#B3B8BB";
		}
	}

	var tds = document.getElementsByTagName('td');
	for (var i = 0; i < tds.length; i++) {
		if (tds[i].className == "bg_05 c_04") {
			tdcolorbk = tds[i].style.color;
			tds[i].style.color = "#B3B8BB";
		}
	}

	// PC、携帯共通とするためuriからサーバー名称を取り除く
	var index = uri.indexOf("?",0);
	var strcnt = (uri.length - index) - 1;
	var param = uri.substr(uri.length-strcnt,strcnt);
	
	// Lyase.Viewでダイアログを生成する
	dig.innerHTML = Lyase.View.render({file : "js/agoria/yoineDlg.jhtml"}, {
			param : param,
			type : type,
			id1 : id1,
			id2 : id2,
			id3 : id3,
			title : title,
			left : dlgLeft,
			top : dlgTop,
			yoinecnt : yoinecnt,
			score : score,
			memo : memo,
			tags :tags,
			flag :publicFlag,
			overwrite : "true"
	});
}

// 良いね削除処理(良いね一覧削除ボタン)
function agoria_confirmDeleteBookmark(entryId) {
	if (confirm("削除してもよろしいですか？")) {
		agoria_doDeleteBookmark(entryId);
	}
}

// 良いね登録処理
function agoria_doAddBookmark(param,type,id1,id2,id3,title,yoinecnt,publicFlag) {
	// ステータス欄を表示する
	var sts = $('yoineStatus') ;
	if (sts.style.display == "none") {
		sts.style.display = "block";
 	}
	sts.innerHTML = Lyase.View.render({file: "js/agoria/yoineStatus.jhtml"}, {
		left : statusLeft,
		top : statusTop
	}) ;
	$('bookmark_status').innerHTML = '' ;
	
	// このリソースに対してブックマーク登録を行う
	var parameter = {
		'm': 'pc',
		'a': 'do_h_abookmark_addcom',
		'param': param ,
		'type': type ,
		'id1': id1,
		'id2': id2,
		'id3': id3,
		'public_flag': publicFlag,
		'region': yoinecnt,
		'overwrite': 'false'
	} ;
	var request = new Ajax.Request(
		'./index.php',
		{
		 method      : 'post',
		 postBody    : $H(parameter).toQueryString(),
		 onSuccess   : agoria_addBookmark_complete ,
		 onFailure   : agoria_addBookmark_err,
		 onLoading   : agoria_addBookmark_showLoading
		});
}

function agoria_addBookmark_showLoading()
{
	var s = $('bookmark_status') ;
	s.innerHTML = 'しおりを保存中....' ;
}

function agoria_addBookmark_err(oj)
{
	var sts = $('yoineStatus') ;
	sts.style.display = "none" ;
	alert('リクエストに失敗しました') ;
}

function agoria_addBookmark_complete(oj)
{
	var sts = $('yoineStatus') ;
	var s = $('bookmark_status') ;
	try{
		eval("var json =" + oj.responseText ); 
	}
	catch(e){
		alert('登録できませんでした') ;
		sts.style.display = "none" ;
		return ;
	}
	if (json.success == 1) {
		s.innerHTML = 'しおりを登録しました' ;
	
		// 登録ボタンを編集、削除ボタンに付け替える
		var actionRegion = $('yoine' + json.region) ;
		var addlink = $('yoineadd' + json.region) ;
		var action_ed = addlink.attributes['onclick_ed'].value ;
		var action_del = 'agoria_confirmDeleteBookmark(' + '\'' + json.entryId + '\')' ;
		var code = '<a href="javascript:void(0)" onclick="' + action_ed + '" onmousedown="agoria_getOnMousedownXY(event)"><img src="images/abed.gif" title="しおりを編集する" alt="しおりを編集する"/></a>&nbsp' ; 
        code += '<a href="javascript:void(0)" onclick="' + action_del + '" onmousedown=\"agoria_getOnMousedownXY(event)"><img src="images/abdel.gif" title="しおりを削除する" alt="しおりを削除する"/></a>' ;
		actionRegion.innerHTML = code ;
		
		setTimeout('agoria_addBookmark_afterComplete(' + json.count + ',"' + json.type + '",' + json.resourceId + ',"' + json.region + '")', 1000);
	} else {
		//登録失敗
		if (json.faultCode == -3) {
			alert('既に登録されています') ;
			s.innerHTML = '既に登録されています' ;
		} else {
			alert('登録に失敗しました') ;
			s.innerHTML = '登録に失敗しました(' + json.faultCode + ')';
		}
		sts.style.display = "none" ;
	}
}

function agoria_addBookmark_afterComplete(count,type,resourceId,cntRegion)
{
	// 状況表示を消去
	var sts = $('yoineStatus') ;
	sts.style.display = "none" ;

	// 登録後のブックマーク数に件数表示を書き換える
	var region = $('yoine_cnt' + cntRegion) ;
	var users = (count == 1) ? 'user' : 'users' ;
	region.innerHTML = '<strong><a href="./?m=pc&amp;a=page_h_yoine&amp;resourceId=' + resourceId + '">' + count + ' ' + users + '</a></strong>'
}

// ブックマーク編集ダイアログからのPOST
function agoria_editBookmarkPost(){
	
	var status = $("status");
	status.innerHTML = '';

	var publicFlag;
	if ($("publicflag").checked) {
		publicFlag = 'public';
	} else {
		publicFlag = 'private';
	}
	// パラメータ作成
	var parameter = {
		'm': 'pc',
		'a': 'do_h_abookmark_addcom',
		'param': $F('param'),
		'type': $F('type'),
		'id1': $F('id1'),
		'id2': $F('id2'),
		'id3': $F('id3'),
		'score': $F('satisfaction_level'),
		'memo': $F('memo'),
		'tags': $F('tag'),
		'public_flag': publicFlag,
		'region': $F('yoinecnt'),
		'overwrite': $F('overwrite')
	}
	// Ajax.Requestオブジェクト作成
	var request = new Ajax.Request(
		'./index.php',
		{
		 method      : 'post',
		 postBody    : $H(parameter).toQueryString(),
		 onSuccess   : agoria_editBookmark_complete,
		 onFailure   : agoria_editBookmark_err,
		 onLoading   : agoria_editBookmark_showLoading

		});
}

// リクエスト成功時処理
function agoria_editBookmark_complete(oj,json)
{
	try{
		eval("var json =" + oj.responseText ); 
	}
	catch(e){
		alert("登録に失敗しました");
		return ;
	}
	var status = $("status");
	if (json.success == 1){
		//登録成功
		status.style.color = "#339933";
		status.innerHTML = 'しおりを登録しました';
		setTimeout('agoria_editBookmark_afterComplete(' + json.count + ',"' + json.type + '",' + json.resourceId + ',"' + json.region + '")', 1000);
	} else {
		//登録失敗
		if (json.faultCode == -3) {
			alert('既に登録されています') ;
			status.style.color = "#FF0033";
			status.innerHTML = '既に登録されています' ;
		} else {
			status.style.color = "#FF0033";
			status.innerHTML = '登録に失敗しました(' + json.faultCode + ')';
		}
	}
}

function agoria_editBookmark_afterComplete(count,type,resourceId,cntRegion)
{
	agoria_closeYoineDlg();
	if (cntRegion == "edit") {
		location.reload();
	}
}

// リクエスト失敗時処理
function agoria_editBookmark_err(oj)
{
	var status = $("status");
	status.style.color = "#FF0033";
	status.innerHTML = 'リクエストに失敗しました';
}

// リクエスト中の処理
function agoria_editBookmark_showLoading()
{
	var loadingdig = $("status");
	loadingdig.style.color = "#212121";
	loadingdig.innerHTML = 'しおりを保存中....';
}

function agoria_doDeleteBookmark(entryId){
	
	// パラメータ作成
	var parameter = {
		'm': 'pc',
		'a': 'do_h_abookmark_delcom',
		'entry_id': entryId
	}
	// Ajax.Requestオブジェクト作成
	// 削除は同期モードで通信を行う
	var request = new Ajax.Request(
		'./index.php',
		{
		 asynchronous : false,
		 method       : 'post',
		 postBody     : $H(parameter).toQueryString()
		});

	var records = eval("json="+request.transport.responseText); 
	if (records.success == 1) {
		// 削除成功
		location.reload();
	} else {
		// 削除失敗
		alert("削除に失敗しました(" + records.faultCode + ")");
	}
}




