	
	var gIE  = window.ActiveXObject ? true : false;
	var gMOZ = window.sidebar ? true : false;
	
	function f_textarea_init(){
			
		var msg_content_btns = document.getElementById('msg_content_btns');
		var msg_content_iframe = document.getElementById('msg_content_iframe');
		var msg_content = document.getElementById('msg_content');
		
		if(msg_content_iframe == null && msg_content == null){
			setTimeout(f_textarea_init, 200);
			return false;
		}

		if(!gIE && !gMOZ){
			msg_content_btns.style.display = 'none';
			msg_content_iframe.style.display = 'none';
			msg_content.style.display = 'block';
			return false;
		}
		
		msg_content_iframe.style.display = 'block';
		msg_content.style.display = 'none';
		
		var edoc;
		
		if(gIE) edoc = window.frames['msg_content_iframe'].document;
		if(gMOZ) edoc = msg_content_iframe.contentDocument;
		
		if(edoc && edoc.designMode != 'On') { edoc.designMode = 'On'; }

		if(!edoc || !edoc.body){
			setTimeout(f_textarea_init, 200);
			return false;
		} else {
			if(edoc.body.innerHTML != msg_content.value){
				msg_content_btns.style.display = 'block';
				msg_content_iframe.style.display = 'block';
				msg_content.style.display = 'none';
				
				var el = edoc.body;
				el.style.margin = "0px";
				el.style.padding = "0px";
				el.style.fontFamily = "Verdana";
				el.style.fontSize = "11px";
				
				edoc.designMode = 'On'; 
				
				edoc.body.innerHTML = msg_content.value;
			}
		}
		return true;
	};
	
	function f_textarea_btn(action){
		
		var msg_content_iframe = document.getElementById('msg_content_iframe');
		var msg_content = document.getElementById('msg_content');
		
		var ewin;
		var edoc;
		
		if(gIE){
			ewin = window.frames['msg_content_iframe'];
			edoc = ewin.document;
		}
		if(gMOZ){
			ewin = document.getElementById('msg_content_iframe').contentWindow;
			edoc = document.getElementById('msg_content_iframe').contentDocument;
		}
		edoc.execCommand(action, false, null);
		ewin.focus();    
	};
	
	function f_textarea_content(){
		var edoc;
		if(gIE)  edoc = window.frames['msg_content_iframe'].document;
		if(gMOZ) edoc = document.getElementById('msg_content_iframe').contentDocument;
		document.getElementById('msg_content').value = edoc.body.innerHTML;
		return document.getElementById('msg_content').value;
	};
	
	function isMail(str) { // function qui valide le mail
		str = str.toLowerCase();
		var temp = str.replace(/\s/g, "")
		return (temp.match(/^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$/)) && temp.charAt(0) != "." && !(temp.match(/\.\./))
	};

	function trim(str) { 
		str.replace(/^\s*/, '').replace(/\s*$/, ''); 
		return str;
	};
	// ---
	// Verif. du code anti-spam
	var gSpam_bool;
	function f_spam(request){
		if(!request){
			document.getElementById('image_spam').value = document.getElementById('image_spam').value.toLowerCase();
			var _url = forum_path + '/spam.php?' + document.getElementById('image_spam').value;
			httpRequest("GET", _url, true, 'f_spam');
		} else {
			try{
				if(request.readyState == 4){
					if(request.status == 200){
						var resp = request.responseText;
						var func = new Function("return " + resp);
						var objt = func();
						if(objt == "1"){
							gSpam_bool = true;
							return true;
						} else {
							document.getElementById('image_string').src = document.getElementById('image_string').src;
							document.getElementById('image_spam').value = '';
							document.getElementById('image_spam').focus();
							alert("Impossible de valider le formulaire.\nLe code de l'image ne semble pas être correct.");
						}
					} else {
						// request status 503
						// si l'application est indisponible;
						// 500 si elle rencontre un bug
						alert("Erreur: " + request.status + ".\n");
					}
				}
			} catch (err) {
				alert("Erreur : " + err.message + ".\n");
			}
		}
		gSpam_bool = false;
		// ---
		return true;
	}
	// ---
	// Validation de message
	function f_submit(){
		if(!gSpam_bool){
			f_spam();
			return false;
		}
		document.getElementById('form_forum').action = window.location.href;
		f_textarea_content();
		var msg_pseudo = trim(document.getElementById('msg_pseudo').value);
		var msg_mail = trim(document.getElementById('msg_mail').value);
		var msg_title = trim(document.getElementById('msg_title').value);
		var msg_content = trim(document.getElementById('msg_content').value);
		var image_spam = trim(document.getElementById('image_spam').value);
		if(msg_content == "&nbsp;") msg_content = "";
		if(msg_pseudo.length && msg_title.length && msg_content.length && image_spam.length == 5){
			if(msg_mail.length){
				if(isMail(msg_mail)){
					return true;
				} else {
					alert("Impossible de valider le formulaire.\nL'adresse mail ne semble pas être correct.");
					return false;
				}
			} 
			return true;
		} else {
			alert("Impossible de valider le formulaire.\nDes données sont manquantes.");
			return false;
		}
		document.getElementById('form_forum').submit();
		return true;
	}
	// ---
	// Validation de recherche
	function s_submit(){
		document.getElementById('form_search_forum').action = window.location.href;
		//document.getElementById('form_search_forum').submit();
	}
	// ---
	// Validation de sondage
	function sdg_submit(force_bool){
		var pForm = document.getElementById('form_sondage');
		var have_voted = false;
		if(!force_bool){
			for(var z in pForm['reponse_num[]']){
				if(pForm['reponse_num[]'][z].checked){
					have_voted = true;
					break;		
				}
			}
		} else {
			for(var z in pForm['reponse_num[]']){
				pForm['reponse_num[]'][z].checked = false;
			}
		}
		if(have_voted || force_bool){
			pForm.action = window.location.href;
			pForm.submit();
			return true; 
		} else {
			alert('Vous devez d\'abord choisir une des réponses proposées !');
			return false;
		}
	}
	// ---