
var Dhtml={
	duration:180,
	currentSlice:0,
	linkOpacity:null,
	loadTimeout:20,
	linkintLoadImg:null,
	imgs:new Array(),
	opacityIntervaler:null,
	objImgs:new Array(),
	//id de élément content divers informations
	idCaption:null,
	idTitle:null,
	idCurrentImg:null,
	loaderSrc:false,
	//change l'image en dans l'élément idEl avec les propriétées de objImg
	
	//chargement de l'image
	/*loadImg:function(strSrc){
		
		if(typeof this.imgs[strSrc]=='undefined'){
			this.imgs[strSrc]= new Image();
		}
		
		this.imgs[strSrc].src=strSrc;
		
		this.isLoadedImg(strSrc);
		
		trace.addMsg('loading img:'+strSrc, 'Effect');
		trace.addMsg('load this image:'+this.imgs[strSrc].src+'|| isComplete:'+this.imgs[strSrc].complete, 'Effect');
		
		
	},*/
	
	isLoadedImg:function(idParams){
		//trace.addMsg('in loading');
		var params=refObject.get(idParams);
		var strSrc=params.objImg.src;
		var instance=params.instance;
		
		
		
		if(typeof instance.imgs[strSrc]=='undefined'){
			instance.imgs[strSrc]= document.createElement('img');
			instance.imgs[strSrc].src=strSrc;
		}
		
		if(instance.imgs[strSrc].complete==true){
			//trace.addMsg('img loaded');
			
			instance.dspImg(params);
			window.clearInterval(instance.linkintLoadImg);
			
		} else {
			if(navigator.userAgent.indexOf('AppleWebKit/') > -1){
				
				instance.dspImg(params);
				window.clearInterval(instance.linkintLoadImg);
			}
			//trace.addMsg('img not yet load complet is:'+instance.imgs[strSrc].complete);
			instance.loaderImg(params.objImg);
			
		}
	},
	loaderImg:function(idEl){
		/*
		if($(idEl).src!=this.loaderSrc){
				$(idEl).src=this.loaderSrc;
		}*/
	},
	dspImg:function(params){
		window.clearInterval(this.opacityIntervaler);
		this.currentSlice=0;
		$(params.idEl).style.opacity=0;
		$(params.idEl).style.filter='alpha(opacity=0)';
		$(params.idEl).src=params.objImg.src;
		
		if(typeof params.objImg.MaxWidth!='undefined'){
			//alert('mx width'+params.objImg.MaxWidth);
			//alert('mx width'+$(params.idEl).width);
			var objSize=this.setNewSize(params.objImg.MaxWidth, params.objImg.MaxHeight, params.objImg.width, params.objImg.height);
			$(params.idEl).width=objSize.width;
			$(params.idEl).height=objSize.height;
			
		}
		
		
		$(this.idCaption).innerHTML=params.objImg.caption;
		$(this.idTitle).innerHTML=params.objImg.title;
		$(this.idCurrentImg).innerHTML=params.objImg.id;
		
		
		
		this.opacityIntervaler = window.setInterval("Dhtml.opacity('"+refObject.store(params)+"')", 100);
		
		
	},
	setNewSize:function(mw, mh, w, h){
		//trace.addMsg('Image sizes  MaxWidth:'+mw+' ,MaxHeight:'+mh+', || widht:'+w+' , height:'+h);
		if(mw > w && mh > h){
			//trace.addMsg('size is smaller than max size');
			
			return {width:w, height:h};
		}
		
		
		
		if(w > h){
			//trace.addMsg('Maxwidth('+w+') is bigger than maxHeight('+h+')');
			var ratio=w/mw;
			var fh=h/ratio
			
			return {width:mw, height:fh};
		} else{
			var ratio=h/mh;
			var fw=w/ratio;
			return {width:fw, height:mh};
		}
	},
	changeImg:function(idEl, objImg){
		
		var params= new Object();
		params.objImg=objImg;
		params.instance=this;
		params.idEl=idEl;
		
		var idParams=refObject.store(params);
		window.clearInterval(this.linkintLoadImg);
		this.linkintLoadImg=window.setInterval("Dhtml.isLoadedImg('"+idParams+"')", 10);
		
	
	},
	
	
	opacity:function(idParams){
		var params=refObject.get(idParams);
		var instance=params.instance;
		
		var intSlices=instance.duration/10;
		instance.currentSlice++;
		
		
		if(instance.currentSlice >= intSlices){
			
			instance.currentSlice=0;
			window.clearInterval(instance.opacityIntervaler);
			return true;
		}
		var slicePercent=100/intSlices;
		var currentPercent=slicePercent*instance.currentSlice;
		//trace.addMsg('opacity is:'+intSlices+'|and| slice is:'+instance.currentSlice);
		//modification de l'opacité
		
		$(params.idEl).style.opacity=currentPercent/100;
		$(params.idEl).style.filter='alpha(opacity='+(currentPercent)+')';
	}
}


var loadImg={
	isHiddenZoneMk:false,
	idMkZone:'preloadImgs',
	ElHidden:null,
	imgStatus:new Array(),
	linkIntervaler:new Array(),
	handler:new Array(),
	
	src:function(strSrc, handler){
		
		this.handler[strSrc]=handler;
		
		var ElImg=document.createElement('img');
		//alert(typeof this.imgStatus[strSrc]);
		if(typeof this.imgStatus[strSrc]=='undefined'){
			
			this.imgStatus[strSrc]=ElImg;
			
		} else {
			
		}
		
		if(!this.isHiddenZoneMk){
			this.mkHiddenZone();
		}
		
		
		ElImg.style.display="block";
		ElImg.setAttribute('alt','none');
		ElImg.setAttribute('src',strSrc);
		if(ElImg.complete==false){
			
			this.linkIntervaler[strSrc]=window.setInterval("loadImg.wait('"+refObject.store(this)+"','"+strSrc+"')", 30);
		} else {
			//trace.addMsg('not loading need');
			this.appendImg(strSrc);
			this.handler[strSrc](strSrc);
		}
		//window.setInterval("loadImg.wait('"+strSrc+")", 3000);
		//this.ElHidden.appendChild(ElImg);
		
	},
	appendImg:function(strSrc){
		this.ElHidden.appendChild(this.imgStatus[strSrc]);
	},
	wait:function(idObject, strSrc){
		var instance=refObject.get(idObject);
		//trace.addMsg('loading .....','loadImage');
		if(instance.imgStatus[strSrc].complete==true){
			instance.appendImg(strSrc);
			alert(instance.handler[strSrc]+'...'+strSrc);
			//instance.handler[strSrc](strSrc);
			window.clearInterval(instance.linkIntervaler[strSrc]);
			instance.src(strSrc);
		}
	},
	mkHiddenZone:function(){
		
		
		this.ElHidden=document.createElement('div');
		this.ElHidden.setAttribute('id',this.idMkZone);
		this.ElHidden.style.display='block';
		
		var ElBody=document.getElementsByTagName('body')[0];
		ElBody.appendChild(this.ElHidden);
	},
	//rac:isload
	isLoad:function(strSrc){
		if(typeof this.imgStatus[strSrc]=='undefined'){
			//alert(typeof this.imgStatus[strSrc]);
			return false;
		} else {
			alert('complete');
			return this.imgStatus[strSrc].complete;
		}
	}
	
}


/*
var Interval={
	////membres
	//liens du timer
	links:new Array(),
	//paramètres passé a la fonction
	params:new Array(),
	//nom de la fonction
	FnNames:new Array(),
	//reférance de l'object
	refObjects:new Array(),
	//id libre courrant
	freeId:0,
	
	//start un interval
	//@param FnName, objParam,time, refObject
	//nom de la fonction ou methode [string]
	//objet de donnée [object]
	//référance sur l'object de la methode passé [object]
	start:function(FnName, objParam,time, refObject){
		alert(typeof refObject);
		//récupération du nouveau id
		var id=this.id();
		//si FnName n'est pas un String on le transforme en string
		if(typeof FnName!='string') return false; 
		
		//insertion de paramètres
		this.params[id]=objParam;
		//insertion du nom de la fonction
		this.FnNames[id]=FnName;
		
		//si refObject est de type objet on l'ajoute dans notre tableau de référence
		if(typeof refObject!='undefined') this.refObjects[id]=refObject;
		
		
		//démarrage de l'interval
		this.links[id]=window.setInterval("Interval.bind("+id+")", time);
		//on retourne l'id
		return id;	
	},
	//stop l'interval via sont id
	stop:function(idInterval){
		window.clearInterval(this.links[idInterval]);
	},
	//retourn un id non utilisé
	id:function(){
		return this.freeId;
		this.freeId++;
	},
	//création de la fonction d'execution
	bind:function(id){
		//recup du nom de la fonction
		var Fn=this.FnNames[id];
		//si sont type est object
		if(typeof this.refObjects[id]=='object'){
			var ref=this.refObjects[id];
			//création et execution de la methode
			eval('ref.'+Fn+'('+id+')');
			
		} else {
			////création et execution de la fonction
			eval(Fn+'('+id+')');
		}
		
			
	},
	//retourn les paramètres passé à l'interval
	param:function(id){
		return this.params[id];
	}
	
	
}


function opacity(strObjParam){
			var objParam=eval(strObjParam);
			//calcule du nombre de tranche pour ateindre la durée complette
			var intSlices=objParam.duration/10
			//trace.addMsg('currentSlice:'+objParam.intSlice+';slicesNumbers'+intSlices, 'interval');
			//si toutes les tranches ont été utilisé en stop le compteur
			if(objParam.intSlice >= intSlices){
				//trace.addMsg('stop opacity timer','stop timer');
				//trace.addMsg('the timer link is:'+objParam.resInt, 'stop timer');
				window.clearInterval(objParam.resInt);
				
			}
			
			//calcule de l'augementation de l'opacité en % pour cachqune des tranches
			var slicePerc=100/intSlices;
			//calcule de nouveau pourcentage en fonction de la tranche
			var intPerc=objParam.intSlice*slicePerc;
			//incrémentation du compteur de 1
			objParam.intSlice++;
			//transformation du pourcentage de 100 à 1.00
			var intPercForOpacity=intPerc / 100;
			
			//modification de l'opacité
			$(objParam.idElement).style.opacity=intPercForOpacity;
			$(objParam.idElement).style.filter='alpha(opacity='+intPerc+')';
			
			
			
		}
		var objParam={};
		function dHTMLBig(idElement, objImg){
			
			//trace.addMsg('in dhtml function','dhtml');
			
			$(idElement).src=objImg.src;
			
			$('current').innerHTML=BigGallery.getCurrentImgId();
			$('GalleryTitle').innerHTML=objImg.title;
			$('caption').innerHTML=objImg.caption;
			
			var date=new Date();
			window.clearInterval(objParam.resInt);
			objParam.startTime=date.getTime;
			objParam.duration=300;
			objParam.idElement=idElement;
			objParam.intSlice=1;
			
			objParam.resInt=window.setInterval("function(){opacity(objParam)}",10);
			
		}*/
