// スワップイメージ

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

//フォントサイズ変更

var exclude_ids     = new Array();
var exclude_classes = new Array();
var exclude_tags    = new Array();

var in_ids     = new Array();
var in_classes = new Array();
var in_tags    = new Array();

var font_values  = new Array( '8px', '10px', '12px', '14px', '16px', '18px', '20px', '24px', '28px', '32px', '36px' );
var font_default = 2
var font_index   = font_default;

var cookie_days = 30 * 24;

var use_cookie = false;

function setExcludeIds( values )
{
	exclude_ids = values;
}

function setExcludeClasses( values )
{
	exclude_classes = values;
}

function setExcludeTags( values )
{
	exclude_tags = values;
}

function initFontSize()
{
	var index = readCookie( 'font_index' );

	if( index != null )
	{
		font_index = parseInt( index );

		setFontSize( font_values[ font_index ] );
	}

	use_cookie = true;
}

function setFontIndex( index )
{
	font_index = index;

	if( use_cookie )
	{
		writeCookie( 'font_index', font_index, cookie_days );
	}
}

function setDefaultFontSize()
{
	if( font_index != font_default )
	{
		setFontIndex( font_default );

		setFontSize( font_values[ font_index ] );
	}
}

function changeFontSize( n )
{
	var new_font_index = font_index;

	new_font_index += parseInt( n );

	if( new_font_index >= font_values.length )
	{
		new_font_index = font_values.length - 1;
	}

	if( new_font_index < 0 )
	{
		new_font_index = 0;
	}

	if( new_font_index != font_index )
	{
		setFontIndex( new_font_index );

		setFontSize( font_values[ font_index ] );
	}
}

function setFontSize( size )
{
	in_ids     = new Array();
	in_classes = new Array();
	in_tags    = new Array();

	document.body.style.fontSize = size;

	setRecursiveFontSize( document.body, size );
}

function setRecursiveFontSize( element, size )
{
	var use_ids     = new Array();
	var use_classes = new Array();
	var use_tags    = new Array();

	var i;

	for( i = 0; i < element.childNodes.length; i ++ )
	{
		var child_element = element.childNodes[ i ];

		includeElementInfo( child_element, use_ids, use_classes, use_tags );

		if( isChangeFont() )
		{
			if( child_element.style )
			{
				child_element.style.fontSize = size;
			}
		}

		if( child_element.hasChildNodes() )
		{
			setRecursiveFontSize( child_element, size );
		}

		excludeElementInfo( use_ids, use_classes, use_tags );
	}
}

function includeElementInfo( element, use_ids, use_classes, use_tags )
{
	var i;

	for( i = 0; i < exclude_classes.length; i ++ )
	{
		if( element.className )
		{
			if( element.className.toUpperCase() == exclude_classes[ i ].toUpperCase() )
			{
				var index = element.className.toUpperCase();

				if( in_classes[ index ] == null )
				{
					in_classes[ index ] = 1;
				}
				else
				{
					in_classes[ index ] += 1;
				}

				use_classes[ index ] = true;
				break;
			}
		}
	}

	for( i = 0; i < exclude_ids.length; i ++ )
	{
		if( element.id )
		{
			if( element.id.toUpperCase() == exclude_ids[ i ].toUpperCase() )
			{
				var index = element.id.toUpperCase();

				if( in_ids[ index ] == null )
				{
					in_ids[ index ] = 1;
				}
				else
				{
					in_ids[ index ] += 1;
				}

				use_ids[ index ] = true;
				break;
			}
		}
	}

	for( i = 0; i < exclude_tags.length; i ++ )
	{
		if( element.tagName )
		{
			if( element.tagName.toUpperCase() == exclude_tags[ i ].toUpperCase() )
			{
				var index = element.tagName.toUpperCase();

				if( in_tags[ index ] == null )
				{
					in_tags[ index ] = 1;
				}
				else
				{
					in_tags[ index ] += 1;
				}

				use_tags[ index ] = true;
				break;
			}
		}
	}
}

function excludeElementInfo( use_ids, use_classes, use_tags )
{
	var use_index;
	var in_index;

	if( countHashArray( use_ids ) > 0 )
	{
		for( use_index in use_ids )
		{
			if( in_ids[ use_index ] != undefined && in_ids[ use_index ] > 0 )
			{
				in_ids[ use_index ] -= 1;
			}
		}
	}

	if( countHashArray( use_classes ) > 0 )
	{
		for( use_index in use_classes )

		{
			if( in_classes[ use_index ] != undefined && in_classes[ use_index ] > 0 )
			{
				in_classes[ use_index ] -= 1;
			}
		}
	}

	if( countHashArray( use_tags ) > 0 )
	{
		for( use_index in use_tags )
		{
			if( in_tags[ use_index ] != undefined && in_tags[ use_index ] > 0 )
			{
				in_tags[ use_index ] -= 1;
			}
		}
	}
}

function isChangeFont()
{
	var in_index;

	if( countHashArray( in_ids ) > 0 )
	{
		for( in_index in in_ids )
		{
			if( in_ids[ in_index ] != null )
			{
				if( in_ids[ in_index ] > 0 )
				{
					return false;
				}
			}
		}
	}

	if( countHashArray( in_classes ) > 0 )
	{
		for( in_index in in_classes )
		{
			if( in_classes[ in_index ] != null )
			{
				if( in_classes[ in_index ] > 0 )
				{
					return false;
				}
			}
		}
	}

	if( countHashArray( in_tags ) > 0 )
	{
		for( in_index in in_tags )
		{
			if( in_tags[ in_index ] != null )
			{
				if( in_tags[ in_index ] > 0 )
				{
					return false;
				}
			}
		}
	}

	return true;
}

function countHashArray( array )
{
	var count = 0;

	for( var key in array )
	{
		count ++;
	}

	return count;
}

function writeCookie( name, value, hours )
{
	var expire = "";

	if( hours != null )
	{
		expire = new Date( ( new Date() ).getTime() + hours * 3600000 );
		expire = "; expires=" + expire.toGMTString();
	}

	document.cookie = name + "=" + escape( value ) + expire + ";path=/";
}

function readCookie( name )
{
	var cookieValue = "";
	var search      = name + "=";

	if( document.cookie.length > 0 )
	{
		offset = document.cookie.indexOf( search );

		if( offset != -1 )
		{
			offset += search.length;

			end = document.cookie.indexOf( ";", offset );

			if( end == -1 ) end = document.cookie.length;

			cookieValue = unescape( document.cookie.substring( offset, end ) );
		}
	}

	return cookieValue;
}
