 // chemin des icons des combos(finir par /) 
var pathIcons = "/Icons/";

// remplace un obj select par un ul, avec la bonne class classSelect
function selectReplacement(obj, classSelect) 
{
	obj.className = obj.className.replace(new RegExp(" replaced\\b"), '');
    obj.className += ' replaced';
    
    //creation du ul
    var ul = document.createElement('ul');
    ul.className = 'selectReplacement';
    setParam(ul,'width',classSelect + 'px');
    ul.style.position = "absolute";
    ul.style.zIndex = 10;
    ul.id = 'ul_' + obj.id;
    
    var opts = obj.options;
    var isDisabled = obj.disabled;
    
    // recherche de l'option sélectionnée (la première si aucune)
    selectedOpt = getSelected(opts);

    // Création d'un li par option
    for (var i=0; i<opts.length; i++)
    {
        var li = document.createElement('li');
        var txt = document.createTextNode(opts[i].text);
        li.appendChild(txt);
        setParam(li,'width',(classSelect - 24) + 'px');
        li.selIndex = opts[i].index;
        li.selectID = obj.id;
        
        // Si le select n'est pas désactivé
        if (!isDisabled)
        {
	        li.onclick = function() 
	        {
	            selectMe(this, classSelect);
	        }
        }

        // Cas de l'option sélectionnée : select="select" (ou de la première option si aucune n'est sélectionnée)
        if (i == selectedOpt) 
        {
            // Si le select n'est pas desactive
            if (!isDisabled)
            {
                li.className = 'selected_' + classSelect;
                //setParam(li, 'background', "url(" + pathIcons + "bottom_" + classSelect + ".gif) bottom left no-repeat;");
	            li.onclick = function() 
	            {
	            	closeAll(classSelect);
	            	openUl(this, classSelect);
	            	//setParam(li.parentNode.firstChild,'background',"url(" + pathIcons + "bottom_first_" + classSelect + ".gif) 0 1px");
	                this.onclick = function() 
	                {
	                    selectMe(this, classSelect);
	                }
	            }
	        }
	        else 
	        {
	           li.className = 'selected_desactivated';
	           setParam(li,'background',"url(" + pathIcons + "bottom_desactivated_" + classSelect + ".gif) bottom left no-repeat;");
	        }
        }
               
        if (window.attachEvent)
		{
		    li.onmouseover = function() 
		    {
		        this.className += ' hover';
		    }
		    li.onmouseout = function()
		    {
		        this.className = this.className.replace(new RegExp(" hover\\b"), '');
		    }
		}
        ul.appendChild(li);
    } // for

    obj.parentNode.insertBefore(ul,obj);
} // selectReplacement

//remplace un obj select par un ul, avec la bonne class classSelect
function selectReplacementAction(obj, classSelect) 
{
	obj.className = obj.className.replace(new RegExp(" replaced\\b"), '');
    obj.className += ' replaced';
    
    //creation du ul
    var ul = document.createElement('ul');
    ul.className = 'selectReplacement';
    setParam(ul,'width','88px');
    ul.style.position = "relative";
    ul.style.zIndex = 10;
    ul.id = 'ul_' + obj.id;
    
    var opts = obj.options;
    
    // recherche de l'option sélectionnée (la première si aucune)
    selectedOpt = getSelected(opts);

    // Création d'un li par option
    for (var i=0; i<opts.length; i++)
    {
        var li = document.createElement('li');
        var lien = '<a href="' + opts[i].value + '">' + opts[i].text + '</a>';;
        var txt = document.createTextNode(opts[i].text);
        
        li.appendChild(txt);
        setParam(li,'width','88px');
        li.selIndex = opts[i].index;
        li.selectID = obj.id;

        li.onclick = function() 
        {
            selectMe(this, lien);
        }

        // Cas de l'option sélectionnée : select="select" (ou de la première option si aucune n'est sélectionnée)
        if (i == selectedOpt) 
        {
            li.className = 'selected_' + classSelect;
            //setParam(li, 'background', "url(" + pathIcons + "bottom_" + classSelect + ".gif) bottom left no-repeat;");
            li.onclick = function() 
            {
            	closeAll(classSelect);
            	openUl(this, classSelect);
            	//setParam(li.parentNode.firstChild,'background',"url(" + pathIcons + "bottom_first_" + classSelect + ".gif) 0 1px");
                this.onclick = function() 
                {
                    selectMe(this, classSelect);
                }
            }
        }

        ul.appendChild(li);
    } // for

    obj.parentNode.insertBefore(ul,obj);
} // selectReplacementAction

/*
 *
 */
function selectMe(obj, classSelect) 
{
	// s'il existe un select dépendant de celui-ci, on va le mettre à jour(bonnes options)
	var subUl = document.getElementById(obj.parentNode.id + '_sub'); //-> ul_id_sub
	
	if (subUl)
	{
		//classe du sub_select
		var idSelect = subUl.id.replace("ul_", ''); // -> id_sub
		var subSelect = document.getElementById(idSelect);
		var classSub = subSelect.className.replace(new RegExp(" replaced\\b"), ''); // classe du sub select
			
		//supression du ul
		//subUl.remove();
		
		//récupération du bon select
		updateBlock('div_' + idSelect.replace("_sub",""),'page.php','fichier=select&select=' + subUl.id.replace(new RegExp("ul_\\b"), '') + '&class=' + classSub + '&id=' + obj.selIndex,'get',null,1);
	}
	
    var lis = obj.parentNode.getElementsByTagName('li');
    for (var i=0; i<lis.length; i++) 
    {
    	if (lis[i] != obj) 
        {
            if (i==0)
            {
                lis[i].className = 'first';
            }
            else
            {
                lis[i].className='';
            }
            
            obj.parentNode.className = obj.parentNode.className.replace(new RegExp(" selectOpen\\b"), '');
            //setParam(obj.parentNode,'height','22px');
            lis[i].onclick = function()
            {
                selectMe(this, classSelect);
            }
        }
        else
        {
            Position.relativize(obj.parentNode);
            setVal(obj.selectID, obj.selIndex);
            obj.className='selected_' + classSelect;
            //setParam(obj.parentNode.firstChild,'background',"");
            //setParam(obj,'background',"url(" + pathIcons + "bottom_" + classSelect + ".gif) bottom left no-repeat;");
            obj.parentNode.className = obj.parentNode.className.replace(new RegExp(" selectOpen\\b"), '');
            //setParam(obj.parentNode,'height','22px');
            obj.parentNode.style.zIndex = 10;
            
            obj.onclick = function() 
            {
            	closeAll(classSelect);
            	openUl(obj, classSelect);
                obj.parentNode.firstChild.className = 'first';
                obj.onclick = function()
                {
                    selectMe(this, classSelect);
                }
            }
        }
        //mise à jour d'un champ hidden s'il existe (dans le formulaire de recherche par exemple)
		var inputHidden = document.getElementById(obj.selectID + '_selected');
		if (inputHidden)
		{
		 	// on recupere la value de l'option corrrespondante dans le select initial
		 	var selectInit = document.getElementById(obj.selectID.replace(new RegExp("ul_"), ''));
		 	var optsSelect = selectInit.options;
		 	inputHidden.value = optsSelect[obj.selIndex].value;
		}
    }

    // cas particulier du bouton plus action
	if (obj.parentNode.id == 'ul_plusAction')
	{
		var selectInit = document.getElementById('plusAction');
	 	var optsSelect = selectInit.options;
	 	var lien = optsSelect[obj.selIndex].value;
	 	if(lien != 'noAction')
		{
	 		obj.parentNode.className = '';
	 		lis[0].className = 'selected_plusAction';
	 		window.location = lien;
		}
	}
	
    // cas particulier de la liste des pseudos reserves
	if (obj.parentNode.id == 'ul_mesPseudos')
	{
		updateBlock('div_mesPseudos','page.php','fichier=module_my_tchat','post','pseudosForm');
		updateBlock('pseudoConnecte','page.php','fichier=pseudo_connecte','post','pseudosForm');
		updateBlock('affichePseudo','page.php','fichier=pseudo_reserved','post','pseudosForm');
	}
	
	// cas particulier du select de nombre de notes par pages
	if (obj.parentNode.id == 'ul_nbByPage')
	{
		updateBlock('col1Full','page.php','fichier=my_tchat_notes','post','formNotes');
	}
	
	// cas particulier des communautés
	if (obj.parentNode.id == 'ul_communaute' || obj.parentNode.id == 'ul_communaute_sub')
	{
		updateBlock('col1Full','page.php','submit=submit&fichier=salons','post','search');
	}
	
	// cas particulier des trombis
	if (obj.parentNode.id == 'ul_sexe' || obj.parentNode.id == 'ul_age')
	{
		updateBlock('col1Full','page.php','submit=submit&fichier=trombi','post','search');
	}
		
} // selectMe


/*
* recherche de l'option sélectionnée (la première si aucune)
*/
function getSelected(opts)
{
	//var opts = obj.options;
    var selectedOpt = 0;
    
    for (var i=0; i<opts.length; i++) 
    {      
        if (opts[i].selected || opts[i].className.search('selected') != -1) 
        {
            selectedOpt = i;
            break;
        } 
    }
    return selectedOpt;
} //getSelected

/*
* Fonction qui change le parametre de style de l'objet
* IE6 ne reconnait pas toujours obj.style.truc, il faut utiliser obj.truc
*/
function setParam(obj, param, valeur)
{
	try
	{
		obj.style[param] = valeur;
	} 
	catch(e)
	{
		obj[param] = valeur;
	}
	
} //setParam

function openUl(obj, classSelect)
{
	//setParam(obj,'background',"");
    obj.parentNode.className += ' selectOpen';
    setParam(obj.parentNode,'height','120px');
    obj.parentNode.style.zIndex = '20';
	//Position.absolutize(obj.parentNode);
    //setParam(obj.parentNode.firstChild,'background',"url(" + pathIcons + "bottom_first_" + classSelect + ".gif) 0 1px");
} //openUl

/*
* Ferme les select deja ouverts
*/
function closeAll(classSelect)
{
	var s = document.getElementsByTagName('ul');
	
	// on parcours tous les ul
    for (var i=0; i<s.length; i++) 
    {
 		if (s[i].className.search('selectOpen') != -1) // si ul est ouvert
 		{
 			//var classSelect = s[i].style.width.replace(new RegExp("px\\b"), '');
 			var opts = s[i].getElementsByTagName('li');
 			
 			// recherche de l'option sélectionnée (la première si aucune)
    		var selectedOpt = getSelected(opts);
    		
 		 	//opts[selectedOpt].className = 'selected';
// 		 	setParam(opts[selectedOpt],'background',"url(" + pathIcons + "bottom_" + classSelect + ".gif) bottom left no-repeat;");
 		 	opts[selectedOpt].onclick = function() 
            {
            	closeAll(classSelect);
            	openUl(opts[selectedOpt], classSelect);
            	opts[selectedOpt].onclick = function()
            	{
            		selectMe(opts[selectedOpt], classSelect, this.title);
            	}
            }
            Position.relativize(s[i]);
 		} 
 		s[i].className = s[i].className.replace(new RegExp(" selectOpen\\b"), '');
 		//setParam(s[i],'height','22px');
 		s[i].style.zIndex = '10';
 	} 
} //closeAll

function setVal(objID, selIndex) 
{
    var obj = document.getElementById(objID);
    try 
    {
    	obj.selectedIndex = parseInt(selIndex);
    }
    catch (e)
    {
    
    }
} // setVal
    
function setForm()
{
    // on cherche tous les select de la page
    var s = document.getElementsByTagName('select');
    // pour chacun, on va créér le ul correspondant
    for (var i=0; i<s.length; i++) 
    {
    	var liste = document.getElementById('ul_' + s[i].id);
    	// si le ul n'est pas deja créé on le creer
    	if (!liste)
    	{
	    	classSelect = '300'; // class par défaut
	    	// si la classe est défini, on la change (pour l'image de background de taille différente)
	 		if (s[i].className != '')
	 		{
	 			classSelect = s[i].className;
	 		}
	 		// on créé les ul
	 		selectReplacement(s[i], classSelect, '');
        }
    }
} // setForm




function setPlusListe() 
{
    var s = document.getElementById('plusActionButton');

    if (s != null){
    	s.onclick = function() 
        {
    		toggle(document.getElementById('plusActionOptions'));
        }
    }
} // setPlusListe

function toggle(obj){
	if(obj.style.display == 'none'){
		obj.style.display = 'block'
	}
	else {
		obj.style.display = 'none';
	}
}

//ouvre la popUp d'information sur le pseudo
function openInfosPseudo(event, previewInfo)
{
	var elt = Event.element(event);
	var pseudoId = elt.id;
	var left = Event.pointerX(event);
	var top = Event.pointerY(event);
	var divPopUp = document.getElementById('divPopUp');
	
    var url = 'infos_pseudo.php';
	var pars = 'pseudo=' + pseudoId;
	var target = 'divPopUp';
	
	if (previewInfo == true) // mytchat profil
	{
		//var checkVille = document.getElementById('checkVille');
		var checkNaissance = document.getElementById('checkNaissance');
		//var checkSexe = document.getElementById('checkSexe');
		//var checkAge = document.getElementById('checkAge');
		//var checkInfos = document.getElementById('checkInfos');
		var checkImages = document.getElementById('checkImages');
		
		pars = pars + '&preview=yes';
		pars = pars + '&checkVille=true';
		pars = pars + '&checkNaissance=' + checkNaissance.checked;
		pars = pars + '&checkSexe=true';
		pars = pars + '&checkAge=true';
		pars = pars + '&checkInfos=true';
		if (checkImages)
		{
			pars = pars + '&checkImages=' + checkImages.checked;
		}
	}

	var myAjax = new Ajax.Updater(target, url, {method: 'post', parameters: pars});
	
	var largMax = 970;
	var decalage = -150;
	if ( (left + 350) > largMax )
	{
		decalage = -(largMax - left);
	}
	if ( (left - 350) < 0 )
	{
		decalage = left-350;
	}

    divPopUp.style.display = 'block';
    Position.absolutize(divPopUp);
    divPopUp.style.top = top + 'px';
    divPopUp.style.left = (left + decalage) + 'px';
    divPopUp.style.width = '350px';
    divPopUp.style.height = '250px';
    divPopUp.style.zIndex = '200';

	voile(true);
} //openInfosPseudo

function executeUpdater(target,url,pars)
{
	var target = window.document.getElementById('divPopUp');
	var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars, evalScripts: true});
}

//ouvre une popUp d'information
function ouvrir(l,h,aForm,action,absi)
{
	var myForm = eval($(aForm)); // pour transmettre les donnees du formulaire
	var target = 'divPopUp';
	var divPopUp = document.getElementById('divPopUp');
	var fenetre = document;
	var moreFunction = false;

	//amis / bloquer
	if (action == 'pseudo')
	{
		var pseudo = aForm.id.replace(new RegExp("actionOnPseudo"), '');
		var ulValue = document.getElementById('actionPseudo' + pseudo);
		var urlPath = document.getElementById('urlPath');
		
		var url = 'action_on_pseudo.php';
		var pars = 'pseudo=' + pseudo + '&action=' + ulValue.selectedIndex + '&urlPath=' + urlPath.value;
	}
	// ajouter aux favoris
	else if (action == 'salon')
	{
		var salon = aForm.id.replace(new RegExp("actionOnSalon"), '');
		var urlPath = document.getElementById('urlPath');
		
		var url = 'action_on_salon.php';
		var pars = 'salon=' + salon + '&urlPath=' + urlPath.value;
	}
	// creer un salon
	else if (action == 'create')
	{
		var url = 'my_tchat_create.php';
		var pars = 'etape=5&action=valid' + '&' + Form.serialize(myForm);
	}
	// annuler un salon
	else if (action == 'cancel')
	{
		var url = 'my_tchat_create.php';
		var pars = 'etape=5&action=cancel' + '&' + Form.serialize(myForm);
	}
	// envoi une note
	else if (action == 'sendNote')
	{
		//var target = "window.opener.document.getElementById('divPopUp')";
		var target = true;
		var divPopUp = window.opener.document.getElementById('divPopUp');
		var url = 'note_send.php';
		var pars = 'submit=submit' + '&' + Form.serialize(myForm);
		fenetre = window.opener.document;
	}
	// stop coach
	else if (action == 'stopCoach')
	{
		//var target = "window.opener.document.getElementById('divPopUp')";
		var target = true;
		var divPopUp = window.opener.document.getElementById('divPopUp');
		var url = 'stop_coach.php';
		var pars = 'submit=submit' + '&' + Form.serialize(myForm);
		fenetre = window.opener.document;
	}
	// accepter une invitation
	else if (action == 'invitation')
	{
		var lscId = aForm.id.replace(new RegExp("invitationForm"), '');
		var ulValue = document.getElementById('invitation' + lscId);
		
		var invite = document.getElementById('invite' + lscId);
		
		var url = 'action_on_invitation.php';
		var pars = 'lscId=' + lscId + '&action=' + ulValue.selectedIndex + '&invite=' + invite.value;
	}
	// ne plus etre membre d'un salon
	else if (action == 'stopMember')
	{
		var lscId = aForm;
		var urlPath = document.getElementById('urlPath');
		
		var url = 'stop_member.php';
		var pars = 'lscId=' + lscId + '&urlPath=' + urlPath.value;
	}
	// check credit
	else if (action == 'credit')
	{
		var urlPath = document.getElementById('urlPath');
		
		var url = 'check_credit.php';
		var pars = 'urlPath=' + urlPath.value;
		
	}
	// afficher la clé temporaire
	/*else if (action == 'getKey')
	{
		var url = 'show_key.php';
		var pars = Form.serialize(myForm);
	}*/
	// afficher le message de chat dégradé (pseudo temp désactivés)
	/*else if (action == 'chat_degraded')
	{
		var url = 'pseudo_temporaire_degraded.php';
		var pars = '';
	}*/

	if (absi == undefined)
	{
		//absi=Math.round((screen.availHeight-h)/2);
		absi=Math.round(((screen.height-h)/2)+150);
	}
	
	var largeur=Math.round((screen.availWidth-l)/2);
	
	if (target == true)
	{
		parent.opener.setTimeout('executeUpdater("' + target + '","' + url + '","' + pars + '")',500);
	}
	else
	{
		var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars, evalScripts: true});
	}
	
	Position.absolutize(divPopUp);
    divPopUp.style.top = (absi - (h/2)) + 'px';
    divPopUp.style.left = largeur + 'px';
    divPopUp.style.width = l + 'px';
    divPopUp.style.height = h + 'px';
    divPopUp.style.zIndex = '500';
    divPopUp.style.display = 'block';
	voile(true, fenetre);
	
} //ouvrir

//bouton fermer d'un popup (confirmation, information, attention ...)
function closePopUp()
{
	var divPopUp = document.getElementById('divPopUp');
	if (divPopUp)
	{
		divPopUp.style.display = 'none';
	}
	var divPopUpLayer = document.getElementById('divPopUpLayer');
	if (divPopUpLayer)
	{
		divPopUpLayer.style.display = 'none';
		var divPopUp = document.getElementById('divPopUpLayer');
		document.getElementsByTagName('body')[0].removeChild(divPopUp);
	}

	voile(false);
} //closePopUp




// Lien actif Sprite (Alex)
function showDiv(divId, id)
{
    var targetElement;
    targetElement = document.getElementById(divId) ;

	
    if (targetElement.style.display == "none") 
	{
        targetElement.style.display = "" ;
		
	
    } else {
       targetElement.style.display = "none" ;
	   
           }
}

function hideDiv(divId, id)
{
    var targetElement;
    targetElement = document.getElementById(divId) ;

	
    if (targetElement.style.display != "none") 
	{
        targetElement.style.display = "none" ;
		
	
    } else {
       targetElement.style.display = "" ;
	   
           }
} 

function switchClass(divId) {
	var targetElement;
    targetElement = document.getElementById(divId) ;
	targetElementLink = document.getElementById(divId +'Link');
	
	var classNameShow ='listeLiensmyTA';
	var classNameHide ='listeLiensmyT';
	
	if (targetElement.className=="lienFleche1")  {
		targetElement.className="lienFlecheoblique";
		targetElementLink.className=classNameShow;
		
		
		
	} else {
		targetElement.className="lienFleche1";
		targetElementLink.className=classNameHide;
		
	}


}


//Lien actif Sprite (Alex)



//function pour afficher/cacher des element
function showElt(eltId, temp)
{
	var targetElement;
	targetElement = document.getElementById(eltId) ;
	targetElementLink = document.getElementById(eltId+'Link');
	switch (temp)
	{
		case 'voteConsulter':
			var classNameNone = 'flecheDroite'; 
			var classNameShow = 'flecheOblique';
			break;
		default:
			var classNameNone = 'lienFleche1'; 
			var classNameShow = 'lienFleche1Active';
	}
	if (targetElement.style.display == "none")
	{
		targetElement.style.display = "" ;
		targetElementLink.className=classNameShow;
		
	}
	else
	{
		targetElement.style.display = "none" ;
		targetElementLink.className=classNameNone;
	}
} //showElt

// fonction qui met a jour une seule partie de la page
function updateBlock(target,url,params,post,form,urlPath)
{
	var parametres = '';
	parametres = params;
	if (form)
	{
		parametres += '&' + Form.serialize(form);
	}
	parametres += '&display=yes';
	if (urlPath)
	{
		parametres += '&urlPath=' + urlPath;
	}
	
	try {
		var myAjax = new Ajax.Updater(
			target,
			url, 
			{
				method: post||'get', 
				parameters: parametres, 
				evalScripts: true, 
				onComplete: function(transport) {
					if (transport.status == 0 || transport.status >= 300) {
						//failure 302 ou autres ?
						//bug https://prototype.lighthouseapp.com/projects/8886/tickets/437
						window.location.href = window.location.href; 
						return;
					}
	    			/*var div = $(target);
					var result = transport.responseText.evalScripts(); 
					div.update(result[0]);*/
					afterUpdate();	
				}
				/*onFailure: function(xmlHttp)
				{
					//TODO on ne fait rien ou appeler un callback en paramètre
					alert("failure");
				},
				onException: function(xmlHttp)
				{
					//TODO on ne fait rien ou appeler un callback en paramètre
					alert("exception");
				},
				on302: function(xmlHttp)
				{
					//TODO on ne fait rien ou appeler un callback en paramètre
					alert("302");
				},*/
			}
		);
	}
	catch(e) {
		//window.open('index.php');
		return(false);
	}
}

//ouvre la galerie d'avatars
function openAvatarsWin()
{
    avatarsWin = window.open('avatars.php', 'avatarsWin', 'width=661,height=543,location=0,menubar=0,scrollbars=0,resizable=0,toolbar=0');
}

// vérifie la limite de contenu
function checkSizeContenu(elt,taille)
{
	var txtArea = document.getElementById(elt);
	if (txtArea.value.length > taille)
	{
		txtArea.value = txtArea.value.substring(0,taille+1);
		alert('Taille maximum atteinte (' + taille + ' caractères)');
		
	}
}
