function event_attach(event, func)
{
	if (window.attachEvent)
	{
		window.attachEvent( event , func );
	}
	else
	{
		if ((typeof(func)).toLowerCase() != 'function')
			return;
		if ((typeof(document.event_handlers)).toLowerCase() == 'undefined')
			document.event_handlers = new Array();
		if ((typeof(document.event_handlers[event])).toLowerCase() == 'undefined')
			document.event_handlers[event] = new Array();
		if ((typeof(eval('window.' + event))).toLowerCase() != 'function')
			eval('window.' + event + ' = function () { if ((typeof(document.event_handlers[\'' + event + '\'])).toLowerCase() != \'undefined\') { for (i = document.event_handlers[\'' + event + '\'].length - 1; i >= 0; i--) { document.event_handlers[\'' + event + '\'][i]();}}}');
		document.event_handlers[event][document.event_handlers[event].length] = func;
	}
}

/* handler for Netscape Navigator clients that screw up the display
 * of CSS pages when reloaded
 */
function NN_reloadPage(init)
{
	if (init) with (navigator)
	{
		if ((appName == "Netscape") && (parseInt(appVersion) == 4))
		{
			document.NN_pgW = innerWidth;
			document.NN_pgH = innerHeight;
			event_attach ('onresize', NN_reloadPage);
		}
	}
	else if (innerWidth != document.NN_pgW || innerHeight != document.NN_pgH)
	{
		location.reload();
	}
}

function set_min_width(obj_name, min_width, ieOnly)
{
	if ((typeof(ieOnly)).toLowerCase() == 'undefined')
	{
		ieOnly = true;
	}
	if (!ieOnly || (document.getElementById && navigator.appVersion.indexOf("MSIE") > -1 && !window.opera))
	{
		document.min_width_obj_name = obj_name;
		document.min_width_size = min_width;
		document.resizing = false;
		event_attach('onload', control_min_width);
		event_attach('onresize', control_min_width);
	}
}
function control_min_width()
{
	var cw, w, pl, pr, ml, mr, br, bl, ad, theDiv = document.min_width_obj_name;
	var g = document.getElementById(theDiv);
	w = parseInt(document.min_width_size);
	if (g && document.body && document.body.clientWidth)
	{
		gs = g.currentStyle;
		cw = parseInt(document.body.clientWidth);
		pl = parseInt(gs.paddingLeft);
		pr = parseInt(gs.paddingRight);
		ml = parseInt(gs.marginLeft);
		mr = parseInt(gs.marginRight);
		bl = parseInt(gs.borderLeftWidth);
		br = parseInt(gs.borderRightWidth);
		ml = ml ? ml : 0;
		mr = mr ? mr : 0;
		pl = pl ? pl : 0;
		pr = pr ? pr : 0;
		bl = bl ? bl : 0;
		br = br ? br : 0;
		ad = pl + pr + ml + mr + bl + br;
		if (cw <= w)
		{
			w -= ad;
			g.style.width = w + "px";
		}
		else
		{
			g.style.width = "auto";
		}
	}
}

function setCookie(name, value, expires, path, domain, secure)
{
	 var curCookie = name + "=" + escape(value) +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
	document.cookie = curCookie;
}
function getCookie(name)
{
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1)
	{
		begin = dc.indexOf(prefix);
		if (begin != 0) return null;
	}
	else
	{
		begin += 2;
	}
	var end = document.cookie.indexOf(";", begin);
	if (end == -1)
	{
		end = dc.length;
	}
	return unescape(dc.substring(begin + prefix.length, end));
}
function deleteCookie(name, path, domain)
{
	var value = getCookie(name);
	if (value != null)
	{
		document.cookie = name + "=" +
			((path) ? "; path=" + path : "") +
			((domain) ? "; domain=" + domain : "") +
			"; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
	return value;
}

function loadFontSize()
{
	current_font_size = parseInt('0' + getCookie("font_size"));
	setFontSize(current_font_size);
}
function setFontSize(size)
{
	if (size >= 0 && size < font_sizes.length)
	{
		current_font_size = size;
	}
	else if (++current_font_size >= font_sizes.length)
	{
		current_font_size = 0;
	}
	if (document.body)
	{
		document.body.style.fontSize = font_sizes[current_font_size] + '%';
		setCookie("font_size", current_font_size);
	}
}
