// JavaScript Document

var espace = "&nbsp;&nbsp;&nbsp;";
var tab = "";

function validation_formulaire(form){
	log_js("Formulaire '"+form.attr("des")+"' posté.");
	form.find(":disabled").each(function(){
		$(this).attr("disabled",0).attr("marqueur_disabled",1)
	});
	charger_page(form.attr("action"), 
								form.find('input#div').first().val(),
								form.serialize(),
								function(retour, statut, requete){
														log_js("'"+form.attr("name")+" : "+form.attr("des")+"' exécuté.");
													},
								function(requete, statut, error){
														log_js("'"+form.attr("name")+" : "+form.attr("des")+"' non-exécuté.");
													});
	form.find("[marqueur_disabled]").attr("disabled",1).removeAttr("marqueur_disabled");
}

function charger_page(url, div, data, fct_ok, fct_ko){
	if (div!=null) divs=div.split(RegExp("¤","g"));
	if ((data)!=null){ 
		if (typeof(data)=='string'){ 
			data=data+'&master_js=1'; 
		} else {
			data.master_js=1;
		}
	} else {
		data={master_js:1};
	}
	$.ajax({
  	type:'POST',
		url:url,
		data:(data),
		async:true,
		beforeSend: function(requete){
								tab= tab + espace;
								debut_chargement();
								log_js("Début de requête AJAX ("+url+") ...");
							}, 
		complete: function(requete, statut) {
								fin_chargement();
								$.post(sys_path+"_message.php", function(retour){
									if ($.trim(retour)!="") {	
										$('#zone_message').html($.trim(retour));
									}
									$('#log').load(sys_path+"_log.php");
								});
								//$('#log').load(sys_path+"_log.php");
								log_js("Fin de requête AJAX ("+url+") : "+requete.statusText+" / "+statut+" ...");
								tab = tab.slice(espace.length);
							},
		success: function(retour, statut, requete){
								log_js("<span class='vert'>Serveur OK</span>");
								if (div!=null) {
									retours=retour.split(RegExp(separateur,"g"));
									for (i=0; i<Math.min(divs.length, retours.length); i++) {
										$('body').find(divs[i]).each(function(){
											$(this).html(retours[i]);
											if ($(this).is(":hidden")) $(this).slideDown(200);
										});
									}
								}
								if (fct_ok!=null) fct_ok(retour, statut, requete);
							},
		error: function(requete, statut, error){
								log_js("<span class='rouge'>Serveur KO (erreur : "+requete.statusText+")</span>");
								if (div!=null) {
									for (i=0; i<divs.length; i++) {
										$('body').find(divs[i]).each(function(){
											$(this).html("Erreur de chargement.");
											if ($(this).is(":hidden")) $(this).slideDown(200);
										});
									}
								}
								if (fct_ko!=null) fct_ko(requete, statut, error);
							}
	});
}

function log_js(chaine){
	var d=new Date();
	$("#log_js").prepend(d.toLocaleString()+" : "+tab+chaine+"<br>");
}

function execute_lien(obj){
	var des=$(obj).attr("des");
	if (des==null) des="Click sur lien";
	var undiv=$(obj).attr("undiv");
	var lien=$(obj).attr("lien");
	var div=$(obj).attr("div");
	var confirmation=$(obj).attr("confirm");
	if (confirmation) {
		if (!confirm("Confirmer l'opération ?")) {
			return false;
		}
	}
	log_js("Action utilisateur ("+des+"). Cible(s) : '"+div+"'");
	
	var fct=function (){charger_page(lien,
																		div,
																		null,
																		null,
																	null);};
	if (undiv) {
		undivs=undiv.split(RegExp("¤","g"));
		for (i=0; i<undivs.length; i++) {
			$('body').find(undivs[i]).each(function(){
				replier(this, fct);
			});
		}
	} else {
		fct();
	}
}

function deplier(div){
	if ($(div).is(":hidden")) {
		log_js("Dépliage de l'encart '"+div+"'");
		$(div).slideDown(200);
	} else {
		replier(div);
	}
}

function replier(div, fct){
	if (!$(div).is(":hidden")) {
		log_js("Repliage de l'encart '"+div+"'");
		$(div).slideUp(200, fct);
	}
}

var page_chargee=false;
$(document).ready(function(){
	
	if (page_chargee) return false;
	page_chargee=true;
	
	$("form:not([redirect])").live("submit",function(e) {
			e.stopImmediatePropagation();
			validation_formulaire($(this));
			return false;
		});

	$("a[redirect]").live("click",function (e){e.stopImmediatePropagation();top.location.href=this;return false;});

	$("a[div][refermable]").live("click",function (e){
			e.stopImmediatePropagation();
			if (!$($(this).attr("div")).is(":hidden")) {
				replier($(this).attr("div")); 
			} else {
				$(this).attr("lien",String(this)); 
				execute_lien(this); 
			}
			return false;
		});

	$("a[des], a[div]:not([refermable])").live("click",function (e){ e.stopImmediatePropagation();$(this).attr("lien",String(this)); execute_lien(this); return false;});
	$("input[lien]").live("click",function (){execute_lien(String(this)); return false;});

	$("[auto_submit='1']").live("change", function(e){
		e.stopImmediatePropagation();
		$(this).parents("form").first().trigger("submit");
		$(this).blur();
	});
	
	$("form input[type=checkbox][grisage]").live("click", function (e){
		$($(this).attr("grisage")).first().find("input").each(function(index){
			$(this).attr("disabled",1-$(this).attr("disabled"));
		});
	});
	$("form input[type=checkbox] + label").live("click", function (e){
		$(this).prev('input[type=checkbox]').trigger('click');
	});
	$("form input[type=radio] + label").live("click", function (e){
		$(this).prev('input[type=radio]').trigger('click');
	});

	log_js("<span class='vert'>Chargement du script 'farmercorp.js' OK</span>");
	
});

function check_valeur(no_bloc, champ,retour){
	$("#flux[name='"+no_bloc+"'] tr[flux][bloc]:not([name^='finales'])")
		.find("td[name='"+champ+"']")
		.each(function(){
			$(this).removeClass('bold');
			if ($(this).html()==retour) $(this).addClass('bold');
		});
}
function check_xml(){
	charger_page('_verifier_format_xml.php', '#test', {xml:$('#edit_xml').val()},	null,	null);
}

function text_remplace(chaine, quoi, par)
{i=0;k=0;r="";match=false;
while(i<chaine.length){c=chaine.charAt(i);
if(c==quoi.charAt(k)){match=true;k++;} 
else{if(match==true){for(z=i-k; z<i; z++)
{r=r+chaine.charAt(z);}}
match=false;k=0;};if(match==false){r=r+c;
i++;}else{if(k==quoi.length){r=r+par;
match=false;k=0;}i++;}}return r;}


