ModMenuVistaArbre = Class.create();

ModMenuVistaArbre.prototype= {
	initialize:function(gestEvt){
		this.extend(new ModeleAbstract(),this);
		this.curHierOpen=-1;
		this.gestEvt=gestEvt;
		this.gestEvt.ajouteEvenement('ANALYSEMENUADDED');
		this.curHierarchie=new Array();
		this.curLevel=0;
		this.tabHierarchie=new Array();
	},
	setCurentHierarchie:function (idElement,lvl){
		if(this.curHierarchie[lvl]!=idElement){
			for(i=lvl+1;i<this.curHierarchie[lvl];i++){
				this.curHierarchie[i]=-1;
			}
			this.curHierarchie[lvl]=idElement;
			this.curLevel=lvl;
			this.notifieObs('majHierarchie');
		}
	},
	openHierarchie:function (lvl){
		this.curHierOpen=lvl;
		this.notifieObs('openHierarchie');
	},
	getDatas:function (lvl){
		var lvlSub=lvl-1;
		if(lvlSub==-1){ return this.tabHierarchie[lvl]; }
		lvlSub=    this.curHierarchie[lvlSub];
		var tabR=new Array();
		for(var i=0;i<this.tabHierarchie[lvl].length;i++){
			ob=this.tabHierarchie[lvl][i];
			if(ob.idPere==lvlSub){
				tabR[tabR.length]=ob;
			}
		}
		return tabR;
	},
	addDataInNode:function (data,lvl){
		if(this.tabHierarchie[lvl]==undefined){
			this.tabHierarchie[lvl]=[];
		}
		var len = this.tabHierarchie[lvl].length;
		this.tabHierarchie[lvl][len]=data
		//this.notifieObs('addDataInNode');
	},
	setAnalyse:function(analyse){
		this.gestEvt.lanceEvenement('ANALYSEMENUADDED',[analyse]);
		//	alert(analyse.ANALYSEID);
	}

}

VueMain=Class.create();
VueMain.prototype= {
	initialize:function(observateur,name,lvl,lib,divName,path_application){
		this.extend(Object.extend(new VueAbstract(observateur,name),this));
		//
		this.pA=path_application;
		this.divM=$(divName);
		this.lvl=lvl;
		this.mxH=0;
		this.lib=lib;
		this.divName=divName;
		this.ef=new fx.Height('ss_'+divName, {duration: 400});
		this.divSub=$('ss_'+divName);
		this.divLib=$('lib_'+divName);
		this._op=0;
		this.p_initialize(observateur,name);
	},
	bindToHtml:function(){
		Event.observe(this.divLib, 'click', this.GetControler().handleClickMenu.bindAsEventListener(this.GetControler()), false);
	},
	miseAJour:function(nameE){
		if(nameE=='openHierarchie' ){
			if(this._modele.curHierOpen==this.lvl){
				this._swap(0);
			}else{
				this._swap(1);
			}
		}
		if(nameE=='majHierarchie'){
			this._majH();
		}
	},
	_majH:function(){
		//alert(this._modele.curHierarchie[lvl-1]);
		if(this.lvl<=this._modele.curLevel+1){
			Element.show(this.divM);

			if(this._modele.curHierarchie[this.lvl]!=undefined&&this._modele.curHierarchie[this.lvl]!=-1){
				var obID=this._modele.curHierarchie[this.lvl];

				for(var i=0;i<this._modele.tabHierarchie[this.lvl].length;i++){
					//alert(this._modele.tabHierarchie[this.lvl][i].id);
					if(	this._modele.tabHierarchie[this.lvl][i].id==obID){
						var ob=this._modele.tabHierarchie[this.lvl][i];
						this.divLib.innerHTML='<strong>'+ob.libelle+'</strong>';
					}
				}

			}else{
				this.divLib.innerHTML=''+this.lib;
			}


		}else{

			Element.hide(this.divM);
			//	Element.hide(this.divM);

		}

	},
	_swap:function(f){

		if(this._modele.curHierOpen!=this.lvl||this._op||f){
			this._op=0;
			Element.hide(this.divSub);
			//	this.divSub.style.height=0;
		}else{
			this._op=1;
			ret=this._construct();

			//this.divSub.style.height=0;
			Element.show(this.divSub);
			//this.divSub.style.height=0;
			//	this.ef.custom(0, this.mxH);

		}
	},
	_construct:function(){
		var str='<ul class="sous_menu">';
		this.mxH=5;

		var ob='';
		var tabE=this._modele.getDatas(this.lvl);
		//s	'(tabE);
		for(var i=0;i<tabE.length;i++){
			ob=tabE[i];

			str+='<li class="ligne_sous_menu" ><a  class="a_sous_menu" href="javascript:'+this.nom+'.GetControler().selectItem('+ob.id+','+this.lvl+')"><span></span> '+ob.libelle+'</a></li>';
			this.mxH+=15;
		}
		str+='</ul>';

		this.divSub.innerHTML=str;
		return tabE.length;

	},
	setControler: function(observateur){
		this._controller=new ControlerMain(observateur,this.lvl,this.pA);
	}

}






ControlerMain=Class.create();

ControlerMain.prototype= {
	initialize:function(modele,lvl,pA){
		this.extend(new ControlerAbstract(modele),this);
		this.dl=0;
		this.pA=pA;
		this.lvl=lvl;
		this.tabH=[];
		this.paramSelect='cont=analysedomaine&event=getThematiques&mod=domaines&path_application=';
	},
	handleClickMenu:function(evt){

		if(this.dl){
			this._modele.openHierarchie(this.lvl);
		}else{
			var dynmap_url='/dynmap/extensions/indexcarte.php?';
			var params='cont=analysedomaine&event=getDomaines&mod=domaines&path_application='+this.pA;
			var Aj=new Ajax.Request(dynmap_url,
			{method: 'get', parameters: params, onComplete: this.a_dlMain,objetLie:this}
			);
		}
	},
	a_dlMain:function(res){

		eval('resp='+res.responseText);

		for(var i=0;i<resp.length;i++){

			this._modele.addDataInNode(resp[i],this.lvl);
		}

		//this._modele.tabHierarchie[this.lvl]+=res;
		this.dl=1;

		this._modele.openHierarchie(this.lvl);
	},
	selectItem:function(id,lvl){
		this.idn=id;

		if(this.tabH[id]!=undefined){
			this._modele.setCurentHierarchie(id,lvl);
			this._modele.openHierarchie(this.lvl+1);
		}else{
			var dynmap_url='/dynmap/extensions/indexcarte.php?';
			var params=this.paramSelect+this.pA+'&args='+id;
			var Aj=new Ajax.Request(dynmap_url,
			{method: 'get', parameters: params, onComplete: this.a_s,objetLie:this}
			);
		}
	},
	a_s:function(res){
		eval('resp='+res.responseText);
		this.tabH[this.idn]=1;
		for(var i=0;i<resp.length;i++){
			this._modele.addDataInNode(resp[i],this.lvl+1);
		}


		this._modele.setCurentHierarchie(this.idn,this.lvl);
		this._modele.openHierarchie(this.lvl+1);
	}


}






ControlerMenuA=Class.create();
ControlerMenuA.prototype.extend(ControlerMain.prototype).extend({
	selectItem:function(id,lvl,a){
		if(id!=-1){
			for(var i=0;i<this._modele.tabHierarchie[this.lvl].length;i++){
				if(	this._modele.tabHierarchie[this.lvl][i].id==id){
					if(a==-1){
						var ob=this._modele.tabHierarchie[this.lvl][i];

					}else{
						var ob=this._modele.tabHierarchie[this.lvl][i]['subA'][a];
					}
					break;

				}
			}
			//	alert(ob);
			if(!ob.subA){
				this._modele.setAnalyse(ob);
			}
		}
		this._modele.setCurentHierarchie(id,2);
		this._modele.openHierarchie(4);
	}
});

VueAnalyse=Class.create();
VueAnalyse.prototype.extend(VueMain.prototype).extend({
	setControler: function(observateur){

		this._controller=new ControlerMenuA(observateur,this.lvl,this.pA);
		this.divRegion=$('reg_'+this.divName);
		//alert(this.divRegion);
	},
	_construct:function(){
		Element.hide('reg_'+this.divName);
		this.divRegion.innerHTML='';
		var str='<ul class="sous_menu" >';
		this.mxH=5;
		this.tabRegion=new Array();
		var ob='';
		var tabE=this._modele.getDatas(this.lvl);
	
		var cla='';
		var strSub='';
		for(var i=0;i<tabE.length;i++){
			ob=tabE[i];
			if(ob.TYPEANALYSE==1){
				cla='menu_analyseVue1';
			}else{
				cla='menu_analyseVue2';
			}
			//	alert(cla);
			if(!ob.subA){
				str+='<li class="ligne_sous_menu '+cla+' "><a  class="a_sous_menu '+cla+'" href="javascript:'+this.nom+'.GetControler().selectItem('+ob.id+','+this.lvl+',-1)"><span></span> '+ob.libelle+'</a></li>';
			}else{
				str+='<li class="ligne_sous_menu gpeAnalyse "><a  class="a_sous_menu '+cla+'" href="javascript:';
				str+=this.nom+'.openRegion('+ob.id+');'+this.nom+'.GetControler().selectItem('+ob.id+','+this.lvl+',-1);' ;
				str+='"><span></span>'+ob.libelle+'</a></li>';
				strSub='<ul class="ss_menu_region">';
				for(var j=0;j<ob.subA.length;j++){
					var obS=ob.subA[j];
					if(obS.TYPEANALYSE==1){
						cla='menu_analyseVue1';
					}else{
						cla='menu_analyseVue2';
					}
					strSub+='<li class="ligne_layer_region '+cla+' ">';
					strSub+='<a  class="a_sous_menu '+cla+'" href="javascript:'+this.nom+'.GetControler().selectItem('+ob.id+','+this.lvl+','+j+')"><span></span> '+obS.lPName+'</a></li>';
				}

				strSub+='</ul>';
				this.tabRegion[ob.id]=strSub;
			}
			this.mxH+=17;
		}
		str+='</ul>';

		this.divSub.innerHTML=str;

	},
	openRegion:function(idReg){
		var strRegion=this.tabRegion[idReg];
		this.divRegion.innerHTML=strRegion;
		Element.show('reg_'+this.divName);
	}
}
);
VueTheme=Class.create();
VueTheme.prototype.extend(VueMain.prototype).extend({
	setControler: function(observateur){

		this._controller=new ControlerMain(observateur,this.lvl,this.pA);
		this._controller.paramSelect='cont=analysedomaine&event=getAnalyses&mod=domaines&path_application=';
	}
}
);


//alert(VueAnalyse.prototype.handleClickMenu);

