var numeroGiorniLavorativi = 0;

var dataAttuale = new Date();
var dataIniziale = new Date();
var dataTemp = new Date();
var dataTemp1 = new Date();

var contatore = 0;
var numeroSabatiDomeniche = 0;
var numeroGiorniFestivi = 0;
var busteFinoAIeri = 0;
var busteFatteOggi = 0;


var busteMinutoTurno1 = 7000;
var busteMinutoTurno2 = 7000;
var busteMinutoTurno3 = 3000;


var busteOraTurno1 = busteMinutoTurno1 * 60;
var busteOraTurno2 = busteMinutoTurno2 * 60;
var busteOraTurno3 = busteMinutoTurno3 * 60;
var oggiLavorativo = true;

var i = 0;


var giorniFestivi = new Array();

giorniFestivi[0] = "20120101";
giorniFestivi[1] = "20120102";
giorniFestivi[2] = "20120103";
giorniFestivi[3] = "20120104";
giorniFestivi[4] = "20120105";
giorniFestivi[5] = "20120106";
giorniFestivi[6] = "20120107";
giorniFestivi[7] = "20120108";
giorniFestivi[8] = "20120114";
giorniFestivi[9] = "20120115";
giorniFestivi[10] = "20120121";
giorniFestivi[11] = "20120122";
giorniFestivi[12] = "20120128";
giorniFestivi[13] = "20120129";

giorniFestivi[14] = "20120204";
giorniFestivi[15] = "20120205";
giorniFestivi[16] = "20120211";
giorniFestivi[17] = "20120212";
giorniFestivi[18] = "20120218";
giorniFestivi[19] = "20120219";
giorniFestivi[20] = "20120225";
giorniFestivi[21] = "20120226";

giorniFestivi[22] = "20120303";
giorniFestivi[23] = "20120304";
giorniFestivi[24] = "20120310";
giorniFestivi[25] = "20120311";
giorniFestivi[26] = "20120317";
giorniFestivi[27] = "20120318";
giorniFestivi[28] = "20120324";
giorniFestivi[29] = "20120325";
giorniFestivi[30] = "20120331";

giorniFestivi[31] = "20120401";
giorniFestivi[32] = "20120407";
giorniFestivi[33] = "20120408";
giorniFestivi[34] = "20120409";
giorniFestivi[35] = "20120414";
giorniFestivi[36] = "20120415";
giorniFestivi[37] = "20120421";
giorniFestivi[38] = "20120422";
giorniFestivi[39] = "20120425";
giorniFestivi[40] = "20120428";
giorniFestivi[41] = "20120429";

giorniFestivi[42] = "20120501";
giorniFestivi[43] = "20120505";
giorniFestivi[44] = "20120506";
giorniFestivi[45] = "20120512";
giorniFestivi[46] = "20120513";
giorniFestivi[47] = "20120519";
giorniFestivi[48] = "20120520";
giorniFestivi[49] = "20120526";
giorniFestivi[50] = "20120527";

giorniFestivi[51] = "20120602";
giorniFestivi[52] = "20120603";
giorniFestivi[53] = "20120609";
giorniFestivi[54] = "20120610";
giorniFestivi[55] = "20120616";
giorniFestivi[56] = "20120617";
giorniFestivi[57] = "20120623";
giorniFestivi[58] = "20120624";
giorniFestivi[59] = "20120630";

giorniFestivi[60] = "20120701";
giorniFestivi[61] = "20120707";
giorniFestivi[62] = "20120708";
giorniFestivi[63] = "20120714";
giorniFestivi[64] = "20120715";
giorniFestivi[65] = "20120721";
giorniFestivi[66] = "20120722";
giorniFestivi[67] = "20120728";
giorniFestivi[68] = "20120729";

giorniFestivi[69] = "20120804";
giorniFestivi[70] = "20120805";
giorniFestivi[71] = "20120806";
giorniFestivi[72] = "20120807";
giorniFestivi[73] = "20120808";
giorniFestivi[74] = "20120809";
giorniFestivi[75] = "20120810";
giorniFestivi[76] = "20120811";
giorniFestivi[77] = "20120812";
giorniFestivi[78] = "20120813";
giorniFestivi[79] = "20120814";
giorniFestivi[80] = "20120815";
giorniFestivi[81] = "20120816";
giorniFestivi[82] = "20120817";
giorniFestivi[83] = "20120818";
giorniFestivi[84] = "20120819";
giorniFestivi[85] = "20120820";
giorniFestivi[86] = "20120821";
giorniFestivi[87] = "20120822";
giorniFestivi[88] = "20120823";
giorniFestivi[89] = "20120824";
giorniFestivi[90] = "20120825";
giorniFestivi[91] = "20120826";
giorniFestivi[92] = "20120827";
giorniFestivi[93] = "20120828";
giorniFestivi[94] = "20120829";
giorniFestivi[95] = "20120830";
giorniFestivi[96] = "20120831";

giorniFestivi[97] = "20120901";
giorniFestivi[98] = "20120902";
giorniFestivi[99] = "20120908";
giorniFestivi[100] = "20120909";
giorniFestivi[101] = "20120915";
giorniFestivi[102] = "20120916";
giorniFestivi[103] = "20120922";
giorniFestivi[104] = "20120923";
giorniFestivi[105] = "20120929";
giorniFestivi[106] = "20120930";

giorniFestivi[107] = "20121006";
giorniFestivi[108] = "20121007";
giorniFestivi[109] = "20121013";
giorniFestivi[110] = "20121014";
giorniFestivi[111] = "20121020";
giorniFestivi[112] = "20121021";
giorniFestivi[113] = "20121027";
giorniFestivi[114] = "20121028";

giorniFestivi[115] = "20121101";
giorniFestivi[116] = "20121103";
giorniFestivi[117] = "20121104";
giorniFestivi[118] = "20121110";
giorniFestivi[119] = "20121111";
giorniFestivi[120] = "20121117";
giorniFestivi[121] = "20121118";
giorniFestivi[122] = "20121124";
giorniFestivi[123] = "20121125";

giorniFestivi[124] = "20121201";
giorniFestivi[125] = "20111202";
giorniFestivi[126] = "20111208";
giorniFestivi[127] = "20111209";
giorniFestivi[128] = "20111215";
giorniFestivi[129] = "20111216";
giorniFestivi[130] = "20111222";
giorniFestivi[131] = "20111223";
giorniFestivi[132] = "20111224";
giorniFestivi[133] = "20111225";
giorniFestivi[134] = "20111226";
giorniFestivi[135] = "20111227";
giorniFestivi[136] = "20111228";
giorniFestivi[137] = "20111229";
giorniFestivi[138] = "20111230";
giorniFestivi[139] = "20111231";

giorniFestivi[140] = "20130101";
giorniFestivi[141] = "20130102";
giorniFestivi[142] = "20130103";
giorniFestivi[143] = "20130104";
giorniFestivi[144] = "20130105";
giorniFestivi[145] = "20130106";


// Determina il numero di giorni trascorsi dal 1° Gennaio
dataIniziale.setFullYear(dataAttuale.getFullYear(), 0, 1);

// Fissa la data iniziale al giorno precedente la data attuale
dataAttuale.setDate(dataAttuale.getDate());

numeroGiorniLavorativi = 0;
if (dataAttuale > dataIniziale)
	numeroGiorniLavorativi = dataAttuale - dataIniziale;
numeroGiorniLavorativi = Math.round(numeroGiorniLavorativi/1000/60/60/24);


// Conta il numero di sabati e domeniche fino alla data attuale
numeroSabatiDomeniche = 0;

dataTemp.setFullYear(dataIniziale.getFullYear(), 0, 1);
while (dataTemp < dataAttuale)
{

	if ((dataTemp.getDay() == 0) || (dataTemp.getDay() == 6))
	{
		numeroSabatiDomeniche++;
	};

	dataTemp.setDate(dataTemp.getDate() + 1);
}




// Conta il numero di giorni festivi fino ad oggi
i = 0;
numeroGiorniFestivi = 0;
dataTemp.setFullYear(giorniFestivi[i].substr(0, 4), giorniFestivi[i].substr(4, 2) - 1, giorniFestivi[i].substr(6, 2));
while ((dataTemp < dataAttuale) && (i + 1 < giorniFestivi.length))
{
	// Se la data letta non è un sabato o una domenica
	if ((dataTemp.getDay() != 0) && (dataTemp.getDay() != 6) && (dataTemp.getYear() == dataIniziale.getYear()) )
	{
		numeroGiorniFestivi++;
	};
	// Legge la data successiva
	i++;

	dataTemp.setFullYear(giorniFestivi[i].substr(0, 4), giorniFestivi[i].substr(4, 2) - 1, giorniFestivi[i].substr(6, 2));
};




numeroGiorniLavorativi = numeroGiorniLavorativi - numeroSabatiDomeniche - numeroGiorniFestivi;


// Calcola il numero di buste al giorno sulla base di quelle orarie
busteFinoAIeri = numeroGiorniLavorativi * (8 * busteOraTurno1 + 8 * busteOraTurno2 + 8 * busteOraTurno3);










// Determina se la data attuale è un sabato o domenica
dataTemp.setFullYear(dataAttuale.getFullYear(), dataAttuale.getMonth(), dataAttuale.getDate());
if (dataTemp.getDay() == 0 || dataTemp.getDay() == 6)
{

	oggiLavorativo=false;
};


// Determina se la data attuale è un giorno festivo
for(i = 0; i < giorniFestivi.length; i++)
{
	dataTemp1.setFullYear(giorniFestivi[i].substr(0, 4), giorniFestivi[i].substr(4, 2) - 1, giorniFestivi[i].substr(6, 2));

	// Se la data letta non è un sabato o una domenica
	if (dataTemp.valueOf() == dataTemp1.valueOf())
	{
		oggiLavorativo = false;
	};
};

if (oggiLavorativo == true)
{

	// Se periodo terzo turno
	if (dataTemp.getHours() >= 0 && dataTemp.getHours() < 6)
	{
		busteFatteOggi = dataTemp.getHours() * busteOraTurno3 + dataTemp.getMinutes() * busteMinutoTurno3;
		
	};

	// Se periodo secondo turno
	if ((dataTemp.getHours() >= 14) && (dataTemp.getHours() < 22))
	{
		busteFatteOggi = (6 * busteOraTurno3) + (8 * busteOraTurno1) + (dataTemp.getHours() - 14) * busteOraTurno2 + dataTemp.getMinutes() * busteMinutoTurno2;
		
	};



	// Se periodo primo turno
	if (dataTemp.getHours() >= 6 && dataTemp.getHours() < 14)
	{
		busteFatteOggi = (6 * busteOraTurno3) + (dataTemp.getHours() - 6) * busteOraTurno1 + dataTemp.getMinutes() * busteMinutoTurno1;
		
	};

	// Se periodo terzo turno
	if (dataTemp.getHours() >= 22)
	{
		busteFatteOggi = (6 * busteOraTurno3) + (8 * busteOraTurno1) + (8 * busteOraTurno2) + (dataTemp.getHours() - 22) * busteOraTurno3 + dataTemp.getMinutes() * busteMinutoTurno3;
		
	};
};


// Determina il numero di buste attuali calcolato sulla media della produzione giornaliera

contatore = busteFinoAIeri + busteFatteOggi;

function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + '.' + '$2');
	}
	return x1 + x2;
}





function contatoreBuste()
{
	var temp;


	temp=addCommas(contatore);
	document.frmContatore.Contatore.value=temp;

	dataTemp = new Date();
	dataTemp1 = new Date();



if (dataTemp.getDay() == 0 || dataTemp.getDay() == 6)
{
	oggiLavorativo=false;
};


// Determina se la data attuale è un giorno festivo
for(i = 0; i < giorniFestivi.length; i++)
{
	dataTemp1.setFullYear(giorniFestivi[i].substr(0, 4), giorniFestivi[i].substr(4, 2) - 1, giorniFestivi[i].substr(6, 2));

	// Se la data letta non è un sabato o una domenica
	if (dataTemp.valueOf() == dataTemp1.valueOf())
	{
		oggiLavorativo = false;
	};
};



	if (oggiLavorativo == true)
	{
		contatore = contatore + 21;
		if (
        	     ((dataTemp.getHours() >= 0) && (dataTemp.getHours() < 6)) ||
	
        	     (dataTemp.getHours() >= 22)
	           )
		{
			setTimeout("contatoreBuste()", 250); 
		};



		if ((dataTemp.getHours() >= 6) && (dataTemp.getHours() < 14))
		{
			setTimeout("contatoreBuste()", 125); 
		};

	
		if ((dataTemp.getHours() >= 14) && (dataTemp.getHours() < 22))
		{
			setTimeout("contatoreBuste()", 125); 
		};
	}
	else
	{
		oggiLavorativo = true;
		setTimeout("contatoreBuste()", 250); 
	};


	temp=addCommas(contatore);
	document.frmContatore.Contatore.value=temp;
};
