window.onload = function() {
	
	if (!window.XMLHttpRequest && window.ActiveXObject) {
		window.XMLHttpRequest = function() {
			return new ActiveXObject(navigator.userAgent.indexOf("MSIE 5") != -1 ? "Microsoft.XMLHTTP" : "MSXML2.XMLHTTP");
		}
	}
	
	if (typeof(preloadImages) == 'function') {
		preloadImages();		
	}
	
	var reminder = document.getElementById('reminder');
	var toggle = document.getElementById('toggle');
	
	if (reminder && toggle) {
		reminder.onclick = function() {
			document.getElementById('reminderformulier').style.zIndex = '1';
			document.getElementById('inhoudformulier').style.zIndex = '0';
			return false;
		};
	
		
		toggle.onclick = function() {
			document.getElementById('inhoudformulier').style.zIndex = '1';
			document.getElementById('reminderformulier').style.zIndex = '0';
			return false;
		};
	}
	
	var afmelden = document.getElementById('afmelden');
	
	if (afmelden) {
		afmelden.onclick = function() {
			if (!confirm('Weet je zeker dat je jezelf wilt afmelden? Al je gegevens zullen worden verwijderd en dit kan niet ongedaan worden gemaakt!')) {
				return false;
			}
		};
	}


	var textarea = document.getElementById('content');
	var smileys = document.getElementById('smileys');
	
	if (textarea && smileys) {
		
		textarea.onkeyup = textarea.onkeydown = textarea.onkeypress = function() {
			storeCaret(this);
		};

		textarea.onclick = function() {
			clearText(this);
		};

		
		var smiles  = '<img src="img/forumicons/smile.gif" onclick="AddText(\'content\', \':)\')">';
			smiles += '<img src="img/forumicons/wink.gif" onclick="AddText(\'content\', \';)\')">';
			smiles += '<img src="img/forumicons/biggrin.gif" onclick="AddText(\'content\', \':D\')">';
			smiles += '<img src="img/forumicons/blush.gif" onclick="AddText(\'content\', \':$\')">';
			smiles += '<img src="img/forumicons/cool.gif" onclick="AddText(\'content\', \'8)\')">';
			smiles += '<img src="img/forumicons/cry.gif" onclick="AddText(\'content\', \':\'(\')">';
			smiles += '<img src="img/forumicons/dead.gif" onclick="AddText(\'content\', \':x\')">';
			smiles += '<img src="img/forumicons/eek.gif" onclick="AddText(\'content\', \':o\')">';
			smiles += '<img src="img/forumicons/frown.gif" onclick="AddText(\'content\', \':(\')">';
			smiles += '<img src="img/forumicons/kiss.gif" onclick="AddText(\'content\', \':*\')">';
			smiles += '<img src="img/forumicons/laugh.gif" onclick="AddText(\'content\', \':0\')">';
			smiles += '<img src="img/forumicons/look.gif" onclick="AddText(\'content\', \':|\')">';
			smiles += '<img src="img/forumicons/mad.gif" onclick="AddText(\'content\', \':@\')">';
			smiles += '<input type="submit" name="submit" id="submit" value="toevoegen">';

		setInnerHTML(smileys, smiles);
	
	}
	
	
	var add_q = document.getElementById('add_q');
	var quest = document.getElementById('qForm');
	
	if (add_q && quest) {
		
		add_q.onclick = function() {
			var quest = document.getElementById('qForm');
			quest.action = (document.body.className == 'cms quest' ? 'quests/?action=addQuestion' : 'quest-login/toevoegen/');
		};
		
		var postal = document.getElementById('postal');
		var sex = document.getElementById('sex');
		var age = document.getElementById('age');
		var education = document.getElementById('education');
		
		var results = document.getElementById('results');
	
		window.onscroll = postal.onchange = sex.onchange = age.onchange = education.onchange = function() {

			var postal = document.getElementById('postal');
			var sex = document.getElementById('sex');
			var age = document.getElementById('age');
			var education = document.getElementById('education');
			
			if (getSelectedValues(postal).length && getSelectedValues(sex).length && getSelectedValues(age).length && getSelectedValues(education).length) {
			
				var myDoc = new XMLHttpRequest();
				var params = 'postal=' + getSelectedValues(postal) + '&sex=' + getSelectedValues(sex) + '&age=' + getSelectedValues(age) + '&education=' + getSelectedValues(education);
			
				myDoc.onreadystatechange = function() {
					document.getElementById('results').src = (document.body.className == 'cms quest' ? '../' : '') + 'img/resultaten/' + myDoc.responseText;
				}
			
				myDoc.open('POST', (document.body.className == 'cms quest' ? '../' : '') + 'img/resultaten/resultaten.php', true);
				myDoc.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				myDoc.setRequestHeader("Content-length", params.length);
				myDoc.setRequestHeader("Connection", "close");
				myDoc.send(params);
			
			}
			
			window.onscroll = null;

		};

		var q_type = document.getElementById('q_type');
	
		q_type.onchange = function() {
			
			var q_num = document.getElementById('q_num');
			var option = (this.options[this.selectedIndex].value == 'text') ? 15 : 15;
			
			q_num.options.length = 1;
			
			for (var i = 1; i <= option; i++) {
				q_num.options[i] = new Option(i, i);	
			}
			
		};

		var anchors = document.getElementsByTagName('A');
		for (var i = 0; i < anchors.length; i++) {
			
			if (anchors[i].className == 'confirm') {
				anchors[i].onclick = function() {
					if (confirm('Weet U zeker dat U deze vraag wilt verwijderen?')) {
						var quest = document.getElementById('qForm');
						quest.action = (document.body.className == 'cms quest' ? 'quests/?action=removeQuestion,id=' + this.getAttribute('id').substring(7) : 'quest-login/verwijderen/' + this.getAttribute('id').substring(7) + '/');
						quest.submit();
					}
				};
			}
	
		}

	}
	
	var container = document.getElementById('collapsableContent');

	if (document.getElementById('id')) {
		var activeDocument = document.getElementById('id').value;
	}

	if (container) {
	
		cleanWhiteSpace(container);
		
		var anchors = container.getElementsByTagName('A');
		for (var i = 0; i < anchors.length; i++) {
			if (anchors[i].className == 'toggleList') {

				var nextSibling = anchors[i].parentNode.nextSibling;
				nextSibling.style.display = 'none';
				setInnerHTML(anchors[i], '<span>[+]</span> ' + getInnerHTML(anchors[i]));

				anchors[i].onclick = function() {
					var nextSibling = this.parentNode.nextSibling;
					nextSibling.style.display = (nextSibling.style.display == 'none') ? 'block' : 'none';
					setInnerHTML(this, '<span>[' + (nextSibling.style.display == 'none' ? '+' : '-') + ']</span>' + getInnerHTML(this).substr(16));
				};
				
				var inputs = nextSibling.getElementsByTagName('INPUT');
				for (var j = 0; j < inputs.length; j++) {
					if (inputs[j].value == activeDocument) {
						nextSibling.style.display = 'block';
						setInnerHTML(anchors[i], '<span>[-]</span>' + getInnerHTML(anchors[i]).substr(16));
						inputs[j].checked = true;
					}
				}
			}
		}

	}
	
	var inputs = document.getElementsByTagName('INPUT');
	for (var i = 0; i < inputs.length; i++) {
		
		if (inputs[i].className.indexOf('confirm') != -1) {
			inputs[i].onclick = function() {
				if (!confirm('Weet je zeker dat je dit wilt doen?')) {
					return false;
				}
			};
		}

	}
	
	var image = document.getElementById('image');
	var preview_img = document.getElementById('preview_img');

	if (image && preview_img) {
		
		image.onchange = function() {
			var preview_img = document.getElementById('preview_img');
			var folder = document.getElementById('folder');
			if (folder.value == 'gifts-goodies') {
				preview_img.src = '../images/' + this.options[this.selectedIndex].value;
			}
			else {
				preview_img.src = '../img/' + folder.value + '/' + this.options[this.selectedIndex].value;
			}
		};
		
	}


	var pdf = document.getElementById('pdf');
	var textarea = document.getElementById('content');

	if (pdf && textarea) {

		textarea.onkeyup = textarea.onkeydown = textarea.onkeypress = function() {
			storeCaret(this);
		};
		
		pdf.onchange = function() {
			AddText('content', '<a href="' + this.options[this.selectedIndex].value + '">PDF document</a>')
			this.options[0].selected = true;
		};
		
	}
	
	
	var anchors = document.getElementsByTagName('A');
	for (var i = 0; i < anchors.length; i++) {
		
		if (anchors[i].className == 'detail') {
			anchors[i].onclick = function() {

				var windowWidth = screen.availWidth;
				var windowHeight = screen.availHeight;
				
				window.open(this.href, 'detailWindow', 'width=587,height=560,left=' + (windowWidth-587)/2 + ',top=' + (windowHeight-560)/2 + ', status=0');
				return false;
				
			};
		}			

	}
	
	if (document.all) {
		var buttons = getElementsByAttribute(document, 'input', 'type', 'button');
		for (var i = 0; i < buttons.length; i++) {
			if (buttons[i].parentNode.nodeName == 'A') {
				buttons[i].onclick = function() {
					if (this.className.indexOf('confirm') != -1) {
						if (!confirm('Weet je zeker dat je dit wilt doen?')) {
							return false;
						}
						else {
						document.location = this.parentNode.href;							
						}
					}
					else {
						document.location = this.parentNode.href;
					}
				};
			}
		}
	}

};


function storeCaret(text) {
	if (typeof(text.createTextRange) != "undefined") {
		text.caretPos = document.selection.createRange().duplicate();
	}
}

function clearText(field) {

	if (field.defaultValue == field.value) {
		field.value = '';
	}

}

function AddText(id, text) {

	var textarea = document.getElementById(id);

	if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange) {

		var caretPos = textarea.caretPos;

		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
		caretPos.select();

	}

	else if (typeof(textarea.selectionStart) != "undefined") {

		var begin = textarea.value.substr(0, textarea.selectionStart);
		var end = textarea.value.substr(textarea.selectionEnd);
		var scrollPos = textarea.scrollTop;

		textarea.value = begin + text + end;

		if (textarea.setSelectionRange) {
			textarea.focus();
			textarea.setSelectionRange(begin.length + text.length, begin.length + text.length);
		}

		textarea.scrollTop = scrollPos;
			
	}

	else {
		textarea.value += text;
		textarea.focus(textarea.value.length - 1);
	}

}

function getSelectedValues(element) {
	
	var selection = new Array;

	for (var i = 0; i < element.options.length; i++) {
		if (element.options[i].selected) {
			selection[selection.length] = element.options[i].value;
		}
	}
	
	return selection.join(',');

}

function setInnerHTML(element, toValue) {
	
	if (typeof(element.innerHTML) != 'undefined') {
		element.innerHTML = toValue;
	}
	else {
		var range = document.createRange();
		rangthis.selectNodeContents(element);
		rangthis.deleteContents();
		element.appendChild(rangthis.createContextualFragment(toValue));
	}
	
}

function getInnerHTML(element) {
	
	if (typeof(element.innerHTML) != 'undefined') {
		return element.innerHTML;
	}
	else {
		var returnStr = '';
		for (var i = 0; i < element.childNodes.length; i++)
			returnStr += getOuterHTML(element.childNodes[i]);

		return returnStr;
	}
	
}

function cleanWhiteSpace(element) {
	
	for (var i = 0; i < element.childNodes.length; i++) {
		var node = element.childNodes[i];
		if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) {
			node.parentNode.removeChild(node);
		}
	}
	
}

function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)") : null;
    var oCurrent;
    var oAttribute;
    for(var i=0; i<arrElements.length; i++){
        oCurrent = arrElements[i];
        oAttribute = oCurrent.getAttribute && oCurrent.getAttribute(strAttributeName);
        if(typeof oAttribute == "string" && oAttribute.length > 0){
            if(typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
                arrReturnElements[arrReturnElements.length] = oCurrent;
            }
        }
    }
    return arrReturnElements;
}