var data1;
var data2;
var dif_hora;

function validaDat(valor, cres) {
var date=valor;
var ardt=new Array;
	
//ANO-MES-DIA

var ExpReg=new RegExp("[12][0-9]{3}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$");
	
ardt=date.split("-");
erro=false;

if (date.search(ExpReg)==-1){
	erro = true;
}
else if (((ardt[1]==4)||(ardt[1]==6)||(ardt[1]==9)||(ardt[1]==11))&&(ardt[2]>30))
	erro = true;
else if ( ardt[1]==2) {
	if ((ardt[2]>28)&&((ardt[2]%4)!=0)){
		erro = true;
    }
	if ((ardt[2]>29)&&((ardt[2]%4)==0)){
		erro = true;
    }
}

if (erro) {
    if (cres==1){
	   alert("Formato da data invalida Exemplo correcto: 1900-01-01")
	}
	return false;
}
	return true;
}

//hora-minuto

function validahora(valor) {
	var date=valor;
	var ardt=new Array;
	

	var ExpReg=new RegExp("[0-2][0-9]:[0-5][0-9]$");
	var ExpReg1=new RegExp("[0-2][0-9]:[0-5][0-9]:[0-5][0-9]$");
	
	ardt=date.split(":");
	erro=false;
	if (date.search(ExpReg)==-1 && date.search(ExpReg1)==-1 ){
		erro = true;
		}
	else if (ardt[0]>23)
		erro = true;
	else if (ardt[1]>60) {
		erro = true;
	}

	if (erro) {
		alert("Formato da hora invalida Exemplo correcto: 00:00")
		return false;
	}
	return true;
}

//Recebe duas horas e testa de a primeira é maior do que a segunda
function testehoras(d1,d2) {
	var da1=d1;
	var da2=d2;
	var ardt1=new Array;
	var ardt2=new Array;

	
	ardt1=da1.split(":");
	ardt2=da2.split(":");
	
	erro=false;
	
	if (ardt1[0]>ardt2[0]){
		erro = true;
		}
	else if (ardt1[0]==ardt2[0] && ardt1[1]>=ardt2[1]) {
		erro = true;
	}

	if (erro) {
		alert (da1 + " é superior a " + da2)
		return false;
	}
	return true;
}


//Recebe uma data e ver testa se é menor que a data actual + o numero de dias definido pelo utilizador

function testa_data_dias(d1,n_dias) {
	var da1=d1;
	var ardt1=new Array;
	ardt1=da1.split("-");

	var thetime=new Date();

	var ntoday=thetime.getDate();
	var nmonth=thetime.getMonth();
	var nyear=thetime.getYear();

    if (nyear<=99) {
        nyear= "19"+nyear;
    }

    if ((nyear>99) && (nyear<2000)) {
         nyear+=1900;
    }

	ntoday=ntoday+n_dias;
	nmonth=nmonth+1;

	erro=false;
	
	if (ardt1[0]<nyear){
		erro = true;
		}
	else if (ardt1[0]==nyear && ardt1[1]<nmonth) {
		erro = true;
	}
	
	else if (ardt1[0]==nyear && ardt1[1]==nmonth && ardt1[2]<=ntoday) {
		erro = true;
	}

	if (erro) {
		return false;
	}
	return true;
}

//retorma true se a data for superior a hoje
function teste_passdo(data) {
    var thetime=new Date();

    var ntoday=thetime.getDate();
    var nmonth=thetime.getMonth();
    var nyear=thetime.getYear();

    nmonth=nmonth+1;
    
	if (nmonth<10){
		nmonth="0"+nmonth;
	}

	if (ntoday<10){
		ntoday="0"+ntoday;
	}

    if (nyear<=99) {
        nyear= "19"+nyear;
    }

    if ((nyear>99) && (nyear<2000)) {
         nyear+=1900;
    }

    var hoje=nyear+"-"+nmonth+"-"+ntoday;

    if (data_menor(data,hoje)==false){
        return false;
    }
}


//retorma true se a data for inferior a hoje
function teste_futuro(data) {
    var thetime=new Date();

    var ntoday=thetime.getDate();
    var nmonth=thetime.getMonth();
    var nyear=thetime.getYear();

    nmonth=nmonth+1;

	if (nmonth<10){
		nmonth="0"+nmonth;
	}

	if (ntoday<10){
		ntoday="0"+ntoday;
	}

    if (nyear<=99) {
        nyear= "19"+nyear;
    }

    if ((nyear>99) && (nyear<2000)) {
         nyear+=1900;
    }

    var hoje=nyear+"-"+nmonth+"-"+ntoday;

    if (data_menor(hoje,data)==false){
        return false;
    }
}


function calcula_dia() {
    var thetime=new Date();

    var ntoday=thetime.getDate();
    var nmonth=thetime.getMonth();
    var nyear=thetime.getYear();

    nmonth=nmonth+1;

	if (nmonth<10){
		nmonth="0"+nmonth;
	}

	if (ntoday<10){
		ntoday="0"+ntoday;
	}

    if (nyear<=99) {
        nyear= "19"+nyear;
    }

    if ((nyear>99) && (nyear<2000)) {
         nyear+=1900;
    }

    var hoje=nyear+"-"+nmonth+"-"+ntoday;
    data1=hoje;
}





// testa se d1 é menor que d2 se não for da erro
function data_menor(d1,d2) {
	var da1=d1;
	var da2=d2;
	var ardt=new Array;
	var ardt1=new Array;

	ardt=da1.split("-");
	ardt1=da2.split("-");

	erro=false;

	if (ardt1[0]<ardt[0]){
		erro = true;
		}
	else if (ardt1[0]==ardt[0] && ardt1[1]<ardt[1]) {
		erro = true;
	}

	else if (ardt1[0]==ardt[0] && ardt1[1]==ardt[1]&& ardt1[2]<ardt[2]) {
		erro = true;
	}

	if (erro) {
        alert (da1 + " é superior a " + da2)
        return false;
	}
	return true;
}

// testa se d1 é igual a d2 se não for da erro
function data_igual(d1,d2) {
	var da1=d1;
	var da2=d2;
	var ardt=new Array;
	var ardt1=new Array;

	ardt=da1.split("-");
	ardt1=da2.split("-");

	erro=false;

	if (ardt1[0]=!ardt[0] || ardt1[1]!=ardt[1] || ardt1[2]!=ardt[2]){
		erro = true;
	}
	if (erro) {
        return false;
	}
	return true;
}

//calcular mes actual

function calcular_mes()  {

	var thetime=new Date();
	var ntoday=thetime.getDate();
	var nmonth=thetime.getMonth();
	var nyear=thetime.getYear();

	nmonth=nmonth+1;

	if (nmonth<10){
		nmonth="0"+nmonth;
	}
	
	if (nyear<=99) {
        nyear= "19"+nyear;
    }

    if ((nyear>99) && (nyear<2000)) {
         nyear+=1900;
    }
	
	data1=nyear + "-" + nmonth + "-01";
	if ((nmonth==4)||(nmonth==6)||(nmonth==9)||(nmonth==11)){
		data2=nyear + "-" + nmonth + "-30";
	}
	if (nmonth==2) {
		if ((nyear%4)!=0){
			data2=nyear + "-" + nmonth + "-28";
		}
		if ((nyear%4)==0){
			data2=nyear + "-" + nmonth + "-29";
		}

	}
	if ((nmonth==1)||(nmonth==3)||(nmonth==5)||(nmonth==7)||(nmonth==8)||(nmonth==10)||(nmonth==12)){
		data2=nyear + "-" + nmonth + "-31";
	}
}
//devolve o mes e o ano data actual
function calcular_mes_ano()  {

	var thetime=new Date();
	var ntoday=thetime.getDate();
	var nmonth=thetime.getMonth();
	var nyear=thetime.getYear();

	nmonth=nmonth+1;

 if (nyear<=99)
  nyear= "19"+nyear;

if ((nyear>99) && (nyear<2000))
 nyear+=1900;

	data1=nmonth;
	data2=nyear;
}

//devolve o mes e o ano duma data
function calcular_mes_ano_data(data)  {

    var d=data;
    ardt=d.split("-");
	data1=ardt[0];
	data2=ardt[1];
}


// Recebe 2 horas e devolve as diferença
function dif_horas(hora1,hora2)  {

	var h1=hora1;
	var h2=hora2;

    var saldomin;
    var saldohor;

    var ardt=new Array;
	var ardt1=new Array;
    ardt=h1.split(":");
    ardt1=h2.split(":");
    if (ardt[1]==0 && ardt[0]>ardt1[0] && ardt1[1]!=0 ) {
		saldomin=60-ardt1[1];
		saldohor=(ardt[0]-ardt1[0])-1
	}

    else if (ardt[1]==ardt1[1]) {
    	saldomin=0;
    	saldohor=ardt[0]-ardt1[0];
    }

    else if (ardt1[1]==0) {
    	saldomin=ardt[1];
    	saldohor=ardt[0]-ardt1[0];
    }
    else {
    	var temp=ardt[1];
    	saldomin=60-ardt1[1]+(1*ardt[1]);
		if (saldomin>59){
			saldomin=saldomin-60;
			saldohor=ardt[0]-ardt1[0];
		}
		else {
			saldohor=ardt[0]-ardt1[0]-1;
		}
    }
	if (saldomin<10) {
		saldomin="0"+saldomin;
	}
    if (saldohor<10) {
		saldohor="0"+saldohor;
	}

	dif_hora=saldohor + ":" + saldomin + ":00";
}

// Recebe uma data e devolve o mês da data
function calcular_mes_data(dt)  {
    var d=dt;

    ardt=d.split("-");

	var thetime=new Date();
	var ntoday=ardt[2];
	var nmonth=ardt[1];
	var nyear=ardt[0];



	data1=nyear + "-" + nmonth + "-01";
	if ((nmonth==4)||(nmonth==6)||(nmonth==9)||(nmonth==11)){
		data2=nyear + "-" + nmonth + "-30";
	}
	if (nmonth==2) {
		if ((nyear%4)!=0){
			data2=nyear + "-" + nmonth + "-28";
		}
		if ((nyear%4)==0){
			data2=nyear + "-" + nmonth + "-29";
		}

	}
	if ((nmonth==1)||(nmonth==3)||(nmonth==5)||(nmonth==7)||(nmonth==8)||(nmonth==10)||(nmonth==12)){
		data2=nyear + "-" + nmonth + "-31";
	}
}


function format_number(pnumber,decimals){
	if (isNaN(pnumber)) { return 0};
	if (pnumber=='') { return 0};

	var snum = new String(pnumber);
	var sec = snum.split('.');
	var whole = parseFloat(sec[0]);
	var result = '';

	if(sec.length > 1){
		var dec = new String(sec[1]);
		dec = String(parseFloat(sec[1])/Math.pow(10,(dec.length - decimals)));
		dec = String(whole + Math.round(parseFloat(dec))/Math.pow(10,decimals));
		var dot = dec.indexOf('.');
		if(dot == -1){
			dec += '.';
			dot = dec.indexOf('.');
		}
		while(dec.length <= dot + decimals) { dec += '0'; }
		result = dec;
	} else{
		var dot;
		var dec = new String(whole);
		dec += '.';
		dot = dec.indexOf('.');
		while(dec.length <= dot + decimals) { dec += '0'; }
		result = dec;
	}
	return result;
}

