function attivaRicerca()
{
	var objDiv = document.getElementById('formRicerca');
	var objAnc = document.getElementById('attivaRic');
	if(objDiv.style.display=='none')
	{
		objDiv.style.display='block';
		objAnc.innerHTML='nascondi ricerca';
	}
	else
	{
		objDiv.style.display='none';
		objAnc.innerHTML='mostra ricerca';
	}
}

//==AZIONI SULLA STRINGHE
function trim(strIn)
{
   /*
AUTORE: ennio roccamo


SOCIETA':

DESCRIZIONE:

   */
   var strOut = strIn;
   if (strOut=='')
		return inputString


   //rimozione spazi iniziali
   var strSpace = strOut.substring(0, 1);
   while (strSpace == ' ')
   {
      strOut = strOut.substring(1, strOut.length);
      strSpace = strOut.substring(0, 1);
   }
   //rimozione spazi finali
   strSpace = strOut.substring(strOut.length-1, strOut.length);

   while (strSpace == ' ')
   {
      strOut = strOut.substring(0, strOut.length-1);
      strSpace = strOut.substring(strOut.length-1, strOut.length);
   }

   return strOut;
}

function Replace(Expression, Find, Replace)
{
	var temp = Expression;
	var a = 0;

	for (var i = 0; i < Expression.length; i++)
	{
		a = temp.indexOf(Find);
		if (a == -1)
			break
		else
			temp = temp.substring(0, a) + Replace + temp.substring((a + Find.length));
	}
	return temp;
}
//==FUNZIONI PER FORMATTAZIONE==================

function stringFilter(psInput,psCharacters)
{
/*
Autore: Ennio Roccamo
e-mail: ennioroccamo@hotmail.com

descrizione:
Ritorna un valore estraendo dal primo argomento i soli caratteri contenuti nel
secondo.

*/
	var lngLen	= psInput.length;
	var strOut	=''; // la stringa di ritorno
	var char	='';
	if(lngLen==0)
		return '';

	for(i=0;i<lngLen;i++)
	{
		char=psInput.substring(i,i+1);
		if(psCharacters.indexOf(char)!=-1)
		{
			strOut +=char;
			char='';
		}
	}
	return strOut;
}


//==============================================


//==AZIONI SULLE DATE===========================
function isBisestile(psValue)
{
	if(isNaN(psValue))
		return false;

	var psOut = psValue / 4;
	if (parseInt(psOut) == psOut)
	{
		psOut = psValue / 400;

		if(parseInt(psOut) == psOut)
		{
			return true;
		}
		else
		{
			psOut = psValue / 100;
		}

		if(parseInt(psOut) == psOut)
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	else
	{
		return false;
	}
}


function formatToDate(campo)
{

	var ultimoCar = campo.value;
	ultimoCar= ultimoCar.substring(ultimoCar.length-1);

	if(isNaN(ultimoCar)&& campo.value.length!=3 && campo.value.length!=6)
		campo.value=campo.value.substring(0,campo.value.length-1);

	if (campo.value.length==2 || campo.value.length==5 )
		campo.value += '/';

}


function setDateFormat(psValue,sDateFormat)
{
		var nDay	= psValue.substring(0,2);
		var nMonth	= psValue.substring(3,5);
		var nYear	= psValue.substring(6,10);
		switch (sDateFormat)
		{
			case 'dmy':
				return nDay +'/'+ nMonth + '/' + nYear;
				break;
			case 'mdy':
				return nMonth +'/'+ nDay + '/' + nYear;
				break;
			case 'ymd':
				return nYear +'/'+ nMonth + '/' + nDay;
				break;
		}

}
function isDate(psValue)
{
	//la stringa dev'essere di dieci caratteri

	if (psValue.length==10)
	{
		var nDay	= psValue.substring(0,2);
		var nMonth	= psValue.substring(3,5);
		var nYear	= psValue.substring(6,10);
		if(isNaN(nDay)||isNaN(nMonth)|| isNaN(nYear))
			return false;

		nDay = eval(nDay);
		nMonth= eval(nMonth);
		nYear = eval(nYear);

		if (nDay <1 || nDay>31)
			return false;

		if (eval(nMonth)<1 || eval(nMonth)>12)
			return false;

		switch(nMonth)
		{
			case 4:
			case 6:
			case 9:
			case 11:
				if(eval(nDay)>30)
					return false;
				break;
			case 2:
				if(eval(nDay)>28)
					if(isBisestile(nYear)==true && nDay == 29)
					{
						return true;
					}
					else
					{
						return false;
					}
				break;
		}
		return true;
	}
	else
	{
		return false;
	}
}


function verifyDate(obj)
{
	if(isDate(obj.value)==false && obj.value!='')
	{
		alert('ATTENZIONE!!!\nLa data inserita non è corretta.');
		obj.focus();
		obj.select();
	}
}
//==CALENDARIO=======================================================
/*
Il sistema di funzioni stampa un calendario navigabile al quale è possibile associare degli
eventi leggibili da un recordset purchè esista un campo di tipo data che consenta di popolare gli eventi

Per implementare le funzionalità:
		 popolare arrayEventi con l'aposito metodo
		 Eseguire avvioCalendario()

*/

var arrFeste = new Array();//array popolato con le feste nazionali previste nell'anno
var arrayEventi = new Array();//array popolato con routine leggendo gli eventi dal db
var oggi = new Date();//data
var gMeseCorrente = oggi.getMonth();
var gAnnoCorrente = oggi.getFullYear();
var str_anno = String(gAnnoCorrente);

//==METODO PER PARTENZA==========================================

function avvioCalendario(parentID)
{
/*
	Esegue i passaggi necessari per l'avvio della stampa del calendario.
richiede come parametri:
		parentID	- L'ID dell'oggetto entro il quale viene stampato il calendario (div o cella di tabella);
*/
	setFestivi();
	printCalendario(parentID);
	setCalendario();
}

//==FUNZIONI DA CONFIGURARE=====================================
function popolaArrayEventi(gg,mm,aa)
{
/*
	Questa funzione serve per il caricamento iniziale degli eventi da evidenziare
	sul calendario.
	es utilizzo:
	 1 caricamento di recordset eventi

	 2 ciclo per scorrimento record e chiamata a questa funzione
		es:
			Do while not recordset.eof
			--
			Response.write
			"script: popoaArrayEventi('" + day(recordset("campo_data")) + "','" + month(recordset("campo_data"))
			+ ',' + year(recordset("campo_data")) + "')end
			--

			Loop

    in questo modo gli eventi rimangono in memorizzati in un array e vengono
    evidenziati per ogni mese selezionato senza effettuare il reload della
    pagina.
*/
//**SEZIONE DA PERSONALIZZARE**************************************
	arrayEventi[arrayEventi.length] = gg+"_"+ eval(mm-1) +"x"+aa;
//*****************************************************************
}

function naviga(dataEvento)
{
/*
Assegna il tipo di azione per i giorni in cui ricadono degli eventi
!!!QUESTA FUNZIONE DEV'ESSERE MODIFICATA IN FUNZIONE DELLE ESIGENZE SPECIFICHE
*/
	parent.document.location.href="?module=eventi&action=dataLista&data=" + dataEvento;
}

function setFestivi()
{
/*
!!! Questa funzione dev'essere configurata in funzione della variazione dei giorni festivi.
viene chiamata al reload della pagina e popola un array con i giorni festivi dell'anno.
*/

//**SEZIONE DA MODIFICARE IN CASO DI VARIAZIONI********************
arrFeste[arrFeste.length]='1_1'		;//capodanno
arrFeste[arrFeste.length]='6_1'		;//epifania
arrFeste[arrFeste.length]='25_4'	;//festa della liberazione
arrFeste[arrFeste.length]='1_5'		;//festa dei lavoratori
arrFeste[arrFeste.length]='2_6'		;//festa della repubblica
arrFeste[arrFeste.length]='15_8'	;//ferragosto assunzione
arrFeste[arrFeste.length]='1_11'	;//ognissanti
arrFeste[arrFeste.length]='8_12'	;//immacolata
arrFeste[arrFeste.length]='25_12'	;//natale
arrFeste[arrFeste.length]='26_12'	;//s.stefano
//***************************************************************
}
//========================================================================


//==METODI PER DETERMINARE SE IL GIORNO E' FESTIVO=========================
/*
	basati sulla lettura dell'array popolato con i giorni festivi
*/

function isFestivo(giorno, mese, anno)
{
/*
	AUTORE	: Ennio Roccamo
	E-MAIL	: ennioroccamo@hotmail.com

	DESCRIZIONE:
	Ritorna un valore booleano.
	Restituisce true se il giorno determinato dai parametri passati corrisponde
	ad uno dei giorni dell'anno indicati come festivi nell'array arrFeste oppure
	è il lunedi dell'angelo.

	Chiamata nella funzione setCalendario
	!!! l'argomento passato come mese dev'essere incrementato di 1 se restituito dal metodo
		oggettoData.setMont().

*/
	var i;

	for(i=0; i< arrFeste.length; i++)
	{
		if(arrFeste[i] == giorno + '_' + mese)
		{
			return  true;
			break;
		}
	}


	if (lunediAngelo(anno) == giorno + '_' + mese)
	{
		return true;
	}

	return false;

}

function lunediAngelo(plYear)
{
/*
Autore	: Ennio Roccamo
e-mail	: ennioroccamo@hotmail.com

descrizione: calcola il festivo corrispondente al lunedi dell'angelo secondo il
			 calendario Gregoriano
			 dato un parametro anno restituisce una stringa del tipo 'giorno_mese'
			 in caso di anno ricadente al di fuori dell'intervallo definito 1583-4099
			 restituisce: '00_00'
*/

	var gg		=0;
	var mm		=0;
	var year	=0;

	var strOut;

	year = parseInt(plYear, 10);
	if (isNaN(year))
		year = 0;


	if (year >= 1583 && year <= 4099)
	{

		var a =0;
		var c =0;
		var h =0;
		var b =0;
		var d =0;
		var q =0;


		a = year % 19;
		c = Math.floor(year / 100);
		h = (c - Math.floor(c / 4) - Math.floor((8 * c + 13) / 25) + 19 * a + 15) % 30;
		b = h - Math.floor(h / 28) * (1 - Math.floor(h / 28) * Math.floor(29 / (h + 1)) * Math.floor((21 - a) / 11));
		d = (year + Math.floor(year / 4) + b + 2 - c + Math.floor(c / 4)) % 7;
		q = b - d + 28;


		if (q <= 31)
		{
			gg		= q+1;

			if(gg>31)
				mm	= '4';
			else
				mm	= '3';

		}

		if (q > 31)
		{
			gg = q - 30 ;
			mm = '4';
		}



		return gg + '_' + mm





	}
	else
	{
		return '00_00'
	}
}

//=========================================================================


//==METODI PER LA STAMPA E LA VISUALIZZAZIONE DEL CALENDARIO===============

function SetMeseAnnoCorrente(psVerso)
{
/*
Autore	: Ennio Roccamo
e-mail	: ennioroccamo@hotmail.com

descrizione: definisce, in funzione del verso, i valori delle variabili gMeseCorrente e gAnnoCorrente;
			 lancia il metodo setCalendario.

Questo metodo viene eseguito ad ogni click dei pulsanti navigatore del calendario.
Richiede un parametro di tipo stringa.
		Valori ammessi per il parametro: next:=incrementa altrovalore:=decrementa.
*/
	//incremento o decremento di gMeseCorrente
	if (psVerso == 'next')
	{
		gMeseCorrente++
	}
	else
	{
		gMeseCorrente--
	}

	//Valutazione condizioni che determinano la variazione di gAnnoCorrente
	//ed eventuale
	if (gMeseCorrente == -1)
	{
		gMeseCorrente = 11
		gAnnoCorrente--
	}

	if (gMeseCorrente == 12)
	{
		gMeseCorrente = 0
		gAnnoCorrente++
	}

	// aggiorno la stringa dell'anno
	str_anno = String(gAnnoCorrente);


	//Lancio del metodo di scrittura del calendario
	setCalendario();

}




function setCalendario()
{

/*
Autore	: Ennio Roccamo
e-mail	: ennioroccamo@hotmail.com

descrizione:
		scrive il mese corrente sulla testata del calendario;
		Posiziona i giorni del mese nelle celle di destinazione;
		marca e rende attivi i giorni per i quali esistono eventi;
		Evidenzia i giorni festivi.
*/

	scriviMeseAnno();

	var riga = 1;
	var colonna = 0;
	var meseRaffronto =0;
	var nomeCella = 't_'+riga+colonna;
	var objCella = document.getElementById(nomeCella);
	var addi = new Date();

	var strStyle ='';

	//azzeramento dei valori
	for (i=1;i<=6;i++)
	{
		for (j=1;j<=7;j++)
		{
			nomeCella = 't_'+i+j;
			objCella = document.getElementById(nomeCella);
			objCella.innerHTML = "&nbsp;";
			objCella.className = 'cal_altromese';
		}
	}

	for (i=1;i<32;i++)
	{

		addi.setFullYear(gAnnoCorrente);
		addi.setMonth(gMeseCorrente);
		addi.setDate(i);

		// sottolineo il numero del giorno se è quello corrente
		if (i == oggi.getDate() && addi.getMonth() == oggi.getMonth() && addi.getYear()== oggi.getYear())
		{
			strStyle = 'red';
		}
		else
		{
			strStyle = '';
		}

		var strOggi = addi.toString();

		meseRaffronto = addi.getMonth();

		// cambio lo stile se il giorno è festivo
		// altrimenti imposta lo stile a normale
		if (isFestivo(i,gMeseCorrente +1 ,gAnnoCorrente)==true)
		{
			dayStyle = 'cal_festivo';
		} else {
			dayStyle = 'cal_giorno';
		}

		if (meseRaffronto == gMeseCorrente)
		{
			var gs = strOggi.substring(0,3);
			//alert(gs)

			gName = "";

			switch(gs)
			{
				case "Mon":
					colonna = 1
					gName = "Lu";
					break
				case "Tue":
					colonna = 2
					gName = "Ma";
					break
				case "Wed":
					colonna = 3
					gName = "Me";
					break
				case "Thu":
					colonna = 4
					gName = "Gi";
					break
				case "Fri":
					colonna = 5
					gName = "Ve";
					break
				case "Sat":
					colonna = 6
					gName = "Sa";
					dayStyle = 'cal_festivo';
					break
				case "Sun":
					colonna = 7;
					gName = "Do";
					dayStyle = 'cal_festivo';
					break
			}
			nomeCella = 't_'+riga+colonna;
			objCella = document.getElementById(nomeCella);

			if (gs == "Sun") riga++;

			objCella.className = dayStyle;
			objCella.style.color = strStyle;

			objCella.innerHTML = i + "<br><span class=\"gnome\">" +gName+ "</span>";

			// gestisto la colorazione per gli eventi
			for (j=0;j<arrayEventi.length;j++)
			{
				var indice1 = arrayEventi[j].indexOf('_');
				var indice2 = arrayEventi[j].indexOf('x');
				var giorno = arrayEventi[j].substring(0,indice1);
				var mese = arrayEventi[j].substring(indice1+1,indice2);
				var anno = arrayEventi[j].substring(indice2+1);
				var gMeseEffettivo = gMeseCorrente + 1

				if (giorno == i && mese == gMeseCorrente && anno == gAnnoCorrente)
				{
					objCella.className = "cal_eventi";

					// imposta il link per gli eventi
					//objCella.href= "javascript:naviga('" + i + "-" + gMeseEffettivo + "-" + gAnnoCorrente + "')";
					objCella.href= "javascript:naviga('" + gAnnoCorrente + "-" + gMeseEffettivo + "-" + i + "')";
				}

			} // arrayEventi
		}
	}
}



function scriviMeseAnno()
{
/*
	Riporta il nome del mese seguito dall'anno sulla testata del calendario.
	metodo lanciato da setCalendario()
*/
	var obj= document.getElementById('txt_MeseAnno');
	var nomeMese='';
	switch(gMeseCorrente)
	{
		case 0:
			nomeMese='Gennaio';
			break;
		case 1:
			nomeMese='Febbraio';
			break;
		case 2:
			nomeMese='Marzo';
			break;
		case 3:
			nomeMese='Aprile';
			break;
		case 4:
			nomeMese='Maggio';
			break;
		case 5:
			nomeMese='Giugno';
			break;
		case 6:
			nomeMese='Luglio';
			break;
		case 7:
			nomeMese='Agosto';
			break;
		case 8:
			nomeMese='Settembre';
			break;
		case 9:
			nomeMese='Ottobre';
			break;
		case 10:
			nomeMese='Novembre';
			break;
		case 11:
			nomeMese='Dicembre';
			break;
	}

	obj.innerHTML = nomeMese + ' ' +str_anno;

}



function printCalendario(parentID)
{

/*
AUTORE:
	arch. Ennio Roccamo




SOCIETA': Ancitel.spa
DATA_DI CREAZIONE

Questa funzione stampa un calendario partendo dal mese corrente.
richiede come parametri:
		parentID - L'ID dell'oggetto entro il quale viene stampato il calendario (div o cella di tabella);
		txtClass - La classe di stile per i valori di testo;
		btnClass - La classe di style per l'intestazione e i pulsanti di navigazione



*/
	var strInner ='';



	strInner +='<div style=\"width:154px;\">\n';

	// pulsanti e mese/anno ----------------------------------------------------------------------------
	strInner +='\t<div class=\"cal_settimana\">'
          	 + '\t\t<div><a href="#" id=\"meseprec\" onclick=\"SetMeseAnnoCorrente(\'prev\');this.blur();\">&#x00ab;</a></div>\n'
          	 + '\t\t<div id="txt_MeseAnno"></div>\n'
           	 + '\t\t<div><a href="#" id=\"mesesucc\" onclick=\"SetMeseAnnoCorrente(\'next\');this.blur();\">&#x00bb;</a></div>\n'
			 + '\t</div>';


	// intestazione giorni -----------------------------------------------------------------------------
	strInner +='\t<div class=\"cal_settimana\">'
            + '\t\t<span class=\"cal_head\" href=\"#\">L</span>'
            + '\t\t<span class=\"cal_head\" href=\"#\">M</span>'
            + '\t\t<span class=\"cal_head\" href=\"#\">M</span>'
            + '\t\t<span class=\"cal_head\" href=\"#\">G</span>'
            + '\t\t<span class=\"cal_head\" href=\"#\">V</span>'
            + '\t\t<span class=\"cal_head\" href=\"#\">S</span>'
            + '\t\t<span class=\"cal_head\" href=\"#\">D</span>'
			+ '\t</div>';


	// 1a riga -----------------------------------------------------------------------------------------
	strInner +='\t<div class=\"cal_settimana\">'
            + '\t\t<a id=\"t_11\" href=\"#\"></a>'
            + '\t\t<a id=\"t_12\" href=\"#\"></a>'
            + '\t\t<a id=\"t_13\" href=\"#\"></a>'
            + '\t\t<a id=\"t_14\" href=\"#\"></a>'
            + '\t\t<a id=\"t_15\" href=\"#\"></a>'
            + '\t\t<a id=\"t_16\" href=\"#\"></a>'
            + '\t\t<a id=\"t_17\" href=\"#\"></a>'
			+ '\t</div>';

	// 2a riga -----------------------------------------------------------------------------------------
	strInner +='\t<div class=\"cal_settimana\">'
            + '\t\t<a id=\"t_21\" href=\"#\"></a>'
            + '\t\t<a id=\"t_22\" href=\"#\"></a>'
            + '\t\t<a id=\"t_23\" href=\"#\"></a>'
            + '\t\t<a id=\"t_24\" href=\"#\"></a>'
            + '\t\t<a id=\"t_25\" href=\"#\"></a>'
            + '\t\t<a id=\"t_26\" href=\"#\"></a>'
            + '\t\t<a id=\"t_27\" href=\"#\"></a>'
			+ '\t</div>';

	// 3a riga -----------------------------------------------------------------------------------------
	strInner +='\t<div class=\"cal_settimana\">'
            + '\t\t<a id=\"t_31\" href=\"#\"></a>'
            + '\t\t<a id=\"t_32\" href=\"#\"></a>'
            + '\t\t<a id=\"t_33\" href=\"#\"></a>'
            + '\t\t<a id=\"t_34\" href=\"#\"></a>'
            + '\t\t<a id=\"t_35\" href=\"#\"></a>'
            + '\t\t<a id=\"t_36\" href=\"#\"></a>'
            + '\t\t<a id=\"t_37\" href=\"#\"></a>'
			+ '\t</div>';

	// 4a riga -----------------------------------------------------------------------------------------
	strInner +='\t<div class=\"cal_settimana\">'
            + '\t\t<a id=\"t_41\" href=\"#\"></a>'
            + '\t\t<a id=\"t_42\" href=\"#\"></a>'
            + '\t\t<a id=\"t_43\" href=\"#\"></a>'
            + '\t\t<a id=\"t_44\" href=\"#\"></a>'
            + '\t\t<a id=\"t_45\" href=\"#\"></a>'
            + '\t\t<a id=\"t_46\" href=\"#\"></a>'
            + '\t\t<a id=\"t_47\" href=\"#\"></a>'
			+ '\t</div>';

	// 5a riga -----------------------------------------------------------------------------------------
	strInner +='\t<div class=\"cal_settimana\">'
            + '\t\t<a id=\"t_51\" href=\"#\"></a>'
            + '\t\t<a id=\"t_52\" href=\"#\"></a>'
            + '\t\t<a id=\"t_53\" href=\"#\"></a>'
            + '\t\t<a id=\"t_54\" href=\"#\"></a>'
            + '\t\t<a id=\"t_55\" href=\"#\"></a>'
            + '\t\t<a id=\"t_56\" href=\"#\"></a>'
            + '\t\t<a id=\"t_57\" href=\"#\"></a>'
			+ '\t</div>';

	// 6a riga -----------------------------------------------------------------------------------------
	strInner +='\t<div class=\"cal_settimana\">'
            + '\t\t<a id=\"t_61\" href=\"#\"></a>'
            + '\t\t<a id=\"t_62\" href=\"#\"></a>'
            + '\t\t<a id=\"t_63\" href=\"#\"></a>'
            + '\t\t<a id=\"t_64\" href=\"#\"></a>'
            + '\t\t<a id=\"t_65\" href=\"#\"></a>'
            + '\t\t<a id=\"t_66\" href=\"#\"></a>'
            + '\t\t<a id=\"t_67\" href=\"#\"></a>'
			+ '\t</div>';

	// Chiusura tag contenitore ------------------------------------------------------------------------
	strInner += '</div>';


	// Scrivo l'html nel div

	var objParent = document.getElementById(parentID);

	objParent.innerHTML = '' + strInner;

}


/*

	<!-- esempio di utilizzo -->
	<DIV id="divCalendario"></DIV>
	<script>printCalendario('divCalendario');setCalendario()</script>

*/

