// Formata uma string
// Entrada:
// p = valor do campo a ser formatado (string)
// l = tamanho que o campo deve ter (numérico)
// t = tipo do campo: (A=Alfanumérico e N=Numérico) (caracter)
// Saída: O valor do campo formatado. Se o tipo for alfanumérico, alinhado à esquerda com espaços à direita
// se o tipo for numérico, alinhado à direita com zeros à esquerda.
function Block(sDado,iTamanho,sTipo) {
	sDado = String(sDado);
	iTamanho = parseInt(iTamanho);
	sTipo = sTipo.toUpperCase();
	for (var i=sDado.length; i < iTamanho; i++) {
	if (sTipo == "A")
		sDado += " "
	else
		sDado = "0" + sDado;
	}
	return sDado;
}
//
// Retira espaços em branco do início e do fim da string
// Entrada: string a ser processada
// Saída: string processada
function Trim(s) {
	var strAux = new String(s);
	var strimed;
	for (var cont=(strAux.length - 1);((cont>=0) && (strAux.charAt(cont) == " "));cont--) {}
	strimed = strAux.substring(0,(cont+1));
	return strimed;
}
//
// Retira todos espaços em branco da string (deprecated devido ao uso do validation form)
// Entrada: string a ser processada
// Saída: string processada
function AllTrim(s) {
	var strimed = "";
	for (var cont=0;cont<=s.length;cont++) {
		if (s.charAt(cont) != " ") {
			strimed = strimed + s.charAt(cont);
		}
	}
	return strimed;
}
//
// Consite o preenchimento de todos campos do form
// Entrada: o form (objeto)
// Saída: True ou False
function ConsisteForm(f) {
	var palavra = "";
	for (var ind=2;ind<4;ind++) {
		palavra = Trim(f.elements[ind].value);
		if (palavra == "") {
			alert('É necessário o preenchimento de ambos os campos.\nPor favor, verifique.');
			f.elements[2].focus();
			return false;
		}
	}
	return true;
}
//
function Reseta(o) {
	o.value = "";
}
//
function setFoco(o) {
	o.focus();
}
//
// Verifica CGC
// Entrada: CGC (string)
// Saída: True ou False
function isCGC(x) {
	strNum = "";
	if ((x == "") | (isNaN(x)))
		return (false);
	l = x.length;
	for (i = 0; i < (14 - l); i++)
		x = '0' + x;
	l = x.length;
	for (i = 0; i < l; i++) {
		caracter = x.substring(i,i+1)
		if ((caracter >= '0') && (caracter <= '9'))
			strNum = strNum + caracter;
	}
	strMul = "6543298765432";
	iValido = 1;
	if(strNum.length != 14)
		return(false);
	iSoma = 0;
	strNum_base = strNum.substring(0,12);
	iLenNum_base = strNum_base.length - 1;
	iLenMul = strMul.length - 1;
	for(i = 0;i < 12; i++)
		iSoma = iSoma +
			parseInt(strNum_base.substring((iLenNum_base-i),(iLenNum_base-i)+1),10) *
			parseInt(strMul.substring((iLenMul-i),(iLenMul-i)+1),10)
			iSoma = 11 - (iSoma - Math.floor(iSoma/11) * 11);
		if(iSoma == 11 || iSoma == 10)
			iSoma = 0;
		strNum_base = strNum_base + iSoma;
		iSoma = 0;
		iLenNum_base = strNum_base.length - 1
		for(i=0; i < 13; i++)
			iSoma = iSoma +
				parseInt(strNum_base.substring((iLenNum_base-i),(iLenNum_base-i)+1),10) *
				parseInt(strMul.substring((iLenMul-i),(iLenMul-i)+1),10)
				iSoma = 11 - (iSoma - Math.floor(iSoma/11) * 11);
		if(iSoma == 11 || iSoma == 10)
			iSoma = 0;
		strNum_base = strNum_base + iSoma;
		if(strNum != strNum_base)
			return(false);
	return(true);
}
//
// Valida matrícula de empregados
// Entrada: Matrícula (string)
// Saída: True ou False
function isMatric(pMatric) {
var
  i,j,dig1,dig2,vres,vsobra,vmatx,vaux;
  pMatric = AllTrim(pMatric);
  vmatx = Block(pMatric,6,"n");
  vaux = "";
  j = 6;
  vres = 14;
  for (i=0;i<=4;i++)
    {
     vres = vres + (j * (parseInt(vmatx.substr(i,1))));
     j--;
    }
   vsobra = (vres % 11);
   dig1 = parseInt(vmatx.substr(5,1));
   dig2 = 11 - vsobra;
   if (dig2 >= 10)
     {
      vaux = String(dig2).substr(1,1);
      dig2 = parseInt(vaux);
     }
   if (dig1 != dig2)
     {
      alert("Matrícula Inválida")
      return(false);
     }
   return(true);
}
//
// Conta palavras
// Entrada:
// field = textarea (objeto)
// countfield = input text que exibirá o restante de palavras (objeto)
// maxlimit = máximo de palavras
// Saída: Alteração do campo countfield e bloqueio de digitação uma vez alcançado o maxlimit.
function wordCounter(field, countfield, maxlimit) {
	wordcounter=0;
	for (x=0;x<field.value.length;x++) {
		if (field.value.charAt(x) == " " && field.value.charAt(x-1) != " ") {
			wordcounter++; // Counts the spaces while ignoring double spaces, usually one in between each word.
		}
		if (wordcounter > 250) {
			field.value = field.value.substring(0, x);
		}
		else {
			countfield.value = maxlimit - wordcounter;
		}
	}
   }
//
// Conta caracteres
// Entrada:
// field = textarea (objeto)
// countfield = input text que exibirá o restante de caracteres (objeto)
// maxlimit = máximo de caracteres
// Saída: Alteração do campo countfield e bloqueio de digitação uma vez alcançado o maxlimit.
function textCounter(field, countfield, maxlimit) {
	if (field.value.length > maxlimit) {
		field.value = field.value.substring(0, maxlimit);
	}
	else {
		countfield.value = maxlimit - field.value.length;
	}
}
//
// Comparação entre datas
// Entrada:
// d1 = primeira data
// s1 = string nome da primeira data
// d2 = segunda data
// s2 = string nome da segunda data
// c = comparador (<,<=,=,>,>=)
// od1 = objeto do tipo data para ser comparado. Data do sistema, por exewmplo
function comparaDatas(d1,s1,d2,s2,c,od1) {
	var msg;
	var di;
	var df;
	if (d1 == "" || s1 == "" || d2 == "" || s2 == "" || c == "") {
		alert("Função comparaDatas() - Parâmetros insuficientes.");
		return false;
	}
	if (typeof d1 == "object") {
		di = d1;
		di.setHours(0,0,0,0);
	}
	else {
		di = new Date(d1.substr(6,4),((d1.substr(3,2)) - 1),d1.substr(0,2),00,00,00,00);
	}
	if (typeof d2 == "object") {
		df = d2;
		df.setHours(0,0,0,0);
	}
	else {
		df = new Date(d2.substr(6,4),((d2.substr(3,2)) - 1),d2.substr(0,2),00,00,00,00);
	}
	if (!(eval(di.valueOf() + c + df.valueOf()))) {
		if (typeof od1 == "object") {
			od1.paint();
			od1.focus();
		}
		msg = ("A '" + s1 + "' deve ser  " + c + "  a '" + s2 + "'. Por favor, verifique.");
		msg = (substitui(msg,(new Array(" > "," >= "," < "," <= "," = ")),(new Array("maior que","maior ou igual","menor que","menor ou igual","igual")),"g",""));
		alert(msg);
		return false;
	}
	return true;
}
//
function abreJanelaSimples(f,w,h) {
	window.open(f,"nova","toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=yes,copyhistory=no,scrollbars=yes,width=" + w + ",height=" + h);
}
//

function substitui(s,ade,apara,escopo,c) {
	for (var i = 0;i < ade.length;i++) {
		myRegExp = new RegExp(ade[i],escopo,c);
		s = s.replace(myRegExp,apara[i]);
	}
	return s;
}
//
// Calcula data
// d1 = Data base para o calculo - String no formato (dd/mm/aaaa)
// op = operador (+ ou -)
// d2 = Data retornada -  String no formato (dd/mm/aaaa)
function calculaDataExp(d1,op,d2) {
	ad = d1.split("/");
	di = new Date(d1);
	df = new Date(d2);
}
//
//
//
// **********************************************************
// Alexander Flávio de Oliveira
//
// ?
// Valida a matrícula de um cliente da COPASA
// Adaptada do serviço de 2a. via de conta por Marcelo Lopes em 14/12/2003.
// strMatparm = o campo input associado a matrícula do cliente.
// **********************************************************
function ConsisteMatrCliente(strParm) {
	var strMatparm = strParm.value;
  var numFator = 2;
  var numSoma = 0;
  var numDigitoaux = parseInt(strMatparm.charAt((strMatparm.length - 1)),10);
  var strMataux = strMatparm.substr(0,(strMatparm.length - 1));
  var numMataux = parseInt(strMataux,10);
  for (var i = 0; i < 11; i++) {
    var numAlgarismo = (numMataux % 10);
    numMataux = ((numMataux - numAlgarismo) / 10);
    numSoma += (numAlgarismo * numFator);
    numFator++;
    if (numFator > 9) {
      numFator = 2;
    }
  }
  var numResto = (numSoma % 11);
  if (numResto == 1) {
    numResto = 11;
  }
  if (numResto == 0) {
    numResto = 10;
  }
  var numDigito = 11 - numResto;
  if (numDigito != numDigitoaux) {
    alert('Esta não é uma matrícula válida.\nPor favor, confira.');
    strParm.focus();
    return false;
  }
  else {
//Comentado por Alexandre Marcos em 29/12/2003, pois estava dando erro!
//    strParm.value = Zera(strParm.value);
    return true;
  }
}