function limparCombo(frm,obj) {
	estado = frm.elements[obj].disabled;
	frm.elements[obj].disabled = true;
	while (frm.elements[obj].length > 0)
	frm.elements[obj].remove(0);
	frm.elements[obj].disabled = estado;
}

function preencherCombo(frm,obj,elementos) {
	estado = frm.elements[obj].disabled;
	frm.elements[obj].disabled = true;
	for (i = 0;i < elementos.length;i++) {
		var i = new Option(elementos[i][0], elementos[i][1]);
		frm.elements[obj].options.add(i);
	}
}

function verificarMascara(tecla,m) {
	if (m == '?') {
		return ('0123456789ABCDEFGHIJKLMNOPQRSTUVXWYZÇÁÀÉÈÃÕÏÖÜÄ'.toLowerCase().indexOf(tecla.toLowerCase()) > -1);
	} else if (m == '#') {
		return ('0123456789'.indexOf(tecla) > -1);
	} else if (m == '$') {
		return ('ABCDEFGHIJKLMNOPQRSTUVXWYZÇÁÀÉÈÃÕÏÖÜÄ'.toLowerCase().indexOf(tecla.toLowerCase()) > -1);
	} else return false;
}

function mascaraCampo(elemento, mascara, event){
	if (navigator.appName.toLowerCase().indexOf("netscape") > -1)
	ntecla=event.which;
	else
	ntecla=event.keyCode;

	tecla = String.fromCharCode(ntecla);

	var m = mascara.charAt(elemento.value.length);

	var teclas = new Array(0, 8, 9, 13, 16, 17, 18, 20, 27, 28, 29, 30, 31);

	for (var i = 0; i < teclas.length; i ++) {
		if (teclas[i] == ntecla) {
			return true;
		}
	}

	if ((m == '?') || (m == '#') || (m == '$')) return verificarMascara(tecla,m);
	else {
		elemento.value += mascara.charAt(elemento.value.length);
		m = mascara.charAt(elemento.value.length);
		if (mascara.charAt(elemento.value.length-1) == tecla) return false;
		else return verificarMascara(tecla,m);
	}
}

function validaCPF(cpf){
	s = cpf.substring(0,3) + cpf.substring(4,7) + cpf.substring(8,11) + cpf.substring(12,14);
	var c = s.substr(0,9);
	var dv = s.substr(9,2);
	var d1 = 0;
	for (var i = 0; i < 9; i++){
		d1 += c.charAt(i)*(10-i);
	}
	if (d1 == 0){
		return false;
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1){
		return false;
	}
	d1 *= 2;
	for (i = 0; i < 9; i++) {
		d1 += c.charAt(i)*(11-i);
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(1) != d1){
		return false;
	}

	if (cpf == '111.111.111-11') return false;
	return true;
}

function validaCNPJ(CNPJ) {
	erro = new String;
	if (CNPJ.length < 18) erro += "É necessario preencher corretamente o número do CNPJ! ";
	if ((CNPJ.charAt(2) != ".") || (CNPJ.charAt(6) != ".") || (CNPJ.charAt(10) != "/") || (CNPJ.charAt(15) != "-")){
		if (erro.length == 0) erro += "É necessário preencher corretamente o número do CNPJ! ";
	}
	//substituir os caracteres que não são números
	if(document.layers && parseInt(navigator.appVersion) == 4){
		x = CNPJ.substring(0,2);
		x += CNPJ. substring (3,6);
		x += CNPJ. substring (7,10);
		x += CNPJ. substring (11,15);
		x += CNPJ. substring (16,18);
		CNPJ = x;
	} else {
		CNPJ = CNPJ. replace (".","");
		CNPJ = CNPJ. replace (".","");
		CNPJ = CNPJ. replace ("-","");
		CNPJ = CNPJ. replace ("/","");
	}
	var nonNumbers = /\D/;
	if (nonNumbers.test(CNPJ)) erro += "A verificação de CNPJ suporta apenas números! ";
	var a = [];
	var b = new Number;
	var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
	for (i=0; i<12; i++){
		a[i] = CNPJ.charAt(i);
		b += a[i] * c[i+1];
	}
	if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
	b = 0;
	for (y=0; y<13; y++) {
		b += (a[y] * c[y]);
	}
	if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
	if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])){
		erro +="Dígito verificador com problema!";
	}
	if (erro.length > 0){
		return false;
	} else {
		return true;
	}
}
function validarEmail(email) {
	email = email.toLowerCase();
	tmpEmail = /^[\w-]+(\.[\w-]+)*@(([0-9a-z\d][0-9a-z\d-]{0,61}[0-9a-z\d]\.)+[0-9a-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
	eval("tmpEmail = tmpEmail");
	if (tmpEmail.test(email)) return true;
	else return false;
}

function isOneChecked(doc,form) {
	for (i = 0;i < doc.forms[form].elements.length;i++) {
		if (doc.forms[form].elements[i].type == 'checkbox') {
			if (doc.forms[form].elements[i].checked) {
				return true;
			}
		}
	}
	return false;
}

function emitirAlerta(msg,obj) {
	if (msg) alert(msg);
	if (obj) obj.focus();
}

function abrirJanela(url,target,w,h) {
	//alert("sdfsd")
	abrirJanelaScroll(url,target,w,h,'no');
}

function abrirJanelaScroll(url,target,w,h,scrollbar) {
	l = parseInt((screen.width - w) / 2);
	t = parseInt((screen.height - h) / 2);
	window.open(url,target,'width='+w+',height='+h+',left='+l+',top='+t+',scrollbars='+scrollbar);
}


function verificaData(data) {
	//Recebe a data no fomato dd/mm/YYYY
	if (data.length == 10) {
		dia = data.substr(0,2);
		mes = data.substr(3,2);
		ano = data.substr(6,4);
		//Essa merda de linha, foi adicionada pq o Firefox apresenta um bug no parseInt;
		dia++; mes++; ano++; dia--; mes--; ano--;

		fev = ((ano % 4) == 0)?(29):(28);

		terminacoes = [31,fev,31,30,31,30,31,31,30,31,30,31];

		if ((mes >= 1) && (mes <= 12)) {
			if ((dia >= 1) && (dia <= 31)) {
				return (dia <= terminacoes[mes - 1]);
			}
		}
	}
	return false;
}

function contarCaracteres(s,caractere) {
	total = 0;
	for (i = 0;i < s.length;i++) {
		if (s.substr(i,1) == caractere) total++;
	}
	return total;
}

//#############################################################################

function validar(Form) {
	var invalid, s;
	invalid = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;

	var s;


	// inicio de verificacao de cnpj ou cpf
	if (Form.CPF.value.length == 0) {
		alert("O CNPJ/CPF é um campo obrigatório !");
		Form.CPF.focus();
		return false; }

		s = limpa_string(Form.CPF.value);


		// checa se é cpf
		if (s.length == 11)
		{
			if (valida_CPF(Form.CPF.value) == false )
			{
				alert("O CPF não é válido !");
				Form.CPF.select();
				return false;
			}

		}

		// checa se é cgc
		else if (s.length == 14) {
			if (valida_CGC(Form.CPF.value) == false ) {
				alert("O CNPJ não é válido !");
				Form.CPF.select();
				return false; }
		}
		else {
			alert("O CPF/CNPJ não é válido !");


			Form.CPF.select();
			return false;


		}

		// final da verificacao de cnpj ou cpf


}
// fim da funcao validar()


function limpa_string(S){
	// Deixa so' os digitos no numero
	var Digitos = "0123456789";
	var temp = "";
	var digito = "";

	for (var i=0; i<S.length; i++) {
		digito = S.charAt(i);
		if (Digitos.indexOf(digito)>=0) {
			temp=temp+digito }
	} //for

	return temp
}
// fim da funcao


function limpa_form(valor){
	valor.value = '';
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
	window.open(theURL,winName,features);
}

function realTop(obj) {
	var _o = obj;
	var r = 0;
	while (_o.offsetParent) {
		r += _o.offsetTop;
		_o = _o.offsetParent;
	}
	return r;
}

function realLeft(obj) {
	var _o = obj;
	var r = 0;
	while (_o.offsetParent) {
		r += _o.offsetLeft;
		_o = _o.offsetParent;
	}
	return r;
}

function detachEvent(obj, evt, f) {
	if (obj.detachEvent) {
		obj.detachEvent('on' + evt, f);
	} else if (obj.removeEventListener) {
		obj.removeEventListener(evt, f, true);
	}
}

function attachEvent(obj, evt, f) {
	detachEvent(obj, evt, f);
	if (obj.attachEvent) {
		obj.attachEvent('on' + evt, f);
	} else if (obj.addEventListener) {
		obj.addEventListener(evt, f, true);
	}
}