//	by Massimiliano CILLI (c) 2008

var aOfferte;
var aData;
var aStruttura;
var aEvento;
var aRegione;
var aSezione;


function objRecs( incl, data, struttura, evento, regione, sezione )
{
	this.incl      = incl;
	this.data      = data;
	this.struttura = struttura;
	this.evento    = evento;
	this.regione   = regione;
	this.sezione   = sezione;
}
function objRec( incl, nome, cnt )
{
	this.incl = incl;
	this.nome = nome;
	this.cnt  = cnt;
}

//
function MkColumn( cmp )
{
	var aTmp = new Array();
	var campo;
	var n = 0;
	for( z in aOfferte )
		if( aOfferte[z].incl > 0 )
		{
			campo = "aOfferte[z]."+cmp;
			aTmp[n++] = unescape(eval(campo));
			aOfferte[z].incl = 1;
		}	
	if( n == 0 )
		return;
	var aSrt = aTmp.sort();
	var vold = aSrt[0];
	var k = 0;
	n = 0;
	var aArr = new Array();
	for( z in aSrt )
		if( vold != aSrt[z] )
		{
			aArr[n++] = new objRec( 1, vold, k );
			vold = aSrt[z];
			k = 1;
		}
		else
			k++;
	aArr[n] = new objRec( 1, vold, k );
	return aArr;
}

//
function DoFilter( aArr, cmp )
{
	var campo;
	var bChecked = false;
	var bInList = false;
	//
	for( j in aOfferte )
		if( aOfferte[j].incl != 0 )
		{
			bInList = false;
			for( k in aArr )
			{
				campo = "aOfferte[j]."+cmp;
				if( aArr[k].incl == 2  &&  unescape(eval(campo)) == aArr[k].nome )
				{
					bChecked = bInList = true;
					break;
				}
			}
			aOfferte[j].incl = bInList ? 2 : 0;
		}				
	//
	if( !bChecked )
	{
		for( j in aOfferte )
			aOfferte[j].incl = 1;
	}
	//
	aData = MkColumn( "data" );
	aStruttura = MkColumn( "struttura" );
	aEvento = MkColumn( "evento" );
	aRegione = MkColumn( "regione" );
	aSezione = MkColumn( "sezione" );
	DoPopulate( oData, aData, "aData", "data" );
	DoPopulate( oStruttura, aStruttura, "aStruttura", "struttura" );
	DoPopulate( oEvento, aEvento, "aEvento", "evento" );
	DoPopulate( oRegione, aRegione, "aRegione", "regione" );
	DoPopulate( oSezione, aSezione, "aSezione", "sezione" );
}


var crOldBg;

function OnRowIn(o)
{
	crOldBg = o.style.backgroundColor;
	o.style.backgroundColor = "#F0F0CC";
	o.style.cursor = "hand";
}
function OnRowOut(o)
{
	o.style.backgroundColor = crOldBg;
}

//
function DoPopulate( oDiv, aArr, aName, campo )
{
	var n = 0;
	var s = "";
	for( i in aArr )
		if( aArr[i].incl > 0 )
		{
			s += "<SPAN onclick='"+aName+"["+i+"].incl=2; DoFilter("+aName+",\""+campo+"\")' onmouseover='OnRowIn(this)' onmouseout='OnRowOut(this)' width=170><font face=Verdana size=1>"+aArr[i].nome+"</font></SPAN>";
//			s += "<font size=1><b>  ("+aArr[i].cnt+")</b></font>";
			s += "<p style=\"margin-top:0px\">";
			n++;
		}
	oDiv.innerHTML = s;
	return n;
}


//
function DoQuery(nMesi,nStrutture,nEventi,nRegioni,nSezioni)
{
	var sSqlGen = "";
	//
	var sSql = "";
	for( k in aData )
		if( aData[k].incl > 0 )
		{
			if( sSql != "" )
				sSql += " OR "
			sSql += "Month(o.arrivo)="+aData[k].nome.substr(0,2);
		}
	if( k < nMesi )
	{
		sSql = "("+sSql+")";
		sSqlGen = sSql;
	}
	//
	sSql = "";
	for( k in aStruttura )
		if( aStruttura[k].incl != 0 )
		{
			if( sSql != "" )
				sSql += " OR "
			sSql += "a.tipostruttura='"+aStruttura[k].nome+"'";
		}
	if( k < nStrutture )
	{
		sSql = "("+sSql+")";
		if( sSqlGen != "" )
			sSqlGen += " AND "
		sSqlGen += sSql;
	}
	//
	sSql = "";
	for( k in aEvento )
		if( aEvento[k].incl != 0 )
		{
			if( sSql != "" )
				sSql += " OR "
			sSql += "o.evento='"+aEvento[k].nome+"'";
		}
	if( k < nEventi )
	{
		sSql = "("+sSql+")";
		if( sSqlGen != "" )
			sSqlGen += " AND "
		sSqlGen += sSql;
	}
	//
	sSql = "";
	for( k in aRegione )
		if( aRegione[k].incl != 0 )
		{
			if( sSql != "" )
				sSql += " OR "
			sSql += "a.regione='"+aRegione[k].nome+"'";
		}
	if( k < nRegioni )
	{
		sSql = "("+sSql+")";
		if( sSqlGen != "" )
			sSqlGen += " AND "
		sSqlGen += sSql;
	}
	//
	sSql = "";
	for( k in aSezione )
		if( aSezione[k].incl != 0  &&  aSezione[k].nome != "Italia" )
		{
			if( sSql != "" )
				sSql += " OR "
			sSql += aSezione[k].nome;
		}
	if( k < nSezioni )
	{
		if( sSql != "" )
		{
			sSql = "EXISTS (SELECT IDaff,sezione FROM vetrina WHERE vetrina='vetrsez' AND InStr(1,'"+sSql+"',sezione,1)>0 AND IsNull(sottosezione))";
			if( sSqlGen != "" )
				sSqlGen += " AND ";
			sSqlGen += sSql;
		}
	}
	return sSqlGen;
}

