/**
 * sizer.js
 *
 * Copyright (c) 2003-2008 John Willinsky
 * Distributed under the GNU GPL v2. For full terms see the file docs/COPYING.
 *
 * Font sizer JavaScript functions. 
 *
 * $Id: sizer.js,v 1.1 2008/06/19 21:58:28 michael Exp $
 */

function getStylesheets() 
{
	var linkNodes, styleNodes, x, sheets = [];
	
	if (!window.ScriptEngine && navigator.__ice_version ) {
		return document.styleSheets;
	}
	if (document.getElementsByTagName) 
	{
		linkNodes = document.getElementsByTagName('link');
		styleNodes = document.getElementsByTagName('style');
	} else if (document.styleSheets && document.all) {
		linkNodes = document.all.tags('LINK');
		styleNodes = document.all.tags('STYLE');
	} else {
		return [];
	}
	
	for (x = 0; linkNodes[x]; x++) 
	{
		var rel = linkNodes[x].rel ? linkNodes[x].rel : linkNodes[x].getAttribute ? linkNodes[x].getAttribute('rel') : '';
		if (typeof(rel) == 'string' && rel.toLowerCase().indexOf('style') != -1) 
		{
			//mlog("sheets[" + sheets.length +"] = " + linkNodes[x].getAttribute('href'));
			sheets[sheets.length] = linkNodes[x];
		}
	}
	for (x = 0; styleNodes[x]; x++) {
		sheets[sheets.length] = styleNodes[x];
	}
	return sheets;
}

/**
 * Set the font size to the named stylesheet.
 * Thanks to www.alistsapart.com for the basic design.
 */
 
var std_size = 10;
var ft_size = null;

if(!ft_size)
	 ft_size = std_size;
 
function setFontSize(size) 
{
	//var s = getStylesheets();
	var d = document.getElementById('content');
	var tags = ['DIV', 'P', 'LI', 'OL', 'TABLE', 'TD'];
	
	
	//mlog("ft_size: " + ft_size);
	//mlog("std_size: " + std_size);
	//mlog('size ' + size);
	
	var chs = d.childNodes;
	//mlog("content.elements: " + chs.length);
	
  for (var i = 0; i < chs.length; i++) 
	{
		
		var c = chs[i];
		//alert(c.id);
		
		var found = 0;
		for(tag in tags)
		{
			//alert(tag);
			if(tags[tag] == c.tagName)
			{
				found = 1;
				break;
			} 
		}
		if(!found)
		{
			//mlog("skipped: " + c.tagName);
			continue;
		} else {
			//mlog("found: " + c.tagName);
		}
		
		//mlog("=================================");
		//mlog("setting size " + size + ' id:' + c.id + ' class: ' + c.className +
			//' type: ' + c.tagName);
		
		var st = c.style;
//		for (x in st)
//		{
//			if(!x || !st[x])
//				continue;
//				
//		  mlog(x + " = " + st[x] );
//		}
		
		var cft_size;
		//mlog('ft_size: ' + ft_size);
		switch(size)
		{
			case 'small':
			cft_size = ft_size - 2;
			break;
			
			case 'std':
			cft_size = std_size;
			break;
			
			case 'big':
			cft_size = ft_size + 2 ;
			break;
		}
		
		
		if(isIE)
		{
			//mlog('using ie');
			c.style.setAttribute('fontSize', cft_size + 'px');
			//mlog("yeaaaah");
		}
		else
			c.style.setProperty('font-size', cft_size + 'px', '');
			//' fsize: ' + c.style.fontSize);
	}
	
	ft_size = cft_size;
	//mlog('set ft_size => ' + ft_size);
	
	return;
	//mlog('setting for ' + size + ' elements: ' + s.length);
	for (var i=0; i < s.length; i++) 
	{
		if(s[i] &&
			 s[i].getAttribute("rel") &&
			 s[i].getAttribute("rel").indexOf("style") != -1 && 
			 s[i].getAttribute("title")) 
		{
			
			if(s[i].getAttribute("title") == size) 
			{
			/*	mlog("enabled s[" + i + "] " +
					s[i].getAttribute("title") + " rel: " + 
					s[i].getAttribute("rel") + " src: " +
					s[i].getAttribute("href"));*/
				s[i].disabled = false;
			} else {
				s[i].disabled = true;
/*				mlog("disabled s[" + i + "] " +
					s[i].getAttribute("title") + " rel: " + 
					s[i].getAttribute("rel") + " src: " +
					s[i].getAttribute("href"));*/
			}
			
		}
	}
}

/**
 * Get the current font size.
 * Thanks to www.alistapart.com for the basic design.
 */
function getFontSize() {
	var s = getStylesheets();
	for (var i=0; i < s.length; i++) {
		if(s[i].getAttribute("rel").indexOf("style") != -1 && s[i].getAttribute("title") && !s[i].disabled) return s[i].getAttribute("title");
	}
	return null;
}

function getPreferredFontSize() {
	var s = getStylesheets();
	for (var i=0; i < s.length; i++) {
		if(s[i].getAttribute("rel").indexOf("style") != -1 && s[i].getAttribute("rel").indexOf("alt") == -1 && s[i].getAttribute("title")) return s[i].getAttribute("title");
	}
	return null;
}

window.onload = function(e) {
	//var cookie = readCookie("font-size");
	//var size = cookie ? cookie : getPreferredFontSize();
	//setFontSize(size);
}

window.onunload = function(e) {
	//var size = getFontSize();
	//createCookie("font-size", size, 365);
}
