/***************/
/* takahashiX  */
/***************/
/*	2006.11.09	Opera Show 表示の時、フォントサイズを画面いっぱいにする。	*/
if(document.addEventListener)//!Trident
{
(function()
{
	document.addEventListener('DOMContentLoaded',changeFontSize,false);
	document.addEventListener
	('DOMContentLoaded',
		function()
		{
			window.addEventListener('resize',changeFontSize,false);
		},false
	)
	var takahashied = 0;

	function changeFontSize()
	{
		// PageFoot に page-break-before:always; が設定されている時だけ実行
		var PageFoot = document.getElementById('PageFoot');
		if(window.getComputedStyle(PageFoot,null).pageBreakBefore == "always" && takahashied != 1)//
		{
			tXYAll(document,'h1',1.0);
			tXAll(document,'h2',1.0);
			tXAll(document,'h3',1.0);
			var divs	= document.getElementsByTagName('div');
			for(var i = 0,div;div = divs[i];i++)
			{
				if(div.getAttribute('class') == 'content')
				{
					tXAll(div,'h4',1.0);
					tXAll(div,'h5',1.0);
					tXAll(div,'h6',1.0);
					tXYAll(div,'p',0.8);
//					tXYAll(div,'table',0.4);
//					tXYAll(div,'ul',0.5);
//					tXYAll(div,'dl',0.3);
					clipToFile(div);
					var ols	= document.getElementsByTagName('ol');
					for(var j = 0,ols;ol = ols[j];j++)
					{
						tXYAll(ol,'li',0.7);
					}
				}
			}
			takahashied = 1;
		}
		else if(window.getComputedStyle(PageFoot,null).pageBreakBefore != "always" && takahashied == 1)
		{
			var elements	= document.getElementsByTagName('*');
			for(var i = 0,element;element = elements[i];i++)
			{
				with(element.style)
				{
					fontSize	= "";
					lineHeight	= "";
				}
			}
			takahashied = 0;
		}
		/* clip */
		function clipToFile(parent)
		{
			var elements = parent.getElementsByTagName('a');
			for(var i = 0,element;element= elements[i];i++)
			{
				var object = element.getElementsByTagName('object')[0];
				if(element.getAttribute('class') == "clip" && object)
				{
					object.setAttribute('data',element.getAttribute('href'));
				}
			}
		}
		/*	指定要素すべてについて takahashiX */
		function tXAll(parent,tagName,size)
		{
			var elements = parent.getElementsByTagName(tagName);
			for(var i = 0,element;element = elements[i];i++)
			{
				takahashiX(element,size);
			}
		}
		/*	指定要素すべてについて takahashiXY */
		function tXYAll(parent,tagName,size)
		{
			var elements = parent.getElementsByTagName(tagName);
			for(var i = 0,element;element = elements[i];i++)
			{
				takahashiXY(element,size);
			}
		}
		/*	element 文字が、占有率 size で横幅にきっちり収まるように文字サイズを変更する。 	*/
		function takahashiX(element,size)
		{
			var style           = getComputedStyle(element,'');
			var windowWidth     = style.width.match(/\d+/);
			var windowHeight	= window.innerHeight - style.marginTop.match(/\d+/) - style.marginBottom.match(/\d+/) - style.paddingTop.match(/\d+/) - style.paddingBottom.match(/\d+/);
			var elementLength   = element.innerText.length;
			var rts	= element.getElementsByTagName('rt');
			for(var i = 0,rt;rt = rts[i];i++)
			{
				elementLength = elementLength - rt.innerText.length - 2;
			}
			var eleFontSize	= Math.floor(windowWidth / elementLength * size);
			element.style.fontSize   = eleFontSize + "px";
			element.style.lineHeight = windowHeight + "px";
		}
		/*	element 文字が、占有率 size で画面にきっちり収まるように文字サイズを変更する。 	*/
		function takahashiXY(element,size)
		{
			var style           = getComputedStyle(element,'');
			var windowWidth     = style.width.match(/\d+/);
			var windowHeight	= window.innerHeight - style.marginTop.match(/\d+/) - style.marginBottom.match(/\d+/) - style.paddingTop.match(/\d+/) - style.paddingBottom.match(/\d+/);
			var elementLength	= element.innerText.length;
			var rts	= element.getElementsByTagName('rt');
			for(var i = 0,rt;rt = rts[i];i++)
			{
				elementLength = elementLength - rt.innerText.length - 2;
			}
			var imgSpace	= 0;
			var imgs			= element.getElementsByTagName('img');
			for(var i = 0,img;img = imgs[i];i++)
			{
				imgSpace = imgSpace + img.clientWidth * img.clientHeight;
			}
			var eleFontSize	= Math.floor(Math.sqrt((windowWidth * windowHeight - imgSpace) / elementLength) * size * 0.95);
			var lineHeight  = 1 / (size * size);
			element.style.fontSize   = eleFontSize + "px";
			element.style.lineHeight = lineHeight + "em";
		}
	}
})();
}

