//<![CDATA[
//por antonio augusto andré silveira - gutoasp[em]hotmail.com
//(cc) Conteúdo sob licença Creative Commons
//http://creativecommons.org/licenses/by-sa/2.0/

var url = self.location.href

function getElementById(att_id) {
	return document.getElementById? document.getElementById(att_id) : document.all? document.all[att_id] : false;
	//return (document.getElementById(att_id) || document.all[att_id])
}
function actNo(e) { window.event? event.returnValue=false : e.preventDefault(); return false; }
function getSrc(e) { var el; return ( ( el=e.target || (window.event && event.srcElement) ) && (el.parentNode==3 && el.parentNode || el) ) || false; }/*e=e||event;return e.target||e.srcElement*/

function XMLHTTPRequest() {
   try{ return new ActiveXObject("Msxml2.XMLHTTP");    }catch(e){}
   try{ return new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){}
   try{ return new XMLHttpRequest(); }catch(e){}
   return null;
}

function createElement(tn, id, cn, ih) { //tagName, id, className, innerHTML
	if (!document.createElement || !tn) return false
	var nE = document.createElement(tn)
	if (id) nE.id = id
	if (cn) nE.className = cn //queria usar setAttribute, mas já deve imaginar o pq não dá... :(
	if (ih) nE.innerHTML = ih // qdo devo usar a funcao createTextNode ao inves da innerHTML? usar createTextNode quando quiser add texto. usar innerHTML qdo quiser substituir algo. em outros casos, tanto faz.
	return nE
}
function createTextNode(s) { return (s && document.createTextNode)? document.createTextNode(s) : 0; }

String.prototype.is_email = function() {
	//return /^[\w.-]{3,50}@(\w{2,20}\.)[a-z]{2,4}$/i.test(this);
	return true
}

function equal_height_collumns(collumns) {//attribute id of collumns separated by commas
	if (!collumns) return false; collumns=collumns.split(','); var menor, maior;
	menor=maior=getElementById(collumns[0]).offsetHeight;
	for(var a=0,n=collumns.length, tmp; a<n; a++) {
		if ( (tmp = getElementById(collumns[a]).offsetHeight) < menor) menor=tmp;
		else if ( tmp > maior) maior=tmp;
	}
	for(var a=0,n=collumns.length; a<n; a++) getElementById(collumns[a]).style.height = maior + "px";
	return true//só pra devolver algo
}

function insertAfter(tN, nN) { /* tNode, newNode */ var tP=tN.parentNode;
  while ((tN=tN.nextSibling) && tN.nodeType != 3) { /* ... */ }
  if (tN) { tP.insertBefore(tN, nN); } else { tP.appenChild(nN); } return tP;
}

function filtra_numeros(s) {
	if (!s) return false;
	return s.replace(/[^0-9]/, "");
}

//MELHORAR ESTA FUNCAO
function getElementsByClassName(className, elm) {//elm eh opicional
	if (!className) return false
	var d = (elm? elm:document).getElementsByTagName("*"), i=0, n=d.length, output=[], index=0
	for (; i<n; i++) if (d[i].className==className) output[index++] = d[i]
	return output
}

function popular_select(obj_select, arr_dados, str_text, str_delimitador) {
	/*
	obj_select: elemento select
	arr_dados: o conteudo de cada indice deve ser splitado com algum caracter
	str_text: texto para a primeira opcao
	str_delimitador: para fazer o split
	*/
	if (typeof obj_select != 'object' || !(arr_dados instanceof Array) || typeof str_text != 'string' || typeof str_delimitador != 'string') return false
	var i=0, n = arr_dados.length
	obj_select.disabled = true;
	obj_select.options.length = n
	obj_select.options[0] = new Option(str_text, '0');
	for (; i<n; i++) {
		var v = arr_dados[i].split(str_delimitador);
		obj_select.options[i+1] = new Option(v[1], v[0]);
	}
	obj_select.disabled = false;
	return true//so pra retornar algo
}
function getValue(obj, option) {
	if (!obj) return false;
	var t = typeof obj.multiple != 'undefined' && !obj.multiple ? obj.tagName : obj[0].tagName;
	switch(t) {
		case 'INPUT':
			if (obj[0].type.toUpperCase() == 'RADIO')
				for (var i=0,n=obj.length ; i<n; i++)
					if (obj[i].checked)
						return obj[i].value
			break;
		case 'SELECT':
			if ( !option || (option != 'value' && option != 'text') ) option = 'value';
			if (!obj.multiple)
				return eval('obj.options[obj.selectedIndex].'+option);
			else
				alert('fazer algo para validar selects multiple');
	}
	return false;
}
function regExClass(cls) { return new RegExp('(^|\\s)'+cls+'(\\s|$)'); }
function getElementsByClass(searchClass,node,tag) {
	var classElements = [], i = 0, j = 0
	if ( node == null )	node = document;
	if ( tag == null )	tag = '*';
	var els = node.getElementsByTagName(tag), elsLen = els.length;
	var pattern = regExClass(searchClass);
	for (; i < elsLen; i++)
		if ( pattern.test(els[i].className) )
			classElements[j++] = els[i];
	return classElements;
}
function hasClass(ele,cls) { 
	if (typeof ele.className != 'undefined')
		return regExClass(cls).test(ele.className)
	else {
		ele.className = ''
		return false
	}
}
function addClass(ele,cls) {
	if (!this.hasClass(ele,cls))
			ele.className += (ele.className.length? ' ' : '') + cls;
}
function removeClass(ele,cls) {
	if (hasClass(ele,cls))
		ele.className = ele.className.replace(regExClass(cls),' ');
}

function nextOfType(tO, tT) { /* theObject, theTag */
  while (tO=tO.nextSibling) { if (tO.nodeType==1 && tO.nodeName.toLowerCase()==tT.toLowerCase()) return tO; }
  return false;
}

function getChildNodes(pai) {
	var node = pai.childNodes, i = 0, n = node.length, filhos = [], j = 0
	for (; i<n; i++)
		if (node[i] && node[i].nodeType==1) filhos[j++] = node[i]
	return filhos;
}

function firstChild(elm) {
	if (!elm) return false
	for (var i=0, len=elm.childNodes.length, tmp; i<len;) {
		tmp = elm.childNodes[i++]
		if (tmp&&tmp.nodeType==1) return tmp
	}	
	return false
}
function lastChild(elm) {
	if (!elm) return false
	for (var i=elm.childNodes.length, tmp; i; ) {
		tmp = elm.childNodes[--i]
		if (tmp&&tmp.nodeType==1) return tmp
	}
	return false
}

function toggle(e) {
	var image = getSrc(e);
	var obj = getElementById(image.id.replace('_img',''))

	if (!obj.style) return false
	
	if (obj.style.display == 'none') {
		obj.style.display = '';
		image.src = image.src.replace('expand','contract')
	}
	else {
		obj.style.display = 'none';
		image.src = image.src.replace('contract','expand')
	}
}

function abaShow(e) {
	var li = getSrc(e);//aba
	var index = -1;
	var ul = li.parentNode, abas = getChildNodes(ul), i = 0, n = abas.length
	//some com todas abas
	for (;i<n; i++) {
		removeClass(abas[i],'mostrar-sim');
		removeClass(abas[i],'selected');
		addClass(abas[i],'mostrar-nao');
		if (li == abas[i]) index = i
	}
	//marca a aba selecionada
	removeClass(li,'mostrar-nao');
	addClass(li,'selected');
	addClass(li,'mostrar-sim')
	//--
	//pegamos o div conteudo desta lista de abas
	var div = nextOfType(ul,'div'), conteudos = getChildNodes(div);
	//some com todos os conteudos
	for (i=0; i<n; i++) {
		removeClass(conteudos[i],'mostrar-sim');
		removeClass(conteudos[i],'selected')
		addClass(conteudos[i],'mostrar-nao');
	}
	//mostra o conteudo selecionado
	removeClass(conteudos[index],'mostrar-nao');
	addClass(conteudos[index],'selected');
	addClass(conteudos[index],'mostrar-sim');
}
function abasInit() {
	var a = getElementsByClass('abas',document.body,'ul'), i = 0, n = a.length;
	for (;i<n; i++) {//varre as ul.abas
		var li = a[i].childNodes, j = 0, n2 = li.length;
		for (;j<n2; j++) {//varre cada aba
			addEvent(li[j],'click',abaShow)
		}
		var div = nextOfType(a[i],'div'), c = getChildNodes(div);
		for (j=0; j<n2; j++)
			if (c[j])
				addClass(c[j],'mostrar-nao');
	}

}

//------------------ FUNCOES DE TERCEIROS - OTIMAS - INICIO -------------
/*
**************************************
* Remove Duplicated Function v1.1    *
* Autor: Carlos R. L. Rodrigues      *
**************************************
*/
removeDuplicated = function(a, s){
	var p, i, j;
	if(s) for(i = a.length; i > 1;){
		if(a[--i] === a[i - 1]){
			for(p = i - 1; p-- && a[i] === a[p];);
			i -= a.splice(p + 1, i - p - 1).length;
		}
	}
	else for(i = a.length; i;){
		for(p = --i; p > 0;)
			if(a[i] === a[--p]){
				for(j = p; --p && a[i] === a[p];);
				i -= a.splice(p + 1, j - p).length;
			}
	}
	return a;
};
//------------------ FUNCOES DE TERCEIROS - OTIMAS - FIM -------------

//PARA PAGINA DE DADOS DO ANUNCIANTE, SEJA PARA CADASTRAR, SEJA PARA EDITAR - INICIO
//PAGINA CADASTRO INICIO
var idT = 0;//idTelefones
var url_get_subcategorias = 0;//VAI SER USADA DENTRO DA FUNCAO get_subcategorias()
var url_get_endereco = 0;//VAI SER USADA DENTRO DA FUNCAO getEndereco()

var cat_carregadas = 0; //[CATEGORA_ID][SUBCATEGORIAS]

function apagar_telefone(e) {
	var a=getSrc(e), li=a.parentNode//li
	if (confirm('Deseja apagar este telefone?')) {
		//aqui remover o tel com ajax
		if (a.href != document.URL) {//--------------------- NA PAGINA DE EDITAR ANUNCIO
			xmlhttp = XMLHTTPRequest();
			var url = a.href.replace('devolver=0','devolver=1');//ATENCAO!
			xmlhttp.open('GET', url, true);		
			xmlhttp.onreadystatechange = function() {
				var apagado=false
				if (xmlhttp.readyState==4) {//completado
					if (xmlhttp.status==200) {//tudo ok
						var s = xmlhttp.responseText
						if (s=='0') { alert('Telefone não pode ser apagado!'); return false; }
						else if (s=='1') { alert('Telefone apagado com sucesso.'); apagado = true }
					}
					else alert('Não foi possível apagar o telefone.!')
				}
				if (apagado) li.parentNode.removeChild(li);
			}
			xmlhttp.send(null)
		}
		else {//--------------------- NA PAGINA DE CADASTRO OU APAGANDO UM NOVO CAMPO
			//alert('sem href')
			//apagado = true
			//if (apagado)
			li.parentNode.removeChild(li);
		}
	}
	else alert("Ok, nenhuma ação foi feita!");
	return actNo(e);
}

function add_more_telephones(e) {
	var but=getSrc(e), ol=but.parentNode.getElementsByTagName("ol")[0], li_S=ol.getElementsByTagName("li"), CONS_LIMITE_TELEFONES=2

	if (li_S.length<CONS_LIMITE_TELEFONES) {
		idT = idT? ++idT: eval(li_S.length+1)

		var li = createElement("li")
		var label = createElement("label","","","Telefone ")
			label.setAttribute("for","telefone-"+idT)//label.for="telefone_texto"+idT
			var em = createElement("em","","","(com DDD)");
		var br = createElement("br");
		var input = createElement("input","telefone-"+idT,"ipt-text")
			input.setAttribute("type","text"); //input.type="hidden"
			input.setAttribute("name","Telefone[]"); //input.name="telefone_id"
			input.setAttribute("size",11);
			input.setAttribute("maxlength",11);
		var a = createElement("a","","telefone-apagar"," Apagar este telefone");
			a.setAttribute("name", "telefone-apagar"); //a.name="apagar_telefone"
			a.setAttribute("href", ""); // Adiciono este att apenas para o cursor hand aparecer quando passar o mouse por cima :)
			addEvent(a,"click",apagar_telefone)//a.onclick = function(e) { apagar_telefone(e); }
		ol.appendChild(li)
			li.appendChild(label)
				label.appendChild(em)
				label.appendChild(createTextNode(":"))
			li.appendChild(br)
			li.appendChild(input)
			li.appendChild(a)//apagar telefone
	}
	else alert("Você já atingiu o limite de "+ CONS_LIMITE_TELEFONES +" telefones")
}
/*
    * 0 - Nao iniciado (Uninitialised)
    * 1 - Carregando (Loading)
    * 2 - Carregado (Loaded)
    * 3 - Interativo (Interactive)
    * 4 - Completado (Completed)
*/
/*
//debug
function showSubcategoriaID() { alert((x=document.forms['frm-cadastro'].elements['subcategoria']).options[x.selectedIndex].value); }
*/

function get_subcategorias() {
	var mode = 'xml';
	//var mode = 'text';
	
	//require ajax.js	
	var frm			 = get_form();

	var categoria	 = frm.elements['categoria'];
	if (isNaN(categoria.value) || categoria.value=='0') return false;
	var subcategoria = frm.elements['subcategoria'];

	if (cat_carregadas[categoria.value]) {//se a categoria jah foi carregada...
		popular_select(subcategoria, cat_carregadas[categoria.value], 'Selecione', ';')
	}
	else {//se ainda nao foi....
		xmlhttp = XMLHTTPRequest();
		var urlRequest = url_get_subcategorias + categoria.value +'&mode='+ mode;
		//alert(urlRequest);
		xmlhttp.open('GET', urlRequest, true);//ATENCAO!
		//xmlhttp.setRequestHeader("Content-Type", "text/plain; charset=utf-8");
		
		xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState==4) {//completado
				if (xmlhttp.status==200) {//tudo ok
					switch(mode)
					{
						case 'text':
							//var arr = unescape(xmlhttp.responseText.replace(/\+/g," "))
							var arr = xmlhttp.responseText.replace(/\+/g," ")
							if (arr=='0') {
								alert('Nenhuma subcategoria cadastrada!');
								subcategoria.disabled = false;
								return false;
							}
							arr = arr.split('|');
							popular_select(subcategoria, arr, 'Selecione',';')					
							//armazenar
							cat_carregadas[categoria.value] = []
							for(var i=0, n=arr.length; i<n; i++)
								cat_carregadas[categoria.value][i] = arr[i]
							break;
						case 'xml':
							var xmlDoc = xmlhttp.responseXML;
							
							var xmlRoot = xmlDoc.documentElement;
							var itens1 = xmlRoot.childNodes;
							
							var obj_select = subcategoria;
							var str_text = 'Selecione';
							obj_select.disabled = true;
							//obj_select.options.length = n;
							
							var ii = 0;						
							obj_select.options[0] = new Option(str_text, ii++);
														
							for (var i=0, n=itens1.length; i<n; i++)
							{
								var item = itens1[i];
								if (item.nodeType != 3)
								{
									var value = item.getAttribute('id');
									var text = item.childNodes[0].nodeValue;
									//Adiciona
									obj_select.options[ii++] = new Option(text, value);				
								}
							}
							
							obj_select.disabled = false;
							
							/*
							var itens2 = xmlDoc.getElementsByTagName('subcategoria');
							for (var i=0, n=itens2.length; i<n; i++)
							{
								break;
								var item = itens2[i];
								alert('nodetype ='+ item.nodeType + '\n' + item.getAttribute('id') +' - '+ item.childNodes[0].nodeValue);
							}
							*/
					}
				}
				else
					alert('Não foi possível carregar as subcategorias!')
			}
		}
		xmlhttp.send(null)
	}
}/*
function get_cidades() {
	//require ajax.js
	var estado	 = document.forms['frm-cadastro'].elements['estado'];
	if (!estado.value) return false;
	var cidade = document.forms['frm-cadastro'].elements['cidade'];

	xmlhttp = XMLHTTPRequest();
	xmlhttp.open('GET','get-cidades.php?id='+estado.value,true);

	cidade.options[0].value = '0';
	cidade.options[0].text  = 'Carregando...'
	
	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState==4) {//completado
			if (xmlhttp.status==200) {//tudo ok
				var arr = unescape(xmlhttp.responseText.replace(/\+/g," ")).split('|');
				cidade.options.length = arr.length;
				//cidade.options[0].value = '0';
				cidade.options[0].text  = '';
				for(var i=0, n=arr.length; i<n; i++) {
					var valores = arr[i].split(';');
					cidade.options[i+1] = new Option(valores[0],valores[1]);
				}
			}
			else alert('erro!')
		}
	}
}*/
function getLabel(pFrm, pAtt, pValue)
{
	var labels = pFrm.getElementsByTagName('label'), label, bAchou = false;
	var i=0, n=labels.length;
	/*
	 * como o campo e-mail não está mais para o início e sim mais para o fim do form, deixei de usar este código
	for (; i<n; i++) {
		label = labels[i];
		if (bAchou = labelVerify(label, pAtt, pValue)) break;
	}*/
	
	// como o campo e-mail está mais para o fim e não mais para o início do form, comecei a varrer o form de trás para frente
	// utilizando este código, para ganhar performance.
	for (; n>i;)
	{
		label = labels[--n];
		//alert('indice: ' + n +'\neleFor: '+ label.getAttribute(pAtt) +'\neleInn: '+ label.innerHTML);
		if (bAchou = labelVerify(label, pAtt, pValue)) break;		
	}  
	
	if (bAchou)
		return label;
	return false;
			
}
function labelVerify(pLabel, pAtt, pValue)
{
	return (pLabel.getAttribute(pAtt) == pValue);
	
}
function check_cadastro(e) {
	var frm = get_form()
		, tipo = frm.elements['tipo']
		, categoria = frm.elements['categoria'], categoria_valor = getValue(categoria)
		, subcategoria = frm.elements['subcategoria'], subcategoria_valor = getValue(subcategoria);

	// SEU ANUNCIO
		// PESSOA FÍSICA = AUTÔNOMO = PROFISSIONAL LIBERAL
		// -> Não: CPF
		// PESSOA JURÍDICA = EMPRESA
		// -> Não: RazaoSocial, CNPJ
		// RESTANTE
		// -> Descricao
	var nome 		= frm.elements['Nome'];	
	var NomeFantasia= frm.elements['NomeFantasia'];	
	var descricao	= frm.elements['Descricao'];
	
	// LOCALIZAÇÃO
	// -> Não: Complemento
	var CEP 		= frm.elements['CEP']
		, endereco 	= frm.elements['Endereco']
		, bairro 	= frm.elements['Bairro']
		, UF 		= frm.elements['UF'], UF_value = getValue(UF)
		, cidade 	= frm.elements['IDcidade'], cidade_value = getValue(cidade);

	// CONTATO
	// -> Não: FAX
	var telefone	= frm.elements['telefone[]'] 
		, email		= frm.elements['Email'];

	// VALIDACOES - INICIO
	var i = tipo.length, checado = false
	while (i)
		if (tipo[--i].checked) { checado = true; break; }
	if (!checado) { alert('Selecione:\n- Autônomo (Profissional liberal)\n- Empresa (Pessoa Jurídica)'); return actNo(e); }
	var tipo_valor = parseInt(tipo[i].value, 10);
	
	if (categoria_valor=='0') { alert('Selecione sua categoria'); categoria.focus(); return actNo(e); }
	if (subcategoria_valor=='0') { alert('Selecione sua subcategoria'); subcategoria.focus(); return actNo(e); }

	// SEU ANUNCIO
	// -> Não: Descricao
			
	var validarEmail;	
	// Verificando se selecionou: Autônomo ou Empresa	
	switch(tipo_valor)
	{
		// Autônomo
		case 1:
			if (!nome.value) { alert('Preencha com seu nome'); nome.focus(); return actNo(e); }
			// Se for autonomo, o campo e-mail é opcional
			validarEmail = false;
			break;
		// Empresa
		case 2:
			if (!NomeFantasia.value) { alert('Preencha com o Nome Fantasia'); NomeFantasia.focus(); return actNo(e); }
			// Se for empresa, o campo e-mail é requerido/obrigatório
			validarEmail = true;		
			break;
		default:
			alert("Somente são válidos os valores 1 e 2.");
			return actNo(e);		
	}	
	
	//if (descricao.value.length > 2000) { alert('Ela deve ter no máximo 2000 caracteres'); descricao.focus(); return actNo(e); }
	
	// LOCALIZACAO
	// -> Não: Complemento
	if (CEP.value && CEP.value.length>7) {
		CEP.value = filtra_numeros(CEP.value);
		var prefixo = CEP.value.substr(0, 5);
		if (prefixo >= 90000 && prefixo <= 99999) {/*blz*/}
		else { alert('CEP não corresponde ao nosso estado do RS.'); CEP.focus();return actNo(e); }
	}
	else { alert('Preencha com seu CEP'); CEP.focus(); return actNo(e); }
	if (endereco.value.length < 3) { alert('Preencha com seu endereço.'); endereco.focus(); return actNo(e); }
	if (bairro.value.length < 3) { alert('Preencha com seu bairro.'); bairro.focus(); return actNo(e); }	
	// Complemento não	
	if (UF_value.length!=2) { alert('Selecione seu estado.'); UF.focus(); return actNo(e); }
	if (!parseInt(cidade_value, 10)) { alert('Selecione sua cidade.'); cidade.focus(); return actNo(e); }

	// CONTATO
	// -> Não: FAX
	//------------------- VALIDAR TELEFONES INICIO -----------------------
	var t = frm.elements['Telefone[]'];
	if (t.length == undefined) {
		//SO TEM UM TELEFONE
		if (!t.value || (filtra_numeros(t.value).length!=10 && filtra_numeros(t.value).length!=11)) { alert('Preencha com seu telefone CORRETAMENTE.\nEx.: 5130311011, tudo junto.\nPermitimos números 0800 também.'); t.focus(); return actNo(e); }
	}
	else {
		//MAIS DE UM TELEFONE
		var n = t.length, arrtel=[], j=0;
		for (i=0; i<n; i++) {
			//como nao da pra usar o array, pq eh um objeto, dos campos de telefone, vamos criar um array para guardar estes dados
			arrtel[j++] = t[i].value
			//agora vamos validar o numero de cada um
			if (t[i].value && (filtra_numeros(t[i].value).length!=10 && filtra_numeros(t[i].value).length!=11)) { alert('Preencha com seu telefone CORRETAMENTE\nEx.: 5130311011, tudo junto.\n\nPermitimos números 0800 também.'); t[i].focus(); return actNo(e); }
		}
		//ORGANIZAMOS O ARRAY
		arrtel.sort();
		//ELIMINAMOS VALORES DUPLICADOS
		arrtel = removeDuplicated(arrtel, true);
		if (arrtel.length<1) { alert('É preciso no mínimo um telefone cadastrado.'); t[0].focus(); return actNo(e); }
	}
	//------------------- VALIDAR TELEFONES FIM -----------------------

	if (validarEmail)
		if (!email.value || !email.value.is_email()) { alert('Preencha com um e-mail válido!'); email.focus(); return actNo(e); }

	//if (!confirm('Deseja submeter?')) return actNo(e);
}


function get_form() {
	url_get_subcategorias	= 'get-subcategorias.php?id=';
	url_get_endereco		= 'get-endereco.php?CEP=';

	var frm					  = getElementById('frm-cadastro');
	if (!frm)
	{
		frm						= getElementById('frm-anunciante-editar');
		url_get_subcategorias	= '../'+url_get_subcategorias;
		url_get_endereco		= '../'+url_get_endereco;
	}
	return frm
}

function get_form_residenciais() {
	var frm = getElementById('frm-cadastro-residencial');
	if (!frm)
		frm = getElementById('frm-anunciante-residencial-editar');
	return frm
}


function check_pagina_personalizada(e) {
	var frm = getElementById('frm-pagina-personalizada-setar'), c = frm.elements['url-pagina-personalizada'], v = c.value, n=v.length
	if ( !n || (n && (n<6 || n>100)) ) { alert('O URL deve ter entre 6 e 100 caracteres'); c.focus(); return actNo(e); }
	return true;//so pra retornar algo
}

function check_cadastro_residenciais(e) {
	var frm = get_form_residenciais();
	
	// DADOS PESSOAIS
	var prenome 	= frm.elements['prenome']
		, sobrenome = frm.elements['sobrenome'];
	
	// LOCALIZACAO
	// -> Não: complemento
	var CEP 		= frm.elements['CEP']
		, endereco 	= frm.elements['Endereco']
		, bairro 	= frm.elements['Bairro']
		, UF		= frm.elements['UF'], UF_value = getValue(UF)
		, cidade 	= frm.elements['IDcidade'], cidade_value = getValue(cidade);

	// CONTATO
	// -> Não: FAX, email 
	var telefone	= frm.elements['telefone[]'];
	
	// VALIDACOES - INICIO
	// DADOS PESSOAIS
	if (prenome.value.length < 2) { alert('Preencha com seu Prenome'); prenome.focus(); return actNo(e); }
	if (sobrenome.value.length < 2) { alert('Preencha com seu Sobrenome corretamente.'); sobrenome.focus(); return actNo(e); }

	// LOCALIZACAO
	// Não: complemento
		if (CEP.value && CEP.value.length>7) {
		CEP.value = filtra_numeros(CEP.value);
		var prefixo = CEP.value.substr(0, 5);
		if (prefixo >= 90000 && prefixo <= 99999) {/*blz*/}
		else { alert('CEP não corresponde ao nosso estado do RS.'); CEP.focus();return actNo(e); }
	}
	else { alert('Preencha com seu CEP'); CEP.focus(); return actNo(e); }
	if (endereco.value.length < 3) { alert('Preencha com seu endereço.'); endereco.focus(); return actNo(e); }
	if (bairro.value.length < 3) { alert('Preencha com seu bairro.'); bairro.focus(); return actNo(e); }	

	if (UF_value.length != 2) { alert('Selecione seu estado.'); UF.focus(); return actNo(e); }
	if (!parseInt(cidade_value, 10)) { alert('Selecione sua cidade.'); cidade.focus(); return actNo(e); }

	// CONTATO
	// -> Não: FAX, email 
	var t = telefone;
	//-> só tem um telefone
	if (!t.value || (filtra_numeros(t.value).length!=10 && filtra_numeros(t.value).length!=11)) { alert('Preencha com seu telefone CORRETAMENTE.\nEx.: 5130311011, tudo junto.\nPermitimos números 0800 também.'); t.focus(); return actNo(e); }
	if (email.value && !email.value.is_email()) { alert('Preencha com um email válido!'); email.focus(); return actNo(e); }
	// VALIDACOES - FIM
}

function getFather(objSon, tagNameFather) {
	var objFather = objSon.parentNode, cont = 0, max = 5;
	tagNameFather = tagNameFather.toUpperCase();
	while((objFather = objFather.parentNode).tagName.toUpperCase() != tagNameFather) {
		//alert(++cont);
		/*
		alert('objFather = ' + objFather.tagName);
		alert(objFather.getAttribute('action'));
		if (confirm('parar?')) break;*/
	}
	return objFather;
}

function ShowHideFieldsAssociated(e)//onClick
{
	var tipoCampo = getSrc(e);
	var tipoValue = tipoCampo.value;
	var tipoID = tipoCampo.id;
	
	var pai = tipoCampo.parentNode;
	while((pai = pai.parentNode).tagName.toUpperCase() != 'FORM') {/*
		alert('pai = ' + pai.tagName);
		alert(pai.getAttribute('action'));
		if (confirm('parar?')) break;*/
	}	
	
	// Antes, pegar o label do e-mail
	var labelEmail = getLabel(pai, 'for', 'Email');
	
	switch (tipoValue)
	{
		case '1'://Autonomo
			getElementById('tipo-1_content').style.display = '';
			getElementById('tipo-2_content').style.display = 'none';
			//alert('debug1 = ' + tipoValue)
			
			// Se for autonomo, o campo e-mail é opcional// precisamos retirar o atributo class="required"
			labelEmail.removeAttribute('class');
			break;
		case '2'://Empresa
			getElementById('tipo-1_content').style.display = 'none';
			getElementById('tipo-2_content').style.display = '';
			//alert('debug2 = ' + tipoValue)
						
			// Se for empresa, o campo e-mail é requerido/obrigatório //  class="required"
			labelEmail.setAttribute('class','required');
			break;
		default:
			alert('aaaaaaaaaaaaa');
	}
}

function getEndereco(e) {
	var CEP = getSrc(e);

	if (filtra_numeros(CEP.value).length != 8) return;
	xmlhttp = XMLHTTPRequest();
	var urlRequest = url_get_endereco + CEP.value;
	//alert('url endereco: '+ urlRequest);
	xmlhttp.open('GET', urlRequest, true);//ATENCAO!
	xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
	
	xmlhttp.onreadystatechange = function()
	{
		if (xmlhttp.readyState == 4) {
			//completado
			if (xmlhttp.status == 200) {
				//tudo ok
				var xmlDoc = xmlhttp.responseXML;
				var xmlRoot = xmlDoc.documentElement;
				
				var resultado_txt = xmlRoot.getElementsByTagName('resultado_txt')[0].childNodes[0].nodeValue;
				//alert('resultado_txt = ' + resultado_txt);
				
				if (resultado_txt.indexOf('sucesso') > -1) {
					var rUF = xmlRoot.getElementsByTagName('uf')[0].childNodes[0].nodeValue;
					var rcidade = xmlRoot.getElementsByTagName('cidade')[0].childNodes[0].nodeValue.toLowerCase();
					var rbairro = xmlRoot.getElementsByTagName('bairro')[0].childNodes[0].nodeValue;
					var rtipo_logradouro = xmlRoot.getElementsByTagName('tipo_logradouro')[0].childNodes[0].nodeValue;
					var rlogradouro = xmlRoot.getElementsByTagName('logradouro')[0].childNodes[0].nodeValue;
					
					var frm = getFather(CEP, 'form');
					frm.elements['Bairro'].value = rbairro;
					frm.elements['Endereco'].value = rtipo_logradouro + ' ' + rlogradouro;
					
					var cidade = frm.elements['IDcidade'];
					for (var i = 0, n = cidade.options.length; i < n; i++) {
						//alert(cidade.options[i].text.toLowerCase())
						if (cidade.options[i].text.toLowerCase() == rcidade) {
							cidade.options[i].selected = true;
							break;
						}
					}
				}
			}
			else 
				alert('Não foi possível carregar o endereço!')
		}
	}
	xmlhttp.send(null)
}
function cadastro_comecar() {
	//Padrao.
	abasInit();
	
	//##################################################################
	// EMPRESAS E AUTONOMOS
	//##################################################################
	//PEGAR DE QUE FORM É O ATUAL, EXISTEM 2 IDÊNTICOS
	var f = get_form();
	if (f) {
		//CHECAR VALIDAR DADOS
		addEvent(f, "submit", check_cadastro);
		
		//para o form de editar anuncio
		/*
		if (f.elements['status'])
			addEvent(f.elements['status'], "change", form_pagina_personalizada);
		if (getElementById('frm-pagina-personalizada-setar')) {
			addEvent(getElementById('frm-pagina-personalizada-setar'),"submit",check_pagina_personalizada);
		}*/
		
		//autonomo ou empresa
		var tipo = f.elements['tipo'];
		for (var i1 = 0, n1 = tipo.length; i1 < n1; i1++) {
			addEvent(tipo[i1], 'click', ShowHideFieldsAssociated);
			var tmpID = tipo[i1].id + '_content';
			//alert(tmpID);
			getElementById(tmpID).style.display = "none";
			if (tipo[i1].checked)
				getElementById(tmpID).style.display = "";
		}

		//CARREGAR SUBCATEGORIAS
		addEvent(f.elements['categoria'],"change",get_subcategorias)
		
		//PRE-MOLDAR ARRAY PARA GUARDAR AS SUBCATGEORIAS DE TAIS CATEGORIAS CARREGADAS
		var c = f.elements['categoria'], i=1, n=c.options.length//i=1 pq nao eh pra comecar no zero e pegar o text SELCIONE ESTA CATEGORIA
		cat_carregadas = []
		for( ; i<n; i++) {
			cat_carregadas[c.options[i].value] = 0
			//alert(c.options[i].value + ' '+ c.options[i].text)
		}
		
		//CARREGAR ENDEREÇO
		var CEP = f.elements['CEP'];
		if (CEP)
		{
			addEvent(CEP, 'keyup', getEndereco);
			addEvent(CEP, 'blur', getEndereco);
		}
				
		//ADICIONAR BOTAO PARA ADICIONAR TELEFONES
		var telefones	   = getElementById("espaco-para-telefones")
		var mais_telefones = createElement("a","mais-telefones","","Adicione mais telefones")
			mais_telefones.setAttribute('href','javascript:void(0);')
		addEvent(mais_telefones, "click", add_more_telephones)
		telefones.appendChild(mais_telefones)//add more examples

		//ADICIONAR EVENTO AOS BOTOES DE APAGAR
		var a = getElementsByClassName('telefone-apagar',f)
		for (i=0, n=a.length; i<n; i++) {
			addEvent(a[i],"click",apagar_telefone)
		}
		
		var a = f.elements['IDassinatura'];
		for (i=0, n=a.length; i<n; i++) {
			
			// # 1º: verificamos se a assinatura atual permite página personalizada. se sim, devemos mostrar o campo para setar o url.
			if (a[i].checked && a[i].value == 1)
				paginaPersonalizadaField(true);
				
			// # 2º: adicionamos o evento
			addEvent(a[i], "click", assinatura_select);
			
		}		
		
	}
	//##################################################################
	// RESIDENCIAIS
	//##################################################################
	var f = get_form_residenciais();
	if (f) {
		//CARREGAR ENDEREÇO
		var CEP = f.elements['CEP'];
		if (CEP)
		{
			addEvent(CEP, 'keyup', getEndereco);
			addEvent(CEP, 'blur', getEndereco);
		}
		
		addEvent(f, "submit", check_cadastro_residenciais);
	}
}

function showIf(strID, show) {
	//alert(show==true?'yeah':'noooo');
	var o=getElementById(strID), c=o.className;
	o.className = show? o.className.replace('nao','sim') : o.className.replace('sim','nao');
	o.focus();
}


function paginaPersonalizadaField(show) {
	//alert(show==true?'yeah':'noooo');
	var o=getElementById('colocar-pagina-personalizada'), c=o.className;
	o.className = show? o.className.replace('nao','sim') : o.className.replace('sim','nao');
	o.focus();
}

function assinatura_select(e) {
	var assinatura = getSrc(e);
	var IDassinatura = assinatura.value;
	//alert('IDassinatura = ' + IDassinatura);
	
	// URLInterna
	// # 1º Mostrar campo de URLInterna (Página Personalizada) caso estiver habilitado para essa assinatura o "PaginaPersonalizada"
	var obj = getElementById('AssinaturaPaginaPersonalizada-'+IDassinatura);	
	showIf('colocar-pagina-personalizada', obj && obj.value == 1);
	
	// URLExterna
	var obj = getElementById('AssinaturaCusto-'+IDassinatura);
	showIf('lbURLExterna', obj && (parseFloat(obj.value) > 0));
	
}
//PAGINA CADASTRO FIM

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}

//]]>
