<!--
function isInteger(s) {
	var i;
    for (i = 0; i < s.length; i++) {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag) {
	var i;
	var returnString = "";
	// Search through string's characters one by one.
	// If character is not in bag, append to returnString.
	for (i = 0; i < s.length; i++) {   
			var c = s.charAt(i);
			if (bag.indexOf(c) == -1) returnString += c;
	}
	return returnString;
}

function daysInFebruary (year) {
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function is_Date(dtStr,dtCh,minYear,maxYear,preStr) {
	if (!dtCh) dtCh = "-";
	if (!minYear) minYear = 2007;
	if (!maxYear) maxYear = 2100;
	preStr = (preStr) ? preStr+": " : "";
	var daysInMonth = Array(31,29,31,30,31,30,31,31,30,31,30,31);
	var pos1=dtStr.indexOf(dtCh);
	var pos2=dtStr.indexOf(dtCh,pos1+1);
	if (pos1==-1 || pos2==-1){
		return [((preStr) ? preStr+"la" : "La") + " data deve essere nella forma \'gg" + dtCh + "mm" + dtCh + "aaaa\'",1];
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		return [((preStr) ? preStr+"la" : "La") + " data deve essere nella forma \'gg" + dtCh + "mm" + dtCh + "aaaa\'",1];
	}
	var strDay=dtStr.substring(0,pos1);
	var strMonth=dtStr.substring(pos1+1,pos2);
	var strYear=dtStr.substring(pos2+1);
	strYr=strYear;
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1);
	}
	month=parseInt(strMonth);
	day=parseInt(strDay);
	year=parseInt(strYr);
	num = 0;
	msg = "";
	if (strYear.length != 4 || year<minYear || year>maxYear){
		msg = ((preStr) ? preStr+"l" : "L") + "\'anno deve essere compreso tra " + minYear + " e " + maxYear;
		num++;
	}
	if (!msg) daysInMonth[1] = daysInFebruary(year);
	if (strMonth.length<1 || month<1 || month>12){
		if (msg) msg = msg + "\n - ";
		msg = msg + ((preStr) ? preStr+"il" : "Il") + " mese deve essere compreso tra 1 e 12";
		num++;
		month = 1;
	}
	if (strDay.length<1 || day<1 || day > daysInMonth[month-1]){
		if (msg) msg = msg + "\n - ";
		msg = msg + ((preStr) ? preStr+"il" : "Il") + " giorno deve essere compreso tra 1 e " + daysInMonth[month-1];
		num++;
	}
	return [msg,num];
}

function isTime(tmStr) {
	var re = /^\d{1,2}[.]\d{2}$/;
	if (!re.test(tmStr)) return "wf";
	var err = "";
	var values = tmStr.split(".");
	var hour = parseInt(values[0]);
	var minute = parseInt(values[1]);
	if (hour == 24 && minute == 0) return ""; 
	if (hour == 24 && minute != 0) return "wm24";
	if (hour < 0 || hour > 23) err = "wh";  
	if (minute < 0 || minute > 59) err = (err) ? err + "|wm" : "wm";
	return err;
}

function easterDate(year) {
	var a = year % 19;
	var b = Math.floor(year/100);
	var c = year % 100;
	var d = Math.floor(b/4);
	var e = b % 4;
	var f = Math.floor((b+8)/25);
	var g = Math.floor((b-f+1)/3);
	var h = (19*a + b - d - g + 15) % 30;
	var i = Math.floor(c/4);
	var j = c % 4;
	var k = (32 + 2*e + 2*i - h - j) % 7;
	var m = Math.floor((a + 11*h + 22*k)/451);
	var month = Math.floor((h + k - 7*m + 114)/31);
	var day = ((h + k - 7*m +114) % 31) + 1;
	date = new Date(year,month-1,day);
	return date;
}

function isHoliday(date) {
	wday = date.getDay();
	if (wday == 0) return true;
	year = date.getYear();
	eastermonday = easterDate(year);
	eastermonday.setDate(eastermonday.getDate()+1); 
	if (date-eastermonday == 0) return true;
	month = date.getMonth()+1;
	day = date.getDate();
	daymonth = month*100+day;
	isholiday = false;
	switch (daymonth) {
		case 1*100+1: // 1 gennaio
			isholiday = true;
			break;
		case 1*100+6: // 6 gennaio
			isholiday = true;
			break;
		case 4*100+25: // 25 aprile
			isholiday = true;
			break;
		case 5*100+1: // 1 maggio
			isholiday = true;
			break;
		case 6*100+2: // 2 giugno
			isholiday = true;
			break;
		case 8*100+15: // 15 agosto
			isholiday = true;
			break;
		case 11*100+1: // 1 novembre
			isholiday = true;
			break;
		case 12*100+8: // 8 dicembre
			isholiday = true;
			break;
		case 12*100+25: // Natale
			isholiday = true;
			break;
		case 12*100+26: // 26 dicembre
			isholiday = true;
			break;
		default:
	}
	return isholiday;
}
//-->
