try{
    xmlhttp = new XMLHttpRequest();
}catch(ee){
    try{
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
        try{
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }catch(E){
            xmlhttp = false;
        }
    }
}

// Destino é o selectque será carregado com as sub-opções
function doBusca(tabela,campo,crit,retorno,destino,key){

    //limpa o select
    var c=document.getElementById(destino);
    while(c.options.length>0) {
    	c.options[0]=null;
    }
    c.options[0] = new Option("Carregando...","Carregando...");

    //Monta a url com a uf
    xmlhttp.open("GET", "lista_ajax.php?tabela="+tabela+"&campo="+campo+"&crit="+crit+"&retorno="+retorno+"&key="+key,true);
	
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4){
            //limpa o select
            var c = document.getElementById(destino);
            while(c.options.length>0){
            	c.options[0]=null;
            }
            //Transforma a lista de cidades em um array
            var aOpcao = xmlhttp.responseText.split("|"); // quebra com | pois estou usando ele.
            //popula o select com a lista de cidades obtida
			if(aOpcao[0] != '0<**>Nenhum resultado'){
				// Habilita o campo
				c.disabled = false;
				// Cria um option com 'Escolha'
				c.options[c.options.length] = new Option('Escolha','Escolha');
				// Mota os options com o resultado do xmlhttp.open
				for(var i=0;i<aOpcao.length;i++){
					var teste = aOpcao[i].split("<**>");
					c.options[c.options.length] = new Option(teste[1],teste[0]);
				}
			} else {
				// Desabilita o campo
				c.disabled = true;
				// Coloca 'Nenhum resultado...'
				c.options[c.options.length] = new Option('Nenhum resultado...','Nenhum resultado...');
			}
            
        }
    }

    xmlhttp.send(null);
}
// essa função cria o objeto XMLHttp
// Exemplo:
// <a href="javascript: inner('arquivo.php','id_corpo');">link</a>
function Ajaxx() { 
	var XMLHttp; 
	try { 
		XMLHttp=new XMLHttpRequest(); 
	} 
	catch(ee) { 
		try {
			XMLHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
		} catch(e) { 
		try {
			XMLHttp=new ActiveXObject("Microsoft.XMLHTTP"); } 
		catch(e) { 
			XMLHttp=false; 
			} 
		} 
	} 
	return XMLHttp; 
}
// função para não ficar fazeendo 'document.getElementByID('');
function pegaID(ID) { 
	return document.getElementById(ID); 
}

// Função que faz a requisicao assíncrona de um arquivo e retorna o seu HTML
function call(arquivo,ID,carregando) {
	var ajax_obj = new Ajaxx(); // cria a instancia da função Ajax()
	var area = pegaID(ID); // pega o ID passado
	ajax_obj.open('GET', arquivo, true); // fala o metodo para passar os dados para o arquivo
	ajax_obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; iso-8859-1");
	ajax_obj.setRequestHeader("CharSet", "iso-8859-1")
	ajax_obj.setRequestHeader("Cache-Control", "no-cache");
	ajax_obj.setRequestHeader("Pragma", "no-cache");
	ajax_obj.onreadystatechange = function() {
		if(carregando == 1){ // coloca o texto 'Carregando' na area
			area.innerHTML = "<center><span style='background: #CC0000; color: white;'>Carregando...</span></center>"; 
		} 
		if (ajax_obj.readyState == 4) { // se objeto carregado 'readyState == 4'
			var retorno = ajax_obj.responseText; // recupera o HTML do arquivo
			//retorno = retorno.replace(/\+/g," \"); // naum sei o q faz ;-)
			retorno = unescape(retorno); // naum sei o q faz ;-)
			//alert(retorno);
			if(retorno){ alert(retorno); }// insere o HTML na DIV especificada
		}
	}
	
	ajax_obj.send(null); // naum sei o q faz ;-)
}
// Esta serve para aplicar uma mascata em um campo qualquer.
// Ex em CPF: onkeyup= "mascara(this, '999.999.999-20', event);"
function mascara(objeto, sMask, evtKeyPress) {

      var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

      if(document.all) { // Internet Explorer
        nTecla = evtKeyPress.keyCode; }
      else if(document.layers) { // Nestcape
        nTecla = evtKeyPress.which;
      }

      sValue = objeto.value;

      // Limpa todos os caracteres de formatação que
      // já estiverem no campo.
      sValue = sValue.toString().replace( "-", "" );
      sValue = sValue.toString().replace( "-", "" );
      sValue = sValue.toString().replace( ".", "" );
      sValue = sValue.toString().replace( ".", "" );
      sValue = sValue.toString().replace( "/", "" );
      sValue = sValue.toString().replace( "/", "" );
      sValue = sValue.toString().replace( ":", "" );
      sValue = sValue.toString().replace( ":", "" );
      sValue = sValue.toString().replace( "(", "" );
      sValue = sValue.toString().replace( "(", "" );
      sValue = sValue.toString().replace( ")", "" );
      sValue = sValue.toString().replace( ")", "" );
      sValue = sValue.toString().replace( " ", "" );
      sValue = sValue.toString().replace( " ", "" );
      fldLen = sValue.length;
      mskLen = sMask.length;

      i = 0;
      nCount = 0;
      sCod = "";
      mskLen = fldLen;

      while (i <= mskLen) {
        bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/") || (sMask.charAt(i) == ":"))
        bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

        if (bolMask) {
          sCod += sMask.charAt(i);
          mskLen++; }
        else {
          sCod += sValue.charAt(nCount);
          nCount++;
        }

        i++;
      }

      objeto.value = sCod;

      if (nTecla != 8) { // backspace
        if (sMask.charAt(i-1) == "9") { // apenas números...
          return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9
        else { // qualquer caracter...
          return true;
        } }
      else {
        return true;
      }
}

// abre uma popup
function abrejanela(mValor,mNome,mWidth,mHeight) {
	window.open (mValor,mNome,"marginwidth=0,marginheight=0,status=0,resizable=yes,width="+mWidth+",height="+mHeight+",left=0,top=0,scrollbars=yes");
}

//validação de todos os inputs do documento.
function valida_input(){
	var galera = document.getElementsByTagName('input');
	for(i = 0; i<=galera.length; i++){
		if(galera[i].value == ''){ 
			alert("Preencha todos os campos!");
			return false;
		}
	}
	return true;
}

// função para validar campos passados por uma string.
// sepadaos por virgula: 'nome,email'
function testa(string){
	//alert(string);
	var campos   = string.split(",");
	var erro     = 0;
	var mensagem = "";

	for(i = 0; i < campos.length; i++){
		if(document.getElementById(campos[i]).value == ""){
			if(document.getElementById(campos[i]).title){
				mensagem += "    - "+document.getElementById(campos[i]).title+"\n";
			} else {
				mensagem += "    - "+document.getElementById(campos[i]).name+"\n";
			}
			erro++;
		}
	}
	
	if(erro > 0){
		if(erro == 1){
			var top = "O seguinte campo é de preenchimento obrigatório:\n";
		} else {
			var top = "Os seguintes campos são de preenchimento obrigatórios:\n";
		}
	
		alert(top+mensagem);
		return false;
	}
	
	return true;
}

// redir = endereço para onde será redirecionado.
// frase = a frase que aparece-rá como pergunta.
function confirmaRedirect(redir,frase){
	if(confirm(frase)){
		location.href = redir;
	}
}

/*
 * Função serve para marcar/desmarcar 
 * todos os checkhox com um determinado
 * nome.
 *
 * todos: Nome do checkbox que quando clicado marca todos;
 * nome : Nome dos checkbox que serão marcados;  
 */
function marca(todos,nome){
	var ch = document.getElementsByTagName('input');
	for(i=0;i<=ch.length;i++){
		if(document.getElementById(todos).checked == true){
			var status = true;
		} else {
			var status = false;
		}
		if(ch[i].name == nome){ 
			ch[i].checked = status;
		}
	}
}

function acertacod(campo){
	var cod = document.getElementById(campo).value;
	var arr = cod.split('=');
	if(arr.length > 1){
		if(arr[1].length > 11){
			document.getElementById(campo).value = arr[1].substr(0,11);
		} else {
			document.getElementById(campo).value = arr[1];
		}
	}
}

function mostraPedido(menu){
	
	status = document.getElementById("menu_" + menu).style.display;
	if(status == "none"){
		document.getElementById("menu_" + menu).style.display = "";
	} else {
		document.getElementById("menu_" + menu).style.display = "none";
	}
}

function mascara(objeto, sMask, evtKeyPress) {

      var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

      if(document.all) { // Internet Explorer
          nTecla = evtKeyPress.keyCode; }
      else if(document.layers) { // Nestcape
          nTecla = evtKeyPress.which;
      }

      sValue = objeto.value;

      // Limpa todos os caracteres de formatação que
      // já estiverem no campo.
      sValue = sValue.toString().replace( "-", "" );
      sValue = sValue.toString().replace( "-", "" );
      sValue = sValue.toString().replace( ".", "" );
      sValue = sValue.toString().replace( ".", "" );
      sValue = sValue.toString().replace( "/", "" );
      sValue = sValue.toString().replace( "/", "" );
      sValue = sValue.toString().replace( ":", "" );
      sValue = sValue.toString().replace( ":", "" );
      sValue = sValue.toString().replace( "(", "" );
      sValue = sValue.toString().replace( "(", "" );
      sValue = sValue.toString().replace( ")", "" );
      sValue = sValue.toString().replace( ")", "" );
      sValue = sValue.toString().replace( " ", "" );
      sValue = sValue.toString().replace( " ", "" );
      fldLen = sValue.length;
      mskLen = sMask.length;

      i = 0;
      nCount = 0;
      sCod = "";
      mskLen = fldLen;

      while (i <= mskLen) {
        bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/") || (sMask.charAt(i) == ":"))
        bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

        if (bolMask) {
            sCod += sMask.charAt(i);
            mskLen++; }
        else {
           sCod += sValue.charAt(nCount);
           nCount++;
        }

          i++;
      }

      objeto.value = sCod;

      if (nTecla != 8) { // backspace
        if (sMask.charAt(i-1) == "9") { // apenas números...
            return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9
        else { // qualquer caracter...
            return true;
        } 
      } else {
          return true;
      }
}


function mascaraSoNumero(num, tammax){
     
    num.value = num.value.replace(/[^0-9]/gm, '');
    var d = '';
    var tam = 0;
    var a = 0;
    d = d + num.value;
    tam = d.length;
    a = d.substr(tam-1,1);
    if (isNaN(a) || a == ' '){
        num.value = d.substr(0,tam-1);
    }
    if (tammax && tam == tammax){
        num.value = d.substr(0,tam-1);
        return;
    }
}

function mostraMenu(n,fecha){
  if(!fecha){
	var fecha = 10;  
  }
  for(x=1;x<=fecha;x++){
    panel=eval('document.all.menu_' + x + '.style;');
    if(x==n){
      panel.display = '';
    }
    else {
      panel.display = 'none';
    }
  }
}

function setaCorLinha(id,cor){
	document.getElementById(id).bgColor = cor;
}

// onKeyDown="FormataValor(this,event,17,2);"
function FormataValor(objeto,teclapres,tammax,decimais) 
{
	var tecla			= teclapres.keyCode;
	var tamanhoObjeto	= objeto.value.length;
	if ((tecla == 8) && (tamanhoObjeto == tammax))
	{
		tamanhoObjeto = tamanhoObjeto - 1 ;
	}
    if (( tecla == 8 || tecla == 88 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ) && ((tamanhoObjeto+1) <= tammax))
	{
		vr	= objeto.value;
		vr	= vr.replace( "/", "" );
		vr	= vr.replace( "/", "" );
		vr	= vr.replace( ",", "" );
		vr	= vr.replace( ".", "" );
		vr	= vr.replace( ".", "" );
		vr	= vr.replace( ".", "" );
		vr	= vr.replace( ".", "" );
		tam	= vr.length;
		if (tam < tammax && tecla != 8)
		{
			tam = vr.length + 1 ;
		}
		if ((tecla == 8) && (tam > 1))
		{
			tam = tam - 1 ;
			vr = objeto.value;
			vr = vr.replace( "/", "" );
			vr = vr.replace( "/", "" );
			vr = vr.replace( ",", "" );
			vr = vr.replace( ".", "" );
			vr = vr.replace( ".", "" );
			vr = vr.replace( ".", "" );
			vr = vr.replace( ".", "" );
		}
		if ( tecla == 8 || tecla >= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 )
		{
			if (decimais > 0)
			{
				if ( (tam <= decimais) )
				{ 
					objeto.value = ("0," + vr) ;
				}
				if( (tam == (decimais + 1)) && (tecla == 8))
				{
					objeto.value = vr.substr( 0, (tam - decimais)) + ',' + vr.substr( tam - (decimais), tam ) ;	
				}
				if ( (tam > (decimais + 1)) && (tam <= (decimais + 3)) &&  ((vr.substr(0,1)) == "0"))
				{
					objeto.value = vr.substr( 1, (tam - (decimais+1))) + ',' + vr.substr( tam - (decimais), tam ) ;
				}
				if ( (tam > (decimais + 1)) && (tam <= (decimais + 3)) &&  ((vr.substr(0,1)) != "0"))
				{
				    objeto.value = vr.substr( 0, tam - decimais ) + ',' + vr.substr( tam - decimais, tam ) ; 
				}
				if ( (tam >= (decimais + 4)) && (tam <= (decimais + 6)) )
				{
			 		objeto.value = vr.substr( 0, tam - (decimais + 3) ) + '.' + vr.substr( tam - (decimais + 3), 3 ) + ',' + vr.substr( tam - decimais, tam ) ;
				}
			 	if ( (tam >= (decimais + 7)) && (tam <= (decimais + 9)) )
				{
			 		objeto.value = vr.substr( 0, tam - (decimais + 6) ) + '.' + vr.substr( tam - (decimais + 6), 3 ) + '.' + vr.substr( tam - (decimais + 3), 3 ) + ',' + vr.substr( tam - decimais, tam ) ;
				}
				if ( (tam >= (decimais + 10)) && (tam <= (decimais + 12)) )
				{
			 		objeto.value = vr.substr( 0, tam - (decimais + 9) ) + '.' + vr.substr( tam - (decimais + 9), 3 ) + '.' + vr.substr( tam - (decimais + 6), 3 ) + '.' + vr.substr( tam - (decimais + 3), 3 ) + ',' + vr.substr( tam - decimais, tam ) ;
				}
				if ( (tam >= (decimais + 13)) && (tam <= (decimais + 15)) )
				{
			 		objeto.value = vr.substr( 0, tam - (decimais + 12) ) + '.' + vr.substr( tam - (decimais + 12), 3 ) + '.' + vr.substr( tam - (decimais + 9), 3 ) + '.' + vr.substr( tam - (decimais + 6), 3 ) + '.' + vr.substr( tam - (decimais + 3), 3 ) + ',' + vr.substr( tam - decimais, tam ) ;
				}
			}
			else if(decimais == 0)
			{
				if ( tam <= 3 )
				{ 
			 		objeto.value = vr ;
				}
				if ( (tam >= 4) && (tam <= 6) )
				{
					if(tecla == 8)
					{
						objeto.value = vr.substr(0, tam);
						window.event.cancelBubble = true;
						window.event.returnValue = false;
					}
					objeto.value = vr.substr(0, tam - 3) + '.' + vr.substr( tam - 3, 3 ); 
				}
				if ( (tam >= 7) && (tam <= 9) )
				{
					if(tecla == 8)
					{
						objeto.value = vr.substr(0, tam);
						window.event.cancelBubble = true;
						window.event.returnValue = false;
					}
					objeto.value = vr.substr( 0, tam - 6 ) + '.' + vr.substr( tam - 6, 3 ) + '.' + vr.substr( tam - 3, 3 ); 
				}
				if ( (tam >= 10) && (tam <= 12) )
				{
			 		if(tecla == 8)
					{
						objeto.value = vr.substr(0, tam);
						window.event.cancelBubble = true;
						window.event.returnValue = false;
					}
					objeto.value = vr.substr( 0, tam - 9 ) + '.' + vr.substr( tam - 9, 3 ) + '.' + vr.substr( tam - 6, 3 ) + '.' + vr.substr( tam - 3, 3 ); 
				}

				if ( (tam >= 13) && (tam <= 15) )
				{
					if(tecla == 8)
					{
						objeto.value = vr.substr(0, tam);
						window.event.cancelBubble = true;
						window.event.returnValue = false;
					}
					objeto.value = vr.substr( 0, tam - 12 ) + '.' + vr.substr( tam - 12, 3 ) + '.' + vr.substr( tam - 9, 3 ) + '.' + vr.substr( tam - 6, 3 ) + '.' + vr.substr( tam - 3, 3 ) ;
				}			
			}
		}
	}
	else if((window.event.keyCode != 8) && (window.event.keyCode != 9) && (window.event.keyCode != 13) && (window.event.keyCode != 35) && (window.event.keyCode != 36) && (window.event.keyCode != 46))
		{
			window.event.cancelBubble = true;
			window.event.returnValue = false;
		}
}

function Verifica_CPF(CPF) {
	
	CPF = CPF.replace( "-", "" );
	CPF = CPF.replace( ".", "" );
	CPF = CPF.replace( ".", "" );
	CPF = CPF.replace( "/", "" );

// Aqui começa a checagem do CPF
var POSICAO, I, SOMA, DV, DV_INFORMADO;
var DIGITO = new Array(10);
DV_INFORMADO = CPF.substr(9, 2); // Retira os dois últimos dígitos do número informado

// Desemembra o número do CPF na array DIGITO
for (I=0; I<=8; I++) {
  DIGITO[I] = CPF.substr( I, 1);
}

// Calcula o valor do 10º dígito da verificação
POSICAO = 10;
SOMA = 0;
   for (I=0; I<=8; I++) {
      SOMA = SOMA + DIGITO[I] * POSICAO;
      POSICAO = POSICAO - 1;
   }
DIGITO[9] = SOMA % 11;
   if (DIGITO[9] < 2) {
        DIGITO[9] = 0;
}
   else{
       DIGITO[9] = 11 - DIGITO[9];
}

// Calcula o valor do 11º dígito da verificação
POSICAO = 11;
SOMA = 0;
   for (I=0; I<=9; I++) {
      SOMA = SOMA + DIGITO[I] * POSICAO;
      POSICAO = POSICAO - 1;
   }
DIGITO[10] = SOMA % 11;
   if (DIGITO[10] < 2) {
        DIGITO[10] = 0;
   }
   else {
        DIGITO[10] = 11 - DIGITO[10];
   }

// Verifica se os valores dos dígitos verificadores conferem
DV = DIGITO[9] * 10 + DIGITO[10];
   if (DV != DV_INFORMADO) {
      return 'CPF inválido';
   } 

return true;
}

function Verifica_CNPJ(CNPJ){
	CNPJ = CNPJ.replace( "-", "" );
	CNPJ = CNPJ.replace( ".", "" );
	CNPJ = CNPJ.replace( ".", "" );
	CNPJ = CNPJ.replace( "/", "" );
  if(Vale = (CNPJ.length == 14))
     for(z=0;z<2;z++){
        Soma = 0;
        for(i=(5+z),j=0;j<(12+z);i--,j++){
           Soma += (CNPJ.substr(j, 1) * i);
           if(i == 2) i = 10;
        }
        Fim = (((Soma % 11) < 2) ? 0 : (((Soma % 11) == 10) ? 1 : 11-(Soma % 11)));
        if(!(Vale = (CNPJ.substr((12+z),1) == Fim)))
           break;
     }
  return Vale;
}

function soNumero(e){
    // ===--- Evento obj:
    var evnt = (window.event ? window.event : e);
    var inp  = (evnt.srcElement ? evnt.srcElement : evnt.target);
    switch (evnt.keyCode) {
        case 48 : return true; break; // 0
        case 49 : return true; break; // 1 
        case 50 : return true; break; // 2 
        case 51 : return true; break; // 3
        case 52 : return true; break; // 4
        case 53 : return true; break; // 5
        case 54 : return true; break; // 6
        case 55 : return true; break; // 7
        case 56 : return true; break; // 8
        case 57 : return true; break; // 9
    }
    return false;
}
/*
Esta função é usada na pagina de produtos... para retornar false quando o kra
da enter no formulario de busca por referencia...
*/
function notEnter(e){
	
	var evnt = (window.event ? window.event : e);
    var inp  = (evnt.srcElement ? evnt.srcElement : evnt.target);
    return evnt.keyCode;
	
}
