//--------------------------------------------------------------------
//ajax_GET(page_php, method, ajax_tmp, div_cible, args, fctnAfter)
//--------------------------------------------------------------------
// Charge le contenu d'une page PHP
//--------------------------------------------------------------------
// page_php : URL de la page à charger
// method :
//		"": Ne fait rien du retour
//		eval: Evalue le retour de la page comme étant du code Javascript à exécuter
//		innerHTML: Insert le retour de la page dans le div dont l'id est contenu dans "div_cible"
//		alert: Fait un alert de tout ce que retourne la page
//		function: Envoi le retour de la page à la fonction contenu dans le champ args
// ajax_tmp : Vestige d'un ancien système. Envoyez false 
// div_cible : L'id du DIV dans lequel doit etre mis le contenu de la page dans le cas de la méthode innerhtml
// args : Les éventuels arguments à envoyer en POST à la page
// fctnAfter : Nom de la fonction a eventuellement appelé une fois le traitement terminé
//--------------------------------------------------------------------
// return : rien
//--------------------------------------------------------------------
function ajax_GET(page_php, method) {
	var div_cible = false;
	var args = false;
	var ajax_tmp = false;
	var fctnAfter = false;
	IMAGE_PATH = "images";
	
	if (arguments.length > 2) {
		ajax_tmp = arguments[2];
	}
	if (arguments.length > 3) {
		div_cible = arguments[3];
	}
	if (arguments.length > 4) {
		args = arguments[4];
	}
	if (arguments.length > 5) {
		fctnAfter = arguments[5];
	}
	
	//
	// Affiche "Veuillez patienter" dans le div cible
	//
	if (div_cible) {
		if (!document.getElementById(div_cible)) {
			//console.log("AJAX_GET: Impossible de trouver le div_cible '"+div_cible+"' lors de l'appel à la page "+page_php);
		} else {
			if (div_cible.substr(0,10)!="Recherche_" && div_cible!="Recherche_container" && div_cible!="calendar_content") {
				document.getElementById(div_cible).innerHTML = "<div id='WaitAjax'><img src='/images/load.gif' style='position:relative; padding-right:5px; top:4px;' />Veuillez patienter...</div>";
			}
		}
	}
	
	//
	// Affiche un div par dessus le site pour afficher le chargement
	//
	DisplayWait = false;
	if ((method=="eval" || method=="alert") && page_php!="/include/site/content/menu-load.php" && page_php!="/include/pages/filemanager/getImageSize.php" && page_php!="include/delete.php" && !page_php.indexOf("upload_progress")) {
		DisplayWait = true;	
		document.getElementById('BoiteDialogModale').style.display='block';
		document.getElementById('Wait').style.display='block';
	}

	var xhr_object = null;
	xhr_object = new XMLHttpRequest();
	xhr_object.onreadystatechange = function () {
		if(xhr_object.readyState == 4) {
			//
			// Test les codes de retour
			//
			if (xhr_object.status == 403) {
				eval(document.location='index.php');
			} else if (xhr_object.status != 200) {
				alert ("Erreur => "+xhr_object.status + "  | url="+page_php);
			}			
			
			if (method=="eval") {	// Evalue le retour comme étant du javascript
				if (DisplayWait) {
					document.getElementById('Wait').style.display='none';
					document.getElementById('BoiteDialogModale').style.display='none';
				}

				eval(xhr_object.responseText);
				if (fctnAfter) {
					TmpAppelFctn = fctnAfter;
					eval(TmpAppelFctn);	
				}
			} else if (method=="innerHTML") {	// Place ce qui est retourner dans le div_cible
				if (!document.getElementById(div_cible)) {
					//console.log("AJAX_GET (#2): Impossible de trouver le div_cible '"+div_cible+"' lors de l'appel à la page "+page_php);
				}

				// 
				// Evalue tous les scripts trouvés
				//
				if (!document.getElementById(div_cible)) {
					//alert('Impossible de trouver le div '+div_cible);
				}
				document.getElementById(div_cible).innerHTML = xhr_object.responseText;		
				scripts = document.getElementById(div_cible).getElementsByTagName("script");
				//alert (page_php+" : "+ scripts.length +" script trouvés");
				for (var iscript=0;iscript<scripts.length;iscript++) {
					//console.log(scripts[iscript].innerHTML);
					try {
						eval(scripts[iscript].innerHTML);
					} catch(e) {
						if (window.console && window.console.firebug) {
							console.log(e);
						}
					}
			    }
				
				if (fctnAfter) {
					TmpAppelFctn = fctnAfter;
					eval(TmpAppelFctn);
				}
				
				//
				// Traite l'affichage des champs SELECT de type EDITABLE pour donner la possiblité à l'utilisateur de modifier tout ça
				//
				ListSelect = document.getElementById(div_cible).getElementsByTagName("select");
				if (document.getElementById('what')) {
					What = document.getElementById('what').value;
				}
				for(i=0; i<ListSelect.length; i++){
					current = ListSelect[i];
					if (current.hasAttribute('class')) {
						if(current.getAttribute('class').indexOf("editable")!=-1){
							//
							// Création de 'l'image
							//
							image = document.createElement("img");
							image.setAttribute('src',"/images/admin_list.png");
							image.setAttribute('style',"position:absolute; margin-top:-3px; cursor:pointer");
							image.setAttribute('title',"Administrer cette liste");
							//
							// Si le name contient un "." c'est qu'il est écrit table.champ
							//
							field_name = current.getAttribute('name');
							image.setAttribute('onclick',"BoiteDialogue({mode:'ajax', url:'/include/pages/admin_lists.php', title:'Modifier cette liste', args:{table_name:'"+What+"', field_name: '"+field_name+"'}});");
													
							//
							// On l'ajoute juste apres le select
							//							
							current.parentNode.insertBefore(image, current.nextSibling);
						}
					}
				}
				
				//
				// Traite les éléments de type="date" pour leur donner la gueule d'un datepicker
				//
				ListDate = document.getElementById(div_cible).getElementsByTagName("input");
				for(i=0; i<ListDate.length; i++) {
					current = ListDate[i];
					if (current.hasAttribute('type')) {
						if(current.getAttribute('type')=="hn_date"){
							current.style.width = "70px";
							current.style.cursor = "pointer";
							current.type = "text";
							
							if (current.hasAttribute('title')) {
								Title = current.getAttribute('title');
							} else {
								Title = "Date";
							}
							//current.setAttribute('onclick',"Calendar_Init(-1, -1, '"+current.getAttribute('id')+"', '"+Title+"'); return false");
							current.setAttribute('onfocus',"Calendar_Init(-1, -1, '"+current.getAttribute('id')+"', '"+Title+"'); return false");
							current.setAttribute('onkeydown', "return false");
							
							
							//
							// Création de 'l'image
							//
							image = document.createElement("img");
							image.setAttribute('src',"/images/cal.png");
							image.setAttribute('style',"position:absolute; margin-left:2px; cursor:pointer");
							image.setAttribute('title',"Administrer cette liste");
							//
							// Si le name contient un "." c'est qu'il est écrit table.champ
							//
							image.setAttribute('onclick',"Calendar_Init(-1, -1, '"+current.getAttribute('id')+"', '"+Title+"'); return false");

							//
							// On l'ajoute juste apres le input
							//
							current.parentNode.insertBefore(image, current.nextSibling);

							
						}
					}
				}
				
				
				//
				// Traite les éléments de class="focus" pour leur donner le focus FIXME: Seulement Firefox3
				//
				if (!IE) {
					ListFocus = document.getElementById(div_cible).getElementsByClassName("focus");
					for(i=0; i<ListFocus.length; i++) {
						ListFocus[i].focus();
					}
				}
			} else if(method=="alert") {	// Fait un alert de ce que la page nous retourne
				if (DisplayWait) {
					document.getElementById('Wait').style.display='none';
					document.getElementById('BoiteDialogModale').style.display='none';
				}
				alert (xhr_object.responseText);
				if (fctnAfter) {
					TmpAppelFctn = fctnAfter;
					eval(TmpAppelFctn);	
				}
			} else if ((method=="") || (method==undefined)) {	//Ne fait rien que d'appeler la fonction after
				if (fctnAfter) {
					TmpAppelFctn = fctnAfter+"(xhr_object.responseText)";
					eval(TmpAppelFctn);	
				}				
				return true;
			} else if (method=="function") {		// Appel la fonction stipulées dans args
				TmpMessageBox = xhr_object.responseText;
				Tmp = args+"(TmpMessageBox)";
				eval (Tmp);				
				return true;
			} else {
				alert ("Appel de getAjax avec param&egrave;tre 'method' inconnu ( "+method+" )");
				return false;
			}
		}
	}
	
	if (!args) {		//Opera exige de passer en GET si on a aucune donnée a POSTER
		try {
			xhr_object.open("GET", page_php, true);
		} catch(e) {
			if (window.console && window.console.firebug) {
				console.log(page_php);
				console.log(e);
			}
		}
	} else {
		xhr_object.open("POST", page_php, true);
	}
	
	xhr_object.setRequestHeader("Pragma","no-cache");
	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	if (!args) {
		xhr_object.send(null);
	} else {
		xhr_object.send(args);
	}	
	return false;
}

//
// Remplacant de la fonction ajax_GET
//
	hn_framework = function(obj) {
		switch (obj.type) {
			case "smarty":
				obj.url = "/include/smarty_js.php";
				break;
			case "innerHTML":
				
				break;
			default:
				break;
		}
		
		var xhr_object = null;
		xhr_object = new XMLHttpRequest();
		xhr_object.onreadystatechange = function () {
			if(xhr_object.readyState == 3) {
				if (obj.onprogress) {
					obj.onprogress(xhr_object.responseText);
				}
			}
			if(xhr_object.readyState == 4) {
				//
				// Test les codes de retour
				//
				if (xhr_object.status == 403) {
					eval(document.location='index.php');
				} else if (xhr_object.status != 200) {
					alert("Error : "+xhr_object.status + "\nurl="+obj.url);
					return false;
				}
				
				switch (obj.type) {
					case "function":
						obj.oncomplete(xhr_object.responseText, xhr_object.status);
						break;
					case "innerHTML":
						document.getElementById(obj.div).innerHTML = xhr_object.responseText;
						scripts = document.getElementById(obj.div).getElementsByTagName("script");
						for (var iscript=0;iscript<scripts.length;iscript++) {
							try {
								eval(scripts[iscript].innerHTML);
							} catch(e) {
								if (window.console && window.console.firebug) {
									console.log(e);
								}
							}
						}
						if (obj.oncomplete) {
							obj.oncomplete(xhr_object.responseText, xhr_object.status);
						}
						break;
					case "json":
					case "smarty":
						Tmp = JSON.parse(xhr_object.responseText);
		
						if (Tmp.status && Tmp.status=="error") {
							if (obj.onerror) {
								obj.onerror(Tmp, xhr_object.status);
							} else {
								alert ("Un erreur s'est produite.\n"+Tmp.msg);
							}
						} else {
							obj.oncomplete(Tmp, xhr_object.status);
						}
						break;
				}
			}
		}
		
		if (!obj.args || obj.args.length == 0) {		//Opera exige de passer en GET si on a aucune donnée a POSTER
			xhr_object.open("GET", obj.url, true);
		} else {
			xhr_object.open("POST", obj.url, true);
		}
		
		xhr_object.setRequestHeader("Pragma","no-cache");
		xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		if (!obj.args || obj.args.length == 0) {
			xhr_object.send(null);
		} else {
			//
			// Prépare la chaine d'arguments
			//
			args = "";
			for (i in obj.args) {
				args+= i+"="+encodeURIComponent(obj.args[i])+"&";
			}
			xhr_object.send(args);
		}
		
		return false;
	}
	
function load_TPL(template, method) {
	var div_cible = false;
	var args = false;
	var effects = false;
	IMAGE_PATH = "images";
	var fctnAfter = false;
	if (arguments.length > 2) {
		div_cible = arguments[2];
	}
	if (arguments.length > 3) {
		args = arguments[3];
	}
	if (arguments.length > 4) {
		effects = arguments[4];
	}
	if (arguments.length > 5) {
		fctnAfter = arguments[5];
	}
	
	var xhr_object = null; 
	
	if(window.XMLHttpRequest) {// Firefox 
		xhr_object = new XMLHttpRequest(); 
	} else if(window.ActiveXObject) {// Internet Explorer 
		try {
			xhr_object = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
		}
	} else { // XMLHttpRequest non supporté par le navigateur 
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");  
		return false;
	}
	
	xhr_object.onreadystatechange = function () {
		if(xhr_object.readyState == 4) {
			if (effects=="fade") {
				opacity = Number(document.getElementById(div_cible).style.opacity);
				
				if(opacity <= 0 || opacity >= 1){
					
					document.xhr = xhr_object;
					load_TPL_effect("fade", method, div_cible);
					
				}else{

				}
			} else {
				if (method=="innerHTML") {
					document.getElementById(div_cible).innerHTML = xhr_object.responseText;
					scripts = document.getElementById(div_cible).getElementsByTagName("script");
			
					for(var i=0;i<scripts.length;i++){
						eval(scripts[i].innerHTML);
					}
					
					if (fctnAfter) {
						TmpAppelFctn = fctnAfter;
						eval(TmpAppelFctn);	
					}
				}
				if (method=="alert") {
					alert (xhr_object.responseText);
				}
				if (method=="eval") {
					try {
						eval (xhr_object.responseText);
					}
					catch(e) {
						console.log(e);
					}
					
					if (fctnAfter) {
						TmpAppelFctn = fctnAfter;
						eval(TmpAppelFctn);	
					}
				}
				if (method=="function") {
					TmpMessageBox = xhr_object.responseText;
					Tmp = div_cible+"(TmpMessageBox)";
					eval (Tmp);
					if (fctnAfter) {
						TmpAppelFctn = fctnAfter;
						eval(TmpAppelFctn);
					}
				}
			}
		}
	}

	args = "ajax_mode=1&tpl="+template+"&"+args;
	
	if (template.substr(0,7)=="http://") {
		if(template.substr(0,22)=="http://www.toolzik.com"){
			xhr_object.open("POST", template.replace("http://www.toolzik.com","") , true);
		}else{
			xhr_object.open("POST", template , true);
		}
	} else {
		xhr_object.open("POST", "/include_tpl.php", true);
	}
	
	xhr_object.setRequestHeader("Pragma","no-cache");
	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
	xhr_object.send(args);
	
	return false;
}
function load_TPL_effect(effect, method, div_cible) {
	
	opacity = Number(document.getElementById(div_cible).style.opacity);
	
	if (opacity>0) {
		opacity-=0.05;
		document.getElementById(div_cible).style.opacity = opacity;
		setTimeout("load_TPL_effect('"+effect+"', '"+method+"', '"+div_cible+"')",10);
	} else {
		document.getElementById(div_cible).style.opacity = 0;
		if (method=="innerHTML") {

			document.getElementById(div_cible).innerHTML = document.xhr.responseText;
			scripts = document.getElementById(div_cible).getElementsByTagName("script");
	
			for(var i=0;i<scripts.length;i++){
				eval(scripts[i].innerHTML);
			}
		}
		fade_in(div_cible);
	}

}
function fade_out(div_cible) {
	
}
function fade_in(div_cible) {
	opacity = Number(document.getElementById(div_cible).style.opacity);
	if (opacity<1) {
		//alert(opacity);
		opacity+=0.05;
		document.getElementById(div_cible).style.opacity = opacity;
		setTimeout("fade_in('"+div_cible+"')",10);
	} else {
		document.getElementById(div_cible).style.opacity = 1;
	}
	
}

