/*
	JavaScript Document 
	
	Empresa: WebAdvisor Software
	Acessibilidade - Controle do Tabamanho da Fonte
	
	Função aumentaFonte() - aumenta em 2px a fonte atual do site;
	Função diminuiFonte() - diminui em 2px a fonte atual do site;
	
	Exemplo de utilização 1: 
		<img src="botaoAumenta.gif" onClick="aumentaFonte()"/>
		<img src="botaoDiminui.gif" onClick="diminuiFonte()"/>
	Exemplo de utilização 2:
		<a href="javascript: aumentaFonte()"><img src="botaoAumenta.gif"/></a>
		<a href="javascript: diminuiFonte()"><img src="botaoDiminui.gif"/></a>
*/

/**
 * Create a cookie.
 */
function createCookie(name, value, days) {
	var expires = '';
	if (days) {
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		expires = '; expires=' + date.toGMTString();
	} 
	document.cookie = name + '=' + value + expires + '; path=';
}

/**
 * Read a cookie.
 */
function readCookie(name) {
	var nameEQ = name + '=';
	var cookies = document.cookie.split(';');
	for (var i = 0; i < cookies.length; i++) {
		var cookie = cookies[i];
		while (cookie.charAt(0) == ' ') 
			cookie = cookie.substring(1, cookie.length);
		if (cookie.indexOf(nameEQ) == 0) 
			return cookie.substring(nameEQ.length, cookie.length);
	}
	return null;
}

/**
 * Delete a cookie (only close page).
 */
function eraseCookie(name) {
	createCookie(name, '', -1);
}

function getMapFontsSize() {
	var fontsMap = new Array();
	try {
		var styles = document.styleSheets;
		for (var i = 0; i < styles.length; i++) {
			var imports = styles[i].imports;
			if (imports != null) {
				for (var j = 0; j < imports.length; j++) {
					var rules = imports[j].rules;
					if (rules == null)
						rules = styles[j].cssRules;
					for (var l = 0; l < rules.length; l++) {
						if (rules[l].style != null && rules[l].style.fontSize != null && rules[l].style.fontSize != '') {
							var className = rules[l].selectorText;
							if (className.indexOf('.') != -1)
								className.substring(className.lastIndexOf('.') + 1);
							fontsMap[className.toLowerCase()] = rules[l].style.fontSize;
						}
					}
				}
			}			
			var rules = styles[i].rules;
			if (rules == null)
				rules = styles[i].cssRules;
			if (rules != null) {
				for (var j = 0; j < rules.length; j++) {
					if (rules[j].style != null && rules[j].style.fontSize != null && rules[j].style.fontSize != '') {
						var className = rules[j].selectorText;
						if (className.indexOf('.') != -1)
							className = className.substring(className.lastIndexOf('.') + 1);
						fontsMap[className.toLowerCase()] = rules[j].style.fontSize;
					}
				}
			}
		}		
	} catch (e) {}
	return fontsMap;
}

/**
 * Inicializa os objetos necessarios para usar o script.
 */
var fontsMap = getMapFontsSize();
var userFontSize = readCookie('portalmakerUserFontSize');

function aumentaFonte() {
	incrementarTamanhoFonte();
	userFontSize++;
	createCookie('portalmakerUserFontSize', userFontSize);
}

function incrementarTamanhoFonte() {
	var elements = document.getElementsByTagName('*');
	for (var i = 0; i < elements.length; i++) {
		if (fontsMap[elements[i].className.toLowerCase()] != null || fontsMap[elements[i].nodeName.toLowerCase()] != null) {
			try {
				var fontSize = parseInt(elements[i].style.fontSize.replace('px', ''));
				if (isNaN(fontSize)) {
					if (fontsMap[elements[i].nodeName.toLowerCase()] != null)
						fontSize = parseInt(fontsMap[elements[i].nodeName.toLowerCase()].replace('px', ''));
					else
						fontSize = parseInt(fontsMap[elements[i].className.toLowerCase()].replace('px', ''));
				}
				elements[i].style.fontSize = (fontSize + 2) + 'px';
			} catch (e) {}
		}
	}
}

function diminuiFonte() {
	decrementarTamanhoFonte();
	userFontSize--;
	createCookie('portalmakerUserFontSize', userFontSize);
}

function decrementarTamanhoFonte() {
	var elements = document.getElementsByTagName('*');
	for (var i = 0; i < elements.length; i++) {
		if (fontsMap[elements[i].className.toLowerCase()] != null || fontsMap[elements[i].nodeName.toLowerCase()] != null) {
			try {
				var fontSize = parseInt(elements[i].style.fontSize.replace('px', ''));
				if (isNaN(fontSize)) {
					if (fontsMap[elements[i].nodeName.toLowerCase()] != null)
						fontSize = parseInt(fontsMap[elements[i].nodeName.toLowerCase()].replace('px', ''));
					else
						fontSize = parseInt(fontsMap[elements[i].className.toLowerCase()].replace('px', ''));
				}
				elements[i].style.fontSize = (fontSize - 2) + 'px';
			} catch (e) {}
		}
	}
}

function ajustaPadraoFonte() {
	var elements = document.getElementsByTagName('*');
	for (var i = 0; i < elements.length; i++) {
		if (fontsMap[elements[i].className.toLowerCase()] != null || fontsMap[elements[i].nodeName.toLowerCase()] != null) {
			try {
				var fontSize = 10;
				if (fontsMap[elements[i].nodeName.toLowerCase()] != null)
					fontSize = parseInt(fontsMap[elements[i].nodeName.toLowerCase()].replace('px', ''));
				else
					fontSize = parseInt(fontsMap[elements[i].className.toLowerCase()].replace('px', ''));
				elements[i].style.fontSize = fontSize + 'px';
			} catch (e) {}
		}
	}
	userFontSize = 0;
	createCookie('portalmakerUserFontSize', userFontSize);
}

/**
 * Recarrega as opções de tamanho de fonte selecionadas pelo usuário.
 */
window.onload = function() {
	if (!userFontSize)
		userFontSize = 0;
	else
		userFontSize = parseInt(userFontSize);
	if (userFontSize >= 0) {
		for (var i = 0; i < userFontSize; i++)
			incrementarTamanhoFonte();
	} else {
		for (var i = userFontSize; i < 0; i++)
			decrementarTamanhoFonte();
	}
};