eD=eU=e3=e4=e_I=e_F=nSpans=nParole=0

Wds=[]
Atr=[]
Ann=[]
Ute=[]
Ael=[]
Tags=[]

pUte=[]
pCol=[]
pAbs=[]
pAbe=[]
pNot=[]

pColSing=[]
pTip=[]

sOrig=""
usrPre=idox=iNid=0

sBef1='<SPAN style="BACKGROUND-COLOR:'
sBef2='">'
sAft1='<SUP style="COLOR: red">'
sAft2="</SUP></SPAN>"

function cercaIntorno(xy,a)
{	var Uel=Ael.length-1
	var iz=(a<30)?0:a-30
	var fi=(a>(Uel-30))?Uel:a+30
	var iTab=0
	var bTop,bBot
	var x1,y1,x2,y2
	var tY=xy.y 
	var tX=xy.x 
	for(var i=iz; i<=fi;i++)
	{	var e=gtOb("k"+i)
		if(e)
		{	var c=gtCoords(e)
			x1=c.x
			y1=c.y
			x2=x1+e.offsetWidth
			y2=y1+e.offsetHeight
			if (i==iz && tY<y1)bTop=1
			if (i==fi && (tY>y2 || (tY>y1 && tX>x1)))bBot=1
		
		}
		if (tX<=x2 && tX>=x1 && tY >= y1 && tY <= y2) 
		{	//alert (tX+"<="+x2+" && "+tX+">="+x1+"&&"+tY+">="+y1+"&&"+tY+"<="+y2) 
			return i
		}
		if(((x1>tX && y2>tY) ||(y1>tY)) && !iTab) iTab=i-1
	}
	return bTop?1:bBot?fi:iTab?-iTab:-1
}

function RicercaBin(xy,nH)
{   var tY=xy.y 
	var tX=xy.x 
  	var nL=0
	var nM
	while (nL<=nH) 
	{	nM=(nL+nH)
		nM>>=1
		var el=gtOb("k"+nM)
		if(!el)	return 0
		var c=gtCoords(el)
		var x1=c.x
		var y1=c.y
		var x2=x1+el.offsetWidth;
		var y2=y1+el.offsetHeight;
		if	(tY>y2){nL=(nL==nM)?nM+1:nM}
		else if (tY<y1){nH=(nH==nM)?nM-1:nM}
		     else	break
	}
	 return nM 
}

function CercaFrase()
{ 	var Uel=Ael.length-1
	var a,A,b,B
	a=RicercaBin(eD,Uel)
	A=cercaIntorno(eD,a)
	if(eD.x==eU.x && eD.y==eU.y)B=A
	else
	{	b=RicercaBin(eU,Uel)		
		B=cercaIntorno(eU,b)
	}
//
	if (top.penn<5 && (A<0 || B<0)) brevMsg('<span style="position:absolute;top:4;width:'+g_colonnaSx+'"><center><img src=img/ms1.gif></center></span>',3000)
//
	a=A>0?A:-A
	b=B>0?B:-B
	e_I=a<b?a:b
	e_F=a<b?b:a
	if ((e_I<0) && (e_F<0))return 0
	return 1
}

function storeXY(e)
{  o=new Object()
   o.x=e.pageX || (e.clientX+d.body.scrollLeft) 
   o.y=e.pageY || (e.clientY+d.body.scrollTop) 
   return o  
 }

function mDown(e){if(gtOb('TxXx')) eD=storeXY(e)}

function mUp(e) 
{ 	
	top.eX=e.clientX
    top.eY=e.clientY
	top.eU=eU=storeXY(e)
	if (!gtOb('TxXx'))return
	var n=CercaFrase()
	if(top.MS && d.selection)d.selection.empty()
	if (!isSaf()&&window.getSelection) window.getSelection().removeAllRanges()
	if(!top.penn) brevMsg('<span style="position:absolute;top:4;width:'+g_colonnaSx+'"><center><img src=img/ms.gif></center></span>',3000)
 	else if(n)sl1()
}

function linkEsterno(lk) 
{	return window.open(lk, 'aa') 
}

function mUp_gloss(n) 
{
	for(var i in top.pGl)if (top.pGl[i][0]==n)
	{	var g=top.Glx[top.pGl[i][1]]
		if (g[8] && g[8].length && g[8]!='ROOT' && g[1].indexOf('PM')>=0) DUH('PAGE=GLOSSARI&ID='+g[1].substring(6,g[1].length))
		else if (g[7].indexOf('upload/all')>=0 || g[7].indexOf('upload/all')>=0 || g[7].indexOf('http://')>=0 || g[7].indexOf('https://')>=0)linkEsterno(g[7])
		else if (g[6] && g[6].length && g[6].indexOf('page=unita')>=0) ldr0(g[6])
	}
}

function HdGloss()
{  	var	s=$('GLOSSARIO')
	if (s)stInH("GLOSSARIO",'')
}

function ShGloss(n)
{  	var	s=tMG()
  	if(s)
	{	var g=top.Glx[n]
		var z= eval("top.ril"+g[0]+"(g[1],g[2],g[3],g[4],g[5],g[6],g[7],g[8])")
		stInH("GLOSSARIO",'<img src=menu_img/glos.gif border=0><br>'+z)
	}
}


function leggiUU()
{	var tr=gtP("Tracc")
	var id=gtP("ID")
	if (id=="#")return 0
	stP('CurP',id)
 	compattaUU()
	var v="UU="+tr+","+id
	if (nSpans) for (i=0; i<nSpans; i++) v+=","+pAbs[i]+","+pAbe[i]+","+pCol[i]+","+escape(pNot[i])
	stP("ID","#")
	return v
}


function salvaUU()
{   if(gtP("needUU")=="Y")
	{	var uu=leggiUU()
		if(uu)eval("LoadTemp(GetApp('"+uu+"'))")
	}
}


function compattaUU()	  
{ 	
	ERR1
	Atr=[]
	pNt=[]
    for (i=0;i<nSpans;i++)
	{	
		for(j=pAbe[i];j>=pAbs[i];j--)
		{	
			if(pCol[i]==4 )pNt[j]=pNot[i]
			if (Atr[j]!=4) Atr[j]=pCol[i] 
			pNot[i]=""
		}
	}
   	for (s=curC=ix=i=0;i<=nParole;i++)
	{	c=(0 || Atr[i])
		if(c!=curC ||pNt[s]!=pNt[i])
		{   if (curC)
			{	
				pAbs[ix]=s
				pAbe[ix]=i-1
				pCol[ix]=curC
				if(curC==4)	pNot[ix]=pNt[s]
				ix++
			}
			curC=c
			s=i
		}
	}
	nSpans=ix
	ERR1
}


function annot(txt,Y,X)
{	var Th=185
	var Tw=277
	if (!tMC()) return	
//
	var o=gtXEl("P","uFrame")
	if (o){o.value=txt?(txt.replace(/&#44;/g,",")):"";o.value=txt?(txt.replace(/&lt;/g,"<")):""}
//	
	var Xmax=gtTopW()-Tw
    var Ymax=gtTopH()-Th 
	var oxI=X+170
	var oyI=Y+110
	var step=5
	var w=Tw/step
	var h=Th/step
	for(i=0;i<=step;i++)
	{	var ox=oxI-((oxI>Xmax)?w*i:0)
		var oy=oyI-((oyI>Ymax)?h*i+20:0)
		var n=40*i
		var alt=h*i
		var larg=w*i
		setTimeout('_annot('+oy+','+ox+','+alt+','+larg+','+(i==step)+')',n)
	}
}

function _annot(a,b,c,d,last)
{	PosFram("P",a,b,c,d)
	if(last)
	{	var i=gtCEl("figura")
		if (i) i.innerHTML=top.z02a
		var o=gtXEl("P","uFrame")
		if (o)o.focus()	
	}
}

function ERR1()
{   var err=""
	for (i=0;i<nSpans;i++)	err+=" pAbs:"+pAbs[i]+" "+" pAbe:"+pAbe[i]+" col:"+" pCol:"+pCol[i]+" pNot:"+pNot[i]+"\r\n" 
    err+="\r\n"
	alert(err)
}


function insNota(f)
{   PosFram("P",5000,0,0,0)
	var i=gtCEl("figura")
	if (i) i.innerHTML=top.z02a
	if (f){
		var o=gtXEl("P","uFrame")
		if (o)
		{	f=o.value
			f0=f.replace(/\</g,"&lt;")
			f1=f0.replace(/<\S[^>]*>/g,"")
			f=f1.replace(/\,/g,"&#44;")		
			if(f!="")
			{	sl2()
				pNot[nSpans-1]=f
			}
			sl3()
		}
	}
}

function undo()
{  	k=nSpans-1
	if (k<0)k=0
	for (i=k;i<nSpans;i++){pAbs[i]=0;pAbe[i]=0;pCol[i]=0;pNot[i]=""}
	nSpans=k
	sl3()
}

function sl1()	  
{  	var v=gtCEl("k"+e_F)
	if(v && top.penn=='5')annot(Ann[e_F],findY(v)+v.offsetHeight-gtClBody().scrollTop,findX(v)+v.offsetWidth/2)
    else
	{ sl2();sl3()
	}
}

function sl2()	  
{   ix=nSpans
	pCol[ix]=top.penn-1
	pNot[ix]=""
	pAbs[ix]=parseInt(e_I,10)
	pAbe[ix]=parseInt(e_F,10)
	++nSpans
}

function Delphi(n)	  
{   var a=1+n.indexOf("_")
	var b=1+n.lastIndexOf("_")
	if (a<1 || b==a) return
	nDom=n.substr(a,b-a-1)
	nRis=n.substr(b)
	for (var i=0;i<10;i++)
	{	e= gtCEl("Delphi_"+nDom+"_"+i)
		if (e) e.src=i==nRis?"img/si.gif":"img/no.gif"
	} 
}

function primav(val)
{  	stP("Albero","N") //si 12/12
	sOrig=top.TnwXXX
   	e=-1;i=0;j=0
 	var rel=gtP("Reload")
	if (rel!="Y")
	{	if(val!="")for(;;)
		{	s=++e
			e=val.indexOf(',',s)
			v=val.substring(s,(e<0)?val.length:e)
			n=parseInt(v,10)
			if(i==0)pAbs[j]=n
			if(i==1)pAbe[j]=n
			if(i==2)pCol[j]=n
			if(i==3)pNot[j]=unescape(v)
			if(++i==4){i=0;j++}
			if(e<0)break
		}
		 nSpans=j
	}
	sl3()
}

function mucol(val)
{   if (inAttesa("C",mucol,mucol.arguments) ||(!gtCEl("TxXx")))return
    stP("Albero","N") //si 12/12
	sOrig=top.TnwXXX
    if(val=="")return
   	r=0;g=0;b=0
	e=-1;i=0;j=0;for(;;)
	{	s=++e
		e=val.indexOf(',',s)
		if(e<0)break
		v=val.substring(s,(e<0)?val.length:e)
		n=parseInt(v,10)
		if(i==0)pUte[j]=v
		if(i==1)pAbs[j]=n
		if(i==2)pTip[j]=n //tip
		if(i==3)pCol[j]=v //
		if(i==4)pColSing[j]=n
		if(i==5)pAbe[j]=v
		if(i==6)pNot[j]=v
		if(++i==7){i=0;j++}
	}
   	nSpans=j
	sl4()
}

function sl3()	  
{	stP("needUU","Y")
	Zero()


	var tag=""
	var s,i,e,s=0,i=0,e=0
	sOrig=sOrig.replace(/\<\/\§a/g,"§</a")

	for(;;)
	{  	e=1+sOrig.indexOf('§',s)
		Atr[i]=0
		///////
		var ww=(sOrig.substring(s,e?e-1:sOrig.length))
		var w=Trim(ww)
		var lh=w.length
		if(i&&!lh)Wds[i-1]+=ww //accodo blanks al precedente
		if(w.substring(0,1)=="<" && w.substring(lh-1,lh)==">")Tags[i]=(Tags[i])?(Tags[i]+ww):ww
		else if (lh) Wds[i++]=ww 
		s=e
		if(e<1)break
	}
	nParole=i
	for (i=0;i<nSpans;i++)
	{	for(j=pAbs[i];j<=pAbe[i] && j<=nParole;j++)Atr[j]=pCol[i]
		if(pNot[i])Ann[--j]=pNot[i]
	} 

// 2009 ricerca xxID:(PMID:,MLID: ecc)
	var og=-1
	for (i=0;i<top.pGl.length;i++)
	{	var g=top.pGl[i]
		Atr[g[0]]+=100
		var p=top.Glx[g[1]]
		if(p[1].indexOf("ID:")==2){if (g[1]!=og[1] || g[0]>parseInt(og[0])+1)Wds[g[0]]=p[5]+" "+p[2]; else Wds[g[0]]=""} 
		og=g
	} 
///

  	s=0; curC=ix=0
    	var nDom=0,nRis=0,zz="",z="",k=0
	for (var i=0;i<=Wds.length;i++)//l'ultimo potrebbe essere un tag
	{	///
		var W=Wds[i]?Wds[i]:''
		if (W=="<!--DOMANDA-->"){nRis=0;nDom++}
	    	else if (W=="<!--RISPOSTA-->") 
		{   
		 	W="<img style='cursor:hand;' id =Delphi_"+nDom+"_"+nRis+" src=img/nond.gif>&nbsp;"
			Atr[i]=7 
			nRis++
		}
		///
		if (Tags[i])z+=Tags[i]
		if (Atr[i]<0) z+=W
		else
		{   Ael[Ael.length]=i
			var atr=0|Atr[i]
			if (atr>99)atr-=100
			z+="<span id ='k"+i+"' class='TXX"+atr
			if (Atr[i]>99) z+="'style='color:#2F8D6B; color:#990000; font-weight:300;cursor:pointer;' onmouseup='mUp_gloss("+i+")' onmouseover='mOver("+i+")"
			z+="'>"+W+"</span>"
			if (Ann[i]){z+="<sup class='TXnota'>"+Ann[i]+"</sup>"}
		}
   		if(++k>13){zz+=z;z="";k=0}
	}
	zz+=z
	zz+="<br><br><br><br>"
	top.$("TxXx").innerHTML=zz
	
}

function Zero(){Wds.length=Atr.length=Ann.length=Ael.length=Tags.length=0}

function sl4()	  
{	Zero()
	var tag=""
	var s,i,e,s=0,i=0,e=0
	for(;;)
	{  	e=1+sOrig.indexOf('§',s)
		Atr[i]=0
		var ww=(sOrig.substring(s,e?e-1:sOrig.length))
		var w=Trim(ww)
		var lh=w.length
		if(i&&!lh)Wds[i-1]+=ww //accodo blanks al precedente
		if(w.substring(0,1)=="<" && w.substring(lh-1,lh)==">")Tags[i]=(Tags[i])?(Tags[i]+ww):ww
		else if (lh) Wds[i++]=ww 
		s=e
		if(e<1)break
	}
	nParole=i
	/////////
	if (nSpans)
	{	for (i=0;i<nSpans;i++)if (pTip[i])
		{	if(pNot[i])	
			{	var j=pAbe[i]
				while(Ann[j])
				{	if (Ann[j]!=pNot[i])j++
				} 
				Ute[j]="["+pUte[i]+"]"
				Ann[j]=pNot[i]
				Atr[j]=pCol[i]
			} 
			else for(j=pAbs[i];j<=pAbe[i] && j<=nParole;j++) Atr[j]=pCol[i]	
		} 
	}
	/////////
    var nDom=0,nRis=0,zz="",z="",k=0	
	for (var i=0;i<Wds.length;i++)
	{	if (Tags[i])z+=Tags[i]
		if (!Atr[i]) z+=Wds[i]
		else
		{   Ael[Ael.length]=i
			z+="<span id ='k"+i+"' style='BACKGROUND-COLOR:"+Atr[i]+";' onmouseout='mOut("+i+")' onmouseover='mOver("+i+")"
			z+="'>"+Wds[i]+"</span>"
			if (Ann[i]){ z+="<sup class='TXnota' onmouseout='mOut("+i+")' onmouseover='mOver("+i+")'>"+Ute[i]+"</sup>"}
		}
   		if(++k>13){zz+=z;z="";k=0}
	}
	z+="<br><br><br><br>"
	top.$("TxXx").innerHTML=zz+z
}

function mOut(n){HdGloss()}

function mOver(n)
{	
	var o=top.$("k"+n)
	if(!o) return
	var y=gtCoords(o).y-100
	if (y<410)y=410
	var	s=top.$('GLOSSARIO')
	s.style.top=""+y+"px"

	for (i=0;i<top.pGl.length;i++)
	{	if (top.pGl[i][0]==n)
		{	ShGloss(top.pGl[i][1])
			return
		}
	}
}




///////////////////////////
function invioEsame(f0,f1)
{   stP("ESAFIN","2")
	f0.W.value=gtP("Token")
	f0.RISPOSTE.value=gtP("Risposte")
	f0.submit()
	top.$("C0").innerHTML=mkTit("Esame finale",1)+"<br><br>Le domande sono state inviate. Si prega di non premere altri tasti.<br><br><small>N.B. Se la risposta del server non viene visualizzata entro una decina di secondi può significare che, per qualche problema intervenuto sulla rete, la connessione con il server non è più attiva. In questa sfortunata evenienza è necessario aprire una nuova sessione (chiudere e riaprire la finestra del browser) e ripetere l'esame.</small>"
	stP("Risposte","#")
}

function salvaEsame(f1)
{   var nR=0
	var risp=[]
	for (i=0;i<64;i++) risp[i]="-"
	var ar=document.getElementsByTagName("input")
			for (i=0; i<ar.length;i++)
			{  	var e=ar[i]
			    if (e.type!="radio") continue 
		        nD=parseInt(nR/5,10)
				if (e.checked) risp[nD]=""+(1+nR-nD*5)
				nR++
			}
	var z="";for (i=0;i<64;i++) z+=risp[i]		
	stP("Risposte",z)
}


