/**
 * content = "application/x-javascript; charset=UTF-8"
 */

var _data = {

	fontSize : 62.5
}

/**
 * String
 */

if (!String.prototype.trim)
	String.prototype.trim = function() {
		return this.replace(/^\s*|\s*$/g, "");
	}

if (!String.prototype.urlEncode)
	String.prototype.urlEncode = function() {
		return escape(this).replace(/\+/g, '%2B');
	}

if (!String.prototype.urlDecode)
	String.prototype.urlDecode = function() {
		return unescape(this.replace(/\+/g, " "));
	}

/**
 * Cookie
 */

function setCookie(sName, sValue, dExpires, sPath, sDomain) {
	document.cookie = sName + '=' + escape(sValue) +
		(dExpires ? ('; expires=' + dExpires.toGMTString()) : '') +
		(sPath    ? ('; path='    + sPath                 ) : '') +
		(sDomain  ? ('; domain='  + sDomain               ) : '') + ";";
} 

function getCookie(sName) {
	if (document.cookie.length) {
		var i, av, avPairs = document.cookie.split(';');
		for (i=0; i<avPairs.length; i++) {
			av = avPairs[i].split('=', 2);
			if (av[0].trim() == sName) return unescape(av[1].trim());
		}
	} 
	return null; 
} 

function deleteCookie(sName, sValue, sPath, sDomain) {
	var value = getCookie(sName);
	if (value != null) {
		setCookie(sName, value, new Date(1970, 0, 1, 1), sPath, sDomain);
	}
}

//setCookie('uac', uac.toString(), null, '/');

function setFontSize(fontSize) {
	_data.fontSize = fontSize;
	document.body.style.fontSize = fontSize + '%';
	setCookie('fontSize', fontSize.toString(), null, '/');
}

function decFontSize() {
	if (_data.fontSize > 50) setFontSize(parseFloat(_data.fontSize) - 4);
}

function incFontSize() {
	if (_data.fontSize < 78) setFontSize(parseFloat(_data.fontSize) + 4);
}

var _fontSize_ = getCookie('fontSize');
if (_fontSize_) {
	_data.fontSize = _fontSize_;
	document.write(
		"<style type='text/css'>BODY { font-size:" + _fontSize_ + "%; } </style>"
	);
}

/**
 * Element
 */

function hasClassName(elt, className) {
	if (elt.className) {
		className = className.toLowerCase();
		var names = elt.className.toLowerCase().replace(/\s+/g," ").split(" ");
		for (var i=0; i<names.length; i++) if (names[i] == className) return true;
	}
	return false;
}

function getElementsByTagAndClassName(tagName, className, node) {
	if (!node) node = document;
	var arr = [], elts = node.getElementsByTagName(tagName);
	for (var i=0; i<elts.length; i++) {
		if (hasClassName(elts[i], className)) arr.push(elts[i]);
	}
	return arr;
}

function setInnerHTML(elt, innerHTML) {
	if (elt.outerHTML)
		elt.outerHTML = elt.outerHTML.substr(0, elt.outerHTML.indexOf(">")+1) + innerHTML + "</" + elt.tagName + ">";
	else
		elt.innerHTML = innerHTML;
}


function inpSetSelectionRange(inp, selectionStart, selectionEnd) {
	if (inp.setSelectionRange) {
		inp.focus();
		inp.setSelectionRange(selectionStart, selectionEnd);
	}
	else if (inp.createTextRange) {
		var range = inp.createTextRange();
		range.collapse(true);
		range.moveEnd('character', selectionEnd);
		range.moveStart('character', selectionStart);
		range.select();
	}
}

function inpSelectAll(inp) {
	inpSetSelectionRange(inp, 0, inp.value.length);
}

window.onload = function() {

/* // More Save:
	var elts = getElementsByTagAndClassName('div', 'codeExample', document.body);
	for (var pre, lines, i=0; i<elts.length; i++) {
		pre   = elts[i].getElementsByTagName('pre').item(0);
		lines = pre.innerHTML.split("\n");
		for (var htmlStr='', numStr='', n=0; n<lines.length; n++) {
			numStr  += lines[n].substring(0, 3) + "\n";
			htmlStr += lines[n].substring(5) + "\n";
		}

		var num = document.createElement('pre');
		num.className = 'num';
		elts[i].insertBefore(num, pre);
		setInnerHTML(num, numStr);
		pre.className = 'code';
		setInnerHTML(pre, htmlStr);
	}
*/

	/**
	 * Convert Code-Examples
	 */
	var elts = getElementsByTagAndClassName('div', 'codeExample', document.body);
	for (var pre, lines, i=0; i<elts.length; i++) {

		pre   = elts[i].getElementsByTagName('pre').item(0);
		lines = pre.innerHTML.split("\n");
		for (var codeStr='', numStr='', n=0; n<lines.length; n++) {
			numStr  += lines[n].substring(0, 3) + "\n";
			codeStr += lines[n].substring(5) + "\n";
		}

		var table = document.createElement('table');
		table.style.width = (Math.max(elts[i].scrollWidth ? elts[i].scrollWidth : pre.offsetWidth, elts[i].offsetWidth)-2) + 'px';
		table.cellPadding = '0';
		table.cellSpacing = '0';
		table.border      = '0';
		var tbody = document.createElement('tbody');
		var row   = document.createElement('tr');
		var cell  = document.createElement('td');
		cell.vAlign = 'top';
		cell.className = 'num';
		var num   = cell.appendChild(document.createElement('pre'));
		cell.appendChild(num);
		row.appendChild(cell);

		var cell  = document.createElement('td');
		cell.vAlign = 'top';
		cell.className = 'code';
		var code  = document.createElement('textarea');
		code.readOnly = true;
		code.wrap = 'off';
		code.style.height = pre.offsetHeight + 'px';
		cell.appendChild(code);
		row.appendChild(cell);

		tbody.appendChild(row);

		table.appendChild(tbody);

		setInnerHTML(num, numStr);
		setInnerHTML(code, codeStr);

		elts[i].replaceChild(table, pre);

		if (code.setSelectionRange || code.createTextRange) {
			var head = document.createElement('div');
			head.className = 'codeExampleHead';
			var span = document.createElement('span');
			span.className = 'right';
			span.innerHTML = "[Selecteer alles]";
			if (!elts[i].id) elts[i].id = "_CODEEXAMPLE_" + i;
			span.forEltId  = elts[i].id;
			span.onclick   = function() { inpSelectAll(document.getElementById(this.forEltId).getElementsByTagName('textarea')[0]); }
			head.appendChild(span);
			head.appendChild(document.createTextNode('\u00A0'));
			elts[i].parentNode.insertBefore(head, elts[i]);
		}

		elts[i].style.width = elts[i].offsetWidth + 'px';
	}

	/**
	 * Tools
	 */

	var toolBox = document.getElementById('settingsBox');
	toolBox.innerHTML = '' +
		"<img style='cursor:pointer' title='Kleinere letters' alt='Font -' onmousedown='decFontSize()' align='absbottom' src='/newimage/font_16x16_32bpp_min.png' height='16' border='0'>" +
		"<span class='label' title='Normale grootte' onmousedown='setFontSize(62.5)'>FONT</span>" + 
		"<img style='cursor:pointer' title='Grotere letters' alt='Font +' onmousedown='incFontSize()' align='absbottom' src='/newimage/font_16x16_32bpp_plus.png' height='16' border='0'>";
}
