//javascript

//fonction qui vas permettre de changer le contenue d'un contener


//fonction qui peremt de récupérer tous les éléments qui possède une classe particulière
//exemple dans imediamg2009/index1.fr.html fonction affiche_communication et aussi dans scoop/modele/module_slider_specialites.fr.html
function getElementsByClass(searchClass, node, tag) {
    var classElements = new Array();
    if ( node == null )
        node = document;
    if ( tag == null )
        tag = '*';
    var els = node.getElementsByTagName(tag);//on récupère tous les tag (*)
    var elsLen = els.length;//on récupère la longeur du tableau qui contient tous les tags
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
    for (i = 0, j = 0; i < elsLen; i++) {
        if ( pattern.test(els[i].className) ) {//si on trouve la classe cherché alors on l'enregistre dans le tableau de la classe
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
}

//le preg_replace mais en javascript (utilisation : preg_replace(Array('px'),Array(''),my_string))
function preg_replace (array_pattern, array_pattern_replace, my_string)  {
var new_string = String (my_string);
	for (i=0; i<array_pattern.length; i++) {
		var reg_exp= RegExp(array_pattern[i], "gi");
		var val_to_replace = array_pattern_replace[i];
		new_string = new_string.replace (reg_exp, val_to_replace);
	}
	return new_string;
}
//les fonction qui suive permette d'exécuter les script javascript charger à partir d'ajax

/***Debut chargement script javascript via ajax***/
    // SetInnerHTML Sécurisé
    function setInnerHTML(divContent, HTML) {
	if(HTML == undefined)
		HTML = '';
      divContent.innerHTML=HTML; 
      var All=divContent.getElementsByTagName("*");
      for (var i=0; i<All.length; i++) {
        All[i].id=All[i].getAttribute("id")
        All[i].name=All[i].getAttribute("name")
        //All[i].className=All[i].getAttribute("class")//probleme avec le chargement des class css dans IE
      }
      var AllScripts=divContent.getElementsByTagName("script")
      for (var i=0; i<AllScripts.length; i++) {
         var s=AllScripts[i];
         if (s.src && s.src!="") {
            // Précédement asynchrone, mis en synchrone pour éviter des problèmes de dépendances de scripts
            eval(getFileContent(s.src))
         }
         else {
            eval(s.innerHTML)
         }
      }
    }
 
    // Renvoie le texte de l'objet ActiveXObject le plus récent depuis une liste
    var pickRecentProgID = function (idList){
	    // found progID flag
        var bFound = false;
        for(var i=0; i < idList.length && !bFound; i++){
            try{
                var oDoc = new ActiveXObject(idList[i]);
                o2Store = idList[i];
                bFound = true;
            }catch (objException){
                // trap; try next progID
            };
        };
        if (!bFound)
		    throw ("Aucun ActiveXObject n'est valide sur votre ordinateur, pensez à mettre à jour votre navigateur");
        idList = null;
        return o2Store;
    }
 
    // Retourne un nouvel objet XmlHttpRequest
    var GetXmlHttpRequest_AXO=null
    var GetXmlHttpRequest=function () {
	    if (window.XMLHttpRequest) {
		    return new XMLHttpRequest()
	    }
	    else if (window.ActiveXObject) {
		    if (!GetXmlHttpRequest_AXO) {
			    GetXmlHttpRequest_AXO=pickRecentProgID(["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
		    }
		    return new ActiveXObject(GetXmlHttpRequest_AXO)
	    }
	    return false;
    }
 
    function getFileContent(url) {
 	   var Xhr=GetXmlHttpRequest();
       Xhr.open("GET",url,false);
       Xhr.send(null);
       return Xhr.responseText;
    }
/***fin chargement script javascript via ajax***/

/*
contener : l'id du contener
fichier : le fichier php d'où on tire toutes les données
donne : des donnés pour que l'ont transmete en paramètre
effet : pour donner un effet à la div (existe : fade/appear/disappear ou slidedown/slideup)//ne pas oublier d'importer scriptaculous
*/
function update_ajax(contener,fichier,donne,effet,duration){
	if(effet == undefined)
		effet = '';
	if(duration == undefined){
		duration = 1.0;
	}
	var duration_ms = duration*1000;//la durée en millisecondes
	if(contener != '')
	 var div = document.getElementById(contener);  
	 var xhr_object = null; 
	       
     if(window.XMLHttpRequest) // Firefox 
        xhr_object = new XMLHttpRequest(); 
     else if(window.ActiveXObject) // Internet Explorer 
        xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
     else { // XMLHttpRequest non supporté par le navigateur 
        alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
        return; 
     } 
	 
     xhr_object.open("POST", fichier, true); 
	     
     xhr_object.onreadystatechange = function() { 
        if(xhr_object.readyState == 4) 
		   if(xhr_object.responseText.match("&error&"))
		   		alert(xhr_object.responseText);
		   else{
			   //cas ou on veux mettre à jour une div
				if(contener != ''){
					if(effet == 'appear' || effet == 'disappear' || effet == 'fade'){
						Effect.Fade(div,{duration:duration})
						//div.innerHTML = xhr_object.responseText;
						setTimeout(function(){setInnerHTML(div,xhr_object.responseText);},duration_ms);
						setTimeout(function(){Effect.Appear(div,{duration:duration});},duration_ms);
					}
					else{
						//pas 100% opérationnel
						if(effet == 'slidedown' || effet == 'slideup' || effet == 'slide'){
							//on regarde si la div est déplié (hauteur différent de 0)
							if(div.offsetHeight == 0){
								setInnerHTML(div,xhr_object.responseText);
								Effect.SlideDown(div,{duration:duration});
							}
							else{
								Effect.SlideUp(div,{duration:duration});
								div.style.display = 'none';
								setTimeout(function(){setInnerHTML(div,xhr_object.responseText);},duration_ms);
								setTimeout(function(){Effect.SlideDown(div,{duration:duration});},duration_ms);
							}
						}
						else{//aucun effet
							setInnerHTML(div,xhr_object.responseText);
						}
					}
				}//fin contener existant
		   }
     } 
	 
	 var data = donne; 
     xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
     xhr_object.send(data); 
	
}

function update_ajax_no_effet(contener,fichier,donne,option){

	if(option == undefined)
		option = 'remplace';

	if(contener != '')
	 var div = document.getElementById(contener);  
	 var xhr_object = null; 
	       
     if(window.XMLHttpRequest) // Firefox 
        xhr_object = new XMLHttpRequest(); 
     else if(window.ActiveXObject) // Internet Explorer 
        xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
     else { // XMLHttpRequest non supporté par le navigateur 
        alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
        return; 
     } 
	 
     xhr_object.open("POST", fichier, true); 
	     
     xhr_object.onreadystatechange = function() { 
        if(xhr_object.readyState == 4) 
		   if(xhr_object.responseText.match("&error&"))
		   		alert(xhr_object.responseText);
		   else{
			   //cas ou on veux mettre à jour une div
				if(contener != ''){
					if(option == 'remplace'){
						setInnerHTML(div,xhr_object.responseText);
					}
					else{
						if(option == 'apres'){
							div.innerHTML = div.innerHTML+xhr_object.responseText;
						}
						else{
							if(option == 'avant')
								div.innerHTML = xhr_object.responseText+div.innerHTML;
						}
					}
				}//fin contener existant
		   }
     } 
	 
	 var data = donne; 
     xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
     xhr_object.send(data); 
	
}

/* fonction qui permet d'envoyer des donner à un script php pour qu'il s'exécute*/
function send_ajax(fichier,donne,method){

	 var xhr_object = null; 
	       
     if(window.XMLHttpRequest) // Firefox 
        xhr_object = new XMLHttpRequest(); 
     else if(window.ActiveXObject) // Internet Explorer 
        xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
     else { // XMLHttpRequest non supporté par le navigateur 
        alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
        return; 
     } 
	 
     xhr_object.open(method, fichier, true); 
	     
     xhr_object.onreadystatechange = function() { 
        if(xhr_object.readyState == 4) 
		   var reg1=new RegExp("[Erreur]","g");
		   if(xhr_object.responseText.match(reg1))
		   		alert(xhr_object.responseText);
     } 
	 
	 var data = donne; 
     xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
     xhr_object.send(data); 
	
}

/*fonction qui va remplir les value d'un formulaire leur id etant séparé par des | (utilisé pour la soumission de congres (soumission_congres+soumission_formulaire_congres)*/
function update_ajax_value(id,fichier,donne){
	 var xhr_object = null; 
	 
     if(window.XMLHttpRequest) // Firefox 
        xhr_object = new XMLHttpRequest(); 
     else if(window.ActiveXObject) // Internet Explorer 
        xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 
     else { // XMLHttpRequest non supporté par le navigateur 
        alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
        return; 
     } 
	 
     xhr_object.open("POST", fichier, true); 
	     
     xhr_object.onreadystatechange = function() { 
        if(xhr_object.readyState == 4) 
		   resultat = xhr_object.responseText.split("|");
		   if(resultat.length > 1)
		   		alert(xhr_object.responseText);
		   else{
		   		var result = xhr_object.responseText.split("{");
				var contener = id.split('|');
				//alert(result);
				var taille = contener.length;
				var taille_donne = result.length;
				//on vas ordonné les donné récupéré dans result
				for(var i = 0; i < taille_donne ; i++){
					tempresult = result[i].split('=');//xhr_object.responseText;
					result[tempresult[0]] = tempresult[1];
				}
				//si jamais on as le nombre de div et de donné différent on le signale
				for(var i = 0; i < taille ; i++){
					//on regarde si c'est un select ou un text
					if(document.getElementById(contener[i]) == "[object HTMLSelectElement]"){
						//on récupère la taille du select car on en a besoin pour parcourir le select pour vérifier chaque valeur et selectionner la bonne
						var taille_select = document.getElementById(contener[i]).options.length;
						
						for(var j = 0; j < taille_select ; j++){
							//si on as trouvé le bon select
							if(document.getElementById(contener[i]).options[j].value == result[contener[i]]){
								document.getElementById(contener[i]).options[j].selected = true;
								break;
							}
						}
					}
					else{
						if(result[contener[i]] == undefined)
							result[contener[i]] = '';
						document.getElementById(contener[i]).value = result[contener[i]];//xhr_object.responseText;
					}
				}
		   }
     } 
	 
	 var data = donne; 
     xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
     xhr_object.send(data);
	
}

var posX_mouse = 0;
var posY_mouse = 0;
	//pour la postiion de la souris
function move(e){
	if (!e) var e = window.event;
		 
	if (e.pageX || e.pageY){
		posX_mouse = e.pageX;
		posY_mouse = e.pageY;
	}
	else if (e.clientX || e.clientY){
		posX_mouse = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		posY_mouse = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
   }
}
document.onmousemove=move; // dès que la souris bouge, on appelle la fonction move pour mettre à jour la position de la bulle.