//###########################################################################
//# 								scripts.js
//###########################################################################
//# DATE		VERSION		AUTEUR				OBJET
//###########################################################################
//# 17/02/2010 	1.0			EPT					Scripts de démarrage principale
//###########################################################################

//###########################################################################
//# S&clration des variables globales
//###########################################################################
var OldPageCode="";
var chargementEnCours=false;
var ajaxreturn="";

//###########################################################################
//# Création de l'object de gestion des requetes ajax
//###########################################################################
var someManagedAjax = $.manageAjax.create("response", { 
	queue: true,
	cacheResponse: false
	
});
var cachedAjax = $.manageAjax.create("cached", { 
	queue: true,
	cacheResponse: true 
	
});

//###########################################################################
//# fonction de démarrage
//###########################################################################
function chargement(idpage){
	//charge tout le nécessaire au fonctionnement de la première page
	ChargeContenu(idpage);
	//Recharge le contenu du menu de gauche
	getInfo2("TheMenu");
	//Configure les différentes boites de dialogue
	$("#dialog").dialog({resizable: false,autoOpen: false,closeOnEscape: false});
	$("#dalog").dialog({resizable: false,autoOpen: false,closeOnEscape: false});
	$("#help").dialog({resizable: false,autoOpen: false,closeOnEscape: false});
}

//###########################################################################
//# fonction Permettant de chargé tout le nécessaire au fonctionnement d'un module
//###########################################################################
//#Entrées :
//#			-pagecode 	:id de la page a charger
//#			-asynchrone :indique le mode de chargement du module
//#							valeur possible : true | false
//#			-data	 	:paramètre à passer au module à charger
//###########################################################################
function ChargeContenu(pagecode,asynchrone,data,id){
	
	id=(id == null)?"total":id;
	//Si aucune page n'est déjç en cours de chargement alors
	if (!chargementEnCours){
		//indique qu'une page est en cours de chargement
		chargementEnCours=true;
		//Supprime et ferme les éléments par défauts
		
		$("#dialog").dialog('close');
		$("#help").dialog('close');
		$(".article").remove();
		//Charge les css et les scripts javascript du module
		NomWebSvc=ChargeCssScript(pagecode);
		OldPageCode=pagecode;
		//Ajout de tous les modules à charger
		AddModule(pagecode,asynchrone,data,NomWebSvc,id);
		//Rends les modules déplaçable
		addDraggable($('.article'));
		//Si des paramètres sont à transmettre alors
		if (data!="" && data!=null){
			//Rechargé le menu de l'interface locale
			$("#dock2",top.document).remove();
			//Recharge le menu gauche
			getInfo2("TheMenu");
		}
		//Fin du chargement de la page
		chargementEnCours=false;
	}
}

//###########################################################################
//# fonction d'ajout des modules
//###########################################################################
//#Entrées :
//#			-pagecode 	:id de la page a charger
//#			-asynchrone :indique le mode de chargement du module
//#							valeur possible : true | false
//#			-data	 	:paramètre à passer au module à charger
//#			-NomWebSvc 	:Nom du module à charger
//###########################################################################
function AddModule(pagecode,asynchrone,data,NomWebSvc,id){
	//initialisation des varibles
	if (OldPageCode==""){
		OldPageCode="001";
	}
	idcontenu=(id == "total")?"TheContenu":id+"Up";
	
	//Récupération de l'objet body de la page html
	var ElBody = document.getElementById(idcontenu);
	//Récupération du code html des modules
	if (ElBody == undefined){
		var ElBody = document.getElementById("TheBody");
	}
	QuickInfo("GetModule","PAGECODE="+pagecode,true);
	tplModule=window.ajaxreturn;
	
	//Création du squelette des modules
	$("#"+id).remove();
	var TheDiv=document.createElement("div");
	TheDiv.id=id;
	//TheDiv.innerHTML=tplModule;
	
	ElBody.appendChild(TheDiv);
	$('#'+id).html(tplModule);
	tplModule="";
	var AllModule=NomWebSvc.split("::");
	//Pour chaque module faire
	if(AllModule.length>0 && AllModule!=""){
		for (i=0;i<AllModule.length;i++){
			var Wbsvc=AllModule[i].split("@@");
			//Chargement du module
			getInfo2(Wbsvc[0],Wbsvc[1],"param="+data);
			
		}
	}
}
//###########################################################################
//# fonction de suppression de css et de script
//###########################################################################
//#Entrées :
//#			-data	 	:liste des fichiers à supprimer séparé par un ";"
//#			-filetype 	:Type du fichier à supprimer ("link"|"script")
//###########################################################################
function removeFile(data,filetype){
	//Transforme la liste en tableau
	var AllOld=data.split(";");
	//s'il y a des fichiers alros
	if(AllOld[0]!=""){
		//Pour chaque fichier faire
		for(k=0;k<AllOld.length;k++){
			//pour chaque type filetype dans le document en cours faire
			for (j=0;j<$(filetype).length;j++){
				//Si le type à supprimer est css alors
				if(filetype == "link"){
					//Si le fichier en cours est le fichier à supprimer alors
					if ($(filetype)[j].href.indexOf(AllOld[k]) >0){
						//supprimer le fichier
						$("head")[0].removeChild($(filetype)[j]);
					}
				}else{
					//Si le type est script et que c'est le fichier a supprimer alors
					if ($(filetype)[j].src.indexOf(AllOld[k]) >0){
						//supprimer le fichier
						$("head")[0].removeChild($(filetype)[j]);
					}						
				}
			}
		}
	}
}
//###########################################################################
//# fonction d'ajout de css et de script
//###########################################################################
//#Entrées :
//#			-websvc	 	:nom du module à charger
//#			-data	 	:liste des fichiers à supprimer séparé par un ";"
//#			-filetype 	:Type du fichier à supprimer ("link"|"script")
//###########################################################################
function addFile(websvc,data,filetype){
	//Transforme la liste en tableau
	var All=data.split(";");
	//s'il existe des fichiers à supprimer alors
	if(All[0]!=""){
		//Pour chaque fichier faire
		for(k=0;k<All.length;k++){
			//Créer un élément du type voulut
			var News=document.createElement(filetype);
			//Si le fichier à charge est un css alors
			if(filetype == "link"){
				//Création des propriété de l'object
				News.href="webservices/"+websvc+"/css/"+All[k]+".css";
				News.rel="stylesheet";
				News.type="text/css";
			}else{
				//Création des propriété de l'object
				News.src="webservices/"+websvc+"/scripts/"+All[k]+".php";
				//News.src="webservices/"+websvc+"/scripts/"+All[k]+".js";
				News.type="text/javascript";
			}
			//Ajout de l'objet
			$("head")[0].appendChild(News);
		}
	}
}

//###########################################################################
//#fonction d'ajout de suppression des anciens modules et d'jout des nouveaux
//###########################################################################
//#Entrées :
//#			-pagecode 	:code de la page à charger
//#Sorties :
//#			-Liste des modules à charger
//###########################################################################
function ChargeCssScript(pagecode){

	//Récupération de la liste des ancien et nouveau module à charge
	//Avec les fichiers css et scripts a supprimer/ajouter
	QuickInfo("GetCss","PAGECODOLD="+OldPageCode+"&PAGECODENEW="+pagecode,true);
	//Récupère un tableau des modules à chargé
	var tbl=window.ajaxreturn.split("@@");
	NomWebSvc="";
	//S'il y a des modules à charge alors
	if(tbl[0]!=""){
		//Pour chaque module faire
		for (i=0;i<tbl.length;i++){
			//Transforme la liste de fichier à supprimer//charger
			var valeur=tbl[i].split("::");
			//Si l'action est de supprimer alors
			if(valeur[4]=="remove"){
				//Si un fichier est à supprimer alors
				if(valeur[1]!=""){
					//Supprimer le fichier
					removeFile(valeur[1],valeur[3]);
				}
			}else{
				//Si un fichier est à supprimer alors
				if(valeur[1]!=""){
					//Ajouter le fichier
					addFile(valeur[0],valeur[1],valeur[3]);
				}
				//Constituion de la liste des modules a chargé avec mode sync/async de chargement
				NomWebSvc=NomWebSvc==""?valeur[0]+"@@"+valeur[2]:NomWebSvc+"::"+valeur[0]+"@@"+valeur[2];
			}
		}
	}
	//Renvois la liste des modules
	return NomWebSvc;
}
//###########################################################################
//# Fonction de gestion des requetes ajax
//###########################################################################
//#Entrées :
//#			-webservice :Nom du module à charger
//#			-asynchrone	:Mode de chargement du module (true|false)
//#			-dataz 		:paramètres à passer au module
//#			-maj	 	:Id de l'élément recevant la réponse de la requete
//#			-sweb	 	:Si renseigné alors chargement d'un sous module
//#			-loader 	:style du loader de chargement
//#Sorties :
//#			-Retourne la réponse dans un élément Id
//###########################################################################
function getInfo2(webservice,asynchrone,dataz,maj,sweb,loader,cached){
	//Déclaration des variables
	asynchrone=(asynchrone == null || asynchrone)?true:false;
	cached=(cached==null)?false:cached;
	if(sweb != null)dataz="sweb="+sweb+"&"+dataz;
	if(maj == null){
		elementToUpdate="#"+webservice;
	}else{
		elementToUpdate="#"+maj;
		dataz="maj="+maj+"&"+dataz;
	}
	if(loader == null){
		$(elementToUpdate).html("<div style='width:100%;text-align:center;'><img src='images/ajax-loader.gif' alt='' /><br />Chargement ...</div>");
	}else{
		if(loader=="tiny"){
			$(elementToUpdate).html("<div style='width:100%;text-align:center;'><img src='images/ajax-loader.gif' alt='' /><br />Chargement ...</div>");
		}
	}
	if(cached){
		//Exécution de la requete
		cachedAjax.add({ 
			type: "POST",
			async: asynchrone,
			url: "webservices/webservices.php",
			data: "webservice="+webservice+"&"+dataz,
			success : function(msg){
				$("#"+this.data.split("&")[((this.data.indexOf("maj")>=0)?1:0)].split("=")[1]).html(msg);
			}
		});
	}else{
		//Exécution de la requete
		someManagedAjax.add({ 
			type: "POST",
			async: asynchrone,
			url: "webservices/webservices.php",
			data: "webservice="+webservice+"&"+dataz,
			success : function(msg){
				$("#"+this.data.split("&")[((this.data.indexOf("maj")>=0)?1:0)].split("=")[1]).html(msg);
			}
		});
	}
}
//###########################################################################
//# Fonction de gestion des requete ajax
//###########################################################################
//#Entrées :
//#			-webservice :Nom du module à charger
//#			-dataz 		:paramètres à passer au module
//#			-urlDistante:lien du site http://aegis.jus...
//#Sorties :
//#			-Retourne la réponse dans une variable
//###########################################################################
function QuickInfo(webservice,dataz,cached,sweb){
	
	cached=(cached==null)?false:cached;
	if (sweb == undefined){
		urls="webservices/"+webservice+"/"+webservice+".php";
	}else{
		urls="webservices/"+webservice+"/webservices/"+sweb+".php";
	}
	
	
	if(cached){
		//Exécution de la requete
		cachedAjax.add({ 
			type: "POST",
			async: false,
			url: urls,
			data: "webservice="+webservice+"&"+dataz,
			success : function(msg){
				window.ajaxreturn=msg;
			}
		});
	}else{
		//Exécution de la requete
		someManagedAjax.add({ 
			type: "POST",
			async: false,
			url: urls, 
			data: "webservice="+webservice+"&"+dataz,
			success : function(msg){
				window.ajaxreturn=msg;
			}
		});
	}
}

//###########################################################################
//# Fonction d'ajout de script vbs dans l'interface locale
//###########################################################################
//#Entrées :
//#			-script :Nom du script à charger
//#			-urlDistante:lien du site http://aegis.jus...
//###########################################################################
function AddParentScript(script,urlDistante){
	//Supprime l'instance précédente du script
	RemoveParentScript(script);
	//Créer le nouvelle élément
	var News=parent.document.createElement("script");
	News.src=urlDistante+"parmloc/scripts/"+script+".php";
	News.type="text/vbscript";
	News.language="vbscript";
	//Ajoute le nouveau script
	$("head",top.document)[0].appendChild(News);	
}
//###########################################################################
//# Fonction de suppression de script vbs dans l'interface locale
//###########################################################################
//#Entrées :
//#			-script :Nom du script à charger
//###########################################################################
function RemoveParentScript(script){
	for (j=0;j<$("script",top.document).length;j++){
		if ($("script",top.document)[j].src.indexOf(script) >0){
			$("script",top.document)[j].removeNode(true);
		}						
	}
}

//###########################################################################
//# Fonction permettant de rendre les élément déplaçable
//###########################################################################
//#Entrées :
//#			-script :Nom du script à charger
//###########################################################################
function addDraggable(el){
	el.draggable(
		{
			revert: false,
			zIndex: 3000,
			ghosting: true,
			opacity: 0.5
		}
	)
};

//###########################################################################
//# Fonction de gestion du menu spécial en bas de l'interface locale
//###########################################################################
//#Entrées :
//#			-El :Element à rendre en menu
//###########################################################################
function AddFishEye(El){ 
	$(El,top.document).Fisheye(
		{
			maxWidth: 50,
			items: 'a',
			itemsText: 'span',
			container: '.dock-container2',
			itemWidth: 40,
			proximity: 90,
			halign : 'center'
		}
	)
}
//###########################################################################
//# Fonction de permettant de rendre visible les boite de dialogues
//###########################################################################
//#Entrées :
//#			-dial :Id de la boite de dialugue à ouvrir
//#			-titre :Titre de la boite de dialogue
//#			-largeur :Largeur de la boite de dialogue
//###########################################################################
function openDialog(dial,titre,largeur){
	$("#"+dial).dialog('option', 'width',largeur);
	$("#"+dial).dialog('option', 'show', 'fold');
	$("#"+dial).dialog('option', 'title', titre);
	$("#"+dial).dialog('option', 'closeOnEscape',false);
	$("#"+dial).dialog('option', 'zIndex', 3999);
 	$("#"+dial).dialog("open");
}

//###########################################################################
//# Fonction de permettant de cacher la boite de dialogue d'ID "dialog"
//###########################################################################
function Cache(){
		$('#dialog').dialog("close");
}


//###########################################################################
//# Fonction de permettant de cacher la boite de dialogue d'ID "dialog"
//###########################################################################
/*
SCRIPT EDITE SUR L'EDITEUR JAVASCRIPT
http://www.editeurjavascript.com
*/
//texteDef = 'Achats malin - Achats groupés - Achats > 280€ - Commandez avec vos amis ';
//function defil(){
	//texteDef = texteDef.substring(1,texteDef.length)+texteDef.substring(0,1);
	//$("#defil").html(texteDef);
	//tempo2 = setTimeout("defil()", 150)
//}
function FindVin(){
	ChargeContenu("051",true,$("#recherche").val())
}
