/* 2007-02-22 */

var fontProperty = {
	"Font-Small" : '70%',
	"Font-Medium" : '83%',
	"Font-Large" : '95%'
};

var activeFontSize = "Font-Medium";
var SWITCH_ELEMENT = 'IMG';
var SWITCH_MOUSEOVER_IMG_SUFFIX = "on";


var className = ( document.all && !window.opera  )? 'className' : 'class';
var buttons = [];

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function setFontSize( size ){
	var el = document.getElementsByTagName('BODY')[0];
	setStyle( el, { fontSize : fontProperty[size] } );
	
	if( document.compatMode == 'BackCompat' ){
		var td = document.getElementsByTagName('TD');
		var th = document.getElementsByTagName('TH');
		for( var i=0; i<td.length; i++ ){
			setStyle( td[i], { fontSize : fontProperty[size] } );
		}
		for( var j=0; j<th.length; j++ ){
			setStyle( th[j], { fontSize : fontProperty[size] } );
		}
	}
	
	activeFontSize = size;
	createCookie("fontSize", size, 365);
}


function setStyle( element, styles ){
	if(!element) return;
	for( var key in styles ){
		element.style[key] = styles[key];
	}
}


function isFontProperty( p ){
	for( var fp in fontProperty ){
		if(fp==p) return true;
	}
	return false;
}




function buttonOff(){
	for( var i=0; i<buttons.length; i++ ){
		if( buttons[i].getAttribute(className) != activeFontSize )
			buttons[i].src = buttons[i].offsrc;
	}
}
function setActiveButton( size ){
	for( var i=0; i<buttons.length; i++ ){
		if( buttons[i].getAttribute(className) == size ){
			buttons[i].src = buttons[i].onsrc;
		}
	}
}
function preloadImages(){
	if(!document.images) return;
	var ret = [];
	for( var i=0; i<buttons.length; i++ ){
		(new Image()).src = buttons[i].onsrc;
		ret[ret.length] = buttons[i].onsrc;
	}
}
function swapImage( obj, status ){
	if( !obj || !obj[status+"src"] ) return;
	obj.src = obj[status+"src"];
}

function registSwitcherButton( el, fs ){
	var btn = new Object();
	btn.src = el.src;
	btn.filetype = btn.src.substring(btn.src.lastIndexOf('.'));
	btn.basename = btn.src.substring(0, btn.src.length-btn.filetype.length);
	btn.onsrc = btn.basename + SWITCH_MOUSEOVER_IMG_SUFFIX + btn.filetype;

	el.offsrc = btn.src;
	el.onsrc  = btn.onsrc;
	//buttons.push( el );
	buttons[buttons.length] = el;

	EventManager.addEvent( el, 'click', function(){
		setFontSize( fs );
		setActiveButton( fs );
		buttonOff();
	}, false );

	EventManager.addEvent( el, 'mouseover', function(){ swapImage( el, "on" ); }, false );

	EventManager.addEvent( el, 'mouseout', function(){
		buttonOff();
		el.src = ( fs != activeFontSize )? el.offsrc : el.onsrc;
	}, false );
}

function initFontSizeSwitcher(){
	if(!document.getElementById) return;

	var fs = readCookie("fontSize");
	if(fs) setFontSize(fs);
	else setFontSize(activeFontSize);

	var sw = document.getElementsByTagName(SWITCH_ELEMENT);
	for( var i=0; i<sw.length; i++ ){
		if(!sw[i].getAttribute(className)) continue;
		var cns = sw[i].getAttribute(className).split(/\s+/);
		for(var j=0; j<cns.length; j++){
			if( isFontProperty(cns[j]) ){
				registSwitcherButton( sw[i], cns[j] );
			}
		}
	}
	preloadImages();
	setActiveButton( activeFontSize );
}




EventManager.addEvent( window, 'load', initFontSizeSwitcher, false );
EventManager.addEvent( window, 'unload', function(){
	createCookie("fontSize", activeFontSize, 365);
}, false );


