var listino2_tab = new Array(); 
listino2_tab['AD'] = new Array();
listino2_tab['AD'][0] = new Array(4, 11, 5, 22, 5.00);
listino2_tab['AD'][1] = new Array(5, 23, 6, 26, 6.00);
listino2_tab['AD'][2] = new Array(6, 27, 8, 7, 7.00);
listino2_tab['AD'][3] = new Array(8, 8, 8, 21, 8.00);
listino2_tab['AD'][4] = new Array(8, 22, 9, 4, 5.00);
listino2_tab['AD'][5] = new Array(9, 5, 9, 30, 5.00);
listino2_tab['B4'] = new Array();
listino2_tab['B4'][0] = new Array(4, 11, 5, 22, 60.00);
listino2_tab['B4'][1] = new Array(5, 23, 6, 26, 80.00);
listino2_tab['B4'][2] = new Array(6, 27, 8, 7, 100.00);
listino2_tab['B4'][3] = new Array(8, 8, 8, 21, 130.00);
listino2_tab['B4'][4] = new Array(8, 22, 9, 4, 70.00);
listino2_tab['B4'][5] = new Array(9, 5, 9, 30, 60.00);
listino2_tab['BA'] = new Array();
listino2_tab['BA'][0] = new Array(4, 11, 5, 22, 3.00);
listino2_tab['BA'][1] = new Array(5, 23, 6, 26, 3.00);
listino2_tab['BA'][2] = new Array(6, 27, 8, 7, 4.00);
listino2_tab['BA'][3] = new Array(8, 8, 8, 21, 5.00);
listino2_tab['BA'][4] = new Array(8, 22, 9, 4, 3.00);
listino2_tab['BA'][5] = new Array(9, 5, 9, 30, 3.00);
listino2_tab['MH2'] = new Array();
listino2_tab['MH2'][0] = new Array(4, 3, 5, 22, 45.00);
listino2_tab['MH2'][1] = new Array(5, 23, 6, 26, 65.00);
listino2_tab['MH2'][2] = new Array(6, 27, 8, 7, 85.00);
listino2_tab['MH2'][3] = new Array(8, 8, 8, 21, 95.00);
listino2_tab['MH2'][4] = new Array(8, 22, 9, 4, 55.00);
listino2_tab['MH2'][5] = new Array(9, 5, 9, 30, 45.00);
listino2_tab['MH4'] = new Array();
listino2_tab['MH4'][0] = new Array(4, 11, 5, 22, 65.00);
listino2_tab['MH4'][1] = new Array(5, 23, 6, 26, 85.00);
listino2_tab['MH4'][2] = new Array(6, 27, 8, 7, 110.00);
listino2_tab['MH4'][3] = new Array(8, 8, 8, 21, 145.00);
listino2_tab['MH4'][4] = new Array(8, 22, 9, 4, 75.00);
listino2_tab['MH4'][5] = new Array(9, 5, 9, 30, 65.00);
listino2_tab['OS'] = new Array();
listino2_tab['OS'][0] = new Array(4, 11, 5, 22, 7.00);
listino2_tab['OS'][1] = new Array(5, 23, 6, 26, 7.00);
listino2_tab['OS'][2] = new Array(6, 27, 8, 7, 7.00);
listino2_tab['OS'][3] = new Array(8, 8, 8, 21, 7.00);
listino2_tab['OS'][4] = new Array(8, 22, 9, 4, 7.00);
listino2_tab['OS'][5] = new Array(9, 5, 9, 30, 7.00);
listino2_tab['PZ'] = new Array();
listino2_tab['PZ'][0] = new Array(4, 11, 5, 22, 15.00);
listino2_tab['PZ'][1] = new Array(5, 23, 6, 26, 18.00);
listino2_tab['PZ'][2] = new Array(6, 27, 8, 7, 22.00);
listino2_tab['PZ'][3] = new Array(8, 8, 8, 21, 24.00);
listino2_tab['PZ'][4] = new Array(8, 22, 9, 4, 15.00);
listino2_tab['PZ'][5] = new Array(9, 5, 9, 30, 15.00);
listino2_tab['V6'] = new Array();
listino2_tab['V6'][0] = new Array(4, 11, 5, 22, 95.00);
listino2_tab['V6'][1] = new Array(5, 23, 6, 26, 105.00);
listino2_tab['V6'][2] = new Array(6, 27, 8, 7, 125.00);
listino2_tab['V6'][3] = new Array(8, 8, 8, 21, 160.00);
listino2_tab['V6'][4] = new Array(8, 22, 9, 4, 105.00);
listino2_tab['V6'][5] = new Array(9, 5, 9, 30, 95.00);
var listino2_form;
var listino2_delta = 86400000;
var listino2_anno = 0;
var listino2_min = Number.POSITIVE_INFINITY;
var listino2_max = Number.NEGATIVE_INFINITY;

function listino2_setup() {
	try {
		for (var i=0; i<document.forms.length; i++) {
			var f = listino2_form = document.forms[i];
			if (f && f.className == 'listino2') {
				var fr = f.elements['dal']; if (fr) fr.onblur = listino2_recalculate;
				var to = f.elements['al']; if (to) to.onblur = listino2_recalculate;
				var si = f.elements['sistemazione']; for (var j=0; j<si.length; j++) si[j].onclick = listino2_recalculate;
				var ad = f.elements['nadulti']; if (ad) ad.onclick = listino2_recalculate;
				var ba = f.elements['nbambini']; if (ba) ba.onclick = listino2_recalculate;
				var os = f.elements['nospite']; if (os) os.onclick = listino2_recalculate;
				break;
			}
		}
		var d1 = Date.UTC(2000,0,1,0,0,0,0);
		var d2 = Date.UTC(2000,0,2,0,0,0,0);
		listino2_delta = Math.abs(d2-d1);
		var dd = new Date();
		listino2_anno = dd.getFullYear();
		listino2_min = Number.POSITIVE_INFINITY;
		listino2_max = Number.NEGATIVE_INFINITY;
		for (var i in listino2_tab) {
			for (var j=0; j<listino2_tab[i].length; j++) {
				var d1 = Date.UTC(listino2_anno,listino2_tab[i][j][0]-1,listino2_tab[i][j][1]);
				var d2 = Date.UTC(listino2_anno,listino2_tab[i][j][2]-1,listino2_tab[i][j][3]);
				if (d1 < listino2_min) listino2_min = d1;
				if (d2 < listino2_min) listino2_min = d2;
				if (d1 > listino2_max) listino2_max = d1;
				if (d2 > listino2_max) listino2_max = d2;
			}
		}
	} catch (e) {}
}

function strTrim(s) {
	try {
		s = s.replace(/^\s+/, '').replace(/\s+$/, '');
		return s;
	} catch (e) {}
	return '';
}

function str2int(s) {
	try {
		s = parseInt(strTrim(s));
		return s;
	} catch (e) {
		return 0;
	}
}

// gg/mm/aaaa => ts
function date2stamp(d) {
	try {
		if (d!=null && d && d!='') {
			d = strTrim(d).replace(/[^0-9]+/g, '/');
			var da = d.split('/', 3);
			if (da.length==3) {
				da[0] = str2int(da[0]);
				da[1] = str2int(da[1]);
				da[2] = str2int(da[2]);
				var ret = Date.UTC(da[2], da[1]-1, da[0]);
				return ret;
			}
		}
	} catch (e) {}
	return 0;
}

function listino2_getDays(frts, tots) {
	try {
		if (!frts || !tots) return 0;
		var ret = Math.floor(Math.abs(tots-frts)/listino2_delta);
		return (ret>0)?ret:0;
	} catch (e) {
		return 0;
	}
}

function listino2_getPrice(frts, tots, sisc, adno, bano, osno) {
	var tmp, i, j;
	try {
		if (!frts || !tots || sisc=='') return '--';
		if (frts > tots) {
			tmp = frts;
			frts = tots;
			tots = tmp;
		}
		if (adno<0) adno = 0;
		if (bano<0) bano = 0;
		if (osno<0) osno = 0;
		
		var tot = 0.0;
		var dat = new Date();
		var frd = 0;
		var tod = 0;
		var now = 0;
		var found, dcost;
		var days = listino2_getDays(frts, tots);
		var prices = new Array();
		for (j=0; j<days; j++) {
			prices[j] = 0.0;
			found = false;
			dcost = 0;
			now = frts + j*listino2_delta;
			dat.setTime(now);
			for (i=0; i<listino2_tab[sisc].length; i++) {
				frd = Date.UTC(dat.getFullYear(), listino2_tab[sisc][i][0]-1, listino2_tab[sisc][i][1]);
				tod = Date.UTC(dat.getFullYear(), listino2_tab[sisc][i][2]-1, listino2_tab[sisc][i][3]);
				if (frd<=now && now<=tod) {
					found = true;
					dcost = listino2_tab[sisc][i][4];
					break;
				}
			}
			if (found) {
				tot += dcost;
				prices[j] = dcost;
				if (sisc=='PZ') {
					// solo per piazzetta
					if (adno>0) {
						// numero adulti
						found = false;
						dcost = 0;
						now = frts + j*listino2_delta;
						dat.setTime(now);
						for (i=0; i<listino2_tab['AD'].length; i++) {
							frd = Date.UTC(dat.getFullYear(), listino2_tab['AD'][i][0]-1, listino2_tab['AD'][i][1]);
							tod = Date.UTC(dat.getFullYear(), listino2_tab['AD'][i][2]-1, listino2_tab['AD'][i][3]);
							if (frd<=now && now<=tod) {
								found = true;
								dcost = listino2_tab['AD'][i][4];
								break;
							}
						}
						if (found) {
							tot += dcost*adno;
							prices[j] += dcost*adno;
						}
					}
					if (bano>0) {
						// numero bambini
						found = false;
						dcost = 0;
						now = frts + j*listino2_delta;
						dat.setTime(now);
						for (i=0; i<listino2_tab['BA'].length; i++) {
							frd = Date.UTC(dat.getFullYear(), listino2_tab['BA'][i][0]-1, listino2_tab['BA'][i][1]);
							tod = Date.UTC(dat.getFullYear(), listino2_tab['BA'][i][2]-1, listino2_tab['BA'][i][3]);
							if (frd<=now && now<=tod) {
								found = true;
								dcost = listino2_tab['BA'][i][4];
								break;
							}
						}
						if (found) {
							tot += dcost*bano;
							prices[j] += dcost*bano;
						}
					}
					if (osno>0) {
						// numero ospiti
						found = false;
						dcost = 0;
						now = frts + j*listino2_delta;
						dat.setTime(now);
						for (i=0; i<listino2_tab['OS'].length; i++) {
							frd = Date.UTC(dat.getFullYear(), listino2_tab['OS'][i][0]-1, listino2_tab['OS'][i][1]);
							tod = Date.UTC(dat.getFullYear(), listino2_tab['OS'][i][2]-1, listino2_tab['OS'][i][3]);
							if (frd<=now && now<=tod) {
								found = true;
								dcost = listino2_tab['OS'][i][4];
								break;
							}
						}
						if (found) {
							tot += dcost*osno;
							prices[j] += dcost*osno;
						}
					}
				}
			} else {
				return '[ERR]';
			}
		}
		if (tot<=0) return '--';
		
		var n = new Number(tot);
		return '' + n.toFixed(2) + ' EUR';
	} catch (e)	{
		return '--';
	}
}

function normalize_date(s) {
	try {
		if (s.match(/[0-9]+[^0-9]+[0-9]+/)) {
			var d = new Date();
			s = strTrim(s).replace(/[^0-9]+/g, '/');
			var da = s.split('/', 3);
			if (da.length==3) {
				da[0] = str2int(da[0]);
				da[1] = str2int(da[1]);
				da[2] = str2int(da[2]);
				d.setTime(Date.UTC(da[2], da[1]-1, da[0]));
			} else {
				if (da.length==2) {
					da[0] = str2int(da[0]);
					da[1] = str2int(da[1]);
					da[2] = listino2_anno;
					d.setTime(Date.UTC(da[2], da[1]-1, da[0]));
				}
			}
			s = d.getDate() + '/' + (d.getMonth()+1) + '/' + d.getFullYear();
		}
	} catch (e) {}
	return s;
}

function listino2_recalculate() { 
	var gi, pi, fr, to, si, ad, ba, os;
	var i, j, tmp, tmp2, dx;
	
	if (listino2_form) {
		// fetch values
		try {
			gi = document.getElementById('listino2_giorni');
			pi = document.getElementById('listino2_indicativo');
			fr = listino2_form.elements['dal'];
			if (fr) fr.value = normalize_date(fr.value);
			to = listino2_form.elements['al'];
			if (to) to.value = normalize_date(to.value);
			si = listino2_form.elements['sistemazione'];
			ad = listino2_form.elements['nadulti'];
			ba = listino2_form.elements['nbambini'];
			os = listino2_form.elements['nospite'];

			if (!(gi && pi && fr && to && si && ad && ba && os)) return;
			
			var frts = date2stamp(fr.value);
			var tots = date2stamp(to.value);
			if (frts<=0 || tots<=0) {
				gi.innerHTML = '--';
				pi.innerHTML = '--';
				return;			
			}
			if (frts > tots) {
				tmp = frts; tmp2 = fr.value;
				frts = tots; fr.value = to.value;
				tots = tmp; to.value = tmp2;
			}
			if (frts < listino2_min) {
				frts = listino2_min;
				dx = new Date();
				dx.setTime(frts);
				fr.value = dx.getDate() + '/' + (dx.getMonth()+1) + '/' + dx.getFullYear();
			}
			if (tots > listino2_max) {
				tots = listino2_max;
				dx = new Date();
				dx.setTime(tots);
				to.value = dx.getDate() + '/' + (dx.getMonth()+1) + '/' + dx.getFullYear();
			}
			if (frts > tots) {
				tmp = frts; tmp2 = fr.value;
				frts = tots; fr.value = to.value;
				tots = tmp; to.value = tmp2;
			}
			var sisc = '';
			for (i=0; i<si.length; i++) {
				if (si[i].checked) {
					sisc = si[i].value;
					sisc = sisc.replace(/\|.*$/, '');
					break;
				}
			}
			var adno = str2int(ad.options[ad.selectedIndex].value);
			var bano = str2int(ba.options[ba.selectedIndex].value);
			var osno = str2int(os.options[os.selectedIndex].value);
			
			var days = listino2_getDays(frts, tots);
			gi.innerHTML = (days>0)?days:'--';
			pi.innerHTML = listino2_getPrice(frts, tots, sisc, adno, bano, osno);
			
		} catch (e) {
			gi.innerHTML = '--';
			pi.innerHTML = '--';
			return;
		}
	}
} 
