/*
		resize script voor CME
		v2.0, met computedStyle etc.
		deze versie slaat op wat de origineel computed style is van een fontsize
		en op basis daarvan resized hij
		
*/


if (typeof document.attachEvent!='undefined'){ 
		window.attachEvent('onload',initFontSize); 
} else { 
		window.addEventListener('load',initFontSize,false); 
} 

var resizeElement = null;					
var _sizeOffset = 0;
var _cancelFontSize = false;
var _iterations = 0;

/*
	initialiseert het resize element (div.content)
*/

function cancelFontSize(){
	_cancelFontSize = true;
	window.status = 'cancelled fontsize script, too many recursion';
}

function initFontSize(){
	var coll = document.body.getElementsByTagName("DIV");
	// zoek eerst het content element
	for(var i=0;i<coll.length;i++){
		if(coll.item(i).className == "webcontent"){
			 resizeElement = coll.item(i);
			 break;
		}
	}
	//recurseContent(resizeElement, true);				/* sla de originele fontsize op */
	_sizeOffset = _getCookie("sizeOffset");
	if(_sizeOffset == null) _sizeOffset = 0;
	fontsize(0, null, true);											/* init maar 1x */
}

/*
	resize scripts aangeroepen door de knopjes
	enlarge geeft het aantal % dat er vergroot/verkleind moet worden
	reset is als men in het midden klikt.
*/
function fontsize(enlarge, reset, init){
	_cancelFontSize = false;
	_iterations = 0;
	// eerst de nieuwe _sizeOffset bepalen
	if(reset != null){
		_sizeOffset = 0;
	} 
	else {
		if(enlarge == null) enlarge = 0;
		_sizeOffset = parseInt(_sizeOffset) + parseInt(enlarge);	/* anders concat hij de strings.. */
		if(_sizeOffset > 10) _sizeOffset = 10;
		if(_sizeOffset < 0) _sizeOffset = 0;
	}
	_setCookie("sizeOffset", _sizeOffset);
	
	recurseContent(resizeElement, init);
	return false;
}

/*
	bepaald de huidige fontsize
*/
function getFontSize(obj){
	if (obj.currentStyle) {
  	return obj.currentStyle.fontSize;
  } 
  else if (window.getComputedStyle) {
   	return document.defaultView.getComputedStyle(obj, "").getPropertyValue("font-size");
  }
  return null;
}

/*
	en deze loopt recursief door de DOM
	als de init (in het begin dus) aan is, wordt de originele fontsize opgeslagen
	dit moet een depth first recursion zijn omdat de fontsize van containers
	anders de font beinvloedt!
*/

function recurseContent(obj, init){
	if (obj == null) return 0;
	
	_iterations++;
	if(_iterations > 10000) cancelFontSize()
	if(_cancelFontSize) return false;	
	// dus eerst erin...
	try {
		if(obj.hasChildNodes()){
			for(var i=0;i<obj.childNodes.length;i++){
				if(_cancelFontSize) return false;	
				recurseContent(obj.childNodes.item(i), init);
			}
		}
	}
	catch(e){
		window.status = "fout opgetreden tijdens aanroepen resize script\n" + e + "\n" + obj;
	}
	// en dan pas zelf

	var size = null;
	try {
		if(obj.style){
			if(init){
				size = getFontSize(obj); 
				obj.setAttribute("defaultFontSize", size);									/* default op slaan bij init */
			}
			size = obj.getAttribute("defaultFontSize");										/* origneel ophalen */
			if(size != null){
				var split = size.match(/^(\d+(?:\.\d+)*)(\w+)$/);
				size = parseFloat(split[1]) + parseFloat(_sizeOffset);
				obj.style.fontSize = size + split[2];
			}
		}
	}
	catch(e){
		return false;
	}
	return false;
}



/*
	cookie functies, om de waarde's op te slaan e.d.
	om name clashes te voorkomen hebben we ze geprefixed
*/
function _getCookie(name){
	try {
		var re = new RegExp(name+"=(.+?);");
		return unescape(re.exec(document.cookie+";")[1]);	/* ; aan het eind ;-) */
	}
	catch(e){
		return null;
	}
}

/*
	cookie saven.
*/
function _setCookie(name, value){ 
	document.cookie = name + "=" + escape(value);
}

/*
	cookie deleten
*/
function _deleteCookie(name){ 
	document.cookie = name + "=" + escape("") + ";expires=Fri, 31 Dec 1999 23:59:59 GMT;";
}
