// JavaScript Document
/**
 * Classe facade
 */
var facade = Class.create();
/*****************
 * 	Constructeur *
 *****************/
facade.prototype = {
	/**
	 * constructeur
	 */
initialize: function(parametre) {
	this.url_base=''
		this.initUrlBase();
	},
	/**
	 * start
	 */
	start: function(parametre){

	},
	initUrlBase: function(){
		if ($('url_base')) {
			this.url_base = $('url_base').innerHTML
			//alert('url_base'+this.url_base)
			$('url_base').hide();
		}

	},


	/**
	 * fait un appel au serveur en lui passant un idAction
	 * (passe dans les parametres)
	 * correspondant � l'action demandee a la facade php
	 * et renvoit a une fonction de callback le resultat
	 */
	traitVue: function(parametre){

		this.chargerVue(parametre);
	},

	/**
	 * traitForm
	 */
	traitForm: function(parametre){
	// alert ('traitForm')
		parametre[0].module='vue'
		var param=new Array(parametre);
		//alert (parametre.toJSON())
	 nomForm=parametre[1].nomForm;
	 $(nomForm).action='index.php5?action=5000&param='+param.toJSON()+'&LockView=1'
	 //	alert('index.php5?action=5000&param='+param.toJSON()+'&LockView=1');
	 	var content='';
		var me=this;
	 $(nomForm).request({onComplete: function(transport) {
				me.content=transport.responseText;
				//alert(transport.responseText)
			
				me.traitCallBack(param);
			}})
	},
	//------------------------ LES VUES --------------------------
	/**
	 * ChargerVue
	 */
	chargerVue: function(parametre){
		//alert ('chargerVue')
		var param=new Array(parametre);
		var content='';
		var me=this;
		this.initUrlBase();
			//alert(this.url_base+'index.php5?action=5000&param='+param.toJSON()+'&LockView=1');
		new Ajax.Request(this.url_base+'index.php5?action=5000&param='+param.toJSON()+'&LockView=1', {
			evalScripts: true,
			asynchronous: true,
			 method: 'post', onComplete: function(transport) {
				me.content=transport.responseText;
		//	alert('reponse ::'+transport.responseText)
		//alert(param.toJSON())
				me.traitCallBack(param);
			}
		})
	},
	/**
	 *traitCallBack
	 */
	traitCallBack: function(param){
		p=param[0];
	
		CallBack=p[0].callBack	
	//	alert (CallBack);
	if(CallBack){
		this[CallBack].call(this,param)
		}else{
		}
		
		
	},
	//----------------------------CALLBACK ---------------------------------

	/**
	 *cbAlert 
	 * fonction de callback de debug permettant
	 *  de consulter le retour du serveur
	 * @param {Object} rep
	 */
	cbAlert:function(rep){
		alert(this.content)
	},
	/**
	 * affichage du template de retour d'un template
	 * @param {Object} rep parametres passes au serveur 
	 */
	cbAfficheTemplate: function(rep){
	handler=rep[0][1].handler
	//alert($(handler))
	//alert('content='+this.content)
//		alert(rep.toJSON())
	$(handler).update(this.content)


	},
	//----------------------------CALLBACK ROOT---------------------------------
	/**
	 * ouverture/fermeture de la section
	 * met à jour l'element li ayant pour id le nom de la section
	 * soit avec la liste des enfants (ouvert) soitavec le nom de la section (ferme)
	 * @param {Object} rep parametres passes au serveur 
	 */
	cbSectionOnOff: function(rep){
	$$('p.btnadd').each(function(section){section.hide();})
	section=rep[0][1].section
	idsection=rep[0][1].idSection

	$(idsection).update(this.content)


	},posterArticle: function(){
		this.messager.poster('system',Article,this.Article.toJSON())
		
	},
	//----------------------------CALLBACK METIER---------------------------------

//---->Articles
/**
 * initialisation d'un objet Article avec les valeur entrées
 * @param {Object} parametre parametre passes par la vue de creation d'article
 */
	cbCreerArticle: function(parametre){
		this.cbAfficheTemplate(parametre)
		Article={'id':parametre[0][1].idArt,
							'titre=':parametre[0][1].titre,
							'sousTitre=':parametre[0][1].sousTitre,
							'imgTitre=':parametre[0][1].imgTitre,
							'numPara':0,
							'para':new Array()
							};
		this.Article=Article;
	},

cbModifArticle: function(rep){
	$('entete').show()
	$('modif_entete').hide();

	this.cbAfficheTemplate(rep);
},
//---->Paragraphe
/**
 * initialisation d'un objet Paragraphe avec les valeur entrées
 * @param {Object} parametre parametre passes par la vue de creation de type d'article
 */
cbCreerPara: function(parametre){


	if ($('addParam')) {
		
		$('addParam').hide()
	}
	
	this.cbAfficheTemplate(parametre)
	Article=this.Article;
	num=this.Article.numPara;
	type=parametre[0][1].type;
	this.Article.para[num]={}
	//alert($H(this.Article).toJSON())
	this.Article.para[num].num=num
	this.Article.para[num].type=type


	},
/**
 * initialisation de l'image du paragraphe
 * @param {Object} parametre parametre passes par la vue de creation de type d'article
 */
cbAddImg: function(parametre){
	window.article.suppChoixPara()
	this.cbAfficheTemplate(parametre)
	Article=this.Article;
	num=this.Article.numPara
	imgPara=$('imgPara').value;
	this.Article.para[num].imgPara=imgPara
		//alert($H(this.Article).toJSON())

	},cbModifPara: function(rep){
	
	idPara=rep[0][1].idPara
	window.article.masquerPara(idPara);

	this.cbAfficheTemplate(rep);
},cbValidModifPara: function(rep){

	idPara=rep[0][1].idPara
	window.article.afficherPara(idPara);

	this.cbAfficheTemplate(rep);
},cbOpenrub: function(parametre){
	
	handler=parametre[0][1].handler
	
window.visiteur.openMenu(parametre,this.content)	
		
	},
	//----------------------------FENETRES PWC ---------------------------------
	openWin: function(parametre){
		var nom = parametre[1].nomWin
		var title = parametre[1].title
		var className = parametre[1].className
		var h = parametre[1].h
		var w = parametre[1].w
		var idAction = parametre[0].idAction
		var param = $H(parametre[1]).toJSON()
		//	alert(param)	
		var facade = this
		parent = window;
		
		document.body.win = new Window({
			className: className,
			title: title,
			id: nom,
			width: w,
			height: h,
			show: "modal",
			destroyOnClose: true
		});
		document.facade = this
		document.body.win.setURL("index.php5?action=" + idAction + "&LockView=1&param=" + param);
		//$(idsection).update("index.php5?action="+idAction+"&LockView=1&param="+param);
		
		document.body.win.showCenter({
			modal: true
		});
		
	}

} // end class
