// JavaScript Document
var ticket=new oTicket()

function oTicketGruppo(nome) {
	this.nome=nome
	this.prezzo=0
	this.pagaextra=true
	this.nbiglietti=0
	this.npaganti=0
	this.nlab=0
	this.nvis=0
	this.extra=0
	this.delta=0
	this.integrati=0
}
oTicketGruppo.prototype.readData=function() {
	this.prezzo=ticket.getPrezzo("u"+this.nome)
	var o=$("extra"+this.nome)
	if (o) {
		if (o.tagName=="INPUT") {this.pagaextra=(o.value!="")}
	}
}
oTicketGruppo.prototype.readExtra=function() {
	this.extra=ticket.getPrezzo("ui"+this.nome)
	var o=$("di"+this.nome)
	if (o) {this.delta=o.value*1}
	var o=$("nb"+this.nome)
	if (o) {
		this.nbiglietti=o.value*1
	} else {
		this.nbiglietti=0
	}
	
}
oTicketGruppo.prototype.calcExtra=function() {
	var o=$("e"+this.nome)
	if (o) {
		this.integrati=o.value
		var dp=this.integrati
		if (dp>this.nbiglietti) {dp=this.nbiglietti}
		return dp*this.delta
	} else {
		this.integrati=0
		return 0
	}
}
oTicketGruppo.prototype.returnExtra=function() {
	return "&"+this.nome+"_int="+this.integrati	
}
oTicketGruppo.prototype.cambio=function(ct,tpersone,mincitta,tdisabili) {
	var cpersone=$("t"+this.nome).value*1
	if (cpersone>(tpersone-ct[0])) {cpersone=(tpersone-ct[0])}
	if (this.nome=="accompagnatori") {
		if (cpersone>tdisabili) {cpersone=tdisabili}
		setOption("taccompagnatori",cpersone,Math.min(tdisabili,tpersone-ct[0]))
	} else {
		setOption("t"+this.nome,cpersone,tpersone-ct[0])
	}
	this.nbiglietti=cpersone
	ct[0]+=cpersone
	if (this.prezzo>0) {ct[1]+=cpersone}
	var clab=$("lab"+this.nome).value*1
	if (clab>cpersone) {clab=cpersone}
	setOption("lab"+this.nome,clab,cpersone)
	this.nlab=clab
	
	var o=$("vis"+this.nome)
	if (tpersone>=mincitta) {
		o.disabled=false
		clab=o.value*1
		if (clab>cpersone) {clab=cpersone}
		setOption("vis"+this.nome,clab,cpersone)
		this.nvis=clab
	} else {
		o.disabled=true
		setOption("vis"+this.nome,0,0)
		this.nvis=0
	}
	
	return ct
}
oTicketGruppo.prototype.setBiglietti=function(nb,tpersone,mincitta) {
	if (this.nome=="interi") {
		var cpersone=nb
		if (cpersone>tpersone) {cpersone=tpersone}
		this.nbiglietti=cpersone
		var clab=$("lab"+this.nome).value*1
		if (clab>cpersone) {clab=cpersone}
		setOption("lab"+this.nome,clab,cpersone)
		this.nlab=clab
		
		var o=$("vis"+this.nome)
		if (tpersone>=mincitta) {
			o.disabled=false
			clab=o.value*1
			if (clab>cpersone) {clab=cpersone}
			setOption("vis"+this.nome,clab,cpersone)
			this.nvis=clab
		} else {
			o.disabled=true
			setOption("vis"+this.nome,0,0)
			this.nvis=0
		}
	}
}

oTicketGruppo.prototype.accompagnatori=function(inDelta) {
	if (inDelta>0) {
		if (this.nbiglietti>0&&this.prezzo>0) {
			if (inDelta>this.nbiglietti) {
				this.npaganti=0
				return inDelta-this.nbiglietti
			} else {
				this.npaganti=this.nbiglietti-inDelta
				return 0
			}
		} else {
			this.npaganti=0	
			return inDelta
		}
	} else {
		this.npaganti=this.nbiglietti
		return 0
	}
}

oTicketGruppo.prototype.vtotale=function(plab,pvis,vt) {
	var cTotale=0
	if (this.prezzo>0) {cTotale=(this.prezzo*this.npaganti)}
	if (this.pagaextra) {
		vt[1]+=(this.nlab*plab)
		vt[2]+=(this.nvis*pvis)
	}
	vt[3]+=this.nlab
	vt[4]+=this.nvis
	ticket.wPrezzo("p"+this.nome,cTotale)
	vt[0]+=cTotale
	return vt
}

function oTicket() {
	this.help=false
	this.x=0
	this.y=0
	
	this.vcats=["disabili","accompagnatori","bambini","ragazzi","anziani","insegnanti","universitari","gentile","freecat","interi"]
	//this.vcats=["disabili","accompagnatori","bambini","ragazzi","anziani","insegnanti","universitari","freecat","interi"]
	this.cats=new Array()
	for(var i=0;i<this.vcats.length;i++) {
		this.cats[this.vcats[i]]=new oTicketGruppo(this.vcats[i])
	}
	/*prezzi unitari*/
	this.pintero=0
	this.pdisabili=0
	this.paccompagnatori=0
	this.pbambini=0
	this.pragazzi=0
	this.panziani=0
	this.pinsegnanti=0
	this.puniversitari=0
	this.pgentilecard=0
	this.pfreecat=0
	
	/*posti*/
	this.tlab=0
	this.tvis=0
	
	this.plaboratorio=0
	this.stp=0
	this.mincitta=0
	this.pcitta=0
	
	this.giorno=""
	
	this.btotale=0
}

oTicket.prototype.reloadTipo=function() {
	var o=$("gruppoticket")
	if (o) {
		o.innerHTML=""
		sc(o,"loading")
		callAction(new Array("P",ticket.setTipoDone,"interno_/reloadtipo.asp","","T"))
	}
}

oTicket.prototype.setTipo=function(tipo) {
	var o=$("gruppoticket")
	if (o) {
		o.innerHTML=""
		sc(o,"loading")
		callAction(new Array("P",ticket.setTipoDone,"interno_/tipo.asp","cmd=tipo&id="+tipo,"T"))
	}
}
oTicket.prototype.setTipoDone=function(m,x,u,nfo) {
	var o=$("gruppoticket")	
	sc(o,"","loading")
	if (m) {
		o.innerHTML=x
		o=$("pkind")
		if (o) {ticket.setupPrezzi()}
	} else {
		o.innerHTML=""	
	}
}
oTicket.prototype.setupPrezzi=function () {
	for (var i=0;i<this.vcats.length;i++) {
		this.cats[this.vcats[i]].readData()
	}
	this.stp=$("stp").innerHTML*1
	this.plaboratorio=this.getPrezzo("ulaboratorio")
	this.mincitta=$("mincitta").innerHTML*1
	this.pcitta=this.getPrezzo("ucitta")
	ticket.cambioComponenti()
}

oTicket.prototype.getPrezzo=function(id) {
	var o=$(id)
	var r=0
	if (o) {r=o.innerHTML*1}
	this.wPrezzo(id,r)
	return r
	
}
oTicket.prototype.wPrezzo=function(id,p,info) {
	var o=$(id)
	if (o) {
		o.innerHTML=pretty(p)+" €"
		if (info!=undefined) {o.innerHTML=info+o.innerHTML}
	}
	return p
}
oTicket.prototype.cambioComponenti=function () {
	var c=0
	var tpax=0
	var ct=[0,0]
	var tpersone=$("tpersone").value*1
	for(var i=0;i<this.vcats.length-1;i++) {
		ct=this.cats[this.vcats[i]].cambio(ct,tpersone,this.mincitta,this.cats["disabili"].nbiglietti)
	}

	c=ct[0]
	tpax=ct[1]
	
	var interi=tpersone-c
	tpax+=interi
	this.cats["interi"].setBiglietti(interi,tpersone,this.mincitta)
	
	var accompagnatori=0
	if (this.stp!=0) {accompagnatori=Math.floor(tpax/(1+this.stp))}
	tpax=tpax-accompagnatori
	var delta=accompagnatori
	for (var i=this.vcats.length-1;i>=0;i--) {
		delta=this.cats[this.vcats[i]].accompagnatori(delta)
	}

	$("accompagnatori").innerHTML=accompagnatori
	$("pax").innerHTML=tpax
	$("interi").innerHTML=interi

	var vtotale=[0,0,0,0,0] //totaleb,tlab,tvis,nlab,nvis
	for (var i=0;i<this.vcats.length;i++) {
		vtotale=this.cats[this.vcats[i]].vtotale(this.plaboratorio,this.pcitta,vtotale)
	}
	
	this.wPrezzo("ltotale",vtotale[1])
	this.tlab=vtotale[3]
	$("blab").innerHTML=this.tlab
	
	this.wPrezzo("vtotale",vtotale[2])
	this.tvis=vtotale[4]
	$("bvis").innerHTML=this.tvis
	
	this.wPrezzo("btotale",vtotale[0])
		
	this.wPrezzo("gtotale",vtotale[0]+vtotale[1]+vtotale[2])
}

oTicket.prototype.cambioNazione=function() {
	var n=$("nazione").value
	var p=$("provincia")
	var pd=$("provinciatd")
	if (n=="IT") {
		p.disabled=false
		sc(pd,"","spento")
	} else {
		p.disabled=true
		sc(pd,"spento")
	}
}
oTicket.prototype.registra=function() {
	var s=getValues(["tipo","lingua","nome","cognome","luogo","nazione","provincia","telefono","email","email2","tpersone"])
	var ss=getValuesVista(this.vcats)
	s=s+"&"+ss+"&tlab="+this.tlab+"&tvis="+this.tvis
	callAction(new Array("P",ticket.registraDone,"interno_/registra3.asp",s))
}
oTicket.prototype.registraDone=function(m,x,u,nfo) {
	if (m) {
		var vx=$t(x,"OK")
		if (vx.length==1) {
			switch (vx[0].getAttribute("ok")) {
				case "1":
					ticket.loadGiorno()
					break;
				
				case "-1":
					ticket.setTipo()
					break;
				
				default:
					for(var i=0;i<vx[0].attributes.length;i++) {
						if (vx[0].attributes[i].name.length>2) {setErr(vx[0].attributes[i].name,vx[0].attributes[i].value)}
					}
			}
		} else {
			
		}
	} else {
		
	}
}
oTicket.prototype.loadGiorno=function() {
	var o=$("gruppoticket")
	if (o) {
		o.innerHTML=""
		sc(o,"loading")
		//callAction(new Array("P",ticket.loadGiornoDone,"interno_/giorno.asp","cmd=prepara","T"))
		callAction(new Array("P",ticket.findGiornoDone,"interno_/giorno3.asp","cmd=find","T"))
	}
}
/*oTicket.prototype.loadGiornoDone=function(m,x,u,nfo) {
	var o=$("gruppoticket")	
	sc(o,"","loading")
	if (m) {
		o.innerHTML=x
		ticket.findGiorno(false)
	} else {
		o.innerHTML=""	
	}
}*/
oTicket.prototype.findGiorno=function(modo) {
	if (modo) {
		var o=$("gruppoticket")
		o.innerHTML=""
		sc(o,"loading")
	}
	callAction(new Array("P",ticket.findGiornoDone,"interno_/giorno3.asp","cmd=find","T"))
}
oTicket.prototype.backMese=function(p) {
	var o=$("gruppoticket")
	o.innerHTML=""
	sc(o,"loading")
	callAction(new Array("P",ticket.findGiornoDone,"interno_/giorno3.asp","cmd=find&p="+p,"T"))
}
oTicket.prototype.findGiornoDone=function(m,x,u,nfo) {
	var o=$("gruppoticket")	
	sc(o,"","loading")
	if (m) {
		o.innerHTML=x
		if (x.substr(0,13)=="<div>no</div>") {
			ticket.setTipo('')
		} else {
			ticket.giorno=""	
		}
	} else {
		o.innerHTML=""	
	}
}

oTicket.prototype.openDay=function(id) {
	if (("g"+id)!=this.giorno) {
		var o=$("giorni")
			if (o) {
			o.innerHTML=""
			sc(o,"loading")
			callAction(new Array("P",ticket.openDayDone,"interno_/giorno3.asp","cmd=giorno&id="+id,"T"))
		}
	}
}
oTicket.prototype.openDayDone=function(m,x,u,nfo) {
	var o=$("giorni")
	if (m) {
		sc(o,"","loading")
		sc($(ticket.giorno),"","aperto")
		var opts=getOpts(nfo)
		ticket.giorno="g"+opts["id"]
		sc($(ticket.giorno),"aperto")
		o.innerHTML=x
		if (x.substr(0,13)=="<div>no</div>") {ticket.setTipo('')}
	} else {
		o.innerHTML=""	
	}
}

oTicket.prototype.take=function(e,v,l) {
	var o=$("giorni")
	if (o) {
		sc($("h"+v),"miniloading")
		callAction(new Array("P",ticket.takeDone,"interno_/giorno3.asp","cmd=take&e="+e+"&v="+v+"&l="+l))
	}
}
oTicket.prototype.takeDone=function(m,x,u,nfo) {
	if (m) {
		var xd=x.documentElement
		switch (xd.tagName)	{
			case "OK":
				var vopts=getOpts(nfo)
				if (xd.getAttribute("esid")=="") {
					sc($("h"+vopts["v"]),"","miniloading")	
				}
				sc($("h"+xd.getAttribute("esid")),"","miniloading")
				sc($("h"+xd.getAttribute("oesid")),"","miniloading")
				if (xd.getAttribute("oeid")!=xd.getAttribute("eid")) {
					sc($("g"+xd.getAttribute("oeid")),"","scelto")
					sc($("g"+xd.getAttribute("eid")),"scelto")
				}
				if (xd.getAttribute("oesid")!=xd.getAttribute("esid")) {
					sc($("h"+xd.getAttribute("oesid")),"","scelto")
					sc($("h"+xd.getAttribute("esid")),"scelto")
				}
				var t=xd.getAttribute("t")
				$("msgprenotazione").innerHTML=t
				if (xd.getAttribute("posti")=="0"){
					sc($("modoprenotazione"),"noprenotazione")
				} else {
					sc($("modoprenotazione"),"","noprenotazione")
				}
				break;
			case "SES":
			default:
				ticket.setTipo('')
		}
	} else {
		
	}
}

oTicket.prototype.goConferma=function() {
	var o=$("gruppoticket")
	o.innerHTML=""
	sc(o,"loading")
	callAction(new Array("P",ticket.goConfermaDone,"interno_/conferma3.asp","cmd=inizio","T"))
}
oTicket.prototype.goConfermaDone=function(m,x,u,nfo) {
	var o=$("gruppoticket")	
	sc(o,"","loading")
	if (m) {
		o.innerHTML=x
		if (x.substr(0,13)=="<div>no</div>") {
			ticket.setTipo('')
		} else {
			ticket.setupExtra()
		}
	} else {
		o.innerHTML=""	
	}
}
oTicket.prototype.setupExtra=function () {
	for (var i=0;i<this.vcats.length;i++) {
		this.cats[this.vcats[i]].readExtra()
	}
	this.btotale=this.getPrezzo("btotale")
	ticket.extra()
}

oTicket.prototype.extra=function () {
	var delta=0
	for (var i=0;i<this.vcats.length;i++) {
		delta+=	this.cats[this.vcats[i]].calcExtra()
	}
	delta+=this.btotale
	this.wPrezzo("btotale",delta)
}

oTicket.prototype.pagamento=function(tipo) {
	var s="cmd=tipo&tipo="+tipo+"&"+getValue("note")
	for (var i=0;i<this.vcats.length;i++) {
		s+=	this.cats[this.vcats[i]].returnExtra()
	}
	var o=$("gruppoticket")
	o.innerHTML=""
	sc(o,"loading")
	callAction(new Array("P",ticket.goConfermaDone2,"interno_/conferma3.asp",s,"T"))
}

oTicket.prototype.goConfermaDone2=function(m,x,u,nfo) {
	var o=$("gruppoticket")	
	sc(o,"","loading")
	if (m) {
		o.innerHTML=x
		if (x.substr(0,13)=="<div>no</div>") {ticket.setTipo('')}
	} else {
		o.innerHTML=""	
	}
}

	
oTicket.prototype.concludi=function() {
	var s="cmd=paga"
	var o=$("gruppoticket")
	o.innerHTML=""
	sc(o,"loading")
	callAction(new Array("P",ticket.goConfermaClose,"interno_/conferma3.asp",s,"T"))
}

oTicket.prototype.goConfermaClose=function(m,x,u,nfo) {
	var o=$("gruppoticket")	
	sc(o,"","loading")
	if (m) {
		o.innerHTML=x
		var f=$("bankform")
		if (f) {sc(o,"loading");f.submit()}
		if (x.substr(0,13)=="<div>no</div>") {ticket.setTipo('')}
	} else {
		o.innerHTML=""	
	}
}

oTicket.prototype.showHelp=function(obj,tipo) {
	if (this.help) {
		var xy=[0,0]
		if (tipo!="") {
			xy=this.calcolaOffset(obj)
		}
		callAction(new Array("P",ticket.setViewHelp,"interno_/help.asp","id="+tipo+"&x="+xy[0]+"&y="+xy[1],"T"))
	}
}
oTicket.prototype.setViewHelp=function(m,x,u,nfo) {
	if (ticket.help) {
		var o=$("tickethelp")
		if (m) {
			if (o) {
				sc(o,"","hide")
			} else {
				o=$b("div")
				o.id="tickethelp"
				o.className="tickethelp"
				var g=$("gruppoticket")	
				var xy=ticket.calcolaOffset(g)
				ticket.x=xy[0]
				ticket.y=xy[1]
				g.parentNode.appendChild(o)
			}
			o.innerHTML=x
			if (x=="") {
				sc(o,"hide")
			} else {
				var opt=getOpts(nfo)
				o.style.left=(opt["x"]*1+ticket.x)+"px"
				o.style.top=(opt["y"]*1+ticket.y)+"px"
			}
		} else {
			if (o) {sc(o,"hide")}
		}
	}
}

oTicket.prototype.calcolaOffset=function(o) {
	var v=[0,0]
	if (o.tagName=="BODY") {return v}
	if (o.offsetParent.id=="gruppoticket") {return [o.offsetLeft,o.offsetTop]}
	var v1=this.calcolaOffset(o.offsetParent)
	v[0]+=(v1[0]+o.offsetLeft)
	v[1]+=(v1[1]+o.offsetTop)
	return v
}
function getValues(vv) {
	var r=""
	for(var i=0;i<vv.length;i++) {
		var c=getValue(vv[i])
		if (r!=""&&c!="") {r+="&"}
		r+=c
	}
	return r
}
function getValuesVista(vv) {
	var vv2=[]
	for(var i=0;i<vv.length;i++) {
		vv2[vv2.length]="t"+vv[i]
		vv2[vv2.length]="lab"+vv[i]
		vv2[vv2.length]="vis"+vv[i]
	}
	return getValues(vv2)
}
function getValue(id) {
	var o=$(id)
	if (o) {
		if (o.type=="checkbox") {
			return id+"="+(o.checked?o.value:"")
		} else {
			return id+"="+escape(o.value).replace(/\+/gi,"%2b")
		}
	} else {
		return ""
	}
}
function setErr(id,msg) {
	var o=$(id) 
	if (o) {o.innerHTML=msg}
}
function setOption(id,c,m) {
	var o=$(id)
	removeOptions(o)
	for(var i=0;i<m+1;i++) {addOption(o,i)}
	o.value=c
}
function removeOptions(o) {
	for(var i=o.options.length-1;i>=0;i--) {
		o.removeChild(o.options[i])
	}
}
function addOption(s,n) {
	var o=$b("option")
	o.setAttribute("value",n)
	o.appendChild($ct(n))
	s.appendChild(o)
}
function pretty(v,d0) {
	var d=(d0==undefined)?2:d0
	if (d==2) {
		var v0=(Math.round(v*100)/100)+.0001
	} else {
		var v0=Math.round(v*1)
	}
	var vv=(v0+"").split(".")
	var d=""
	var m=""
	var c=""
	//if(vv.length==2) {d=","+(vv[1]+"00").substr(0,2)}
	if(vv.length==2) {d=","+(vv[1]+"00").substr(0,2)}
	if (vv[0].length>3) {
		c="."+vv[0].substr(vv[0].length-3,3)
		m=vv[0].substr(0,vv[0].length-3)
		return pretty(m,0)+c+d
	} else {
		return vv[0]+d
	}
}