var numeros="0123456789";
var contadordata=0;
var aberto = false;
var jan;

// Verifica se o campo está vazio ...
function isEmptyObject(sForm,sObject,string){
	var Espaco = " \t\n\r";

	with (sForm){
   		ObjectAux = eval(sObject)
   		if (ObjectAux.value.length==0){
			alert ("O campo "+string+" não foi preenchido!");
			ObjectAux.value = "";
			ObjectAux.focus();
			return 0;
		}
		aux = 0;
		for (i = 0; i < ObjectAux.value.length; i++)
		{
			var c = ObjectAux.value.charAt(i);
			if (Espaco.indexOf(c) == -1){
				aux = 0;
				break;

			}else{
				aux = aux+1;
			}
		}

		if (aux>=1){
			alert ("O campo "+string+" só contem espaços!");
			ObjectAux.value = "";
			ObjectAux.focus();
			return 0;
		}

	}
	return 1;
}

function GetItem2(sForm,sOrigem,sDestino){
	var sel = eval("document."+sForm+"."+sOrigem);
	var sel1 = eval("document."+sForm+"."+sDestino);
    if(sel.options.length > 0){
		if (sel.options.selectedIndex != -1){
			for (i=0;i<sel.options.length;i++){
				if (sel.options[i].selected){
		  			sel1.options[sel1.options.length] = new Option(sel.options[i].text,sel.options[i].value);
				}
			}
			for (i=sel.options.length-1;i>=0;i--){
				if (sel.options[i].selected){
					sel.options[i] = null;
				}
			}
		}
	}
    if((sDestino.indexOf("_sel")>0) && (sel1.options.length > 0)){
			for (i=sel1.options.length-1;i>=0;i--){
				sel1.options[i].selected = true;
			}
    }

    if((sOrigem.indexOf("_sel")>0) && (sel.options.length > 0)){
			for (i=sel.options.length-1;i>=0;i--){
				sel.options[i].selected = true;
			}
    }
}

function GetAll(sForm, sOrigem, sDestino){
	var sel = eval("document."+sForm+"."+sOrigem);
	var sel1 = eval("document."+sForm+"."+sDestino);
	for (i=sel.options.length-1;i>=0;i--){
		sel.options[i].selected=true;
	}
    if(sel.options.length > 0){
		if (sel.options.selectedIndex != -1){
			for (i=0;i<sel.options.length;i++){
				if (sel.options[i].selected){
		  			sel1.options[sel1.options.length] = new Option(sel.options[i].text,sel.options[i].value);
				}
			}
			for (i=sel.options.length-1;i>=0;i--){
				if (sel.options[i].selected){
					sel.options[i] = null;
				}
			}
		}
	}
    if((sDestino.indexOf("_sel")>0) && (sel1.options.length > 0)){
			for (i=sel1.options.length-1;i>=0;i--){
				sel1.options[i].selected = true;
			}
    }
    if((sOrigem.indexOf("_sel")>0) && (sel.options.length > 0)){
			for (i=sel.options.length-1;i>=0;i--){
				sel.options[i].selected = true;
			}
    }
}

function isPhone(sForm,sObject,string){
	with (eval("document."+sForm+"")){
   			var numeros="0123456789-()+";
    		var campo;
    		var contador=0;

		for (var i=0; i<eval(sObject+".value.length"); i++){
         			campo=eval(sObject+".value.substring(i,i+1)");
		 	if (numeros.indexOf(campo) !=-1)
             			contador++;
    		}

       		if ((contador!=eval(sObject+".value.length")) && (eval(sObject+".value.length")!=0)) {
       			alert ("Não foi introduzido um número válido para "+string+" (utilize apenas os caracteres - ( )+ alem dos caracteres numéricos)");
			eval(sObject+".value=''");
			eval(sObject+".focus()");
			return 0;
        		}

	}
	return 1;
}

function isInteger(sForm,sObject,string){
	with (sForm){
   	var numeros="0123456789";
    	var campo;
    	var contador=0;

		for (var i=0; i<eval(sObject+".value.length"); i++){
         campo=eval(sObject+".value.substring(i,i+1)");
		 if (numeros.indexOf(campo) !=-1)
             contador++;
    	}

       if ((contador!=eval(sObject+".value.length")) && (eval(sObject+".value.length")!=0)) {
       		alert ("Não foi introduzido um número inteiro para o campo "+string+"");
			eval(sObject+".value=''");
			eval(sObject+".focus()");
			return 0;
        	}

	}
	return 1;
}

function isIntegerString(sString,string){
	var numeros="0123456789";
 	var campo;
 	var contador=0;

	for (var i=0; i<sString.length; i++){
      campo=sString.substring(i,i+1);
	 if (numeros.indexOf(campo) !=-1)
          contador++;
 	}

	if ((contador!=sString.length) && (sString.length!=0)) {
		alert ("Não foi introduzido um número inteiro para o campo "+string+"");
		return 0;
	}

	return 1;
}


// Verifica se a data é admissivel. Esta função é utilizada para campos com o formato DD-MM-YYYY ...
function isValidFieldDate(sForm,sObject,string){
	with (sForm){
       	var numeros="0123456789";
    	var campo;
    	var contador=0;
		var ano;
		var mes;
		var dia;
		var data;
		var daymonth;
		var bissexto;

		ano = eval(sObject+".value.substring(6,10)");
		mes = eval(sObject+".value.substring(3,5)");
		dia = eval(sObject+".value.substring(0,2)");
		data = ano+mes+dia;

		for (var i=0; i<eval(data.length); i++){
		    campo=data.substring(i,i+1);
		    if (numeros.indexOf(campo) !=-1)
		        contador++;
		}

       	if ((contador!=8) && (eval(sObject+".value.length")!=0)) {
       		alert ("O formato do campo "+string+" não está correcto (dd-mm-yyyy).");
			eval(sObject+".value=''");
			eval(sObject+".focus()");
			return 0;
       	}

		if ((eval(sObject+".value.substring(2,3)")!='-') || (eval(sObject+".value.substring(5,6)")!='-')) {
			alert ("Os separadores (-) para o campo "+string+" não são admissiveis");
			eval(sObject+".value=''");
			eval(sObject+".focus()");
			return 0;
		}


		if (ano%400 == 0){
			bissexto=1;
		}else{
			if (ano%100 == 0){
				bissexto=0;
			}else{
				if (ano%4 == 0){
					bissexto=1;
				}
				else{
					bissexto=0;
				}
			}
		}

		daymonth = new Array(12);
		daymonth[0] = 31;

		if (bissexto==1) {
			daymonth[1] = 29;
		}
		else {
			daymonth[1] = 28;
		}

		daymonth[2] = 31;
		daymonth[3] = 30;
		daymonth[4] = 31;
		daymonth[5] = 30;
		daymonth[6] = 31;
		daymonth[7] = 31;
		daymonth[8] = 30;
		daymonth[9] = 31;
		daymonth[10] = 30;
		daymonth[11] = 31;

		if ((mes<1) || (mes>12)) {
			alert ("O mês da "+string+" não é admissivel!");
			eval(sObject+".value=''");
			eval(sObject+".focus()");
			return 0;
		}

        if ((dia<1) || (dia>daymonth[mes-1])) {
			alert ("O Dia da "+string+" não é admissivel!");
			eval(sObject+".value=''");
			eval(sObject+".focus()");
			return 0;
		}

	}
	return 1;
}


// Verifica se a data é >= que a data actual ...
function isDateGreaterEqualSysdate(sForm,sObject,string){
	var ano;
	var mes;
	var dia;
	var todayDate;
	var UserDate;

	with (sForm){

		ano = eval(sObject+".value.substring(6,10)");
		mes = eval(sObject+".value.substring(3,5)")-1;
		dia = eval(sObject+".value.substring(0,2)");

		todayDate = new Date();
		UserDate  = new Date(ano,mes,dia,23,59,59);

		if (UserDate<todayDate) {
			alert ("A "+string+" tem de ser superior ou igual à data de hoje!");
			eval(sObject+".value=''");
			eval(sObject+".focus()");
			return 0;
		}
	}
	return 1;
}