/**
 * @author micmonay
 */
//position souris
var xM=0;
var yM=0;
//
var navigateur="NO";
var AJAXid=0;
var langue;
var Host="";
var global = this;

function validForm(formid){
	form = document.getElementById(formid);
	fields = form.getElementsByTagName('input');
	isComplete = true;
	incompletedFields = '';
	for(var i=0; i<fields.length; i++){
		field = fields[i];
		
		if((' ' + field.className + ' ').indexOf(' require ') != -1 && field.value == ''){
			isComplete = false;
			//alert($j(field).siblings('label').html());
			incompletedFields += ', ' + $j(field).siblings('label').html().replace("*", ""); 
		}
	}
	fields = form.getElementsByTagName('select');
	for(var i=0; i<fields.length; i++){
		field = fields[i];
		if((' ' + field.className + ' ').indexOf(' require ') != -1 && field.value == '-1'){
			isComplete = false;
			incompletedFields += ', ' + $j(field).siblings('label').html().replace("*", ""); 
		}
	}
	fields = form.getElementsByTagName('textarea');
	for(var i=0; i<fields.length; i++){
		field = fields[i];
		if((' ' + field.className + ' ').indexOf(' require ') != -1 && field.value == ''){
			isComplete = false;
			incompletedFields += ', ' + $j(field).siblings('label').html().replace("*", ""); 
		}
	}
	  
	if(!isComplete){
		incompletedFields = incompletedFields.substring(2);
		var errortext = $j("form .formError").val();
		alert(errortext + "\n\n" + incompletedFields);
		return false;
	}

	return true;
	
}

function put(text){
	$('debug_puts').innerHTML = $('debug_puts').innerHTML + "<br/>" + text;
}

// to be used with prototype
// this will update the content of a DIV with the result of the ajax request
function offupdateDivContent(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/cpanel/loading.gif" style="width:16px; height:16px;" />';
	
	var myAjax = new Ajax.Updater(
			divName,
			url,
			{
			method: 'post',
			parameters: parameters,
			evalScripts: true
			}
		);
	

}


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/cpanel/loading.gif" style="width:16px; height:16px;" />';
	var myAjax = new Ajax(
			url,
			{
			update: divName,
			method: 'post',
			postBody: parameters,
			evalScripts: true
			}
		).request();
	

		
}

function openDialog(p5service, parameters){
	updateDivContent('dialog_content', p5service, parameters);
	$('dialog').style.visibility = "visible";
	putInMiddle($('dialog'));
}

function cem(nom, provider, domaine, texte)
{
	// Définition d'une variable contenant l'email et ajout des différents éléments de l'adresse mail dans la variable
	liencontact = decode64(nom);
	liencontact += "@";
	liencontact += decode64(provider)+"."+decode64(domaine);
	
	// Affichage de la variable et du texte
	document.write("<a href=mailto:"+liencontact+">"+decode64(texte)+"</a>");
}

// This code was written by Tyler Akins and has been placed in the
// public domain.  It would be nice if you left this header intact.
// Base64 code from Tyler Akins -- http://rumkin.com

var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

function decode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
}


function displayProdSpecs(p5service, parameters){
	updateDivContent('dialog_content', p5service, parameters);
	$('dialog').style.visibility = "visible";
	placeProdSpecs($('dialog'));
}

function placeProdSpecs(element)
{
	    if(typeof element != 'object'){
                element = $('element');
        }
        /*
        if(window.innerWidth){
                var winW = window.innerWidth;
                var winH = window.innerHeight;
        }else if (document.body.offsetWidth){
                var winW = document.body.offsetWidth;
                var winH = document.body.offsetHeight;
        }
        
        var width = element.offsetWidth;
        var height = element.offsetHeight;
        */
        
        var coords = findPos($('anchor'))
        var top = coords[1];
        var left = coords[0] - (element.offsetWidth - $('prodSpecButton').offsetWidth);
        
       // top = Math.max(20, top);
        //left = Math.max(0, left);
 
        element.style.top = top + 'px';
        element.style.left = left + 'px';
}

function makeItDraggable(el)
{
	$(el).style.position = 'absolute';
	//new Drag.Move(el);
	placeProdSpecs($(el));
	draggable = true;
}

var draggable = false;

function unMakeItDraggable(el)
{
	draggable = false;	
	$(el).style.top = $('prodSpecsContainer').style.top;
	$(el).style.left = $('prodSpecsContainer').style.left;
	//$(el).style.position = 'relative';
	
}

function findPos(obj)
{
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	return [curleft,curtop];
}

function maxProdSpecs()
{
	
}

function minProdSpecs()
{
	
}

function hideDialog(){
	$('dialog').style.visibility = "hidden";
	$('dialog_content').innerHTML = "";
}

/**
 * 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 < 5)
		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
	
	var form = $(id_form);
	var 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(/\&/g,"\$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);
}

function createReg(st){
	return new RegExp('(^|\\s)'+st+'(\\s|$)');
}

function addString(st, el, childClass){
	if(el != null){
//		var reg = new RegExp('(^|\\s)'+st+'(\\s|$)');
		el.className = el.className.replace(createReg(st), ' ');
		el.className = el.className + " "+st+" ";
		
		if(arguments.length < 3)
			return;
		
		childs = getElementsByClass(childClass, el);
		l = childs.length;
		if(l == 0)
			return
			
		for(var i=0; i<l; i++){
			addString(st, childs[i]);
		}}
}

function stripString(st, el, childClass){
	if(el != null){
		//var reg = new RegExp('(^|\\s)'+st+'(\\s|$)');
		el.className = el.className.replace(createReg(st), ' ');
		
		if(arguments.length < 3)
			return;
		
		childs = getElementsByClass(childClass, el);
		l = childs.length;
		if(l == 0)
			return
			
		for(var i=0; i<l; i++){
			stripString(st, childs[i]);
		}
	}
}

function toggleString(st, el){
	if(el != null){
		//var reg = new RegExp('(^|\\s)'+st+'(\\s|$)');
		if (el.className.search(createReg(st))!=-1){
			stripString(st, el);
		} else {
			addString(st, el);
		}
	}
}

function getScrollTop(){
        if (window.innerHeight)
        {
                  pos = window.pageYOffset
        }
        else if (document.documentElement && document.documentElement.scrollTop)
        {
                pos = document.documentElement.scrollTop
        }
        else if (document.body)
        {
                  pos = document.body.scrollTop
        }
        return pos;
}



function putInMiddle(element){
        if(typeof element != 'object'){
                element = $('element');
        }
 
        element.style.top = getScrollTop() + 50 + 'px';
        element.style.left = 250 + 'px';
        
}

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;
		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);
	}
	/**
	 * 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)
		{
			var motChercher = '';
		}
		else
		{
			var 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="+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();
	}
}
/* 
added by ben for cusor positonning
 */
 function setSelectionRange(input, selectionStart, selectionEnd) {
  if (input.setSelectionRange) {
    input.focus();
    input.setSelectionRange(selectionStart, selectionEnd);
  }
  else if (input.createTextRange) {
    var range = input.createTextRange();
    range.collapse(true);
    range.moveEnd('character', selectionEnd);
    range.moveStart('character', selectionStart);
    range.select();
  }
}
function setCaretToEnd (input) {
  setSelectionRange(input, input.value.length, input.value.length);
}
function setCaretToBegin (input) {
  setSelectionRange(input, 0, 0);
}
function setCaretToPos (input, pos) {
  setSelectionRange(input, pos, pos);
}
function selectString (input, string) {
  var match = new RegExp(string, "i").exec(input.value);
  if (match) {
    setSelectionRange (input, match.index, match.index + match
[0].length);
  }
}
function replaceSelection (input, replaceString) {
  if (input.setSelectionRange) {
    var selectionStart = input.selectionStart;
    var selectionEnd = input.selectionEnd;
    input.value = input.value.substring(0, selectionStart)
                  + replaceString
                  + input.value.substring(selectionEnd);
    if (selectionStart != selectionEnd) // has there been a selection
      setSelectionRange(input, selectionStart, selectionStart + 
replaceString.length);
    else // set caret
      setCaretToPos(input, selectionStart + replaceString.length);
  }
  else if (document.selection) {
    var range = document.selection.createRange();
    if (range.parentElement() == input) {
      var isCollapsed = range.text == '';
      range.text = replaceString;
      if (!isCollapsed)  { // there has been a selection
        //it appears range.select() should select the newly 
        //inserted text but that fails with IE
        range.moveStart('character', -replaceString.length);
        range.select();
      }
    }
  }
}
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)
	{
		s = $(idContener).scrollTop;
		if(!this.selectionActive(idContener))
		{
			var textRemplace = prompt(generalText['info'][0],'');
			if(textRemplace==undefined)
			{
				return false;
			}
		}
		this.changeSelect('[b]','[/b]',idContener,textRemplace);
		$(idContener).scrollTop = s;
	}
	this.italic = function(idContener)
	{
		s = $(idContener).scrollTop;
		if(!this.selectionActive(idContener))
		{
			var textRemplace = prompt(generalText['info'][4],'');
			if(textRemplace==undefined)
			{
				return false;
			}
		}
		this.changeSelect('[i]','[/i]',idContener,textRemplace);
		$(idContener).scrollTop = s;
	}
	this.lien = function(idContener)
	{
		s = $(idContener).scrollTop;
		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);
		$(idContener).scrollTop = s;
	}
	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();
		}
	}
}

ObjBbcode = new bbcode();

/**
 * 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();

ObjCalendrier = new calendrier();
document.onmousemove = curseur_position;

function str_strip_special_chars(chaine)
{
	chaine = chaine.replace(/[àáâãäå]/g,"a");
	chaine = chaine.replace(/[ÀÁÂÃÄÅ]/g,"a");
	chaine = chaine.replace(/[ÒÓÔÕÖØ]/g,"o");
	chaine = chaine.replace(/[òóôõöø]/g,"o");
	chaine = chaine.replace(/[ÈÉÊË]/g,"e");
	chaine = chaine.replace(/[èéêë]/g,"e");
	chaine = chaine.replace(/[ÌÍÎÏ]/g,"i");
	chaine = chaine.replace(/[ìíîï]/g,"i");
	chaine = chaine.replace(/[ÙÚÛÜ]/g,"u");
	chaine = chaine.replace(/[ùúûü]/g,"u");
	chaine = chaine.replace(/[ÿ]/g,"y");
	chaine = chaine.replace(/[Ñ]/g,"n");
	chaine = chaine.replace(/[ñ]/g,"n");
	chaine = chaine.replace(/[Ç]/g,"c");
	chaine = chaine.replace(/[ç]/g,"c");
	chaine = chaine.replace(/[ =¨\*^`"%()'!£§°<>\+\.\?\\/;,\$&]/g,"_");
	
  return chaine.toLowerCase();
}


var autoFillAlias = true;

function fillAlias(s)
{
	if($('alias') != null)
	{
		if(autoFillAlias)
		{
			s =  str_strip_special_chars(s);
			$('alias').value = s;
		}
		$('autoFill').checked = autoFillAlias;
	}
}

function toggleAutoFill()
{
	if($('alias') != null)
	{
		if($('alias').value.length > 0)
		{
			autoFillAlias = false;
			$('autoFill').checked = false;
		}
		else if ($('alias').value.length == 0)
		{
			autoFillAlias = true;
			$('autoFill').checked = true;
		}
	}
}

function toggleAutoFill2(bool)
{
	autoFillAlias = bool;
}