// JavaScript Document

	// FUNÇÃO: Cria objeto XML-HTTP (Ajax) ------------------------------------------------
	function ajaxRequest() {
		var objAjax = false;
		if(window.XMLHttpRequest) { // Navegadores diversos.
			objAjax = new XMLHttpRequest();
			if (objAjax.overrideMimeType) {
				objAjax.overrideMimeType('text/xml');
			}
		} else if(window.ActiveXObject) { // IE (Microsoft).
			try {
				objAjax = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					objAjax = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) { }
			}
		}
		return objAjax;
	}

	// FUNÇÃO: Executa consulta de CEP para os campos informados ---------------------------
	function chamarCep(cmpNomeCep,cmpNomeEndereco,cmpNomeBairro,cmpNomeCidade,cmpNomeEstado) {
		objCep = new Cep(cmpNomeCep,cmpNomeEndereco,cmpNomeBairro,cmpNomeCidade,cmpNomeEstado);
		objCep.consultarCep();
	}

	function numeros(e) {
		try { // Internet Explorer
			var tecla = e.keyCode;
		} catch(y) { // Demais navegadores
			var tecla = e.which;
		}
		if ((tecla > 47 && tecla < 58) || (tecla > 95 && tecla < 106) || tecla == 9) { // numeros de 0 a 9
			return true;
		} else {
			if (tecla != 8) { // backspace
				return false;
			} else {
				return true;
			}
		}
	}

	// Variável Global ---------------------------------------------------------------------
	var Ajax, objCep

	// CLASSE ------------------------------------------------------------------------------
	function Cep(txtCmpCep,txtCmpEndereco,txtCmpBairro,txtCmpCidade,txtCmpEstado) {

		// PROPRIEDADES:
		this.cepCmpNome = txtCmpCep;
		this.enderecoCmpNome = txtCmpEndereco;
		this.bairroCmpNome = txtCmpBairro;
		this.cidadeCmpNome = txtCmpCidade;
		this.estadoCmpNome = txtCmpEstado;
		this.cep = document.getElementById(this.cepCmpNome).value;
		this.respostaCmpNome = "divResposta";

		// MÉTODO: limpa os campos
		this.limpar = function() {
			this.preencher("","","","");
		}

		// MÉTODO: preenche os campos
		this.preencher = function(txtEndereco,txtBairro,txtCidade,txtEstado) {
			document.getElementById(this.enderecoCmpNome).value = txtEndereco;
			document.getElementById(this.bairroCmpNome).value = txtBairro;
			document.getElementById(this.cidadeCmpNome).value = txtCidade;
			document.getElementById(this.estadoCmpNome).value = txtEstado;
			this.descongelar();
		}

		// MÉTODO: preenche os campos
		this.congelar = function() {
			document.getElementById(this.enderecoCmpNome).disabled = true;
			document.getElementById(this.bairroCmpNome).disabled = true;
			document.getElementById(this.cidadeCmpNome).disabled = true;
			document.getElementById(this.estadoCmpNome).disabled = true;
			document.getElementById(this.cepCmpNome).disabled = true;
		}

		// MÉTODO: preenche os campos
		this.descongelar = function() {
			document.getElementById(this.enderecoCmpNome).disabled = false;
			document.getElementById(this.bairroCmpNome).disabled = false;
			document.getElementById(this.cidadeCmpNome).disabled = false;
			document.getElementById(this.estadoCmpNome).disabled = false;
			document.getElementById(this.cepCmpNome).disabled = false;
		}

		// MÉTODO: retorna dos dados
		this.pegarCepResposta = function(){
			if (Ajax.readyState == 4) {
				if (Ajax.status == 200) {
					var resp = Ajax.responseText;
					if (resp != "erro") {
						resp = resp.split("|");
						objCep.preencher(resp[3], resp[2], resp[1], resp[0]);
						document.getElementById(objCep.cepCmpNome).blur();
						document.getElementById(objCep.respostaCmpNome).innerHTML = "";
						document.getElementById(objCep.respostaCmpNome).style.display = "none";
					} else {
						objCep.limpar();
					}
				} else {
					this.limpar();
					document.getElementById(objCep.cepCmpNome).value = "";
					document.getElementById(objCep.cepCmpNome).style.borderColor = "#FF0000";
					document.getElementById(objCep.respostaCmpNome).innerHTML = "CEP n&atilde;o localizado!";
					document.getElementById(objCep.respostaCmpNome).style.display = "inline";
					document.getElementById(objCep.cepCmpNome).focus();
				}
			} else {
				objCep.limpar();
			}
		}

		// MÉTODO: faz a requisição dos dados no banco
		this.consultarCep = function() {
			this.congelar();
			document.getElementById(this.respostaCmpNome).innerHTML = "Consultando CEP...";
			document.getElementById(this.respostaCmpNome).style.display = "inline";
			var objCampoCep = document.getElementById(this.cepCmpNome);
			if (objCampoCep.value != "" && objCampoCep.value.length >= 8) {
				Ajax = ajaxRequest();
				if(typeof Ajax == "object") {
					Ajax.open('GET', 'cepajax.php?cep='+objCampoCep.value, true);
					Ajax.onreadystatechange = this.pegarCepResposta;
					Ajax.send(null);
				} else {
					document.getElementById(this.respostaCmpNome).innerHTML = "Erro na consulta.";
					this.limpar();
				}
			} else {
				this.limpar();
			}
		}

	}
	// FIM DO OBJETO -----------------------------------------------------------------------
