// to be used with prototype
// this will update the content of a DIV with the result of the ajax request
function updateDivContent(divName, p5service, parameters){
	if(arguments.length < 3){
		parameters = '';
	}
	
	parameters = "platformServices="+p5service + "&" + parameters;
	
	url = Host + "/index.php?id="+AJAXid+"&ajaxRequet=true";
	
	$(divName).innerHTML = '<img src="/assets/images/platform5/loading.gif" style="width:16px; height:16px;" />';
	
	var myAjax = new Ajax.Updater(
			divName,
			url,
			{
			method: 'post',
			parameters: parameters,
			evalScripts: true
			}
		);
	

}


/**
 * fonction générale permettant de soumettre un formulaire au moyen d'un onclick
 * en passant tous les champs input = à leur valeur selon la méthode POST ou GET définie
 * dans le paramètre method.
 * @param id_Form string, indique l'id du formulaire
 * @param url string, indique l'url qui sera appelée dans l'udpate, ex: dialog_content-agenda-edit_event_form
 * @param method, string indique si le contenu du formulaire sera passé en POST ou en GET
 */
function submitForm(id_form, divName, p5service, parameters){
	var originalParameters = parameters;
	if(arguments.length < 3)
		method='post';
	var parameters = new Array(); //contient les noms des champs
	var values = new Array(); //contient les valeurs des champs
	//nous avons ainsi des couples parameters[i]=values[i]
	var pars = "";
	
	var multipleSelectFieldIds = new Array(); //contient les indices du tableau parameters qui sont des multiplesSelect
	//c'est utile pour éviter de faire un search and replace de la valeur & dans les clés d'un select multiple
	
	form = $(id_form);
	elements = form.elements;
	var j = 0;
	var require;
	for(var i=0; i<elements.length; i++){
		
//		require = false;
		require = (' ' + elements[i].className + ' ').indexOf(' require ') != -1;
	
	
		if(elements[i].type == "checkbox"){
			parameters[j] = elements[i].name;
			//alert(elements[i].checked);
			if(elements[i].checked == true)
				values[j] = "checked";
			else if(require){ // this field must be checked but is not
				alert('Not all fields filled');
				return false;
			} else 
				values[j] = "";
			j++;
				
		}
		else if(elements[i].type == "text" 
			|| elements[i].type == "select-one" 
			|| elements[i].type == "textarea"
			|| elements[i].type == "hidden"
			|| elements[i].type == "password"
			){
			if(!require || elements[i].value != ""){
				parameters[j] = elements[i].name;
				values[j] = elements[i].value;
				j++;
			} else {
				alert('Not all fields filled');
				return false;				
			}
		}
		else if (elements[i].type == "select-multiple"){
			parameters[j] = elements[i].name;
			//cette input est particulier car il y aura plusieurs
			//valeurs pour le même champ, on construit donc un tableau
			v = new Array();
			var options = elements[i].getElementsByTagName('option');
			var l = options.length;
			var n = 0;
			for(var k=0; k < l; k++){
				if(options[k].selected == true){
					v[n] = options[k].value;
					n++;
				}
			}
			if(n == 0 && require){
				alert('Not all fields filled');
				return false;				
			}
			values[j] = v;
			multipleSelectFieldIds[j] = true;
			j++;
		}
	}
	
	for(var i=0; i<parameters.length; i++){
		//attention ce code n'est pas redondant par rapport à update, car l'url encode
		//est fait sur le paramètre pars!
		if (multipleSelectFieldIds[i]===true)		
		pars = pars + parameters[i] + "=" + encodeURI(values[i]);
		else
		pars = pars + parameters[i] + "=" + encodeURI(values[i].replace("&", "\$EtCom\$").replace(/\+/,"\$plus$\$"));
		if (i!=parameters.length-1) //si c'est le dernier paramètre, on ajoute pas un & de plus
			pars = pars + "&";
	}
	//alert(url+" "+pars+" "+method);
	//update(url, pars, method);
	parameters = originalParameters + "&" + pars;
	updateDivContent(divName, p5service, parameters);
}

var searchTimeout;

function searchWhileTyping(){
	clearTimeout(searchTimeout);
	var text = $('searchInput').value;

	if(text.length == 0)
		hideSearch();

	if(text.length < 2)
		return false;
		
	searchTimeout = setTimeout(searchGO, 200);
}

function searchGO(){

	var text = $('searchInput').value;

	if(text.length == 0)
		return false;
	
	updateDivContent('searchResults', 'afficheArticle', '&action=search&searchText='+text);
	

//	submitForm("searchForm", "searchResults", "afficheArticle", "&action=search");
	showSearch();
	return false;
}

function showSearch(){
	$('searchResults').style.display = 'block';
}

function hideSearch(){
		$('searchResults').style.display = 'none';
}

var agendaSearchTimeout;

function agendaSearch(){
	clearTimeout(agendaSearchTimeout);
	var text = $('agendaSearchInput').value;

	if(text.length < 2)
		return false;
		
	agendaSearchTimeout = setTimeout(agendaSearchGO, 200);
}

function agendaSearchGO(){

	var text = $('agendaSearchInput').value;

	if(text.length < 3)
		return false;
	
	updateDivContent('display_agenda', 'afficheArticle', '&action=agendaSearch&searchText='+text);
	

//	submitForm("searchForm", "searchResults", "afficheArticle", "&action=search");
	return false;
}

var listingSearchTimeout;
var listingType;
var idArticle;

function listingSearch(){
	clearTimeout(listingSearchTimeout);
	var text = $('listingSearchInput').value;
	listingSearchTimeout = setTimeout(listingSearchGO2, 200);
}

function listingSearchGO2(){
	listingSearchGO();
}

function listingSearchGO(pageNb){
	if(arguments.length < 1){
		var pageNb = 1;
	}
	
	var text = $('listingSearchInput').value;
	if(text == 'Recherche rapide')
		text = '';
	var publicFilter = '';
	if($('listingPublicFilter')){
		publicFilter = $('listingPublicFilter').value;
	}
	var typeEventFilter = '';
	if($('listingTypeEventFilter')){
		typeEventFilter = $('listingTypeEventFilter').value;
	}
	var titleLineField = '';
	if($('listingTitleLineField')){
		titleLineField = $('listingTitleLineField').value;
	}
	updateDivContent('display_listing', 'afficheArticle', '&action=listingSearch&searchText='+text+'&type='+listingType+'&publicFilter='+publicFilter+'&idArticle='+idArticle+'&pageNb='+pageNb+'&typeEventFilter='+typeEventFilter+'&titleLineField='+titleLineField);
	
//	submitForm("searchForm", "searchResults", "afficheArticle", "&action=search");
	return false;
}



/**
 * @author micmonay
 */
//position souris
var xM=0;
var yM=0;
//
var navigateur="NO";
var AJAXid=0;
var langue;
var Host="";
var global = this;
function ObjHttpRequet()
{
	try
	{
		var xmlhttp;
		xmlhttp = new XMLHttpRequest();
		navigateur="OK";
		return xmlhttp;
	}
	catch(Error)
	{
		try
		{
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			navigateur="IE";
			return xmlhttp;
		}
		catch(Error)
		{
			try
			{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				navigateur="IE";
				return xmlhttp;
			}
			catch(Error)
			{
				navigateur="NO";
				alert("Navigateur non compatible");
				return false;
			}
		}
	}
	
}
//execute le javascript contenu dans un string et entre les balise html
function executJavaS(string)
{
	var recherche = RegExp("<script type ?= ?\"?'?text/javascript'?\"? ?>",'gi');
	var recherche2 = RegExp("</script ?> ?",'gi');
	var execute = '';
	var tableauTemp = '';
	var tableauTemp1 = '';
	var reste = '';
	var ASupTemp='';
	if(CatText.match(recherche))
	{
		tableauTemp = CatText.split(recherche);
		var i = 1;
		while(i<tableauTemp.length)
		{
			if(tableauTemp[i].match(recherche2))
			{
				tableauTemp1=tableauTemp[i].split(recherche2);
				execute+=tableauTemp1[0].replace("<!--","");
				ASupTemp = RegExp("//.*",'gi');
				execute=execute.replace(ASupTemp,"");
				ASupTemp = RegExp("\t*",'gi');
				execute=execute.replace(ASupTemp,"");
				ASupTemp = RegExp("\n*",'gi');
				execute=execute.replace(ASupTemp,"");
				ASupTemp = RegExp(";",'gi');
				execute=execute.replace(ASupTemp,";\n");
			}
			i++;
		}
		try
		{
			window.eval(execute);
 			rechercheNav=RegExp("firefox","gi");
			if(navigator.userAgent.match(rechercheNav))
			{
				return true;
			}
			var tableVariable = execute.split(";");
			for(var i=0;tableVariable.length>i;i++)
			{
				var tableVariable2 = tableVariable[i].split("=");
				var recherche = RegExp("var ","gi");
				var temp;
				if(tableVariable2[0].match(recherche))
				{
					temp = tableVariable2[0].split(" ");
					eval("window."+temp[1]+" = "+temp[1]+";");
				}
			}
			
		}
		catch(e)
		{
			alert(execute+"\n"+e.message);
		}
		return execute;
	}
}
function convImgInFrame(ObjHtml)
{
	rechercheNav=RegExp("MSIE [0-6].?[0-9]");
	if(!navigator.appVersion.match(rechercheNav))
	{
		return true;
	}
	var allImg = ObjHtml.getElementsByTagName("img");
	var TextObj = ObjHtml.innerHTML;
	var erreur;
	for(var i = 0 ;i<allImg.length;i++)
	{
		try
		{
			var ImgSrc = allImg[i].getAttribute("src");
			var ImgId = allImg[i].getAttribute("id");
			if(ImgId==''||ImgId==undefined)
			{
				ImgId="idGenerer"+Math.round(Math.random()*99999)+i;
				allImg[i].id=ImgId;
			}
			var remplace = RegExp("<img[^<>]*src ?= ?'?\"?"+ImgSrc+"\"?'?[^>]*>","gi");
			TextObj=TextObj.replace(remplace,'<iframe class="frameIE" style="height:'+document.getElementById(ImgId).height+'px;width:'+document.getElementById(ImgId).width+'px " src="'+ImgSrc+'" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" id="'+ImgId+'"></iframe>');
		}
		catch(Error)
		{
			alert(Error.message);
			var erreur=true;
		}
	}
	if(erreur===true)
	{
		//alert affichée si il y a une erreur lors de la transformation verifier que vous ayez des id est que vous respecter les normes
		alert("Des images pourraient ne pas apparaitre correctement utilisé un navigateur récent");
	}
	ObjHtml.innerHTML = TextObj;
}/*
function convImgInFrame(ObjHtml)
{
	rechercheNav=RegExp("MSIE [0-6].?[0-9]");
	if(!navigator.appVersion.match(rechercheNav))
	{
		return false;
	}
	TextObj = ObjHtml.innerHTML;
	var temp1 = RegExp("<img","i");
	var temp2 = RegExp("/?>","i");
	var tableimg = TextObj.split(temp1);
	var tableimgfinal = Array();
	var i2 = 0
	for(var i = 1 ;i<tableimg.length;i++)
	{
		try
		{
			tableTemp = tableimg[i].split(temp2);
			var textTemp=Array();
			var imgSrc = RegExp("[^<]*src ?= ?'?\"?([^\"'> ]*)\"?'?[^>]*","gi");
			//var recherche1 = RegExp("[^<]*title ?= ?'?\"?([^\"'> ]*)\"?'?[^>]*","gi");
			//var recherche2 = RegExp("[^<]*alt ?= ?'?\"?([^\"'> ]*)\"?'?[^>]*","gi");
			var imgId = RegExp("[^<]*id ?= ?'?\"?([^\"'> ]*)\"?'?[^>]*","gi");
			if(tableTemp[0].match(imgSrc))
			{
				textTemp['src'] = tableTemp[0].replace(imgSrc,"$1");
			}
			/*if(tableTemp[0].match(recherche1))
			{
				textTemp['title'] = tableTemp[0].replace(recherche1,"$1");
			}
			if(tableTemp[0].match(recherche2))
			{
				textTemp['alt'] = tableTemp[0].replace(recherche2,"$1");
			}*
			if(tableTemp[0].match(imgId))
			{
				textTemp['id'] = tableTemp[0].replace(imgId,"$1");
			}
			var remplace = RegExp("<img[^<]*src ?= ?'?\"?"+textTemp['src']+"\"?'?[^>]*>","gi");
			TextObj=TextObj.replace(remplace,'<iframe style="height:'+document.getElementById(textTemp['id']).height+'px;width:'+document.getElementById(textTemp['id']).width+'px " src="'+textTemp['src']+'" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" id="SpecialImg'+i2+'"></iframe>');
		}
		catch(Error)
		{
			var erreur=true;
		}
		//tableimgfinal[i2] = textTemp;
		//i2++;
	}
	if(erreur===true)
	{
		//alert affichée si il y a une erreur lort de la transformation verifier que vous ayez des id est que vous respecter les normes
		alert("Des images pourraient ne pas apparaitre correctement utilisé un navigateur récent");
	}
	ObjHtml.innerHTML = TextObj;
	/*for(i=0;i<tableimgfinal.length;i++)
	{
		var conteneur = document.getElementById('SpecialImg'+i);
		var image = document.createElement("img");
		image.src=tableimgfinal[i]['src'];
		image.alt=tableimgfinal[i]['alt'];
		image.title=tableimgfinal[i]['title'];
		image.id=tableimgfinal[i]['id'];
		image.onClick=function()
		{
			this.src=tableimgfinal[i]['src'];
		}
		//conteneur.innerHTML=image;
		conteneur.appendChild(image);
	}
}*/
function resize(hauteur,largeur,idObj,temp,NameObj)
{
	this.hauteur = hauteur;
	this.largeur = largeur;
	this.ObjDiv = document.getElementById(idObj);
	this.temp = temp;
	this.NameObj = NameObj;
	this.operationH = "add";
	this.operationL = "add";
	this.hauteur2 = 0;
	this.largeur2 = 0;
	this.finHauteur=false;
	this.finLargeur=false;
	this.vitesseH=4;
	this.vitesseL=44;
	if(hauteur<this.ObjDiv.style.height)
	{
		this.operationH = "sous";
	}
	if(largeur<this.ObjDiv.style.width)
	{
		this.operationL = "sous";
	}
	/**
	 * lance le redimenssionnement
	 */
	this.runModifGrandeur = function()
	{
		if((this.hauteur-this.hauteur2)<this.vitesseH)
		{
			this.ObjDiv.style.height = this.hauteur+"px";
			this.finHauteur="true";
		}
		else if(this.hauteur!=this.hauteur2)
		{
			this.ObjDiv.style.height = this.hauteur2+"px";
			this.hauteur2+=this.vitesseH;
		}
		else
		{
			this.finHauteur="true";
		}
		if((this.largeur-this.largeur2)<this.vitesseL)
		{
			this.ObjDiv.style.width = this.largeur2+"px";
			this.finLargeur="true";
		}
		else if(this.largeur!=this.largeur2)
		{
			this.ObjDiv.style.width = this.largeur2+"px";
			this.largeur2+=this.vitesseL;
		}
		else
		{
			this.finLargeur="true";
		}
		if(this.finLargeur!="true"||this.finHauteur!="true")
		{
			setTimeout(this.NameObj+".runModifGrandeur()",50);
		}
	}
}
function modifGrandeur(hauteur,largeur,idObj,temp)
{
	var ObjHTML = document.getElementById(idObj);
	var NombreChangement = temp/10;
	var operationH = "add";
	var operationL = "add";
	var hauteur2 = 0;
	var largeur2 = 0;
	if(hauteur<ObjHTML.style.height)
	{
		operationH = "sous";
	}
	if(largeur<ObjHTML.style.width)
	{
		operationL = "sous";
	}
	setTimeout(NameObj+".modifGrandeur()",10,hauteur,largeur,idObj,temp,hauteur2,largeur2);
}
/**
 * informationLoad sert a communiquer en asynchrone avec le server
 * ceci est la fonction Web 2.0
 * 
 * @param {Object} xmlhttp
 * @param {String} CatLienDif
 */
function informationLoad(xmlhttp,requet)
{
	if(navigateur=="OK" || navigateur=="IE")
	{
		xmlhttp.open("post",Host+"/index.php?id="+AJAXid+"&ajaxRequet=true",true);
		xmlhttp.setRequestHeader("Pragma","no-cache");
		xmlhttp.setRequestHeader("cache-control", "no-store");
		xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlhttp.send(requet);
	}
	else
	{
    		alert("Navigateur non compatible");
	}
}
function listePage(idListe,nbParPage,pageActuel,idObjListe,imgFm,imgFd,imgBlank)
{
	//choix du service AJAX
	this.platformServices="listeWhile";
	this.idListe=idListe;
	this.nbParPage=nbParPage;
	this.pageActuel=pageActuel;
	this.idObjListe=idObjListe;
	this.colonTri='';
	this.colonSens='';
	this.imgFm=imgFm;
	this.imgFd=imgFd;
	this.imgBlank=imgBlank;
	/**
	 * change la colonne de tri
	 *
	 * @param {NameColonne} colonne
	 */
	this.Actualise = function(colonne)
	{
		var ObjAJAX = ObjHttpRequet();
		var ObjPrincipal = this;
		var recherche = "";
		if(this.motChercher!=undefined)
		{
			recherche = "&motChercher="+this.motChercher;
		}
		ObjAJAX.onreadystatechange = function ()
		{
			var div = document.getElementById(ObjPrincipal.idObjListe);
			switch(ObjAJAX.readyState)
			{
				case 0 :
				break;
				case 1 :
				break;
				case 2 :
				div.innerHTML="Chargement ...";
				break;
				case 3 :
				break;
				case 4 :
				CatText = ObjAJAX.responseText;
				div.innerHTML = CatText;
				convImgInFrame(div);
			}
		}
		informationLoad(ObjAJAX,"platformServices="+this.platformServices+"&numPage="+this.pageActuel+"&idListe="+this.idListe+"&nbParPage="+this.nbParPage+"&colonTri="+this.colonTri+"&colonSens="+this.colonSens+recherche);
	}
	/**
	 * change de page
	 * 
	 * @param {Int} idpage
	 */
	this.pageChange = function(idpage)
	{
		
		this.pageActuel=idpage;
		this.Actualise();
	}
	/**
	 * change le nombre par page
	 * @param {Int} nbParPage
	 */
	this.nbParPageChange = function(nbParPage)
	{
		if(typeof(nbParPage)=='object')
		{
			nbParPage=nbParPage.options[nbParPage.selectedIndex].value;
		}
		this.nbParPage=nbParPage;
		this.Actualise();
	}
	/**
	 * change la colonne de tri
	 *
	 * @param {NameColonne|ObjSelect} colonne
	 * @param {IdObj|ObjImage} ObjImage
	 */
	this.changeTri = function(colonne,ObjImg)
	{
		if(typeof(colonne)=='object')
		{
			colonne=colonne.options[colonne.selectedIndex].value;
		}
		if(typeof(ObjImg)=='object')
		{
			this.ObjImg = ObjImg;
		}
		else if(ObjImg!=undefined)
		{
			this.ObjImg = document.getElementById(ObjImg);
		}
		else if(typeof(this.ObjImg)=='object')
		{
		}
		else
		{
			this.ObjImg = false;
		}
		if(colonne=='')
		{
			if(typeof(this.ObjImg)=='object')
			{
				this.ObjImg.src = this.imgBlank;
			}
		}
		if((this.colonTri==colonne||this.colonSens==''))
		{
			if(this.colonSens=='desc')
			{
				this.colonSens='asc';
				if(typeof(this.ObjImg)=='object')
				{
					this.ObjImg.src = this.imgFm;
				}
			}
			else
			{
				this.colonSens='desc';
				if(typeof(this.ObjImg)=='object')
				{
					this.ObjImg.src = this.imgFd;
				}
			}
		}
		this.colonTri=colonne;
		this.Actualise();
	}
	this.lancerRecherche = function(Objthis)
	{
		Objthis=this.tempObjthis;
		if(Objthis==undefined)
		{
			this.motChercher = '';
		}
		else
		{
			this.motChercher = Objthis.value;
		}
		this.ObjAJAXCherche = ObjHttpRequet();
		this.ObjAJAXCherche.fini=false;
		var ObjPrincipal = this;
		this.ObjAJAXCherche.onreadystatechange = function ()
		{
			var div = document.getElementById(ObjPrincipal.idObjListe);
			switch(ObjPrincipal.ObjAJAXCherche.readyState)
			{
				case 0 :
				break;
				case 1 :
				break;
				case 2 :
				div.innerHTML="Chargement ...";
				break;
				case 3 :
				break;
				case 4 :
				CatText = ObjPrincipal.ObjAJAXCherche.responseText;
				ObjPrincipal.ObjAJAXCherche.abort();
				ObjPrincipal.ObjAJAXCherche.fini=true;
				div.innerHTML = CatText;
			}
		}
		informationLoad(this.ObjAJAXCherche,"platformServices="+this.platformServices+"&numPage="+this.pageActuel+"&idListe="+this.idListe+"&nbParPage="+this.nbParPage+"&motChercher="+this.motChercher);
	}
	/**
	 * lance la recherche du mot peut etre utilisée pour rafrechir la list en ne mettan rien comme argument
	 * 
	 * @param {Object} Objthis
	 */
	this.chercherMot = function(Objthis)
	{
		this.tempObjthis=Objthis;
		if(typeof(this.timeRecherche)!=undefined)
		{
			clearTimeout(this.timeRecherche);
		}
		this.timeRecherche = setTimeout(this.idObjListe+".lancerRecherche()",500);
	}
}
//donne la position du curseur sur une variable global et executre la fonction move
function curseur_position(evenement){
	if(navigator.userAgent.indexOf('MSIE') != -1 )
	{
		try{
		xM = window.event.clientX +document.body.scrollLeft ;
		yM = window.event.clientY +document.body.scrollTop ;
		}
		catch(Error)
		{}
		
	}
	else 
	{
		xM = evenement.pageX;
		yM = evenement.pageY;
	}
}
function calendrier()
{
	//choix du service AJAX
	this.platformServices="calendrierAJAX";
	this.idObjDiv="divCalendrier";
	this.timeClose=false;
	this.afficher = function(ObjInput)
	{
		var ObjAJAX = ObjHttpRequet();
		var ObjPrincipal = this;
		this.ObjInput = ObjInput;
		ObjAJAX.onreadystatechange = function ()
		{
			var div = document.getElementById(ObjPrincipal.idObjDiv);
			switch(ObjAJAX.readyState)
			{
				case 0 :
				break;
				case 1 :
				break;
				case 2 :
				div.style.top=yM+"px";
				div.style.left=xM+"px";
				div.innerHTML="Chargement ...";
				break;
				case 3 :
				break;
				case 4 :
				CatText = ObjAJAX.responseText;
				div.innerHTML = CatText;
				div.style.visibility="visible";
			}
		}
		informationLoad(ObjAJAX,"platformServices="+this.platformServices);
	}
	this.cacher = function()
	{
		var div = document.getElementById(this.idObjDiv);
		div.style.visibility="hidden";
		this.timeClose=false;
	}
	this.change = function(mois,annee)
	{
		var ObjAJAX = ObjHttpRequet();
		var ObjPrincipal = this;
		ObjAJAX.onreadystatechange = function ()
		{
			var div = document.getElementById(ObjPrincipal.idObjDiv);
			switch(ObjAJAX.readyState)
			{
				case 0 :
				break;
				case 1 :
				break;
				case 2 :
				div.innerHTML="Chargement ...";
				break;
				case 3 :
				break;
				case 4 :
				CatText = ObjAJAX.responseText;
				div.innerHTML = CatText;
				div.style.visibility="visible";
			}
		}
		informationLoad(ObjAJAX,"platformServices="+this.platformServices+"&mois="+mois+"&annee="+annee);
	}
	this.init = function ()
	{
		if(this.timeClose!=false)
		{
			clearTimeout(this.timeClose);
		}
		this.timeClose = setTimeout("ObjCalendrier.cacher()",1000);
	}
	this.stopInit = function ()
	{
		clearTimeout(this.timeClose);
		this.timeClose=false;
	}
	this.choix = function(textAff)
	{
		this.ObjInput.value=textAff;
		this.cacher();
	}
}
function bbcode()
{
	this.selectIE='';
	this.ObjSelIE='';
	this.selectionActive = function(idText)
	{
		var ObjHtml = document.getElementById(idText);
		ObjHtml.focus();
		if (window.getSelection)
		{
			if(ObjHtml.selectionStart<ObjHtml.selectionEnd)
			{
				return true ;
			}
			return false;
		}
		else if (document.getSelection)
		{
			if(document.getSelection()!='')
			{
				return true ;
			}
			return false;
		}
		else if (document.selection)
		{
			if(this.selectIE.text!='')
			{
				return true ;
			}
			return false;
		}
		else return false;
	}
	this.gras = function(idContener)
	{
		if(!this.selectionActive(idContener))
		{
			var textRemplace = prompt(generalText['info'][0],'');
			if(textRemplace==undefined)
			{
				return false;
			}
		}
		this.changeSelect('[b]','[/b]',idContener,textRemplace);
	}
	this.lien = function(idContener)
	{
		if(!this.selectionActive(idContener))
		{
			var textRemplace = prompt(generalText['info'][1],'');
			if(textRemplace==undefined)
			{
				return false;
			}
			var lien = prompt(generalText['info'][2],"http://");
		}
		else
		{
			var lien = prompt(generalText['info'][2],"http://");
		}
		if(lien==undefined)
		{
			return false;
		}
		this.changeSelect('[a href='+lien+']','[/a]',idContener,textRemplace);
	}
	this.changeSelect = function(baliseStart,baliseStop,idText,textRemplace) 
	{
		if(textRemplace==undefined)
		{
			textRemplace=false;
		}
		var mess = document.getElementById(idText);
		//Pour Internet Explorer
		mess.focus();
		if (document.selection) 
		{
			if(textRemplace===false)
			{
				var str = this.selectIE.text;
			}
			else
			{
				var str = textRemplace;
			}
			this.selectIE.text = baliseStart + str + baliseStop;
		}
		//Pour Firefox, Netscape et consors
		//(je n'ai pas testé avec Opera)
		else if (mess.selectionStart || mess.selectionStart == "0") 
		{	
			var selLength = mess.textLength;
			var startPos = mess.selectionStart;
			var endPos = mess.selectionEnd;
			var chaine = mess.value;
			if (endPos == 1 || endPos == 2)
				endPos = selLength;
			var s1 = chaine.substring(0,startPos);
			if(textRemplace===false)
			{
				var s2 = chaine.substring(startPos, endPos)
			}
			else
			{
				var s2 = textRemplace;
			}
			var s3 = chaine.substring(endPos, selLength);
			mess.value = s1 + baliseStart + s2 + baliseStop + s3;
		} 
		else 
		{
alert("incompatible");
			//mess.value += instext;
		}
	}
	this.ieSauv = function()
	{
		if(document.selection)
		{
			ObjBbcode.selectIE=document.selection.createRange();
		}
	}
}
/**
 * Affiche un div a coter de la souris avec le text que vous avez mit dans DivText
 *
 * @param {String} DivText
 */
function DivInfo()
{
	this.NameDivUtilisee = 'DivInfo';
	this.Affiche = function(DivText)
	{
		this.DivAffichee = document.getElementById(this.NameDivUtilisee);
		if(this.DivContentBugIe!=DivText)
		{
			//j'utilise cette viriable pour tous les explorateur car sa marche mais je pourrais m'en passer si explorer n'etait plus de ce monde
			this.DivContentBugIe=DivText;
			this.DivAffichee.innerHTML=DivText;
			convImgInFrame(this.DivAffichee);
		}
		if(xM&&yM)
		{
			MouseX=xM+11;
			MouseY=yM+11;
			this.DivAffichee.style.left = MouseX+"px";
			this.DivAffichee.style.top = MouseY+"px";
		}
		this.DivAffichee.style.visibility="visible";
	}
	this.move = function()
	{
		if(xM&&yM)
		{
			MouseX=xM+11;
			MouseY=yM+11;
			this.DivAffichee.style.left = MouseX+"px";
			this.DivAffichee.style.top = MouseY+"px";
		}
	}
	this.cacher = function()
	{
		if(this.DivAffichee!=undefined)
		this.DivAffichee.style.visibility="hidden";
	}
}
ObjDivInfo = new DivInfo();
ObjBbcode = new bbcode();
ObjCalendrier = new calendrier();
document.onmousemove = curseur_position;