//inizio aggiunta by Nedo se non volete il capitano non lo scrivete, oppure scrivetelo e lasciate capitano=false
var capitano = true;
//fine aggiunta by Nedo se non volete il capitano non lo scrivete, oppure scrivetelo e lasciate capitano=false
// Oggetto Formazione (abbreviato Z)
function Z(IDIncontro,IDSquadra,IDLega,Nome,SquadraDiA,Ruolo,Pos,Rig) {
	this.IDIncontro = IDIncontro
	this.IDSquadra = IDSquadra
	this.IDLega = IDLega
	this.Nome = Nome
	this.SquadraDiA = SquadraDiA
	this.Ruolo = Ruolo
	this.Pos = Pos
	this.Rig = Rig
}

function GetFormazione(IDIncontro,IDSquadra,IDLega) {
// scorre la lista delle formazioni e ritorna tutte quelle che 
// hanno i tre valori corrispondenti. Quindi le ordina per pos
// mettendo pero' quelli con -1 alla fine e non all'inizio
var arr = new Array()
var i,cnt=1
var tipo,pPrimo,pUltimo
	for (i=1;i<arrFormazioni.length;i++) {
	//inizio modifica by Nedo
		if ((typeof arrFormazioni[i].Commento == 'undefined') && (arrFormazioni[i].IDIncontro==IDIncontro) && (arrFormazioni[i].IDSquadra==IDSquadra) && (arrFormazioni[i].IDLega==IDLega)) {
	//fine modifica by Nedo
			arr[cnt]=new Z
			arr[cnt]=arrFormazioni[i]
			cnt++
		} else {
			if (cnt>1) i=arrFormazioni.length
		}
	}
	//ordina
	for (i=1;i<arr.length;i++) {
		if (arr[i].Pos==-1) arr[i].Pos=999
	}
	if (arr.length>1) {
		QuickSortFormazioniPos(arr,1,arr.length-1)
		for (i=1;i<arr.length;i++) {
			if (arr[i].Pos==999) arr[i].Pos=-1
		}
		//ora ordina per ruolo all'interno delle tipologie
		// titolari
		pPrimo=arr.length-1
		pUltimo=1
		for (i=1;i<arr.length;i++) {
			if (arr[i].Pos==0) {
				if (i<pPrimo) pPrimo=i
				pUltimo=i
			}
		}
		if (pPrimo<pUltimo)	QuickSortFormazioniRuolo(arr,pPrimo,pUltimo)
		//riserve
		pPrimo=arr.length-1
		pUltimo=1
		for (i=1;i>arr.length;i++) {
			if (arr[i].Pos>0) {
				if (i<pPrimo) pPrimo=i
				pUltimo=i
			}
		}
		if (pPrimo<pUltimo)	QuickSortFormazioniRuolo(arr,pPrimo,pUltimo)
		//tribuna
		pPrimo=arr.length-1
		pUltimo=1
		for (i=1;i<arr.length;i++) {
			if (arr[i].Pos==-1) {
				if (i<pPrimo) pPrimo=i
				pUltimo=i
			}
		}
		if (pPrimo<pUltimo)	QuickSortFormazioniRuolo(arr,pPrimo,pUltimo)
	}
	return arr
}

//inizio aggiunta by Nedo
function Commenti(IDIncontro,IDSquadra,IDLega,Cap,Vic,Ora,Commento) {
	this.IDIncontro = IDIncontro
	this.IDSquadra = IDSquadra
	this.IDLega = IDLega
	this.Cap = Cap
	this.Vic = Vic
	this.Ora = Ora
	this.Commento = Commento
}

function GetCommento(IDIncontro,IDSquadra,IDLega) {
	var i=1
	if (arrFormazioni[i] != null){
		for (i=1;i<arrFormazioni.length;i++) {
			if(typeof arrFormazioni[i].Commento != 'undefined'){
				if ((arrFormazioni[i].IDIncontro==IDIncontro) && (arrFormazioni[i].IDSquadra==IDSquadra) && (arrFormazioni[i].IDLega==IDLega))
				return arrFormazioni[i]
			}
		}
	}
	return null
}
//fine aggiunta by Nedo

function QuickSortFormazioniPos(arr,s,d) {
var i,j,X,m
var z1
	i = s
    j = d
    X = arr[Math.floor((s+d)/2)].Pos
    do {
		while (arr[i].Pos < X) {
			i++
		}
        while (X < arr[j].Pos) {
			j--
		}
		if (i<=j) {
			z1=arr[i]
			arr[i]=arr[j]
			arr[j]=z1
            i++
			j--
		}
	} while (i<=j)
	if (s<j) QuickSortFormazioniPos(arr,s,j)
	if (i<d) QuickSortFormazioniPos(arr,i,d)
}

function QuickSortFormazioniRuolo(arr,s,d) {
var i,j,X,m
var z1
	i = s
    j = d
    X = arr[Math.floor((s+d)/2)].Ruolo
    do {
		while (arr[i].Ruolo < X) {
			i++
		}
        while (X < arr[j].Ruolo) {
			j--
		}
		if (i<=j) {
			z1=arr[i]
			arr[i]=arr[j]
			arr[j]=z1
            i++
			j--
		}
	} while (i<=j)
	if (s<j) QuickSortFormazioniRuolo(arr,s,j)
	if (i<d) QuickSortFormazioniRuolo(arr,i,d)
}

function GeneraFormazioni(cGio,cComp) {
var arrI = new Array()
var f = new Array()
var tabe = new Object()
var str="",i,j
var ruolo,pd,colore
	// includi nel documento il file js corrispondente alla giornata
	//document.write("<script src='js/fcmFormazioniDati"+cGio+".js' type='text/javascript'></scr" + "ipt>")
	// carica la lista degli incontri di questa giornata e competizione
	arrI = RiempiListaIncontri(cGio,cComp) 
	// per ogni incontro
	// 1- apri un layer
	// 2- crea la tabella
	for (i=1;i<arrI.length;i++) {
		// layer di intestazione
		// MODIFICA PUFFIN SCUDO
		document.write("<div id='lay"+arrI[i].ID+"H' class='IntLayer'><a href='#' onClick='invertiDisplayLayer(\"lay"+arrI[i].ID+"\")'>"+Scudo(arrI[i].Nomi.Casa)+((arrI[i].IDTipo==INC_GRANPREMIO)?"":" - "+Scudo(arrI[i].Nomi.Fuori))+"</a></div>")
		//document.write("<div id='lay"+arrI[i].ID+"H' class='IntLayer'><a href='#' onClick='invertiDisplayLayer(\"lay"+arrI[i].ID+"\")'>"+arrI[i].Nomi.Casa+((arrI[i].IDTipo==INC_GRANPREMIO)?"":" - "+arrI[i].Nomi.Fuori)+"</a></div>")
		// FINE MODIFICA PUFFIN SCUDO
		// layer di contenuti
		document.write("<div id='lay"+arrI[i].ID+"' style=' height=100%'>")
		// tabella che contiene gli incontri
		document.write("<center><table width='95%' border=0 cellpadding=0 cellspacing=0><tr><td height='20' colspan="+((arrI[i].IDTipo==INC_GRANPREMIO)?"1":"2")+" align='center'>")
  		document.write("<span class='CompetizioneForm'>"+arrI[i].Competizione+": "+arrI[i].Fantagiornata+"</span></td></tr>")
		// riga inferiore
		document.write("<tr>")
		// tabella di sinistra (o unica se gran premio)
		document.write("<td width='"+((arrI[i].IDTipo==INC_GRANPREMIO)?"100":"50")+"%' align='center' valign='top'>")
		// tabella casa
		tabe=null
		//inizio modifica by Nedo se non volete il capitano non modificate l'originale
		tabe=new Tabella(1,3 + capitano == true)
		//fine modifica by Nedo se non volete il capitano non modificate l'originale
		f=GetFormazione(arrI[i].ID,arrI[i].IDSquadre.Casa,arrI[i].IDLegaSquadre.Casa)
		//inizio aggiunta e modifica by Nedo
		g=GetCommento(arrI[i].ID,arrI[i].IDSquadre.Casa,arrI[i].IDLegaSquadre.Casa)
		tabe=RiempiTabellaFormazione(tabe,f,g,arrI[i].Nomi.Casa)
		//fine aggiunta e modifica by Nedo
		tabe.Stampa()
		document.write("</td>")
		if (arrI[i].IDTipo!=INC_GRANPREMIO) {
			document.write("<td width='50%' align='center' valign='top'>")
			// tabella fuori
			tabe=null
			//inizio modifica by Nedo se non volete il capitano non modificate l'originale
			tabe=new Tabella(1,3 + capitano == true)
			//fine modifica by Nedo se non volete il capitano non modificate l'originale
			f=GetFormazione(arrI[i].ID,arrI[i].IDSquadre.Fuori,arrI[i].IDLegaSquadre.Fuori)
			//inizio aggiunta e modifica by Nedo
			g=GetCommento(arrI[i].ID,arrI[i].IDSquadre.Fuori,arrI[i].IDLegaSquadre.Fuori)
			tabe=RiempiTabellaFormazione(tabe,f,g,arrI[i].Nomi.Fuori)
			//fine aggiunta e modifica by Nedo
			tabe.Stampa()
			document.write("</td>")
		}
		document.write("</tr>")
		document.write("<tr><td height='20' colspan="+((arrI[i].IDTipo==INC_GRANPREMIO)?"1":"2")+" align='center'></td></tr>")
		//chiudi tabella degli incontri
		document.write("</table></center>")
		// chiudi il layer di contenuti
		document.write("</div>")
	}
}
//inizio aggiunta by Nedo se non volete il capitano non lo scrivete, oppure scrivetelo e lasciate capitano=false
function getCap(num,f,g){
var v=0
	if (g != null){
		if(g.Cap != -1 || g.Vic != -1){
			for (v=1;v<f.length;v++) {
				if (g.Cap != -1 && num == 1 && f[v].Nome == eval("xg" + g.Cap)) return v;
				else if (g.Vic != -1 && num == 2 && f[v].Nome == eval("xg" + g.Vic)) return v;
				}
			}
		}
	return -1;
}
//fine aggiunta by Nedo se non volete il capitano non lo scrivete, oppure scrivetelo e lasciate capitano=false
//inizio modifica by Nedo
function RiempiTabellaFormazione(tabe,f,g,nome) {
//fine modifica by Nedo
//inizio aggiunta by Nedo se non volete il capitano non lo scrivete
if (capitano) var rigacap,rigavicecap,randomnumber=-1
//fine aggiunta by Nedo se non volete il capitano non lo scrivete
var i,j,pd,colore,ruolo,inseritariga=0,riga=1
	tabe.nome="Formazione " + nome
	tabe.larghezza = 90
	tabe.border=0
	tabe.cellspacing=0
	tabe.cellpadding = 1
	tabe.stile = "ClassEl"
	//inizio aggiunta by Nedo se non volete l'orario non cambiate l'originale
	if (g!=null){
	tabe.SetValore(1,1,'<table style="width: 100%;" border="1" cellpadding="2" cellspacing="0" class="IntRossoBlu3"><tbody><tr><td style="width: 60%;">'+ nome +'</td><td style="width: 40%;" class="Bianco">'+ g.Ora +'</td></tr></tbody></table>')
	tabe.SetStile(1,1,"IntRossoBlu3")
	}
	else{
	//fine aggiunta by Nedo se non volete l'orario non cambiate l'originale
	// nome della squadra
	// MODIFICA PUFFIN SCUDO
	tabe.SetValore(1,1,Scudo(nome))
	//tabe.SetValore(1,1,nome)
	// FINE MODIFICA PUFFIN SCUDO
	tabe.SetStile(1,1,"IntRossoBlu3")
	//inizio aggiunta by Nedo se non volete l'orario non cambiate l'originale
	}
	//fine aggiunta by Nedo se non volete l'orario non cambiate l'originale
	//inizio modifica by Nedo se non volete il capitano non modificate l'originale
	tabe.SetSpan(1,1,3 + (capitano == true))
	//fine modifica by Nedo se non volete il capitano non modificate l'originale
	tabe.SetSpanned(1,2,true)
	tabe.SetSpanned(1,3,true)
	//inizio aggiunta by Nedo se non volete il capitano non lo scrivete
	if (capitano) tabe.SetSpanned(1,4,true)
	//fine aggiunta by Nedo se non volete il capitano non lo scrivete
	tabe.SetLarghezzaColonna(1,5)
	tabe.SetLarghezzaColonna(2,5)
	//inizio modifica e aggiunta by Nedo se non volete il capitano non modificate l'originale, oppure modificatelo e lasciate capitano=false
	tabe.SetLarghezzaColonna(3,90 - 1 * (capitano == true))
	if (capitano) {
		tabe.SetLarghezzaColonna(4, 1);
		rigacap = getCap(1,f,g);
		rigavicecap = getCap(2,f,g);
		randomnumber=Math.floor(Math.random()*4)+1;
		}
	//fine modifica e aggiunta by Nedo se non volete il capitano non modificate l'originale, oppure modificatelo e lasciate capitano=false
	for (j=1;j<f.length;j++) {
	   if (j<19){
		riga=1+j+inseritariga
		if ((riga % 2) == 0) {
			pd="D"
		} else {
			pd="P"
		}
		if (f[j].Ruolo==1) {
			ruolo="P"
			colore="G"
		} else if (f[j].Ruolo==2) {
			ruolo="D"
			colore="V"
		} else if (f[j].Ruolo==3) {
			ruolo="C"
			colore="R"
		} else if (f[j].Ruolo==4) {
			ruolo="A"
			colore="Blu"
		}
		// per inserire la riga bianca tra titolari e riserve
		if (inseritariga==0 && f[j].Pos>0) {
			tabe.SetStileRiga(riga,"Bianco2")
			tabe.SetValore(riga,1,"&nbsp;")
			tabe.SetStile(riga,1,"Bianco2")
			//inizio modifica by Nedo se non volete il capitano non modificate l'originale, oppure modificatelo e lasciate capitano=false
			tabe.SetSpan(riga,1,3 + (capitano == true))
			//fine modifica by Nedo se non volete il capitano non modificate l'originale, oppure modificatelo e lasciate capitano=false
			tabe.SetSpanned(riga,2,true)
			tabe.SetSpanned(riga,3,true)
			//inizio aggiunta by Nedo se non volete il capitano non lo scrivete, oppure scrivetelo e lasciate capitano=false
			if (capitano) tabe.SetSpanned(riga, 4, true);
			//fine aggiunta by Nedo se non volete il capitano non lo scrivete, oppure scrivetelo e lasciate capitano=false
			inseritariga=1
			riga=1+j+inseritariga
		}
		tabe.SetStileRiga(riga,"Bianco")
		// la maglietta solo per titolari e riserve
		if (f[j].Pos>=0) tabe.SetValore(riga,1,"<img src='img/sq/"+f[j].SquadraDiA+".gif'>")
		tabe.SetStile(riga,1,"Bianco")
		// ruolo e nome
		if (f[j].Pos==0) {
			// titolari
			tabe.SetValore(riga,2,"<span class='t-xxs"+colore+"B'>"+ruolo+"</span>")
			tabe.SetValore(riga,3,"<span class='t-xxs"+colore+"B'>"+f[j].Nome+" ("+f[j].SquadraDiA+")" + (f[j].Rig>0?" [R:"+f[j].Rig+"]":"")+ "</span>")
			//inizio aggiunta by Nedo se non volete il capitano non lo scrivete, oppure scrivetelo e lasciate capitano=false
			if (capitano){
				if (g != null){
				if (typeof g.Cap != 'undefined'){
					if (rigacap == j) tabe.SetValore(riga,4,"<img src='img/capitano" + randomnumber + ".gif' width='32' height='32'>")
						else if (rigavicecap == j) tabe.SetValore(riga,4,"<img src='img/vicecapitano" + randomnumber + ".gif' width='32' height='32'>")
							else tabe.SetValore(riga,4,"<img src='img/spacer.gif' width='32' height='32'>")
				}
				else tabe.SetValore(riga,4,"<img src='img/spacer.gif' width='32' height='32'>")
			}
			else tabe.SetValore(riga,4,"<img src='img/spacer.gif' width='32' height='32'>")
			}
			//fine aggiunta by Nedo se non volete il capitano non lo scrivete, oppure scrivetelo e lasciate capitano=false
		} else if (f[j].Pos>0) {
			tabe.SetValore(riga,2,"<span class='t-xxs"+colore+"'>"+ruolo+"</span>")
			tabe.SetValore(riga,3,"<span class='t-xxs"+colore+"'>"+f[j].Nome+" ("+f[j].SquadraDiA+")"+ (f[j].Rig>0?" [R:"+f[j].Rig+"]":"")+ "</span>")
			//inizio aggiunta by Nedo se non volete il capitano non lo scrivete, oppure scrivetelo e lasciate capitano=false
			if (capitano){
			if (g != null){
				if (typeof g.Cap != 'undefined'){
					if (rigacap == j) tabe.SetValore(riga,4,"<img src='img/capitano" + randomnumber + ".gif' width='32' height='32'>")
						else if (rigavicecap == j) tabe.SetValore(riga,4,"<img src='img/vicecapitano" + randomnumber + ".gif' width='32' height='32'>")
							else tabe.SetValore(riga,4,"<img src='img/spacer.gif' width='32' height='32'>")
				}
				else tabe.SetValore(riga,4,"<img src='img/spacer.gif' width='32' height='32'>")
			}
			else tabe.SetValore(riga,4,"<img src='img/spacer.gif' width='32' height='32'>")
			}
			//fine aggiunta by Nedo se non volete il capitano non lo scrivete, oppure scrivetelo e lasciate capitano=false
		}
		else {
			tabe.SetValore(riga,2,"&nbsp;")
			tabe.SetValore(riga,3,"<span class='t-xxs'>"+f[j].Nome+" ("+f[j].SquadraDiA+")"+ (f[j].Rig>0?" [R:"+f[j].Rig+"]":"")+ "</span>")
			//inizio aggiunta by Nedo se non volete il capitano non lo scrivete, oppure scrivetelo e lasciate capitano=false
			if (capitano)
				tabe.SetValore(riga,4,"<img src='img/spacer.gif' width='32' height='32'>")
			//fine aggiunta by Nedo se non volete il capitano non lo scrivete, oppure scrivetelo e lasciate capitano=false
		}
		tabe.SetStile(riga,2,"Form"+pd+"Centro")
		tabe.SetStile(riga,3,"Form"+pd+"Centro")
		//inizio aggiunta by Nedo se non volete il capitano non lo scrivete, oppure scrivetelo e lasciate capitano=false
		if (capitano) tabe.SetStile(riga,4,"Form"+pd+"Centro")
		//fine aggiunta by Nedo se non volete il capitano non lo scrivete, oppure scrivetelo e lasciate capitano=false
		if (f[j].Ruolo==1) {
			tabe.SetStile(riga,2,"FormDCentro")
			tabe.SetStile(riga,3,"FormDCentro")
			//inizio aggiunta by Nedo se non volete il capitano non lo scrivete, oppure scrivetelo e lasciate capitano=false
			if (capitano) tabe.SetStile(riga,4,"FormDCentro")
			//fine aggiunta by Nedo se non volete il capitano non lo scrivete, oppure scrivetelo e lasciate capitano=false
	    }
	    }
		else if (j==19){
	//inizio aggiunta by Nedo
	if(g != null){
	riga=riga+1;
	tabe.SetValore(riga,1,"Comunicazioni")
	tabe.SetStile(riga,1,"IntRossoBlu3")
	//nota by Nedo se non volete il capitano scrivete tabe.SetSpan(riga,1,3) al posto di quello qui sotto, oppure scrivetelo e lasciate var capitano = false
	tabe.SetSpan(riga,1,3 + (capitano == true))
	tabe.SetSpanned(riga,2,true)
	tabe.SetSpanned(riga,3,true)
	//nota by Nedo se non volete il capitano non scrivete la linea sotto, oppure scrivetela e lasciate var capitano = false
	if (capitano) tabe.SetSpanned(riga,4,true)
	riga=riga+1;
	tabe.SetStileRiga(riga,"Bianco")
	if (typeof g.Commento != 'undefined')
	tabe.SetValore(riga,1,g.Commento)
	else
	tabe.SetValore(riga,1,"")

	tabe.SetStile(riga,1,"testo-doc")
	//nota by Nedo se non volete il capitano scrivete tabe.SetSpan(riga,1,3) al posto di quello qui sotto, oppure scrivetelo e lasciate var capitano = false
	tabe.SetSpan(riga,1,3 + (capitano == true))
	tabe.SetSpanned(riga,2,true)
	tabe.SetSpanned(riga,3,true)
	//nota by Nedo se non volete il capitano non scrivete la linea sotto, oppure scrivetela e lasciate var capitano = false
	if (capitano) tabe.SetSpanned(riga,4,true)
	//fine aggiunta by Nedo
	}
		}
	}	
	
	return tabe
}