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] = "20100101";
giorniFestivi[1] = "20100102";
giorniFestivi[2] = "20100103";
giorniFestivi[3] = "20100104";
giorniFestivi[4] = "20100105";
giorniFestivi[5] = "20100106";
giorniFestivi[6] = "20100109";
giorniFestivi[7] = "20100110";
giorniFestivi[8] = "20100116";
giorniFestivi[9] = "20100117";
giorniFestivi[10] = "20100123";
giorniFestivi[11] = "20100124";
giorniFestivi[12] = "20100130";
giorniFestivi[13] = "20100131";

giorniFestivi[14] = "20100206";
giorniFestivi[15] = "20100207";
giorniFestivi[16] = "20100213";
giorniFestivi[17] = "20100214";
giorniFestivi[18] = "20100220";
giorniFestivi[19] = "20100221";
giorniFestivi[20] = "20100227";
giorniFestivi[21] = "20100228";

giorniFestivi[22] = "20100306";
giorniFestivi[23] = "20100307";
giorniFestivi[24] = "20100313";
giorniFestivi[25] = "20100314";
giorniFestivi[26] = "20100320";
giorniFestivi[27] = "20100321";
giorniFestivi[28] = "20100327";
giorniFestivi[29] = "20100328";

giorniFestivi[30] = "20100403";
giorniFestivi[31] = "20100404";
giorniFestivi[32] = "20100405";
giorniFestivi[33] = "20100410";
giorniFestivi[34] = "20100411";
giorniFestivi[35] = "20100417";
giorniFestivi[36] = "20100418";
giorniFestivi[37] = "20100424";
giorniFestivi[38] = "20100425";

giorniFestivi[39] = "20100501";
giorniFestivi[40] = "20100502";
giorniFestivi[41] = "20100508";
giorniFestivi[42] = "20100509";
giorniFestivi[43] = "20100515";
giorniFestivi[44] = "20100516";
giorniFestivi[45] = "20100522";
giorniFestivi[46] = "20100523";
giorniFestivi[47] = "20100529";
giorniFestivi[48] = "20100530";

giorniFestivi[49] = "20100602";
giorniFestivi[50] = "20100605";
giorniFestivi[51] = "20100606";
giorniFestivi[52] = "20100612";
giorniFestivi[53] = "20100613";
giorniFestivi[54] = "20100619";
giorniFestivi[55] = "20100620";
giorniFestivi[56] = "20100626";
giorniFestivi[57] = "20100627";
giorniFestivi[58] = "20100628";

giorniFestivi[59] = "20100703";
giorniFestivi[60] = "20100704";
giorniFestivi[61] = "20100710";
giorniFestivi[62] = "20100711";
giorniFestivi[63] = "20100717";
giorniFestivi[64] = "20100718";
giorniFestivi[65] = "20100724";
giorniFestivi[66] = "20100725";
giorniFestivi[67] = "20100731";

giorniFestivi[68] = "20100801";
giorniFestivi[69] = "20100802";
giorniFestivi[70] = "20100803";
giorniFestivi[71] = "20100804";
giorniFestivi[72] = "20100805";
giorniFestivi[73] = "20100806";
giorniFestivi[74] = "20100807";
giorniFestivi[75] = "20100808";
giorniFestivi[76] = "20100809";
giorniFestivi[77] = "20100810";
giorniFestivi[78] = "20100811";
giorniFestivi[79] = "20100812";
giorniFestivi[80] = "20100813";
giorniFestivi[81] = "20100814";
giorniFestivi[82] = "20100815";
giorniFestivi[83] = "20100816";
giorniFestivi[84] = "20100817";
giorniFestivi[85] = "20100818";
giorniFestivi[86] = "20100819";
giorniFestivi[87] = "20100820";
giorniFestivi[88] = "20100821";
giorniFestivi[89] = "20100822";
giorniFestivi[90] = "20100823";
giorniFestivi[91] = "20100824";
giorniFestivi[92] = "20100825";
giorniFestivi[93] = "20100826";
giorniFestivi[94] = "20100827";
giorniFestivi[95] = "20100828";
giorniFestivi[96] = "20100829";

giorniFestivi[97] = "20100904";
giorniFestivi[98] = "20100905";
giorniFestivi[99] = "20100911";
giorniFestivi[100] = "20100912";
giorniFestivi[101] = "20100918";
giorniFestivi[102] = "20100919";
giorniFestivi[103] = "20100925";
giorniFestivi[104] = "20100926";

giorniFestivi[105] = "20101002";
giorniFestivi[106] = "20101003";
giorniFestivi[107] = "20101009";
giorniFestivi[108] = "20101010";
giorniFestivi[109] = "20101016";
giorniFestivi[110] = "20101017";
giorniFestivi[111] = "20101023";
giorniFestivi[112] = "20101024";
giorniFestivi[113] = "20101030";
giorniFestivi[114] = "20101031";

giorniFestivi[115] = "20101101";
giorniFestivi[116] = "20101106";
giorniFestivi[117] = "20101107";
giorniFestivi[118] = "20101113";
giorniFestivi[119] = "20101114";
giorniFestivi[120] = "20101120";
giorniFestivi[121] = "20101121";
giorniFestivi[122] = "20101127";
giorniFestivi[123] = "20101128";

giorniFestivi[124] = "20101204";
giorniFestivi[125] = "20101205";
giorniFestivi[126] = "20101208";
giorniFestivi[127] = "20101211";
giorniFestivi[128] = "20101212";
giorniFestivi[129] = "20101218";
giorniFestivi[130] = "20101219";
giorniFestivi[131] = "20101224";
giorniFestivi[132] = "20101225";
giorniFestivi[133] = "20101226";
giorniFestivi[134] = "20101227";
giorniFestivi[135] = "20101228";
giorniFestivi[136] = "20101229";
giorniFestivi[137] = "20101230";
giorniFestivi[138] = "20101231";

giorniFestivi[139] = "20110101";
giorniFestivi[140] = "20110102";
giorniFestivi[141] = "20110103";
giorniFestivi[142] = "20110104";
giorniFestivi[143] = "20110105";
giorniFestivi[144] = "20110106";


// 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;
};