var textSize=0;
var min;
var max;
function increaseFontSize() {
	var p  = document.getElementsByTagName('p');
	var a  = document.getElementsByTagName('a');
	var h1 = document.getElementsByTagName('h1');
	var h2 = document.getElementsByTagName('h2');
	
	var main = document.getElementById('main');
	if (main != undefined) {
		h2 = main.getElementsByTagName('h2');
		AlterSize(h2,'up',14);
		
		h3 = main.getElementsByTagName('h3');
		
		var el, i;
		var ha = [];
		for (i=0;i < h2.length;i++) {
			el = h2[i];
			if (el instanceof HTMLHeadingElement) {
				pushAll(ha, el.getElementsByTagName('a'));
			}
		}
		for (i=0;i < h3.length;i++) {
			el = h3[i];
			if (el instanceof HTMLHeadingElement) {
				pushAll(ha, el.getElementsByTagName('a'));
			}
		}
		
		a = array_diff(a, ha);
		AlterSize(a,'up',13);
		AlterSize(ha,'up',14);
	} else {
		AlterSize(h2,'up',18);
		AlterSize(a,'up',13);
	}
	
	var h3 = document.getElementsByTagName('h3');
	var li = document.getElementsByTagName('li');
	
	AlterSize(p,'up',13);
	AlterSize(h1,'up',24);
	AlterSize(h3,'up',14);
	AlterSize(li,'up',15);
}

function AlterSize(p, adjust,defaultSize) {
	min = defaultSize;
	max = defaultSize + 6; //can increase 3 times
	var center;
	for(i=0;i<p.length;i++) {
		var pi = p[i];
		
		if ( !(pi instanceof HTMLParagraphElement || pi instanceof HTMLHeadingElement || pi instanceof HTMLLIElement ||
			   pi instanceof HTMLAnchorElement) ) {
			continue;
		}
		
		if (pi.className == undefined || pi.style == undefined) {
			continue;
		}
		
		var goAhead = true;
		if ( pi.className && pi.className.toLowerCase().indexOf("nosize") != -1) {
			goAhead = false;
		}

		if(goAhead) {
			if (adjust=='norm') {
				pi.style.fontSize = defaultSize+"px";
				continue;
			}
			
			if(pi.style.fontSize) {
				var s = parseInt(pi.style.fontSize.replace("px",""));
			} else {
				var s = defaultSize;
			}
			
			if(adjust=='up') {
				if (s > max) {
					s = defaultSize;
				}
				if (s < max) {
					s += 2;
				}
			} else if(adjust == 'down') {
				if(s > min && !(s - min < 1)) {
					s -= 2;
				}
			}

			pi.style.fontSize = s+"px";
		}
	}

}

function decreaseFontSize() {
	var p  = document.getElementsByTagName('p');
	var a  = document.getElementsByTagName('a');
	var h1 = document.getElementsByTagName('h1');
	var h2 = document.getElementsByTagName('h2');
	
	var main = document.getElementById('main');
	if (main != undefined) {
		h2 = main.getElementsByTagName('h2');
		AlterSize(h2,'down',14);
		
		h3 = main.getElementsByTagName('h3');
		
		var el, i;
		var ha = [];
		for (i=0;i < h2.length;i++) {
			el = h2[i];
			if (el instanceof HTMLHeadingElement) {
				pushAll(ha, el.getElementsByTagName('a'));
			}
		}
		for (i=0;i < h3.length;i++) {
			el = h3[i];
			if (el instanceof HTMLHeadingElement) {
				pushAll(ha, el.getElementsByTagName('a'));
			}
		}
		
		a = array_diff(a, ha);
		AlterSize(a,'down',13);
		AlterSize(ha,'down',14);
	} else {
		AlterSize(h2,'down',18);
		AlterSize(a,'down',13);
	}
	
	var h3 = document.getElementsByTagName('h3');
	var li = document.getElementsByTagName('li');
	
	AlterSize(p,'down',13);
	AlterSize(h1,'down',24);
	AlterSize(h3,'down',14);
	AlterSize(li,'down',13);
}

function normalizeFontSize() {
	var p  = document.getElementsByTagName('p');
	var a  = document.getElementsByTagName('a');
	var h1 = document.getElementsByTagName('h1');
	var h2 = document.getElementsByTagName('h2');
	
	var main = document.getElementById('main');
	if (main != undefined) {
		h2 = main.getElementsByTagName('h2');
		AlterSize(h2,'norm',14);
		
		h3 = main.getElementsByTagName('h3');
		var el, i;
		var ha = [];
		for (i=0;i < h2.length;i++) {
			el = h2[i];
			if (el instanceof HTMLHeadingElement) {
				pushAll(ha, el.getElementsByTagName('a'));
			}
		}
		for (i=0;i < h3.length;i++) {
			el = h3[i];
			if (el instanceof HTMLHeadingElement) {
				pushAll(ha, el.getElementsByTagName('a'));
			}
		}
		
		a = array_diff(a, ha);
		AlterSize(a,'norm',13);
		AlterSize(ha,'norm',14);
		
	} else {
		AlterSize(h2,'norm',18);
		AlterSize(a,'norm',13);
	}
	
	var h3 = document.getElementsByTagName('h3');
	var li = document.getElementsByTagName('li');
	
	AlterSize(p,'norm',13);
	AlterSize(h1,'norm',24);
	AlterSize(h3,'norm',14);
	AlterSize(li,'norm',13);
}

function pushAll(pushHere, pullFromHere) {
	for (var i = 0; i < pullFromHere.length; i++) {
		if (pullFromHere[i] != undefined) {
			pushHere.push(pullFromHere[i]);
		}
	}
}

function array_diff(a, b) {
    var seen = [], diff = [];
    for ( var i = 0; i < b.length; i++) {
        seen[b[i]] = true;
	}
    for ( var i = 0; i < a.length; i++) {
        if (!seen[a[i]]) {
            diff.push(a[i]);
		}
	}
    return diff;
}

