var cBC=[]
var dipzC=[]
var descrZ=[]


function trovaElemento(n)
{	var o=$(n)
	if (o) return [o,1]
	else{o=gtFld(n);if (o && o.length) return[o[0],o.length]}
	return [0,-1]
}

function gtBox(n,nTag)
{	var oL=trovaElemento(n.toUpperCase())
	var o=(oL&&oL.length)?oL[0]:0 
	var uTag=nTag.toUpperCase()
	for(;;)
	{	if(!o) alert(n+" "+gtBox.caller)
		if(!o.parentNode)return 0
		o=(o.parentNode)
		if (!o.tagName) alert("tagName non trovato "+oL)
		else if(o.tagName.toUpperCase()==uTag)return o
	}
}

function trovaColonna(n){return gtBox(n,"TD")}
function trovaRiga(n)	{return gtBox(n,"TR")}
function trovaTabella(n){return gtBox(n,"TABLE")}


function SetValue(n,v)
{	var c=n?gtFld(n.toUpperCase()):0
	if(!c||!c.length){return 0}
	e=c[0]

	
	if(!e.name)
	{   return
	}
	if (e.type=='checkbox')e.checked=parseInt(v,10)
	else if (e.type=='radio'){for (var j=0;j<c.length;j++){if(c[j].value==v)c[j].checked=true}}
	else if (e.type=='textarea' || e.type=='text') e.value=v;
	else if (e.type=="select-one")
	{	
		for (i=0;i<e.options.length;i++)
		{  
		   if (v==Trim(e.options[i].text))	e.selectedIndex=i
		}
	}
	
	
	if(e.name.toUpperCase()!="ID" && !DX_popola)salvaEdit(e);
	return 
}

function doEvent(o,e)
{  
	if(!e) var e=event
	verifica(o.name,o.value,e)
	salvaEdit(o);
}

function trovaValoreCampo(n,tipoVal)
{
	if (!n)return(0)
	var N=n.toUpperCase()
	var z="",e=0,lu=0
	var c=gtFld(N)
	if(c)
	{	lu=c.length
		if(lu)e=c[0]
	}
	if(!e)  return 0 //alert("errore in trovaValoreCampo: "+n)
	else if (e.type=="checkbox") z=e.checked?1:0
	else if (e.type=="radio"){for (var i=0;i<lu;i++) if (c[i].checked) z=c[i].value}
	else if (e.type=="select-one"){var ix=e.selectedIndex;if (ix>=0) z=e.options[ix].value||""}
	else 
	{	z=e.value
		if (tipoVal=="F") z=parseFloat((z+"").replace(/,/, "."),10)
		else if (tipoVal=="D") z=(e.type!="checkbox")?parseInt(z, 10):z
		else z=z+""
	}
	return z
}


function Popola()
{	
	DX.qxdt=top.dati
	setTimeout(" _Popola()",0)
}

function _Popola()
{
	if(!$("END")){setTimeout("_Popola()",300);return}
	DX_popola=1
	if(DX.qxdt)	for(var i=0;i<DX.qxdt.length;i++)
	{   
		SetValue(DX.qxdt[i][0],DX.qxdt[i][1])
	}
	var ch=$("C0").getElementsByTagName("INPUT")
	for (var i=0;i< ch.length;i++)
	{
		verifica(ch[i].name)
	}
	if (dati.PostPopola) for (var i=0;i<dati.PostPopola.length;i++) eval(dati.PostPopola[i]);
	DX_popola=0
}


function isValidName(txt)
{	var letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_"
	var nums="0123456789"	
	for(var j=0;j<txt.length;j++) 
	{	var c=txt.substring(j,j+1)
		if(letters.indexOf(c)<0 &&(j==0 ||nums.indexOf(c)<0))
		{	alert("CAMPO NON VALIDO: "+txt) 
			return false 
		}
	}
	return true
}


function DIPENDE(tipo, destinazione, condz, display,tipoVis)
{	var l = DIPENDE.arguments.length
	var origine
	var reAND= / E /ig
	var reOR= / O /ig
	var reBLANK= / /g
	var reMAGGIORE= /&gt;/g
	var reMINORE= /&lt;/g
	var reSPLIT= /([^a-zA-Z0-9_\-,\.]+)/
	var reSPLIT1= /[^a-zA-Z0-9_\-,\.]+/
	var arrCond=[]
	var err = ""
	var match
	var idx1 = 0
	var idx2 = 0
	if (l<3)return ""
	
	condz=condz.replace(reAND, "&&")
	condz=condz.replace(reOR, "||")
	condz=condz.replace(reBLANK, "")
	condz=condz.replace(reMAGGIORE, ">")
	condz=condz.replace(reMINORE, "<")
	
	var dummyArray = condz.split(reSPLIT1)
	var dummyStr = condz;
	for (var i=0;i<dummyArray.length;i++)
	{	idx1=dummyStr.indexOf(dummyArray[i])
		if (idx1>0)arrCond.push(dummyStr.substring(0,idx1))
		arrCond.push(dummyArray[i])
		dummyStr = dummyStr.substring(idx1+dummyArray[i].length)
		if ((i==(dummyArray.length-1)) && (dummyStr.length > 0))arrCond.push(dummyStr)
	}
	dummyArray = trovaSorgentiEDomizzaCondizione(arrCond)
	arrCond = dummyArray[1]
	var arraySorgenti =  dummyArray[0]
	err = dummyArray[2]
	condz = arrCond.join(' ')
	if (err!=""){alert("Dip:"+err);return ""}
	for (var i=0;i<arraySorgenti.length;i++)
	{	origine=arraySorgenti[i]
		if (!display) display=origine
		var dipendenza=[destinazione,tipo,condz,display, tipoVis ? tipoVis:1]
		var dip=(dipzC[origine])? dipzC[origine]:[]
		dip.push(dipendenza)
		dipzC[origine]=dip
	}
	return "&nbsp;"
}


function gv(n)
{	var v=-1
	var c=document.getElementsByName(n)
	if (c && c.length) 
	{	e=c[0]
		if (e.type=='checkbox' && e.checked) v=1
		else if (e.type=='radio') for (var j=0;j<c.length;j++){if(c[j].checked) v=c[j].value }
		else v=e.value
	}
	return v
}


function setControlloBaseCampi(ctrl,el,targ,vis,display)
{
	if (ctrl)ctrl[1]=vis
	else
	{ 	var t=el.type
		if (t=="text"||t=="password")
		{	ctrl= ["trovaValoreCampo('"+targ+"','S').length>=1 && trovaValoreCampo('"+targ+"','S').length<="+el.maxLength+"",vis,display]}
		else if (t=="checkbox" || t=="radio" || t=="select-one")
		{	ctrl=["trovaValoreCampo('"+targ+"','S')!=''",vis,display]}
	}
	return ctrl
}

function salvaEdit(e)
{ 	
	var n=e.name
	if(!DX.QX || n=="ID")return
	var v=(e.type=='checkbox')?e.checked?e.value:"":e.value
	var x=gtP("ID_CTXT")
	var c=gtP("ID_CASO")
	if (x!="#") 
	{	var z="SALVA_DATI=DATI_CLINICI"
		+"&ID_CASO="+escape(c)
		+"&ID_CTXT="+escape(x)
		+"&ID_CAMPO="+escape(n)
		+"&VALORE="+escape(v)
		DUX(z)
	}
}

function verifica(n,v,e) 
{
	var N=n.toUpperCase()
	var z="OnChange_"+N
	if (top[z] &&  top[z]("*")) return

	///////06 var cBC=top.controlliBaseCampi
	if(!e) var e=window.event;
	var tipEv=e?e.type:0
	
	var err=false
	var arrSC=[]
	var arrerrSC=[]

	if (dipzC && dipzC[n])
	{	
		var dips=dipzC[n]		
		var targ,domtarg,tipo,trigval,elems,targval,output,tVis
		var elementoD=null
	
		for (var i=0;i<dips.length;i++)
		{
			var dd=dips[i]
			targ=dd[0];tipo=dd[1];trigval=dd[2];display=dd[3];tVis=(dd[4]?dd[4]:1)
			elems=document.getElementsByName(targ)
			
			if (tipo=="formula")
			{	var esito="Errore"
				try {	
						esito=eval('top.formula'+display+'()');
						SetValue(targ,esito)
					}
					catch(e){}
			}
			else if (tipo=="campo" || tipo=="gruppo")
			{	
				var vis=eval(trigval)
				cBC[n]=cBC[n]||[]
				cBC[targ]=cBC[targ]||[]
				cBC[display]=cBC[display]||[]

				for (var j=0;j<elems.length;j++)
				{
					targval=trovaValoreCampo(targ,"S")
					cBC[targ][targ]=setControlloBaseCampi(cBC[targ][targ],elems[j],targ,vis,display)
				
					if (n != targ)
					{
						cBC[n][targ]=setControlloBaseCampi(cBC[n][targ],elems[j],targ,vis,display)
						cBC[targ][n]=setControlloBaseCampi(cBC[targ][n],elems[j],targ,vis,display)
					}
					
					if (n!=display)
					{
						cBC[display][n]=setControlloBaseCampi (cBC[display][n],elems[j],targ,vis,display)
						if (! err && vis){err = verifica(targ,targval)}
					}
									
				}
				domtarg = "T_"+targ
				if (gtOb(domtarg))	elementoD=trovaElemento(domtarg)[0]
				else
				{	var tipoED
					var lungED
					elementoD=trovaElemento(targ)
					if (elementoD[0])
					{
						tipoED=elementoD[0].type
						lungED=elementoD[1]
						if (tipoED)
						{
							if (tipoED=="radio")elementoD=trovaRiga(targ)
							else if (tipoED=="checkbox" || tipoED=="select-one")
							{
								if (lungED>1) elementoD=trovaRiga(targ)
								else		  elementoD=trovaColonna(targ)
							}
							else			  elementoD=trovaColonna(targ)
						}
					}
				}
			}
			else if (tipo=="riga")		elementoD=trovaRiga(targ)
			else if (tipo=="colonna")	elementoD=trovaColonna(targ)
			else if (tipo=="tabella" || tipo=="gruppo")elementoD=trovaTabella(targ)

			gestioneVisibilita(elementoD,vis,tVis)

			if (tipo=="gruppo" && err==false && vis) err=verifica(targ,trovaValoreCampo(targ,"S"))
		}
	}
	if (cBC[n])
	{
			for (var ctrl0 in cBC[n])
			{
				var ctrl=cBC[n][ctrl0]
				arrSC.push(ctrl[2])
				
				if (tipEv)
				{	if (!arrerrSC[ctrl[2]])	arrerrSC[ctrl[2]]=false
					if (ctrl[1] && !arrerrSC[ctrl[2]] && 
					tipEv=="change"||tipEv=="click"||tipEv=="keyup") arrerrSC[ctrl[2]]=!eval(ctrl[0])
				}
				else if (ctrl[1] && !arrerrSC[ctrl[2]]) arrerrSC[ctrl[2]]=!eval(ctrl[0])
			}				
	}

	for (var i=0;i<arrSC.length;i++)
	{  	if (gtOb("SC_"+arrSC[i]))gestioneSegnalazioneErrore(arrSC[i],arrerrSC[arrSC[i]])
	}
	return arrerrSC[n]

} 


function gestioneSegnalazioneErrore(n, ok)
{	var colore=(ok+""=="false"?"#008800":"#FF0000")
	if (gtOb("SC_"+n))gtOb("SC_"+n).style.color=colore
}







function abilita(n,yn,t)
{	
	var c=trovaColonna(n)
	if(c) gestioneVisibilita(c,yn?1:0,t?t:1)
} 


function getAllChildren(n,a)
{	if(!n || !n.childNodes) return[]
	var x=n.childNodes;for(var i=0;i<x.length;i++)
	{if(x[i].tagName){a.push(x[i]);getAllChildren(x[i],a)}}
}


function gestioneVisibilita(obj,vis,tip)
{	var cDisab="dpTD";var cInvisH="dpInvHTD";var cInvis="dpInvTD"
	if (obj)
	{	ELcambiaClasse(obj,"",(tip==2?cInvisH:tip==3?cInvis:cDisab),vis)
		var ch=[]
		getAllChildren(obj,ch)
		for (var i=0;i< ch.length;i++)
		{	if (ch[i].type && (tip<2||tip>3))
			{	ch[i].disabled=(vis)?"":"disabled"
				ELcambiaClasse(ch[i],"",cDisab,vis)
				if (ch[i].type=="radio")
				{	ELcambiaClasse(ch[i-1],"",cDisab,vis);
					ELcambiaClasse(ch[i+1],"",cDisab,vis)
				}
			}
			if (!vis &&(ch[i].type||ch[i].tagName.toLowerCase()=="select"))SetValue(ch[i].name,"");
		}
	}
}




function trovaSorgentiEDomizzaCondizione(inArr,tp)
{	var retArr=new Array()
	var reALFA=/[a-zA-Z_]/
	var reNUM =/[0-9\-,\.]/
	var reVIRGOLA=/[,]/
	var numOpenPar=0
	var numClosedPar=0
	var numBool=0
	var numRight=0
	var numLeft=0
	var tipoDato="D"
	var canHaveField=(tp&&tp>0)?true:false
	var err=""
	for (var i=inArr.length-1;i>=0;i--)
	{	var x=inArr[i]
		if (x.match(reALFA))
		{	if (canHaveField)
			{	retArr.push(x)
				x="trovaValoreCampo('"+x+"','"+tipoDato+"')"
				numLeft+=1
			}
			else
			{	canHaveField=true
				tipoDato="S"
				numRight+=1
				x=x+'+""'
			}
		}
		else if (x.match(reNUM))
		{	x=x.replace(reVIRGOLA, ".")
			tipoDato=(x.indexOf(".")>-1)?"F":"D"
			canHaveField=true
			numRight+=1			
		}
		else
		{	if(x=="=") x="=="
			else if(x=="<="||x=="=<") x="<="
			else if(x==">="||x=="=>") x=">="
			else if(x=="!="||x=="<>"||x=="=!") x="!="
			if(x==">")x=">"
		}
		inArr[i]=x
	}
	return [retArr,inArr,err]
}

function autoPost(h,a,b)
{
	ldr0(h+_autoPost(a,b))
	return 0
} 
function _autoPost(a,b)
{
	var z=''
	if (a)for(var i=0;i<a.length;i++)
	{	var n=a[i]
		var v=trovaValoreCampo(n)
		 z+="&"+n+"="+escape(v)
	}
	if (b)for(i=0;i<b.length;i+=2)
	{	var n=b[i]
		var v=b[i+1]
		 z+="&"+n+"="+escape(v)
	}
	return z
} 

function esistOP(a,st)
{	var n=0
	for(var j=0;j<a.length;j++) n+=st.indexOf(a[j])
	return n<0?true:false	
}

function gtDati(n)
{	for(var i=0;i<dati.length;i++)if (dati[i][0]==n)return dati[i][1];return'-'
}

function gtIdDatoClinico(n)
{	for(var i=0;i<dati.length;i++)if (dati[i][0]==n)return dati[i][2];return''
}

