//INICIO - funções de mascara
function txtBoxFormat(objForm, strField, 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 = objForm[strField].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( " ", "" );
      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) == "/"))
        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++;
      }

      objForm[strField].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;
      }
    }
//Fim da Função Máscaras Gerais

//funcao de pop-up's
function abrir(pagina,rolagem,largura,altura) {
w = screen.width;
h = screen.height;
meio_w = w/2;
meio_h = h/2;
altura2 = altura/2;
largura2 = largura/2;
meio1 = meio_h-altura2;
meio2 = meio_w-largura2;
window.open(pagina,'','scrollbars='+ rolagem +',toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,copyhistory=no,height=' + altura + ',width=' + largura + ',top='+meio1+',left='+meio2+''); 
}
// fim da funcao POP-UP

function foto(foto,largura,altura){
w = screen.width;
h = screen.height;
meio_w = w/2;
meio_h = h/2;
altura2 = altura/2;
largura2 = largura/2;
meio1 = meio_h-altura2;
meio2 = meio_w-largura2;
var msg

msg=open("","foto","toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,copyhistory=no,width="+ largura +",height="+ altura +",top="+meio1+",left="+meio2+"");
msg.document.write ("<html><head><title>ARTESANATO ACREANO - Foto</title></head><body LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0 onload=onfocus();><a href=javascript:self.close();><img src="+foto+" border=0></a></body></html>");
};

//funcao de pop-up's
function abrir_modal(pagina,rolagem,largura,altura) {
w = screen.width;
h = screen.height;
meio_w = w/2;
meio_h = h/2;
altura2 = altura/2;
largura2 = largura/2;
meio1 = meio_h-altura2;
meio2 = meio_w-largura2;
showModelessDialog(pagina,'','scroll:'+ rolagem +';,status:no;,resizable:no;,help:no;,edge:raised;,dialogHeight:'+ altura +'px;,dialogWidth:'+ largura +'px;,dialogTop:'+meio1+'px;,dialogLeft:'+meio2+'px;'); 
}
// fim da funcao POP-UP


//------------------------------------------------------------------------------------------------------------------------
//CRIA O MENU RETRATIL
//------------------------------------------------------------------------------------------------------------------------
 function SwitchMenu(obj){
	if(document.getElementById){
	var el = document.getElementById(obj);
		if(el.style.display != "block"){ //DynamicDrive.com change
			el.style.display = "block";
		}else{
			el.style.display = "none";
		}
	}
}
//---------------------------------

//FUncao para verificar formulario
function verifica_form(form) {
var passed = false;
var ok = false
var campo
for (i = 0; i < form.length; i++) {
  campo = form[i].name;
  if (form[i].df_verificar == "sim") {
    if (form[i].type == "text"  | form[i].type == "password"  | form[i].type == "textarea" | form[i].type == "select-one") {
      if (form[i].value == "" | form[i].value == "http://") {
		//form[campo].className='form_erro'
        form[campo].focus();
        alert("Preencha corretamente o campo");
        return passed;
        stop;
      }
    }
    else if (form[i].type == "radio") {
      for (x = 0; x < form[campo].length; x++) {
        ok = false;
        if (form[campo][x].checked) {
          ok = true;
          break;
        }
      }
      if (ok == false) {
        form[campo][0].focus();
		form[campo][0].select();
        alert("Informe uma das opcões");
        return passed;
        stop;
      }
    }
    var msg = ""
    if (form[campo].df_validar == "cpf") msg = checa_cpf(form[campo].value);
    if (form[campo].df_validar == "cnpj") msg = checa_cnpj(form[campo].value);
    if (form[campo].df_validar == "cpf_cnpj") {
	  msg = checa_cpf(form[campo].value);
	  if (msg != "") msg = checa_cnpj(form[campo].value);
	}
    if (form[campo].df_validar == "email") msg = checa_email(form[campo].value);
    if (form[campo].df_validar == "numerico") msg = checa_numerico(form[campo].value);
    if (msg != "") {
	  if (form[campo].df_validar == "cpf_cnpj") msg = "informe corretamente o número do CPF ou CNPJ";
	  //form[campo].className='form_erro'
      form[campo].focus();
      form[campo].select();
      alert(msg);
      return passed;
      stop;
    }
  }
}
passed = true;
return passed;
}
//Fim da funcao para verificar formulario	



// INICIO da funcao para Selecionar Varios Checkbox
function selecionar_todas(retorno,formName){
formulario = document.forms[formName];
if(retorno==true){
for(i=0;i<formulario.length;i++){
if(formulario.elements[i].type=="checkbox" && formulario.elements[i].name!="todas"){
  if(formulario.elements[i].checked==false){
   formulario.elements[i].checked=true;
   }
}
}
} else {
for(i=0;i<formulario.length;i++){
if(formulario.elements[i].type=="checkbox" && formulario.elements[i].name!="todas"){
  if(formulario.elements[i].checked==true){
   formulario.elements[i].checked=false;
  }
}
}
}
}
// Fim da funcao para Selecionar Varios Checkbox


// INICO da funcao que obriga usuario a digitar MININO de CARACTERES
function digita_minimo(nome,quantidade){
	var campo = nome.value.length;
	if( campo < quantidade ){
		alert("Você deve digitar no mínimo "+ quantidade +" caracteres");
		nome.focus();
		return false;
   }
}
// FIM da funcao que obriga usuario a digitar MININO de CARACTERES	


function mascara(o,f){
    v_obj=o
    v_fun=f
    setTimeout("execmascara()",1)
}

function execmascara(){
    v_obj.value=v_fun(v_obj.value)
}

function leech(v){
    v=v.replace(/o/gi,"0")
    v=v.replace(/i/gi,"1")
    v=v.replace(/z/gi,"2")
    v=v.replace(/e/gi,"3")
    v=v.replace(/a/gi,"4")
    v=v.replace(/s/gi,"5")
    v=v.replace(/t/gi,"7")
    return v
}

function soNumeros(v){
    return v.replace(/\D/g,"")
}

function telefone(v){
    v=v.replace(/\D/g,"")                 //Remove tudo o que não é dígito
    v=v.replace(/^(\d\d)(\d)/g,"($1) $2") //Coloca parênteses em volta dos dois primeiros dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")    //Coloca hífen entre o quarto e o quinto dígitos
    return v
}

function cpf(v){
    v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
    v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
                                             //de novo (para o segundo bloco de números)
    v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
    return v
}

function cep(v){
    v=v.replace(/D/g,"")                //Remove tudo o que não é dígito
    v=v.replace(/^(\d{5})(\d)/,"$1-$2") //Esse é tão fácil que não merece explicações
    return v
}

function cnpj(v){
    v=v.replace(/\D/g,"")                           //Remove tudo o que não é dígito
    v=v.replace(/^(\d{2})(\d)/,"$1.$2")             //Coloca ponto entre o segundo e o terceiro dígitos
    v=v.replace(/^(\d{2})\.(\d{3})(\d)/,"$1.$2.$3") //Coloca ponto entre o quinto e o sexto dígitos
    v=v.replace(/\.(\d{3})(\d)/,".$1/$2")           //Coloca uma barra entre o oitavo e o nono dígitos
    v=v.replace(/(\d{4})(\d)/,"$1-$2")              //Coloca um hífen depois do bloco de quatro dígitos
    return v
}

function romanos(v){
    v=v.toUpperCase()             //Maiúsculas
    v=v.replace(/[^IVXLCDM]/g,"") //Remove tudo o que não for I, V, X, L, C, D ou M
    //Essa é complicada! Copiei daqui: http://www.diveintopython.org/refactoring/refactoring.html
    while(v.replace(/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,"")!="")
        v=v.replace(/.$/,"")
    return v
}

function site(v){
    //Esse sem comentarios para que você entenda sozinho ;-)
    v=v.replace(/^http:\/\/?/,"")
    dominio=v
    caminho=""
    if(v.indexOf("/")>-1)
        dominio=v.split("/")[0]
        caminho=v.replace(/[^\/]*/,"")
    dominio=dominio.replace(/[^\w\.\+-:@]/g,"")
    caminho=caminho.replace(/[^\w\d\+-@:\?&=%\(\)\.]/g,"")
    caminho=caminho.replace(/([\?&])=/,"$1")
    if(caminho!="")dominio=dominio.replace(/\.+$/,"")
    v="http://"+dominio+caminho
    return v
}


/* =====================================================================================
           FUNÇÃO:    valida_CPF(campo)

           DESCRIÇÃO: verifica se o campo contém um número de CPF válido.

           PARAMETERS: campo (this ou o nome do input)

           USO: o número do CPF deve estar no formato 999.999.999-99

        EXEMPLO: <input class="campoForm" type="textbox" name="NUM_CPF" MAXLENGTH="14" onChange="return valida_CPF(this);">

        IMPORTANTE: o MAXLENGTH do input deve ser setado com o numero de caracteres do CPF (14).

=======================================================================================*/
function valida_CPF(campo) {
        var numCIC = String(campo.value);

        // Verifica o formato do CPF.
        if (numCIC.length > 0) {
                if (numCIC.substring(3,4) == "." && numCIC.substring(7,8) == "." && numCIC.substring(11,12) == "-") {
                        // Retira os caracteres de formatação.
                        numCIC = numCIC.replace( "-", "" );
                        numCIC = numCIC.replace( ".", "" );
                        numCIC = numCIC.replace( ".", "" );
                } else {
                        alert("Por favor, verifique o formato do CPF!");
                        campo.focus();
                        util_Seleciona(campo);
                        return false;
                }
                for (var i=0; i < numCIC.length; i++){
                        if (!(util_IsDigit(numCIC.charAt(i)))) {
                                alert("Por favor, verifique o formato do CPF!");
                                campo.focus();
                                util_Seleciona(campo);
                            return false;
                          }
                   }
        } else {
                return true;
        }

        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 :
                    alert("Por favor, verifique o formato do CPF!");
                        campo.focus();
                        util_Seleciona(campo);
                        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 {
            alert("Por favor, verifique o valor do CPF!");
                campo.focus();
                util_Seleciona(campo);
                return false;
        }
}
//=====================================================================================

/* =====================================================================================
           FUNÇÃO:    valida_CNPJ(campo)

           DESCRIÇÃO: verifica se o campo contém um número de CNPJ válido.

           PARAMETERS: campo (this ou o nome do input)

           USO: o número do CNPJ deve estar no formato 99.999.999/9999-99

        EXEMPLO: <input class="campoForm" type="textbox" name="NUM_CNPJ" MAXLENGTH="18" onChange="return valida_CNPJ(this);">

        IMPORTANTE: o MAXLENGTH do input deve ser setado com o numero de caracteres do CNPJ (18).

=======================================================================================*/
function valida_CNPJ(campo) {
        var numCIC = String(campo.value);

        // Verifica o formato do CNPJ.
        if (numCIC.length > 0) {
                if (numCIC.substring(2,3) == "." && numCIC.substring(6,7) == "." && numCIC.substring(10,11) == "/" && numCIC.substring(15,16) == "-") {
                        // Retira os caracteres de formatação.
                        numCIC = numCIC.replace( "-", "" );
                        numCIC = numCIC.replace( ".", "" );
                        numCIC = numCIC.replace( ".", "" );
                        numCIC = numCIC.replace( "/", "" );
                } else {
                        alert("Por favor, verifique o formato do CNPJ!");
                        campo.focus();
                        util_Seleciona(campo);
                        return false;
                }
                for (var i=0; i < numCIC.length; i++){
                        if (!(util_IsDigit(numCIC.charAt(i)))) {
                                alert("Por favor, verifique a validação do CNPJ!");
                                campo.focus();
                                util_Seleciona(campo);
                            return false;
                          }
                   }
        } else {
                return true;
        }


        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 :
                    alert("Por favor, verifique o formato do CNPJ!");
                        campo.focus();
                        util_Seleciona(campo);
                        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 {
            alert("Por favor, verifique o valor do CNPJ!");
                campo.focus();
                util_Seleciona(campo);
                return false;
        }
}
//=====================================================================================