// 画像の先読み
var _preloadedImages = [];
(function () {
	var list = ['bg_fukidashi_btm_l.png', 'bg_fukidashi_btm_r.png', 'bg_fukidashi_l.png', 'bg_fukidashi_r.png', 'bg_dotted_line.gif'];
	for (var img,i=0; i < list.length; i++) {
		img = new Image();
		img.src = '../Img/'+list[i];
		_preloadedImages.push(img);
	}
})();

// 親ウィンドウがあるなら親に、なければブランクでリンクを開く（target指定されている場合はそのウィンドウ名で開く）
function navigate () {
	var url, target;
	if (arguments.length == 1) {
		url = arguments[0].href;
		target = arguments[0].target;
	} else {
		url = arguments[0];
		target = arguments[1];
	}
	var win = window.opener;
	if (win && !win.closed && target == '_blank') {
		// Safariはバグがあるため常に_blankで開く
		if (/safari/i.test(navigator.userAgent)) {
			win = window.open(url, '_blank');
		} else {
			win.location.href = url;
		}
	} else {
		win = window.open(url, target);
	}
	win.focus();
}

// <table>の列を出し消しする
function manageDisplay () {
	var div = (typeof divHasCheckboxes == 'undefined')? '#DATA-CELL' : divHasCheckboxes;
	var context = $(div+' tr.compare');
	if ($('input:checkbox:checked', context).length == 0) {
		location.reload();
		return;
	}
	$('td:visible input:checkbox:not(:checked)', context).each(function () {
		$('th[scope=col].'+this.value+',td.'+this.value).each(function () {
			if (/\bcolspan\b/.test(this.className)) {
				var cs = this.getAttribute('colSpan');
				if (!cs || cs == 1) {
					this.style.display = 'none';
				} else {
					this.setAttribute('colSpan', --cs);
				}
			} else {
				this.style.display = 'none';
			}
		});
	});
	$('input:checkbox', context).each(function(){this.checked=false});
	$(window).triggerHandler('emchange');
}




$(document).bind('ready', function () {

$('p.pointText a').attr('target', '_blank').click(function(){navigate(this);return false});

function hello ($event) {
	var win = $(window);
	var left = $event.pageX+10;
	var top = $event.pageY-140;
	if (win.width()+win.scrollLeft() < left+324) {
		left = $event.pageX-324-5;
		f.removeClass('fukidashiR').addClass('fukidashiL');
	} else {
		f.removeClass('fukidashiL').addClass('fukidashiR');
	}
	f.css({left:left, top:top}).show();
}

$('body').append('<div id="FUKIDASHI"><dl><dt id="FUKIDASHI-TITLE"></dt><dd id="FUKIDASHI-TEXT"></dd></dl><div class="foot"></div></div>');

var f = $('#FUKIDASHI').mousemove(hello);

$('table.data td.balloon').bind({
	mousemove: function ($event) {
		var key = this.className.match(/\bballoon-(.+)\b/)[1];
		if (f.data('current') != key) {
			f.data('current', key);
			$('#FUKIDASHI-TITLE').html(serif[key].title);
			$('#FUKIDASHI-TEXT').html(serif[key].description);
		}
		hello($event);
		return false;
	},
	mouseleave: function () {
		f.removeData('current').hide();
		return false;
	},
	mouseover: function(){return false}
});

$(document).bind({
	mouseover: function(){f.hide()},
	mousewheel: function ($event, $delta) {
		var win = $('#WINDOW');
		win.scrollTop(win.scrollTop()+(($delta > 0)?-80:80));
	},
	keydown: function ($event) {
		var code = $event.keyCode;
		var win = $('#WINDOW');
		if (code == 38) // Up
			win.scrollTop(win.scrollTop()-15);
		else if (code == 40) // Down
			win.scrollTop(win.scrollTop()+15);
		else if (code == 39) // Right
			win.scrollLeft(win.scrollLeft()+15);
		else if (code == 37) // Left
			win.scrollLeft(win.scrollLeft()-15);
		else if (code == 34) // PageDown
			win.scrollTop(win.scrollTop()+$('#SCROLL-AREA').height());
		else if (code == 33) // PageUp
			win.scrollTop(win.scrollTop()-$('#SCROLL-AREA').height());
	}
});




// appendChild用
//function append ($dest) {
//	for (var i=1; i < arguments.length; i++) {
//		$dest[0].appendChild(arguments[i][0]);
//	}
//	return $dest;
//}

// スクロールバーの幅を取得
function getScrollbarW () {
	var div = $('<div />', {
		css: {
			position: 'absolute',
			visibility: 'hidden',
			width: 100,
			height: 100,
			overflow: 'scroll'
		},
		html: '<div />'
	}).appendTo('body');
	var w = div.width()-div.children('div').width();
	div.remove();
	return (w || 0);
}

// テーブルの行列サイズを更新
function setTableSize () {
	
	var table = $('#DATA-CELL').find('table');
	
	// 固定する行列の幅高さを算出
	var tablePos = table.position();
	var tr = $('tr:visible:eq('+fixedRows+')', table);
	var headerW = tr.children('*:visible').eq(fixedCols).position().left-tablePos.left;
	var headerH = tr.position().top-tablePos.top;
	
	// テーブルのボーダー込みの幅高さを取得
	var tableW = table.outerWidth()+1; // +1はborder-right分
	var tableH = table.outerHeight();
	
	// 固定テーブルの各構成要素の幅高さを設定
	$('#CROSS-CELL').css({width:headerW, height:headerH});
	$('#COL-HEADER').css({width:tableW-headerW, height:headerH});
	$('#ROW-HEADER').css({width:headerW, height:tableH-headerH});
	$('#DATA-CELL').css({width:tableW-headerW, height:tableH-headerH});
	$('#TABLE-HEAD').css({width:tableW});
	$('#TABLE-BODY').css({width:tableW});
	
	// 固定テーブルの各構成要素のネガティブマージンを設定
	$('#COL-HEADER-INNER').css({marginLeft:-headerW});
	$('#ROW-HEADER-INNER').css({marginTop:-headerH});
	$('#DATA-CELL-INNER').css({marginTop:-headerH, marginLeft:-headerW});
}

// スクロールコンテンツエリアを更新
function setContentSize () {
	
	adjustWindow();
	
	var win = $(window);
	var bW = win.width()-scrollbarW;
	var bH = win.height()-scrollbarW;
	
	var sa = $('#SCROLL-AREA');
	sa.height(bH-$('#TABLE-HEAD-AREA').height()-$('#HEAD-AREA').outerHeight());
	
	var tba = $('#TABLE-BODY-AREA');
	var tbaW = bW-parseInt(tba.css('marginLeft'))-parseInt(tba.css('marginRight'));
	tba.width(tbaW);
	$('#TABLE-HEAD-AREA').width(tbaW);
	
	$('#WINDOW-INNER').css({
		width: (bW*$('#DATA-CELL').width())/(tbaW-$('#ROW-HEADER').width()),
		height: (bH*(tba.height()+$('#FOOT-AREA').outerHeight()))/sa.height()
	});
	$('#WINDOW').scrollTop(0).scrollLeft(0).scroll();
}

// ダミーウィンドウのサイズを調整
function adjustWindow () {
	var win = $(window);
	$('#WINDOW').css({width:win.width(), height:win.height()});
}




// スクロールバー幅を取得し、<body>のpaddingに設定
var scrollbarW = getScrollbarW();
$('body').css({paddingBottom:scrollbarW, paddingRight:scrollbarW});

// <table>をコピーし、各<div>に格納
//var table = $('#DATA-TABLE').removeAttr('id'); // idは削除
//append($('#CROSS-CELL-INNER'), table.clone());
//append($('#COL-HEADER-INNER'), table.clone());
//append($('#ROW-HEADER-INNER'), table.clone());
//append($('#DATA-CELL-INNER'), table.clone(true));
//table.remove();

// 疑似ウィンドウのスクロールに、スクロールコンテンツエリアが追随するよう設定
//$('#WINDOW').scroll(function () {
//	var self = $(this);
//	var win = $(window);
//	var sa = $('#SCROLL-AREA');
//	var ratioW = ($('#TABLE-BODY-AREA').width()-$('#ROW-HEADER').width())/(win.width()-scrollbarW);
//	var ratioH = sa.height()/(win.height()-scrollbarW);
//	sa.scrollTop(self.scrollTop()*ratioH);
//	$('#COL-HEADER,#DATA-CELL').scrollLeft(self.scrollLeft()*ratioW);
//});

// ウィンドウのリサイズおよび文字サイズ変更で、スクロールコンテンツエリアを更新
// リサイズの場合は500ミリ秒遅延させる
var timer = null;
$(window).bind({
	resize: function () {
		adjustWindow();
		clearTimeout(timer);
		timer = setTimeout(setContentSize, 500);
	},
	emchange: function () {
		setTableSize();
		setContentSize();
	}
});

//setTableSize();
//setContentSize();

});
