var xmlhttp = null; //Objeto XMLHttpRequest.
var HttpReq = null; //Objeto XMLHttpRequest.
var elemento = null;
var dest_combo = null;

function ajaxComboBox(ele, url, comboBox){
    dest_combo = comboBox;
    var indice = ele.selectedIndex;
    var sigla = ele.options[indice].getAttribute('value');
    url = url + '?uf=' + sigla;
    if (document.getElementById) { //Verifica se o Browser suporta DHTML.
        if (window.XMLHttpRequest) {
            HttpReq = new XMLHttpRequest();
            HttpReq.onreadystatechange = XMLHttpRequestChangeBox;
            HttpReq.open("GET", url, true);
            HttpReq.send(null);
        } else if (window.ActiveXObject) {
            HttpReq = new ActiveXObject("Microsoft.XMLHTTP");
            if (HttpReq) {
                HttpReq.onreadystatechange = XMLHttpRequestChangeBox;
                HttpReq.open("GET", url, true);
                HttpReq.send();
            }
        }
    }
}
function XMLHttpRequestChangeBox() {
    if (HttpReq.readyState == 4 && HttpReq.status == 200){  //Verifica se o arquivo foi carregado com sucesso.
        var result = HttpReq.responseXML;
        var cidades = result.getElementsByTagName("nome");
        document.getElementById(dest_combo).innerHTML = "";
        for (var i = 0; i < cidades.length; i++) {
            new_opcao = create_opcao(cidades[i]);
            document.getElementById(dest_combo).appendChild(new_opcao);
        }
    }
}

function create_opcao(cidade) { //Cria um novo elemento OPTION.
    //return opcao.cloneNode(true);
    var new_opcao = document.createElement("option"); //Cria um OPTION.
    var texto = document.createTextNode(cidade.childNodes[0].data); //Cria um texto.
    new_opcao.setAttribute("value",cidade.getAttribute("id")); //Adiciona o atributo de valor a nova opção.
    new_opcao.appendChild(texto); //Adiciona o texto a OPTION.
    return new_opcao; // Retorna a nova OPTION.
}


function startHttpReq(link,parametros,funcChange){
  	parametros = (!parametros) ? null : parametros;
    if (parametros) {
		url = link+"?"+parametros; //Monta a url de pesquisa.
	} else {
		url = link; //Monta a url de pesquisa.	  
	}
    if (document.getElementById) { //Verifica se o Browser suporta DHTML.
    	try { 
        	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
	    } catch (e) { 
    	    try { 
        	    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
	        } catch (E) { 
    	        xmlhttp = false; 
        	} 
	    } 
	    if  (!xmlhttp && typeof  XMLHttpRequest != 'undefined' ) { 
    	    try  { 
        	    xmlhttp = new  XMLHttpRequest(); 
	        } catch  (e) { 
    	        xmlhttp = false ; 
        	} 
	    }
	    if (xmlhttp) {
    	    xmlhttp.onreadystatechange = eval(funcChange); //Defini qual função tratará as mudanças de estado do objeto XMLHttpRequest.
            xmlhttp.open("GET", url, true); //Abre a url.
	        xmlhttp.setRequestHeader('Content-Type','text/html'); //Define o conteúdo do documento da url.
    	    //xmlhttp.setRequestHeader('encoding','ISO-8859-1'); //Define o conjunto de caracteres usado no documento.
    	    //xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    	    //xmlhttp.setRequestHeader('Content-length', parametros.length); 
    	    //xmlhttp.setRequestHeader('Connection', "close"); 
    	    xmlhttp.send(null); //Envia dados ao documento da url.
    	  	//alert(parametros);
	    }
    }
}

function monta_url(form) {
	var url="";
	for (i=0;i < form.elements.length;i++) {
	  	if ((form.elements[i].type != undefined) && (form.elements[i].type != 'button')) {
	  		if ((form.elements[i].type == 'text') && (form.elements[i].value.length > 0)) {
				url += "&"+form.elements[i].name+"="+escape(form.elements[i].value.toLowerCase());
			} else if ((form.elements[i].type == 'select-one') && (form.elements[i].options[form.elements[i].selectedIndex].value > 0)) {
			  	url += "&"+form.elements[i].name+"="+form.elements[i].options[form.elements[i].selectedIndex].value;
			} else if ((form.elements[i].type == 'textarea') && (form.elements[i].value.length > 0)) {
			  	url += "&"+form.elements[i].name+"="+escape(form.elements[i].value);
			} else if (form.elements[i].type == 'checkbox') {
			  	if (form.elements[i].checked) {
			  		url += "&"+form.elements[i].name+"="+escape(form.elements[i].value);
			  	}
			} else if ((form.elements[i].type == 'hidden') && (form.elements[i].value.length > 0)) {
				url += "&"+form.elements[i].name+"="+escape(form.elements[i].value.toLowerCase());
			}
			//window.alert(form.elements[i].type+" "+form.elements[i].name);
		}
	}
	url = url.slice(1);
	return url;	
}

function XMLHttpRequestChange() { //Controla as mudanças do objeto XMLHttpRequest.
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200){  //Verifica se o arquivo foi carregado com sucesso.
        var result = xmlhttp.responseText; //Armazena a resposta XML.
        document.getElementById(elemento).innerHTML = result;
    }
}

/******
* select_innerHTML - corrige o bug do InnerHTML em selects no IE
* Veja o problema em: http://support. microsoft.com/default.aspx?scid=kb;en-us;276228
* Versão: 2.1 - 04/09/2007
* Autor: Micox - Náiron José C. Guimarães - micoxjcg@yahoo.com.br
* @objeto(tipo HTMLobject): o select a ser alterado
* @innerHTML(tipo string): o novo valor do innerHTML
*******/
function select_innerHTML(objeto,innerHTML){
	objeto.innerHTML = ""
	var selTemp = document.createElement("micoxselect")
	var opt;
	selTemp.id="micoxselect1"
	document.body.appendChild(selTemp)
	selTemp = document.getElementById("micoxselect1")
	selTemp.style.display="none"
	if(innerHTML.toLowerCase().indexOf("<option")<0){//se não é option eu converto
		innerHTML = "<option>" + innerHTML + "</option>"
	}
	innerHTML = innerHTML.toLowerCase().replace(/<option/g,"<span").replace(/<\/option/g,"</span")
	selTemp.innerHTML = innerHTML
	      
	for(var i=0;i<selTemp.childNodes.length;i++){
		var spantemp = selTemp.childNodes[i];
		if(spantemp.tagName){     
			opt = document.createElement("OPTION")
			objeto.appendChild(opt)
			//getting attributes
			for(var j=0; j<spantemp.attributes.length ; j++){
				var attrName = spantemp.attributes[j].nodeName;
				var attrVal = spantemp.attributes[j].nodeValue;
				if(attrVal){
					try{
						opt.setAttribute(attrName,attrVal);
						opt.setAttributeNode(spantemp.attributes[j].cloneNode(true));
					}catch(e){}
				}
			}
			//getting styles
			if(spantemp.style){
				for(var y in spantemp.style){
					try{opt.style[y] = spantemp.style[y];}catch(e){}
				}
			}
			//value and text
			opt.value = spantemp.getAttribute("value")
			opt.text = spantemp.innerHTML
			//IE
			opt.selected = spantemp.getAttribute('selected');
			opt.className = spantemp.className;
		} 
	}    
	document.body.removeChild(selTemp)
	selTemp = null
}

function valida(form) {
	if (!DigitoCPFCNPJ(form.cpfcnpj.value)) {
		alert("CPF ou CNPJ inválido, por favor tente novamente");
		return false;
	}
	if (form.nomerazao.value !="") {
    	if (form.nomerazao.value.length < 4) {
        	alert("Por Favor preencha Seu nome Completo.");
            form.nomerazao.focus();
            return false;
        }
    } else {
		alert("Por Favor preencha seu nome.");
		form.nomerazao.focus();
		return false;
	}
	if (form.contato.value !="") {
    	if (form.contato.value.length < 3) {
        	alert("Por Favor preencha o campo contato corretamente.");
            form.contato.focus();
            return false;
        }
    } else {
		alert("Por Favor preencha o campo contato.");
		form.contato.focus();
		return false;
	}
	if (form.logradouro.value !="") {
    	if (form.logradouro.value.length < 3) {
        	alert("Por Favor preencha o campo logradouro corretamente.");
            form.logradouro.focus();
            return false;
        }
    } else {
		alert("Por Favor preencha o campo logradouro.");
		form.logradouro.focus();
		return false;
	}
	if (form.numero.value.length < 1) {
       	alert("Por Favor preencha o campo Número corretamente.");
        form.numero.focus();
        return false;
    } 
	if (form.cep.value.length < 8) {
       	alert("Por Favor preencha o campo CEP corretamente.");
        form.cep.focus();
        return false;
    } 
	if (form.bairro.value !="") {
    	if (form.bairro.value.length < 3) {
        	alert("Por Favor preencha o campo bairro corretamente.");
            form.bairro.focus();
            return false;
        }
    } else {
		alert("Por Favor preencha o campo bairro.");
		form.bairro.focus();
		return false;
	}
	//validar email
	if (form.email.value == ""){
		alert("O campo e-mail deve ser preenchido!");
        form.email.focus();
        return false;
    } else {
  		var filter=/^.+@.+\..{2,3}$/
  		if (!filter.test(form.email.value)) {
			alert("O e-mail digitado não é válido!");
			return false;
		}
  	}
	if (form.email.value != form.email2.value) {
			alert ("Foram informados dois endereços de e-mail diferentes!");
			form.email.focus();
			return false;
	}
	if (form.telefone.value.length < 7) {
		alert("O campo telefone deve ser preenchido com um número de telefone para contato. Obrigado.");
		form.telefone.focus();
	    return false;
	}
	if (form.cidade.value.length == "") {
        alert("Informe sua cidade!");
		form.cidade.focus();
		return false;
	}
	if (form.estado.value == "") {
        alert("Por favor informe seu estado!");
		form.estado.focus();
		return false;
	}
}

function DigitoCPFCNPJ(numCIC) {
	var numDois = numCIC.substring(numCIC.length-2, numCIC.length);
	var novoCIC = numCIC.substring(0, numCIC.length-2);
	switch (numCIC.length){
		case 11 :
			numLim = 11;
			break;
		case 14 :
			numLim = 9;
			break;
		default :
          //error_message = error_message + "* " + "CPF inválido: Digite todo o CPF."+ "\n";
          //error = true;
          return false;
	}
	//
	var numSoma = 0;
	var Fator = 1;
	for (var i=novoCIC.length-1; i>=0 ; i--) {
		Fator = Fator + 1;
		if (Fator > numLim) {
			Fator = 2;
		}
		numSoma = numSoma + (Fator * Number(novoCIC.substring(i, i+1)));
	}
	numSoma = numSoma/11;
	var numResto = Math.round( 11 * (numSoma - Math.floor(numSoma)));
    if (numResto > 1) {
		numResto = 11 - numResto;
    }
    else {
		numResto = 0;
    }
    //-- Primeiro dígito calculado.  Fará parte do novo cálculo.
    //--
    var numDigito = String(numResto);
    novoCIC = novoCIC.concat(numResto);
    //--
	numSoma = 0;
	Fator = 1;
	for (var i=novoCIC.length-1; i>=0 ; i--) {
		Fator = Fator + 1;
		if (Fator > numLim) {
			Fator = 2;
		}
		numSoma = numSoma + (Fator * Number(novoCIC.substring(i, i+1)));
	}
	numSoma = numSoma/11;
	numResto = numResto = Math.round( 11 * (numSoma - Math.floor(numSoma)));
    if (numResto > 1) {
		numResto = 11 - numResto;
    }
    else {
		numResto = 0;
    }
	//-- Segundo dígito calculado.
	numDigito = numDigito.concat(numResto);
	//
	if (numDigito == numDois) {
               return true;
	}
	else {
               //error_message = error_message + "* " + "CPF inválido: digito verificador não confere." + "\n";
               //error = true;
               return false;
	}
}