//////////////////////////////////////////////////////////////////////////////
//
//	FICHIER : templates/sexepsi/javascript/XMLHttpRequest.js
//	
//	FONCTIONS : gestion de l'AJAX et du rechergement partiel des pages
//
//	DATE : 23/12/09
//
//	AUTEUR : Adrien CASSAGNE (adrien-cassagne@wanadoo.fr)
//
//////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////
// VARIABLES GLOBALES                                       ///////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////

//On renseigne ici l'url du site dont il est question
var urlSite = 'http://lotus/bde_epsi/';

//On renseigne ici la page actuelle
var pageActuelle = 'page=accueil';

///////////////////////////////////////////////////////////////////////////////////////////////////////
// str_replace à l'image de la function php                 ///////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
function str_replace(a, b, str) {
    return str_replace2(str, a, b);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// str_replace placement différent du php                   ///////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
function str_replace2(SRs, SRt, SRu) {
  /*
  **  Replace a token in a string
  **    s  string to be processed
  **    t  token to be found and removed
  **    u  token to be inserted
  **  returns new String
  */
  SRRi = SRs.indexOf(SRt);
  SRRr = '';
  if (SRRi == -1) return SRs;
  SRRr += SRs.substring(0,SRRi) + SRu;
  if ( SRRi + SRt.length < SRs.length)
    SRRr += str_replace2(SRs.substring(SRRi + SRt.length, SRs.length), SRt, SRu);
  return SRRr;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Création de l'objet XMLHttpRequest spécifique à AJAX (fonctionne avec la plupart des navigateurs ///
///////////////////////////////////////////////////////////////////////////////////////////////////////
function getXMLHttpRequest() {
	var xhr = null;
	
	if (window.XMLHttpRequest || window.ActiveXObject) {
		if (window.ActiveXObject) {
			try {
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		} else {
			xhr = new XMLHttpRequest(); 
		}
	} else {
		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
		return null;
	}
	
	return xhr;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Fonction générique pour l'utilisation d'AJAX												///////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
var xhr = null;
function request(callback, name_idinner, name_param, value_param, bool_affichage_loading) {
	var xhr = getXMLHttpRequest();
	
	if (xhr && xhr.readyState != 0) {
		//alert("Attendez que la requête ait abouti avant de faire joujou");
		return;
	}
	
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
			callback(xhr.responseText, name_idinner);
			if(bool_affichage_loading){
				if(document.getElementById("loader")){
					document.getElementById("loader").style.display = "none";
				}
			}
		} else if (xhr.readyState < 4) {
			if(bool_affichage_loading){
				if(document.getElementById("loader")){
					document.getElementById("loader").style.display = "inline";
				}
			}
		}
	};
	
	xhr.open("GET", "XMLHttpRequest.php?" + name_param + "=" + value_param, true);
	xhr.send(null);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Envoi des informations au php via AJAX       											///////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
function sendInfos(urlModule, getParams) {
	var xhr = getXMLHttpRequest();
	
	if (xhr && xhr.readyState != 0) {
		//alert("Attendez que la requête ait abouti avant de faire joujou");
		return;
	}
	
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
			/*
			callback(xhr.responseText, name_idinner);
			if(bool_affichage_loading){
				if(document.getElementById("loader")){
					document.getElementById("loader").style.display = "none";
				}
			}
			*/
		} else if (xhr.readyState < 4) {
			/*
			if(bool_affichage_loading){
				//On affiche les loaders
				document.getElementById('name_idinner').innerHTML = html_code_loader(4);
			}
			*/
		}
	};
	
	xhr.open("GET", 'controller_pages.php?AJAX=1&module=' + urlModule + "&" + getParams, true);
	xhr.send(null);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Appelle un module du serveur en AJAX         											///////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
function getModule(callback, name_idinner, urlModule, getParams, bool_affichage_loading) {
	var xhr = getXMLHttpRequest();
	
	if (xhr && xhr.readyState != 0) {
		//alert("Attendez que la requête ait abouti avant de faire joujou");
		return;
	}
	
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
			callback(xhr.responseText, name_idinner);
			if(bool_affichage_loading){
				if(document.getElementById("loader")){
					document.getElementById("loader").style.display = "none";
				}
			}
		} else if (xhr.readyState < 4) {
			if(bool_affichage_loading){
				//On affiche les loaders
				document.getElementById('name_idinner').innerHTML = html_code_loader(4);
			}
		}
	};
	
	xhr.open("GET", 'controller_pages.php?AJAX=1&module=' + urlModule + "&" + getParams, true);
	xhr.send(null);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Fonction générique pour l'utilisation d'AJAX	avec timer	  								///////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
function request_timer(callback, name_idinner, name_param, value_param, time_timer, bool_affichage_loading) {
	//var xhr = new getXMLHttpRequest();
	
	var xhr = getXMLHttpRequest();
	if (xhr && xhr.readyState != 0) {
		return;
	}
	
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
			callback(xhr.responseText, name_idinner);
	
			setTimeout(function(){request_timer(callback, name_idinner, name_param, value_param, time_timer, bool_affichage_loading)}, time_timer);
			
			if(bool_affichage_loading){
				if(document.getElementById("loader")){
					document.getElementById("loader").style.display = "none";
				}
			}
		} else if (xhr.readyState < 4) {
			if(bool_affichage_loading){
				if(document.getElementById("loader")){
					document.getElementById("loader").style.display = "inline";
				}
			}
		}
	};
	
	xhr.open("GET", "XMLHttpRequest.php?" + name_param + "=" + value_param, true);
	xhr.send(null);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Insertion de donnée dans un div avec innerHTML       									///////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
function readData(sData, name_idinner) {
	if(document.getElementById(name_idinner)){
		document.getElementById(name_idinner).innerHTML = sData;
	}
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// On récupère le contenu du site provenant d'une requete AJAX              ///////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
function GetContain(text){
	var posDeb;
	var posFin;
	var balDeb = '[contain]';
	var balFin = '[/contain]';
	var selection;
	
	posDeb = text.indexOf(balDeb, 0);
	posFin = text.indexOf(balFin, 0);
	
	selection = text.substring(posDeb+(balDeb.length), posFin);

	return(selection);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// On récupère le/les mess infos du site provenant d'une requete AJAX       ///////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
function GetInfo(text){
	var posDeb;
	var posFin;
	var balDeb = '[info]';
	var balFin = '[/info]';
	var selection;
	
	posDeb = text.indexOf(balDeb, 0);
	posFin = text.indexOf(balFin, 0);
	
	selection = text.substring(posDeb+(balDeb.length), posFin);
	
	return(selection);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// On récupère le/les mess erreurs du site provenant d'une requete AJAX     ///////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
function GetErreur(text){
	var posDeb;
	var posFin;
	var balDeb = '[erreur]';
	var balFin = '[/erreur]';
	var selection;
	
	posDeb = text.indexOf(balDeb, 0);
	posFin = text.indexOf(balFin, 0);
	
	selection = text.substring(posDeb+(balDeb.length), posFin);
	
	return(selection);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// On récupère le/les mess erreurs du site provenant d'une requete AJAX     ///////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
function GetPageActuelle(text){
	var posDeb;
	var posFin;
	var balDeb = '[actualPage]';
	var balFin = '[/actualPage]';
	var selection;
	
	posDeb = text.indexOf(balDeb, 0);
	posFin = text.indexOf(balFin, 0);
	
	selection = text.substring(posDeb+(balDeb.length), posFin);
	
	return(selection);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// MESSAGE INFO ////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
function MessageInfo(info){
	var datas;
	var time=10000;
	var nbAlea=Math.round(Math.random()*10000);
	
	data = '<div id="divAlea' + nbAlea + '">';
		data += '<div class="separateurMessagehaut"></div>';
		data += '<div class="info">';
		data += info;
		data += '</div>';
	data += '</div>';
	
	readData(data, 'message');
	setTimeout(function(){readData('', 'divAlea' + nbAlea)}, time);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// MESSAGE ERREUR ////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
function MessageErreur(erreur){
	var datas;
	var time=7000;
	var nbAlea=Math.round(Math.random()*10000);
	
	data = '<div id="divAlea' + nbAlea + '">';
		data += '<div class="separateurMessagehaut"></div>';
		data += '<div class="info erreur">';
		data += erreur;
		data += '</div>';
	data += '</div>';
	
	readData(data, 'message');
	setTimeout(function(){readData('', 'divAlea' + nbAlea)}, time);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// CHARGEMENT INTERACTIF DES PAGES ////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
function charge_page(params_get, noAnim){
	var xhr = getXMLHttpRequest();
	var posInte;
	var page;
	var posDebPage;
	var posFinPage;
	var nbRub;
	var contain;
	var info;
	var erreur;
	
	posInte = params_get.indexOf('?', 0);
	params_get = params_get.substr(posInte + 1, params_get.length);
	
	posDebPage = params_get.indexOf('page=', 0);
	posFinPage = params_get.indexOf('&', 0);
	if(posFinPage == -1){
		posFinPage = params_get.length;
	}
	page = params_get.substr(posDebPage+5, posFinPage-5);
	
	//CORRESPONDANCE DES PAGES AVEC LES ID
	switch(page){
		case 'partenaires':
			nbRub = 1;
			break;
		case 'medias':
			nbRub = 2;
			break;
		case 'evenements':
			nbRub = 3;
			break;
		case 'presentation':
			nbRub = 4;
			break;
		case 'accueil':
			nbRub = 5;
			break;
		default:
			nbRub = 0;
			break;
	}

	select_button('rub' + nbRub, 5); //SELECTIONNE LE BON BOUTON EN FONCTION DE LA RUBRIQUE DEMANDE
	
	if (xhr && xhr.readyState != 0) {
		alert(xhr.readyState);
		return;
	}
	
	xhr.onreadystatechange = function() {
		if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
			contain = GetContain(xhr.responseText);
			//alert(contain);
			info = GetInfo(xhr.responseText);
			//alert(info);
			erreur = GetErreur(xhr.responseText);
			//alert(erreur);
			pageActuelle = GetPageActuelle(xhr.responseText);
			pageActuelle = str_replace('&amp;', '&', pageActuelle);
			//Ici on enlève les paramètre de connexion de l'url de la page pour eviter les confusions
			posDeb = pageActuelle.indexOf('&login', 0);
			if(posDeb != -1){
				pageActuelle = pageActuelle.substring(0, posDeb);
			}
			//alert(pageActuelle);
			
			if(info != '0'){
				MessageInfo(info);
			}
			if(erreur != '0'){
				MessageErreur(erreur);
			}
			//Instructions
			readData(contain, 'contain_contain');
			
			//Si on veut une page relative aux media on charge thickbox
			if((page == 'medias') || (page == 'redacteur')){
				tb_init('a.thickbox, area.thickbox, input.thickbox');//pass where to apply thickbox
				imgLoader = new Image();// preload image
				imgLoader.src = tb_pathToImage;
			}
			//On remet la valeur de la barre de recherche à "Rechercher..." !
			if(page != 'recherche'){
				document.getElementById('searchBar').value = 'Rechercher...';
			}
			if(page == 'redacteur'){
				tinyMCE.init({
					// General options
					mode : "exact",
					elements : "articleTexte",
					theme : "advanced",
					skin : "o2k7",
					skin_variant : "silver",
					plugins : "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
					 
					// Theme options
					theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
					theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
					theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
					theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",
					theme_advanced_toolbar_location : "top",
					theme_advanced_toolbar_align : "left",
					theme_advanced_statusbar_location : "bottom",
					theme_advanced_resizing : false,
					 
					// Example content CSS (should be your site CSS)
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					content_css : urlSite + "templates/sexepsi/css/styles_tinyMCE.css", //A MODIFIER ///////////////////////////////////////////////////////////////////////////////
					////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
					
					// Drop lists for link/image/media/template dialogs
					template_external_list_url : "js/template_list.js",
					external_link_list_url : "js/link_list.js",
					external_image_list_url : "js/image_list.js",
					media_external_list_url : "js/media_list.js",
					 
					// Replace values for the template plugin
					template_replace_values : {
						username : "Some User",
						staffid : "991234"
					}
				});
			}
			
		} else if (xhr.readyState < 4) {
			if(!noAnim){
				//On affiche les loaders
				document.getElementById('contain_contain').innerHTML = html_code_loader(4);
			}
		}
	};
	
	xhr.open("GET", "controller_pages.php?AJAX=1&" + params_get, true);
	xhr.send(null);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// LOADER AJAX                     ////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
function html_code_loader(num_loading){
	
	switch(num_loading){
		case 1:
			name_img = 'loader1.gif';
			break;
		case 2:
			name_img = 'loader2.gif';
			break;
		case 3:
			name_img = 'loader3.gif';
			break;
		case 4:
			name_img = 'loader4.gif';
			break;
		default:
			name_img = 'loader1.gif';
			break;
	}
	
	loader =  '<div id="loader">';
	loader += '	<img src="images/loadersAjax/' + name_img + '" alt="Chargement"/>';
	loader += '	<br />	';
	loader += '	<p>En chargement...</p>';
	loader += '</div>';
	
	return(loader);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Chamge aléatoirement la personne du logo tout les time miliseconde    //////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
function LogoAleaTime(tabLogos, time){
	setTimeout(function(){LogoAleaTime(tabLogos, time)}, time);
	LogoAlea(tabLogos);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Chamge aléatoirement la personne du logo    ////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////
function LogoAlea(tabLogos){
	alea = Math.random()*((tabLogos.length - 1));
	alea = Math.round(alea);
	//alert(alea);

	if(document.getElementById('header_logo')){
		document.getElementById('header_logo').style.backgroundImage = 'url("'+ tabLogos[alea] +'")';
	}
}




































