/**@author   tbee
 * -------------------- 
 * @by       tbee
 * @at       2009.04.15
 * @what     initial
 * -------------------- 
 */
 
 var errorFields;
 
function addQuestion() {
	errorFields = new Array();
	document.getElementById('question_errors').innerHtml = '';
	var refs = getRefs('refs');
	var params = 'action=add';
	
	
	// Reference check
	if (refs.length == 0){
		var refs_null = [];
		var inputs = document.getElementsByTagName("input");
		for (i=0; i < inputs.length; i++){
			if (inputs[i].name == 'refs'){
				refs_null.push(inputs[i].value)
				inputs[i].checked = true;
			}
			if(inputs[i].name == 'allRefs'){
				inputs[i].checked = true;
			}
		}
		params += '&refs[]='+refs_null.join("&refs[]=");
	}else {
		params += '&refs[]='+refs.join("&refs[]=");
	}
	
	
	// Body text check
	if(document.getElementById("question_edit").value == ''){
		errorFields[errorFields.length] = "question_edit";
	}else{
		if(isErrorText(document.getElementById("question_edit"))){
			errorFields[errorFields.length] = "question_edit";
		}else{
			params += '&body=' + encodeURIComponent(document.getElementById("question_edit").value);
		}
	}
	
	
	// Contact check
	var contact = document.getElementById("question_contacts").value;
	
	if (contact < 0){
		if (contact == -2) {
			var first = document.getElementById("contactFirstName").value;
			var last = document.getElementById("contactLastName").value;

			if(first == ''){ 
				errorFields[errorFields.length] = "contactFirstName";
			} // check if filled in
			if(last == ''){ 
				errorFields[errorFields.length] = "contactLastName";
			} // check if filled in
			
			if(first != '' && last != ''){ // if both are filled in, proceed.
				if(isErrorText(document.getElementById("contactFirstName"))){
					errorFields[errorFields.length] = "contactFirstName";
				}else{
					params += '&contactFirst=' + encodeURIComponent(document.getElementById("contactFirstName").value);
				}
				if(isErrorText(document.getElementById("contactLastName"))){
					errorFields[errorFields.length] = "contactLastName";
				}else{
					params += '&contactLast=' + encodeURIComponent(document.getElementById("contactLastName").value);
				}
			}
		} else{
			contact = null;
			
		}
	}
	params += '&contact=' + contact; 
		
		
	// Email check
	if(document.getElementById("sendMail").checked == true){
		if(document.getElementById('mailAdress').value != ''){
			if(isErrorText(document.getElementById("mailAdress"))){
				errorFields[errorFields.length] = "mailAdress";
			}else{
				params += '&mail=' + encodeURIComponent(document.getElementById('mailAdress').value);
			}
		}else{
			errorFields[errorFields.length] = "mailAdress";
		}
	}
	
	// Choose which action to perform.
	if(errorFields.length != 0){
		setErrorField(errorFields);
	}else {
		loadFile("GET", "/includes/questions.js.php", params, "text", "q_header");
	}
	
}

function addAnswer(id) {
	var params = 'action=addAnswer';
	var qid = id.split("-");

	params += '&answer=' + encodeURIComponent(document.getElementById(id).value);

	params += '&question_id=' + qid[1]; 
	loadFile("GET", "/includes/questions.js.php", params, "text", "answer_insert-" + qid[1]);
	
}

function showQuestionLang(lang) {
	var els = document.getElementById("question_flags").getElementsByTagName("img")
	for (i=0; i < els.length; i++) {
		if (els[i].className == "flagMark"){
			els[i].style.display = "none";
			
		}
	}

	document.getElementById("flagMark" + lang).style.display = "block";
	updateQuestions(lang);
	return false;
	
}

function showQuestionsFor(el) {
	var inputs = el.parentNode.parentNode.parentNode.parentNode.getElementsByTagName("input");
	for (i=0; i < inputs.length; i++){
		inputs[i].removeAttribute("checked");
		
	}
	el.parentNode.getElementsByTagName("input")[0].setAttribute("checked", "checked");
	updateQuestions();
	return false;
	
}

function updateQuestions(lang) {
	var refs = getRefs('viewRefs');
	var params = 'action=questions';
	if (refs.length > 0){
		params += '&refs[]='+refs.join("&refs[]=");
		
	}
	if (lang){
		params += '&lang=' + lang;
		
	}
	loadFile("GET", "/includes/questions.js.php", params, "text", "question_block");
	return false;
	
}
	
function clearInput() {
	el = document.getElementById("question_header");
	el.parentNode.removeChild(el);
	
}   

function answerBold(id) {
	var el = document.getElementById("newAnswer-" + id);
	replaceSelection(el, "[b]" + getSelection(el) + "[/b]");
	return false;
	
}

function answerUnderline(id) {
	var el = document.getElementById("newAnswer-" + id);
	replaceSelection(el, "[u]" + getSelection(el) + "[/u]");
	return false;
	
}

function answerTitle(id) {
	var el = document.getElementById("newAnswer-" + id);
	replaceSelection(el, "[title]" + getSelection(el) + "[/title]");
	return false;
	
}

function answerList(id) {
	var el = document.getElementById("newAnswer-" + id);
	replaceSelection(el, "[list]" + getSelection(el) + "[/list]");
	return false;
	
}

function answerListItem(id) {
	var el = document.getElementById("newAnswer-" + id);
	replaceSelection(el, "[*]" + getSelection(el));
	return false;
	
}

function answerClean(id) {
	var el = document.getElementById("newAnswer-" + id);
	replaceSelection(el, getSelection(el).replace(/\[(.*?)\]/g, ""));
	return false;
	
}

function toggleAnswers(id, el) {
	var element = document.getElementById(id);
	if (element.style.display == "none") {
		el.src = "/images/general/buttons/answers_open.png";
		//el.src = "comment_arrow_open.png";
		element.style.display = "inline";
		
	} else {
		el.src = "/images/general/buttons/answers_closed.png";
		//el.src = "comment_arrow_closed.png";
		element.style.display = "none";
		
	}
}

function answerPreview(id){
	var params = 'action=preview' + "&text=" + encodeURIComponent(document.getElementById("newAnswer-" + id).value);
	loadFile("GET", "/includes/questions.js.php", params, "text", "answer_preview-" + id);
	
}

function answerSpelling(id) {
	var params = "action=spell&lang=nl&qid=" + id + "&text=" + encodeURIComponent(document.getElementById("newAnswer-" + id).value);
	if (window.$){
		$.get("/includes/questions.js.php?" + params,
		function(data){
			$("#answer_spelling-" + id).html(data);
			
		});
	} else {
		loadFile("GET", "/includes/questions.js.php", params, "text", "answer_spelling-" + id);
		
	}
}

function answerCloseSpelling(id) {
	document.getElementById("answer_spelling-" + id).innerHTML = "";
	
}

function answerSpellReplace(el, old, correct, id) {
	var edit = document.getElementById("newAnswer-" + id);
	edit.value = edit.value.replace(old, correct);
	el.parentNode.parentNode.removeChild(el.parentNode); // ?
	
	if (document.getElementById("answer_spelling_results-" + id).getElementsByTagName("dl").length == 0)	{
		answerCloseSpelling(id);
		
	}
}

function showMailField() {
	var element = document.getElementById("sendMail");
	
	if(element.checked == true){
		document.getElementById("shMail").style.display = "block";
	}else{
		document.getElementById("shMail").style.display = "none";
	}
}

function contactAction(el, uid){
	var chosenOption = el.options[el.selectedIndex];
	document.getElementById("mailAdress").value = "";
	document.getElementById("mailAdress").disabled = false;
	
	if(chosenOption.value == -1){
		document.getElementById("newContact").style.display = "none";
	}else if(chosenOption.value == -2){
		document.getElementById("newContact").style.display = "inline";
	}else{
		document.getElementById("newContact").style.display = "none";
		var params = 'action=getContact';
		var cid = chosenOption.value;
		params += '&cid=' + cid;
		params += '&uid=' + uid;
		loadFile("GET", "/includes/questions.js.php", params, "text", "mailAddressField");
		
	}
}

function change(type){
	if(type == 1){
		document.body.style.cursor = 'pointer';
		
	}else{
		document.body.style.cursor = 'default';
		
	}
}

function setErrorField(){
	var params 						= 'action=insertError';
	
	for(i = 0 ; i < errorFields.length ; i++){
		el = document.getElementById(errorFields[i]);
		el.style.color 				= '#F00';
		el.style.backgroundColor 	= '#FFC';
		
	}
	
	loadFile("GET", "/includes/questions.js.php", params, "json",'add');
	
}

function unsetErrorField(el){
	el.style.color 				= '#000';
	el.style.backgroundColor 	= '#FFF';
	el.value 					= '';
	
}

function setErrorText(text){
	for(i = 0 ; i < errorFields.length ; i++){
		document.getElementById(errorFields[i]).value = text;
		
	}	
}

function isErrorText(el) {
	if(el.currentStyle){
		if(el.currentStyle.color == '#f00'){
			return true;
		}else{
			return false;
		}
	}
	if(document.defaultView){
		if(document.defaultView.getComputedStyle(el, '').getPropertyValue("color") == 'rgb(255, 0, 0)'){
			return true;
		}else{
			return false;
		}
	}
}
