function chkMaskDATE(field,event) {
	var ns = ((document.layers || document.getElementById) && (!document.all));
	var ie = document.all;
	var keySet = '0123456789/';
	var actionSet = '0,8,13';
	var keyCode = (ie) ? window.event.keyCode : event.which;
	var key = String.fromCharCode(keyCode);
	if ((keySet.indexOf(key) == -1) && (actionSet.indexOf(keyCode) == -1)) {
		return false;
	} else {
		if ((field.value.length == 10) && (actionSet.indexOf(keyCode) == -1) && field.selectionEnd==0) {
			return false;
		} else if (key == '/') {
			if (((field.value.length == 1) || (field.value.length == 4)) && (field.value.charAt(field.value.length-1) != '0')) {
				field.value = field.value.substr(0,field.value.length-1) + '0' + field.value.substr(field.value.length-1,1);
				return true;
			} else if ((field.value.length != 2) && (field.value.length != 5)) {
				return false;
			}
		} else if (actionSet.indexOf(keyCode) != -1) {
			return true;
		} else {
			if ((field.value.length == 2) || (field.value.length == 5)) {
				field.value = field.value + '/';
				return true;
			}
		}
	}
}

function checkDATE(s, msgAlert)
{
	if(s.value.length == 0){
		return true;
	}

	var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
	if(!objRegExp.test(s.value))
	{	//doesn't match pattern, bad date
		alert(msgAlert);
		s.select();
		s.focus();

		return false;
	}

	d = parseInt(s.value.substr(0, 2), 10);
	m = parseInt(s.value.substr(3, 2), 10);
	y = parseInt(s.value.substr(6, 4), 10);

	bin_m = (1 << (m-1));

	// 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
	m31 = 0xAD5;

	if(( y < 1000) || (m < 1) || (m > 12) || (d < 1) || (d > 31) || ((d == 31 && ((bin_m & m31) == 0))) || ((d == 30 && m == 2)) || ((d == 29 && m == 2 && !isLeap(y))) )
	{
		alert(msgAlert);
		s.select();
		s.focus();

		return false;
	}

	return true;
}

function isLeap(year) {
	return (year % 4 == 0) && (year % 100 != 0 || year % 400 == 0);
}

function daysBetween(date1, date2)
{
	// converte as datas para o formato BR
	dateArr = date1.split('/');
	date1 = new Date(dateArr[2], dateArr[1], dateArr[0]);
	dateArr = date2.split('/');
	date2 = new Date(dateArr[2], dateArr[1], dateArr[0]);

	var DSTAdjust = 0;
	// constants used for our calculations below
	oneMinute = 1000 * 60;
	var oneDay = oneMinute * 60 * 24;
	// equalize times in case date objects have them
	date1.setHours(0);
	date1.setMinutes(0);
	date1.setSeconds(0);
	date2.setHours(0);
	date2.setMinutes(0);
	date2.setSeconds(0);
	// take care of spans across Daylight Saving Time changes
	if (date2 >= date1) {
		DSTAdjust =
			(date2.getTimezoneOffset() - date1.getTimezoneOffset()) * oneMinute;
	} else {
		return -1;
	}
	var diff = Math.abs(date2.getTime() - date1.getTime()) - DSTAdjust;
	return Math.ceil(diff/oneDay);
}

/**
* Compara duas datas de acordo com o operador passado
* As duas datas devem estar em formato BR (dd/mm/yyyy)
* @access	public
* @param 	string 	date1		data base a ser comparada, será comparada com a date2
* @param 	string 	operator	operador de comparação (=,!=,>,<,>=,<=)
* @param 	string 	date2		data de comparação
* @return 	bool
* @author	Luis Eduardo
*/
function compareDates(date1, operator, date2)
{
	// converte as datas para formato USA (mm/dd/yyyy)
	var arrDt1 = date1.split('/');
	var arrDt2 = date2.split('/');
	var dt1 = arrDt1[1] + '/' + arrDt1[0] + '/' + arrDt1[2];
	var dt2 = arrDt2[1] + '/' + arrDt2[0] + '/' + arrDt2[2];
	return eval("Date.parse('" + dt1 + "') " + operator + " Date.parse('" + dt2 + "')");
}

function timeDiff(time1, time2)
{
	// verifica se os times passados não tem os segundos
	var arrTime1 = time1.split(':');
	if(arrTime1.length == 2)
		time1 += ':00';

	var arrTime2 = time2.split(':');
	if(arrTime2.length == 2)
		time2 += ':00';

	// concatena nos times a data (do dia)
	var dateTmp = new Date();
	var day = (dateTmp.getDay() <=9 ? '0' + dateTmp.getDay() : dateTmp.getDay());
	var month = (dateTmp.getMonth() <=9 ? '0' + dateTmp.getMonth() : dateTmp.getMonth());
	var year = dateTmp.getFullYear();

	// formata a data (formato Brasil)
	var date1 = day + '/' + month + '/' + year + ' ' + time1;
	var date2 = day + '/' + month + '/' + year + ' ' + time2;

	return dateDiff(date1, date2);
}

function dateDiff(date1, date2)
{
	// array de retorno
	var arrRet = new Array();

	// separa a data em data e hora
	var arDtTime1 = date1.split(' ');
	var arDtTime2 = date2.split(' ');

	// converte as datas para formato USA (mm/dd/yyyy)
	var arrDt1 = arDtTime1[0].split('/');
	var arrDt2 = arDtTime2[0].split('/');
	var date1 = arrDt1[1] + '/' + arrDt1[0] + '/' + arrDt1[2] + ' ' + arDtTime1[1];
	var date2 = arrDt2[1] + '/' + arrDt2[0] + '/' + arrDt2[2] + ' ' + arDtTime2[1];

	var date1 = new Date(date1);
	var date2 = new Date(date2);
	var sec = date2.getTime() - date1.getTime();
	if (isNaN(sec))
	{
		return arrRet;
	}
	if (sec < 0)
	{
		return arrRet;
	}

	var second = 1000, minute = 60 * second, hour = 60 * minute, day = 24 * hour;

	var days = Math.floor(sec / day);
	sec -= days * day;
	var hours = Math.floor(sec / hour);
	sec -= hours * hour;
	var minutes = Math.floor(sec / minute);
	sec -= minutes * minute;
	var seconds = Math.floor(sec / second);

	arrRet.push(days);
	arrRet.push(hours);
	arrRet.push(minutes);
	arrRet.push(seconds);

	return arrRet;
}