class_gal_slide = function(vId,vWidth,vHeight,vPadding,vStepW,vStepH,vCol,vRow, vVitesse) {

	this.width = vWidth;
	this.height = vHeight;	
	this.padding = vPadding;	
	this.nCol = vCol;
	this.nRow = vRow;
	this.vitesse = vVitesse;
	this.stepW = vStepW;
	this.stepH = vStepH;
	
	this.count;
	this.countScreen;
	this.countVisi = this.nCol*this.nRow;
	this.pos = 0;	
	this.fadePos = 100;
	this.where_screen = 0;

	this.contGal = document.getElementById(vId); 
	
	var obj = this;
	

	this.InitGalSlide = function (file) {
		this.get_file(file);
		}
		
	this.dropOldGal = function () {
		this.gal_box_slide.innerHTML = '';
		this.pos = 0;
		this.gal_box_slide.style.left= this.pos+'px';
		this.gal_left.style.display = 'none';
		this.gal_right.style.display = 'none';
		this.where_screen = 0;
		if (this.box_cont_step) {
			this.box_cont_step.innerHTML = '';
			}		
		}
	
	this.get_file = function (file) {
		var xhr=null;
		
		if (window.XMLHttpRequest) { 
			xhr = new XMLHttpRequest();
			}
		else if (window.ActiveXObject) {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
				}
		
		xhr.onreadystatechange = function () {
			if (xhr.readyState==4 && xhr.status == 200) {	
				response = xhr.responseText;
				obj.wait_change_gal(response);
				}
			} 
		xhr.open("GET", file, true); 
		xhr.send(null);
		}
	
	var time_wait;
	
	this.wait_change_gal = function (response) {
		this.box_tempon_new.innerHTML = this.trim(response.toLowerCase());
		
		var txtNew = this.trim(this.box_tempon_new.innerHTML.toLowerCase());
		var txtOld = this.trim(this.box_tempon.innerHTML.toLowerCase());
		
		if (!(txtNew==txtOld)) {
			this.dropOldGal();
			this.waiting_box();
			time_wait = setTimeout(function() {obj.change_gal();},500);
			} 
			else {
				return;
				}
		}
	
	this.change_gal = function () {
		clearTimeout(time_wait);
		this.waiting_box_out();
		this.put_data_tempon();
		fade(0,100,this.gal_box_slide);
		this.get_gal();									
		}
		
	this.waiting_box = function () {
		this.gal_cache.style.backgroundImage = 'url(../images/waiting.gif)';
		this.gal_cache.style.backgroundRepeat = 'no-repeat';
		this.gal_cache.style.backgroundPosition = 'center center';
		}
		
	this.waiting_box_out = function () {
		this.gal_cache.style.backgroundImage = 'none';
		}
	
	this.put_data_tempon = function () {
		this.box_tempon.innerHTML = this.trim(this.box_tempon_new.innerHTML.toLowerCase());			
		}
	
	this.get_gal = function () {
		this.dropOldGal();
		var data = this.box_tempon;
		var gal_data = data.getElementsByTagName('div');
		var attValue;
		var idx=0;
		var tabData = new Array();
		for (var i=0;i<gal_data.length;i++) {
			if (gal_data[i].getAttributeNode('class')) {
				attValue = gal_data[i].getAttributeNode('class').value; 
				} else {
					attValue = gal_data[i].getAttribute('class');
					}
			if (attValue == 'gal_slide_data') {
				tabData[idx]=gal_data[i];
				idx++;
				}
			}
		this.construct_gal(tabData);		
		}
	
	this.construct_gal = function (gal_data) {
		this.count = gal_data.length;
		this.countScreen = Math.ceil(this.count/this.countVisi);
		
		this.gal_box_slide.style.width = (this.gal_cache.offsetWidth*this.countScreen)+'px';
		
		//savoir si plus que visible
		if (this.count>this.countVisi) {
			this.gal_right.style.display = 'block';
			}
		
		var vLink;
		var vImage;
		var vImageB;
		var vTxt;
		
		for (var i=0;i<this.count;i++) {
			if (gal_data[i].getElementsByTagName("img")[0].getAttribute("src")) {
				vImage = gal_data[i].getElementsByTagName("img")[0].getAttribute("src");
				}
				else {
					vImage = false;
					}
			if (gal_data[i].getElementsByTagName("img")[1].getAttribute("src")) {
				vImageB = gal_data[i].getElementsByTagName("img")[1].getAttribute("src");
				}
				else {
					vImageB = false;
					}
			if (gal_data[i].getElementsByTagName("a")[0].getAttribute("href")) {
				vLink = gal_data[i].getElementsByTagName("a")[0].getAttribute("href");
				}
				else {
					vLink = false;
					}
			if (gal_data[i].getElementsByTagName("a")[0].getAttribute("title")) {
				vTxt = gal_data[i].getElementsByTagName("a")[0].getAttribute("title");
				}
				else {
					vTxt = false;
					}
			this.put_gal (vImage, vLink, vTxt, i, vImageB);			
			}
					
		this.box_clearB = document.createElement('div');
		this.box_clearB.className = 'box_clear';
		this.gal_box_slide.appendChild(this.box_clearB);	
			
		this.img_mis = 0;
		this.nbre_box = 0;	
		
		this.contruct_step(this.countScreen);
		}	
	
	this.gal_cache = false;
	
	this.construct_gal_box = function () {
		if (!this.gal_cache) {			
			
			this.gal_box_left = document.createElement('div');
			this.gal_box_left.style.cssFloat = 'left';
			this.gal_box_left.style.styleFloat = 'left';
			this.gal_box_left.setAttribute('id','gal_box_left');
			this.contGal.appendChild(this.gal_box_left);
			
			this.gal_left = document.createElement('div');
			this.gal_left.style.display = 'none';
			this.gal_left.style.cursor = 'pointer';	
			this.gal_left.onclick = function () {
				obj.move_prev();	
				}			
			this.gal_left.setAttribute('id','gal_left');
			this.gal_box_left.appendChild(this.gal_left);				
			
			this.gal_cache = document.createElement('div');
			this.gal_cache.style.width = ((this.width*this.nCol)+(this.padding*(this.nCol-1)))+'px';
			this.gal_cache.style.height = ((this.height*this.nRow)+(this.padding*(this.nRow-1)))+'px';
			this.gal_cache.style.overflow = 'hidden';
			this.gal_cache.style.whiteSpace = 'nowrap';
			this.gal_cache.style.position = 'relative';	
			this.gal_cache.style.cssFloat = 'left';
			this.gal_cache.style.styleFloat = 'left';
			this.gal_cache.setAttribute('id','gal_cache');
			this.contGal.appendChild(this.gal_cache);
			
			this.gal_box_slide = document.createElement('div');
			this.gal_box_slide.style.position = 'relative';	
			this.gal_box_slide.style.left= '0px';
			this.gal_box_slide.style.height = (this.gal_cache.offsetHeight)+'px';
			this.gal_box_slide.className = 'gal_box_slide';
			this.gal_box_slide.setAttribute('id','gal_box_slide');			
			this.gal_cache.appendChild(this.gal_box_slide);
			
			this.gal_box_right = document.createElement('div');
			this.gal_box_right.style.cssFloat = 'left';
			this.gal_box_right.style.styleFloat = 'left';
			this.gal_box_right.setAttribute('id','gal_box_right');
			this.contGal.appendChild(this.gal_box_right);
			
			this.gal_right = document.createElement('div');
			this.gal_right.style.display = 'none';
			this.gal_right.style.cursor = 'pointer';	
			this.gal_right.onclick = function () {
				obj.move_next();	
				}
			this.gal_right.setAttribute('id','gal_right');
			this.gal_box_right.appendChild(this.gal_right);			
			
			this.box_clear = document.createElement('div');
			this.box_clear.className = 'box_clear';
			this.contGal.appendChild(this.box_clear);	
			
			this.box_tempon = document.createElement('div');
			this.box_tempon.style.display = 'none';
			this.box_tempon.setAttribute('id','box_tempon');
			this.contGal.appendChild(this.box_tempon);	
			
			this.box_tempon_new = document.createElement('div');
			this.box_tempon_new.style.display = 'none';
			this.box_tempon_new.setAttribute('id','box_tempon_new');
			this.contGal.appendChild(this.box_tempon_new);	
			}
		}
	
	this.img_mis = 0;
	this.nbre_box = 0;
	
	this.put_gal = function (vImage, vLink, vTxt, nbre, vImageB) {
		
		if ((this.countVisi==this.img_mis) || (this.img_mis==0)) {	
			this.nbre_box++;
				
			this.box_visi = document.createElement('div');
			this.box_visi.style.height = (this.gal_cache.offsetHeight)+'px';
			this.box_visi.style.width = (this.gal_cache.offsetWidth)+'px';
			this.box_visi.style.cssFloat = 'left';
			this.box_visi.style.styleFloat = 'left';
			this.box_visi.style.overflow = 'hidden';
			this.box_visi.className = 'box_visi';	
			this.box_visi.setAttribute('id','box_visi_'+this.nbre_box);
			this.gal_box_slide.appendChild(this.box_visi);			
			
			this.img_mis = 0;
			}		
				
		this.gal_img = document.createElement('div');
		this.gal_img.style.width = this.width+'px';
		this.gal_img.style.height = this.height+'px';
		this.gal_img.style.backgroundImage = 'url('+vImage.replace(/ /g,'%20')+')';
		this.gal_img.style.backgroundRepeat = 'no-repeat';
		this.gal_img.style.backgroundPosition = 'center center';
		this.gal_img.style.cssFloat = 'left';
		this.gal_img.style.styleFloat = 'left';
		this.gal_img.style.cursor = 'pointer';
		
		if (!(this.verif_numeric(this.img_mis/this.nCol))) {
			this.gal_img.style.marginLeft = this.padding+'px';
			}
			
		if (this.img_mis>=this.nCol) {
			this.gal_img.style.marginTop = this.padding+'px';
			}
		
		this.gal_img.className = 'gal_img';
		this.gal_img.onclick = function () {
			document.location.href=vLink;
			}
		if (vImageB) {	
			this.gal_img.onmouseover = function () {
				//setFade(80,document.getElementById('gal_img_'+nbre));
				document.getElementById('gal_img_'+nbre).style.backgroundImage = 'url('+vImageB.replace(/ /g,'%20')+')';
				}
			this.gal_img.onmouseout = function () {
				//setFade(100,document.getElementById('gal_img_'+nbre));
				document.getElementById('gal_img_'+nbre).style.backgroundImage = 'url('+vImage.replace(/ /g,'%20')+')';
				}
			}
			
		if (vTxt!=false) {
			this.gal_img.setAttribute('title',vTxt);			
			}
		this.gal_img.setAttribute('id','gal_img_'+nbre);
		document.getElementById('box_visi_'+this.nbre_box).appendChild(this.gal_img);
		
		if ((this.img_mis==(this.countVisi-1)) || (nbre==(this.count-1))) {			
			this.box_clearC = document.createElement('div');
			this.box_clearC.className = 'box_clear';
			document.getElementById('box_visi_'+this.nbre_box).appendChild(this.box_clearC);
			}
		
		this.img_mis++;
		}
	
	this.verif_numeric = function (variable) {
		var exp = new RegExp("^[0-9]+$","g");
		return exp.test(variable); 
		}
		
	this.box_cont_step = false;
		
	this.contruct_step = function (nbre) {
		if (!this.box_cont_step) {
			this.box_cont_step = document.createElement('div');
			this.box_cont_step.className = 'box_cont_step';
			this.box_cont_step.setAttribute('id','box_cont_step');
			this.contGal.appendChild(this.box_cont_step);
			}

		this.box_cont_step.style.width = (this.stepW*this.countScreen)+'px';
				
		for (i=0;i<nbre;i++) {
			this.box_step = document.createElement('div');
			this.box_step.style.display = 'block';
			this.box_step.style.cssFloat = 'left';
			this.box_step.style.styleFloat = 'left';
			this.box_step.className = 'box_step';
			this.box_step.setAttribute('id','box_step_'+i);
			this.box_cont_step.appendChild(this.box_step);
			}	
			
		this.box_clearD = document.createElement('div');
		this.box_clearD.className = 'box_clear';
		this.box_cont_step.appendChild(this.box_clearD);
		
		this.step_sel(this.where_screen);
		}
	
	this.step_sel = function (lequel, etat) {
		var box = 'box_step_'+lequel;
		
		//prend tout les elements box_step
		var steps = document.getElementById('box_cont_step').getElementsByTagName("div");
		
		for (i=0;i<steps.length;i++) {
			if ((steps[i].className.substr(0,8)=='box_step') && !(steps[i].getAttribute('id')==box)) {
				steps[i].className=steps[i].className.replace('box_step_selected','');
				}
				else if (steps[i].getAttribute('id')==box) {
					steps[i].className+=' box_step_selected';
					}
			}		
		}
		
	//debut gestion mouvement
	var timeNext;
	var timePrev;
	this.pos_temp=this.pos;
	
	this.move_next = function () {
		if ((Math.abs(this.pos_temp)<this.gal_cache.offsetWidth) && (Math.abs(this.pos)<(this.gal_box_slide.offsetWidth-this.gal_cache.offsetWidth))) {
			if ((Math.abs(this.pos_temp)+this.vitesse)>this.gal_cache.offsetWidth) {
				this.pos-=(this.gal_cache.offsetWidth-Math.abs(this.pos_temp));
				this.pos_temp-=(this.gal_cache.offsetWidth-Math.abs(this.pos_temp));
				}
				else {
					this.pos-=this.vitesse;
					this.pos_temp-=this.vitesse;
					}	
			
			this.gal_box_slide.style.left= this.pos+'px';
			timeNext = setTimeout(function() {obj.move_next();},20);
			this.gal_left.style.display = 'block';
			}
			else {
				clearTimeout(timeNext);
				this.pos_temp=0;
				if (Math.abs(this.pos)==(this.gal_box_slide.offsetWidth-this.gal_cache.offsetWidth)) {
					this.gal_right.style.display = 'none';
					}
				this.where_screen=(Math.abs(this.pos/this.gal_cache.offsetWidth));
				this.step_sel(this.where_screen);
				}
		}
		
	this.move_prev = function () {
		if ((Math.abs(this.pos_temp)<this.gal_cache.offsetWidth) && (Math.abs(this.pos)>0)) {
			if ((Math.abs(this.pos_temp)+this.vitesse)>this.gal_cache.offsetWidth) {
				this.pos+=(this.gal_cache.offsetWidth-Math.abs(this.pos_temp));
				this.pos_temp+=(this.gal_cache.offsetWidth-Math.abs(this.pos_temp));
				}
				else {
					this.pos+=this.vitesse;
					this.pos_temp+=this.vitesse;
					}
			this.gal_box_slide.style.left= this.pos+'px';
			timePrev = setTimeout(function() {obj.move_prev();},20);
			this.gal_right.style.display = 'block';
			}
			else {
				clearTimeout(timePrev);
				this.pos_temp=0;
				if (Math.abs(this.pos)==0) {
					this.gal_left.style.display = 'none';
					}
				this.where_screen=(Math.abs(this.pos/this.gal_cache.offsetWidth));			
				this.step_sel(this.where_screen);
				}
		}
	
	//fin gestion mouvement
	
	this.trim = function (str) {
		return str.replace(/(^\s*)|(\s*$)/g,"")
		}
	
	this.fadeTime;
	//Gestion fondu
	var fade = function (amt,to,obj) {
		if (amt <= to) {
			setFade(amt,obj);
			this.fadePos = amt;
			amt += 25;
			this.fadeTime = setTimeout(function () {fade(amt,to,obj);}, 80);
		}
		else {
			//clearTimeout(this.fadeTime);
			return;
			}
	}
	
	this.fadeOutTime;
	var fade_out = function (amt,to,obj) {
		if (amt >= to) {
			setFade(amt,obj);
			this.fadePos = amt;
			amt -= 25;
			this.fadeOutTime = setTimeout(function () {fade_out(amt,to,obj);}, 80);
		}
		else {
			//clearTimeout(this.fadeOutTime);
			return;
			}
	}
	
	var setFade = function (amt,obj) {		
		amt = (amt == 100)?99.999:amt;
		obj.style.filter = "alpha(opacity:"+amt+")";
		obj.style.KHTMLOpacity = amt/100;
		obj.style.MozOpacity = amt/100;
		obj.style.opacity = amt/100;
	}
	//Fin gestion fondu
	
	this.hidden_gal = function (flag) {
		if (flag) {
			this.gal_box_slide.style.display = 'none';
			}
			else {
				this.gal_box_slide.style.display = 'block';
				clearTimeout(this.fadeTime);
				fade(0,100,this.gal_box_slide);
				}
		}
	
	return this.construct_gal_box();

	}

