// Funções para validação de dadtas
// SNIRH 21/02/2006

function ValidarData(dateStr) {
	// Valida as datas introduzidas
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	var matchArray = dateStr.match(datePat); // is the format ok?
	
	if (matchArray == null) {
		alert("O formato da data incorrecto.");
		return false;
	}
	
	day = matchArray[1]; // p@rse date into variables
	month = matchArray[3];
	year = matchArray[5];
	
	if (month < 1 || month > 12) { // check month range
		alert("O mês deve ser entre 1 e 12.");
		return false;
	}
	
	if (day < 1 || day > 31) {
		alert("O dia deve ser entre 1 e 31.");
		return false;
	}
	
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		alert("O mês "+month+" não tem 31 dias!")
		return false;
	}
	
	if (month == 2) { // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (day > 29 || (day==29 && !isleap)) {
			alert("Fevereiro " + year + " não tem " + day + " dias!");
			return false;
		}
	}

	return true; // date is valid
}

function DataConsitenciaAntesDepois(antes,depois) {

	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	var matchArray_antes = antes.match(datePat); // is the format ok?
	var matchArray_depois = depois.match(datePat); // is the format ok?
	
	if (matchArray_antes == null || matchArray_depois == null) {
		alert("O formato da data incorrecto.");
		return false;
	}
	
	var dataAntes = new Date();
	dataAntes.setYear(matchArray_antes[5]);
	dataAntes.setMonth( matchArray_antes[3]);
	dataAntes.setDate(matchArray_antes[1]);

	var dataDepois = new Date();
	dataDepois.setYear(matchArray_depois[5]);
	dataDepois.setMonth( matchArray_depois[3]);
	dataDepois.setDate(matchArray_depois[1]);
	
	var diff = dataDepois.getTime() - dataAntes.getTime();
	var dias = Math.floor(diff / (1000 * 60 * 60 * 24));
	
	//if(dias >= 1) {
	if(dias >= 0) {
		return true;
	} else {
		alert("Inconsistência nas datas.")
		return false;
	}
}

function ValidarHoraHH24MI(hora,separador) {
	var a,b,c,f,err=0;
	a=hora;
	if (a.length != 5) err=1;
	b = a.substring(0, 2);
	c = a.substring(2, 3);
	f = a.substring(3, 5);
	if (/\D/g.test(b)) err=1; //not a number
	if (/\D/g.test(f)) err=1;
	if (b<0 || b>23) err=1;
	if (f<0 || f>59) err=1;
	if (c != separador) err=1;
	if (err==1) {
		return false
	} else {
		return true;
	}
}

function MGL_MesesPT(num) {
	// MGL_MesesPT v1.0 29/09/2008
	// Devolve o nome do mês em Português
	// A entrada deve ser umm número de 1..12

	// O indice dos array começa em 0, por isso o ""
	var mesespt = new Array("","Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro")
	
	return mesespt[parseInt(num)];
	
}

function DateAdd(objDate, strInterval, intIncrement) {
        if(typeof(objDate) == "string")
        {
            objDate = new Date(objDate);
 
            if (isNaN(objDate))
            {
                throw("DateAdd: Date is not a valid date");
            }
        }
        else if(typeof(objDate) != "object" || objDate.constructor.toString().indexOf("Date()") == -1)
        {
            throw("DateAdd: First parameter must be a date object");
        }
 
        if(
        strInterval != "M"
        && strInterval != "D"
        && strInterval != "Y"
        && strInterval != "h"
        && strInterval != "m"
        && strInterval != "uM"
        && strInterval != "uD"
        && strInterval != "uY"
        && strInterval != "uh"
        && strInterval != "um"
        && strInterval != "us"
        )
        {
            throw("DateAdd: Second parameter must be M, D, Y, h, m, uM, uD, uY, uh, um or us");
        }
 
        if(typeof(intIncrement) != "number")
        {
            throw("DateAdd: Third parameter must be a number");
        }
 
        switch(strInterval)
        {
            case "M":
            objDate.setMonth(parseInt(objDate.getMonth()) + parseInt(intIncrement));
            break;
 
            case "D":
            objDate.setDate(parseInt(objDate.getDate()) + parseInt(intIncrement));
            break;
 
            case "Y":
            objDate.setYear(parseInt(objDate.getYear()) + parseInt(intIncrement));
            break;
 
            case "h":
            objDate.setHours(parseInt(objDate.getHours()) + parseInt(intIncrement));
            break;
 
            case "m":
            objDate.setMinutes(parseInt(objDate.getMinutes()) + parseInt(intIncrement));
            break;
 
            case "s":
            objDate.setSeconds(parseInt(objDate.getSeconds()) + parseInt(intIncrement));
            break;
 
            case "uM":
            objDate.setUTCMonth(parseInt(objDate.getUTCMonth()) + parseInt(intIncrement));
            break;
 
            case "uD":
            objDate.setUTCDate(parseInt(objDate.getUTCDate()) + parseInt(intIncrement));
            break;
 
            case "uY":
            objDate.setUTCFullYear(parseInt(objDate.getUTCFullYear()) + parseInt(intIncrement));
            break;
 
            case "uh":
            objDate.setUTCHours(parseInt(objDate.getUTCHours()) + parseInt(intIncrement));
            break;
 
            case "um":
            objDate.setUTCMinutes(parseInt(objDate.getUTCMinutes()) + parseInt(intIncrement));
            break;
 
            case "us":
            objDate.setUTCSeconds(parseInt(objDate.getUTCSeconds()) + parseInt(intIncrement));
            break;
        }
        return objDate;
}

