/*  ENT JavaScript framework, version 1.0
 *  (c) 2009 Nicolas Lussagnet
 *
 *  Prototype Javascript framework version 1.6.0.3 required
 *  ENT is freely distributable under the terms of an MIT-style license.
 *
 *--------------------------------------------------------------------------*/
ypSlideOutMenu = Class.create({
	initialize: function(id,_2,_3,_4,_5,_6) {
		this.sClassIdentifier = "ypSlideOutMenu";
		this.aDebug	 = [];
		this.log("** "+ this.sClassIdentifier +"->initialize()");
		this.log("ypSlideOutMenu [id:"+ id +"] !");

		this.ie			 	= document.all?1:0;
		this.ns4		 	= document.layers?1:0;
		this.dom 			= document.getElementById?1:0;
		this.css		 	= "";
		this.id 			= id;
		this.dir 			= _2;
		this.orientation 	= _2=="left" || _2=="right" ? "h":"v";
		this.dirType		= _2=="right" || _2=="down" ? "-":"+";
		this.dim			= this.orientation == "h" ? _5:_6;
		this.hideTimer		= false;
		this.aniTimer		= false;
		this.open			= false;
		this.over			= false;
		this.startTime		= 0;
		this.gRef			= "ypSlideOutMenu_"+id;
		eval(this.gRef+"=this");
		ypSlideOutMenu.prototype.Registry.push({'id':id, 'o':this});
		var _8	= "";
		_8+="#"+this.id+"Container{visibility:hidden;";
		_8+="left:"+_3+"px;";
		_8+="top:"+_4+"px;";
		_8+="overflow:hidden;z-index:10000;}";
		_8+="#"+this.id+"Container,#"+this.id+"Content{position:absolute;";
		_8+="width:"+_5+"px;";
		_8+="height:"+_6+"px;";
		_8+="clip: rect(0px "+_5+"px "+_6+"px 0px);";
		_8+="}";
		this.css = _8;
		this.load();
	},
	load: function(){

		var _10 = this.id+"Container";
		var _11 = this.id+"Content";
		var _12 = $(_10);
		if(_12) var _13 = $(_11);
		var _14;
		if(!_12||!_13){
			window.setTimeout(this.gRef+".load()",100);
		}else{
			this.container=_12;
			this.menu=_13;
			this.style=this.ns4?this.menu:this.menu.style;
			this.homePos=eval("0"+this.dirType+this.dim);
			this.outPos=0;
			this.accelConst = (this.outPos-this.homePos)/ypSlideOutMenu.prototype.aniLen/ypSlideOutMenu.prototype.aniLen;
			if(this.ns4){
				this.menu.captureEvents(Event.MOUSEOVER|Event.MOUSEOUT);
			}
			this.menu.onmouseover = new Function("ypSlideOutMenu.showMenu('"+this.id+"')");
			this.menu.onmouseout = new Function("ypSlideOutMenu.hideMenu('"+this.id+"')");
			this.endSlide();
		}
	},
	startSlide: function(_21){
		this[_21?"onactivate":"ondeactivate"]();
		this.open=_21;
		if(_21){
			this.setVisibility(true);
		}
		this.startTime = (new Date()).getTime();
		this.aniTimer = window.setInterval(this.gRef+".slide()",ypSlideOutMenu.prototype.minCPUResolution);
	},
	slide: function(){
		var _22=(new Date()).getTime()-this.startTime;
		if(_22>ypSlideOutMenu.prototype.aniLen){
			this.endSlide();
		}else{
			var d=Math.round(Math.pow(ypSlideOutMenu.prototype.aniLen-_22,2)*this.accelConst);
			if(this.open&&this.dirType=="-"){
				d=-d;
			}else{
				if(this.open&&this.dirType=="+"){
					d=-d;
				}else{
					if(!this.open&&this.dirType=="-"){
						d=-this.dim+d;
					}else{
						d=this.dim+d;
					}
				}
			}
			this.moveTo(d);
		}
	},
	endSlide: function(){
		this.aniTimer=window.clearTimeout(this.aniTimer);
		this.moveTo(this.open?this.outPos:this.homePos);
		if(!this.open){
			this.setVisibility(false);
		}
		if((this.open&&!this.over)||(!this.open&&this.over)){
			this.startSlide(this.over);
		}
	},
	setVisibility: function(_24){
		var s=this.ns4?this.container:this.container.style;
		s.visibility=_24?"visible":"hidden";
	},
	moveTo: function(p){
		this.style[this.orientation=="h"?"left":"top"] = this.ns4?p:p+"px";
	},
	getPos: function(c){
		return parseInt(this.style[c]);
	},
	onactivate: function(){},
	ondeactivate: function(){},
	log: function(sLog){ this.aDebug.push(sLog); },
	debug: function(){
		var sDebug = "";
		this.aDebug.each(function(oItem){ sDebug += " - " + oItem + "\n"; });
		alert(sDebug);
		this.aDebug = [];
	}
});

// Propriétés de Classe
ypSlideOutMenu.prototype.Registry			 = new Array();
ypSlideOutMenu.prototype.aniLen				 = 250;
ypSlideOutMenu.prototype.hideDelay			 = 1000;
ypSlideOutMenu.prototype.minCPUResolution	 = 10;


// Méthode de Classe
ypSlideOutMenu.writeCSS = function(){
	document.writeln("<style type=\"text/css\">");
	var iRegistry = ypSlideOutMenu.prototype.Registry.length;
	for(var i=0;i<iRegistry;i++){
		var oTmp = ypSlideOutMenu.prototype.Registry[i].o;
		document.writeln(oTmp.css);
	}
	document.writeln("</style>");
};


// Méthode de Classe
ypSlideOutMenu.showMenu = function(id){

	var index	 = 0;

	var reg=ypSlideOutMenu.prototype.Registry;
	var iRegistry = reg.length;
	for(var i=0;i<iRegistry;i++){
		var oTmp = reg[i];
		if(oTmp.id == id){
			var obj = oTmp.o;
			index = i;
			break;
		}
	}

	if(obj.container){
		obj.over=true;
		for(var i=0;i<iRegistry;i++){
			var oTmp = reg[i];
			if(id != oTmp.id){
				ypSlideOutMenu.hide(oTmp.id);
			}
		}
		if(obj.hideTimer){
			obj.hideTimer=window.clearTimeout(obj.hideTimer);
		}
		if(!obj.open&&!obj.aniTimer){
			obj.startSlide(true);
		}
	}

};


// Méthode de Classe
ypSlideOutMenu.hideMenu = function(id){

	var reg=ypSlideOutMenu.prototype.Registry;
	var iRegistry = reg.length;
	for(var i=0;i<iRegistry;i++){
		var oTmp = reg[i];
		if(oTmp.id == id){
			var obj = oTmp.o;
			break;
		}
	}

	if(obj.container){
		if(obj.hideTimer){
			window.clearTimeout(obj.hideTimer);
		}
		obj.hideTimer = window.setTimeout("ypSlideOutMenu.hide('"+id+"')",ypSlideOutMenu.prototype.hideDelay);
	}

};


// Méthode de Classe
ypSlideOutMenu.hideAll = function(){

	var reg=ypSlideOutMenu.prototype.Registry;
	var iRegistry = reg.length;
	for(var i=0;i<iRegistry;i++){
		var oTmp = reg[i];
		ypSlideOutMenu.hide(oTmp.id);
		if(oTmp.o.hideTimer){
			window.clearTimeout(oTmp.o.hideTimer);
		}
	}

};


// Méthode de Classe
ypSlideOutMenu.hide = function(id){

	var reg=ypSlideOutMenu.prototype.Registry;
	var iRegistry = reg.length;
	for(var i=0;i<iRegistry;i++){
		var oTmp = reg[i];
		if(oTmp.id == id){
			var obj = oTmp.o;
			break;
		}
	}

	obj.over=false;
	if(obj.hideTimer){
		window.clearTimeout(obj.hideTimer);
	}
	obj.hideTimer=0;
	if(obj.open&&!obj.aniTimer){
		obj.startSlide(false);
	}
};
