var textChanger = {
	cpanel : 'footer',  //set here the id of the element (div, p) within you want to insert the control panel
	element : 'body',   	 //set here the id of the element (div, p) within you want to change the text
	defaultFS : 1.4,         //set here the default font size in 'em'
	init: function() {
		var cpel = document.getElementById(textChanger.cpanel);
		var el = document.body;
		if (cpel == null || el == null) {alert('The elements with the \"'+textChanger.cpanel+'\" and/or \"'+textChanger.element+'\" ID do not exist in HTML source.');} else {
		var u = document.createElement('ul');
		/*cpel.appendChild(u);
		u.innerHTML = 
		'<li id="decrease"><a href="#" title="Decrease font size">A-</a></li>'+
		'<li id="reset"><a href="#" title="Default font size">A</a></li>'+
		'<li id="increase"><a href="#" title="Increase font size">+A</a></li>'*/
		var sz = textChanger.getCookie();
		var bg = textChanger.getCookieBg();
		if ((sz==null) || (sz=="null")) sz = 1.4;
		el.style.fontSize = sz ? sz + 'em' : textChanger.defaultFS + 'em';
		loadStyle();
		/*var incr = document.getElementById('increase');
		incr.onclick = function(){textChanger.changeSize(1); return false;};*/
		var decr = document.getElementById('decrease');
		decr.onclick = function(){textChanger.changeSize(-1); return false;};
		/*var reset= document.getElementById('reset');
		reset.onclick = function(){textChanger.changeSize(0); return false;};*/
		}
	} ,

	changeSize: function(val) {
		var el = document.body;
		var size = el.style.fontSize.substring(0,3);
		var fSize = parseFloat(size,10);
		if (val == 1) {
			fSize += 0.11;
			if (fSize > 1.8) fSize = 0.77;
		} 
		if (val == -1) {
			fSize = 0.9;
			//if (fSize < 0.5) fSize = 0.5;
		}		
		if (val == 0) {
			fSize = textChanger.defaultFS;
		}
		el.style.fontSize = fSize + 'em';
		var bg = textChanger.getCookieBg();
		textChanger.updateCookie(fSize, bg);
		} ,
		
	updateCookie: function(vl, v2) {
		var today = new Date();
		var exp = new Date(today.getTime() + (365*24*60*60*1000)); //the cookie will expire in one year
		var fontsize = 'textChangerL=size=' + vl; // Luca
		var bgColor = 'textChangerBg=color=' + v2; // Luca
		if (bgColor=="null" || bgColor=="undefined") bgColor = "false";
			document.cookie = fontsize + '|' + bgColor + ';' +'expires=' + exp.toGMTString() + ';' +'path=/';
	} ,

	getCookie: function() { 
		var cname = 'textChangerL=size=';
		var start = document.cookie.indexOf(cname);
		var len = start + cname.length;
		if ((!start) && (cname != document.cookie.substring(0,cname.length))) {return null;}
		if (start == -1) return null;
		var end = document.cookie.indexOf("|",len);
		if (end == -1) end = document.cookie.length;
		return unescape(document.cookie.substring(len, end));
	},
	
	getCookieBg: function() { 
		var bgname = 'textChangerBg=color=';
		var start = document.cookie.indexOf(bgname);
		var len = start + bgname.length;
		if ((!start) && (bgname != document.cookie.substring(0,bgname.length))) {return null;}
		if (start == -1) return "false";
		var end = document.cookie.indexOf(";",len);
		if (end == -1) end = document.cookie.length;
		return unescape(document.cookie.substring(len, end));
	}
}
function initAutoScalingNav(o) {
	if (!o.menuId) o.menuId = "nav";
	if (!o.tag) o.tag = "a";
	if (!o.spacing) o.spacing = 0;
	if (!o.constant) o.constant = 0;
	if (!o.minPaddings) o.minPaddings = 0;
	if (!o.liHovering) o.liHovering = false;
	if (!o.sideClasses) o.sideClasses = false;
	if (!o.equalLinks) o.equalLinks = false;
	if (!o.flexible) o.flexible = false;
	var nav = document.getElementById(o.menuId);
	if(nav) {
		nav.className += " scaling-active";
		var lis = nav.getElementsByTagName("li");
		var asFl = [];
		var lisFl = [];
		var width = 0;
		for (var i=0, j=0; i<lis.length; i++) {
			if(lis[i].parentNode == nav) {
				var t = lis[i].getElementsByTagName(o.tag).item(0);
				asFl.push(t);
				asFl[j++].width = t.offsetWidth;
				lisFl.push(lis[i]);
				if(width < t.offsetWidth) width = t.offsetWidth;
			}
			if(o.liHovering) {
				lis[i].onmouseover = function() {
					this.className += " hover";
				}
				lis[i].onmouseout = function() {
					this.className = this.className.replace("hover", "");
				}
			}
		}
		var menuWidth = nav.clientWidth - asFl.length*o.spacing - o.constant;
		if(o.equalLinks && width * asFl.length < menuWidth) {
			for (var i=0; i<asFl.length; i++) {
				asFl[i].width = width;
			}
		}
		width = getItemsWidth(asFl);
		if(width < menuWidth) {
			var version = navigator.userAgent.toLowerCase();
			for (var i=0; getItemsWidth(asFl) < menuWidth; i++) {
				asFl[i].width++;
				if(!o.flexible) {
					asFl[i].style.width = asFl[i].width + "px";
				}
				if(i >= asFl.length-1) i=-1;
			}
			if(o.flexible) {
				for (var i=0; i<asFl.length; i++) {
					width = (asFl[i].width - o.spacing - o.constant/asFl.length)/menuWidth*100;
					if(i != asFl.length-1) {
						lisFl[i].style.width = width + "%";
					}
					else {
						if(navigator.appName.indexOf("Microsoft Internet Explorer") == -1 || version.indexOf("msie 8") != -1 || version.indexOf("msie 9") != -1)
							lisFl[i].style.width = width + "%";
					}
				}
			}
		}
		else if(o.minPaddings > 0) {
			for (var i=0; i<asFl.length; i++) {
				asFl[i].style.paddingLeft = o.minPaddings + "px";
				asFl[i].style.paddingRight = o.minPaddings + "px";
			}
		}
		if(o.sideClasses) {
			lisFl[0].className += " first-child";
			lisFl[0].getElementsByTagName(o.tag).item(0).className += " first-child-a";
			lisFl[lisFl.length-1].className += " last-child";
			lisFl[lisFl.length-1].getElementsByTagName(o.tag).item(0).className += " last-child-a";
		}
		nav.className += " scaling-ready";
	}
	function getItemsWidth(a) {
		var w = 0;
		for(var q=0; q<a.length; q++) {
			w += a[q].width;
		}
		return w;
	}

}

function loadStyle() {
		var allsuspects=document.getElementsByTagName("link");
		var bg = textChanger.getCookieBg();
		var flag = true;
		for (var i=allsuspects.length; i>=0; i--){
			if (allsuspects[i] && allsuspects[i].getAttribute("href")!=null && allsuspects[i].getAttribute("href").indexOf("screen-2.css")!=-1) flag = false;
		}
		if (flag && bg=="true") {
			var fileref=document.createElement("link")
			fileref.setAttribute("rel", "stylesheet")
			fileref.setAttribute("type", "text/css")
			fileref.setAttribute("href", "/system/modules/it.sito.sovracomunale/resources/css/screen-2.css")
			if (typeof fileref!="undefined") document.getElementsByTagName("head")[0].appendChild(fileref)
		}
		var sz = textChanger.getCookie();
		textChanger.updateCookie(sz, bg);
	}
	function removeStyle(){
		var allsuspects=document.getElementsByTagName("link");
		for (var i=allsuspects.length; i>=0; i--){
			if (allsuspects[i] && allsuspects[i].getAttribute("href")!=null && allsuspects[i].getAttribute("href").indexOf("screen-2.css")!=-1)
			allsuspects[i].parentNode.removeChild(allsuspects[i]);
		}
	}


	function initPage() {
	initAutoScalingNav({
		menuId:"nav",
		sideClasses:true,
		spacing:1
	});
	initBg();
	textChanger.init(); 
}
function initBg() {
	var decrease = document.getElementById("decrease");
	var reset = document.getElementById("reset");
	var changeBg = document.getElementById("change-bg");
	
	changeBg.onclick = function(){
		var sz = textChanger.getCookie();
		textChanger.updateCookie(sz, "true");
		loadStyle();
		return false;
	}
	/*decrease.onclick = function(){
		removeStyle();
		
	}*/
	reset.onclick = function(){
		var sz = textChanger.getCookie();
		textChanger.updateCookie(sz, "false");
		removeStyle();
		textChanger.changeSize(0);
		return false;
	}

}
	

if (window.addEventListener)
	window.addEventListener("load", initPage, false);
else if (window.attachEvent)
	window.attachEvent("onload", initPage);
