var data1;
var data2;
var dif_hora;

function IsValidNIF(nif){
//Check if is not null, is numeric and if has 9 numbers
if(nif!= null &&  nif.length == 9){
    var nonNumbers = /\D/;
    if  ( nonNumbers.test(nif))  {
        return false
    }

}
else {
    return false
}
}

function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   alert("O seu mail é invalido!")
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("O seu mail é invalido!")
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("O seu mail é invalido!")
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("O seu mail é invalido!")
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("O seu mail é invalido!")
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("O seu mail é invalido!")
		    return false
		 }

		 if (str.indexOf(" ")!=-1){
		    alert("O seu mail é invalido!")
		    return false
		 }

 		 return true
	}

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;
}

function validanumero(valor) {

	var numero=valor;
	var ardt=new Array;

    ardt=numero.split(".");

    var nonNumbers = /\D/;

    erro=false;
    if  ( ardt[0].length > 0  )  {
        if  ( nonNumbers.test( ardt[0]))  {
	            erro=true;
        }
    }
    if  (ardt[1]!=null  )  {
        if  ( nonNumbers.test( ardt[1]))  {
             erro=true;
        }
        if (ardt[1]>99){
             erro=true;
        }
    }
    else {
        erro=true;
    }
    if  (ardt[2]!=null  )  {
        erro=true;
    }
	if (erro) {
		alert("Formato da moeda 00.00")
		return false;
	}
	return true;
}
function validanumeroint(valor) {
	var numero=valor;
    var nonNumbers = /\D/;
    erro=false;
    if  ( nonNumbers.test(numero))  {
        erro=true;
    }
	if (erro) {
		alert("Tem que ser um numero inteiro!")
		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,d2,n_dias) {
	var da1=d1;
	var ardt1=new Array;
	ardt1=da1.split("-");

    var da2=d2;
   	var ardt=new Array;
    ardt=da2.split("-");

    var ntoday= new Number(ardt[2]);
    var nmonth= new Number(ardt[1]);
    var nyear= new Number(ardt[0]);

	ntoday=ntoday+n_dias;

	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";
}

function conta_segundos(hora)  {

	var h=hora;
    var ardt=new Array;
    ardt=h.split(":");
    ardt[2]=ardt[2]+1;
    if (ardt[2]==60 ) {
             ardt[2]=0;
             ardt[1]=ardt[1]+1;
    }
    if (ardt[1]==60 ) {
             ardt[1]=0;
             ardt[0]=ardt[0]+1;
    }
   	dif_hora=ardt[0]+ ":" + ardt[1] + ardt[2];$
}

// 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;
}
//devolve falso se contiver carateres não autorizados
function caract_nao_autorizados(str){

    var snum = new String(str);
	var asp = snum.split("'");
	var e  = snum.split("&");

	erro=false;

	if (asp.length > 1){
		erro = true;
        alert ("Carater ' invalido" )
	}
	if (e.length > 1){
		erro = true;
        alert ("Carater & invalido" )
	}
	if (erro) {
        return false;
	}
	return true;

}


