Javascript para validar Inscrição Estadual?

Bom dia pessoal,
Alguém tem ou conhece alguma função para validação de Inscrição Estadual em javascript?

[]´s

bom, achei essa regra de validacao…nao tah em JS, mas deve ser tranquilo adaptar…
pelo q vi, jah tem p/ todos os estados, jah q cada um tem a sua forma de validar…

*************************************************
* IeOk(p1,p2)   : Validacao de Inscricao Estadual
* Parametros    : p1 : string,2 caracteres,maiusculo,unidade federal
*                 p2 : string,tam.variavel,alfanumerico maiusculo,insc.estadual
* Retorno       : Logico
*************************************************
procedure ieok(puf,pie)
   local ok:=.f.,base,vpos,valg,vsom,vres,vdig1,vdig2,vpro,p,d,n,vbase2,origem
   vbase2:=base:=origem:=""
   if alltrim(pie)=="ISENTO";return .t.;endif
   for vpos:=1 to len(alltrim(pie))
       if substr(pie,vpos,1)$"0123456789P"
          origem+=substr(pie,vpos,1)
       endif
   next
   mascara:="99999999999999"
   if     puf=="AC"
      mascara:="99,99,9999-9"
      base   :=padr(origem,9,"0")
      if left(base,2)=="01" .and. substr(base,3,2)<>"00"
         vsom:=0
         for vpos:=1 to 8
             valg:=val(substr(base,vpos,1))
             valg:=valg*(10-vpos)
             vsom+=valg
         next
         vres  :=vsom%11
         vdig1 :=str(if(vres<2,0,11-vres),1,0)
         vbase2:=left(base,8)+vdig1
         ok    :=(vbase2==origem)
      endif
   elseif puf=="AL"
      mascara:="999999999"
      base   :=padr(origem,9,"0")
      if left(base,2)=="24"
         vsom:=0
         for vpos:=1 to 8
             valg:=val(substr(base,vpos,1))
             valg:=valg*(10-vpos)
             vsom+=valg
         next
         vpro  :=vsom*10
         vres  :=vpro%11
         vdig1 :=if(vres==10,"0",str(vres,1,0))
         vbase2:=left(base,8)+vdig1
         ok    :=(vbase2==origem)
      endif
   elseif puf=="AM"
      mascara:="99,999,999-9"
      base   :=padr(origem,9,"0")
      vsom   :=0
      for vpos:=1 to 8
          valg:=val(substr(base,vpos,1))
          valg:=valg*(10-vpos)
          vsom+=valg
      next
      if vsom<11
         vdig1:=str(11-vsom,1,0)
      else
         vres :=vsom%11
         vdig1:=if(vres<2,"0",str(11-vres,1,0))
      endif
      vbase2:=left(base,8)+vdig1
      ok    :=(vbase2==origem)
   elseif puf=="AP"
      mascara:="999999999"
      base   :=padr(origem,9,"0")
      if left(base,2)=="03"
         n:=val(left(base,8))
         if     n>=3000001 .and. n<=3017000
            p:=5
            d:=0
         elseif n>=3017001 .and. n<=3019022
            p:=9
            d:=1
         elseif n>=3019023
            p:=0
            d:=0
         endif
         vsom:=p
         for vpos:=1 to 8
             valg:=val(substr(base,vpos,1))
             valg:=valg*(10-vpos)
             vsom+=valg
         next
         vres :=vsom%11
         vdig1:=11-vres
         if vdig1==10
            vdig1:=0
         elseif vdig1==11
            vdig1:=d
         endif
         vdig1 :=str(vdig1,1,0)
         vbase2:=left(base,8)+vdig1
         ok    :=(vbase2==origem)
      endif
   elseif puf=="BA"
      mascara:="999999-99"
      base   :=padr(origem,8,"0")
      if left(base,1)$"0123458"
         vsom:=0
         for vpos:=1 to 6
             valg:=val(substr(base,vpos,1))
             valg:=valg*(8-vpos)
             vsom+=valg
         next
         vres  :=vsom%10
         vdig2 :=str(if(vres==0,0,10-vres),1,0)
         vbase2:=left(base,6)+vdig2
         vsom  :=0
         for vpos:=1 to 7
             valg:=val(substr(vbase2,vpos,1))
             valg:=valg*(9-vpos)
             vsom+=valg
         next
         vres :=vsom%10
         vdig1:=str(if(vres==0,0,10-vres),1,0)
      else
         vsom:=0
         for vpos:=1 to 6
             valg:=val(substr(base,vpos,1))
             valg:=valg*(8-vpos)
             vsom+=valg
         next
         vres  :=vsom%11
         vdig2 :=str(if(vres<2,0,11-vres),1,0)
         vbase2:=left(base,6)+vdig2
         vsom  :=0
         for vpos:=1 to 7
             valg:=val(substr(vbase2,vpos,1))
             valg:=valg*(9-vpos)
             vsom+=valg
         next
         vres :=vsom%11
         vdig1:=str(if(vres<2,0,11-vres),1,0)
      endif
      vbase2:=left(base,6)+vdig1+vdig2
      ok:=(vbase2==origem)
   elseif puf=="CE"
      mascara:="99999999-9"
      base   :=padr(origem,9,"0")
      vsom   :=0
      for vpos:=1 to 8
          valg:=val(substr(base,vpos,1))
          valg:=valg*(10-vpos)
          vsom+=valg
      next
      vres :=vsom%11
      vdig1:=11-vres
      if vdig1>9;vdig1:=0;endif
      vbase2:=left(base,8)+str(vdig1,1,0)
      ok    :=(vbase2==origem)
   elseif puf=="DF"
      mascara:="999,99999,999-99"
      base   :=padr(origem,13,"0")
      if left(base,3)=="073"
         vsom:=0
         vmul:={4,3,2,9,8,7,6,5,4,3,2}
         for vpos:=1 to 11
             valg:=val(substr(base,vpos,1))
             valg:=valg*vmul[vpos]
             vsom+=valg
         next
         vres  :=vsom%11
         vdig1 :=if(vres<2,0,11-vres)
         vbase2:=left(base,11)+str(vdig1,1,0)
         vsom  :=0
         vmul  :={5,4,3,2,9,8,7,6,5,4,3,2}
         for vpos:=1 to 12
             valg:=val(substr(vbase2,vpos,1))
             valg:=valg*vmul[vpos]
             vsom+=valg
         next
         vres  :=vsom%11
         vdig2 :=if(vres<2,0,11-vres)
         vbase2+=str(vdig2,1,0)
         ok    :=(vbase2==origem)
      endif
   elseif puf=="ES"
      mascara:="999999999"
      base   :=padr(origem,9,"0")
      vsom   :=0
      for vpos:=1 to 8
          valg:=val(substr(base,vpos,1))
          valg:=valg*(10-vpos)
          vsom+=valg
      next
      vres  :=vsom%11
      vdig1 :=str(if(vres<2,0,11-vres),1,0)
      vbase2:=left(base,8)+vdig1
      ok    :=(vbase2==origem)
   elseif puf=="GO"
      mascara:="99,999,999-9"
      base   :=padr(origem,9,"0")
      if left(base,2)$"10,11,15"
         vsom:=0
         for vpos:=1 to 8
             valg:=val(substr(base,vpos,1))
             valg:=valg*(10-vpos)
             vsom+=valg
         next
         vres:=vsom%11
         if vres==0
            vdig1:="0"
         elseif vres==1
            n    :=val(left(base,8))
            vdig1:=if(n>=10103105 .and. n<=10119997,"1","0")
         else
            vdig1:=str(11-vres,1,0)
         endif
         vbase2:=left(base,8)+vdig1
         ok    :=(vbase2==origem)
      endif
   elseif puf=="MA"
      mascara:="999999999"
      base   :=padr(origem,9,"0")
      if left(base,2)=="12"
         vsom:=0
         for vpos:=1 to 8
             valg:=val(substr(base,vpos,1))
             valg:=valg*(10-vpos)
             vsom+=valg
         next
         vres  :=vsom%11
         vdig1 :=str(if(vres<2,0,11-vres),1,0)
         vbase2:=left(base,8)+vdig1
         ok    :=(vbase2==origem)
      endif
   elseif puf=="MT"
      mascara:="9999999999-9"
      vmul   :={3,2,9,8,7,6,5,4,3,2}
      vsom:=0
      for vpos:=1 to 10
          valg:=val(substr(base,vpos,1))
          valg:=valg*vmul[vpos]
          vsom+=valg
      next
      vres  :=vsom%11
      vdig1 :=if(vres<2,0,11-vres)
      vbase2:=left(base,10)+str(vdig1,1,0)
      ok    :=(vbase2==origem)
   elseif puf=="MS"
      mascara:="999999999"
      base   :=padr(origem,9,"0")
      if left(base,2)=="28"
         vsom:=0
         for vpos:=1 to 8
             valg:=val(substr(base,vpos,1))
             valg:=valg*(10-vpos)
             vsom+=valg
         next
         vres  :=vsom%11
         vdig1 :=str(if(vres<2,0,11-vres),1,0)
         vbase2:=left(base,8)+vdig1
         ok    :=(vbase2==origem)
      endif
   elseif puf=="MG"
      mascara:="999,999,999/9999"
      base   :=padr(origem,13,"0")
      vbase2 :=left(base,3)+"0"+substr(base,4,8)
      n      :=2
      vsom   :=""
      for vpos:=1 to 12
          valg:=val(substr(vbase2,vpos,1))
          n   :=if(n==2,1,2)
          valg:=alltrim(str(valg*n,2,0))
          vsom+=valg
      next
      n     :=0
      for vpos:=1 to len(vsom);n+=val(substr(vsom,vpos,1));next
      vsom  :=n
      do while right(str(n,3,0),1)<>"0";n++;enddo
      vdig1 :=str(n-vsom,1,0)
      vbase2:=left(base,11)+vdig1
      vsom  :=0
      vmul  :={3,2,11,10,9,8,7,6,5,4,3,2}
      for vpos:=1 to 12
          valg:=val(substr(vbase2,vpos,1))
          valg:=valg*vmul[vpos]
          vsom+=valg
      next
      vres  :=vsom%11
      vdig2 :=if(vres<2,0,11-vres)
      vbase2+=str(vdig2,1,0)
      ok    :=(vbase2==origem)
   elseif puf=="PA"
      mascara:="99-999999-9"
      base   :=padr(origem,9,"0")
      if left(base,2)=="15"
         vsom:=0
         for vpos:=1 to 8
             valg:=val(substr(base,vpos,1))
             valg:=valg*(10-vpos)
             vsom+=valg
         next
         vres  :=vsom%11
         vdig1 :=str(if(vres<2,0,11-vres),1,0)
         vbase2:=left(base,8)+vdig1
         ok    :=(vbase2==origem)
      endif
   elseif puf=="PB"
      mascara:="99,999,999-9"
      base   :=padr(origem,9,"0")
      vsom   :=0
      for vpos:=1 to 8
          valg:=val(substr(base,vpos,1))
          valg:=valg*(10-vpos)
          vsom+=valg
      next
      vres  :=vsom%11
      vdig1 :=11-vres
      if vdig1>9;vdig1:=0;endif
      vbase2:=left(base,8)+str(vdig1,1,0)
      ok    :=(vbase2==origem)
   elseif puf=="PE"
      mascara:="99,9,999,9999999-9"
      base   :=padr(origem,14,"0")
      vsom   :=0
      vmul   :={5,4,3,2,1,9,8,7,6,5,4,3,2}
      for vpos:=1 to 13
          valg:=val(substr(base,vpos,1))
          valg:=valg*vmul[vpos]
          vsom+=valg
      next
      vres  :=vsom%11
      vdig1 :=11-vres
      if(vdig1>9,vdig1-=10,)
      vbase2:=left(base,13)+str(vdig1,1,0)
      ok    :=(vbase2==origem)
   elseif puf=="PI"
      mascara:="999999999"
      base   :=padr(origem,9,"0")
      vsom   :=0
      for vpos:=1 to 8
          valg:=val(substr(base,vpos,1))
          valg:=valg*(10-vpos)
          vsom+=valg
      next
      vres  :=vsom%11
      vdig1 :=str(if(vres<2,0,11-vres),1,0)
      vbase2:=left(base,8)+vdig1
      ok    :=(vbase2==origem)
   elseif puf=="PR"
      mascara:="999,99999-99"
      base   :=padr(origem,10,"0")
      vsom   :=0
      vmul   :={3,2,7,6,5,4,3,2}
      for vpos:=1 to 8
          valg:=val(substr(base,vpos,1))
          valg:=valg*vmul[vpos]
          vsom+=valg
      next
      vres  :=vsom%11
      vdig1 :=str(if(vres<2,0,11-vres),1,0)
      vbase2:=left(base,8)+vdig1
      vsom  :=0
      vmul  :={4,3,2,7,6,5,4,3,2}
      for vpos:=1 to 9
          valg:=val(substr(vbase2,vpos,1))
          valg:=valg*vmul[vpos]
          vsom+=valg
      next
      vres  :=vsom%11
      vdig2 :=str(if(vres<2,0,11-vres),1,0)
      vbase2+=vdig2
      ok    :=(vbase2==origem)
   elseif puf=="RJ"
      mascara:="99,999,99-9"
      base   :=padr(origem,8,"0")
      vsom   :=0
      vmul   :={2,7,6,5,4,3,2}
      for vpos:=1 to 7
          valg:=val(substr(base,vpos,1))
          valg:=valg*vmul[vpos]
          vsom+=valg
      next
      vres  :=vsom%11
      vdig1 :=str(if(vres<2,0,11-vres),1,0)
      vbase2:=left(base,7)+vdig1
      ok    :=(vbase2==origem)
   elseif puf=="RN"
      mascara:="99,999,999-9"
      base   :=padr(origem,9,"0")
      if left(base,2)=="20"
         vsom:=0
         for vpos:=1 to 8
             valg:=val(substr(base,vpos,1))
             valg:=valg*(10-vpos)
             vsom+=valg
         next
         vpro  :=vsom*10
         vres  :=vpro%11
         vdig1 :=str(if(vres>9,0,vres),1,0)
         vbase2:=left(base,8)+vdig1
         ok    :=(vbase2==origem)
      endif
   elseif puf=="RO"
      mascara:="999999999"
      base   :=padr(origem,9,"0")
      vbase2 :=substr(base,4,5)
      vsom   :=0
      for vpos:=1 to 5
          valg:=val(substr(vbase2,vpos,1))
          valg:=valg*(7-vpos)
          vsom+=valg
      next
      vres  :=vsom%11
      vdig1 :=11-vres
      if vdig1>9;vdig1-=10;endif
      vbase2:=left(base,8)+str(vdig1,1,0)
      ok    :=(vbase2==origem)
   elseif puf=="RR"
      mascara:="99999999-9"
      base   :=padr(origem,9,"0")
      if left(base,2)=="24"
         vsom:=0
         for vpos:=1 to 8
             valg:=val(substr(base,vpos,1))
             valg:=valg*vpos
             vsom+=valg
         next
         vres  :=vsom%9
         vdig1 :=str(vres,1,0)
         vbase2:=left(base,8)+vdig1
         ok    :=(vbase2==origem)
      endif
   elseif puf=="RS"
      mascara:="999/999999-9"
      base   :=padr(origem,10,"0")
      n      :=val(left(base,3))
      if n>0 .and. n<468
         vsom:=0
         vmul:={2,9,8,7,6,5,4,3,2}
         for vpos:=1 to 9
             valg:=val(substr(base,vpos,1))
             valg:=valg*vmul[vpos]
             vsom+=valg
         next
         vres  :=vsom%11
         vdig1 :=11-vres
         if vdig1>9;vdig1:=0;endif
         vbase2:=left(base,9)+str(vdig1,1,0)
         ok    :=(vbase2==origem)
      endif
   elseif puf=="SC"
      mascara:="999,999,999"
      base   :=padr(origem,9,"0")
      vsom   :=0
      for vpos:=1 to 8
          valg:=val(substr(base,vpos,1))
          valg:=valg*(10-vpos)
          vsom+=valg
      next
      vres  :=vsom%11
      vdig1 :=if(vres<2,"0",str(11-vres,1,0))
      vbase2:=left(base,8)+vdig1
      ok    :=(vbase2==origem)
   elseif puf=="SE"
      mascara:="99999999-9"
      base   :=padr(origem,9,"0")
      vsom   :=0
      for vpos:=1 to 8
          valg:=val(substr(base,vpos,1))
          valg:=valg*(10-vpos)
          vsom+=valg
      next
      vres  :=vsom%11
      vdig1 :=11-vres
      if vdig1>9;vdig1:=0;endif
      vbase2:=left(base,8)+str(vdig1,1,0)
      ok    :=(vbase2==origem)
   elseif puf=="SP"
      if left(base,1)=="P"
         mascara:="P-99999999,9/999"
         base   :=padr(origem,13,"0")
         vbase2 :=substr(base,2,8)
         vsom   :=0
         vmul   :={1,3,4,5,6,7,8,10}
         for vpos:=1 to 8
             valg:=val(substr(vbase2,vpos,1))
             valg:=valg*vmul[vpos]
             vsom+=valg
         next
         vres  :=vsom%11
         vdig1 :=right(str(vres,2,0),1)
         vbase2:=left(base,9)+vdig1+substr(base,11,3)
      else
         mascara:="999,999,999,999"
         base   :=padr(origem,12,"0")
         vsom   :=0
         vmul   :={1,3,4,5,6,7,8,10}
         for vpos:=1 to 8
             valg:=val(substr(base,vpos,1))
             valg:=valg*vmul[vpos]
             vsom+=valg
         next
         vres  :=vsom%11
         vdig1 :=right(str(vres,2,0),1)
         vbase2:=left(base,8)+vdig1+substr(base,10,2)
         vsom  :=0
         vmul  :={3,2,10,9,8,7,6,5,4,3,2}
         for vpos:=1 to 11
             valg:=val(substr(vbase2,vpos,1))
             valg:=valg*vmul[vpos]
             vsom+=valg
         next
         vres  :=vsom%11
         vdig2 :=right(str(vres,2,0),1)
         vbase2+=vdig2
      endif
      ok:=(vbase2==origem)
   elseif puf=="TO"
      mascara:="99,99,999999-9"
      base   :=padr(origem,11,"0")
      if substr(base,3,2)$"01,02,03,99"
         vbase2:=left(base,2)+substr(base,5,6)
         vsom  :=0
         for vpos:=1 to 8
             valg:=val(substr(vbase2,vpos,1))
             valg:=valg*(10-vpos)
             vsom+=valg
         next
         vres  :=vsom%11
         vdig1 :=str(if(vres<2,0,11-vres),1,0)
         vbase2:=left(base,10)+vdig1
         ok    :=(vbase2==origem)
      endif
   else
      alert("Unidade Federal Invalida !")
   endif
   if !ok
      if empty(vbase2)
         alert("Os D¡gitos Identificadores de Cidade e/ou Estado N„o Conferem !")
      else
         vbase2:=strtran(transform(val(vbase2),mascara)," ","0")
         vbase2:=strtran(vbase2,",",".")
         alert("Inscri‡„o Inv lida !;O Correto Seria;"+vbase2)
      endif
   endif
return .t.

falow

ops, depois q postei o codigo aki vi q ele pode ser meio chatinho, pois estah em Clipper…

tem mais esses 2 links:

http://forum.wmonline.com.br/index.php?s=4a4a04cfe8ebec24dc2c7d072018e774&showtopic=92540

http://www.sintegra.gov.br/insc_est.html

o ultimo tem as regras usadas em todos os estados…

falow ae…

Vou dar uma olhada.
Já tenho uma função aqui em javascript, mas está dando erro para o estado do “AP”.
[]´s

Bom dia!
Por acaso, alguém conseguiu uma versão em javascript para validar a inscrição estadual?!
Obrigado!

Código que valida as inscrições estaduais do brasil todo, em JAVASCRIPT:

http://codingz.info/src/JavaScript%20-%20Inscri��o%20estadual/

Tem a versão em delphi e uma em javascript.

Utilização do mesmo é simples, só entender a última função do script e ta tudo certo.

Qualquer coisa só me mandar por email que está no fonte.

– wG @ codingz.info - Belo Horizonte / MG / Brasil

P/ tirar dúvida sobre o código javascript de inscrição estadual
ou falar alguma coisa, sugerir ou sei la o que
é só acessar o fórum do site http://www.codingz.info/forum/forum.php

ai voces trocam idéia sobre ele, nem precisa registrar p/ postar

flw