var corepath = '_funcs/';
javascript_version = 1;

var agt=navigator.userAgent.toLowerCase();
var is_nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
              && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
              && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));  
var is_gecko = (agt.indexOf('gecko') != -1);
var is_ie    = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1)) && (document.all);
var is_op    = ((agt.indexOf("msie") == -1) && (document.all) && (agt.indexOf("opera") != -1)) && !is_ie;

// --

function nop () { } 

function ismail( oMail ) {
  // Valida oMail como um e-mail, retorna true/false
  MyRegExp = new RegExp("^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+(_)?)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$");
  return MyRegExp.test(oMail)
}
  
function popmeup(oque,w,h,comsb) {
  if (w==0) w = 515;
  if (h==0) h = 400;
  window.open (oque, "_blank","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars="+(comsb?"yes":"no")+",resizable="+(comsb?"yes":"no")+",width="+w+",height="+h);
}

function islogin(oValor) {  
  MyRegExp = new RegExp("^([A-Za-z0-9_\-]){4,20}$");   
  return MyRegExp.test(oValor);
}
  
function isnumber( oValor , accept_commas ) {
  if (!accept_commas)
    MyRegExp = new RegExp("^(\-)?([0-9]*)$");
  else
    MyRegExp = new RegExp("^(\-)?([0-9]*)(([,\.])([0-9]{3}))*(([,\.]{1})([0-9]*))?$");
  x = MyRegExp.test(oValor);
  return x;
}
    
function togglediv(divname, para) {
  mygetElement(divname).style.display = (para) ? '' : 'none';
}

function menudiv(divname) {
  togglediv(divname, (mygetElement(divname).style.display == 'none') ? true : false);
}

function mygetElement(id) {   
  if (document.getElementById) {
    return document.getElementById(id);
  } else if (document.all) {
    return document.all[id];
  } else if(document.layers) {
    return document[id];
  }
}

function ereg(arquivo,mascara) {
  MyRegExp = new RegExp(mascara);
  return MyRegExp.test(arquivo);
}

function limpaString(S,modo){
  // Deixa so' os digitos no numero
  var Digitos = "0123456789" + (modo?".,-":"");
  var temp = "";
  var digito = "";
  for (var i=0; i<S.length; i++)	{
    digito = S.charAt(i);
    if (Digitos.indexOf(digito) >= 0)	{
      temp=temp+digito;
    }
  }
  return temp;
}

function validaCGC(s) {
  var i;
  s = limpaString(s);
  if (s.length < 14) return false;
  var c = s.substr(0,12);
  var dv = s.substr(12,2);
  var d1 = 0;
  for (i = 0; i < 12; i++) {
    d1 += c.charAt(11-i)*(2+(i % 8));
  }
  if (d1 == 0) return false;
    d1 = 11 - (d1 % 11);
  if (d1 > 9) d1 = 0;
  if (dv.charAt(0) != d1) {
    return false;
  }
  d1 *= 2;
  for (i = 0; i < 12; i++) {
    d1 += c.charAt(11-i)*(2+((i+1) % 8));
  }
  d1 = 11 - (d1 % 11);
  if (d1 > 9) d1 = 0;
  if (dv.charAt(1) != d1) {
    return false;
  }
  return true;
}

function validaCPF(cpf) {
  var i; 
  s = cpf; 
  if (s.length < 11) return false;
  var c = s.substr(0,9); 
  var dv = s.substr(9,2); 
  var d1 = 0; 
  for (i = 0; i < 9; i++) { 
    d1 += c.charAt(i)*(10-i); 
  } 
  if (d1 == 0) {
    return false; 
  } 
  d1 = 11 - (d1 % 11); 
  if (d1 > 9) d1 = 0; 
  if (dv.charAt(0) != d1) { 
    return false; 
  } 
  d1 *= 2; 
  for (i = 0; i < 9; i++) { 
    d1 += c.charAt(i)*(11-i); 
  } 
  d1 = 11 - (d1 % 11); 
  if (d1 > 9) d1 = 0; 
  if (dv.charAt(1) != d1) { 
    return false; 
  } 
  return true; 
} 

function formatNumberEx(number, decimals, milsep, decsep) {
  // considera entrada INTEIRA, coloca separador para os decimais atravez de divisão
  return formatNumber(number/Math.pow(10,decimals),decimals,milsep,decsep);
}

function formatNumber(number, decimals, milsep, decsep) {
  if (!decimals) decimals=2;
  if (!milsep) milsep=".";
  if (!decsep) decsep=",";
  number = "" + number; // converte para string
  pl  = number.indexOf(".");
  cl  = number.indexOf(",");
  // converte o numero para o formato fixo #.#
  if (pl!=-1 && cl!=-1) {
    if (pl<cl) { // pl separador milhar
      number = str_replace(".","",number);
      number = str_replace(",",".",number);
    } else { // cl separador milhar
      number = str_replace(",","",number);
    }
  } else {
    number = str_replace(",",".",number);
    pontos = str_count(".",number); // conta quantos tem  
    if (pontos>1) {
      // remove todos menos o ultimo
      number = str_replace(".","",number,pontos-1);
    } // else ta ok
  }
  pl = number.indexOf(".")!=-1; // tem ponto?
  // IV = Valor Inteiro, DV = Valor Decimal
  IV = pl?number.substring(0,number.indexOf(".")):number;
  DV = pl?number.substring(number.indexOf(".")+1):"0";
  // coloca separador de milhar
  if (milsep != "") {
    newIV = "";
    pos = 0;
    for (p = IV.length-1;p>=0;p--) {
      if ((++pos-1)%3==0 && pos != 1) newIV = "." + newIV;
      newIV = IV.charAt(p) + newIV;
    }
    IV = newIV;
  }
  DV = DV.substring(0,decimals); // corta tamanho
  while (DV.length < decimals) DV += "0"; // zeros a direita em DV;
  return (IV + decsep + DV);
}

function str_count(what,where) {
  temp = where;
  localizados = 0;
  while (temp.indexOf(what) != -1 && localizados++<100) {
    temp = temp.substring(temp.indexOf(what) + what.length);
  }
  return localizados;
}

function str_replace(what,to,into,maxreplaces) {
  antiloop = 0;
  if (!maxreplaces) maxreplaces = 100;
  while (into.indexOf(what)!=-1 && antiloop++<=maxreplaces) {
    into = into.substring(0,into.indexOf(what)) + to + into.substring(into.indexOf(what) + what.length);
  }
  return into;
}

function tratajs(dados) {
  dados = " " + dados + " ";
  posa = dados.indexOf("<SCRIPT>");
  posb = dados.indexOf("</SCRIPT>");
  if (posa > 0 && posb > 0) {
    js = dados.substring(posa+8,posb-1);
    if (js != "") {
      eval(js);
      return true;
    }
  }
  return false;
}

// --
var fieldcolor = "#ffffff";
var invalidcolor = "#FFC0C0";

function checkmailfield(campo,bgc) {
  if (!bgc || bgc=="") bgc = fieldcolor;
  if (!ismail(campo.value)) {
    campo.style.background= invalidcolor;
    return false;
  } else {
    campo.style.background=bgc;
    return true;
  }
}
  
function checknbrfield(campo,ponto,bgc,force) {
  if (!bgc || bgc=="") bgc = fieldcolor;
  if (!isnumber(campo.value,ponto)) {
    campo.style.background= invalidcolor; // invalido
    return false;
  } else {
    campo.style.background=bgc; // valido
    if (force) campo.value = formatNumber(campo.value);
    return true;
  }
}

function checkid(campo,accept_cpf,accept_cnpj,bgc) {  
  if (!bgc || bgc=="") bgc = fieldcolor;
  if ( (accept_cpf && validaCPF(campo.value)) ||
       (accept_cnpj && validaCGC(campo.value))
      ) {
    campo.style.background=bgc; // valido
    return true;
  } else {
    campo.style.background= invalidcolor; // invalido
    return false;
  }    
}

function checklogin(campo,bgc) {  
  if (!bgc || bgc=="") bgc = fieldcolor;
  if ( islogin(campo.value) ) {
    campo.style.background=bgc; // valido
    return true;
  } else {
    campo.style.background= invalidcolor; // invalido
    return false;
  }    
}

// -- AJAX

try{
    xmlhttp = new XMLHttpRequest();
}catch(ee){
    try{
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
        try{
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }catch(E){
            xmlhttp = false;
        }
    }
}
 
function goAjax(url,action) {
  if (!action) action=""
  xmlhttp.open("GET", url, true);
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4){
      var texto=xmlhttp.responseText;
      texto=texto.replace(/\+/g," ");
      texto=unescape(texto);
      AjaxOk(texto,action); // <-- deve ser definida na pagina que chama componentes Ajax
    }
  }
  xmlhttp.send(null);
}

// -- AJAX concorrente com callback

function AJAXInteraction(url, callback) {

  var req = init();
  req.onreadystatechange = processRequest;
      
  function init() {
    if (window.XMLHttpRequest) {
      return new XMLHttpRequest();
    } else if (window.ActiveXObject) {
      return new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  
  function processRequest () {
    if (req.readyState == 4) {
      if (req.status == 200) {
        if (callback) {
          //callback(req.responseXML);
          var texto=req.responseText;
          texto=texto.replace(/\+/g," ");
          texto=unescape(texto);
          callback(texto);
        }
      }
    }
  }

  this.doGet = function() {
    req.open("GET", url, true);
    req.send(null);
  }
  
  this.doPost = function(body) {
    req.open("POST", url, true);
    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    req.send(body);
  }
}
// var ai = new AJAXInteraction(URL, function() { ...});
// ai.doGet();
