function clGallery(xl_tipo,imgFold,idScroller,idScrollerInt,nScrollEle,wScrollEle,scrollTime,noFilterTxt,allGeneriTxt) {
	this.x_tipo=xl_tipo
	this.xDoc=null
	this.kfiltro=""
	this.baseImg=imgFold
	this.vFiltro=new Array()
	this.vFiltroG=new Array()
	this.vLista=new Array()
	this.vIndici=new Array()
	this.vIndiciG=new Array()
	this.cImg=0
	this.nt=0
	this.nc=0
	this.nd=0
	this.scroller=idScroller
	this.scrollerIn=idScrollerInt
	this.nEleScroll=nScrollEle
	this.wEleScroll=wScrollEle
	this.scrollTime=scrollTime
	this.noFilterTxt=noFilterTxt
	this.allGeneri=allGeneriTxt
	this.playing=false
	this.ntm=0
	this.ptm=0
	this.doPlay=function doPlay() {
		if(this.playing) {
			this.playing=false
			clearInterval(this.ptm)
		} else {
			this.playing=true
			this.ptm=setInterval("oGallery.skipPhoto(1)",this.scrollTime*1000)
		}
	}
	
	this.buildPrw=function buildPrw() {
		clearTimeout(this.ntm)
		clearInterval(this.ptm)
		var n=this.vLista.length
		var vGL=this.xDoc.getElementsByTagName("GLS")[0].getElementsByTagName("GL")
		
		var o=document.getElementById(this.scrollerIn)
		o.style.left="0px"
		var tr=o.getElementsByTagName("table")
		var tt
		if (tr.length==0) {
			var t=document.createElement("table")
			o.appendChild(t)
			var tb=document.createElement("tbody")
			t.appendChild(tb)
			tt=document.createElement("tr")
			tb.appendChild(tt)
		} else {
			tt=tr[0].getElementsByTagName("tr")[0]
			var td=tt.getElementsByTagName("td")
			for(var i=td.length-1;i>=0;i--) {td[i].parentNode.removeChild(td[i])}
		}
		var tr=o.getElementsByTagName("table")
		tr[0].setAttribute("width",n*this.wEleScroll)
		var o=document.getElementById(this.scroller)
		var tr=o.getElementsByTagName("a")
		for(var i=tr.length-1;i>=0;i--) {tr[i].parentNode.removeChild(tr[i])}
		
		
		for (var i=0;i<n;i++) {
			var tr=document.createElement("td")
			var a=document.createElement("a")
			a.setAttribute("href","javascript:hime("+i+")")
			tr.appendChild(a)
			var ti=document.createElement("img")
			ti.setAttribute("alt","")
			ti.setAttribute("src",this.baseImg+"/small/"+vGL[this.vLista[i]].getAttribute("id")+".jpg")
			a.appendChild(ti)
			tt.appendChild(tr)
		}
		
		if (n>this.nEleScroll) {
			this.nt=n
			this.nt=(this.nt-(this.nt%this.nEleScroll))/this.nEleScroll
			var o=document.getElementById("aleft")
			var tr=document.createElement("a")
			tr.setAttribute("href","javascript:moveme(1)")
			o.appendChild(tr)
			var o=document.getElementById("aright")
			var tr=document.createElement("a")
			tr.setAttribute("href","javascript:moveme(-1)")
			o.appendChild(tr)
		}  else {
			this.nt=0
		}
		this.hime(0)
	}
	
	this.hime=function hime(id) {
		var o=document.getElementById(this.scrollerIn)
		var tr=o.getElementsByTagName("td")
		if (this.cImg<tr.length) {tr[this.cImg].className=""}
		if (id>-1&&id<tr.length) {
			tr[id].className="hi";
			this.cImg=id;
			var v=(id-(id%this.nEleScroll))/this.nEleScroll
			//alert(this.nc-(-v))
			this.moveme(-(this.nc-(-v)))
			this.buildMed()
		} else {
			this.buildMed()
		}
	}
	
	this.moveme=function moveme(v) {
		if ((this.nt!=0)&&(v!=0)) {
			this.nc+=v
			if (this.nc<(-this.nt)) {this.nc=-this.nt}
			if (this.nc>0) {this.nc=0}
			
			//alert(this.nc+"*"+this.nd+"*"+this.nt)
			
			this.nd=this.nc*this.nEleScroll*this.wEleScroll
			clearTimeout(this.ntm)
			this.ntm=setTimeout("oGallery.domoveme()",10)
		}
	}
	this.domoveme=function domoveme() {
		var o=document.getElementById(this.scrollerIn)
		var l=o.style.left.replace(/px/,"")*1
		if (l!=this.nd) {
			var df=Math.abs(this.nd-l)
			var spt=1
			if(df>50) {spt=2}
			if(df>100) {spt=3}
			if(df>150) {spt=4}
			if (df>250) {spt=10}
			if (l<this.nd) {
				l+=spt
			} else {
				l-=spt
			}
			o.style.left=l+"px"
			this.ntm=setTimeout("oGallery.domoveme()",10)
		} else {
			clearTimeout(this.ntm)
		}
	}
	
	this.buildMed=function buildMed() {
		var vGL=this.xDoc.getElementsByTagName("GLS")[0].getElementsByTagName("GL")
		//alert((vGL.length>0)+"*"+(this.cImg<this.vLista.length))
		if ((vGL.length>0)&&(this.cImg<this.vLista.length)) {
			var src=vGL[this.vLista[this.cImg]].getAttribute("id")
			var t=document.getElementById("quadro")
			t.style.backgroundImage="url("+this.baseImg+"/med/"+src+".jpg)"
			
			t=document.getElementById("didascalia")
			if (t) {t.innerHTML=vGL[this.vLista[this.cImg]].getAttribute("didascalia")}
			
			t=document.getElementById("tautore")
			if (t) {t.className=(vGL[this.vLista[this.cImg]].getAttribute("autore")=="")?"invisibile":"titolo"}
			t=document.getElementById("autore")
			if (t) {t.innerHTML=vGL[this.vLista[this.cImg]].getAttribute("autore")}
			
			t=document.getElementById("tkwords")
			if (t) {t.className=(vGL[this.vLista[this.cImg]].getAttribute("keyword")=="")?"invisibile":"titolo"}
			t=document.getElementById("kwords")
			if (t) {
				t.innerHTML=""
				if (vGL[this.vLista[this.cImg]].getAttribute("keyword")!="") {
					var vk=vGL[this.vLista[this.cImg]].getAttribute("keyword").split(",")
					for(var i=0;i<vk.length;i++) {
						var j=this.vFiltro.indice(vk[i],0)
						if (j!=-1) {
							if (i>0) {t.appendChild(document.createTextNode(", "))}
							var a=document.createElement("a")
							if (this.vIndici.indice(j)!=-1) {
								a.setAttribute("href","javascript:removeme("+j+")")
								a.className="lista"
							} else {
								a.setAttribute("href","javascript:addme("+j+")")
							}
							a.appendChild(document.createTextNode(vk[i]))
							t.appendChild(a)				
						}
					}
				}			
			}
			
			t=document.getElementById("tgenere")
			if (t) {t.className=(vGL[this.vLista[this.cImg]].getAttribute("genere")=="")?"invisibile":"titolo"}
			var t=document.getElementById("genere")
			if (t) {
				t.innerHTML=""
				if (vGL[this.vLista[this.cImg]].getAttribute("genere")!="") {
					var vk=vGL[this.vLista[this.cImg]].getAttribute("genere").split(",")
					for(var i=0;i<vk.length;i++) {
						var j=this.vFiltroG.indice(vk[i],0)
						if (j!=-1) {
							if (i>0) {t.appendChild(document.createTextNode(", "))}
							var a=document.createElement("a")
							if (this.vIndiciG.indice(j)!=-1) {
								a.setAttribute("href","javascript:removeallG()")
								a.className="lista"
							} else {
								a.setAttribute("href","javascript:addmeG("+j+")")
							}
							a.appendChild(document.createTextNode(vk[i]))
							t.appendChild(a)				
						}
					}
				}
			}
			//t.innerHTML=vGL[this.vLista[this.cImg]].getAttribute("genere")
/*			t.innerHTML=""
			var j=this.vFiltro.indice(vGL[this.vLista[this.cImg]].getAttribute("genere"),0)
			if (j!=-1) {
				var a=document.createElement("a")
				if (this.vIndici.indice(j)!=-1) {
					a.setAttribute("href","javascript:removeme("+j+")")
					a.className="lista"
				} else {
					a.setAttribute("href","javascript:addme("+j+")")
				}
				a.appendChild(document.createTextNode(vGL[this.vLista[this.cImg]].getAttribute("genere")))
				t.appendChild(a)				
			}*/
		
			var t=document.getElementById("contatore")
			t.innerHTML=(this.cImg+1)+"/"+this.vLista.length
		} else {
			var t=document.getElementById("quadro")
			t.style.backgroundImage="none"
			
			var t=document.getElementById("kwords")
			t.innerHTML=""
			
			var t=document.getElementById("autore")
			t.innerHTML=""
			
			var t=document.getElementById("genere")
			t.innerHTML=""
			
			var t=document.getElementById("contatore")
			//t.innerHTML=0+"/"+0
			t.innerHTML=""
		}
		
	}
	
	this.changeFilterG=function changeFilterG(id,modo) {
		var cambiato=false
		if(modo) {
			var j=this.vIndiciG.indice(id)
			if(j==-1) {
				//this.vIndiciG[this.vIndiciG.length]=id
				this.vIndiciG[0]=id
				cambiato=true
			}
		} else {
			if(id==-1) {
				cambiato=true
				this.vIndiciG=new Array()
			} else {
				var j=this.vIndiciG.indice(id)
				if(j!=-1) {
					cambiato=true
/*					var appo=new Array()
					for (var i=0;i<this.vIndiciG.length;i++) {appo[i]=this.vIndiciG[i]}
					var k=0
					this.vIndiciG=new Array()
					for(var i=0;i<appo.length;i++) {if (i!=j) {this.vIndiciG[k]=appo[i];k++}}*/
					this.vIndiciG[0]=id
				}
			}
		}
		if (cambiato) {
			var o=document.getElementById("fkwordsg")
			if (o) {
				var as=o.getElementsByTagName("a")
				if(as.length!=0) {
as[0].className=(this.vIndiciG.length==0)?"lista":""
					for(var i=0;i<this.vFiltroG.length;i++) {
						var j=this.vIndiciG.indice(i)
						as[i+1].href=(j!=-1)?("javascript:removeallG()"):("javascript:addmeG("+i+")")
						as[i+1].className=(j!=-1)?"lista":""
					}
				}
			}
/*ricostruisco la lista dei filtri per genere*/
			var s=document.getElementById("fkwords")
			if (s) {
				s.innerHTML=""
				var a=document.createElement("a")
				a.setAttribute("href","javascript:removeall()")
				a.className="lista"
				a.appendChild(document.createTextNode(this.noFilterTxt))
				s.appendChild(a)
//alert(this.vIndiciG.length)
				if (this.vIndiciG.length==0) {
					this.vIndici=new Array()
					for(var i=0;i<this.vFiltro.length;i++) {
						s.appendChild(document.createElement("br"))
						var a=document.createElement("a")
						a.setAttribute("href","javascript:addme("+i+")")
						a.id="ff"+i
						a.appendChild(document.createTextNode(this.vFiltro[i][0]+" ("+(this.vFiltro[i][1]+"").split(",").length+")"))
						s.appendChild(a)
					}
				} else {
					this.vIndici=new Array()
					//alert(this.vFiltro[1])
					var appo=(this.vFiltroG[this.vIndiciG[0]][1]+"").split(",")
					for(var i=0;i<this.vFiltro.length;i++) {
						var ok=0
						var appof=(this.vFiltro[i][1]+"").split(",")
						for(j=0;j<appo.length;j++) {
							if (appof.indice(appo[j])!=-1) {ok++}
						}
						if (ok!=0) {
							s.appendChild(document.createElement("br"))
							var a=document.createElement("a")
							a.setAttribute("href","javascript:addme("+i+")")
							a.id="ff"+i
							a.appendChild(document.createTextNode(this.vFiltro[i][0]+" ("+ok+")"))
							s.appendChild(a)
						}
					}
				}
			}
			this.buildLista()
		}
	}
	
	this.changeFilter=function changeFilter(id,modo) {
		var cambiato=false
		if(modo) {
			var j=this.vIndici.indice(id)
			if(j==-1) {
				this.vIndici[this.vIndici.length]=id
				cambiato=true
			}
		} else {
			if(id==-1) {
				cambiato=true
				this.vIndici=new Array()
			} else {
				var j=this.vIndici.indice(id)
				if(j!=-1) {
					cambiato=true
					var appo=new Array()
					for (var i=0;i<this.vIndici.length;i++) {appo[i]=this.vIndici[i]}
					var k=0
					this.vIndici=new Array()
					for(var i=0;i<appo.length;i++) {if (i!=j) {this.vIndici[k]=appo[i];k++}}
				}
			}
		}
		if (cambiato) {
			var o=document.getElementById("fkwords")
			if (o) {
				var as=o.getElementsByTagName("a")
				as[0].className=(this.vIndici.length==0)?"lista":""
/*				for(var i=0;i<this.vFiltro.length;i++) {
					var j=this.vIndici.indice(i)
					
					as[i+1].href=(j!=-1)?("javascript:removeme("+i+")"):("javascript:addme("+i+")")
					as[i+1].className=(j!=-1)?"lista":""
				}*/
				for(var i=1;i<as.length;i++) {
					var k=as[i].id.replace("ff","")*1
					var j=this.vIndici.indice(k)
					
					as[i].href=(j!=-1)?("javascript:removeme("+k+")"):("javascript:addme("+k+")")
					as[i].className=(j!=-1)?"lista":""
				}
			}
			this.buildLista()
		}
	}
	
	this.buildLista=function buildLista() {
		var Lista=new Array()
		var cGLS=this.xDoc.getElementsByTagName("GLS")
		for (i=0;i<cGLS[0].getElementsByTagName("GL").length;i++) {Lista[Lista.length]=i}
		for(var i=0;i<this.vIndiciG.length;i++) {
			var appo=(this.vFiltroG[this.vIndiciG[i]][1]+"").split(",")
			for(var j=0;j<Lista.length;j++) {if(appo.indice(Lista[j])==-1) {Lista[j]=-1}}
		}
		for(var i=0;i<this.vIndici.length;i++) {
			var appo=(this.vFiltro[this.vIndici[i]][1]+"").split(",")
			for(var j=0;j<Lista.length;j++) {if(appo.indice(Lista[j])==-1) {Lista[j]=-1}}
		}
		this.vLista=new Array()
		for(var i=0;i<Lista.length;i++) {if (Lista[i]!=-1) {this.vLista[this.vLista.length]=Lista[i]}}
		this.cImg=0
		this.buildPrw()
	}
	
	this.mostraLista=function mostraLista() {
		this.vLista=new Array()
			for (i=0;i<this.xDoc.getElementsByTagName("GLS")[0].getElementsByTagName("GL").length;i++) {this.vLista[this.vLista.length]=i}
		this.cImg=0
		this.buildPrw()
		//this.hime(this.cImg)
	}
	
	this.setLista=function setLista(v) {
		var Lista=new Array()
		for (i=0;i<this.xDoc.getElementsByTagName("GLS")[0].getElementsByTagName("GL").length;i++) {Lista[Lista.length]=i}
		var tutti=false
		for(var i=0;i<v.options.length;i++) {
			if(i>0&&v.options[i].selected) {
				var appo=(this.vFiltro[v.options[i].value][1]+"").split(",")
				for(var j=0;j<Lista.length;j++) {
					if(appo.indice(Lista[j])==-1) {Lista[j]=-1}	
				}
			}
		}
		this.vLista=new Array()
		for(var i=0;i<Lista.length;i++) {if (Lista[i]!=-1) {this.vLista[this.vLista.length]=Lista[i]}}
		
		this.cImg=0
		this.buildPrw()
		//this.buildMed()
	}
	
	
	this.reader=function reader(xData) {
		this.xDoc=xData
		var ps=this.xDoc.getElementsByTagName("GLS")
		if (ps.length==1) {
			var gs=ps[0].getElementsByTagName("GL")
			for(var i=0;i<gs.length;i++) {
				var k=gs[i].getAttribute("genere")
				if (k!="") {
					var z=-1
					var p=-1
					for (var t=0;t<this.vFiltroG.length;t++) {
						if (this.vFiltroG[t][0]==k) {z=t}
						if (this.vFiltroG[t][0]<k) {p=t}
					}
					if (z==-1) {
						var z=this.vFiltroG.length-1
						for(var t=z;t>p;t--) {this.vFiltroG[t+1]=this.vFiltroG[t]}
						this.vFiltroG[p+1]=new Array(k,i)
					} else {
						this.vFiltroG[z][1]=this.vFiltroG[z][1]+","+i
					}
				}
				var k=gs[i].getAttribute("keyword")
				if (k!="") {
					var vk=k.split(",")
					for(j=0;j<vk.length;j++) {
						var z=-1
						var p=-1
						for (var t=0;t<this.vFiltro.length;t++) {
							if (this.vFiltro[t][0]==vk[j]) {z=t}
							if (this.vFiltro[t][0]<vk[j]) {p=t}
						}
						if (z==-1) {
							var z=this.vFiltro.length-1
							for(var t=z;t>p;t--) {this.vFiltro[t+1]=this.vFiltro[t]}
							this.vFiltro[p+1]=new Array(vk[j],i)
							//this.vFiltro[this.vFiltro.length]=new Array(vk[j],i)
						} else {
							this.vFiltro[z][1]=this.vFiltro[z][1]+","+i
						}
					}
				}
			}
		}
		
		var s=document.getElementById("fkwordsg") 
		if (s){
			if (this.vFiltroG.length!=0) {
/*Tutti i generi*/
var a=document.createElement("a")
a.setAttribute("href","javascript:removeallG()")
a.className="lista"
a.appendChild(document.createTextNode(this.allGeneri))
s.appendChild(a)
			for(var i=0;i<this.vFiltroG.length;i++) {
				/*if (i>0) */{s.appendChild(document.createElement("br"))}
				var a=document.createElement("a")
/*				if (i==0) {
					a.setAttribute("href","javascript:removemeG("+i+")")
					a.className="lista"
				} else {*/
					a.setAttribute("href","javascript:addmeG("+i+")")
					a.id="ff"+i
/*				}*/
				a.appendChild(document.createTextNode(this.vFiltroG[i][0]+" ("+(this.vFiltroG[i][1]+"").split(",").length+")"))
				s.appendChild(a)
			}
			}
			var o=document.getElementById("tfkwordsg")
			if (o) {o.className=(this.vFiltroG.length==0)?"invisibile":"titolo"}
/*			if (this.vFiltroG.length==0) {
				s.className="invisibile"
				var o=document.getElementById("tfkwordsg")
				if (o) {o.className="invisibile"}
			} else {
				//this.vIndiciG[0]=0
			}*/
		}
		var s=document.getElementById("fkwords")
		if(s) {
	if (this.vFiltro.length!=0) {
			var a=document.createElement("a")
			a.setAttribute("href","javascript:removeall()")
			a.className="lista"
			a.appendChild(document.createTextNode(this.noFilterTxt))
			s.appendChild(a)
			for(var i=0;i<this.vFiltro.length;i++) {
				s.appendChild(document.createElement("br"))
				var a=document.createElement("a")
				a.id="ff"+i
				a.setAttribute("href","javascript:addme("+i+")")
				a.appendChild(document.createTextNode(this.vFiltro[i][0]+" ("+(this.vFiltro[i][1]+"").split(",").length+")"))
				s.appendChild(a)
			}
	}
			var o=document.getElementById("tfkwords")
			if (o) {o.className=(this.vFiltro.length==0)?"invisibile":"titolo"}
		}
		//this.mostraLista()
		this.buildLista()
	}
	
	this.skipPhoto=function skipPhoto(v) {
		var nv=this.cImg+v
		if (nv<0) {nv=this.vLista.length-1}
		if (nv>=this.vLista.length) {nv=0}	
		this.hime(nv)
	}

	this.loader=function loader(filtro) {
		//alert(filtro)
		if(filtro!=undefined) {
			msg_async(gallery_loaded, "data/lista_.asp","c="+this.x_tipo+"&f="+filtro,"")
		} else {
			msg_async(gallery_loaded, "data/lista.asp","c="+this.x_tipo,"")
		}
	}
	
	this.showPhoto=function showPhoto(pid) {
		var o=document.getElementById(pid)
		if (o) {
			var src=this.xDoc.getElementsByTagName("GLS")[0].getElementsByTagName("GL")[this.vLista[this.cImg]].getAttribute("id")
			o.style.backgroundImage="url("+this.baseImg+"/big/"+src+".jpg)"
			o.className=""
			
			var o=document.getElementById("fkword")
			if (o) {o.className="invisibile"}
		}
	}
	
	this.hidePhoto=function hidePhoto(pid) {
		var o=document.getElementById(pid)
		if (o) {o.className="invisibile"}
		var o=document.getElementById("fkword")
		if (o) {o.className=""}
	}
}

Array.prototype.indice=function(v,c) {
	var r=-1
	if (arguments.length==1) {
		for(var i=0;i<this.length;i++) {if (this[i]==v) {return i}}
	} else {
		for(var i=0;i<this.length;i++) {if (this[i][c]==v) {return i}}
	}
	return r
}

